0%

计组复习笔记(五)

冯诺依曼计算机工作方式的基本特点:按地址访问并顺序执行指令

指令寄存器(Instruction Register,IR)用来保存当前正在执行的一条指令。程序计数器(Program Counter,PC)用来指出下一条指令在主存储器中的地址。

[例题]一个四路组相联的cache共有64块,主存共有8192块,每块32字,则主存地址中字块标记,组地址,块内地址的位数分别是:9,4,5

从题中可看出:
每块32字所以块内地址为5位,2的5次方等于32,.
64/4=16组,2的4次方等于16,所以组地址为4位,(如果是直接相连的话,那么就是2的6次方等于64,块地址就为6位了,但是这里是4路组相连,所以是组地址,而不是块地址)
然后主存一共有8192*32个字,取LOG,也就是18位,
所以字块标记为18-5-4=9位.
主存字块标记 组地址 块内地址
9位 4位 5位 不要总认为地址就是32位呀!!!

浮点乘法判溢出的时刻是:阶码求和之后尾数相乘并规格化之后

RISC有乘除指令和浮点运算指令。RISC的主要目的是减少指令数。

在微程序处理器中,N种微操作,控制字段要设置的位数是$log_2N向上取整+1$ 考虑N=1的情况

在规格化数表示中,保持其他方面不变,将阶码部分的移码改为补码表示,则数的表示范围不变。

认真读题——“每次取一个字节PC自动加1”,“两个字节”

寄存器间接寻址方式:寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。操作数处于内存单元中。

寄存器相对寻址方式:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。

为提高存储器存取效率,通常将同一文件存放在不同面的同一磁道上。

正数的反码等于其原,而负数的反码则可以通过保留其符号位,将原的数值得到。

硬件向量法, 就是通过向量地址来寻找设备的中断服务程序入口地址,而且向量地址是由硬件电路产生的。

题目3.47 下面C代码实现了一个4阶FIR滤波器,输入为数组 sig_in 。设所有数组元素为16位定点数。假设你要面向 一个具有SIMD指令集且有128位寄存器的处理器,用汇编语言优化该代码。在不知指令细节的情况下,简要介绍一 下如何实现该代码,最大限度用字并行操作,并使寄存器和存储器间数据传送量最少。

1
for (i=3;i<128;i++)    sig_out[i] = sig_in[i-3]*f[0]+sig_in[i-2]*f[1]+sig_in[i-1]*f[2]+sig_in[i]*f[3]

伪代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
F=[f[3],f[2],f[1],f[0],f[3],f[2],f[1],f[0]]
B=[sig_in[7],sig_in[6],...,sig_in[0]]
for(i=0;i<16;i++)
A=[sig_in[i*8+7],...,sig_in[i*8+0]]
if i>0
// 为了保证i=0时不会数组下界溢出
B=[sig_in(i-1)*8+7,...,sig_in[(i-1)*8+0]]
for(j=0;j<4;j++)
C=A*F
sig_out[i*8+j+4],sig_out[i*8+j]=C[127:64],C[63:0]
A=A<<16*1bit
E=B>>16*7bit
A=A OR E
B=B<<16*1bit// 为A提供持续最右侧sig_in[]

==作业5.7.1==:j的初始值应为3,条件是≥0,–j;另外在i=0时要将B设为全0

吞吐率:单位时间内流水线所完成的任务数量或输出结果的数量

效率

加速比

Cache的字块内地址 VS Cache的字块地址

正数的补码反码和原码是一样的。原码和补码之间的互换方式都是除符号位之外,按位取反,末位加1

28

推断 跳转指令的转移地址 (PC+4)+(OFFSET)*4

条件转移指令的相对位移量(16位,用补码表示)的范围为:$-2^{15}至 +(2^{15}-1)$(是相对于转移指令的下调指令而言)。及最多往前调到第32768条指令(131072个单元),最多往后跳到第32767条指令(131068个单元)。

无条件转移指令的目标地址范围为:0~$2^{26}-1$(相对于下条指令),即,最近就跳到下条指令,最远跳到后面的$2^{26}-1$条指令

注意计算时int+short时的符号扩展

对阶操作不会引起阶码的溢出,因为是小阶向大阶对齐;右规可能造成阶码上溢;左规可能造成阶码下溢;尾数舍入过程,阶码加 1 而可能上溢;尾数溢出时结果不一定溢出。

某计算机的Cache共有32块,采用8路组相联映射方式。每个主存块大小为16字节,按字节编址。主存133号单元所在主存块应装入到的Cache组号是 0

汇编指令与流水线结合,如何修改给定的汇编代码,使得总指令周期最短?涉及到冒险的知识? Cache和虚存,已知Cache和内存表,给出访问要求,列出命中情况

29

(3)

在1000条指令过程中共访问存储器1500次,其中1410次仅访问一级Cache,54次访问至二级Cache,36次访问主存储器,要求它们的平均值:

$(14101+5410+36*100)/1500=3.7$

(4)

访存这一个动作,理论上只需要一个周期,一条指令有1.5次访存,也就是1.5个周期。而实际用了3.7个周期,多出来的2.2个时钟周期即为访问存储器导致的停顿。

(5)

每条指令访存1.5次,每次访存需要3.7个周期,只考虑访问存储器的话,CPI=1.5*3.7=5.55

1560692574537


今天是很美好的一天,因为和爸爸说了“父亲节快乐!”