凶葬的后果:能不能详细介绍一下重叠寄存器窗口技术

来源:百度文库 编辑:高考问答 时间:2024/05/05 06:29:45
能不能详细介绍一下重叠寄存器窗口技术,包括共奏原理和在计算机中的具体应用。谢谢

重叠寄存器窗口技术

目前,重叠寄存器窗口技术已经成为RISC的一种基本技术。
重叠寄存器窗口的基本思想是:在处理机中设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。每个过程使用其中相邻的3个窗口和一个公共的窗口,而在这些窗口中有一个窗口是与前一个过程共用,还有一个窗口是与下一个过程共用的。与前一过程共用的窗口可以用来存放前一过程传送给本过程的参数,同时也存放本过程传送给前一过程的计算结果。同样,与下一过程共用窗口可以用来存放本过程传送给下一过程的参数和存放下一过程传送给本过程的计算结果。
图2.18是RISC II中采用的重叠寄存器窗口。共有138个寄存器,分成17个窗口,其中,有一个由10个寄存器组成的窗口是全局窗口,能被所有过程访问。另外有8个窗口,每个窗口各10个寄存器,分别作为8个过程的局部寄存器。还有8个窗口,每个窗口各有6个寄存器,是相邻两个过程公用的,称为重叠寄存器窗口。每个过程均可以访问32个寄存器,其中,有10个是所有过程公用的全局寄存器,有10个是只供本过程使用的局部寄存器,有6个是与上一过程公用的寄存器,还有6个是与下一过程公用的寄存器。

图2.18 重叠寄存器窗口技术

只要调用的深度不超过规定的层数(如8层),重叠寄存器窗口技术可以减少大量的访存操作。当调用层数超过规定层数时,称为寄存器溢出,这时,可以在主存中开辟一个堆栈,把超过规定层数的寄存器中的内容压入堆栈中。
在SUN公司的SPARC处理机中,以及后来的Super SPARC和Utra SPARC处理机中,还把最后一个过程的公用寄存器与第一个过程的公用寄存器重叠起来,形成一个循环圈。在调用层数很多时,可以循环使用。
F, Baskett等人使用Quicksort和Puzzle两个程序对寄存器窗口技术的有效性进行了测试。Quicksort程序的特点是过程调用的次数在整个程序中所占的比例比较大,但调用的深度不大,而Puzzle程序正好相反。RISC II与VAX-11两种机器的比较结果如表2.14所示,RISC II的访存次数主要是寄存器窗口溢出引起的,而VAX--11访存次数是为了保持和恢复通用寄存器中内容而引起的。从表中看出,RISC II寄存器溢出的次数很少,只占千分之一左右,影响也不大。由于采用了寄存器窗口技术,由程序调用引起的访问存储器次数只占程序总访存次数的1%左右。

表2.14寄存器窗口技术的效果

程序名称
调用次数
最大调用深度
RISC II

溢出次数
RISC II

访存次数
VAX-11

访存次数

Quicksort
111K(0.7%)
10
64
4K(0.8%)
696K(50%)

Puzzle
43K(8.0%)
20
124
8K(1.0%)
444K(28%)

表2.15是RISC II处理机与几种CISC处理机的每次过程调用的开销比较。从表中可以看出,在执行时间、执行指令条数、访问存储器次数等方面,采用重叠寄存器窗口技术都是十分有效的。