网站建设可以用什么语言,南通网站制作计划,wordpress 分享到,让企业“足不出户” 上海酝酿建设综合性企业服务平台【README】
本文总结自bilibili《计算机组成原理#xff08;哈工大刘宏伟#xff09;》的视频讲解#xff0c;非常棒#xff0c;墙裂推荐#xff1b; 【1】如何提高机器速度 1 提高访存速度多体并行#xff1a;对多个存储体进行交叉访问#xff0c;在一个主存周期中哈工大刘宏伟》的视频讲解非常棒墙裂推荐 【1】如何提高机器速度 1 提高访存速度多体并行对多个存储体进行交叉访问在一个主存周期中有多个存储体向cpu提供数据或 cpu在一个主存周期中访问多个存储器
2 提高IO和主机之间的传送速度 起初io和主机之间是采用程序控制方式该方式下CPU与外设直接不能并行工作
2.1 中断 cpu和外部设备可以在部分实现中并行工作提高了cpu使用率2.2 DMA 直接主存访问用DMA控制器直接在内存和外设之间进行数据传送减少cpu在数据传送过程中的占用率进而提高cpu的使用率2.3 通道 DMA可以划分为多个子通道netty的实现原理子通道间可以同时准备数据但传送需要串行占用cpu周期进一步提高了IO外设与内存间的数据传输率2.4 IO处理机内存和IO设备间的数据传输整个传输过程和数据校验过程完全由IO处理器来做cpu被独立出来和解放出来效率会更高 2.5 多总线 【2】系统并行性 1 并行概念 2.1 并发 两个或多个事件在同一时间段发生 2.2 同时 两个或多个事件在同一时刻发生时间上相互重叠 流水线方式是同时方式的一种
2 并行性的等级 2.1 过程级 2.2 指令级 【3】指令流水原理 2指令的二级流水
当取指令1完成后进入执行指令1 这时取指令部件空闲可以取指令2 当执行指令1完成后转而执行指令2而不是取指令2这样取指和执行阶段在时间上完全重叠指令周期减半速度提高1倍
3影响指令流水加倍的因素 因素1 执行时间 大于 取指时间因素2 条件转移指令对指令流水的影响 因为只有当指令执行后才知道结果根据结果判断是否转移 如果转移的话将要执行的指令就不是按序的下一条指令 4指令的六级流水 4.1指令周期被分为6个阶段
1) FI取指令fetch instruction2) DI指令译码 decode instruction3) CO 形成操作数地址4) FO 取操作数 fetch operand5) EI 执行 execute instruction6) WO 结果写回write operand
4.2横轴表示时间 纵轴表示指令
4.3由上图可以看出流水线的执行性能优于串行执行干货 完成一条指令需要6个时间单位 1.串行执行则完成9条指令需要54个时间单位 2.采用六级流水线执行完成9条指令仅需要14个时间单位 5小结以m级流水线n个指令为例
5.1m级流水线的含义同一个时钟周期中最多有m条指令在同时执行
5.2本文结论流水线中指令执行速率是串行方式的 Xm*n/(mn-1) 倍 又m可以看做常量当n取无限大时则X取m倍即m级流水线的指令执行速度是串行方式的m倍干货 -- 流水线中指令执行分析过程如下 第1条指令执行完成的时钟周期是m 第2条指令执行完成的时钟周期是m1 第n条指令执行完成的时钟周期是 mn-1由数学归纳法很简单就可以得出 -- 串行方式指令执行分析过程 第1条指令执行完成的时钟周期是m 第2条指令执行完成的时钟周期是m*2 第n条指令执行完成的时钟周期是m*n由数学归纳法很简单就可以得出 【3.5】 影响指令流水线性能因素
【3.5.1】结构相关 【因素1】 结构相关 如 指令a使用运算器计算下一条指令的地址指令b使用运算器完成指令运算这两条指令就会发生资源冲突
上图蓝色标识的始终周期就会发生冲突 如时钟周期4 指令1的FO是访存取操作数指令4的FI是访存取指令这就会产生冲突 这些冲突就会降低流水线性能
解决方法
1 停顿第4条指令的FI不在时钟周期4取指令而停顿到时钟周期5取指令2 指令存储器和数据存储器分开3 指令预取技术一次取多条指令而不是每执行一条取一条指令【3.5.2】数据相关 不同指令重叠操作流水线分为多个段可能多个读段或多个写段通常情况下前段是读后段是写可能改变操作数的读写顺序 如 指令1 先读后写 指令2 先读后写
2.1 写后读相关先写后读相关2.2 读后写相关2.3 写后写相关
2.4 解决方法
2.4.1 后推法以写后读为例等待写入R1成功后然后再读R1的数据2.4.2 采用旁路技术以写后读为例不需要等待指令1的结果写入R1只要指令1的结果一旦在运算器的输出端生成以后直接把结果送入到指令2的运算器的输入端 这样会更好节约时间【3.5.3】控制相关 指令3是转移指令若需要转移则转移到第15条指令 而这期间已经进入流水线的指令指令4~指令7的操作因指令转移会被作废从而造成损失 【4】指令流水线性能 1 吞吐率单位时间内流水线所完成指令或输出结果的数量2 加速比 Sp表示采用m段流水线的速度与同功能的不采用流水线的速度之比3 流水线效率流水线中硬件使用率
3.1 建立时间 指令进入流水到执行完成从流水线输出的时间3.2 排空时间 最后一条指令进入流水线到最后一条指令从流水线输出的时间总的时间流水段被加电的总的时间 【5】流水线多发技术
上面讲了利用流水线提高指令执行速度 下面看一下在流水线的基础上对指令的解释包括取指令执行指令速度进一步提高的方法
如果用多条流水线即几条指令同时进入到不同流水线多套流水线部件进行解释那这样的话 指令速度可以被进一步提高 这就是超标量技术流水线多发技术 【5.1 】超标量技术多套流水线部件
每个时钟周期内多条独立指令进入到不同流水线中进行解释
1 需要配置多条流水线多个部件2 不能调整指令的执行顺序
通过编译优化技术把可并行的指令搭配起来 这就是jvm指令重排序的原因所在了 把多条可以并行执行的指令把它挑选出来让它们同时进入到3条流水线 【5.2】超流水线技术仅一套流水线部件 超流水线 把一个时钟周期分为3份
时钟周期0-1有3根竖线就把一个时钟周期流水段分为了3份
1 普通流水线的设计每个时钟周期叫做流水段 流水段之间加入锁存器把每个流水段的执行结果在锁存器中进行锁存 作为下一个流水段执行时的操作信号或控制信号或操作的数据
2超流水线的设计 把一个时钟周期或一个流水段再分为3份这3份之间是没有锁存器的 不同指令处于同一个流水段或时钟周期中相互之间的信号不能叠加
例子mips处理器 采用了超流水技术 超流水技术也不在指令执行过程中调整指令执行顺序jvm指令重排序而是由编译器优化来调整
【小结】
由上文分析知m级流水线的指令执行速度是串行方式的m倍
则 p分段m级超流水线技术的指令执行速度是串行方式的 m*p 倍 理论情况下因为还有很多影响流水线性能的因素 【5.3】超长指令字 【6】流水线结构
【6.1】指令流水线结构 译码 来确认这条指令要做什么操作地址形成部件解析出操作数地址 理想情况下 6级流水线的速度是不采用流水线的6倍 分为6段后在流水段之间要加上锁存器锁存器用于保存上一个流水段的操作结果同时为下一个流水段提供操作数据和操作信号 【6.2】运算流水线