计算机系统层次结构
计算机系统的组成
硬件系统 和 软件系统 共同构成了一个完成的计算机系统。计算机系统性能的优劣,很大程度上由软件的效率的作用表征,而软件性能又离不开硬件支持。对于某一功能来说,其即可以通过硬件实现,也可以通过软件实现,则称 软硬件在逻辑功能上等价 .
硬件系统
冯诺依曼机
现代计算机主要以 冯诺依曼机 为基础,其提出了 储存程序
的概念,现代计算机拥有如下特点:
- 采用
储存程序
的工作方式; - 由
运算器
、存储器
、控制器
、输入设备
、输出设备
组成; - 指令 和 数据 以同等地位储存在存储器中,形式上没有区别,但是计算机应能区分他们;
- 指令 和 数据 均以二进制表示,指令由操作码和地址码组成;
储存程序
的思想是指将实现编制好的程序和原始数据送入主存后执行,一旦程序开始执行,就无需操作人员干预,计算机会自动逐条指令执行,直至结束。
冯诺依曼机的基本工作方式是 控制流驱动方式 .
区分指令和数据是通过指令周期的不同阶段。
哈佛结构
哈佛架构是一种分离式存储器体系结构,它将指令和数据存储在不同的内存中。CPU 通过不同的总线从指令内存和数据内存中读取指令和数据。这意味着 CPU 可以同时访问指令和数据内存,效率更高,并且其安全性更高,因为指令和数据分开存放,程序无法修改其自身代码;指令和数据的位宽也可以不同,但是其设计十分复杂,通常适用于一些特定的应用领域,例如需要高效地处理大量数据的嵌入式系统,或数字信号处理器等领域。
现代 CPU 是冯诺依曼结构和哈佛结构结合的产物,其在整体上与主存构成冯诺依曼结构,而在内部,CPU 和 Cache 单元构成哈佛结构,其拥有指令 Cache 和数据 Cache.
五大功能部件
输入设备:将程序和数据以机器所能识别的形式和接受的信息形式输入计算机,如键盘、鼠标、摄像头、扫描仪、麦克风等。
输出设备:将计算机的处理结果以人们所能接受的形式或其他系统所要求的信息形式输出,如打印机、显示器、音响等。
存储器
存储器分为 主存储器 和 辅助存储器,CPU 能够直接访问主存,辅助存储器可以存储更多信息。
主存储器又称主存、内存,辅助存储器又称外存,如硬盘、U 盘、光盘等。
主存储器的工作方式是 按地址存取 ,即按照 存储单元的地址 进行存取。 主存储器通过 地址寄存器(MAR) 获得数据地址,经过 地址译码 后要找目标 存储单元 ;数据寄存器(MDR) 用于暂存读/写的数据;时序控制逻辑 用于产生所需的时序信号。
寄存器是由触发器构成的。
虽然 和 的都是存储器的一部分,但是现代计算机中却存在于 中, 也在 中。
用于寻址,因此其位数和存储单元个数相对应; 用于 存取数据,其位数和存储字长相同。
运算器
运算器是计算机的执行部件,用于进行 算术计算 和 逻辑运算 ;运算器的核心是 算术逻辑单元(Arithmetic and logical unit, ALU),同时还包括一些通用寄存器,用于暂存操作数和中间结果,如 累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR) 等,其中前三个寄存器为必须。
此外运算器中有 程序状态寄存器(PSW,又称标志寄存器) 用于存放 ALU 运算得到的标志信息或处理机的状态信息,如结果是否溢出,有无进位借位、结果是否为负等。
控制器
控制器是计算机的指挥中心,能够确保各部件的自动协调运行。其由 程序计数器(PC)、指令寄存器(IR) 和 控制单元(CU) 组成。
用于存放将要执行的指令地址,并且能够自动指向下一条指令的地址。
用于存放当前指令,其内容来自于主存的 .指令当中的操作码送至 ,用于分析指令并发出各种微指令命令序列,地址码则送至 ,用于取操作数。
一般将运算器和控制器集成在同一个芯片上,成为 中央处理器(CPU); 和主存储器共同构成 主机;除主机以外的设备都被称为 外设。
和主存之间通过一组总线相连,总线包含 地址、控制 和 数据 三组信号线。MAR 的地址信息会直接送到地址线,用于指向目标主存存储单元,控制线中有读/写信号线,并根据信号将 的数据送到数据线或是将数据线上的数据送到 MDR.
软件系统
计算机软件可以分为 系统软件 和 应用软件 .系统软件用于保证计算机系统高效正确运行,如操作系统、网络软件系统、标准库程序等。
三个级别的语言
机器语言,又称二进制代码语言,是计算机唯一可以直接识别和执行的语言。
汇编语言,使用英文单词代替二进制指令,需要经过汇编程序翻译才可执行。
高级语言,需要编译或解释为机器语言才可执行。
有三类翻译程序
- 汇编程序(汇编器):将汇编语言翻译为机器语言程序;
- 解释语言(解释器):将源程序中的语句按执行顺序 逐条翻译 为机器指令并 立即执行 ;
- 编译程序(编译器):将高级语言翻译为汇编语言或机器语言程序;
预处理 ->编译 ->汇编 ->链接
注意 软硬件逻辑功能的等价性 .
计算机系统的层次结构
目前尚无统一标准。
可分为五个级别
- 微程序机器层:由硬件直接执行微指令;
- 传统机器语言层:由微程序解释机器指令系统;
- 操作系统层(混合层):由操作系统实现,操作系统由机器指令和广义指令组成,这些广义指令用于扩展机器功能,是由操作系统定义和解释的 软件指令,因此本层也称混合层;
- 汇编语言层:由汇编程序支持和执行;
- 高级语言层:面向用户。
3-5 层被称为虚拟机,即软件实现的机器。
计算机的性能指标
字长
计算机进行一次整数运算所能处理的二进制位数,通常与 CPU 寄存器位数、加法器有关。
注意机器字长、指令字长和存储字长的关系。
数据通路带宽
外部数据总线 一次所能 并行 传输信息的位数,外部数据总线和 CPU 内部的数据总线宽度(内部寄存器的大小)可能不同。
主存容量
可通过 MAR 和 MDR 的位数来计算。
运算速度
衡量计算机运算速度有以下指标:
- 吞吐量和响应时间
- 主频和时钟周期
- (): 表示平均每个指令执行需要的周期数。
- 执行时间:时钟周期数/主频或 (指令数 x CPI)/ 主频
- ():每秒执行多少百万条指令,指令数/(执行时间 或主频/( )
- (): 每秒执行的浮点运算次数
基准程序
一组专门用于性能评价的程序。
总结和常见问题
什么是透明性
指站在用户的角度,感觉不到某个事务或者属性的存在,则称为透明,与生活中的“公开透明”刚好相反。
中,、、 对各类程序员都是透明的,而 、、通用寄存器对汇编程序员不是透明的。
字、字长、机器字长、指令字长、存储字长
字长、机器字长: 位、 位、 位机器,指的就是字长,也叫机器字长。通常指 内部用于整数运算的数据通路宽度(运算器位数、通用寄存器宽度)。
指令字长:一个指令字中二进制代码的位数。指令字长一般取存储字长的整数倍,因此可能会需要多个 访存周期 来取出指令。
存储字长:一个存储单元存储二进制代码的位数。
它们都必须是字节的整数倍。