Tomasulo算法
结构:
每个功能单元都有一个控制缓冲器,即保留站;所有保留站连接到通过公共数据,以检测广播;浮点寄存器具有控制位和tag域,能够保存register result status。
基本原理:
把指令的执行分成Issue、execution、write result三步,整体以按序发射、乱序执行的方式进行。当不存在结构冒险时,将指令按序发射到各个功能部件保留站,保留站中的指令的寄存器被数值或指向保留站的指针所代替,这一过程为寄存器重命名,消除了WAW、WAR冒险。当指令的源操作数就绪时即可执行,从而实现乱序执行,消除RAW冒险。当指令执行完毕时,通过公共数据总线将结果广播到所有的功能部件及保留站。
步骤:
(1) Issue:从FP op Queue中取指令,如果保留站空闲(无结构冒险),发射指令并发送操作数到保留站(对寄存器进行换名)
(2) Execution:当指令的两个源操作数就绪时即可执行,如果没有,检测CDB等待所需要的数据。
(3) Write result:通过公共数据总线将结果广播到所有等待的功能部件,标记保留站可用。
Tomasulo怎样消除各种冒险
通过在issue阶段,暂停发射指令消除结构冒险;
通过寄存器换名消除WAR、WAW冒险;
通过在保留站中等待源操作数消除RAW冒险;
怎样支持精确中断和推测执行
分离指令的完成和提交,引入重排序缓冲器ROB,让指令能够乱序完成,按序提交。
ROB:按FIFO的次序存放指令,当指令执行完成将结果存放在ROB中,并向其他介于执行、完成和提交的指令提供操作数。当ROB顶部的指令执行完成时就将进行提交。
降低cache失效率的方法
(1)增大块大小
(2)增大相联度
(3)使用victim cache
(4)采用伪相联
(5)通过硬件预取数据和指令
(6)通过软件预取数据和指令
(7)通过编译优化
降低cache失效损失的方法
(1)在失效时读比写优先
(2)子块放置
(3)提前重启和关键字先送
(4)使用Nonblockingcache
(5)使用二级cache
减小cahce命中时间的方法
(1)使用小而简单的cache
(2)避免地址变换
(3)通过流水化操作
(4)使用Tracecache
记分板读操作阶段Rj、Rk置No的原因
Rj(Rk)代表源操作数的可用性,如果Fj,Fk可用,则在issue阶段被置为Yes;否则置为No,该指令就会一直等待在issue阶段,直到操作数变为可用,将Rj(Rk)置为Yes,然后指令才能进入execution阶段。此外,当Rj(Rk)为Yes时,如果出现WAR冒险则停留在write result阶段,直到Rj(Rk)为No。
(m,n)预测器工作原理
使用前m个分支行为从2^m个分支预测进行选择,每一个预测对应于一个n位的分支预测器。最近的m个分支的全局历史记录可以记录在一个m位的移位寄存器中,每一位记录着该分支是被执行还是未被执行。对分支预测器缓冲站的访问可以通过分支地址的低位拼上m位全局记录而得到。
DDR中的channel、bank、rank、row buffer等概念
channel:是内存控制器管理的一个独立内存接口,一个channel包括64位的数据总线,并连通一组模组。同一channel中的模组共享同样的命令。
bank:bank是内存颗粒中的一个存储单元,每个内存颗粒有一组bank,每个bank内部包含多个存储阵列,bank、row、column组成内存中一个cell的坐标。
Rank:一个rank由一组或多组内存颗粒组成,一个rank包含的内存颗粒数量等于数据总线位宽除以一个内存颗粒的位宽。
Row buffer:在内存快速页模式中,row buffer能够存储一整行的数据,允许地址总线只发送一个列地址信号就能进行数据访问。
cache coherence和memory consistency的区别与联系
cache coherence:指在多处理器环境下,每个处理器的cache可能会对应到同一地址的memory块,不同处理器在读操作时必须保持一致。即定义了读操作可以返回什么样的值。
memory consistency:指在多处理器环境下,定义了不同处理器的读操作什么时候可以返回一个被写过的值。
联系:cache coherence和memoryconsistency共同组成了存储系统一致性问题。两者分别代表了不同存储层次中的一致性问题,两者相互影响。
6管SRAM工作原理
基本原理:
在写数据时,根据要写入的数据,将一根位线预充到高电平,另一根放电到低电平。然后选中行线,使两端的门管导通,内部的稳态电路锁存数据。
在读数据时,先把位线预充到高电平,然后选中行线,使两端的门管导通,数据节点向位线充/放电,列上的灵敏放大器识别出两根位线上的电压差,并输出相应的数据。
指令冒险与指令相关的区别与联系
指令相关是指指令之间存在某种依赖关系。指令相关有三种:数据相关(包括真相关)、名字相关(包括反相关、输出相关)、控制相关。
指令冒险是指由于指令相关导致指令流中的下一条指令不能在指定的时钟周期执行。指令冒险有数据冒险(WAW、RAW、WAR)、控制冒险、结构冒险等。
联系:指令相关导致了指令冒险;指令冒险能够避免,指令相关无法避免。
从水平损耗和垂直损耗分析superscalar、fine-grained multithread、coarse-grained multithread、multiprocessing、simultaneousmultithread的设计动机
superscalar:水平损耗为动机。主要特点时多发射。
Fine-grained multithread:垂直损耗为动机。主要特点是可以一个周期切换一次线程。
Coarse-grained multithread:垂直损耗为动机。主要特点是能够在一个线程遇到load、store等完成周期较长的操作时切换线程。
Multiprocessing:水平损耗为动机。主要特点是多个处理器并行执行指令。
Simultaneous multithread:水平损耗、垂直损耗为动机。主要特点是多发射,并且同一时钟周期不同发射窗口发射不同的线程的指令。
Power wall +ILP wall + memory wall = brick wall
计算机的性能发展主要受到了功耗、指令级并行、内存三个方面的限制。
Power wall指随着集成电路规模的增长,功耗密度越来越大,散热技术未得到更好的改进,限制计算机性能的发展。
ILP wall指由于单处理器受到控制计算单元的限制,并且amdahl定律指出指令级并行取决于程序的可并行程度,ILP技术也无法有效提高计算机的速度。
Memory wall指出处理器的速度和存储器的速度差距越来越大,存储器的延迟限制了计算机的性能的发展。
记分板技术
记分板技术是使用硬件开发指令级并行的技术。核心思想是:
(1)当不具有结构冒险和WAW冒险时,将指令按序分派到功能部件,否则,暂停发射;
(2)指令在执行之前必须等待源操作数,可以乱序执行,消除了RAW冒险;
(3)在写回阶段,指令等待输出寄存器被之前的指令读取后才能写回,此前指令的结果保存在功能单元中,消除了WAR冒险。
存储局部性
局部性包括:时间局部性、空间局部性。
时间局部性:被引用过一次的存储器位置在未来会被多次引用。
空间局部性:如果一个存储器的位置被引用,其附近的位置也会被引用。
软件流水技术
软件流水技术是一种重组循环体的技术。软件流水循环的每一次迭代体是由原循环体的不同迭代中选出的指令组成的,可达到消除相关性的目的。
显式寄存器换名
显式寄存器换名是通过物理寄存器堆,将指令中所使用的寄存器映射到物理寄存器中。当任何指令要写某个寄存器时,给该寄存器分配一个新的物理寄存器,该方法避免了WAW、WAR冒险。
旋转寄存器堆
用于解决VLIW循环调度需要很多寄存器的问题。使用一个Rotating Register Base指向当前寄存器组,使用其值加上逻辑寄存器值作为物理寄存器,达到了寄存器换名的效果。寄存器可以复用,根据指令执行周期重用寄存器。
非一致性访问分布共享存储技术
由若干通过高速专用网络连接起来的独立节点构成的系统。逻辑上整个系统分为多个节点,每个节点可以访问本地的内存资源,也可以访问远程内存资源,但访问本地内存资源远远快于远程内存资源。
计算机体系结构
计算机体系结构的目的是设计满足目标和功能需求的组成和硬件,包括指令集体系结构、组成或微体系结构、硬件。它是应用层和物理层之间抽象层的设计。
推测执行技术
一种使用编译器或处理器推测指令执行结果,以消除其他指令对该指令依赖的技术
LL/SC实现同步信号灯的原理
当LL指令从内存中取一个字后,处理器会记住LL指令的这次操作,同时LL指令读取的地址也会被保存在处理器的link 寄存器中。如果,发生中断,link寄存器中的地址值就会失效并清除。SC在执行时,检查指令中的地址是否与link寄存器中的地址匹配,若匹配,SC执行成功。因此,LLSC实现同步信号灯的原理是利用LL和SC构成一个原子操作,将信号灯的地址包含在LL和SC指令中,使之能够存储在link寄存器中,通过SC指令完成对信号量的更改。
DMA
DMA是一种高速的数据传输操作,允许在外部设备和存储器之间通过CPU的两次干预,周期窃取地自动完成批量数据的传输。
存储层次设计的四个问题
block placement:全相联、组相联、直接映射
block identification:标记/信息块
block replacement:LRU、FIFO
write strategy:write back、writethrough
降低转移损失的方法
软件方法:
(1) 消除转移——循环展开,增大运行长度
(2) 减小转移确定时间——指令调度尽早计算转移条件
硬件方法:
(1) 延迟槽——用有效工作代替气泡
(2) 推测——转移预测,跨越转移的指令推测式执行
Tracescheduling
踪迹调度分为两步:
(1) 踪迹选择,负责从程序的控制流图中选择执行频率较高的路径,每一条路径就是一条trace;
(2)踪迹压缩,对已生成的trace进行指令调度和优化,尽可能的压缩其执行时间
2:1cache规律
miss rate 1-way associative cache size X= miss rate 2-way associative cache size X/2
AMAT
Average Memory Access Time = Hit time +Miss rate × Miss penalty
错误预测恢复机制
将结果计算与commit分离;消除流水线中跟随错误预测转移指令之后的指令 ;将状态恢复到转移指令之后的正确状态
流水线CPI
流水线CPI = 理想CPI + 结构停顿 + 数据冒险停顿 + 控制停顿