计算机组成原理
- 第一章 计算机系统概论
-
- 1.1 计算机开发过程
- 1.2 计算机硬件的基本组成
- 1.3 各硬件部件
- 1.4 计算机系统的层次结构
- 1.5 计算机性能指标
- 1.6 软件分类与工作流程
- 第二章 操作方法和操作器
-
- 2.1 数值与编码
- 2.2 定点数的表示和操作
- 2.3 浮点数的表示和运算
- 2.4 算术逻辑单元ALU
- 第三章 存储系统
-
- 3.1 存储系统的基本概念
- 3.2 半导体随机存储器
- 3.3 主存储器和CPU的连接
- 3.4 高速缓冲存储器
- 第四章 指令系统
- 第五章 中央处理器
- 第六章 总线系统
- 第七章 外围设备
- 第八章 输入输出系统
第一章 计算机系统概论
1.1 计算机开发过程
硬件 软件
第一代:电子管时代 第二代:晶体管时代 第三代:中小型集成电路时代 第四代:大规模集成电路时代
- 更微型,多用途
- 更巨型、超高速
1.2 计算机硬件的基本组成
- 输入设备:将信息转换成机器能识别的形式
- 输出设备:将结果转化为熟悉的形式
- 存储数据和程序
- 操作员:算术操作、逻辑操作
- 控制器:指挥各部件,使程序运行
存储程序概念:以二进制代码的形式提前将指令输入计算机的主存储器,并按位置顺序执行。 冯·诺依曼计算机设计思想:按地址顺序执行存储程序。 软硬逻辑在计算机系统中等效。 冯机特点: ①五部分组成:I/O、存储器、计算器、控制器 ②指令与数据以同等地位存于存储器,可按地址寻访 ③指令和数据都是二进制的表示 ④指令由操作代码和地址代码组成 ⑤存储程序 ⑥以运算器为中心,IO通过运算器与存储器相连
以存储器为中心 CPU=运算器 控制器
1.3 各硬件部件
- 存储体 存储单元:存储器有多个单元,每个存储单元存储一串二进制代码 存储字:存储单元中二进制代码的组合 存储字长:单元中二进制代码位数 存储元:存储二进制电子元件(电容器),每个可存储1bit。
- MAR 地址寄存器:用于指示要读写的存储单元。 其位数反映了存储单元的数量
- MDR 数据寄存器:临时存储要读写的数据 其位数=存储字长
- ACC 累计计数器:存储操作数、操作结果
- MQ 乘客寄存器:乘法和除法使用
- X 通用寄存器:存储操作数
- ALU 算数逻辑单元:用电路实现各种算术操作,逻辑操作
- PC 程序计数器:存储下一个指令的地址
- IR 指令寄存器:存储当前执行的指令
- CU 控制单元:分析指令,给出控制信号
1.4 计算机系统的层次结构
M四、高级语言机 编译程序翻译汇编语言 M三、汇编语言机 编程翻译 M2.操作系统机器 向上提供广义指令系统调用 M1:传统机器 执行二进制指令 M0:微程序机 硬件执行微指令
-
高级语言、汇编语言、机器语言
-
编译程序-将高级语言翻译成汇编语言,或直接翻译成机器语言
-
汇编程序-将汇编语言翻译成机器语言
-
解释程序-高级语言翻译为机器语言(翻译一句执行一句)
翻译程序统称为汇编、编译和解释
1.5 计算机性能指标
MAR位数反映了存储单元的数量 MDR 每个存储单元的大小
时钟周期:CPU最小单位时间 主频:1/时钟周期,Hz CPI:执行指令所使用的周期数 CPU执行时间:操作程序所需的时间=(指令条数IC*CPI)/主频 MIPS:每秒执行多少百万条指令?=主频/平均CPI MFOPS:每秒执行多少百万浮点运算?
吞吐量:系统在单位时间内处理请求的数量,取决于主存存取周期 响应时间:发送请求得到结果的时差,包括CPU时间和等待时间
1.6 软件分类与工作流程
-
系统软件 OS,语言处理、服务程序、数据库管理系统 程序用于提高使用效率,发挥和扩大计算机功能和用途。
-
应用软件 工程设计、数据处理、自动控制、企业管理 编制的程序用于解决某些问题。
- 程序和数据转入主存,程序从起始地址执行
- 第一个指令从起始地址取出,译码执行并计算下一个指令
- 取出下一条指令,再取值,译码,循环往复,直到结束
第二章 操作方法和操作器
2.1 数值与编码
真实值:机器数表示的实际值
- 8421码 每四个二进制对应一个十进制,每个权值对应8421 0000~1001 分别对应 0~9 如果加法后溢出,则需要 0110修正(强制进位)
- 余3码 即8421码 (0011)3
- 2421码 2421对应权值 0~4 最高位为0,5~9 最高位为1
-
ASCII码 七位二进制表示字符代码,奇偶校准位在最高位置 在字节中存储一个字符,但多余的最高位为0 共128字符,0~31、127 控制/通信字符32~126 可印字符
-
汉字表示和编码 区位码:四位十进制数,前两位为区,后两位为位 国际码:区位码 2020H 内码:国际码 8080H
-
字符串 从低地址到高地址逐字存储,常用 ‘\0’ 作为结束标志 对于多字节数据(汉字),可/小端存储模式 大端模式:低地址单元存储最高有效的数据字节 小端模式:高地址单元存储数据最高有效字节
-
奇偶校验码
码字:由若干代码组成的一个字 码距:各合法码字间的最小距离 -
海明码
-
循环冗余校验码
2.2 定点数的表示和运算
原码除法: 1.恢复余数法 实现方法: ACC 存储 被除数/余数 ALU实现运算 MQ 存取 商 初试默认全零 每次默认商1 X通用寄存器 存储 除数 过程:每次都商1 即被除数-除数负值的补码 若结果符号位为负,就加正值补码恢复原来的被除数/余数 重新商0 再做减法,逻辑左移 循环结束
2.加减交替法 硬件存放与1相同 过程:若新余数为负 则商0,余数左移并+除数正值补码 ,若为正值,则商1余数左移并+余数负值补码(等价余数左移-除数),最后若余数为负,需商0并+正值补码得到正确的余数。
补码除法: 加减交替法: 判断被除数和除数是否同号 ,若同号 商1减去除数 ,反之商0 加上除数 下轮余数判断相同
强制类型转换 1.无符号数与有符号数转化,不改变内容,改变解释方式 2.长整数变短整数,高位截断,低位保留 3.短整数变长整数,符号扩展有符号数符号位为1,前面补1;无符号数补位补0
数据存储与排列 大小端模式 大端方式:低位地址存高位更方便人类阅读 小端方式:低位地址存低位更方便机器处理
边界对齐 字=存储字长 半字=1/2字 1字节=8bit 每次访存只能读/写1个字 边界对齐空间换时间,空间填充
2.3 浮点数的表示和运算
浮点数表示 阶码和尾数 阶码包括阶符和阶码的数值部分 尾数包括数符和尾数的数值部分 浮点数的真值:N=r^E*M r阶码的底一般为2 阶码E反映浮点数的表示范围以及小数点实际位置 尾数M数值部分位数n反映浮点数的精度
尾数规格化 尾数最高位为0:尾数算数左移一位,阶码-1,直到尾数最高位是有效值(左规) 右规:当浮点数运算结果尾数出现溢出时,将尾数算数右移一位,阶码+1
原码尾数规格化 正数为0.1xxxx… 其最大值为0.1111…1;最小值为0.10…0。 表示范围为:1/2<=M<=1-2^-n. 负数为1.1xxxx… 其最大值为1.100…0;最小值为1.11…1。 表示范围为:-(1-2^-n)<=M<=1/2
补码尾数规格化 正数为0.1xxxx… 其最大值为0.1111…1;最小值为0.10…0。 表示范围为:1/2<=M<=1-2^-n. 负数为1.0xxxx… 其最大值为1.011…1;最小值为1.00…0。 表示范围为:-1 <= M <= -(1/2+2^-n)
IEEE 754 移码:补码基础将符号位取反 移码定义为:移码=真值+偏置值 偏置值=2^(n-1) 此时真值取0,移码为1000 0000 偏置值=2^(n-1) -1 此时真值取1,移码为1000 0000
标准:数符 阶码,移码表示 尾数数值,原码表示(隐藏表示最高位1,表示1.M)
2.4 算术逻辑单元ALU
第三章 存储系统
3.1 存储系统的基本概念
- 高速缓存(cache)
- 主存储器(主存、内存)
- 辅助存储器(辅存、外存)
- 主存——辅存:实现了虚拟存储系统,解决存储容量不够的问题
- cache——主存:解决了主存与CPU速度不匹配的问题
- 按层次结构
- 按存储介质 半导体存储器、磁表面存储器、光存储器
- 按存取方式 随机存取存储器RAM(如内存)、顺序存取存储器SAM(如磁带)、直接存取存储器DAM(如磁盘)、相联存储器CAM(可按内容访问,如快表)
- 按信息可更改性 读/写存储器、只读存储器ROM
- 断电信息是否消失 易失性存储器(如内存、cache)、非易失性存储器(如磁盘、光盘)
- 信息读出后是否被破坏 破坏性读出(如DRAM芯片)、非破坏性读出(如SRAM芯片、磁盘)
- 存储容量=存储字长*字长
- 单位成本=总成本/总容量
- 数据传输率(主存带宽)=数据的宽度/存储周期
- 存取周期=存储时间+恢复时间
3.2 半导体随机存储器
- 存储矩阵:大量相同的位存储单元组成
- 译码驱动:地址信号翻译成对应的存储单元的选通信号
- 读写电路:完成读写操作
- 读/写控制线:决定芯片是R/W
- 片选线:确定哪个芯片被选中
- 地址线:单项输入,位数与存储字的个数有关
- 数据线:双向,位数与读出或写入的数据位数有关
- 数据线数与地址线数共同反映存储芯片容量大小
- 半导体随机存储器根据存储原理不同分为SRAM高速缓存与DRAM主存
SRAM
- 使用双稳态触发器MOS记忆信息
- 非破坏性读出、易失性存储器
- 存取速度快、集成度低、功耗大、成本高、常用来组成高速缓存
- 同时送行列地址
DRAM
-
利用电荷存储信息
-
破坏性读出、易失性存储器
-
存取速度慢、集成度高、功耗低、容量大、成本低,常用来组成主存
-
分两次送行列地址(地址线复用)
-
刷新方法 DRAM特有 ①刷新单位是行 ②集中刷新 刷新时间固定 存在死区 读写不受刷新影响,存取速度快 死区不能访问存储器 ③分散刷新 将每行刷新分散到各个工作周期 没有死区 存取周期长,降低整机速度 ④异步刷新 集中与分散的结合 缩短死时间、又提高整机速度 ⑤透明刷新 刷新安排在译码阶段,不存在死亡时间
-
存储器的读写周期 RAM读周期:两次连续读操作必须间隔时间 RAM写周期:数据总线的信息能可靠的写入存储器
ROM特点
- 随机存储、非易失性存储器
- 结构简单、位密度比可读写存储器高
ROM类型
-
掩膜式只读存储器MROM:真只读,不可重写 可靠性高、集成度高、价格便宜、灵活性差
-
可编程只读存储器PROM:写一次不可修改
-
可擦除可编程只读寄存器:EPROM:可以多次重写 紫外线擦除所有信息UVEPROM 电擦除特定信息EEPROM
-
闪速存储器Flash Memory:可以多次快速擦除重写(U盘、SD卡) 可长期保存信息、可重写 价格便宜、集成度高 擦写速度快
-
固态硬盘SSD:可以多次快速擦除重写
3.3 主存储器和CPU的连接
主存容量的扩展:
- 字扩展:多个存储芯片串联 4片16K8位 = 64K8位
- 位扩展:多个存储芯片并联 8片8K1位 = 64K8位
- 字位扩展:增加存储字数量,增加存储字长
存储器与CPU连接
- 地址线选择:芯片容量不同地址线不同,CPU低位直接相连,高位做扩充芯片
- 数据线连接:CPU线数与存储器线数相同直接连接,不同就位扩展
- 读写线连接:高电平为读,低电平为写
- 片选线连接:决定哪一片存储芯片被选中
3.4 高速缓冲存储器
空间局部性原理:将要使用的信息是空间附近的信息 时间局部性原理:将要使用的信息是现在使用的信息
-
全相联映射 主存数据可以任意存放 增加一个有效位
-
直接映射 每个主存块 只能放到一个特定的位置 cache块号=主存块号%cache块数 标记+行号/主存块号 块长 空间利用不充分,命中率降低
-
组相联映射 分若干组,可以放到组内任意位置 组号=主存块号%组数 标记+组号/主存块号 块长
直接映射直接替换,不需算法,算法以全相联为例
- 随机算法RAND:随机确定替换的cache块 实现简单、但没有局部性原理,命中率低
- 先进先出算法FIFO:替换最早进入的 容易实现、但没有局部性原理,命中率低
- 近期最少使用LRU:设置一个计数器记录多久没有访问,替换计数器最大的 需要注意的是当命中时,命中行的计数器清零,且比其低的计数器加1,其余不变
- 最不经常使用算法LFU:替换计数器记录访问次数最少的 不符合局部性原理(一段时间一直使用将次数升高,但后续不再使用却因权值太高不好替换)不如LRU
写命中 写不命中 多级cache(通常分为三级)