计算机系统概述
1. 计算机系统的层次结构
计算机系统由硬件和软件两大部分组成,从功能上可分为多个层次:
- 硬件层(第 0 层):由电子电路和物理设备组成,是计算机的物理基础
- 微程序控制层(第 1 层):用微指令控制硬件操作
- 机器语言层(第 2 层):由机器指令组成,直接控制硬件
- 操作系统层(第 3 层):管理硬件资源,提供用户接口
- 汇编语言层(第 4 层):用汇编语言编写程序,通过汇编器转换为机器语言
- 高级语言层(第 5 层):用高级语言编写程序,通过编译器转换为机器语言
- 应用程序层(第 6 层):各种应用程序,如办公软件、游戏等
2. 计算机的基本组成
根据冯·诺依曼结构,计算机由五大部件组成:
- 运算器:执行算术运算和逻辑运算
- 控制器:控制和协调其他部件的工作
- 存储器:存储程序和数据
- 输入设备:将外部信息输入到计算机
- 输出设备:将计算机处理结果输出到外部
3. 计算机的工作原理
冯·诺依曼计算机的基本工作原理是存储程序原理:
- 将程序和数据存入存储器
- 控制器从存储器中取出指令,分析指令
- 控制器根据指令要求,控制各部件执行相应操作
- 重复步骤 2 和 3,直到程序执行完毕
数据的表示和运算
1. 数制转换
二进制、八进制、十进制、十六进制
- 二进制(Binary):以 2 为基数,使用 0 和 1 表示
- 八进制(Octal):以 8 为基数,使用 0-7 表示
- 十进制(Decimal):以 10 为基数,使用 0-9 表示
- 十六进制(Hexadecimal):以 16 为基数,使用 0-9 和 A-F 表示
数制转换方法
二进制转十进制
1 | 1011B = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11D |
十进制转二进制
1 | 11D = 1011B |
二进制转八进制
1 | 101101B = 010 110 100B = 2 6 4Q = 264Q |
二进制转十六进制
1 | 10110110B = 1011 0110B = B 6H = B6H |
2. 机器数的表示
无符号数
无符号数是正整数,没有符号位,所有位都用来表示数值大小。
有符号数
有符号数用最高位表示符号(0 表示正,1 表示负),其余位表示数值。
原码
- 正数的原码:符号位为 0,数值部分为真值的绝对值
- 负数的原码:符号位为 1,数值部分为真值的绝对值
1 | +1011B的原码:01011B |
反码
- 正数的反码:与原码相同
- 负数的反码:符号位不变,数值部分按位取反
1 | +1011B的反码:01011B |
补码
- 正数的补码:与原码相同
- 负数的补码:反码加 1
1 | +1011B的补码:01011B |
移码
- 常用于表示浮点数的阶码
- 补码的符号位取反
1 | +1011B的移码:11011B |
3. 定点数和浮点数
定点数
定点数是指小数点位置固定的数,分为定点整数和定点小数。
定点整数
小数点固定在最低位之后,如:
1 | 1011B = 11D |
定点小数
小数点固定在符号位之后,如:
1 | 0.1011B = 0.6875D |
浮点数
浮点数是指小数点位置不固定的数,采用科学计数法表示:
1 | N = S × r^E |
其中,S 为尾数,r 为基数,E 为阶码。
IEEE 754 标准
IEEE 754 标准规定了浮点数的表示格式:
- 单精度浮点数(32 位):1 位符号位,8 位阶码(移码),23 位尾数
- 双精度浮点数(64 位):1 位符号位,11 位阶码(移码),52 位尾数
4. 算术运算
定点数的加减运算
采用补码进行加减运算,符号位与数值位一起参与运算。
加法运算
1 | [x]补 + [y]补 = [x + y]补 (mod 2^n) |
减法运算
1 | [x - y]补 = [x]补 + [-y]补 (mod 2^n) |
定点数的乘法运算
原码一位乘法
- 符号位单独处理
- 数值部分采用绝对值相乘
- 用移位和加法实现
补码一位乘法(Booth 算法)
- 符号位与数值位一起参与运算
- 根据相邻两位的状态决定操作
- 用移位和加法实现
定点数的除法运算
原码一位除法
- 符号位单独处理
- 数值部分采用绝对值相除
- 用移位和减法实现
补码一位除法
- 符号位与数值位一起参与运算
- 用移位和加法/减法实现
5. 逻辑运算
基本逻辑运算
- 与运算(AND):全 1 为 1,否则为 0
- 或运算(OR):有 1 为 1,否则为 0
- 非运算(NOT):取反
- 异或运算(XOR):不同为 1,相同为 0
复合逻辑运算
- 与非运算(NAND):先与后非
- 或非运算(NOR):先或后非
- 与或非运算(AND-OR-NOT):先与后或再非
指令系统
1. 指令的基本概念
指令的格式
指令由操作码和地址码两部分组成:
1 | ┌─────────────────┬─────────────────────────────────┐ |
- 操作码:表示指令的操作类型
- 地址码:表示指令的操作数地址
指令的长度
- 单字长指令:指令长度等于机器字长
- 半字长指令:指令长度等于机器字长的一半
- 双字长指令:指令长度等于机器字长的两倍
2. 指令的寻址方式
寻址方式是指确定操作数地址的方式。
基本寻址方式
- 立即寻址:操作数直接在指令中
- 直接寻址:操作数的地址直接在指令中
- 间接寻址:指令中给出的是操作数地址的地址
- 寄存器寻址:操作数在寄存器中
- 寄存器间接寻址:寄存器中存放的是操作数的地址
- 相对寻址:以 PC 为基准,加上偏移量
- 基址寻址:以基址寄存器为基准,加上偏移量
- 变址寻址:以变址寄存器为基准,加上偏移量
- 堆栈寻址:操作数在堆栈中
3. 指令的分类
按功能分类
- 数据传送类指令:实现数据的传送
- 算术运算类指令:实现算术运算
- 逻辑运算类指令:实现逻辑运算
- 移位操作类指令:实现数据的移位
- 程序控制类指令:控制程序的执行流程
- 输入输出类指令:实现输入输出操作
- 处理机控制类指令:控制处理机的状态
4. 指令系统的设计
复杂指令系统计算机(CISC)
- 指令数量多,功能复杂
- 指令长度可变
- 寻址方式多
- 执行速度较慢
精简指令系统计算机(RISC)
- 指令数量少,功能简单
- 指令长度固定
- 寻址方式少
- 执行速度快
- 采用流水线技术
中央处理器(CPU)
1. CPU 的功能和组成
CPU 的功能
- 指令控制:控制程序的执行顺序
- 操作控制:控制各部件执行指令规定的操作
- 时间控制:控制各操作的执行时间
- 数据加工:对数据进行算术和逻辑运算
CPU 的组成
- 运算器:执行算术和逻辑运算
- 算术逻辑单元(ALU)
- 通用寄存器组
- 累加器
- 状态寄存器
- 控制器:控制 CPU 的工作
- 程序计数器(PC)
- 指令寄存器(IR)
- 指令译码器(ID)
- 时序控制电路
- 微操作控制信号形成电路
2. 指令的执行过程
指令周期
指令周期是指执行一条指令所需要的时间,包括:
- 取指周期:从存储器中取出指令
- 间址周期:如果需要,计算操作数的有效地址
- 执行周期:执行指令规定的操作
- 中断周期:如果发生中断,处理中断
指令执行的基本流程
- 取指:PC→MAR→M→MDR→IR,PC+1
- 译码:ID 对 IR 中的操作码进行译码
- 取数:根据寻址方式,取出操作数
- 执行:ALU 执行运算,结果送回指定位置
- 写回:将结果写回存储器或寄存器
3. 控制器的设计
硬布线控制器
硬布线控制器是由逻辑门电路和触发器组成的复杂树形网络,优点是速度快,缺点是设计复杂、修改困难。
微程序控制器
微程序控制器是通过存储在控制存储器中的微程序来控制 CPU 的工作,优点是设计简单、修改方便,缺点是速度较慢。
微程序控制的基本概念
- 微指令:控制部件发出的控制信号
- 微程序:实现一条机器指令的若干条微指令的集合
- 控制存储器:存储微程序的存储器
- 微地址:微指令在控制存储器中的地址
- 微命令:控制计算机各部件的基本操作
4. 流水线技术
流水线的基本概念
流水线是一种将指令执行过程分解为多个阶段,每个阶段由专门的硬件完成,各阶段可以并行工作的技术。
流水线的结构
经典的五级流水线结构:
- 取指(IF):从存储器中取出指令
- 译码(ID):对指令进行译码
- 执行(EX):执行指令规定的操作
- 访存(MEM):访问存储器
- 写回(WB):将结果写回寄存器
流水线的性能指标
- 吞吐率:单位时间内流水线完成的任务数
- 加速比:流水线方式与非流水线方式的执行时间之比
- 效率:流水线中各段的利用率
流水线的冲突
- 结构冲突:多个指令同时争用同一硬件资源
- 数据冲突:指令之间存在数据依赖关系
- 控制冲突:程序转移等引起的冲突
总线系统
1. 总线的基本概念
总线是计算机各部件之间传输信息的公共通道,由数据线、地址线和控制线组成。
2. 总线的分类
按传输信息类型分类
- 地址总线(AB):传输地址信息
- 数据总线(DB):传输数据信息
- 控制总线(CB):传输控制信号
按连接部件分类
- 内部总线:CPU 内部各部件之间的总线
- 系统总线:计算机各主要部件之间的总线
- 数据总线
- 地址总线
- 控制总线
- 外部总线:计算机与外部设备之间的总线
3. 总线的结构
单总线结构
所有部件都连接在一条总线上,结构简单,但总线利用率低。
双总线结构
- 主存总线:连接 CPU 与主存
- I/O 总线:连接 CPU 与 I/O 设备
三总线结构
- 主存总线:连接 CPU 与主存
- I/O 总线:连接 CPU 与 I/O 设备
- DMA 总线:连接主存与 I/O 设备
4. 总线的仲裁
总线仲裁是指解决多个部件同时争用总线的问题。
集中式仲裁
仲裁逻辑集中在一处,有:
- 链式查询方式
- 计数器定时查询方式
- 独立请求方式
分布式仲裁
仲裁逻辑分散在各个部件中。
5. 总线的定时和同步
同步定时方式
所有部件都使用同一时钟信号,优点是简单,缺点是灵活性差。
异步定时方式
使用握手信号进行同步,优点是灵活性好,缺点是复杂。
存储器系统
1. 存储器的分类
按存储介质分类
- 半导体存储器:如 RAM、ROM
- 磁表面存储器:如硬盘、软盘
- 光存储器:如光盘、DVD
按存取方式分类
- 随机存取存储器(RAM):可以随机存取任意位置的数据
- 只读存储器(ROM):只能读取,不能写入
- 顺序存取存储器(SAM):只能按顺序存取数据
- 直接存取存储器(DAM):结合了随机存取和顺序存取的特点
按在计算机中的作用分类
- 主存储器(内存):直接与 CPU 交换数据
- 辅助存储器(外存):存储大量数据,速度较慢
- 高速缓冲存储器(Cache):介于 CPU 和主存之间的高速存储器
2. 半导体存储器
RAM(随机存取存储器)
- 静态 RAM(SRAM):使用触发器存储数据,不需要刷新,速度快,功耗大
- 动态 RAM(DRAM):使用电容存储数据,需要定期刷新,速度慢,功耗小
ROM(只读存储器)
- 掩膜 ROM:由厂家编程,不可修改
- 可编程 ROM(PROM):用户可编程一次
- 可擦除可编程 ROM(EPROM):可紫外线擦除,多次编程
- 电可擦除可编程 ROM(EEPROM):可电擦除,多次编程
- 闪速存储器(Flash Memory):非易失性,可电擦除,速度快
3. 高速缓冲存储器(Cache)
Cache 的基本原理
Cache 是基于程序访问的局部性原理,将主存中经常访问的数据复制到 Cache 中,提高 CPU 的访问速度。
Cache 的映射方式
- 直接映射:每个主存块只能映射到 Cache 中的一个特定块
- 全相联映射:每个主存块可以映射到 Cache 中的任意块
- 组相联映射:每个主存块可以映射到 Cache 中的特定组中的任意块
Cache 的替换算法
- 随机替换算法:随机选择一个块替换
- 先进先出(FIFO)替换算法:替换最早进入 Cache 的块
- 最近最少使用(LRU)替换算法:替换最近最少使用的块
- 最不经常使用(LFU)替换算法:替换访问次数最少的块
4. 虚拟存储器
虚拟存储器的基本概念
虚拟存储器是一种将主存和外存结合起来,为用户提供比实际主存更大的存储空间的技术。
虚拟存储器的实现方式
- 分页存储管理:将虚拟空间和物理空间都分为固定大小的页
- 分段存储管理:将虚拟空间和物理空间都分为可变大小的段
- 段页式存储管理:结合分页和分段的优点
地址转换
虚拟地址到物理地址的转换需要页表或段表的支持。
5. 多级存储体系
为了平衡速度、容量和成本,计算机通常采用多级存储体系:
- 寄存器:速度最快,容量最小
- Cache:速度快,容量小
- 主存:速度中等,容量中等
- 外存:速度慢,容量大
输入输出系统
1. I/O 系统的组成
I/O 系统由 I/O 设备、I/O 接口和 I/O 总线组成。
2. I/O 设备的分类
按功能分类
- 输入设备:如键盘、鼠标、扫描仪
- 输出设备:如显示器、打印机、音箱
- 输入输出设备:如磁盘、触摸屏
按数据传输方式分类
- 字符设备:以字符为单位传输数据
- 块设备:以块为单位传输数据
3. I/O 接口
I/O 接口的功能
- 数据缓冲:解决 CPU 与 I/O 设备之间速度不匹配的问题
- 信号转换:实现 CPU 与 I/O 设备之间信号电平、格式的转换
- 设备选择:选择要操作的 I/O 设备
- 命令解释:解释 CPU 的命令
- 中断管理:处理 I/O 中断
I/O 接口的类型
- 并行接口:同时传输多位数据,如打印机接口
- 串行接口:一位一位地传输数据,如 USB 接口
- 可编程接口:用户可编程设置接口的工作方式
4. I/O 控制方式
程序查询方式
CPU 不断查询 I/O 设备的状态,直到设备准备就绪,缺点是 CPU 利用率低。
中断驱动方式
I/O 设备准备就绪后,向 CPU 发出中断请求,CPU 暂停当前程序,处理 I/O 请求,优点是 CPU 利用率高。
DMA 方式
直接存储器访问(DMA)方式是指在 DMA 控制器的控制下,直接在 I/O 设备和存储器之间进行数据传输,不需要 CPU 干预,优点是数据传输速度快。
通道方式
通道是一种专门负责 I/O 操作的处理器,可以独立执行通道程序,控制 I/O 设备和存储器之间的数据传输。
5. I/O 中断
中断的基本概念
中断是指 CPU 在执行程序过程中,遇到需要立即处理的事件,暂停当前程序的执行,转去处理该事件,处理完毕后返回原程序继续执行的过程。
中断的分类
- 内部中断:由 CPU 内部原因引起的中断
- 外部中断:由 CPU 外部原因引起的中断
- 可屏蔽中断:可以被屏蔽
- 不可屏蔽中断:不能被屏蔽
中断处理的过程
- 中断请求:I/O 设备向 CPU 发出中断请求
- 中断响应:CPU 暂停当前程序,保存现场
- 中断处理:执行中断服务程序
- 中断返回:恢复现场,返回原程序继续执行
计算机系统的结构
1. 计算机的基本结构
冯·诺依曼结构
冯·诺依曼结构的特点是:
- 以运算器为中心
- 存储程序原理
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
哈佛结构
哈佛结构的特点是:
- 程序存储器和数据存储器分开
- 可以同时读取指令和数据
- 提高了数据处理速度
2. 多处理器系统
多处理器系统的类型
- 紧密耦合系统:共享主存和 I/O 设备
- 松散耦合系统:各处理器有自己的存储器和 I/O 设备
对称多处理器(SMP)
多个处理器共享主存和 I/O 设备,地位平等,共同执行任务。
大规模并行处理器(MPP)
由大量处理器组成,每个处理器有自己的存储器和 I/O 设备,通过高速网络连接。
3. 流水线和并行处理技术
流水线技术
流水线技术是将指令执行过程分解为多个阶段,每个阶段由专门的硬件完成,各阶段可以并行工作。
并行处理技术
- 时间并行:如流水线技术
- 空间并行:如多处理器系统
- 时间并行+空间并行:如超标量流水线
计算机组成原理面试题
1. 冯·诺依曼计算机的基本组成和工作原理是什么?
冯·诺依曼计算机由运算器、控制器、存储器、输入设备和输出设备五大部件组成。其基本工作原理是存储程序原理:将程序和数据存入存储器,控制器从存储器中取出指令,分析指令,控制各部件执行相应操作,重复上述过程直到程序执行完毕。
2. 什么是机器数?机器数有哪些表示方法?
机器数是指在计算机中表示的数,包括符号位和数值位。机器数的表示方法有原码、反码、补码和移码。
3. 什么是补码?补码有什么优点?
补码是一种机器数的表示方法,正数的补码与原码相同,负数的补码是反码加 1。补码的优点是:
- 可以将减法运算转化为加法运算
- 符号位可以与数值位一起参与运算
- 0 的表示唯一
4. 什么是指令周期?指令周期包括哪些阶段?
指令周期是指执行一条指令所需要的时间,包括取指周期、间址周期、执行周期和中断周期。
5. 什么是 Cache?Cache 的基本原理是什么?
Cache 是介于 CPU 和主存之间的高速存储器,用于存储主存中经常访问的数据。Cache 的基本原理是基于程序访问的局部性原理,将主存中经常访问的数据复制到 Cache 中,提高 CPU 的访问速度。
6. 什么是虚拟存储器?虚拟存储器的实现方式有哪些?
虚拟存储器是一种将主存和外存结合起来,为用户提供比实际主存更大的存储空间的技术。虚拟存储器的实现方式有分页存储管理、分段存储管理和段页式存储管理。
7. 什么是总线?总线的分类有哪些?
总线是计算机各部件之间传输信息的公共通道。总线的分类有:
- 按传输信息类型:地址总线、数据总线、控制总线
- 按连接部件:内部总线、系统总线、外部总线
- 按在计算机中的作用:主存总线、I/O 总线、DMA 总线
8. I/O 控制方式有哪些?各有什么优缺点?
I/O 控制方式有程序查询方式、中断驱动方式、DMA 方式和通道方式。
- 程序查询方式:优点是简单,缺点是 CPU 利用率低
- 中断驱动方式:优点是 CPU 利用率高,缺点是数据传输速度慢
- DMA 方式:优点是数据传输速度快,缺点是需要 DMA 控制器
- 通道方式:优点是可以独立执行通道程序,缺点是成本高
参考资料
- 《计算机组成原理》(第五版),白中英 主编
- 《计算机组成与设计:硬件/软件接口》(第五版),David A. Patterson 等著
- 《计算机组成原理》(第四版),唐朔飞 主编
- 《深入理解计算机系统》(第三版),Randal E. Bryant 等著
总结
计算机组成原理是计算机科学与技术专业的核心课程,它主要研究计算机的硬件组成、工作原理和设计方法。本文从计算机系统概述入手,详细介绍了数据的表示和运算、指令系统、中央处理器、总线系统、存储器系统、输入输出系统和计算机系统的结构等内容,并解答了一些常见的计算机组成原理面试题。
通过学习本文,读者可以对计算机的硬件组成和工作原理有一个全面的认识,理解计算机各部件之间的关系和相互作用,掌握计算机设计的基本原理和方法。计算机组成原理是学习计算机体系结构、操作系统、编译原理等课程的基础,对于理解计算机系统的整体架构和工作机制至关重要。
随着计算机技术的不断发展,计算机的硬件结构和工作原理也在不断更新和完善,读者应该保持学习的热情,关注计算机硬件技术的最新发展,以便更好地理解和应用计算机技术。