中央处理器
历史
EDVAC,第一台电子储存式可编程计算机。
在现今的CPU出现之前,如同ENIAC之类的计算机在执行不同程序时,必须经过一番线路调整才能启动。由于它们的线路必须被重设才能执行不同的程序,这些机器通常称为“固定程序计算机”(fixed-program computer)。而由于CPU这个词指称为执行软件(计算机程序)的装置,那些最早与储存程序型计算机一同登场的装置也可以被称为CPU。
储存程序型计算机的主意早已体现在ENIAC的设计上,但最终还是被省略以期早日完成。在1945年6月30日,ENIAC完成之前,著名数学家冯·诺伊曼发表名为"关于EDVAC的报告草案"的论文。它揭述储存程序型计算机的计划将在1949年正式完成 (冯·诺伊曼1945) 。EDVAC的目标是执行一定数量与种类的指令(或操作),这些指令结合产生出可以让EDVAC执行的有用程序。特别的是,为EDVAC而写的程序是储存在高速计算机内存中,而非由实体线路组合而成。这项设计克服了ENIAC的某些局限——即花费大量时间与精力重设线路以执行新程序。在冯·诺伊曼的设计下,EDVAC可以借由改变内存储存的内容,简单更换它执行的程序(软件)。
值得注意的是,尽管冯·诺伊曼由于设计了EDVAC,使得他在发展储存程序型计算机上的贡献最为显著,但其他早于他的研究员如康拉德·楚泽(Konard Zuse)也提出过类似的想法。另外早于EDVAC完成,利用哈佛架构制造的马克一号,也利用打孔纸带而非电子内存用作储存程序的概念。冯·诺伊曼架构与哈佛架构最主要的不同在于后者将CPU指令与资料分开存放与处置,而前者使用相同的内存位置。大多近代的CPU依照冯·诺伊曼架构设计,但哈佛架构一样常见。
身为数位装置,所有CPU处理不连续状态,因此需要一些转换与区分这些状态的基础组件。在市场接受晶体管前,继电器与真空管常用在这些用途上。虽然这些材料速度上远优于纯粹的机械构造,但是它们有许多不可靠的地方。例如以继电器建造直流时序逻辑回路需要额外的硬件以应付接触点跳动问题。而真空管不会有接触点跳动问题,但它们必须在启用前预热,也必须同时停止运作。 通常当一根真空管坏了,CPU必须找出损坏组件以置换新管。因此早期的电子真空管式计算机快于电子继电器式计算机,但维修不便。类似EDVAC的真空管计算机每隔八小时便会损坏一次,而较慢较早期的马克一号却不太发生故障 (Weik 1961:238) 。但在最后,由于速度优势,真空管计算机主宰了当时的计算机世界,尽管它们需要较多的维护照顾。大多早期的同步CPU,其时钟频率低于近代的微电子设计(见下列对于时钟频率的讨论)。那时常见的时钟频率为100千赫兹到4百万赫兹,大大受限于内建切换装置的速度。
分立晶体管与集成电路中央处理器
CPU,磁芯内存及MSIPDP-8/I总线界面。
由于许多科技厂家投入更小更可靠的电子装置,设计CPU变得越来越复杂。晶体管的面世便是第一个CPU的飞跃进步。1950到60年代的晶体管CPU不再以体积庞大、不可靠与易碎的开关组件(例如继电器与真空管)建造。借由这项改良,更复杂与可靠的CPU便被建造在一个或多个包含分立(离散)组件的印刷电路板上。
在此时期,将许多晶体管放置在拥挤空间中的方法大为普及。集成电路(IC)将大量的晶体管集中在一小块半导体片,或芯片(chip)上。刚开始只有非常基本、非特定用途的数字电路小型化到IC上(例如NOR逻辑闸)。以这些预装式IC为基础的CPU称为小规模集成电路(SSI)装置。SSI IC,例如装置在阿波罗导航计算机上的那些计算机,通常包含数十个晶体管。以SSI IC建构整个CPU需要数千个独立的芯片,但与之前的分立晶体管设计相比,依然省下很多空间与电力。肇因于微电子科技的进步,在IC上的晶体管数量越来越大,因此减少了建构一个完整CPU需要的独立IC数量。“中规模集成电路”(MSI)与“大规模集成电路”(LSI)将内含的晶体管数量增加到成百上万。
1964年IBM推出了System/360计算机架构,此架构让一系列速度与性能不同的IBM计算机可以运行相同的程序。此确实为一项创举,因为当时的计算机大多互不兼容,甚至同一家厂商制造的也是如此。为了实践此项创举,IBM提出了微程序概念,此概念依然广泛使用在现代CPU上 (Amdahl et al. 1964) 。System/360架构由于太过成功,因此主宰了大型计算机数十年之久,并留下一系列使用相似架构,名为IBM zSeries的现代主机产品。同一年(1964),迪吉多(DEC)推出另一个深具影响力且瞄准科学与研究市场的计算机,名为PDP-8。DEC稍后推出非常有名的PDP-11,此产品原先计划以SSI IC构组,但在LSI技术成熟后改为LSI IC。与之前SSI和MSI的祖先相比,PDP-11的第一个LSI产品包含了一个只用了4个LSI IC的CPU (Digital Equipment Corporation 1975) 。
晶体管计算机有许多前一代产品没有的优点。除了可靠度与低耗电量之外,由于晶体管的状态转换时间比继电器和真空管短得多,CPU也就拥有更快的速度。得益于可靠度的提升和晶体管转换器切换时间的缩短,CPU的时钟频率在此时期达到十几百万赫兹。另外,由于分立晶体管与IC CPU的使用量大增,新的高性能设计,例如SIMD(单指令多数据)、向量处理机开始出现。这些早期的实验性设计,刺激了之后超级计算机(例如克雷公司)的崛起。
中央处理器操作原理
CPU的主要运作原理,不论其外观,都是执行储存于被称为程序里的一系列指令。在此讨论的是遵循普遍的冯·诺伊曼结构(von Neumann architecture)设计的装置。程序以一系列数字储存在计算机内存中。差不多所有的冯·诺伊曼CPU的运作原理可分为四个阶段: 提取 、 解码 、 执行 和 写回 。
第一阶段, 提取 ,从程序内存中检索指令(为数值或一系列数值)。由程序计数器指定程序内存的位置,程序计数器保存供识别目前程序位置的数值。换言之,程序计数器记录了CPU在目前程序里的踪迹。提取指令之后,PC根据指令式长度增加内存单元 。指令的提取常常必须从相对较慢的内存查找,导致CPU等候指令的送入。这个问题主要被论及在现代处理器的高速缓存和管线化架构(见下)。
CPU根据从内存提取到的指令来决定其执行行为。在 解码 阶段,指令被拆解为有意义的片断。根据CPU的指令集架构( ISA )定义将数值解译为指令 。一部分的指令数值为运算码,其指示要进行哪些运算。其它的数值通常供给指令必要的信息,诸如一个加法运算的运算目标。这样的运算目标也许提供一个常数值(即立即值),或是一个空间的定址值:寄存器或内存地址,以定址模式决定。在旧的设计中,CPU里的指令解码部分是无法改变的硬体装置。不过在众多抽象且复杂的CPU和ISA中,一个微程序时常用来帮助转换指令为各种形态的讯号。这些微程序在已成品的CPU中往往可以重写,方便变更解码指令。
在提取和解码阶段之后,接着进入 执行 阶段。该阶段中,连接到各种能够进行所需运算的CPU部件。例如,要求一个加法运算,算术逻辑单元将会连接到一组输入和一组输出。输入提供了要相加的数值,而且在输出将含有总和结果。ALU内含电路系统,以于输出端完成简单的普通运算和逻辑运算(比如加法和比特运算)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志寄存器里,溢出标志可能会被设置(参见以下的数值精度探讨)。
最终阶段, 写回 ,以一定格式将执行阶段的结果简单的写回。运算结果经常被写进CPU内部的寄存器,以供随后指令快速访问。在其它案例中,运算结果可能写进速度较慢,如容量较大且较便宜的主存。某些类型的指令会操作程序计数器,而不直接产生结果数据。这些一般称作“跳转”并在程序中带来循环行为、条件性执行(透过条件跳转)和函数 。许多指令也会改变标志寄存器的状态比特。这些标志可用来影响程序行为,缘由于它们时常显出各种运算结果。例如,以一个“比较”指令判断两个值的大小,根据比较结果在标志寄存器上设置一个数值。这个标志可借由随后的跳转指令来决定程序动向。
在执行指令并写回结果数据之后,程序计数器的值会递增,反复整个过程,下一个指令周期正常的提取下一个顺序指令。如果完成的是跳转指令,程序计数器将会修改成跳转到的指令地址,且程序继续正常执行。许多复杂的CPU可以一次提取多个指令、解码,并且同时执行。这个部分一般涉及“经典RISC管线”,那些实际上是在众多使用简单CPU的电子装置中快速普及(常称为微控制器) 。
设计与实现
整数范围
CPU数字表示方法是一个设计上的选择,这个选择影响了设备的工作方式。一些早期的数字计算机内部使用电气模型来表示通用的十进制(基于10进位)记数系统数字。还有一些罕见的计算机使用三进制表示数字。几乎所有的现代的CPU使用二进制系统来表示数字,这样数字可以用具有两个值的物理量来表示,例如高低电平 等等。
MOS 6502微处理器,双列直插式封装格式,一种非常流行的8位芯片。
与数表示相关的是一个CPU可以表示的数的大小和精度,在二进制CPU情形下,一个 位 (bit)指的是CPU处理的数中的一个有意义的位,CPU用来表示数的位数量常常被称作"字长", "位宽", "数据通路宽度",或者当严格地涉及到整数(与此相对的是浮点数)时,称作"整数精度",该数量因体系结构而异,且常常在完全相同的CPU的不同部件中也有所不同。例如:一个8位的CPU可处理在八个二进制数码(每个数码具有两个可能的取值,0或1)表示范围内的数,也就是说,2 或256个离散的数值。 实际上,整数精度在CPU可执行的软件所能利用的整数取值范围上设置了硬件限制。
整数精度也可影响到CPU可 寻址 (定址)的内存数量。譬如,如果二进制的CPU使用32 位 来表示内存地址,而每一个内存地址代表一个八比特组,CPU可定位的容量便是2 个比特组或4Gb。以上是简单描述的CPU地址空间,通常实际的CPU设计使用更为复杂的寻址方法,例如为了以同样的整数精度寻址更多的内存而使用分页技术。
更高的整数精度需要更多线路以支持更多的数字比特,也因此结构更复杂、更巨大、更花费能源,也通常更昂贵。因此尽管市面上有许多更高精准度的CPU(如16,32,64甚至128位),但依然可见应用软件执行在4或8位的微控制器上。越简单的微控制器通常较便宜,花费较少能源,也因此产生较少热量。这些都是设计电子设备的主要考量。然而,在专业级的应用上,额外的精度给予的效益(大多是给予额外的地址空间)通常显著影响它们的设计。为了同时得到高与低位宽度的优点,许多CPU依照不同功用将各部分设计成不一样的位宽度。例如 IBM System/370 ( 英语 : IBM System/370 ) 使用一个原为32位的CPU,但它在其浮点单元使用了128位精度,以得到更佳的精确度与浮点数的表示范围 (Amdahl et al. 1964) 。许多后来的CPU设计使用类似的混合位宽,尤其当处理器设计为通用用途,因而需要合理的整数与浮点数运算能力时。
时钟频率
逻辑分析仪显示一个同步的数据系统中的时间与状态。
内频=外频×倍频。
大部分的CPU,甚至大部分的时序逻辑设备,本质上都是同步的。 也就是说,它们被设计和使用的前题是假设都在同一个同步信号中工作。这个信号,就是众所周知的 时脉讯号 ,通常是由一个周期性的方波(构成)。通过计算电信号在CPU众多不同电路中的分支中循环所需要的最大时间,设计者们可为时脉讯号选择一个适合的周期。
该周期必须比信号在延迟最大的情况下移动或者传播所需的时间更长。设计整个CPU在时钟信号的上升沿和下降沿附近移动数据是可能的。无论是在设计还是组件的维度看来,均对简化CPU有显著的优点。同时,它也存在CPU必须等候回应较慢组件的缺点。此限制已透过多种增加CPU并行运算的方法下被大幅的补偿了。(见下文)
无论如何,结构上的改良无法解决所有同步CPU的弊病。比方说,时脉讯号易受其它的电子信号影响。在逐渐复杂的CPU中,越来越高的时钟频率使其更难与整个单元的时脉讯号同步。是故近代的CPU倾向发展多个相同的时脉讯号,以避免单一信号的延迟使得整个CPU失灵。另一个主要的问题是,时脉讯号的增加亦使得CPU产生的热能增加。持续变动的时钟频率使得许多组件切换(Switch)而不论它们是否处于运作状态。一般来说,一个处于切换状态的组件比处于静止状态还要耗费更多的能源。因此,时钟频率的增加使得CPU需要更有效率的冷却方案。
其中一个处理切换不必要组件的方法称为时钟门控,即关闭对不必要组件的时钟频率(有效的禁止组件)。但此法被认为太难实行而不见其低耗能通用性。 另一个对全程时钟信号的方法是同时移除时钟信号。当移除全程时钟信号;使得设计的程序更加复杂时,异步(或无时钟频率)设计使其在能源消耗与产生热能的维度上更有优势。罕见的是,所有的CPU建造在没有利用全程时钟信号的状况。两个值得注意的示例是ARM("Advanced RISC Machine")顺从AMULET以及MIPSR3000兼容MiniMIPS。与其完全移除时脉讯号,部分CPU的设计允许一定比例的装置不同步,比方说使用不同步算术逻辑单元连接超标量管线以达成一部分的算术性能增进。在不将时脉讯号完全移除的情况下,不同步的设计可使其表现出比同步计数器更少的数算。因此,结合了不同步设计极佳的能源耗损量及热能产生率,使它更适合在嵌入式计算机上运作。 (Garside et al. 1999) .
并行
低标量CPU的运算过程示意。注意其需要15个循环以完成三个指令。
前面描述的CPU结构只能在同一时间点执行一个指令,这种类型的CPU被称为 低标量 ( 英语 : subscalar ) 。
这一类型的CPU有一很大的缺点:效率低。由于只能执行一个指令,此类的进程给与低标量CPU固有的低性能。由于每次仅有一个指令能够被执行,CPU必须等到上个指令完成才能继续执行。如此便造成下标量CPU延宕在需要两个以上的时钟循环才能完成的指令。即便增加第二个执行单元(见下文)也不会大幅提升性能;除了单一沟道的延宕以外,双沟道的延宕及未使用的晶体管数量亦增加了。如此的设计使得不论CPU可使用的资源有多少,都仅能一次运行一个指令并可能达到 标量 的性能(一个指令需一个时脉循环)。无论如何,大部分的性能均为下标量(一个指令需超过一个时脉循环)。
为了达成标量目标以及更佳的性能,导致使得CPU倾向平行运算的各种设计越来越多。提到CPU的平行,有两个字汇常用来区分这些设计的技术。指令平行处理( I nstruction L evel P arallelism, ILP)以增加CPU执行指令的速率(换句话说,增加on-die执行资源的利用),以及执行绪平行处理( T hread L evel P arallelism, TLP)目的在增加执行绪(有效的个别程序)使得CPU可以同时执行。每种方法均可由其如何嵌入或相对有效(对CPU的性能)来区分。
基本的管线结构示意。假设在最佳情况下,这种管线可以使CPU维持标量的性能。
其中一种达成增加平行运算的方法,便是在主要指令完成执行之前,便进行指令提取及解码。这种最简易的技术,我们称为 指令管线化 ,且其被利用在泰半现代的泛用CPU中。透过分解执行沟道至离散阶段,指令管线化可以两个以上的指令同时执行。相较于已被淘汰的组合管线,指令管线化不再使用等候指令完全在管线中退出才执行下一指令的技术。
指令管线化产生了下一作业需要前一作业才可完成的可能性。此类状况又常称为相依冲突。解决的方法是,对此类的情况增加额外的注意,及在相依冲突发生时延迟一部分的指令。自然地,此种解决方法需要额外的循环,是故指令管线化的处理器比低标量处理器还要复杂。(虽然不是很显著)一个指令管线化的处理器的性能可能十分接近标量,只需禁止管线推迟即可。(在一个阶段需要超过一个以上的循环的指令)
简单的上标量管线。借由同时提取和分派两个指令,能够在一个时脉循环中完成最多两个指令。
此外,对于指令管线化的改进启发了减少CPU组件闲置时间的技术。称为 超标量 的设计包括了一条长指令管线化及多个相同的执行单元。上标量管线的分派器同时读取及通过数个指令;分派器决定指令是否能够平行执行(同时执行)并分配到可执行的执行单元。大致上来说,一个上标量的CPU能够同时分派越多的指令给闲置的执行单元,就能够完成越多的指令。
上标量CPU结构的设计中,最困难的部分便是创造一个有效率的分派器。分派器必须能够快速且正确的决定指令是否能够平行执行,并且让闲置的执行单元最小化。其需要指令管线化常时的充满指令流,且提升了在上标量结构中一定数量的CPU高速缓存。其亦催生了危害回避的技术,如分支预测、 投机执行 ( 英语 : speculative execution ) 与跨序执行以维持高层次的性能。借由尝试预测特定的指令选择何分支(路径),CPU能够最小化整个指令管线等待特定的指令完成的次数。投机执行则是借着执行部分的指令以得知其是否在整个作业完成后仍被需要而提供适度的性能提升。跨序执行则是刷新指令执行的命令以降低数据相依。
当不是所有的CPU组件均有上标量性能时,未达上标量的组件性能便会因定序推迟而降低。奔腾的原型有两个每一时脉循环可接收一个指令的上标量算术逻辑单元,但其浮点算术处理器( F loating P oint U nit, FPU)不能在每一时脉循环接收一个指令。因此P5的性能只能算是整数上标量而非浮点上标量。英特尔Pentium结构的下一代P6加入了浮点运算处理器的上标量能力,因此在浮点指令上有显著的性能提升。
此两种简单的管线及上标量设计,均能透过允许单一处理器在一个时钟循环完成一个指令 ,提升指令管线化的性能。多数的近代CPU设计至少都在上标量以上,且几乎所有十年内的泛用CPU均达上标量。近年来,一些重视高指令管线化的计算机将其从CPU的硬体移至软件。超长指令字符(的策略使得一部分的指令管线化成为软件,减少CPU推动指令管线化的工作量,并降低了CPU的设计复杂度。
另一个常用以增加CPU:平行运算性能的策略是让CPU有同时执行多个执行绪(程序)的能力。大致上说来,高同时执行绪平行执行(TLP)CPU比高指令平行执行来的有用。许多由克雷公司(Cray)公司于1970年代及1980年代晚期所首创的同时执行绪平行执行,专于该方法而启发了庞大的计算效力。(就时间上而言)事实上,TLP多线程运算自从1950年就已经开始被运用了 (Smotherman 2005) 。在单处理器设计中,两种主要实现TLP的设计方法是芯片级多处理(CMP)芯片层多线程处理和同步多线程(simultaneous multithreading(SMT))。同级别层多线程处理。在更高级层中,一台计算机中有多个单独的处理器,常常运用对称多处理机(SMP)和non-uniform memory access(NUMA)非独立内存访问的方式来组织。 这些非常不同的方法,全部为了实现同一个目标,就是增加CPU同时处理多个线程的能力。
CMP和SMP这两种方法其实是非常相似的,而且是最直接的方法。这里有一些概念上的东西关于如何实两个或是两个以上完全单独的CPU。在CMP中,多个处理器内核会被放入同一个包中,有时会在非常相近的集成电路中。 另一方面SMP包含多个包在其中,NUMA和SMP很相像,但是NUMA使用非单一的内存访问方式。这些对于一台有着多个CPU的电脑来说是非常重要的,因为每个处理器访问内存的时间会很快的被SMP分享的模块消耗掉,因些会造成很严重的延迟,因为CPU要等待可用的内存.这时NUMA是个不错的选择,它可以允许有多个CPU同时存在一台电脑中而且SMP也可以同时实现.SMT有一些不同之处,就是SMT会尽可能的减少CPU处理能力的分布。TLP的实现实际上和超标量体系结构的实现有些相似,其实上它常常被用在超标量体系结构处理器中,如IBM的POWER5。相比于复制整个CPU,SMT会复制需要的部分来提取指令,加密和分配,就像计算机中的一般的寄存器一样。因此这样会使SMT CPU保持处理单位运作的连续,一些通常会提供给处理单位多个指令而且来自不同的软件线程,这和ILP结构很相似。相比于处理多个指令来自同一个线程,它会同时处理来自不同线程的多个指令。
数据并行
上面提及过的处理器都是一些 常量 仪器 ,而针对向量处理的CPU是较不常见的类型,但它的重要性却越来越高。事实上,在计算机计算上,向量处理是很常见的。顾名思义,向量处理器能在一个命令周期(one instruction)处理多项数据,这有别于只能在一个命令周期内处理单一数据的常量处理器。这两种不同处理数据的方法,普遍分别称为‘单指令,多数据’(SIMD)及‘单指令,单数据’(SISD)。向量处理器最大的优点就是能够在同一个命令周期中对不同的工作进行优化,例如:求一大堆数据的总和及向量的数量积,更典型的例子就是多媒体应用程序(画像、视频、及声音)与及众多不同总类的科学及工程上的工作。当常量处理器只能针对一组数据于单一命令周期内完全执行提取、解码、执行和写回四个阶段的同时,向量处理器已能对较大型的数据如相同时间内执行相同动作。当然,这假设了这个应用程序于单一命令周期内对处理器进行多次要求。
大多数早期的向量处理器,例如Cray-1,大多都只会用于和科研及密码学有关的应用程序。但是,随着多媒体向数位媒体转移,对于能做到‘单指令,多数据’的普通用途处理器需求大增。于是,在浮点计算器普及化不久,拥有‘单指令,多数据’功能的普通用途处理器便面世了。有些早期的‘单指令,多数据’规格,如英特尔的MMX,只能作整数运算。因为大多数要求‘单指令,多数据’的应用程序都要处理浮点数字,所以这个规格对软件开发者无疑是一个主要障碍。幸好,这些早期的设计慢慢地被改进和重新设计为现时普遍的‘单指令,多数据’新规格,AMD公司也推出了第一个真正能执行浮点SIMD指令集3DNow!,在每个时脉周期可得到4个单精确度浮点数结果,是当时一般x87浮点处理器的4倍。新规格通常都于一ISA关连着。近年,一些值得注意的例子一定要数英特尔的SSE和PowerPC相关的AltiVec(亦称为VMX)。
AMDOpteron六核心处理器
多核心
多核心中央处理器是在中央处理器芯片或封装中包含多个处理器核心,以偶数为核心数目较为常见,一般共用二级缓存。现今使用双核心和四核心以上处理器的个人计算机已相当普遍。另也有少数三核心、六核心、八核心、十核心处理器等。
第一颗双核心处理器为IBM POWER4处理器,2012年IBM发布了最新8核心的POWER 7+处理器,拥有80MB L3缓存/芯片。
性能
CPU的性能和速度取决于时钟频率(一般以赫兹或千兆赫兹计算,即hz与Ghz)和每周期可处理的指令(IPC)。 IPS值代表了CPU在几种人工指令序列下“高峰期”的运行率,指示和应用。而现实中CPU组成的混合指令和应用,可能需要比IPS值显示的,用更长的时间来完成。而内存层次结构的性能也大大影响中央处理器的性能。通常工程师便用各种已标准化的测试去测试CPU的性能,已标准化的测试通常被称为“基准”(Benchmarks)。如 SPECint ,此软仵试图模拟现实中的环境。测量各常用的应用程序,试图得出现实中CPU的绩效。
提高计算机的处理性能,亦使用多核心处理器。原理基本上是一个集成电路插入两个以上的个别处理器(意义上称为核心) 。在理想的情况下,双核心处理器性能将是宏内核处理器的两倍。然而,在现实中,因不完善的软件算法,多核心处理器性能增益远远低于理论,增益只有50%左右。但增加核心数量的处理器,依然可增加一台计算机可以处理的工作量。这意味着该处理器可以处理大量的不同步的指令和事件,可分担第一核心不堪重负的工作。有时,第二核心将和相邻核心同时处理相同的任务,以防止崩溃。
实际应用
中央处理器大规模应用在个人计算机上,现今计算机可进入家庭。全因集成电路的发展,令大小、性能以及价位等多个方面均有长足的进步。现今中央处理器价钱平宜,用户可自行组装个人计算机。主板等主要计算机组件,均配合中央处理器设计。不同类型的中央处理器安装到主板上使用不同类型的插槽中(主流的插槽有LGA 1150和Socket AM3+/FM2+。当中英特尔的处理器使用LGA1150以及LGA2011,超微的则使用Socket AM3+及FM2+)。现令中央处理器变得更省电,温度更低。大多数IBM PC兼容机使用x86架构的处理器,他们主要由英特尔和超微两家公司生产,此外威盛电子或者全美达也有参与中央处理器的生产。但与IBM PC兼容机不同,在2006年之前苹果计算机所使用的处理器一直是IBM PowerPC RISC,之后的苹果计算机开始转而采用英特尔的处理器以及系统。可见中央处理器在现代计算机的重要地位。
著名公司
以下公司曾经或正在生产中央处理器;包含已经倒闭、退出市场或被并购的公司。
AMD(超微)
Andes (晶心科技)
ARM(安谋)
Broadcom Limited(博通)
Cirrus Logic(凌云逻辑)
Cyrix(赛瑞克斯)
龙芯(中国科学院)
DEC(迪吉多)
Fairchild(仙童)
Fujitsu(富士通)
Harris(哈瑞斯)
Hewlett Packard(惠普)
Hitachi(日立),见Renesas(瑞萨)
IBM(国际商业机器)
IDT
Intel(英特尔)
Intersil
Maxwell(麦克斯韦)
MHS
Microsystems International
MIPS Technologies(美普思科技)
Mitsubishi(三菱),见Renesas(瑞萨)
MOS Technology
Motorola (摩托罗拉)
NS(国家半导体)
NEC(日本电气),见Renesas(瑞萨)
NexGen
OKI(冲电气)
OPTi
Philips(飞利浦)
RCA(美国无线电)
Renesas(瑞萨)
Rise
Rockwell(洛克威尔)
SGS,见ST(意法半导体)
Sharp
ST(意法半导体)
Siemens(西门子)
Synertek
Sun(昇阳)
Thompson(托马森)
Thomson(汤姆逊半导体),见ST(意法半导体)
TI(德克萨斯仪器)
Toshiba(东芝)
Transmeta(全美达)
UMC(联电)
VIA(威盛)
Western Design Center(西部设计中心)
Western Electric(西部电气)
ZiLOG
注释
^ 虽然EDVAC在ENIAC建造之前几年就已在设计,ENIAC已在1948年改造成能执行储存程序的计算机,此时EDVAC正在建造。虽然建造时因费用与时限的关系而将储存程序功能从ENIAC的蓝图中移除,ENIAC依然早于EDVAC成为第一个储存程序型计算机。
^ 在正常运作时造成的阴极劣化最终将导致真空管停止运作。另外,有时候真空管的封口有缺陷也会加速阴极劣化,请参照真空管。
^ 因为程序计数器记录的是内存地址,而不是指令,所以它的增长取决于指令在内存中所占的单位数。在固定长度指令ISA中,每个指令所占用的内存单位是相同的。例如一个32位的ISA固定长度指令将使用8位内存单位,而且每次将增加4个PC单位。使用变量长度的ISA指令,如x86,它的PC在内存中的增长量取决于最后一个指令的长度。这里要注意的是在更复杂的CPU中,最后一个指令的运行不一定会导至PC单位的增长,特别的是在大量数据传输和超标量体系结构中。
^ 因为CPU指令集的结构是基于它的接口和使用方法,所以它经常用来区别CPU的"种类"。例如一个PowerPCCPU会用到许多不的Power ISA变量。有一些CPU,如英特尔Itanium,可以解译多个ISA指令;不过这项工作大多由软件来完成。多于直接将它在硬件中实现。(参见模拟器)
^ 一些早期的电脑如马克一号并不支持任何"jump"指令,因些而限制了程序的复杂性。这理由很大程度上导致它们不被认为是严格意义上的CPU,尽管它们和存储程序计算机相似。
^ 这里的描述事实上是一个简单的关于经典RISC管线的介绍。它很大程度上没有考虑到CPU缓存的重要性,因而也少了对数据传输访问的介绍。如果想了解更多信息请查阅相关资料。
^ 物理概念上的电压是一种模拟值,实际上可能的值可以有无限多种。为了物理上表达二进制数,我们把特定范围的电压的值定为1或者是0。电压的范围通常是构建CPU的部件的运作参数,例如晶体管的阈值限制,所决定。
^ 当CPU的整数精确度范围被限制的时候,它可以透过软件和硬件技术相互合作的方法来克服。当我们使用额外的内存时,软件可以处理比CPU限制大几个数量级的整数。有时CPU的ISA也会提供相关的指令,帮助软件更快速地处理大整数。虽然这种处理大整数的方法会比使用拥有高整数精确度的CPU要慢一些,对于处理那些需要大精确度整数的应用,它是一种可取的方法,特别是整数精确度的原生支持成本过高的时候。
^ 事实上所有同步运算CPU都运用了时序逻辑电路和组合逻辑电路的结合。(参见布尔逻辑)
^ 运用时钟门控技术的一个最近的设计是基于IBMPowerPC的Xbox 360。它大量利用时钟门控技术来减少在运行视频游戏时所需电量的消耗。 (Brown 2005)
^ 我们要注意的是不管是ILP或TLP都不可以做为对方的上层控制。它们在增强CPU平行处理能力上有着不同的意义。它们有着各自的优缺点,而且取决于CPU可处理软件种类。 High-TLP CPUs经常被用来处理一些可以很自身份解成许多小程序的软件中.因而称它为"embarrassingly parallel problems." 因此high TLP设计方法可以连续快速的处理一些运算问题,比如SMP会使用太多的时间来处理ILP设备(超标量体系结构的CPU),反之亦然。
^ 最佳(或最高)IPC率在超标量体系结构中是很难保持不变的,它可能导致使传输总是失败.因此在高超标量体系CPU中,平均相同IPC的方法的使用,多于最佳(或最高)IPC的使用.
^ 尽管SMP和NUMA都是在系统层中的TLP设计方案,但它们还是需要CPU在设计中的支持.
^ 因TPL的使用比ILP时间更长,所以芯片层多处理技术或多或少的只可以在以后的基于集成电路的微处理器。集成电路多处理技术中看到。导至这种情况的原因是,它不在适和早期的分立组件设备,而且也只被运用了几年(1990-2000),如今注意力都集中在设计高运算能力的CPU,这些CPU都运用了超标量结构的IPC设计方案,如英特尔Pentium 4。尽管如此,以前的技术似乎又被运用到现在CPU设计中来,又换回到稍底层的High -TLP传输中。它表现在增值双核或多核CMP的设计中,如英特尔最新的设计中少了一些超标量体系结构的设计p6,之后的CPU多运用了CMP,包括x86-64、Opteron和Athlon 64 x2,还有Sparc UltraSparc T1,IBMPower4和Power5。还有一些其它的视频游戏机的CPU,如x360中的三核PowerPC设计。
^ 早期 scalar 被用来比较不同ILP方案的IPC(instructions per cycle)的间隔数量。在这里它表示数学中用来比较向量大小的的一个概念。
^ 虽然在英特尔的主流CPU中,MMX已经被SSE/SSE2/SSE3所取代,但在之后的CPU中仍然支持MMX技术,通常使用拥有丰富的SSE指令集的相同的硬件来提供大部分的MMX功能。
参考文献
书目
ab Amdahl, G. M., Blaauw, G. A., & Brooks, F. P. Jr.Architecture of the IBM System/360 (PDF) . IBM Research. 1964.
a Brown, Jeffery.Application-customized CPU design. IBM developerWorks. 2005 [ 2005-12-17 ] .
a Digital Equipment Corporation. LSI-11 Module Descriptions.LSI-11, PDP-11/03 user"s manual (PDF) 2nd edition. Maynard, Massachusetts: Digital Equipment Corporation. November 1975: 4–3. 引文格式1维护:冗余文本 (link)
a Garside, J. D., Furber, S. B., & Chung, S-H.AMULET3 Revealed.University of ManchesterComputer Science Department. 1999. (原始内容存档于2005-12-10).
Hennessy, John A.; Goldberg, David. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers. 1996. ISBN 978-1-55860-329-5.
a MIPS Technologies, Inc.MIPS32® Architecture For Programmers Volume II: The MIPS32® Instruction Set.MIPS Technologies, Inc. 2005.
aSmotherman, Mark.History of Multithreading. 2005 [ 2005-12-19 ] .
a von Neumann, John.First Draft of a Report on the EDVAC (PDF) . Moore School of Electrical Engineering,University of Pennsylvania. 1945.
ab Weik, Martin H.A Third Survey of Domestic Electronic Digital Computing Systems. Ballistic Research Laboratories. 1961.
Advanced Micro Devices-AMD,其中一个生产兼容x86计算机的CPU生产商
ARM Ltd-安谋国际科技,少数只授权其CPU设计而没有自行制造的公司。嵌入式应用软件最常被ARM架构微处理器执行。
Freescale Semiconductor-(前身是Motorola的)飞思卡尔,设计数款嵌入装置以及SoCPowerPC处理器。
IBM Microelectronics-IBM的微电子分公司,设计出许多IBMPOWER与PowerPC,包括许多游戏机的CPU。
Intel Corp-英特尔,许多著名CPU的生产者,包括IA-32、IA-64与XScale。也是许多用在他们自家CPU的周边产品的制造者。
MIPS Technologies-MIPS科技公司,MIPS架构的制造者,在RISC设计领域的先锋。
Sun Microsystems- 升阳,SPARC架构(RISC)的制造者。
Texas Instruments-德州仪器,半导体公司,许多以他们自产半导体组成的低耗电微控制器的设计与生产者。
Transmeta-全美达,低电力X86兼容CPU的创造者,例如Crusoe与Efficeon。
VIA-威盛,低功率X86兼容CPU的制造商,例如C3。
参见
Intel 80486DX-33中央处理器。
微处理机、微控制器、单片机
CPU锁频、倍频器
指令集(CISC、RISC)
MMX、EMMI、3DNow!、SSE、SSE2、SSE3
真实模式、保护模式、虚拟86模式
Pentium OverDrive
总线(BUS)、前端总线(FSB)
浮点运算器(FPU)
电气工程学
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
相关资料
- 有价值
- 一般般
- 没价值