管道冲突的类型有哪些?
流水线是一种将顺序过程分解为小片段或子操作的技术。这些子过程中的每一个的执行都发生在与所有其他段一起起作用的某个专用段中。有以下三种类型的流水线冲突 -
资源冲突
这些冲突是由于资源不足而产生的,其中不可能重叠操作。流水线处理器的性能取决于以下两个条件之一:
功能单元是否流水线化?
多个执行单元是否允许流水线中所有可用的指令混合?
如果对于一个特定的组合,流水线停止以避免资源冲突,那么就会存在结构性风险。
如果两条指令同时需要给定硬件资源的帮助,就会发生结构性风险。发生这种危险的最常见情况是资源请求内存时。
考虑这样一种情况,一条指令需要访问内存以存储结果,而另一条指令正在被提取。如果指令和数据驻留在同一个缓存单元中,则只有一条指令可以继续执行,而另一条指令会延迟。为了避免这种冲突,许多处理器对指令和数据使用单独的高速缓存。
数据依赖冲突
当流水线中的指令依赖于先前指令的结果并且这些指令仍在流水线中并且尚未执行时,就会出现这些冲突。
当指令的源操作数或目标操作数在流水线中的预期时间不可用时,流水线将停止。这种情况被称为数据冲突的数据风险。
考虑一个包含两条指令的程序,I1 后跟 I2。当这个程序在流水线中执行时,这两条指令的执行是并发执行的。如果 I1 和 I2 的结果相互依赖,那么 I1 的结果可能无法用于 I2 的执行。
分行难点
当分支和其他指令改变程序计数器的内容时,就会遇到这种困难。有条件分支和无条件分支两种。条件分支可能会也可能不会导致分支,但无条件分支总是会导致分支。这种困难被称为控制风险。
在流水线过程中可以遵循以下关键操作,这有助于处理控制危险 -
及时检测分支指令
分行地址的提前计算
对条件分支指令的分支条件(命运)进行早期测试。
以上是 管道冲突的类型有哪些? 的全部内容, 来源链接: utcz.com/z/360310.html