流水线技术
流水线技术是指在程序执行时,多条指令重叠进行操作的一种任务分解技术。把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构来负责执行,而这些执行机构可以同时并行工作。
(1)计算执行时间
假定有某种类型的任务,可以分为N个子任务,每个子任务需要时间t,则完成该任务所需的时间为N x t。
*若以传统的方式,完成k个任务需要的时间是kNt。
*使用流水线技术,花费的时间是Nt + (k-1)t。
注意,如果每个子任务所需的时间不同,其时间取决于执行顺序中最慢的那一个。
<1>流水线的吞吐率
指在单位时间内流水线所完成的任务数量或输出的结果数量。
TP &#61; n / Tk
n为任务数&#xff0c;Tk是处理完成n个任务所用的时间
<2>加速比
是指不采用流水线的执行时间/采用流水线的执行时间。
用来衡量并行系统或程序并行化的性能和效果。
&#xff08;2&#xff09;影响流水线的主要因素
*转移指令&#xff1a;因为前面的转移指令还没有完成&#xff0c;流水线无法确定下一条指令的地址&#xff0c;因此也就无法向流水线中添加这条指令。
*共享资源访问的冲突&#xff1a;后一条指令需要使用的数据&#xff0c;与前一条指令发生冲突&#xff0c;或者相邻的指令使用了相同的寄存器
*响应中断&#xff1a;当有中断请求时&#xff0c;流水线也会停止。对于这种情况有两种响应方式&#xff1a;
>精确断点法&#xff1a;立即停止&#xff0c;这种方法能够立即响应中断&#xff1b;
>不精确断点法&#xff1a;流水线中的指令继续执行&#xff0c;不再新增指令到流水线。
一、指令系统
指计算机所能执行的全部指令的集合&#xff0c;它描述了计算机内全部的控制信息和“逻辑判断”能力。
一条指令包括&#xff1a;
*操作码
*地址码
根据地址码代表的地址类型&#xff0c;指令系统可以分为&#xff1a;
*立即寻址
*直接寻址
*剪接寻址
*寄存器寻址
*寄存器间接寻址
二、RISC与CISC
*为提高操作系统的效率&#xff0c;人们最初选择向指令系统中添加更多、更复杂的指令来实现&#xff0c;导致指令集越来越大。这种类型的计算机&#xff0c;称为复杂指令集计算机&#xff08;CISC&#xff09;。
*对指令数目和寻址方式做精简&#xff0c;指令的指令周期相同&#xff0c;采用流水线技术&#xff0c;指令并行执行程度更好&#xff0c;这类是精简指令集计算机&#xff08;RISC&#xff09;。
复杂指令系统计算机&#xff08;CISC&#xff09;的主要特点
&#xff08;1&#xff09;指令数量多&#xff1a;指令系统拥有大量的指令&#xff0c;有100-250条。
&#xff08;2&#xff09;指令使用频率相差悬殊&#xff1a;最常使用的是一些比较简单的指令&#xff0c;80%的时候使用的是20%指令。
&#xff08;3&#xff09;支持很多中寻址方式&#xff1a;通常为5-20种。
&#xff08;4&#xff09;变长的指令&#xff1a;指令长度不是固定的&#xff0c;变长的指令增加指令译码电路的复杂性。
&#xff08;5&#xff09;指令可以对存储器单元中数据直接进行处理&#xff1a;典型的CISC处理器通常都有指令能够直接对内存单元中的数据进行处理&#xff0c;其执行速度较慢。
精简指令系统计算机&#xff08;RISC&#xff09;的主要特点
&#xff08;1&#xff09;指令数量少&#xff1a;优先选取使用频率最高的一些简单指令以及一些常用指令&#xff0c;避免使用复杂指令。
&#xff08;2&#xff09;指令的寻址方式少&#xff1a;通常只支持寄存器寻址方式、立即数寻址方式以及相对寻址方式。
&#xff08;3&#xff09;指令长度固定&#xff0c;指令格式种类少&#xff1a;因为RISC指令数量少&#xff0c;
格式相对简单&#xff0c;其指令长度固定&#xff0c;指令之间各字段的划分比较一致&#xff0c;译码相对容易。
&#xff08;4&#xff09;只提供了Load/Store指令访问存储器&#xff1a;只提供了从存储器读数Load和把数据写入存储器Store两条指令&#xff0c;其余所有的操作都在CPU的寄存器间进行。
&#xff08;5&#xff09;以硬布线逻辑控制为主&#xff1a;为了提高操作的执行速度&#xff0c;通常采用硬布线逻辑来构建控制器。
&#xff08;6&#xff09;单周期指令执行&#xff1a;因为简化了指令系统&#xff0c;很容易利用流水线技术使得大部分指令在一个机器周期内完成。
&#xff08;7&#xff09;优化的编译器&#xff1a;RISC精简指令集使编译工作简单化。