赞
踩
体系结构(architecture):通常称为指令集体系结构,对指令集处理器的指令集合进行说明,并定义处理器的功能性行为。
逻辑实现:体系结构的具体设计,也称为微体系结构(microarchitecture)。某种体系结构在其ISA的生命周期内可以有多种逻辑实现。逻辑实现通常在硬件中实现,对软件透明。
物理实现:设计的具体物理表现形式。对于微处理器而言,这个具体的物理表现形式通常是单芯片或者多芯片的封装。对于一个逻辑实现,可以有多个不同的物理实现
不同的类型的ISA的不同点集中在如何定义操作数类型以及操作数上。
DSI(Dynamic-Static Interface)动态-静态接口。传统上,所有在编译时由软件和编译器静态完成的任务和优化,认为在DSI之上;所有在运行时由硬件动态完成的任务及优化,认为是在DSI之下的。ISA设计中一个关键问题:DSI的位置。理想情况下,DSI的位置应该使得静态技术和动态技术很好的协同配合,在编译器的复杂性和硬件复杂性之间做出权衡,并得到最好的组合。
当流水下深度增加时,CPI可能会上升
硬件仿真器:功能仿真器和性能仿真器
设计超标量处理器的一个主要动机:开发可以获得一定(相对于向量来说降低)级别的并行度(公式1.10)的通用处理器。目的是确保大部分程序都能够获得一定程度的指令级并行,以减轻顺序执行时瓶颈所产生的影响。
Flynn瓶颈:大多数程序的ILP小于2(基本块内部)
Fisher的乐观估计:在许多程序中,几乎拥有无限的ILP
操作延迟(OL):指一条指令产生结果后使用的机器时钟周期数,就是指令执行时所需要的时钟周期数
机器并行度(MP):指机器支持的可以同时执行的最大指令数目
发射延迟(IL):指发射两条连续的指令之间所需要的机器时钟周期数。此时发射是指一条新的指令初始化后进入流水线
发射并行度(IP):指每个时钟周期内可以发射的最大指令数
超流水线处理器:传统的流水线处理器如果需要多个时钟周期来执行简单指令(定点加法),那么应当归类为超流水处理器。主要特点:某条指令的结果不能被后续的m-1条指令所利用。
参数定义:OL=1个时钟周期=m个次时钟周期,IL=1个次时钟周期
超标量处理器参数定义:OL=1个时钟周期,IL=1个时钟周期,IP=n条指令/时钟周期
限制时钟频率的两个因素:
一个k级流水线的价格C:
流水线的性能:
价格性能比:
当k大于Kopt时,流水线系统称为 过度流水化,此时增加流水线深度而提高的性能由于价格增加而抵消
流水线理想假设
一致的运算分量:要完成的整个运算量可以均匀的分成延迟一致的若干分量
将以前的运算量分为若干分量时,没有引入无效时间;段间缓冲的引入没有带来额外的延迟
重复的运算:输入数据有大量相同的,重复的运算
所有的流水段总是被充分利用
独立的运算:所有相同的重复运算之间没有相关性
处理一条指令的时间延迟称为“指令周期”,每一段的时间延迟决定了“机器周期”。指令周期是一个逻辑概念,代表指令的执行周期。机器周期是一个物理概念,包含了数字逻辑电路中存储单元的时钟等,也是流水线的时钟周期。
流水线中的外部碎片:某些流水段没有被使用;内部碎片:某些流水段存在时间空闲(迁就于最长延迟)
指令流水线设计的挑战
随着流水化程度的增加,流水线的硬件资源会显著地增加,其中最突出的时寄存器文件和存储器端口数目的增加,一获得更高的访问并行度
AMDAHL 470v/7的12级指令流水线示例
控制相关可以看做是关于程序计数器的寄存器数据相关(RAW),条件分支指令要写PC,而取下一条指令要读PC。
流水线互锁机制:化解流水线相关的硬件机制。流水线互锁硬件要检测出所有的流水线相关,并保证所有的相关得到满足。流水线互锁机制包括停止流水线的某一段以及数据在定向路径中的传输控制等。(ALU的RAW,Load的RAW,条件分支指令)
降低深流水线中分支指令带来的负面影响的两种方法:
增加流水线深度的权衡
并行流水线:同一周期启动多条指令执行
多配置流水线:在流水线的执行阶段为不同类型的指令提供不同的执行部件(子流水线)
超标量流水线:属于并行流水线,也属于多配置流水线
动态流水线:支持乱序执行的并行流水线。动态流水线通过使用复杂的多记录缓冲来实现乱序执行,并允许指令以可变的顺序进入和离开缓冲。
标量流水线的加速比:一般针对非流水机器,它取决于流水线的深度
并行流水线的加速比:往往相对于标量流水线来计算,它取决于并行流水线的宽度。宽度为s的并行流水线的每一段都可以同时处理s条指令
多配置流水线的优点:每条流水线只执行一种指令,因此可以根据其特点进行专门的优化设计并采用高效的硬件实现。每条指令只需要执行必要的延迟并流过该子流水线的所有段
实现每周期s条指令的取指吞吐率的两个障碍:读取的s条指令没有对齐;控制流改变了取指集中的指令
指令译码主要包括指令的识别、指令类型的确定以及指令间相关性的检测。指令译码的复杂度受两个因素影响:ISA和并行流水线的宽度。
预译码:将指令译码的部分工作转移到指令cache进行,当cache失效并需要从存储器调入一个cache块时,在内存与cache之间可以增加一个硬件将cache块中的指令进行预译码。译码的信息以预译码标识位的形式连同指令一起存在于指令cache中,在指令译码时简化操作。
预译码对处理器设计的两个主要影响:
指令分派(dispatch):超标量属于多配置流水线,其执行段使用了很多不同类型的执行部件,不同类型的指令需要在不同的执行部件上执行,因此存在分派阶段,确定指令应该在哪一个执行部件上执行。
保留站将指令译码和执行加以分离,从而平衡了译码段以及执行段吞吐率的频繁变化,消除了译码段不必要的停顿,同时也为执行部件输送足够的指令。
集中式保留站:可以被各种类型的指令共用,使用率较高,但是硬件设计非常复杂,需要集中控制并且要设置多个端口来满足多个部件的同时访问
分布式保留站:只需要一个端口和少数几条记录项,硬件简单,但是总的利用率低。当一种类型的保留站中各记录项都被占用时,所有这种类型的后续指令都必须停顿。
发射和分派:在分布式保留站中,分派是指译码后指令同相应类型的功能部件之间的连接;而发射是指指令在功能部件中执行的初始化。在集中式保留站中,两个可以互用。
设置多个功能部件时一种空间并行性的体现;功能部件流水化实现时时间并行性的体现。
指令流、寄存器数据流和存储器数据流。总的性能目标就是使三条流通路的容量最大
条件分支指令的停顿开销:生成目标地址引起的开销和条件判定引起的开销
BTAC(分支目标地址缓冲)和BHT都是在取指段使用当前指令地址PC访问,但BTAC访问延迟是单周期的,而BHT是双周期的。如果BTAC命中说明当前的取指序列中存在分支指令,则预测分支将会跳转并更新PC。在第二个周期中(译码段),根据从BHT中得到的历史信息,将预测同一条分支指令的方向。如果两者预测相同,则不变,否则BTAC预测失效。
PAs:多个BHSR,多个PHT。s指share,因为PHT的个数无法使得每一个分支都有一个,因此一组分支共享一个PHT,所以称为s
trace cache是一种基于历史信息的取指机制,它将指令的动态执行轨迹信息存储在一个cache中,通过指令地址和分支结果加以访问。轨迹信息是根据动态的分支指令行为收集起来的,包括多个不连续的基本块。每当指令地址命中trace cache,接下来的指令流就从trace cache中取指。trace cache可以看作是按程序先前的执行轨迹对其基本块进行了重排序,当不连续的基本块第一次在支配路径上执行时,结束提交段对其进行合并对齐处理,并生成一个trace存入trace cache中。
写寄存器称为寄存器的定义,读寄存器称为寄存器的使用。每个寄存器的定义可能对应多个寄存器的使用,定义和最后一次使用之间的持续时间称为该值的活跃区间。
使用独立的RRF进行寄存器重命名时,读取源操作数的三种情况
独立的RRF和ARF,两者可以相互独立,也可以集合成一个寄存器文件实现。前者在指令完成之后仍然需要一次数据搬运,后者不需要。集中寄存器文件的实现只需要将寄存器的名称从重命名寄存器改为体系结构寄存器即可。缺点在于提高了硬件复杂度,其次在现场切换要保存机器状态时,包含机器体系结构状态的寄存器子集必须在状态开始保存之前被显式地标出。
数据流极限:DFG的关键路径(相关边的延迟累加,总的累计延迟最长的相关链)
一般情况下,保留站中的记录在指令发射后就进行回收并供后续指令分派使用,从而尽可能地避免由于保留站饱和导致的停顿。但是某些指令由于执行时会产生异常,将来某个周期可能要重新调度执行,所以这些保留站直到指令执行完毕且确定无异常后才进行回收。
指令唤醒:保留站中的某个记录通过监听总线,发现操作数可用,设置“就绪”位为1,表示该指令可以被发射执行,这个过程称为指令唤醒。
保留站监听总线,匹配标签,执行指令唤醒的过程的硬件称为唤醒逻辑
保留站在所有的就绪指令中选择指令执行的硬件称为选择逻辑
ROB中的指令从队列的头部提交,每次提交的指令数量取决于可以提交指令数目以及提交带宽,而提交带宽又取决于另外一个路由网络的容量和寄存器写回可用的端口数,最为关键的是体系结构寄存器文件写端口的数,这些端口从重命名寄存器或者ROB向体系结构寄存器传递数据。
寄存器重命名的目的:消除寄存器重用引起的假相关;建立两条相关指令之间的生产者-消费者关系
超越数据流极限:值预测、动态指令重用
存储器数据流指令的执行的三个步骤:生成存储器地址,存储器地址转换和数据访问。
存储器地址转换:虚地址转化为物理地址。一般通过访问快表TLB来完成。TLB是硬件控制的表结构,保存着虚拟地址到物理地址的映射。TLB本质上是存储器中页表的cache。如果当前被转换的虚拟地址所在的页的映射情况未在TLB中,即发生了TLB失效。如果该映射在页表中,则可以通过访问存储器中的页表获取该映射,一旦失效的映射被载入TLB,转换过程也就结束了。如果映射不在页表中,即相关的页还没有进行映射,也不在存储器中,这种情况将导致页故障,并需要访问磁盘存储器检索失效的页。页故障将触发程序异常,同时需要挂起当前程序。
数据cache缓冲存储器中的部分数据,TLB用来缓冲页表部分中的数据,数据cache和TLB之间的交互如图所示。
两种乱序执行load指令的技术:载入旁路和载入定向。
增加存储器带宽:多端口数据cache(或者是交叉多体存储器)。
load指令的预测:在取指段进行,无需译码和分派。预测表的每一项记录都包含预测的有效地址,在取指段就可以读出,不必再经过保留站等待基址寄存器的值和执行流水线的地址生成。此时对数据cache的访问再下一周期就可以开始,一般在译码段的末尾就能从cache读到数据。(载入地址预测技术)
载入值预测:对要载入的数据值进行预测,扩展载入预测表,增加载入的数据,从而实现载入值预测。
存储器相关性预测:在load/store指令执行时跟踪存储器相关信息,并在该load/store指令重新执行时利用这些信息对存储器相关性进行预测,以方便载入旁路和载入定向的提前执行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。