Advertisement

CSAPP第四章读书笔记

阅读量:

(1)将指令编码成为字节序列

每一个不同类型的指令都有着不一样的起始字节,根据类型的不同编码的长度和格式也不一样。

这里写图片描述
这里写图片描述

注意立即数和地址在小端序列的存储中要倒着排序。

(2)我们可以探测IA32指令上push %esp的行为,到底是把原始值入栈,还是把减去4以后的值入栈。

这里写图片描述

最后发现保存的是原始值.

(3)布尔表达式与组合电路

写出xor的逻辑表达式: (!a&b;)|(!b&a;)

写出一个HCL表达式来表示寻找三个数中中间的值:

这里写图片描述

(4)取指,译码,执行,访问,回写,更新这几个步骤是每一条指令的通用步骤,但并不是每一个步骤都要被执行的。下面看某一条指令执行的步骤:

这里写图片描述

(5)SEQ的设计,这一部分介绍了如何将执行不同的指令处理成一个统一的流程,这样就可以利用很少的硬件的和时钟周期完成。稍微浏览了一下大意。

(6)流水线的基本设计单独的处理每一个指令周期效率很低,所以我们需要以流水线的方式来进行设计。流水线的每一部分可以处理一个阶段的操作,这样可以同时运行多条指令。下面看一个例子:

这里写图片描述

请分析不同阶数的流水线的吞吐量以及延迟以及需要哦多少阶的流水线可以达到最大吞吐。

分析:抓住关键点,指令周期受限制于最慢的一个阶段,二阶为例子,我们将寄存器安放在一个位置使得两边的延迟尽可能接近,所以发现80+30+60,50+70+20这样分阶段是最优解。

这里写图片描述

全部评论 (0)

还没有任何评论哟~