流水线化的目的就是每个时钟周期都发射一条指令,也就是说每个时钟周期都有一条新指令进入执行阶段,同时有一条旧指令退出执行流程。
流水线化会增加吞吐量(throughout),但同时也会增加一条指令从头到尾执行的全部时间,即延迟(latency),–延迟增加的原因是,多出来的流水线寄存器的时间开销。
流水线阶段之间的指令转移由时钟信号控制,并且时钟信号控制在每隔特定的时间间隔加载流水线寄存器。流水线寄存器采用时钟寄存器,其由时钟信号控制加载输入值,信号转播到流水线寄存器的输入,直到时钟上升时,才会改变寄存器的状态。用来保存程序计数器(PC)、条件代码(CC)和程序状态(Stat)等。
[ Read More » ]
14 5 月, 2012 in
Software | tags:
CSAPP |
No Comments
我曾经不只三次翻阅第四章–处理器体系机构,然而至今未能完整读懂,其中的电子学和布尔代数小节,使我深深地为当年的逃课行为感到懊恼,–为此,我特意找了《数字电路简明教程》来补上这一课。下面这些文字,是我在半懂不懂的情况下,“断章取意”摘录的,只做自己的读书笔记。
ISA
指令集体系结构(Instrunction-Set Architecture, ISA)是指处理器所支持的指令和指令的字节级编码,其在编译器编写者和处理器设计者之间提供了一个概念抽象层。
每条指令由若干个字节组成,第一个字节包含了code部分(高四位)和function部分(低四位),不同指令的code部分可能相同,但code和function的二者组合则惟一标识一条指令,并根据其确定其他附加字节的长度和定义,处理器可以无二义性地执行目标代码程序。
[ Read More » ]
12 4 月, 2012 in
Software | tags:
CSAPP |
No Comments
过程调用包括将数据(以参数和返回值的形式)和控制从代码的一部分传递到另一部分,同时,在进入时为过程的局部变量分配空间,并在退出时释放空间。
IA32只提供了对进入过程和退出过程的控制,而数据传递、变量的分配和释放则要通过操作程序栈来实现。x86-64则是通过寄存器而不是栈来传递数据,这样极大地减少了存储器读写操作的数量。
[ Read More » ]
28 3 月, 2012 in
Software | tags:
CSAPP |
No Comments
RAM(Random Access Memory)中文译作随机存取存储器,所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系[1],比如磁盘存储器。
RAM 分为 SRAM 与 DRAM 两大类,二者区别在于前者对干扰(光、电)不敏感,用于高速缓存存储器,后者用于主存和显存,以及数码相机和摄像机中的传感器。
[ Read More » ]
2 2 月, 2012 in
Software | tags:
CSAPP |
No Comments
计算机系统的一个基本概念就是,从机器的角度来看,程序仅仅只是字节序列,机器没有关于初始源程序的任何信息。
在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的字节。但是多个字节如何排布则有两种不同的方式。最低有效字节在最前面的方式,叫做小端法。最高有效字节在最前面的方式,叫做大端法。
绝大多数时候,字节顺序不关紧要,但是有三种情形必须考虑,首先,在不同类型的机器之间通过网络传送二进制数据;其次,反编译代码,阅读表示整数数据的字节序列;还有,在C语言中使用强制类型转换。
[ Read More » ]
7 11 月, 2011 in
Software | tags:
CSAPP |
No Comments