计算机体系结构
班级:计11 任课教师:高清华
5月12日----5月16日教学指导
一 多指令流出技术
1.技术背景:
每个时钟周期流出一条指令,而且要减少数据相关和控制相关,达到CPI为1。为了更好的提高性能,若每个时钟周期流出多条指令,CPI就能小于1,这就是多指令流出。
2.多指令流出处理器有三种:超标量、超流水、超长指令字。
超标量:每个时钟周期流出1到8条指令不定,可以通过编译器静态调度,也可以通过记分牌或Tomasulo算法动态调度。
超长字令字(VLIW):每个时钟周期流出的指令数量是固定的,它们构成一条长字令,或说是一个混合指令包。超长字令字的处理器目前只能通过编译静态调度。硬件不负责动态处理。
超流水:就是每一个功能部件一步流水化,使得一个功能部件在一拍中可以处理多条指令。本章不作讨论。
二 超标量
超标量处理器每时钟周期流出1--8条流水指令数不定。能够同时流出指令满足条件:
指令不相关
某些其他限制条件:如每个时钟周期访存不能多于1次;不同处理器限制不同。
如果出现相关或不满足限制条件,只能流出前面指令,所以流出指令数不定。
超标量处理器的指令序列可以采用静态调度或动态调度。
DLX处理器的超标量实现:
一次流出两条指令
先一条整数指令(Load/store/分支/整数运算)和后跟任意一条浮点指令。
编译要求指令成对,且与64位边界对齐,整数部分在前。
第一条指令流出后才可以流出第二条,由硬件动态决定,如果不满足条件只流出第一条指令。
图4.16给出两路超标量指令流示意图。
多指令流出需解决的问题:
必须采用流水功能部件或多个独立功能部件。
整数操作和浮点操作搭配使用不同的寄存器组和不同的功能部件。不必增加硬件。但是浮点访存指令,使用整数部件,从而导致结构冲突;需增加冲突监测机制的硬件。
整数部分指令是浮点数据访存,导致浮点寄存器端口访存竞争。
流出指令对中浮点指令和整数指令相关,会产生新的数据相关。浮点寄存器端口问题通过限制浮点存取(访存)指令单独执行来解决。也可解决数据存取和浮点操作指令同时流出的结构相关。另一种方法是给浮点寄存器设置两个端口:一个读端口、一个写端口。
浮点Load后跟浮点操作指令且相关,硬件能检测出,从而限制后面浮点指令流出。
简单DLX中Load有一个时钟周期延迟,使用此结果的指令没有停是无法使用Load结果的;而在DLX超标量流水线中,在同一个时钟周期和下一个时钟周期不能使用Load结果。这意味着后面三条指令不能使用Load结果。
为了有效的利用超标量可获得的并行度,需采用更有效的编译技术和硬件调度技术,以克服限制超标量流水线的性能发展障碍。
超标量处理器的循环展开和指令调度。(静态调度)
例4.9
Loop: LD F0, 0(R1): F0=数组元素
ADDDD F4, F0,F2: 加上在F2中标量
SD 0(R1),F4: 存结果
SUBI R1, R1,#8: 将指令减少8(每个DW)
BNEZ R1,Loop: R1不等于0,转移
循环展开5次 5个LD,ADDD,SD
1个SUBI,1个BNEZ
如图4.17所示
性能分析:
12个时钟周期/5=2.4时钟周期/每个迭代
性能受限于整数计算和浮点计算之间平衡问题,无足够浮点指令使流水线达到饱和。
超标量处理器(双指令流出):第一条整数指令和第二条浮点指令同时流出,如果相关,顺序流出。
超标量处理器与超长指令字处理器相比有两个优点:
超标量结构对代码是透明的,处理器自己检测下一条指令能否流出,从而不需要排列指令来满足指令流出。
即使未经过调度的代码或是旧的编译器编译过代码也可以运行,当然运行的效果不会很好。解决办法:用动态调度技术。
三 多指令流出的动态调度
多指令流出,可用记分牌技术或Tomasulo算法进行动态调度处理。
扩展Tomasulo算法,流出两条指令:一条是整数指令,另一条是浮点指令顺序流向保留站。整数数据寄存器和浮点寄存器分开,不使用相同寄存器就可以同时将一条整数指令和一条浮点指令送到它们的保留站中。这种方法阻碍了在一个时钟周期内先浮点Load和浮点加两条相关指令的流出。但可以送到保留站中以后顺序执行。
双指令流出两种方法:
指令流出进一步流水化,指令流水速度是基本机器周期的两倍。这样,在后面指令流出前更改寄存器表,于是两条指令可同时执行。
对流水的指令进行限制。只有浮点的取操作指令或是从整数寄存器将数据送入浮点寄存器的传送操作,才会产生相关而导致两条指令不能同时流出。
使用结果队列前减少存储器取操作或数据传送操作对保留站的需求量。
使用队列还可以使等待操作数的存操作指令提高流出。动态调度对数据传送最有效,静态调度对R-R操作的代码序列最有效。
例:利用Tomasulo算法同时流出两条指令(整数+浮点)DLX。如相关,先流出整数。延迟时间如表4.2;指令流出和结果写回各占一个时钟周期。采用二次迭代。
代码起LOOP LD F0,0(R1); F0=数组元素
ADDDD F4,F0,F2;加上在F2中标量
SD 0(R1),F4;存结果
SUBI R1,R1,#8;将指针减少8
RNEE R1,Loop; R1不等于0,转移
结果如图4.18
分析:指令双流出的数目很少。每次只有一条浮点指令流出。
四 超长指令字技术
超标量所需硬件多。如双流出指令需多达6个寄存器,然后再决定流出一条还是两条,并将其送到相应功能部件上。如扩充到多条指令,硬件更多,动态调度,复杂度更大。
采用超长字令字,比超标量省硬件。
超长指令字采用多个独立的功能部件,但它并不是将多条指令流到各个功能单元,而是将多条指令操作打包,形成一条非常长的指令,超长指令由此得名。选择同时可流出多条指令由编译器完成,而超标量机器中此功能是硬件完成,所以超长指令字机器可以节省大量硬件。
超长字令字包括:两个整数操作、两个浮点操作、两个访存操作和一个分支操作,每个操作可能占用16-24位,指令长度达112-168位。指令中每一个操作字段称为操作槽。要求代码序列必须有较大的并行度来填充有效的操作槽。这工作有编译器通过循环展开等指令调度完成。
例4.11超长字令字含:两条访存、两浮、一条整型/分支、代码序列与前面同。如图:4.19。
展开后代码序列如例4.11
5次展开,消除所有空转,运行8个时钟周期。
8/5次=1.6时钟周期/每个迭代
17条/8=2.1条/每周期
操作槽8*5=40;17/40=42.5%,槽有效性
超长字节需较多寄存器:展开5次,需6个浮点寄存器
展开10次,需11个浮点寄存器
五 多流出处理器受到的限制
1.程序内在指令级并行性
这是根本因素。流水线处理器需要大量可并行执行操作才能避免流水线停顿。如延迟5个时钟周期,则需5条无关指令。
通常:无关指令数=流水线深度*可以同时工作功能部件数。
所以意味着5个功能部件的流水线忙起来,大约需15-25条无关指令。
2.多指令流出需要大量硬件资源
整数部件和浮点部件加倍;
存储带宽和寄存器带宽增加;
存储器带宽增加存储器系统的复杂性,增加寄存器,加大硅片面积,降低时钟频率;
超标量动态调度(记分牌或Tomasulo算法)增加大量硬件、设计复杂性升高。
3.超标量和超长指令字固有的技术限制
超长指令技术问题:
①代码体积增长和操作锁定关联(Lock-step)将循环多次展开,获取足够元素操作,从而增加代码长度。
②指令不满时,用空操作填充功能部件操作槽,效率不高。
超长指令逻辑问题:二进制代码兼容性。
每个处理器之间,实现的基本指令是相同。不同处理器的指令流出数目和功能单元延迟等是不同的。超长指令字机器的代码移植是非常困难的。采用目标代码的转换的仿真的方法。代码兼容性是超长指令字机器面临的最棘手的问题。
4.如何获得较大数目的指令级并行性
浮点程序中,通过简单地循环展开获得的并行度,还不如原始代码在向量处理机上运行的效率。
是否多指令流出的处理器是否比向量处理器更好?
开销基本相同,但向量处理机速度可能更高。
5.多流出处理器两方面优势:
多流出处理器有潜力从不规则的代码中发掘更高的并行度
所使用的存储系统开销较小。
目前,多指令流出将是利用指令级并行性的主要方法,向量处理器技术主要是这些处理器的扩展。
本章小结:
指令级并行是实现高性能中央处理器的主要手段。
指令功能调度:记分牌技术和Tomasulo;
多流出技术:超标量、超长指令字、超流水。
5月19日----5月23日教学指导
第五章 存储层次
存储器是计算机的核心部件,其性能直接关系到整个计算机系统性能的高低。存储系统的设计目标是:高速度、大容量、低成本。
5.1 存储器的层次结构
5.1.1 单机存储器,多级存储器和存储层次
计算机软件设计者和计算机用户希望容量越大越好,而求速度要快,价格不能太昂贵。存储器的三个主要指标是:容量、速度和价格(每位价格)。
实际情况:速度越快,每位价格就越高;容量越大,每位价格就越低;容量越大,速度越慢。
解决方法:采用存储层次,用多种存储器,构成存储器的层次结构。
存储层次
…
多级存储层次
在多级存储层次中, M1:速度最快、容量最小、价格最高; Mn:速度最慢、容量最大、价格最低。
层次存储器中的数据特征:最常用的数据在M1中,次常用的在M2中,最少使用的在Mn中。
层次存储器设计的目标:M1的速度,Mn的容量和价格。
层次存储器设计的依据:程序局部性原理。
在层次存储中,靠近CPU的存储器中的数据一般都是其下一层存储器中数据的子集。
CPU访存时的基本原则:由近及远,首先是访问M1,若在M1中找不到所要的数据,就要访问M2,将包含所需数据的块或页面调入M1。若在M2中还找不到,就要访问M3,依次类推。如果所有层次中都没有,就出现错误。
5.1.2 存储层次的性能参数
研究方法:层次存储器基本问题通过两层存储器结构进行研究。
对于由M1和M2构成的两级存储层次结构,假设的M1、M2容量、访问时间和每位价格分别为S1、TA1、C1和S2、TA2、C2。
存储层次的平均每位价格为: EMBED Equation.3 显然,当S1<