结构化计算组成
语言、层次和虚拟机
计算机只能执行 0 或 1的机器语言指令 L0,但是不易于人的理解,人们需要设计一个新的易于理解的指令集合 L1。将这个新指令集等价转换为机器指令的技术叫做翻译;将新的指令集作为输入按照顺序检查它的每条指令,然后转换为等价的机器指令的方法叫做解释,完成这个过程的程序叫做解释器。
由于 L1 这样的指令集依然不能被人类容易理解所以需要在其上层构建 L2 直至 Ln 来使得程序员能够使用它进行程序的开发。
现代操作系统层次计算机
多层次计算机的演化
硬件和软件在逻辑上是等同的,硬件就是固化的软件,反过来也是同样的。软硬件的界限是模糊的,它可以根据需要改变。
计算机系统结构的里程碑
- 零代机:机械计算机(1642-1945)
- 第一代:电子计算机(1945-1995)
- 第二代:晶体管计算机(1955-1965)
- 第三代:集成电路计算机(1965-1980)
- 第四代:超大规模集成电路计算机(1980年至今)
- 第五代:低耗能和无所不在的计算机
冯·诺依曼体系结构
在现代计算机上逻辑部件和控制器被组合到一个芯片上,称为 CPU。
系列计算机
三类流行的指令集体系结构(ISA):
- x86:常用于个人计算机和服务器系统。
- ARM:常用于智能手机和平板电脑,ARM 公司的 ARM 架构处理器已经有了很多版本,ARM、Cortex、Krait、Kryo;骁龙、苹果等厂商生产的 CPU 就是基于以上架构的,ARM 没有直接生产自己的任何一款微处理器,而只是生产详细的设计方案,以及基于 ARM 的开发工具和库函数,并把它们授权给系统设计和芯片制造商生产。
- AVR:增强型内置 Flash 的 RISC 精简指令集高速 8 位单片机,广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
计算机系统组成
数字计算机是由处理器、存储器和输入/输出设备组成的内部互连系统。
处理器
组成
CPU(中央处理部件) 通过从主存储器中逐条进行取指令、分析指令和执行指令来执行计算机程序。计算机的各个组成部件通过总线连接在一起。
- 控制器:负责从主存储器中取指令和分析指令类型。
- 算数逻辑部件(ALU):通过完成加减等算数运算来执行指令。
- 内部有高速存储器:存放中间值和一些控制信息
- 程序计数器(PC):指向下一条被取出用于执行的指令。
- 指令寄存器(IR):存放当前正在执行的指令。
- 其它专用存储器
指令执行
计算机执行指令大致可以分为以下几个步骤:
- 从主存中取下一条指令到指令寄存器中。
- 将程序计数器指向后面的一条指令。
- 判断刚取得的指令的类型。
- 若该指令用到某主存单元,则对该主存单元进行寻址。
- 必要时,从主存中取一个字到 CPU 的寄存器中。
- 执行指令。
- 返回第一步准备下一条指令。
这个过程称为取值-译码-指令周期,是所有计算机操作的核心。
解释执行指令的简单计算机优点:
- 在解释过程中改正指令实现中的错误,甚至补偿基础硬件中的设计缺陷。
- 可以以最小的代价增加新的指令,甚至在计算机发货后也能做到这一点。
- 结构化设计,可以对复杂指令方便地进行升级、测试和文档化。
RISC 和 CISC
RISC:精简指令计算机
SISC:复杂指令系统
现代计算机设计原则
- 所有指令都由硬件直接执行
- 最大限度提高指令启动速度
- 指令容易译码
- 只允许读写主存指令访问主存
- 提供足够的寄存器
指令级并行
一般来说有两种形式的并行:指令级并行和处理级并行。前者在指令之间应用并行,使计算机在单位时间里处理更多的指令。后者是指多个 CPU 一起工作,解决同一个问题。
指令流水
将经常用到的指令放在预取缓冲的寄存器中,这样就不需要等待一个读取周期。预取将指令分为取指令和执行指令两个部分。
指令流水就是将指令执行分解为更多的部分,每个部分由硬件执行,都可以并行运行。
指令执行被分解为 5 个子过程:
- 取指令
- 对指令译码,判断指令和指令需要的操作数
- 从寄存器或者主存找到并取操作数
- 指令指令单元
- 将结果写会回指令寄存器。
超标量体系结构
一个指令部件可以一次取两条指令,将它们分别送入各自的流水线中,由各自的 ALU 并行执行。需要专门的编译器或者硬件在指令执行时检查和减少冲突。
处理机级行
多 CPU 计算机
数据并行计算机
单指令流多数据流处理器(SIMD):处理器由很多在不同数据集合上执行相同指令序列的完全相同的处理器组成。
向量处理器:对不同的数据执行一系列相同操作使能大幅提高运算速度。
多处理器
由多个 CPU 和它们共享的一块公共内存组成,它们必须相互协调,避免影响别的 CPU 的运行。
多计算机
多个计算机相联的系统,这些计算机都有各自的私有内存,但没有公共内存,这种系统就是多计算机系统。
主存储器
存储器是计算机用来存放程序和数据的地方。
存储位
存储的基本单位是二进制数字,即二进制位。
内存编址
存储器可以由很多可以存放一段信息的单元(或位置)组成,每个单元有一个编号,程序可以通过这个编号来访问这个单元,这个编号就是这个单元的地址。
最小可编址单元为 8 位存储单元,即字节。
字节顺序
每个字中的字节地址从左到右排,叫做大端对齐。
每个字中的字节地址从右到左排,叫做小端对齐。
在计算机间交换数据时,如果在字节编址顺序上没有一个统一的标准,总是一个麻烦事。
纠错码
为防止错误,一些主存在每个主存字中按特别的规定加上一些附加位,用它们效验主存是否出错。
高速缓存
参考
【1】计算机组成:结构化方法@刘卫东[译] 第六版