计算机技术指标
CPU执行时间:
$$Te = m/F$$
$$Te = m*T$$
m:CPU时钟周期数;T:时钟周期;F:频率
CPI 每条指令平均时钟周期数:
$$CPI = m/IC$$
$$CPI = \sum\limits_{i=1}^N (CPI_i*IC_i)/IC$$
IC:指令条数(总的)
MIPS每秒百万条指令数:
$$MIPS = IC/(Te*10^6)$$
$$MIPS = F/(CPI*10^6)$$
存储系统
半导体容量扩展:
1.线选法
用一根地址线选择一块芯片
2.全译码法
将全部地址线译码,地位直接用于片内寻址,高位用译码器译码后进行片选。(地址唯一、连续、没有地址重叠)
3.部分译码法:
将高位地址的部分地址线用于译码,部分不参与译码(所以可能会产生地址重叠,比如最高位为1和为0选择同一芯片,所以地址就重叠了)。
拓展方式:
1.位拓展方式
拓展每个字的位数
将芯片的地址线、片选信号和读写控制并联(视为一个芯片),然后将数据线分别连到各个芯片。
2.字拓展方式
拓展字数
将芯片的地址线、数据线和读写控制并联,然后将片选信号连到各个芯片。
3.字位拓展方式
同时拓展字数和位数
将所有芯片的读写控制线连到一起
将同一区域(位扩展)的芯片片选信号连到一起,不同区域的片选信号分开
将同一区域中不同芯片的数据线分别连接到应有的位置上
Cache:
读:
CPU发出读请求后,先由Cache控制器判断请求的字是否在Cache中,若命中,则对Cache读,否则从主存读所需字送CPU,并把该字所在块送Cache,如果Cache已满,则调用替换算法。
写:
1、写直达:
在写数据时既写入主存又写入Cache。
2、写回法:
在写入数据时先写入Cache,直到该块被替换时才写入主存。每个块需要设置一个“修改位”来判断是否要将这个块存回主存原来位置。
Cache主存地址映像与变换
1.全相连映像:
将主存中的块映射到Cache中的任意一块,使用相联存储器按内容寻址。
1 |
|
2.直接映像:
将主存映射到Cache中的一个固定块位置
$$i = j mod C $$
$$i = j mod 2^c$$
i:Cache块号;j:主存块号 C:块数 c:Cache位数
1 |
|
3.组相连映像:
先把Cache分为Q组,每组R块
$$k = j\ mod\ Q$$
k:Cache组号;j:主存块号
块号为j的主存块影响到Cache中的块号为:
$$i = k*2^r+h$$
$$2^r$$:组内块号。r= 1, 每组2块;h:组内偏移,这个值是随机的,由于主存的一块会映射到Cache某组的任意一块。
r=0:每组1块,此时直接映像;r=c:每组$$2^c$$块,也就是只分一组,此时组内块号就是块号(Cache块号与主存块号),此时为全相连映像。
1 |
|
1 |
|
指令系统
1、指令根据操作码数目分为零地址、一地址、二地址、三地址指令等。
指令系统设计
固定长编码:所有操作码的长度都是相等的。
Huffman编码:根据指令的出现概率编码,概率大的长,概率小的短。
编码过程:按出现概率自左向右排序,然后抽出概率最低的两个形成一个树,根节点是两者之和。然后重复,直到根节点概率为1。
指令由Huffman树确定,左边的子节点为0,右边为1,以此类推。
扩展编码:
a/b(m-n)扩展编码:a、b是有相同长度的编码数目,m、n是码长。
比如2/7、2-4代表的是同一种编码。
其中,比较短的编码的全1(比如:1111)一般用于作为前缀,代表切换至更长长度的编码。
算编码数:以编码为3-6-9-扩展编码为例
$$S_9 = ((2^3-S_3)\cdot2^{6-3}-S_6)\cdot2^{9-6}$$
其中,Sn代表码长为n的编码数目。
解释:$$2^3-S_3$$ 表示了在表示完码长为3的编码后,剩余的前缀数目。这些前缀可以用来拓展到6位。如果剩余的前缀越多,可以拓展出的组也就越多,然后再乘以每组可以表示的6码长编码数目(由于前3位是前缀,实际上只有$$2^{6-3}$$种结果),得到一共可以表示多少码长为6编码,再减去实际的,得到前缀数,以此类推,得到码长为9的编码可以表示的数目。
控制器
控制器基础
控制器组成
程序计数器PC:存指令的地址
指令寄存器IR:保存指令的内容
指令译码器ID:分析识别是怎样的指令
地址形成部件:根据不同的寻址方式形成操作数的有效地址。
脉冲源:作为时钟脉冲
启停线路:计算机启动信号,启动后时钟脉冲才能进入,然后启动节拍信号发生器开始工作。
节拍信号发生器:将脉冲转换为各个设备所需要的节拍信号
控制单元:将指令发出的各种控制信号按节拍分配。
中断控制逻辑:控制中断。
寄存器:
通用+PC+IR+AR(记录主存单元地址)+DR(数据缓冲寄存器,在CPU和主存间形成缓冲)+PSW(记录各种条件码,比如进位)
微程序控制
关于容量:
CS容量:$$2^{N_{AR}} \cdot N_{IR} $$,前者代表多少指令,后者代表每条指令多少位
IR位数:微程序位数,否则放不下
AR位数:下址位数
微指令编码方式:
直接控制法:每一位代表一个微命令
字段直接编译法:
1、微命令数=$$2^n-1$$,因000要代表不发出微命令。
2、每个互斥类可能有多个编码,但是互斥类之间是平行排布的,平铺在控制字段。下址字段则是固定的,存下条指令地址。
例如:
1 |
|
微指令执行方式:
串行方式:在一条微指令执行完毕后才会执行下一条
并行方式:在一条微指令执行时,就取下一条微指令