计算机的实现包括两个方面:组成和硬件。组成一词包含了计算机设计的高阶内容,例如存储器系统,存储器互连,设计内部处理器 CPU (中央处理器——算术、逻辑、分支和数据传送功能都在内部实现)。有时也用微体系结构一词来代替“组成”。例如AMD Operon和Intel Core I7是两个指令集体系结构相同但组成不同的处理器。这两种处理器都实现X86指令集,但它们的流水线和缓存组成有很大的不同。硬件指的是一个计算机的具体实现,包括计算机的详尽逻辑设计和封装技术。
- 计算机体系结构是指计算机的概念性结构和功能属性。
- 计算机组织是指计算机体系结构的逻辑实现,包括机器内的数据流和控制流的组成以及逻辑设计等(常称为计算机组成原理)。
- 计算机实现是指计算机组织的物理实现。
一、定义
真正的体系结构涵盖了计算机设计的所有三个方面:指令集体系结构、组成或微体系结构、硬件。计算机架构师设计的计算机必须满足功能需求,并达到价格、功耗、性能和可用性指标。在涉及到计算机系统结构的知识时,主要按以下金字塔进行学习:
Acceleration,Amdahl
- 整个计算机系统结构的总设计目标是为了“快”
- 总的设计原理是:加快经常性事件
- 如何量化加速这一指标:Amdahl 原理
- 如何衡量CPU性能:CPU性能公式
- 程序的局部性原理
Instruction,Interface
指令集架构(Instruction Set Architecture, ISA),对于汇编语言程序员或编译器编写者可见。ISA包括:1)编程寄存器 2)操作数访问 3)操作数的类型和大小 4)指令集 5)寻址模式 6)指令编码
ISA 是硬件与软件之间的连接点。任何在内存里执行的程序都将通过 ISA 进行解耦从而能在底层架构上执行。整个计算机体系机构和抽象层如下:
Processing,Parallel
按指令流与数据流进行分类则可以把结构分为:
- SISD:单指令流、单数据流;
- SIMD:单指令流、多数据流;
- MISD:多指令流、单数据流;
- MIMD:多指令流、多数据流;
Storage,System
程序局部性原理的存在,以及“在给定实现技术和功率预算的情况下,硬件越小,速度可以越快”的准则,存储器体系结构便运营而生。
时间局部性(temporal locality):被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。
空间局部性(spatial locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。
有人可能会问,为什么需要多层次的存储结构,使用一个理论上无限大的存储器去完成一些工作不就可以了么?这样表面上是可以的,但是我们没有办法立刻马上从这样一个十分庞大的存储器中得到我们想要的机器字。我们不得不去构建分层的结构存储器,每一层的容量都要大于前一层,但访问速度也要慢一些。当前的一大趋势:存储器性能和处理器性能之间的差距越来越大。
Network,conNection
通过互联函数来描述设备间的互相连接,既包括计算机内部的连接,也包括计算机之间的连接。主要通过带宽和延迟两个指标进行衡量。
二、基本结构
冯·诺依曼在研究EDVAC机时提出了“存储程序”的概念,“存储程序”的思想奠定了现代计算机的基本结构,以此概念为基础的各类计算机通称为冯·诺依曼机,其特点如下:
- 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成。
- 指令和数据以同等地位存储在存储器中,并可按地址寻访。
- 指令和数据均用二进制代码表示。
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存
- 储器中的位置。
- 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序。
- 早期的冯·诺依曼机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。
典型的冯·诺依曼计算机结构如图所示。
面随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量I/O设备的速度和CPU的速度筹距悬殊,因此以运算器为中心的结构不能够满足计算机发展的要求。现代计算机已发展为以存储器为中心,使I/O操作尽可能地绕过CPU,直接在I/O设备和存储器之间完成,以提高系统的整体运行效率,其结构如图所示。
三、性能指标
1、Amdahl定律
对一个计算机架构进行优化后,我们如何衡量其性能的提升呢?首先定义加速比:对于同一个程序的执行,其加速比为:
而Amdahl定律为:
其中,代表系统加速比,表示改进部分的加速比,表示被改进部分原来的执行时间占原来总执行时间的百分比。
当趋近于0时,趋近于1。说明如果仅对计算机的一部分做出改变,那么对整体性能的提升非常有限。
为了使系统获得较高的加速比,优化的部分必须占有较大的比例。
2、CPU性能公式
执行一个程序所需要的CPU时间为:执行程序所需要的时钟周期*时钟周期时间。
我们定义CPI(Cycles Per Instruction)为平均每条指令耗费的时钟周期数。则CPU时间可表示为:
其中,IC为执行的指令条数,T为时钟周期时间。
基于此公式,提升处理器性能的三个思路为:1)减少IC,即较少执行指令的条数,如RISC;2)减少CPI,如CISC;3)较少时钟周期时间,如提升主频。
3、性能指标
4、可靠性
我们用MTTF这一指标来衡量可靠性。
可用性定义为: