CPU 核心乱序执行的基本设计空间
1. 引言
在主流的超标量处理器中,后续指令之间的依赖关系是并行执行的明显障碍,限制了性能。为了实现更高的性能,超标量处理器必须积极应对控制和数据依赖。
先进的超标量处理器主要通过投机分支处理来应对控制依赖,而通过寄存器重命名和调度来处理数据依赖。寄存器重命名的原理很简单,在调度写后读(WAR)或写后写(WAW)依赖指令时,用重命名缓冲区临时替换其目标寄存器。指令执行完成后,核心按程序顺序退休该指令,重命名缓冲区中的临时结果用于更新相关的架构寄存器。
CPU 核心采用调度来消除由于三种数据依赖(如写后读(RAW)、WAR 和 WAW 依赖)在直线代码中出现的调度阻塞。调度利用两个概念:一是将依赖检查与指令调度解耦;二是与狭窄的调度窗口相比,显著扩大了扫描独立指令的窗口。寄存器重命名和调度显著提高了微架构在每周期执行指令数(IPC)方面的效率。
尽管乱序执行在 20 世纪 90 年代中期就已提出,但其实现方式一直在动态修改。最近的处理器将控制和数据依赖分开处理。在取指令时通过投机分支处理应对控制依赖,然后指令由核心的动态执行部分进行解码和乱序处理。本文聚焦于微架构的这一部分,旨在探索其设计空间。
2. 影响 CPU 核心乱序执行布局的寄存器重命名设计方面
2.1 概述
寄存器重命名设计空间有两个方面会影响 CPU 核心乱序执行的布局:一是所选重命名缓冲区的类型;二是寄存器映射的实现方式。
2.2 重命名缓冲区的类型
有四种基本不同的重命名缓冲区实现方式:
- 专用重命名寄存器文件
超级会员免费看
订阅专栏 解锁全文
55

被折叠的 条评论
为什么被折叠?



