cpu是怎么的工作原理

cpu是怎么的工作原理,第1张

CPU的工作原理浅析
一个完整的微型计算机系统包括硬件系统和软件系统两大部分。 计算机硬件是指组成一台计算机的各种物理装置, 它们是由各种实在的器件所组成,是计算机进行工作的物质基础。计算机硬件系统中最重要的组成部分是中央处理器(CPU ) 。
(一)CPU的基本概念和组成
中央处理器简称CPU(Central Processing Unit),它是计算机系统的核心,主要包括运算器和控制器两个部件。如果把计算机比作一个人,那么CPU就是心脏,其重要作用由此可见一斑。CPU的内部结构可以分为控制单元、逻辑单元和存储单元三大部分,三个部分相互协调,便可以进行分析,判断、运算并控制计算机各部分协调工作。
计算机发生的所有动作都是受CPU控制的。其中运算器主要完成各种算术运算(如加、减、乘、除)和逻辑运算( 如逻辑加、逻辑乘和非运算); 而控制器不具有运算功能,它只是读取各种指令,并对指令进行分析,作出相应的控制。通常,在CPU中还有若干个寄存器,它们可直接参与运算并存放运算的中间结果。
我们常说的CPU都是X86系列及兼容CPU ,所谓X86指令集是美国Intel公司为其第一块16位CP U(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU— i8088(i8086 简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X8 7指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium Ⅲ系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,Intel公司所生产的所有CPU仍然继续使用X86指令集。 另外除Intel 公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Inte l CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。由于Intel X8 6系列及其兼容CPU都使用X86指令集,就形成了今天庞大的X86系列及兼容CPU阵容。
(二)CPU主要技术参数
CPU品质的高低直接决定了一个计算机系统的档次,而 CPU的主要技术特性可以反映出CPU的大致性能。
CPU可以同时处理的二进制数据的位数是其最重要的一个品质标志。人们通常所说的16位机、32位机就是指该微机中的C PU可以同时处理16位、32位的二进制数据。早期有代表性的IBM PC/XT、IBM PC/AT与 286机是16位机,386机和486机是32位机,586机则是64位的高档微机。
CPU按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等。
位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是 “0”或是“1”在CPU中都是一“位”。
字节和字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字节的长度是不固定的,对于不同的CPU、字长的长度也不一样。8位的CPU一次只能处理一个宇节,而32位的CPU一次就能处理4个宇节,同理字长为64位的 C PU一次可以处理8个字节。
2、CPU外频
CPU外频也就是常见特性表中所列的CPU总线频率,是由主板为CPU提供的基准时钟频率,而CPU的工作主频则按倍频系数乘以外频而来。在Pentium时代, CPU的外频一般是60/66MHz,从Pentium II 350开始,CPU外频提高到1O0MHz。由于正常情况下CPU总线频率和内存总线频率相同,所以当CPU外频提高后,与内存之间的交换速度也相应得到了提高,对提高电脑整体运行速度影响较大。
3、前端总线(FSB)频率
前端总线也就是以前所说的CPU总线,由于在目前的各种主板上前端总线频率与内存总线频率相同,所以也是 CPU与内存以及L2 Cache(仅指Socket 7主板)之间交换数据的工作时钟。由于数据传输最大带宽取决所同时传输的数据位宽度和传输频率,即数据带宽=(总线频率(数据宽度)/8。例如Intel公司的PⅡ 333使用6 6MHz的前端总线,所以它与内存之间的数据交换带宽为528MB/s =(66×64)/8,而其PⅡ 350则使用100MHz的前端总线,所以其数据交换峰值带宽为800MB/s=(100×64)/8。由此可见前端总线速率将影响电脑运行时CPU与内存、(L2 Cache)之间的数据交换速度,实际也就影响了电脑的整体运行速度。因此目前 Intel正开始将其P Ⅲ的前端总线频率从100MHz向133MHz过渡。 AMD公司新推出的K7虽然使用20 0MHz的前端总线频率,但有资料表明K7 CPU内核与内存之间数据交换时钟仍然是100MHz,主频也是以100 MHz为基频倍频的。
4、CPU主频
CPU主频也叫工作频率,是CPU内核(整数和浮点运算器)电路的实际运行频率。在486 DX2 CPU之前。CPU的主频与外频相等。从486DX2开始,基本上所有的CPU主频都等于“外频乘上倍频系数”了。CPU的主要技术特征 。主频是CPU内核运行时的时钟频率,主频的高低直接影响CPU的运算速度。
我们知道仅Pentium就可以在一个时钟周期内执行两条运算指令,假如主频为100MHz的Penti um可以在1秒钟内执行2亿条指令,那么主频为200MHz的Pentium每秒钟就能执行4亿条指令,因此CPU主频越高,电脑运行速度就越快。
需要说明的是Cyrix的CPU对主频这项指标是采用PR性能等级参数(Performance Rat ing)来标称的,表示此时CPU性能相当于Intel某主频CPU的性能。用PR参数标称的CPU实际运行时钟频率与标称主频并不一致。例如MⅡ-300的实际运行频率为233MHz(66×35),但PR参数主频标为300MH z,意思就是MⅡ-300相当于Intel的PⅡ-300。不过事实上也仅是MⅡ-300的Business Win ston指标(整数性能)能与PⅡ-300相当而已。
5、L1和L2 Cache的容量和速率
L1和L2 Cache的容量和工作速率对提高电脑速度起关键作用,尤其是L2 Cache对提高运行2 D图形处理较多的商业软件速度有显著作用。
设置L2 Cache是486时代开始的,目的是弥补L1 Cache(一级高速缓存)容量的不足,以最大程度地减小主内存对CPU运行造成的延缓。
CPU的L2 Cache分芯片内部和外部两种。设在CPU芯片内的L2 Cache运行速度与主频相同,而采用PⅡ方式安装在CPU芯片外部的L2 Cache运行频率一般为主频的二分之一,因此其效率要比芯片内的L2 Cache要低,这就是赛扬只有128KB片内Cache但性能却几乎超过同主频P Ⅱ(有512KB但工作时钟为主频一半的片外L2Cache)的重要原因。
(三)CPU主要技术术语浅析
1、流水线技术
流水线(pipeline)是 InteI首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5~6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5~6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。由于486CP U只有一条流水线,通过流水线中取指令、译码、产生地址、执行指令和数据写回五个电路单元分别同时执行那些已经分成五步的指令,因此实现了486CPU设计人员预期的在每个时钟周期中完成一条指令的目的(按笔者看法,CPU实际上应该是从第五个时钟周期才达到每周期能完成一条指令的处理速度)。到了Pentium时代、设计人员在CPU中设置了两条具有各自独立电路单元的流水线,因此这样CPU在工作时就可以通过这两条流水线来同时执行两条指令,因此在理论上可以实现在每一个时钟周期中完成两条指令的目的。
2、超流水线和超标量技术
超流水线是指某些CPU内部的流水线超过通常的5~6步以上,例如Pentium pro的流水线就长达14 步。将流水线设计的步(级)数越多,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。超标量(supe rscalar)是指在 CPU中有一条以上的流水线,并且每时钟周期内可以完成一条以上的指令,这种设计就叫超标量技术。
3、乱序执行技术
乱序执行(out-of-orderexecution)是指CPU采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。比方说程序某一段有7条指令,此时CPU将根据各单元电路的空闹状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路执行。当然在各单元不按规定顺序执行完指令后还必须由相应电路再将运算结果重新按原来程序指定的指令顺序排列后才能返回程序。这种将各条指令不按顺序拆散后执行的运行方式就叫乱序执行(也有叫错序执行)技术。采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CP U的运行程序的速度。
4、分技预溯和推测执行技术
分枝预测(branch prediction)和推测执行(speculatlon execution) 是CPU动态执行技术中的主要内容,动态执行是目前CPU主要采用的先进技术之一。采用分枝预测和动态执行的主要目的是为了提高CPU的运算速度。推测执行是依托于分枝预测基础上的,在分枝预测程序是否分枝后所进行的处理也就是推测执行。
5、指令特殊扩展技术
自最简单的计算机开始,指令序列便能取得运算对象,并对它们执行计算。对大多数计算机而言,这些指令同时只能执行一次计算。如需完成一些并行 *** 作,就要连续执行多次计算。此类计算机采用的是“单指令单数据”(SISD)处理器。在介绍CPU性能中还经常提到“扩展指令”或“特殊扩展”一说,这都是指该CPU是否具有对X86指令集进行指令扩展而言。扩展指令中最早出现的是InteI公司自己的“MMX”,其次是AMD公司的“3D Now!”,最后是最近的Pentium III中的“SSE”。
MMX和SSE:MMX是英语“多媒体指令集”的缩写。共有57条指令,是Intel公司第一次对自1985 年就定型的 X86指令集进行的扩展。MMX主要用于增强CPU对多媒体信息的处理,提高CPU处理3D图形、视频和音频信息能力。但由于只对整数运算进行了优化而没有加强浮点方面的运算能力。所以在3D图形日趋广泛,因特网3D网页应用日趋增多的情况下,MMX已心有余而力不足了。MMX指令可对整数执行SIMD运算,比如-40、0、1、469 或32766等等;SSE指令则增加了对浮点数的SIMD运算能力,比如-402337,14355或87734 3226012等等。利用MMX和SSE,一条指令可对2个以上的数据流执行计算。就前面的例子来说,再也不必每秒执行529000条指令了,只需执行264600条即可。因为同样的指令可同时对左、右声道发生作用。显示时,每秒也不需要70778880条指令,只需23592960条,因为红、绿、蓝通道均可用相同的指令控制。
SSE:SSE是英语“因特网数据流单指令序列扩展/Internet Streaming SIMDExt ensions”的缩写。它是InteI公司首次应用于 Pentium III中的。实际就是原来传闻的MMX2以后来又叫KNI(Katmai NewInstruction), Katmai实际上也就是现在的Pentium III。SSE共有70条指令,不但涵括了原MMX和3D Now!指令集中的所有功能,而且特别加强了SIMD浮点处理能力,另外还专门针对目前因特网的日益发展,加强了CPU处理3D网页和其它音、象信息技术处理的能力。CPU具有特殊扩展指令集后还必须在应用程序的相应支持下才能发挥作用,因此,当目前最先进的Penthm III 450和 Pentium II 450运行同样没有扩展指令支持的应用程序时,它们之间的速度区别并不大。
SSE除保持原有的MMX指令外,又新增了70条指令,在加快浮点运算的同时,也改善了内存的使用效率,使内存速度显得更快一些。对游戏性能的改善十分显著,按Intel的说法,SSE对下述几个领域的影响特别明显:3D几何运算及动画处理;图形处理(如Photoshop);视频编辑/压缩/解压(如MPEG和DVD);语音识别;以及声音压缩和合成等。
3D NOW!:AMD公司开发的多媒体扩展指令集,共有27条指令,针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力,但由于指令有限,该指令集主要应用于3D游戏,而对其他商业图形应用处理支持不足。
(四) CPU的生产工艺及产品构架
1、CPU的生产工艺
表明CPU性能的参数中常有“工艺技术”一项,其中有“035um”或“025um”等。一般来说“工艺技术”中的数据越小表明CPU生产技术越先进。目前生产CPU主要采用CMOS技术。CMOS是英语“互补金属氧化物半导体”的缩写。采用这种技术生产CPU时过程中采用“光刀”加工各种电路和元器件,并采用金属铝沉淀在硅材料上后用 “光刀”刻成导线联接各元器件。现在光刻的精度一般用微米(um)表示,精度越高表示生产工艺越先进。因为精度越高则可以在同样体积上的硅材料上生产出更多的元件,所加工出的联接线也越细,这样生产出的CPU工作主频可以做得很高。正因为如此,在只能使用065 u m工艺时生产的第一代Pentium CPU的工作主频只有60/66MHz,在随后生产工艺逐渐发展到035um、025um时、所以也相应生产出了工作主额高达266MHz的Pentium MMX和主频高达500MHz的Pentium II CPU。由于目前科学技术的限制,现在的CPU生产工艺只能达到0.25 u m,因此Intel、AMD、 Cyrix以及其它公司正在向018um和铜导线(用金属铜沉淀在硅材料上代替原来的铝)技术努力,估计只要生产工艺达到018um后生产出主频为l000MHz的CPU就会是很平常的事了。
AMD为了跟Intel继续争夺下个世纪的微处理器发展权,已经跟摩托罗拉(Motorola)达成一项长达七年的技术合作协议。Motorola将把最新开发的铜导线工艺技术(Copper Interconnect) 授权给AMD。AMD准备在2000年之内,制造高达1000MHz(1GHz)的K7微处理器。CPU将向速度更快、64位结构方向前进。CPU的制作工艺将更加精细,将会由现在025微米向018微米过渡,到2000年中大部分CPU厂商都将采用018微米工艺,2001年之后,许多厂商都将转向013微米的铜制造工艺,制造工艺的提高,味着体积更小,集成度更高,耗电更少。铜技术的优势非常明显。主要表现在以下方面:铜的导电性能优于现在普遍应用的铝,而且铜的电阻小,发热量小,从而 可以保证处理器在更大范围内的可靠性;采用0.13微米以下及铜工艺芯片制造技术将有效的提高芯片的工作频率;能减小现有管芯的 体积。与传统的铝工艺技术相比,铜工艺制造芯片技术将有效地提高芯片的速度,减小芯片的面积,从发展来看铜工艺将最终取代铝工艺。
各厂家所生产的每一种CPU都有名称(商标名)、代号(研制代号)和标志(专用图案)。其中In tel公司的早期产品以i80x86命名,即以前的286、386、486等,到Intel开发出第5代产品586时由于商标注册上的麻烦改为Pentium并同时为其注册中文商标名“奔腾”,由此也就有了后来的Pentium Pr o(高能奔腾)、Pentium Ⅱ(奔腾2代)、Pentium Ⅲ(奔腾3代)以及Celeron(赛扬),目前名称并不能反映出同类型中CPU的规格,这点将从Intel正式推出前端总线为133MHz的PⅢ后开始改进,以后只要看见CPU的名称就可以了解这块CPU的大致技术特性。
另外厂家对每一种CPU包括同名但技术规格不同的产品都另有一个研制代号,例如Intel公司使用03 5和025工艺生产的PⅡ就各有一个代号分别为:Klamath和Destrutes。同时Itel每一种名称的C PU都有还一个专用商标图案作为标志。AMD和Cyrix公司的情况与Intel相近,它们的每一种CPU也都有一个名称、代号和标志,但都还没有正式的中文名称。
2、CPU的内部结构
当前我们使用的CPU内部结构实际可分为单总线和双总线两种结构,由于CPU内部结构特征决定CPU的封装形式和安装规范,所以在此作些简单的介绍。
在Intel公司研制出Pentium Pro之前, 各种486以上CPU,如经典Pentium内部由主处理器、数学协处理器、控制器、各种寄存器和L1 Cache组成。至今为止仍然有大量的CPU继续以这种内部结构模式进行生产,例如AMD的K6-2、Cyrix的MⅡ以及IDT-C6等CPU。从P6(Pen-tium Pr o的研制代号)起,Intel为进一步提高CPU与L2 Cache间的数据交换速度,将原来设置在电脑主板上的高速缓存控制电路和L2 Cache(二级高速缓存)采用在同一块硅材料上制作的方法集成到CPU芯片上,这样CPU内核与高速缓存之间的数据交换就无需经过外部总线而直接通过CPU内部的缓存总线进行,由于CPU内核与内存和CPU与高速缓存之间的数据交换通道分离而形成首创的P6双总线架构模式(见图1)。从Pentium Pro 的实际应用效果看这一技术措施非常成功,是CPU研制技术上的一次重大改进。由于P6双总线结构的优越性,因此凡是内部具有L2 C ache 和高速缓存控制器的CPU都由传统的单总线模式过渡到双总线模式,例如Intel公司的P Ⅱ、新赛扬和P Ⅲ;AMD公司的K6-Ⅲ和K7等。
3、CPU的构架和封装方式
CPU架构是按CPU的安装插座类型和规格确定的。目前常用的CPU按其安装插座规范可分为Socket x和Slotx两大架构。
其中Socket x架构CPU中又分Socket 7和Socket 370两种,分别使用321针的So cket 7和370针的Socket370插座进行安装。Socket 7和Socket 370插座在外形上非常相似尺寸也相同,但Socket 370插座上比Socket7多了一圈针插孔。在Slot x架构CPU中可分为S lot 1、Slot 2和Slot A三种,分别使用对应规格的Slot槽进行安装。其中Slot 1和Slot A都是242线插槽,但在机械和电气标准上都不相同,所以互不兼容。Slot 2是尺寸较大的插槽,专门用于安装P Ⅱ和P Ⅲ序列中的Xeon。Xeon是一种专用于工作组服务器上的CPU。
封装是CPU生产过程中的最后一道工序,封装是采用特定的材料将CPU芯片或CPU模块固化在其中以防损坏的保护措施,一般必须在封装后CPU才能交付用户使用。
CPU的封装方式取决于CPU安装形式和器件集成设计,通常采用Socket插座进行安装的CPU只能使用PGA(栅格阵列)方式封装,而采用Slot x槽安装的CPU则全部采用SEC(单边接插盒)的形式封装。 目前采用PGA封装的CPU主要有Intel公司的赛扬,AMD的K6-2、K6-Ⅲ和Cyrix公司的MⅡ,以前赛扬曾采用SEC封装,现已逐渐全部改用PGA封装(见图4)。采用SEC封装的CPU有Intel的PⅡ、PⅢ和AM D公司的K7。其中Intel的Slot架构CPU实际上分别使用SEPP、SECC和SECC2三种单边接插盒进行封装。
以上CPU中虽然赛扬和K6-Ⅲ内部分别集成了128KB和256KB的L2 Cache和高速缓存控制器,但由于它们是采用在同一片硅材料上一次制造出CPU内核和L2 Cache、高速缓存控制器的方法制造,所以它们的体积较小并能采用PGA方式进行封装。不过赛扬采用PGA封装的主要原因是降低生产成本,而K6-Ⅲ采用PGA封装的主要原因则是因为Intel对其开发的Slot 1、Slot 2和Socket 370插座进行专利保护,所以A MD只能沿用Socket 7架构和采用PGA封装方式生产K6-Ⅲ。
目前Slot架构的CPU有两种制造方法,一是将分别制造的CPU内核芯片、高速Cache控制器芯片和 L2 Cache芯片安装在一块PCB(电路板)上,然后再安装上单边接插盒和风扇以完成CPU的最终制作。采用这类结构和方法制作的CPU有Intel的PⅡ、PⅢ和AMD的K7。二是将完整的CPU(内含CPU内核、高速Cach e控制器芯片和L2Cache芯片)芯片安装在电路板上,此时电路板纯粹只起Slot接口的安装作用。最后同样再安装单边接插盒和风扇也就形成完整的CPU。采用这种结构和方法制作的CPU只有Intel公司的部分赛扬。

cpu是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。其功能主要是可以解释计算机指令以及处理计算机软件中的数据。cpu的品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等,介绍如下:

1、Intel。英特尔公司是世界上最大的半导体公司,也是第一家推出x86架构处理器的公司,总部位于美国加利福尼亚州圣克拉拉。

2、AMD。AMD公司专门为计算机,通信和消费电子行业设计和制造各种创新的微处理器,闪存和低功率处理器解决方案。

3、IBM和Cyrix。美国国家半导体公司IBM和Cyrix公司合并后,使其终于拥有了自己的芯片生产线,其成品将会日益完善和完备。

4、IDT。IDT公司总部设在美国加利福尼亚州的硅谷,在全球约有3100名员工。公司具有业界领先的设计能力,并在美国、澳大利亚悉尼和中国上海设有多个办事机构。

5、VIA。威盛电子的客户群涵盖全球各大OEM厂商,主机板制造业者及系统整合业者,总部则位于台湾台北县新店市。

参考资料:

中央处理器(CPU)制造商-百度百科

CPU又叫中央处理器,是英文单词Central Processing Unit的缩写,负责对信息和数据进行运算和处理,并实现本身运行过程的自动化。在早期的计算机当中,CPU被分成了运算器和控 制器两个部分,后来由于电路集成度的提高,在微处理器问世时,就将它们都集成在一个芯片中了。需要智能控制、大量信息处理的地方就会 用到CPU。
CPU有通用CPU和嵌入式CPU,通用和嵌入式的分别,主要是根据应用模式的不同而划分的。通用CPU芯片的功能一般比较强,能运 行复杂的 *** 作系统和大型应用软件。嵌入式CPU在功能和性能上有很大的变化范围。随着集成度的提高,在嵌入式应用中,人们倾向于把CPU、 存储器和一些外围电路集成到一个芯片上,构成所谓的系统芯片(简称为SOC),而把SOC上的那个CPU成为CPU芯核。

现在,指令系统的优化设计有两个截然相反的方向。一个是增强指令的功能,设置一些功能复杂的指令,把一些原来有软件实现的常用功能 改用硬件的指令系统来实现,这种计算机成为复杂指令系统计算机。早期Intel的X86指令体系就是一种CISC指令结构。
RISC是Reduced Instruction Set Computer的缩写中文翻译成精简指令系统计算机,是八十年代发展起来的,尽量简化指令功能,只保留那些功能简单,能在 一个节拍内执行完成的指令,较复杂的功能用一段子程序来实现,这种计算机系统成为精简指令系统计算机。目前采用RISC体系结构的处理器 的芯片厂商有SUN、SGI、IBM的Power PC系列、DEC公司的Alpha系列、Motorola公司的龙珠和Power PC等等。
介绍一下 MIPS体系。
MIPS是世界上很流行的一种RISC处理器。MIPS的意思是"无内部互锁流水级的微处理器"(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。他最早是在80年代初期由斯坦福(Stanford)大学 Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品以为很多打计算机 公司采用构成各种工作站和计算机系统。

指令系统
要讲CPU,就必须先讲一下指令系统。 指令系统指的是一个CPU所能够处理的全部指
令的集合,是一个CPU的根本属性。比如我们现在所用的CPU都是采用x86指令集的,他们都是 同一类型的CPU,不管是PIII、Athlon或Joshua。我们也知道,世界上还有比PIII和Athlon快得多的CPU,比如Alpha,但它们不是用x86指令集 ,不能使用数量庞大的基于x86指令集的程序,如Windows98。之所以说指令系统是一个CPU的根本属性,是因为指令系统决定了一个CPU能够运 行什么样的程序。
所有采用高级语言编出的程序,都需要翻译(编译或解释)成为机器语言后才能运行,这些机器语言中 所包含的就是一条条的指令。
1、 指令的格式
一条指令一般包括两个部分: *** 作码和地址码。 *** 作码其实就是指令序列号,用来告诉CPU需要执行的是那一条指令。地址码则复杂一些,主要包括源 *** 作数地址、目的地址和下一条指令的地址 。在某些指令中,地址码可以部分或全部省略,比如一条空指令就只有 *** 作码而没有地址码。
举个例子吧,某个指令系统 的指令长度为32位, *** 作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个 “00000010000001000000000100000110”的指令时,先取出它的前8位 *** 作码,即00000010,分析得出这是一个减法 *** 作,有3个地址,分别是 两个源 *** 作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到ALU中进行减法运算,然后 把结果送到00000110处。
这只是一个相当简单化的例子,实际情况要复杂的多
2、 指令的分类与寻址 方式
一般说来,现在的指令系统有以下几种类型的指令:
(1)算术逻辑运算指令
算术逻辑运算 指令包括加减乘除等算术运算指令,以及与或非异或等逻辑运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令等。
(2)浮点运算指令
用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以CPU中一般还会有专门负责浮点运 算的浮点运算单元。现在的浮点指令中一般还加入了向量指令,用于直接对矩阵进行运算,对于现在的多媒体和3D处理很有用。
(3)位 *** 作指令
学过C的人应该都知道C语言中有一组位 *** 作语句,相对应的,指令系统中也有一组位 *** 作指令,如左移一位右移 一位等。对于计算机内部以二进制不码表示的数据来说,这种 *** 作是非常简单快捷的。
(4)其他指令
上面三种都是 运算型指令,除此之外还有许多非运算的其他指令。这些指令包括:数据传送指令、堆栈 *** 作指令、转移类指令、输入输出指令和一些比较特 殊的指令,如特权指令、多处理器控制指令和等待、停机、空 *** 作等指令。
对于指令中的地址码,也会有许多不同的寻址 (编址)方式,主要有直接寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统会有几十种甚至更多的寻址方式。
3、 CISC与RISC
CISC,Complex Instruction Set Computer,复杂指令系统计算机。RISC,Reduced Instruction Set Computer,精简指令系统计算机。虽然这两个名词是针对计算机的,但下文我们仍然只对指令集进行研究。
(1)CISC 的产生、发展和现状
一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全靠软件编译时通过简单指令 的组合来实现。举个最简单的例子,一个a乘以b的 *** 作就可以转换为a个b相加来做,这样就用不着乘法指令了。当然,最早的指令系统就已经 有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法组合来得快得多。
由于那时的计算机部件相当昂贵,而且速度 很慢,为了提高速度,越来越多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统的指令数是受指令 *** 作码的位数所 限制的,如果 *** 作码为8位,那么指令数最多为256条(2的8次方)。
那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了 一种方案: *** 作码扩展。前面说过, *** 作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把 *** 作码 扩展到这些位置。
举个简单的例子,如果一个指令系统的 *** 作码为2位,那么可以有00、01、10、11四条不同的指令。现在 把11作为保留,把 *** 作码扩展到4位,那么就可以有00、01、10、1100、1101、1110、1111七条指令。其中1100、1101、1110、1111这四条指令 的地址码必须少两位。
然后,为了达到 *** 作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,发明了各种各样的寻址方式,如基 址寻址、相对寻址等,用以最大限度的压缩地址码长度,为 *** 作码留出空间。
就这样,慢慢地,CISC指令系统就形成了, 大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点:因为这些都大大增加了解码的难度,而在现在的高速硬 件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用x86指令集外,服务器以及更大的系统都早已不 用CISC了。x86仍然存在的唯一理由就是为了兼容大量的x86平台上的软件。
]:(2)RISC的产生、发展和现状
1975年,IBM的设计师John Cocke研究了当时的IBM370CISC系统,发现其中占总指令数仅20%的简单指令却在程序调用中占了80% ,而占指令数80%的复杂指令却只有20%的机会用到。由此,他提出了RISC的概念。
事实证明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春笋般大量出现,占据了大量的市场。到了90年代,x86的CPU如pentium和k5也开始使用先进的RISC核心。
RISC 的最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线 ,寄存器数量多,大量 *** 作在寄存器之间进行。由于下文所讲的CPU核心大部分是讲RISC核心,所以这里就不多介绍了,对于RISC核心的设计下 面会详细谈到。
RISC目前正如日中天,Intel的Itanium也将最终抛弃x86而转向RISC结构。
二、CPU内核结构
好吧 ,下面来看看CPU。CPU内核主要分为两部分:运算器和控制器。
(一) 运算器
1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)
ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位 *** 作。在某些CPU中还 有专门用于处理移位 *** 作的移位器。
通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。
2、 浮点运算单元FPU(Floating Point Unit)
FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。
3、通用寄存器组
通用寄存器组是一组最快的存储器,用来保存参加运算的 *** 作数和中间结果。
在通用寄存器的设计上,RISC与CISC有 着很大的不同。CISC的寄存器通常很少,主要是受了当时硬件成本所限。比如x86指令集只有8个通用寄存器。所以,CISC的CPU执行是大多数时 间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存 器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
对于x86指令集只支持8个通用寄存器的缺点,Intel和AMD的最新 CPU都采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。不过,相对于RISC来说 ,这种技术的寄存器 *** 作要多出一个时钟周期,用来对寄存器进行重命名。
4、 专用寄存器
专用寄存器通常是一些状 态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。
(二) 控制器
运算器只能完成运算,而控 制器用于控制着整个CPU的工作。
1、 指令控制器
指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等 *** 作,然 后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。
2、 时序控制器
时序控制器的作用是为每条 指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就 是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。
3、 总线控制器
总线控制器主要用于控制CPU 的内外部总线,包括地址总线、数据总线、控制总线等等。
4、中断控制器
中断控制器用于控制各种各样的中断请求,并根据优先 级的高低对中断请求进行排队,逐个交给CPU处理。
(三) CPU核心的设计
CPU的性能是由什么决定的呢?单纯的一个ALU速度在一个CPU中并不起决定性作用,因为ALU的速度都差不多。而一个CPU的性能表现的决 定性因素就在于CPU内核的设计。
1、超标量(Superscalar)
既然无法大幅提高ALU的速度,有什么替代的方法呢?并行处理的方 法又一次产生了强大的作用。所谓的超标量CPU,就是只集成了多个ALU、多个FPU、多个译码器和多条流水线的CPU,以并行处理的方式来提高 性能。
超标量技术应该是很容易理解的,不过有一点需要注意,就是不要去管“超标量”之前的那个数字,比如“9路超标量”,不同 的厂商对于这个数字有着不同的定义,更多的这只是一种商业上的宣传手段。
2、流水线(Pipeline)
流水线是现代RISC核心的一 个重要设计,它极大地提高了性能。
对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取 *** 作数,运算 (ALU),写结果。其中前三步一般由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令顺序执行,那么先是指令控制器工 作,完成第一条指令的前三步,然后运算器工作,完成后两步,在指令控制器工作,完成第二条指令的前三步,在是运算器,完成第二条指令 的后两部……很明显,当指令控制器工作是运算器基本上在休息,而当运算器在工作时指令控制器却在休息,造成了相当大的资源浪费。解决 方法很容易想到,当指令控制器完成了第一条指令的前三步后,直接开始第二条指令的 *** 作,运算单元也是。这样就形成了流水线系统,这是 一条2级流水线。
如果是一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第一条指令的取址工作后直 接开始第二条指令的取址,这时第一条指令在进行译码,然后第三条指令取址,第二条指令译码,第一条指令取 *** 作数……这样就是一个5级流 水线。很显然,5级流水线的平均理论速度是不用流水线的4倍。
流水线系统最大限度地利用了CPU资源,使每个部件在每个时钟周期都 工作,大大提高了效率。但是,流水线有两个非常大的问题:相关和转移。
在一个流水线系统中,如果第二条指令需要用到第一条指 令的结果,这种情况叫做相关。以上面哪个5级流水线为例,当第二条指令需要取 *** 作数时,第一条指令的运算还没有完成,如果这时第二条指 令就去取 *** 作数,就会得到错误的结果。所以,这时整条流水线不得不停顿下来,等待第一条指令的完成。这是很讨厌的问题,特别是对于比 较长的流水线,比如20级,这种停顿通常要损失十几个时钟周期。目前解决这个问题的方法是乱序执行。乱序执行的原理是在两条相关指令中 插入不相关的指令,使整条流水线顺畅。比如上面的例子中,开始执行第一条指令后直接开始执行第三条指令(假设第三条指令不相关),然 后才开始执行第二条指令,这样当第二条指令需要取 *** 作数时第一条指令刚好完成,而且第三条指令也快要完成了,整条流水线不会停顿。当 然,流水线的阻塞现象还是不能完全避免的,尤其是当相关指令非常多的时候。
另一个大问题是条件转移。在上面的例子中,如果第 一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令?这时就必须等第一条指令的判断结果出来才能执行第二条指令 。条件转移所造成的流水线停顿甚至比相关还要严重的多。所以,现在采用分支预测技术来处理转移问题。虽然我们的程序中充满着分支,而 且哪一条分支都是有可能的,但大多数情况下总是选择某一分支。比如一个循环的末尾是一个分支,除了最后一次我们需要跳出循环外,其他 的时候我们总是选择继续循环这条分支。根据这些原理,分支预测技术可以在没有得到结果之前预测下一条指令是什么,并执行它。现在的分 支预测技术能够达到90%以上的正确率,但是,一旦预测错误,CPU仍然不得不清理整条流水线并回到分支点。这将损失大量的时钟周期。所以 ,进一步提高分支预测的准确率也是正在研究的一个课题。
越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越 长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。
1、解码器(Decode Unit)
这是x86CPU才有的东西,它的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码 ,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复 杂。好在这些复杂指令很少会用到。
Athlon也好,PIII也好,老式的CISC的x86指令集严重制约了他们的性能表现。
2、一级缓存 和二级缓存(Cache)
以及缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核, 而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

主要作用可归纳为网络信息服务(>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13475573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-14
下一篇 2023-08-14

发表评论

登录后才能评论

评论列表(0条)

保存