分享

计算机的心脏,cpu是如何工作的

 卩魂殇 2016-11-18

中央处理器(英语:Central Processing Unit,缩写:CPU),是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。中央处理器、内部存储器和输入/输出设备是现代电脑的三大核心部件。1970年代以前,中央处理器由多个独立单元构成,后来发展出由集成电路制造的中央处理器,这些高度收缩的组件就是所谓的微处理器,其中分出的的中央处理器最为复杂的电路可以做成单一微小功能强大的单元。

中央处理器广义上指一系列可以执行复杂的计算机程序的逻辑机器。这个空泛的定义很容易地将在“CPU”这个名称被普遍使用之前的早期计算机也包括在内。无论如何,至少从1960年代早期开始(Weik 1961),这个名称及其缩写已开始在电子计算机产业中得到广泛应用。尽管与早期相比,“中央处理器”在物理形态、设计制造和具体任务的执行上有了极大的发展,但是其基本的操作原理一直没有改变。

早期的中央处理器通常是为大型及特定应用的计算机而定制。但是,这种昂贵的为特定应用定制CPU的方法很大程度上已经让位于开发便宜、标准化、适用于一个或多个目的的处理器类。这个标准化趋势始于由单个晶体管组成的大型机和微机年代,随着集成电路的出现而加速。IC使得更为复杂的中央处理器可以在很小的空间中设计和制造(在微米的数量级)。中央处理器的标准化和小型化都使得这一类数字设备和电子零件在现代生活中的出现频率远远超过有限应用专用的计算机。现代微处理器出现在包括从汽车到手机到儿童玩具在内的各种物品中。

在现今的CPU出现之前,如同ENIAC之类的计算机在执行不同程序时,必须经过一番线路调整才能启动。由于它们的线路必须被重设才能执行不同的程序,这些机器通常称为“固定程序计算机”(fixed-program computer)。而由于CPU这个词指称为执行软件(计算机程序)的装置,那些最早与储存程序型计算机一同登场的装置也可以被称为CPU。

储存程序型计算机的主意早已体现在ENIAC的设计上,但最终还是被省略以期早日完成。在1945年6月30日,ENIAC完成之前,著名数学家冯·诺伊曼发表名为'关于EDVAC的报告草案'的论文。它揭述储存程序型计算机的计划将在1949年正式完成(冯·诺伊曼1945)。EDVAC的目标是执行一定数量与种类的指令(或操作),这些指令结合产生出可以让EDVAC执行的有用程序。特别的是,为EDVAC而写的程序是储存在高速计算机内存中,而非由实体线路组合而成。这项设计克服了ENIAC的某些局限——即花费大量时间与精力重设线路以执行新程序。在冯·诺伊曼的设计下,EDVAC可以借由改变内存储存的内容,简单更换它执行的程序(软件)。[a]

值得注意的是,尽管冯·诺伊曼由于设计了EDVAC,使得他在发展储存程序型计算机上的贡献最为显著,但其他早于他的研究员如康拉德·楚泽(Konard Zuse)也提出过类似的想法。另外早于EDVAC完成,利用哈佛架构制造的马克一号,也利用打孔纸带而非电子内存用作储存程序的概念。冯·诺伊曼架构与哈佛架构最主要的不同在于后者将CPU指令与资料分开存放与处置,而前者使用相同的内存位置。大多近代的CPU依照冯·诺伊曼架构设计,但哈佛架构一样常见。

身为数位装置,所有CPU处理不连续状态,因此需要一些转换与区分这些状态的基础组件。在市场接受晶体管前,继电器与真空管常用在这些用途上。虽然这些材料速度上远优于纯粹的机械构造,但是它们有许多不可靠的地方。例如以继电器建造直流时序逻辑回路需要额外的硬件以应付接触点跳动问题。而真空管不会有接触点跳动问题,但它们必须在启用前预热,也必须同时停止运作。[b]通常当一根真空管坏了,CPU必须找出损坏组件以置换新管。因此早期的电子真空管式计算机快于电子继电器式计算机,但维修不便。类似EDVAC的真空管计算机每隔八小时便会损坏一次,而较慢较早期的马克一号却不太发生故障(Weik 1961:238)。但在最后,由于速度优势,真空管计算机主宰了当时的计算机世界,尽管它们需要较多的维护照顾。大多早期的同步CPU,其时钟频率低于近代的微电子设计(见下列对于时钟频率的讨论)。那时常见的时钟频率为100千赫兹到4百万赫兹,大大受限于内建切换装置的速度。

分立晶体管与集成电路中央处理器

由于许多科技厂家投入更小更可靠的电子装置,设计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架构由于太过成功,因此主宰了大型计算机数十年之久,并留下一系列使用相似架构,名为IBMzSeries的现代主机产品。同一年(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根据指令式长度增加内存单元[iwordlength]。指令的提取常常必须从相对较慢的内存查找,导致CPU等候指令的送入。这个问题主要被论及在现代处理器的高速缓存和管线化架构(见下)。

CPU根据从内存提取到的指令来决定其执行行为。在解码阶段,指令被拆解为有意义的片断。根据CPU的指令集架构(ISA)定义将数值解译为指令[isa]。一部分的指令数值为运算码,其指示要进行哪些运算。其它的数值通常供给指令必要的信息,诸如一个加法运算的运算目标。这样的运算目标也许提供一个常数值(即立即值),或是一个空间的定址值:寄存器或内存地址,以定址模式决定。在旧的设计中,CPU里的指令解码部分是无法改变的硬体装置。不过在众多抽象且复杂的CPU和ISA中,一个微程序时常用来帮助转换指令为各种形态的讯号。这些微程序在已成品的CPU中往往可以重写,方便变更解码指令。

在提取和解码阶段之后,接着进入执行阶段。该阶段中,连接到各种能够进行所需运算的CPU部件。例如,要求一个加法运算,算术逻辑单元将会连接到一组输入和一组输出。输入提供了要相加的数值,而且在输出将含有总和结果。ALU内含电路系统,以于输出端完成简单的普通运算和逻辑运算(比如加法和比特运算)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志寄存器里,溢出标志可能会被设置(参见以下的数值精度探讨)。

最终阶段,写回,以一定格式将执行阶段的结果简单的写回。运算结果经常被写进CPU内部的寄存器,以供随后指令快速访问。在其它案例中,运算结果可能写进速度较慢,如容量较大且较便宜的主存。某些类型的指令会操作程序计数器,而不直接产生结果数据。这些一般称作“跳转”并在程序中带来循环行为、条件性执行(透过条件跳转)和函数[jumps]。许多指令也会改变标志寄存器的状态比特。这些标志可用来影响程序行为,缘由于它们时常显出各种运算结果。例如,以一个“比较”指令判断两个值的大小,根据比较结果在标志寄存器上设置一个数值。这个标志可借由随后的跳转指令来决定程序动向。

在执行指令并写回结果数据之后,程序计数器的值会递增,反复整个过程,下一个指令周期正常的提取下一个顺序指令。如果完成的是跳转指令,程序计数器将会修改成跳转到的指令地址,且程序继续正常执行。许多复杂的CPU可以一次提取多个指令、解码,并且同时执行。这个部分一般涉及“经典RISC管线”,那些实际上是在众多使用简单CPU的电子装置中快速普及(常称为微控制器)[riscpipeline]。

中央处理器大规模应用在个人计算机上,现今计算机可进入家庭。全因集成电路的发展,令大小、性能以及价位等多个方面均有长足的进步。现今中央处理器价钱平宜,用户可自行组装个人计算机。主板等主要计算机组件,均配合中央处理器设计。不同类型的中央处理器安装到主板上使用不同类型的插槽中(主流的插槽有LGA 1150和Socket AM3+/FM2+。当中英特尔的处理器使用LGA1150以及LGA2011,超微的则使用Socket AM3+及FM2+)。现令中央处理器变得更省电,温度更低。大多数IBM PC兼容机使用x86架构的处理器,他们主要由英特尔和超微两家公司生产,此外威盛电子或者全美达也有参与中央处理器的生产。但与IBM PC兼容机不同,在2006年之前苹果计算机所使用的处理器一直是IBM PowerPC RISC,之后的苹果计算机开始转而采用英特尔的处理器以及系统。可见中央处理器在现代计算机的重要地位。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多