计算机组成原理易错点易忘点总结
- 正负数算数移位总结:
机器数形式 | 空位补数 | |
---|---|---|
正数 | 原,补,反 | 0 |
原码 | 0 | |
负数 | 补码 | 左0右1(左邻右舍) |
反码 | 1 |
对于1.0000(补),真值为-1,左移0移丢,补码值不变,为-1,而非-2,也算溢出
-
循环移位
-
各种符号简写
CF:进位标志位 -
定点数加减法运算
原码:符号位和数值位需要分开处理
补码:符号位和数值位一样直接参与运算,溢出位丢掉。。
大于机器数能表示的叫上溢:
第三章.存储器
- CPU不会和外存直接交换信息
- 存储器按存取方式分类:RAM,ROM,串行访问存储器(磁盘,磁带,光盘)
- 存储器的构成:
cache | 主存 | 辅存 |
---|---|---|
SRAM | DRAM+ROM(存放主板厂家信息) | ROM |
-
衡量存储器速度
数据传输率=数据宽度/存储周期
存取时间:启动存储器~完成操作(类比)
存取周期:启动存储器~下一次启动存储器
存取时间<=存取周期 -
主存带宽=数据传输率
-
RAM
SRAM:双稳态触发器,无需刷新
DRAM:电容存储器,需要刷新。三种刷新 -
ROM分类
MROM:出厂后无法改变内容
PROM:出厂后可编程一次
EPROM:可擦除,可修改多次(写入次数有限,写入慢,不能代替RAM)
E 2 P R O M E^2PROM E2PROM:电可擦除可编程
Flash(闪存):长期保存信息,可快速擦除编写(u盘)
SSD固态硬盘:由Flash芯片阵列制成,保留Flash的特性
!!! CDROM不是ROM!!!是一种光盘 -
ROM也是可读可写的。RAM写入和读出速度可以不同
-
SRAM特点:
1.双稳态触发器
2.非破坏性读出
3.存取速度快(无需刷新),集成度低(6个mos管),功耗大 -
DRAM特点:
1.电容器原理
2.破坏性读出
3.存取速度慢,集成度高(1个mos管),功耗小
4.地址复用,地址线变为1/2,行列分开传 -
DRAM刷新(刷新周期2ms):(类比吃饭)
1.集中刷新:一个刷新周期内,集中一段时间对所有行进行刷新。刷新期间不可访存(死区);读写操作的时候不受刷新影响,存取速度较高。
2.分散刷新:行刷新与工作周期结合。每个工作周期都刷新一行;延长系统工作周期,降低速度;没有死区。(相当于每次操作后都刷新一行)
3.异步刷新:结合1.2。充分利用最大刷新间隔,t=2ms/行数,每隔t时间刷新1行,减少刷新次数(2的缺点),减少死区(1的缺点) -
ROM和RAM的区别:
ROM掉电不丢失信息,RAM掉电丢失信息。(掉电丢失信息≠破坏性读出)
只读->结构简单->位密度高(大容量存储器)->RAM位密度低 -
引脚的最小数目=地址线+数据线+读写控制线(默认为1)+片选线
-
cache分类:
cache可分为L1cache和L2cache,L1cache主要集成在CPU内部,L2cache集成在主板或者CPU上。L1cahce分为指令和数据cache -
局部性原理
时间局部性:近期可能被访问。循环;堆栈
空间局部性:空间地址邻近
顺序局部性:除转移指令,都是顺序进行。顺序执行,数组连续存放 -
cache基本工作原理图
-
cache与主存的映射
cache行=主存块
直接映射:命中率低,cache空间利用率低
tag-cache行号-块内地址
直接映射流程图:
全相联映射:命中率高,cache空间利用率高,线路复杂,成本高,速度慢
tag-块内地址
组相联映射:res=adr%组号;组间直接映射,组内全相联映射。硬件简单,速度快,命中率高
tag-组号-块内地址
18.cahce替换算法
随机替换
先进先出:未依据局部性原理,可能导致命中率低
最近最少使用(LRU):堆栈类算法,局部性原理,每个cache块设置一个计数器(值越大越久未被使用)
最不经常使用:堆栈类算法,每个cache设置一个计数器,表示近期使用情况,(值越小使用次数越少),注意与LRU区别
-
cache写策略
命中:
1.全写法:写命中时,写入cache和内存;写不命中,直接修改内存(不设脏位)
相当于每次不管怎样都必须要访存->慢->在cpu和内存之间加一个写缓冲
2.写回法:设脏位,换出后才修改内存
不命中:
1.写分配法:加载内存块到cache,并更新cache
2.非写分配法:只写入主存,不调入cache
全写法-非全写法(只修改cache)
写回法-写分配法
L1-cache(指令/数据cache)采用写分配法&写回法 -
虚拟内存(结合OS)
-
虚存=主存+外存
-
虚存容量=min(地址结构,磁盘容量)
-
虚存对应用程序员透明
-
虚存逻辑容量=外存+内存
-
三种虚存:
页式虚存:
页面长度固定,对用户透明
存在内部碎片
地址转换:虚页号-页内地址->(页表)->物理页号-页内地址
页表结构:虚页号-有效位-脏位-引用位-物理页号
段式虚存:
存在外部碎片
地址转换:段号-段内地址->(段表)->段首地址-段内地址
页表结构:段号-段首址-有效位-段长
段页式虚存:
先按逻辑分段,再按段分页
一个程序一个段表,一个段一个页表
地址转换:段号-页号-页内地址->物理页号-页内地址 -
段页式便于多道程序的共享
-
快表(TLB):
存在于cache中;用于页式虚存减少访存次数;全相联或组相联;存储虚页号和实页号的映射关系;TLB项=Tag-有效位-物理页号 -
TLB和页表和cache的关系
TLB | 页表 | cache | 结论 |
---|---|---|---|
命中 | 命中 | 命中 | TLB命中,页表一定命中,主存一定有,cache可能命中 |
命中 | 命中 | 不命中 | TLB命中,页表一定命中,主存一定有,cache可能不命中 |
不命中 | 命中 | 命中 | 页表命中,TLB不一定命中,主存一定有,cache可能命中 |
不命中 | 命中 | 不命中 | 页表命中,TLB不一定命中,主存一定有,cache不一定有 |
不命中 | 不命中 | 不命中 | 页表不命中,主存没有,cache和TLB必然不命中 |
TLB命中与否与cache命中与否没有关系
主存没有,cache和TLB必然没有
TLB是页表的子集;cache是内存的子集
-
cache纯硬件实现,对所有程序猿透明;虚存由操作系统和硬件共同实现,对应用程序员透明,系统程序员可见(需要修改调度替换策略)
-
AB=MAR位数,AB位数决定了最大可寻址空间
-
DB=MDR位数
-
CB 控制读写操作及总线周期的类型
-
为了节省页表本身占用的主存空间,一些系统把页表存储在虚存中,因而页表本身也要进行分页。当一个进程运行时,其页表中一部分在主存中,另一部分则在辅存中保存。
-
系统采用二级页表结构。每个进程有一个页目录表,其中的每个表
项指向一个页表。 -
MAR 可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址
-
一个字=16B
-
透明
虚拟存储器中,数据调动对应用程序员透明 -
主存=存储体+外围电路
-
外围电路包括:地址译码器,数据寄存器,读写控制电路
-
长:
存储字长:一个存储单元的二进制位数
数据字长(字长):计算机一次能处理的位数
存储字长和字长不一定相等 -
寄存器内的符号简写
DS:段寄存器 -
主流处理器采用小端存放,如Intelx86,Risc-V处理器,也有大小端同时使用的,如MIPS处理器。除处理器外,数据传输等也存在数据选择的问题。
-
驱动器:一条选择线带很多存储位时负载过大
-
DRAM的动态刷新行地址由刷新地址寄存器产生,而不是由CPU产生,。
-
分散刷新由于刷新过于频繁,影响系统速度,不适合高速存储器
-
双端口的速度不可能提高两倍:存在读写冲突
-
单体多字存储器=位扩展;多体交叉=字扩展
-
计算机中的内存插槽插入一个或者多个内存条都可以工作,就是典型的顺序编址方式。
-
低位交叉编码中每个存储体有独立的地址寄存器,数据寄存器,读写控制电路。
-
低位交叉存储器适合突发的顺序访问模式
-
相联存储器:与一般的按的地址访问的存储器不同,相联存储器CAM是一种按内容极限访问的存储器,用于存放查找表,存储的基本数据单元是键值对。
-
CAM中每个存储单元都对应一个独立的比较器。
-
直接相联查找表不放在相联存储器中,各cache行只需要放在一块就行了。直接相联只需要一个共享的比较器即可。
-
直接相联无需使用复杂替换算法。
-
k-路组相联:每组k行
-
全相联并发比较
-
L1-cache:Cache和处理器集成在同一芯片内。
-
磁盘缓存buffer cache:软件方式优化磁盘访问性能。
-
磁盘页面包括:交换分区和数据分区。交换分区存放主存页面换出的动态修改数据。数据分区用于存放存储用的用户数据和程序。
-
每个进程都有独立的虚拟地址空间,因此每个进程都有一张页表,页表属于进程控制信息,存放在进程地址空间的内核中。
-
页表在内存中首地址记录在页表基址寄存器中,进程切换只需要简单切换页表基址寄存器的值即可。
-
一次完整的刷新需要占用一个访存周期