The Wayback Machine - https://web.archive.org/web/20221029033754/https://baike.sogou.com/kexue/d10390.htm

计算机架构

编辑
MIPS架构的流水线实现。流水线是计算机架构中的一个关键概念。

在计算机工程中,计算机架构是描述计算机系统的功能、组织和实现的一组规则和方法。架构的一些定义将其定义为描述计算机的能力和编程模型,而不是特定的实现[1]。 在其他定义中,计算机架构包括指令集架构设计、微架构设计、逻辑设计及三者的实现[2]

1 历史编辑

第一个记录在案的计算机架构出现在查尔斯·巴贝奇和阿达·洛芙莱斯之间的通信,信中描述了分析引擎。1936年制造计算机Z1时,康拉德·楚泽在两个专利申请中描述他未来的课题,机器指令可以存储在用于存储数据的同一存储器中,即程序存储概念[3][4] 。另外两个早期的重要例子是:

  • 约翰·冯·诺依曼1945年的论文《关于离散变量自动电子计算机的报告草案》,描述了逻辑要素的组织[5]; 而且
  • 艾伦·图灵更详细的《自动计算引擎电子计算器提案》,也是发表于1945年,并且引用了约翰·冯·诺依曼的论文[6]

计算机文献中的“架构”一词可以追溯到1959年的莱尔·R·约翰逊和小佛瑞德·P·布鲁克斯的工作中,他们是IBM主要研究中心机器组织部门的成员。约翰逊有机会写了一篇关于Stretch的专门研究通讯,Stretch是IBM为洛斯阿拉莫斯国家实验室(当时被称为洛斯阿拉莫斯科学实验室)开发的超级计算机。为了描述对奢华装饰的计算机的讨论的详细程度,他指出他对格式、指令类型、硬件参数和加速的描述是在“系统架构”层面上的—这个术语似乎比“机器组织”更常用[7]

随后,Stretch的一位设计师布鲁克斯开始编写一本书(计算机系统规划: Stretch项目,w•布赫霍尔茨,1962著)的第二章,[8]

与其他架构一样,计算机架构是一门艺术,它决定了用户需求的结构,然后在经济和技术的限制下尽可能有效地满足这些需求。

布鲁克斯继续帮助开发了IBM System/360(现在称为IBM zSeries)系列计算机,其中“架构”成为定义“用户需要知道什么”的名词[9]。 后来,计算机用户开始以许多不太明确的方式使用这个术语[10]

最早的计算机架构是在纸上设计的,然后直接嵌入到最终的硬件形式[11]。后来,计算机架构原型以晶体管-晶体管逻辑(TTL)计算机的形式物理构建,在交付最终硬件表单之前进行了测试和调整,如6800和PA-RISC的原型。从20世纪90年代开始,新的计算机体系结构通常在计算机体系结构模拟器中的其他一些计算机体系结构中进行“构建”、测试和调整;或者在提交到最终硬件形式之前,在FPGA中作为软微处理器进行构建、测试和调整[12]

2 子类别编辑

计算机架构学科有三个主要子类:[13]

  1. 1.     指令集架构(ISA)。ISA定义了处理器读取和操作的机器代码,以及字长、内存地址模式、处理器寄存器和数据类型。
  2. 微体系结构或计算机组织描述了特定处理器将如何实现ISA[14]。例如,计算机的CPU高速缓存的大小是通常一个与ISA无关的问题。
  3. 系统设计包括计算系统中的所有其他硬件组件。其中包括:
    1. 除CPU之外的数据处理,如直接存储器访问(DMA)
    2. 其他问题,如虚拟化、多进程和软件功能。

还有其他类型的计算机架构。以下类型用于像英特尔这样的大公司,占所有计算机架构的1%

  • 宏观架构:比微观架构更抽象的架构层
  • 汇编指令集架构(ISA):智能汇编程序可以将一组机器通用的抽象汇编语言转换成略有不同的机器语言,用于不同的实现
  • 程序员可见的宏观架构:编译器等高级语言工具可以为使用它们的程序员定义一致的接口或契约,将底层ISA、UISA和微架构之间的差异抽象出来。例如,C、C++或Java标准定义了不同的程序员可见的宏观架构。
  • UISA(微码指令集架构)——一组具有不同硬件级微架构的机器可以共享一个通用微码架构,因此共享一个微码指令集架构。
  • 引脚架构:微处理器应提供给硬件平台的硬件功能,例如x86引脚A20M、FERR/IGRNE或FLUSH。此外,处理器发出的消息,可以使外部缓存无效(清空)。引脚架构功能比指令集架构功能更灵活,因为外部硬件可以适应新的编码,或者将引脚转化为信息。术语“架构”是合适的,因为即使详细的方法改变了,兼容的系统也必须提供相应的功能。

3 角色编辑

3.1 定义

目的是设计一台计算机,它在控制功耗的同时最大限度地提高性能,相对于预期性能而言成本较低,并且非常可靠。为此,需要考虑许多方面,包括指令集设计、功能组织、逻辑设计和实现。实施包括集成电路设计、封装、电源和冷却。设计的优化需要熟悉编译器、操作系统到逻辑设计的过程和打包操作[15]

3.2 指令集架构

指令集架构(ISA)是计算机软件和硬件之间的接口,也可以被看作是程序员对机器的视图。计算机不理解高级编程语言,如Java、C++或大多数常用的编程语言。处理器只能理解以数字方式编码的指令,通常是二进制数。编译器等软件工具将这些高级语言翻译成处理器能够理解的指令。

除了指令之外,指令集架构还定义了计算机中可供程序使用的条目,例如数据类型、寄存器、寻址模式和存储器。指令通过寄存器索引(或名称)和内存寻址模式定位这些可用条目。

计算机的ISA通常在一个小的说明手册中描述,它描述了指令是如何编码的。此外,它还可以为指令定义简短(模糊)的助记名称。这些名字可以被称为汇编程序的软件开发工具识别。汇编程序是一种计算机程序,它将人工可读形式的ISA翻译成计算机可读的形式。反汇编程序也很普遍,通常是在调试器和软件程序中,用来隔离和纠正二进制计算机程序中的错误。

ISA在质量和完整性方面各不相同。一个好的ISA在程序员的便利性(代码的可读性)、代码的长度(执行一个特定操作需要多少代码)、计算机解释指令的成本(更高的复杂性意味着解码和执行指令需要更多硬件)和计算机的速度(解码硬件越复杂,解码时间就越长)之间做出了折衷。内存组织定义了指令如何与内存交互,以及内存如何与自身交互。

在设计过程中,仿真软件(仿真器)可以运行以建议的指令集编写的程序。现代仿真器可以测量尺寸、成本和速度,以确定特定的ISA是否满足其目标。

3.3 计算机组织

计算机组织有助于优化基于性能的产品。例如,软件工程师需要知道处理器的处理能力。他们可能需要优化软件,以便以最低的价格获得最高的性能。这可能需要对计算机的组织进行相当详细的分析。例如,在SD卡中,设计者可能需要安排卡片,以便尽可能以最快的速度处理最多的数据。

计算机组织也有助于为特定项目规划处理器的选择。多媒体项目可能需要非常快速的数据访问,而虚拟机可能需要快速中断。有时某些任务也需要额外的组件。例如,能够运行虚拟机的计算机需要虚拟内存硬件,以便不同虚拟计算机的内存可以保持分离。计算机组织和功能也会影响功耗和处理器成本。

3.4 实现

一旦设计了指令集和微架构,就必须开发出实用的机器。这个设计过程称为实现。实现通常不被认为是架构设计,而是硬件工程设计。实现可以进一步分为几个步骤:

  • 逻辑实现设计逻辑门级所需的电路
  • 电路实现对基本元件(门、多路复用器、锁存器等)进行晶体管级设计和一些较大的可以在日志门级别实现,或者如果设计需要,甚至可以在物理级别实现的块(算术逻辑单元、高速缓存等)。
  • 物理实现绘制物理电路。不同的电路元件被放置在芯片平面图或板上,并且创建连接它们的导线。
  • 设计验证测试计算机,以查看它是否作为一个整体在所有情况下和所有时间都可以工作。一旦设计验证过程开始,就使用逻辑仿真器测试逻辑级的设计。然而,这个过程通常太慢,以至于无法运行实际的测试。因此,在基于第一次测试进行校正之后,使用现场可编程逻辑门阵列(FPGAs)构建原型。大多数业余项目都在这个阶段停止。最后一步是测试集成电路原型。集成电路可能需要几次重新设计来解决问题。

对于CPU来说,整个实现过程组织方式不同,通常被称为CPU设计。

4 设计目标编辑

计算机系统的确切形式取决于约束和目标。计算机架构通常权衡标准、功耗与性能、成本、内存容量、延迟(延迟是信息从一个节点传输到源节点所需的时间)和吞吐量。有时其他考虑因素,如特征、尺寸、重量、可靠性和可扩展性也是要素。

最常见的方案是进行深入的功耗分析,并解决如何在保持足够性能的同时保持低功耗。

4.1 性能

现代计算机的性能通常用IPC(每个周期的指令)来描述。IPC衡量架构在任何时钟频率下的效率。因为更快的速度可以产生更快的计算机,所以这是一个有用的测量方法。较旧计算机的IPC计数低至每个周期0.1条指令。简单的现代处理器可以轻松达到1IPC。超标量处理器可以通过每个时钟周期执行几条指令来达到三到五个IPC。

计数机器语言指令会产生误导,因为它们在不同的ISA中可以做不同的工作量。标准测量中的“指令”不是对ISA的实际机器语言指令的计数,而是一种通常基于VAX的计算机架构速度的测量单位。

许多人过去用时钟频率(通常以MHz或GHz为单位)来测量计算机的速度。这是指每秒CPU主时钟的周期数量。然而,这个指标有些误导,因为时钟速率较高的机器不一定具有更好的性能。因此,制造商已经不再将时钟速度作为衡量性能的标准。

其他影响速度的因素,例如功能单元的混合、总线速度、可用内存以及程序中指令的类型和顺序。

速度有两种主要类型:延迟和吞吐量。延迟是指从过程开始到完成之间的时间。吞吐量是单位时间内完成的工作量。中断延迟是系统对电子事件保证的最大响应时间(如磁盘驱动器完成某些数据的移动)。

性能受到非常繁多的设计选择的影响,例如,流水线操作处理器通常会使延迟更差,但会提高吞吐量。控制机器的计算机通常需要低中断延迟。这些计算机在实时环境中运行,如果操作没有在指定的时间内完成,就会失败。例如,计算机控制的防抱死制动器必须在检测到制动踏板后的可预测的短时间内开始制动,否则就会发生制动故障。

基准测试通过测量计算机运行一系列测试程序所花费的时间来考虑所有这些因素。虽然基准测试显示了优势,但它不应该是你选择计算机的方式。通常被测量的机器根据不同的测试标准分开。例如,一个系统可以快速处理科学应用,而另一个系统可以更流畅地呈现游戏视频。此外,设计者可以通过硬件或软件将特定功能定位并添加到他们的产品中,这些功能允许特定的基准测试快速执行,但不会为一般任务提供类似的有利条件。

4.2 功效

功效是现代计算机的另一个重要衡量标准。更高的功率效率通常可以通过更低的速度或更高的成本来换取。在计算机架构中,当提到功耗时,典型的度量单位是MIPS/W(每秒百万条指令每瓦)。

随着每个芯片中晶体管数量的增加,现代电路中每个晶体管所需的功率越来越低[16]。这是因为每一个放入新芯片的晶体管都需要自己的电源,并需要建造新的通路为其供电。然而,每个芯片的晶体管数量开始以较慢的速度增加。因此,功率效率开始变得与将越来越多的晶体管安装到单个芯片中同等重要甚至更加重要。最近的处理器设计显示了这一重点,因为它们更加注重功率效率,而不是将尽可能多的晶体管塞进一个芯片[17]。在嵌入式计算机领域,提高功效一直是仅次于提高吞吐量和降低延迟的重要目标。

4.3 市场需求的变化

过去几年来,时钟频率的增加速度比功耗降低的改善速度更加缓慢。摩尔定律的终结以及对更长电池寿命和移动技术尺寸缩减的需求推动了这一趋势。从更高的时钟速率到功耗和小型化的重点变化可以通过英特尔在发布Haswell微架构中报告的功耗显著降低(高达50%)来显示;他们将功耗基准从30-40瓦降至10-20瓦[18]。 与3GHz至4GHz(2002年至2006年)[19] 的处理速度增长相比,可以看出,研发的重点正在从时钟频率转移到消耗更少的功率和占用更少的空间。

参考文献

  • [1]

    ^Clements, Alan. Principles of Computer Hardware (Fourth ed.). p. 1. Architecture describes the internal organization of a computer in an abstract way; that is, it defines the capabilities of the computer and its programming model. You can have two computers that have been constructed in different ways with different technologies but with the same architecture..

  • [2]

    ^Hennessy, John; Patterson, David. Computer Architecture: A Quantitative Approach (Fifth ed.). p. 11. This task has many aspects, including instruction set design, functional organization, logic design,and implementation..

  • [3]

    ^"Electronic Digital Computers", Nature, 162: 487, 25 September 1948, doi:10.1038/162487a0, retrieved 2009-04-10.

  • [4]

    ^Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000.

  • [5]

    ^Neumann, John (1945). First Draft of a Report on the EDVAC. p. 9..

  • [6]

    ^Reproduced in B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, pp. 369-454..

  • [7]

    ^Johnson, Lyle (1960). "A Description of Stretch" (PDF). p. 1. Retrieved 7 October 2017..

  • [8]

    ^Buchholz, Werner (1962). Planning a Computer System. p. 5..

  • [9]

    ^"System 360, From Computers to Computer Systems". IBM100. Retrieved 11 May 2017..

  • [10]

    ^Hellige, Hans Dieter (2004). "Die Genese von Wissenschaftskonzeptionen der Computerarchitektur: Vom "system of organs" zum Schichtmodell des Designraums". Geschichten der Informatik: Visionen, Paradigmen, Leitmotive. pp. 411–472..

  • [11]

    ^ACE underwent seven paper designs in one year, before a prototype was initiated in 1948. [B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, p. 57].

  • [12]

    ^Schmalz. "Organization of Computer Systems". UF CISE. Retrieved 11 May 2017..

  • [13]

    ^John L. Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach (Third ed.). Morgan Kaufmann Publishers..

  • [14]

    ^Laplante, Phillip A. (2001). Dictionary of Computer Science, Engineering, and Technology. CRC Press. pp. 94–95. ISBN 0-8493-2691-5..

  • [15]

    ^Martin, Milo. "What is computer architecture?" (PDF). UPENN. Retrieved 11 May 2017..

  • [16]

    ^"Integrated circuits and fabrication" (PDF). Retrieved 8 May 2017..

  • [17]

    ^"Exynos 9 Series (8895)". Samsung. Retrieved 8 May 2017..

  • [18]

    ^"Measuring Processor Power TDP vs ACP" (PDF). Intel. April 2011. Retrieved 5 May 2017..

  • [19]

    ^"History of Processor Performance" (PDF). cs.columbia.edu. 24 April 2012. Retrieved 5 May 2017..

阅读 143
版本记录
  • 暂无