第9章 计算机体系结构
9.1 什么是计算机体系结构
计算机系统结构(Computer Architecture)也称为计算机体系结构,它是由计算机结构外特性,内特性,微外特性组成的。经典的计算机系统结构的定义是指计算机系统多级层次结构中机器语言机器级的结构,它是软件和硬件/固件的主要交界面,是由机器语言程序、汇编语言源程序和高级语言源程序翻译生成的机器语言目标程序能在机器上正确运行所应具有的界面结构和功能。 [1]
计算机系统结构指的是什么? 是一台计算机的外表? 还是是指一台计算机内部的一块块板卡安放结构? 都不是,那么它是什么? 计算机系统结构就是计算机的机器语言程序员或编译程序编写者所看到的外特性。所谓外特性,就是计算机的概念性结构和功能特性。用一个不恰当的比喻一,比如动物吧,它的"系统结构"是指什么呢? 它的概念性结构和功能特性,就相当于动物的器官组成及其功能特性,如鸡有胃,胃可以消化食物。至于鸡的胃是什么形状的、鸡的胃部由什么组成就不是"系统结构"研究的问题了。
冯·诺依曼计算机的主要特点是:存储程序方式;指令串行执行,并由控制器加以集中控制;单元定长的一维线性空间的存储器;使用低级机器语言,数据以二进制表示;单处理机结构,以运算器为中心。 [2]
改进后的冯·诺依曼计算机使其从原来的以运算器为中心演变为以存储器为中心。从系统结构上讲,主要是通过各种并行处理手段提高计算机系统性能。
9.2 计算机体系结构分类
按"流"分类的方法,这是Flynn教授提出的按指令流和数据流的多倍性概念进行分类的方法。
共有四大类,即:(S-single 单一的 I-instruction 指令 M-multiple 多倍的 D-data 数据)
SISD 单指令流单数据流,传统的单处理机属于SISD计算机。
SIMD 单指令流多数据流,并行处理机是SIMD计算机的典型代表。中国的YH-I型是此类计算机型。
MISD 多指令流单数据流,实际上不存在,但也有学者认为存在。
MIMD 多指令流多数据流,包括了大多数多处理机及多计算机系统。中国的YH-Ⅱ型计算机是这种类型的计算机。
一般将标量流水机视为SISD类型,把向量流水机视为SIMD类型。
按"并行级"和"流水线"分类:这是在计算机系统中的三个子系统级别上按并行程度及流水线处理程度进行分类的方法。
![](https://i-blog.csdnimg.cn/blog_migrate/814c0fbfc310ea8e49945be0166bf1dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f24b0bc2ca485d1208be86c93f96aa6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/44926fba2abf3bc8b4282cc9fdaff4a2.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c965881c0c0d5a08f0696917e4dc5b97.jpeg)
SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
多指令流多数据流MIMD是用于实现并行性的技术。MIMD计算机具有多个异步和独立工作的处理器。在任何时钟周期内,不同的处理器可以在不同的数据片段上执行不同的指令,也即是同时执行多个指令流,而这些指令流分别对不同数据流进行操作。MIMD架构可以用于诸如计算机辅助设计、计算机辅助制造、仿真、建模、通信交换机的多个应用领域。 MIMD机器可以是共享存储器或分布式存储器类别。共享存储器机器包括UMA、NUMA、COMA等。分布式存储器机器包括NORAM等。
单指令多数据(SIMD)意味着所有并行单元共享相同的指令,但它们计算不同的数据。例如,执行数组[1,2,3,4]加上[5,6,7,8],得到一个数组[6,8,10,12]。此时共有4个算术单元在工作,但它们都可以共享相同的指令(此处为“加法”),并且所有相同的操作都是同步执行的。下图是表明SIMD的图片:
![](https://i-blog.csdnimg.cn/blog_migrate/4fa4f602451bc7bca6d76fcb464e43de.png)
SIMD 用于需要大量计算且所有处理器执行相同工作的情况。由于 SIMD 设计简单,成本更低,速度更快。由于是同步的,SIMD 架构中的编程相对容易。
SIMD 仅限于少数应用,在我们没有相同且独立的任务的情况下使用 MIMD 架构。多指令多数据(MIMD)意味着每个并行单元具有独立的指令,因此每个单元都可以在任何时间执行不同的操作;一个执行加法,另一个可能执行乘法,另一个可能执行分支等等。这时可以让程序将函数调用分发给不同的处理器上执行,这些核心都是独立的,无论它们是在同一芯片上(多核)、不同的芯片上(多处理器),还是两者的混合。下图是表明MIMD的图片:
![](https://i-blog.csdnimg.cn/blog_migrate/345782cb556dcb56d34e4c36cdb25440.png)
MIMD 操作可能同步也可能不同步。
由于设计的复杂性,MIMD 处理器往往很昂贵,可以比SIMD解决更复杂的问题。
9.3 指令集
指令系统有如下两个截然不同的发展方向:
1.增强原有指令的功能,设置更加复杂的新指令实现软件功能的硬化,称为CISC(x86架构);
2.减少指令种类和简化指令功能,提高指令的运行速度,称为RISC(ARM架构、MIP架构);
1.复杂指令系统计算机(CISC)
随着VLSI技术的发展,硬件成本下降,软件成本上升,促使人们在指令系统中增加更多、更复杂的指令。
主要特点:
指令系统庞大复杂,指令数目在20条以上。
指令的长度不固定,指令格式多,寻址方式多。
可以访存的指令不受限制。
各种指令执行时间相差很大,大部分指令需要多个时钟时期才能完成。
控制器大多采用微程序控制,有些指令非常复杂,以至于无法采用硬连线控制。
难以用优化编译生成高效的目标代码程序。
2.精简指令系统计算机(RISC)
中心思想:要求指令系统简化,尽量采用寄存器-寄存器操作指令,指令格式力求一致。
主要特点:
选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
指令长度固定,指令格式种类少,寻址方式种类少
只有Load/Store(取数/存数)指令访存,其余指令都在寄存器之间进行
CPU中通用寄存器的数量相当多
RISC一定采用指令流水线技术,大部分指令的操作都在一个时钟周期内完成
以硬布线控制为主,不用或少用微程序控制
特别重视编译优化工作,以减少程序执行时间
CISC兼容性更好。
3.CISC和RISC的比较
与CISC相比RISC的优点:
更能充分利用VLSI芯片的面积
有更高的运算速度
便于设计,可降低成本,提高可靠性
有利于编译程序代码的优化
对比表:
![](https://i-blog.csdnimg.cn/blog_migrate/34bed08a2aaf732c742809ffbf2b6a36.png)
微程序:使用多个微码来解释复杂指令集中的复杂指令,这也是复杂指令为什么可以实现复杂功能的原因。
CISC | RISC | |
指令系统 | 复杂,庞大 | 简单,精简 |
指令数目 | 一般大于200条 | 一般小于100条 |
指令字长 | 不固定 | 固定 |
可访存指令 | 不加限制 | 只有Load/Store指令 |
各种指令执行时间 | 相差较大 | 绝大多数在一个周期内完成 |
各种指令使用频度 | 相差很大 | 都比较常用 |
通用寄存器数量 | 较少 | 多 |
目标代码 | 难以用优化编译生成高效的目标代码程序 | 采用优化的编译程序,生成代码较为高效 |
控制方式 | 绝大多数为微程序控制 | 绝大多数为组合逻辑控制 |
指令流水线 | 可以通过一定方式实现 | 必须实现 |
9.4 两大结构
(1)冯诺依曼结构?
中央处理器(CPU)通过控制器将数据读从输入设备读取到存储器上,然后通过运算器对存储器中的数据进行运算,最后再通过控制器将运算结果显示到输出设备上,这种结构称之为冯诺依曼结构。
在冯诺依曼结构中数据存储器和指令存储器在一个存储器上,但已经有了分开的概念。
![](https://i-blog.csdnimg.cn/blog_migrate/50bd05fab6f1a6a2a2b4bcd4576be805.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4de5887b064c91d5f99344366262664d.png)
(2)哈佛结构
![](https://i-blog.csdnimg.cn/blog_migrate/f803a5853de1604901ddbe221dad5a48.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ab55a50ab8a9444fe288ab99be0143c2.png)
中央处理器先从指令存储器里读取程序指令的内容,解码得到数据地址,再到相应的数据存储器中读取程序执行所需的数据,然后执行,这种结构我们称之为哈佛结构。
在哈佛结构中,数据存储器和指令存储器是分开的两个存储器。
(3)冯诺依曼结构和哈佛结构的区别:
哈佛结构将数据和指令分开来存储具有较高的执行效率,在执行指令的同时可以提前读取下一条指令;而且因为数据和指令分开存储在两个存储器中,数据和指令就可以采用两种不同的数据长度进行存储。
但在程序执行的过程中,我们通常要频繁的变化所执行的程序指令,这个时候就要对数据和指令占有的存储器从新分配,这个时候冯诺依曼结构统一的编码格式就能最大限度的利用资源。
![](https://i-blog.csdnimg.cn/blog_migrate/cdd4518f0f93601fc1f7a9e37cd3ab03.png)
ARM核通常是冯诺依曼结构!!!
DSP通常采用哈佛结构!!!
计算机体系结构主要影响的编译器,对高级编程语言影响是透明的!!!
9.5 层次存储(物理存储器)-- 成本约束
9.5.1 层次化结构
![](https://i-blog.csdnimg.cn/blog_migrate/fcf2bd1f8dd780bb6708fbc40ed11f94.png)
9.5.2 Cache
![](https://i-blog.csdnimg.cn/blog_migrate/45b78615fa999f8ec1255b9ce47a4477.png)
备注:
可以看到两者的主要差别是冯诺依曼架构不区分数据与指令,将两者放在同一内存中;而哈佛结构将两者分别存放在Instruction Memory和Data Memory。
指令和数据放在一起的后果是取指令和取数据不能同时进行,否则会引起访存的混乱。
发展到今天,CPU的运算速度已经远远超过了访存速度,因此CPU必须浪费时间等数据;
而哈佛构架由于指令和数据是分开存放的,所以在等数据的同时可以预取指令,CPU的利用率更高。
由于指令与数据放在同一内存带来的CPU利用率(吞吐率)降低就是冯诺依曼瓶颈。
9.5.3 局部性原理
![](https://i-blog.csdnimg.cn/blog_migrate/947fdd1a036ab042b3404802c16180ff.png)
9.5.4 主存分类
![](https://i-blog.csdnimg.cn/blog_migrate/3dc810cd8bd4b1226593a471adfd512c.png)
9.5.5 主存编址
![](https://i-blog.csdnimg.cn/blog_migrate/50bd73287b832fb7ce047ae50a4200b4.png)
9.5.6 磁盘结构与参数
![](https://i-blog.csdnimg.cn/blog_migrate/656c0e03e6ee3eb323421f019755b53f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6cdc829688dac5a44d20ef173283a53f.png)
详细了解硬盘的工作原理,原来数据的读写这么神奇,数码,数码硬件,好看视频 (baidu.com)
![](https://i-blog.csdnimg.cn/blog_migrate/7f734a4a68ce79c38d32a80326a6f0bc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15217e48d23efff6cd5a2378018dcc69.png)
9.6 流水线
![](https://i-blog.csdnimg.cn/blog_migrate/9f569dd6f48418207e69d6da2efdea10.png)
流水线,又称装配线,工业上的一种生产方式,指每一个生产单位只专注处理某一个片段的工作,以提高工作效率及产量。
按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线。一般包括牵引件、承载构件、驱动装置、涨紧装置、改向装置和支承件等组成。
cpu流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。
采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。
为了进一步满足普通流水线设计所不能适应的更高时钟频率的要求,高档位处理器中的流水线的深度(级数)在逐代增多。当流水线深度在5~6级以上时,通常称为超流水线结构(Super Pipeline)。显然,流水线级数越多,每级所花的时间越短,时钟周期就可以设计的越短,指令速度越快,指令平均执行时间也就越短。
流水线技术是通过增加计算机硬件来实现的。它要求各功能段能互相独立地工作,这就要增加硬件,相应地也加大了控制的复杂性。如果没有互相独立的操作部件,很可能会发生各种冲突。例如要能预取指令,就需增加指令的硬件电路,并把取来的指令存放到指令队列缓冲器中,使微处理器能同时进行取指令和分析、执行指令的操作。
![](https://i-blog.csdnimg.cn/blog_migrate/6de2886266f50b284cbcd84816dceb61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a2463d294c82b6eaaea99024d4f80d71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5eee408a06bb9318255d3f7f27aa0654.png)
![](https://i-blog.csdnimg.cn/blog_migrate/494eb390e42ad3bb52bc4cd9e7ac95e1.png)
9.7 总线
![](https://i-blog.csdnimg.cn/blog_migrate/06d76c0143fc2f80026ebcfdd9b7792e.png)
9.10 嵌入式
9.10.1 主处理芯片
![](https://i-blog.csdnimg.cn/blog_migrate/13fe48e1e23244c247674629d0943d1d.png)
9.10.2 交叉开发环境
![](https://i-blog.csdnimg.cn/blog_migrate/f0d314a5d37462b41014c254a34dd850.png)
9.10.3 初始化过程
![](https://i-blog.csdnimg.cn/blog_migrate/ddaed605db534e64e9857f58ef13dffb.png)
备注:
片级初始 =》板级初始化=》 系统级初始化
SOC/CPU =》 UBOOT =》 Linux OS
9.10.4 校验码
(1)奇偶校验
![](https://i-blog.csdnimg.cn/blog_migrate/f60c9b12a23c9e3bd030dfe15ee81187.png)
(2)CRC
![](https://i-blog.csdnimg.cn/blog_migrate/fbb4b4882430131abc740412c85fca5d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ffe60ec0eec214862b35f1d1dd7af0b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9b6576a1507cd78e6db1a48aa29a6d6.png)
(3)海明码
![](https://i-blog.csdnimg.cn/blog_migrate/f773c9c9a4f654ef3d556856df05d44d.png)
9.11 系统配置与性能评价
9.11.1 计算机性能指标
![](https://i-blog.csdnimg.cn/blog_migrate/8ee4461a0eca9b24f2b072d79bfb924c.png)
9.11.2 阿姆达尔解决方案
![](https://i-blog.csdnimg.cn/blog_migrate/ab4f8aaa52800f6e40c10ed58c352be5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4363c9f1331842f79a1e1b62c1c7c40b.png)
9.11.3 性能评价方法
![](https://i-blog.csdnimg.cn/blog_migrate/b87691d8c0adc1af56a7d8427f66e725.png)
时钟(时钟)-》指令数(cpu)=》混合指令(cpu) =》数据处理(cpu+内存)=》多核计算 =》基准程序
从物理信号 =》基准程序 =》 典型应用程序 =》 真实应用程序
![](https://i-blog.csdnimg.cn/blog_migrate/60ebf578c3343de259276ee92972e66b.png)
备注:
基准程序是通用基准程序,是经过严格精确设计的程序。