计算机组件cpu


目前世界上有哪些主流的CPU架构呢?

精简指令集和复杂指令集

回到顶部
CPU内部含有一些微指令,软件工程师编写的软件最终都会转换成cpu执行的指令集。 不同的指令集形成了不同的cpu架构,指令集的设计主要分为两种,分别是精简指令集(RISC)和复杂指令集(CISC)。

1.精简指令集RISC(Reduced Instruction Set Computer)

回到顶部
这种CPU设计中,指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳; 但是若要做复杂的事情,就要由多个指令来完成。
常见的RISC指令集CPU主要有甲骨文(Oracle)公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、 与ARM公司(ARM Holdings)的ARM CPU系列。
在应用方面,SPARC CPU计算机常用于学术领域的大型工作站,包括银行金融体系的主服务器也都有这类的计算机架构;
至于PowerPC架构的应用上,索尼(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器;
而最常使用的智能手机、PDA、导航系统、网络设备(交换器、路由器等)等几乎都使用ARM架构的CPU!
目前世界上使用范围最广的CPU可能就是ARM架构处理器了!

2.复杂指令集CISC(Complex Instruction Set Computer)

回到顶部
与RISC不同,CISC指令集的每个指令可以执行一些较低阶的硬件操作,指令数目多且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条指令可以处理的工作较为丰富。 常见的CISC指令集CPU主要有AMD、Intel、VIA等x86架构CPU。 AMD、Intel、VIA所开发出来的x86架构CPU被大量用于个人计算机(Personal computer), 因此,个人计算机常被称为x86架构计算机!那为何称为x86架构呢? 因为最早那颗Intel开发出来的CPU代号称为8086, 后来依此架构又开发出80286,80386...,这种架构的CPU就被称为x86架构了。
2003年以前由Intel开发的x86架构CPU由8位升级到16、32位, 后来AMD依此架构修改新一代的CPU为64位, 为了区别两者的差异,64位的个人计算机CPU又被统称为x86_64架构!
cpu位数指的是CPU一次读取数据的最大量! 64位CPU表示CPU一次可以读写64bits的二进制数据,32位CPU表示CPU一次只能读取32位二进制数据。 CPU读取数据量有限制,因此能够从内存中读写的数据也就有限制。一般32位CPU所能读写的最大数据量就是4GB左右。
不同的x86架构CPU有什么差异呢?除了CPU的整体结构(如第二层快取、每次运行可执行的指令数等)之外, 主要是在于指令集的不同。新的x86CPU大多含有很先进的指令集, 这些指令集可以加速多媒体程序的运行,也能够加强虚拟化的效能,而且某些指令集更能够增加能源效率, 让CPU耗电量降低呢! 由于电费越来越高,购买计算机时,除了整体的性能外, cpu的低功耗也是可以考虑的因素!
最新的Intel/AMD的x86架构中,重要的多媒体、虚拟化、低功耗等指令集如下: 多媒体指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
虚拟化指令集:Intel-VT, AMD-SVM
低功耗指令集:Intel-SpeedStep, AMD-PowerNow!
64/32位兼容技术:AMD-AMD64, Intel-EM64T

执行运算与控制的CPU

回到顶部
CPU负责大量运算,因此CPU的发热量通常比较大,通常在CPU上面安装有风扇散热。 个人计算机x86 CPU主要供货商为Intel和AMD,目前主流的CPU多为双核以上架构! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装中嵌入了两个以上的运算核心, 也就是在一个实体CPU外壳中,含有两个以上的CPU单元。
不同的CPU型号具有不同的引脚封装,能够搭配的主板芯片组也不同, 想要升级主机时,需要留意主板所支持的CPU型号! 目前主流的CPU有Intel的i3/i5/i7系列产品中,甚至先后期出厂的类似型号的引脚封装也不同, 例如i7-2600使用LGA1155引脚而i7-4790则使用FCLGA1150引脚,在选购时需要留意!
CPU工作效率除了受cpu指令集设计的影响外,还会受CPU工作频率的影响! 频率就是CPU每秒钟可以进行的工作次数。频率越高表示CPU单位时间内可以作更多的事情。 举例来说,Intel的i7-4790 CPU频率为3.6GHz, 表示这颗CPU在一秒内可以进行3.6x10 9次工作,每次工作都可以进行少数的指令运行之意。
注意,不同的CPU之间不能单纯的以频率来判断运算效能喔!这是因为每颗CPU的 指令集不相同,架构也不见得一样,可使用的第二层快取及其计算器制可能也不同,加上每次频率能够进行的工作指令数也不同! 所以,频率仅能用来比较同款CPU的速度!

CPU工作频率:外频与倍频

回到顶部
早期CPU架构主要通过北桥来连接系统最重要的CPU、主存储器与显示适配器设备。 因为所有设备都得掉通过北桥来连结,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线(FSB)。CPU的指令周期比其他的设备都要快,为了满足FSB的频率,厂商就在CPU内部再进行加速, 于是就有所谓的外频与倍频。
总结来说,在早期CPU设计中,外频指的是CPU与外部组件进行数据传输时的速度, 倍频则是CPU内部用来加速工作效能的一个倍数, 两者相乘才是CPU的频率速度。 例如Intel Core 2E8400的内频为3.0GHz,而外频是333MHz,因此倍频就是9倍! 3.0G=333Mx9, 其中1G=1000M 很多计算机硬件玩家很喜欢玩超频,所谓的超频指的是将CPU的倍频或者是外频通过主板的设定功能更改成较高频率的一种方式。 但因为CPU的倍频通常在出厂时已经被锁定而无法修改, 较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将外频333MHz调整为400MHz, 如此一来整个主板的各个组件的运行频率可能都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但因为频率并非正常速度,可能会造成当机等问题。
所有的数据传输都要经过北桥,北桥不可能比CPU更快,因此北桥常常是系统效能的瓶颈。 为了解决这个问题,新的CPU设计中,已经将内存控制器整合到CPU内部, 而连接CPU与内存、显示适配器的控制器的设计,Intel使用QPI(Quick Path Interconnect)与DMI技术, 而AMD则使用Hyper Transport,这些技术都可以让CPU直接与主存储器、显示适配器等设备分别进行沟通,而不需要通过外部的连接芯片。
现在没有所谓的北桥了(整合到CPU内),因此CPU的频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。 所以,如果你经常有查阅自己CPU频率的习惯,当使用cpu-z这个软件时,应该会很惊讶的发现到,怎么外频变成100MHz而倍频可以到达30以上!
现在Intel的CPU会主动帮你超频!例如i7-4790 CPU基本频率为3.6GHz,但是最高可自动超频到4GHz! 通过Intel的turbo 技术。同时,如果没有大量的运算需求,CPU频率会降到1.xGHz,藉此达到节能省电的目的! 所以不需要自己手动超频了! Intel已经自动帮你进行超频了...,如果妳用cpu-z观察CPU频率,会发现该频率会一直自动变动!

32位与64位的CPU与总线宽度

回到顶部
CPU的各项数据通通得要来自于主存储器。因此,如果主存储器能提供给CPU的数据量越大的话,当然整体系统的效能应该也会比较快! 那如何知道主存储器能提供的数据量呢? 此时还是得要藉由CPU内的内存控制芯片与主存储器间的传输速度前端总线速度(Front Side Bus, FSB) 来说明。
与CPU频率类似,主存储器也是有其工作频率,这个频率限制还是来自于CPU内的内存控制器所决定的。 以图 0.2.1 为例, CPU内建的内存控制芯片对主存储器的工作频率最高可达到1600MHz。 这只是工作频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为64位,这个64位就是所谓的宽度了! 因此,在图 0.2.1 这个系统中,CPU可以从内存中取得的最快带宽就是1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。 与总线宽度相似的,CPU每次能够处理的数据量称为字组大小(word size),字组大小依据CPU的设计而有32位与64位。 我们现在所称的计算机是32或64位主要是依据这个CPU解析的字组大小而来的! 早期的32位CPU中,因为CPU每次能够解析的数据量有限, 因此由主存储器传来的数据量就有所限制了。 这也导致32位的CPU最多只能支持最大到4GBytes的内存。
得利于北桥整合到CPU内部的设计, CPU得以个别跟各个组件进行沟通! 因此,每种组件与CPU的沟通具有很多不同的方式!例如主存储器使用系统总线带宽来与CPU沟通。 而显示适配器则通过PCI-E的序列通道设计来与CPU沟通喔! 详细说明我们在本章稍后的主板部份再来谈谈。

CPU等级

回到顶部
由于 x86 架构的 CPU 在 Intel 的 Pentium 系列(1993 年)后就有不统一的引脚与设计,为了将不同种类 的 CPU 规范等级, 所以就有 i386,i586,i686 等名词出现了。基本上,在 Intel Pentium MMX 与 AMD K6 年代的 CPU 称为 i586 等级, 而 Intel Celeron 与 AMD Athlon(K7)年代之后的 32 位 CPU 就称为 i686 等级。 至于目前的 64 位 CPU 则统称为 x86_64 等级。
目前很多的程序都有对 CPU 做优化的设计,万一哪天你发现一些程序是注明给 x86_64 的 CPU 使用 时, 就不要将他安装在 686 以下等级的计算机中,否则可是会无法执行该软件的! 不过,在 x86_64 的硬件下倒是可以安装 386 的软件喔!也就是说,这些东西具有向下兼容的能力啦!

超线程 (Hyper-Threading, HT)

回到顶部
目前CPU至少都是两个核心以上的多核心CPU,Intel CPU超线程(Hyper-Threading)功能! CPU指令周期都太快了,因此运算核心经常处于闲置状态下。而我们也知道现在的系统大多都是多任务的系统, 同时间有很多的程序会让CPU来执行。 因此,若CPU可以假象的同时执行两个程序,不就可以让系统效能增加了吗?反正CPU的运算能力还是没有用完啊!
在每一个CPU内部将重要的寄存器(register)分成两群, 而让程序分别使用这两群寄存去。 也就是说,可以有两个程序同时竞争CPU的运算单元,而非通过操作系统的多任务切换! 这一过程就会让CPU好像同时有两个核心一样! 虽然大部分i7等级的CPU其实只有四个实体核心,但通过HT机制,则操作系统可以抓到八个核心! 并且让每个核心逻辑上分离,就可以同时运行八个程序了。
虽然很多研究与测试发现HT虽然可以提升效能,不过,有些情况下却可能导致效能降低! 因为,实际上明明就仅有一个运算单元! 不过在使用数值模式的情况下,因为操作的数值模式主要为平行运算功能, 且运算通常无法达到100%的CPU使用率,通常仅有大约60%运算量而已。 因此在的实作过程中,这个HT确实提升相当多的效能! 至少应该可以节省大约30%~50%的等待时间!不过网络上大家的研究中,大多说这个是case by case,而且使用的软件影响很大!

冯诺依曼和哈佛结构

回到顶部
冯·诺依曼结构(von Neumann architecture)
  冯·诺依曼结构也称作普林斯顿结构,是一种将程序(指令序列的集合)和数据存放在同一存储器的不同地址的电脑设计概念结构。
这是建立在冯·诺依曼原理,即程序可看做一种特殊的“数据”,同样地可以被处理和存储,故两者可存放在同一存储器中,采用单一的地址总线和数据总线。 特点:
第一,程序和数据存放在同一存储器的不同地址上;
第二,存储单元线性排列,且其位数固定;
第三,顺序执行,即程序/数据—>内存—>取指令执行指令;
  顺序执行程序。执行前,将需要的程序和数据先放入存储器(PC为内存)。
当执行时把要执行的程序和要处理的数据按顺序从存储器中取出指令一条一条地执行,称作顺序执行程序。 第四,组成上有运算器,存储器,控制器,输入/输出设备。如下图:
  冯·诺依曼体系结构的特点决定了它可以最大限度地利用资源。怎么理解呢?你数据和程序放在同一个地方,不用花销太多的资源就能取到数据和程序。
这也算是冯氏结构的一大优点吧。可是由于程序和数据存放在同一存储区,存取程序和数据间时共享同一总线,导致了冯·诺依曼瓶颈。
哈佛结构
  与冯氏结构相对的是哈佛结构,即将程序和数据分开存储的结构。
其过程CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。
程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。如下图:
  联系冯氏结构的瓶颈,我们很快能想到哈佛结构能够完成指令和数据的并发操作,减轻了程序运行时的访存瓶颈,
也就是提高吞吐量,是一种并行结构;而冯氏结构只能是顺序操作,是一种串行的处理方式。原始的冯·诺依曼体系结构,通过引入流水线技术(Pipeline)提高吞吐量。
  流水线技术与并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术。
流水线的并行处理是指完成对一条指令的不同操作(取指令、解码指令、执行指令)的各个部件在时间上是可以同时重叠工作(三级流水线)。
CPU是按照取指令、解码指令、执行指令来完成一条指令的操作,当CPU取完第一条指令后,接着解码第一条指令,
同时CPU取第二条指令,该步完成后,CPU执行第一条指令,同时解码第二条指令、取第三条指令,如此重叠操作。
  因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(step、stage)进行工作,
以提高各部件的利用率来提高指令的平均执行速度。但是这样虽然提高了系统的速率,由于流水线结构使得不容易计算程序运行的时间,
对一些时序要求很严的情况,该结构还是存有弊端的。所以在一些实时性很强的嵌入式系统采用哈佛结构可以高速数据处理,
同时读取指令和数据,大大提高了数据吞吐率,保证了系统的可靠性。

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读