System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 采用环绕跟踪来解决数据溢出的装置制造方法及图纸_技高网

采用环绕跟踪来解决数据溢出的装置制造方法及图纸

技术编号:41206975 阅读:12 留言:0更新日期:2024-05-07 22:33
一种装置包括循环缓冲器,该循环缓冲器包括固定数量的条目,并且允许发生数据溢出,同时维持最近存储的条目的次序。循环缓冲器可以用作返回地址栈,该返回地址栈用于在处理器中针对子例程调用推送和弹出返回地址。附加的电路系统动态地链接条目以维持后进先出栈。当条目将要被读取时,系统返回指针跟踪将要返回的下一条目。当数据被推送到循环缓冲器中的条目时,该条目存储指向针对先前系统返回指针的条目的指针。通过跟踪被推送条目中的先前系统返回指针,动态链接的条目可以跳过先前已经弹出的中间条目,因此跟踪最近写入的未弹出条目的次序,而不必单独地维持空闲列表和已使用列表。

【技术实现步骤摘要】
【国外来华专利技术】

本公开的技术总体上涉及数据缓冲器溢出,更具体地涉及用于解决计算机微体系结构中的数据缓冲器溢出的高效装置。


技术介绍

1、计算机软件编程结构包括用于将被频繁调用以执行任务或者操作的指令集分组到一起的子例程。当包括对子例程的调用的程序被编译时,被编译的程序将包括对子例程的调用指令,该调用指令跳转到子例程的程序地址。编译器还将在子例程中包括一条指令,该指令是返回指令,用于在子例程执行完成时退出该子例程。当处理器执行子例程时,处理器必须确定当返回指令被处理时要返回的程序返回地址。在计算机微体系结构的上下文中,常规的处理器利用返回地址栈(ras)来跟踪从子例程调用产生的返回地址,使得处理器可以确定在子例程执行完成后要返回到哪个程序地址。当处理器遇到对子例程的调用指令时,处理器将返回地址添加或者推送到ras。因此,当处理器遇到返回指令时,处理器从ras中读取或者弹出返回地址,然后返回执行在返回地址处开始的指令。

2、ras系统是固定的数据缓冲器,用于保存来自调用类型指令的返回地址。由于返回地址栈系统在存储器中包含固定的ras结构,因此由处理器执行的程序可以导致ras溢出,或者换言之,在返回地址栈中写入比栈在物理上可以存储的更多的信息。常规的返回地址栈系统可能会也可能不会解决溢出情况。然而,由于当今的深处理器管线及其对预测性指令取得的使用,当处理器认为分支指令已经被误预测时,计算机体系结构设计还必须解决返回地址的管理。

3、针对ras系统的一些常规方法完全排除了溢出情况的发生。这些方法限制了要被添加到ras中的新条目的数量,在溢出条件下,这会导致由于特定调用添加的条目与从ras返回的返回地址之间不匹配。因此,这些常规的ras系统已经将其固定ras定义得越来越大,以延迟但不防止数据溢出。另外地,在分支指令误预测时,这些常规ras系统中的所有条目都被重置,或者换言之,都被冲洗,由此丢失返回地址的任何历史记录。解决数据溢出情况的其他常规ras系统利用用于ras中有效/无效条目的跟踪系统。这些常规的跟踪系统包括检查点表来保存在每个调用类型指令上的ras的状态。特别地,在向调用类型指令上的ras写入条目之前,这些常规ras系统中的跟踪系统在每次接收到调用类型指令时,针对检查点表执行内容可寻址存储器(cam)搜索,以确保下一个将被返回的ras条目先前已经引退或者提交。如果该条目先前已经引退或者提交,则这个条目可用。否则,这些常规方法必须在单独管理的空闲条目列表中找到可用条目,并且管理有效条目列表的次序。cam搜索消耗能量并且影响系统性能。

4、为了节省处理功率和改进性能,需要一种更高效的数据装置,该装置能够解决数据溢出,同时减少诸如由cam搜索引起的开销之类的开销。


技术实现思路

1、在详细描述中公开的方面包括采用环绕跟踪(wrap tracking)以解决数据溢出的装置。在示例中,该装置包括循环缓冲器(circular buffer),该循环缓冲器包括用于数据存储的固定数量的条目,并且允许数据溢出的发生,同时维持最近存储的数据条目的次序。例如,循环缓冲器可以用作返回地址栈(ras)缓冲器,该返回地址栈(ras)缓冲器用于在处理器中针对子例程调用推送和弹出返回地址。在示例性方面,循环缓冲器中的条目在前向方向上固定链接,同时在反向方向上动态链接。条目在前向方向上被写入或者被推送,而条目在反向方向上被读取或者被弹出。利用附加的电路系统来管理反向方向上的动态链接。当条目要被读取时,系统返回指针跟踪将要返回的下一条目。当数据被推送到循环缓冲器中的条目时,该条目存储指向针对先前系统返回指针的条目的指针。通过跟踪被推送条目中的先前系统返回指针,反向链接的缓冲器可以跳过先前已经弹出的中间条目,因此动态跟踪最近写入的未弹出条目的次序,而不必在循环缓冲器内单独维持空闲列表和已使用列表。

2、在另一示例性方面,该装置还被用作返回地址栈(ras),该返回地址栈(ras)具有采用指令的预测性取得的处理器管线。在这个示例中,向ras的循环缓冲器写入条目和从其读取条目都是推测地完成的。当采用根据本公开的返回地址栈系统以及预测性取得时,ras系统还将高效地管理调用类型和返回指令的引退或者提交。例如,该示例性方面将解决其在ras中的相关联的数据条目已经被返回的返回指令的引退。如果返回指令是正确预测的分支的一部分,则与提交的返回指令相关联的条目将已经被返回,并且可能已经被后续的调用指令覆写,从而消除了进一步处理提交信号的条目的需要。在另一方面,为了跟踪其中条目被写入缓冲器的循环缓冲器的特定循环迭代(即,环路计数),每个条目包括全局环绕计数值。全局环绕计数值被配置为在写入循环缓冲器的条目时与循环缓冲器的迭代计数一起写入。通过利用循环缓冲器的条目中复制的全局环绕计数,ras系统可以跟踪与返回指令的引退/提交相关联的条目是否已被覆写并且因此可用,从而消除了重置与引退的指令相关联的条目的需要。通过返回地址的动态链接以及全局环绕计数器机制,本公开中的ras系统跟踪条目是否已被覆写,而不需要cam搜索检查点缓冲器来找到需要引退的适当条目,并且不管理有效/无效比特来确定适当的条目是否已被覆写。

3、本公开的其他方面将包括该新颖方法如何解决在与调用类型指令相关联的ras条目的推测写入之前,在调用类型指令的误预测时恢复ras的状态。

4、通常,数据缓冲器溢出可以在许多用例中发生。通常,只要存在固定大小的缓冲器,并且请求向数据缓冲器中添加超过了固定的缓冲器大小的更多条目,并且请求消耗这些条目,就可能发生数据缓冲器溢出。本文公开的示例的方面通常适用于解决数据缓冲器溢出。

5、在该方面,在一个示例性方面,提供了一种包括循环缓冲器的装置。该装置还包括返回指针寄存器、全局环绕组寄存器和缓冲器管理器电路。循环缓冲器包括在数据被写入循环缓冲器的第一方向上静态链接的固定数量的条目,该固定数量的条目中的条目包括:局部环绕组字段,其被配置为识别在写入循环缓冲器的哪个迭代中条目上次被写入;以及第二字段,其被配置为存储到下一条目的链接,该下一条目要在从循环缓冲器读取条目之后在读取请求时返回。返回指针寄存器被配置为跟踪固定数量的条目中最近添加的数据条目。全局环绕组寄存器被配置为存储表示循环缓冲器已经被写入的迭代的次数的值。响应于写入请求,缓冲器管理器电路被配置为:确定固定数量的条目中的下一可用条目;将下一可用条目的局部环绕组字段更新为全局环绕组寄存器的值;并且将下一可用条目的第二字段更新为返回指针寄存器的值。

6、在另一示例性方面,提供了一种用于管理lifo系统的方法。该方法包括建立循环缓冲器。循环缓冲器包括在数据被写入循环缓冲器的第一方向上静态链接的固定数量的条目,该固定数量的条目中的条目包括:局部环绕组字段,其被配置为识别在写入循环缓冲器的哪个迭代中条目上次被写入;以及第二字段,其被配置为存储到下一条目的链接,该下一条目要在从循环缓冲器读取条目之后在读取请求时返回。该方法还包括:建立返回指针寄存器,该返回指针寄存本文档来自技高网...

【技术保护点】

1.一种用于执行环绕跟踪以解决循环缓冲器中的数据溢出的装置,包括:

2.根据权利要求1所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于读取请求,将所述返回指针寄存器更新为所述条目的所述第二字段的所述值。

3.根据权利要求1所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于覆写所述第一条目,而递增所述全局环绕组寄存器。

4.根据权利要求3所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于读取或者写入请求,而将所述返回指针寄存器和所述全局环绕组寄存器的状态存储在分支次序缓冲器中。

5.根据权利要求4所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于误预测信号,从所述分支次序缓冲器恢复所述返回指针寄存器和所述全局环绕组寄存器。

6.根据权利要求4所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于与条目相关联的提交信号,通过被配置为将所述条目的所述局部环绕组字段与所述全局环绕组寄存器进行比较来识别所述条目是否先前已经被覆写。

7.一种执行环绕跟踪以解决循环缓冲器中的数据溢出的方法,包括

8.根据权利要求7所述的方法,还包括:

9.根据权利要求7所述的方法,还包括:

10.根据权利要求9所述的方法,还包括:

11.根据权利要求10所述的方法,还包括:

12.根据权利要求10所述的方法,还包括:

13.一种用于执行环绕跟踪以解决循环缓冲器中的数据溢出的非暂时性计算机可读介质,所述非暂时性计算机可读介质具有存储在其上的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使得所述处理器:

14.根据权利要求13所述的非暂时性计算机可读介质,其中,所述计算机可执行指令在由所述处理器执行时,还使得所述处理器:响应于读取请求,将所述返回指针寄存器更新为所述条目的所述第二字段的所述值。

15.根据权利要求13所述的非暂时性计算机可读介质,其中,所述计算机可执行指令在由所述处理器执行时,还使得所述处理器:响应于覆写所述第一条目,而递增所述全局环绕组寄存器。

16.根据权利要求15所述的非暂时性计算机可读介质,其中,所述计算机可执行指令在由所述处理器执行时,还使得所述处理器:响应于读取或者写入请求,存储所述返回指针寄存器和所述全局环绕组寄存器的状态。

17.根据权利要求16所述的非暂时性计算机可读介质,其中,所述计算机可执行指令在由所述处理器执行时,还使得所述处理器:响应于误预测信号,恢复所述返回指针寄存器和所述全局环绕组寄存器。

18.根据权利要求16所述的非暂时性计算机可读介质,其中,所述计算机可执行指令在由所述处理器执行时,还使得所述处理器:响应于与所述条目相关联的提交信号,通过将所述条目的所述局部环绕组字段与所述全局环绕组寄存器进行比较来识别所述条目是否先前已经被覆写。

19.一种用于在写入条目时更新后进先出(LIFO)结构的方法,包括:

20.根据权利要求19所述的方法,还包括:

21.根据权利要求19所述的方法,还包括:

22.根据权利要求21所述的方法,还包括:

23.根据权利要求20所述的方法,还包括:

...

【技术特征摘要】
【国外来华专利技术】

1.一种用于执行环绕跟踪以解决循环缓冲器中的数据溢出的装置,包括:

2.根据权利要求1所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于读取请求,将所述返回指针寄存器更新为所述条目的所述第二字段的所述值。

3.根据权利要求1所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于覆写所述第一条目,而递增所述全局环绕组寄存器。

4.根据权利要求3所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于读取或者写入请求,而将所述返回指针寄存器和所述全局环绕组寄存器的状态存储在分支次序缓冲器中。

5.根据权利要求4所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于误预测信号,从所述分支次序缓冲器恢复所述返回指针寄存器和所述全局环绕组寄存器。

6.根据权利要求4所述的装置,其中,所述缓冲器管理器电路还被配置为:响应于与条目相关联的提交信号,通过被配置为将所述条目的所述局部环绕组字段与所述全局环绕组寄存器进行比较来识别所述条目是否先前已经被覆写。

7.一种执行环绕跟踪以解决循环缓冲器中的数据溢出的方法,包括:

8.根据权利要求7所述的方法,还包括:

9.根据权利要求7所述的方法,还包括:

10.根据权利要求9所述的方法,还包括:

11.根据权利要求10所述的方法,还包括:

12.根据权利要求10所述的方法,还包括:

13.一种用于执行环绕跟踪以解决循环缓冲器中的数据溢出的非暂时性计算机可读介质,所述非暂时性计算机可读介质具有存储在其上的计算机可执行指令,...

【专利技术属性】
技术研发人员:A·B·博尔H·桑耶里瓦拉A·K·拉特
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1