将指令装入指令高速缓冲存储器中的方法

文档序号:6409418阅读:131来源:国知局
专利名称:将指令装入指令高速缓冲存储器中的方法
技术领域
本发明涉及数字计算机系统,具体涉及指令高速缓冲存储器。
高速缓冲存储器(memory caches)是因性能的原因而设置在数据处理系统中的存储系统,它存储数据处理系统的主存储器的内容的子集,该子集由一个选定的子系统(通常是系统的数据处理器)来使用。高速缓冲存储器与主存储器相比,能以更快的速率将数据提供到数据处理器,其原因在于以下几方面首先,高速缓冲存储器与主存储器系统相比,高速缓冲存储器由级别更高的存储器电路构成,这些电路能以比主存储器高些的时钟速率来运行;其次,在数据处理器与高速缓冲存储器之间可以有一条专用总线,从而导致在数据处理器与高速缓冲存储器之间的频带宽度比数据处理器与主存储器之间的宽些;最后,高速缓冲存储器可以在物理上放在与由它提供数据的子系统相同的集成电路上。在这种情况下,高速缓冲存储器由较快的电路构成,并且在高速缓冲存储器与数据处理器之间有一条专用总线。
高速缓冲存储器可以由其所存储的信息类型来进一步加以区分。统一式(unified)高速缓冲存储器按照一种单一的结构存储所有类型的信息,指令式高速缓冲存储器只存储数据处理器执行的或将要执行的指令,数据式高速缓冲存储器只存储数据处理器使用的或将要使用的数据。包含有指令高速缓冲存储器和数据高速缓冲存储器的数据处理系统称为具有“Harvard(哈佛)结构”。
具有哈佛结构的数据处理器至少有一个缺点。这些数据处理器“缺少”在它们将特定的数据块装入到它们的数据高速缓冲存储器内时将特定的指令装入到它们的指令高速缓冲存储器内的能力。具有哈佛结构的数据处理器将指令装入其指令高速缓冲存储器中只是作为“确定它接下来该执行什么指令”的一个副产品,该数据处理器在它执行一条特定指令之前将某条指令装入到指令高速缓冲存储器,为此,当数据处理器从数据处理系统的主存储器子系统取出指令时,在每条指令或每组指令被执行之前要引入一个小的迟延。
下面将结合附图详细描述本发明,本发明的特点和优点就更清楚了。附图中相同的标号代表相同和相关的部件。


图1示出了与本发明一起使用的数据处理器的方框图;图2示出本发明的一序列指令的表格形式;图3示出图1所示数据处理器执行图2所示的指令序列的一部分的第一时序图。
图1示出与本发明一起使用的数据处理器10的方框图。数据处理器10涉及独立指令和数据的高速缓冲存储器。像其它的“哈佛结构”式数据处理器那样,数据处理器10在它确定它应执行指令时将该指令装入其数据高速缓冲存储器。通常,数据处理器10在完成一条特定指令之后执行下一顺序的指令。数据处理器10通过在主存储器中将该特定指令的地址上加一位移来确定下一顺序的指令。在某些情况下,数据处理器10执行一个非顺序的指令。也就是说,数据处理器10在某些情况下执行了分支指令之后,在它接受一个中断之后,在某些指令产生例外之后等等情况下,执行一个非顺序的指令。根据本发明,数据处理器10可以被编程,以便在它需要指令之前将指令块装入它的指令高速缓冲存储器中。借此,例如对于时间紧迫的数字信号处理(“DSP”)的例行程序数据处理器10可以保证指令块存在于指令高速缓冲存储器中。
继续参照图1,总线接口单元(下文称为BIU)12控制数据处理器10与数据处理系统其余部分(图中未示出)之间的数据流。BIU12连接到指令高速缓冲存储器14和数据高速缓冲存储器16。指令式高速缓冲存储器14把一个指令流提供到定序器单元18,定序器单元18将各条指令送到适当的执行单元。数据处理器10具有一个分支单元20、一个定点执行单元A22、一个定点执行单元B24、一个复杂定点执行单元26、一个装入/存储执行单元28以及一个浮点执行单元30。定点执行单元A22、定点执行单元B24、复杂定点执行单元26、装入/存储执行单元28将其结果读和写到一个通用结构的寄存器文件32(标为“GPRs”,下文称为“GPR文件”)和一个第一重新命名缓冲器34内。浮点执行单元30和装入/存储执行单元28将其结果读和写到一个浮点结构寄存器文件36(标记为“FPRs”,下文称为“FPR文件”)和一个第二重新命名的缓冲器38内。
在尚未公开本发明的情况下数据处理器10的运行对本领域是公知的。总地说来,数据处理器是一台简化指令集的计算机(RISC)。数据处理器10通过将每个指令分为一系列较小的步骤,每个步骤可以与其它指令的步骤在时间上重叠,来取得高性能。这功能策略称为“流水线技术”。在所述的实施例中,每条指令被分为五个分离的步骤取出、分配、执行、回写和完成。
在取出阶段期间,指令高速缓冲存储器14中的存储器管理电路(图中未示出)在定序器单元18和分支单元20所识别的一个存储器地址(取出地址)时开始检索一条或多条指令。定序器单元18和分支单元20确定什么序列的编程指令在某些数据寄存器的内容和指令本身已给定的情况下是适合的。指令高速缓冲存储器14将这个编程指令序列提供给定序器单元18。如果指令高速缓冲存储器14不含需要的指令,则它会从数据处理器10之外的主存储器系统(图中未示出)取出这些指令。
在分配阶段期间,定序器单元18将编程指令序列的各条指令分配给各个执行单元20、22、24、26、28和30。定序器单元18还在重新命名缓冲器34或38中保留一个入口,用于在其中暂时存储结果(如果有的话)。两个重新命名缓冲器都是先进先出(FIFO)队例。
在执行阶段期间,每个特定的执行单元执行其编程指令。每个执行单元执行一个特定级的指令中的一条或多条指令,每个执行单元的特定级指令由该执行单元的名称来指明。例如,定点执行单元A和B对以定点符号例如加、减、与、或和异或表示的运算符执行简单的数学运算。复杂定点执行单元26对以定点符号例如乘和除表示的运算符执行较复杂的数学运算。浮点执行单元30对以浮点符号例如乘和除表示的运算符执行数学运算。
定点执行单元A和B以及复杂定点执行单元26将它们的运算结果返回到第一重新命名缓冲器34的指定入口。当在产生结果的指令之前的所有指令已更新了它们的GPR文件入口时,第一重新命名缓冲器34用其一个入口周期性地更新GPR文件32的一个入口。定序器单元18保持一个再排序缓冲器39来协调这一更新。再排序缓冲器39是一个FIFO队列,它将编程指令气流的一部分按其初始顺序存储起来。定序器单元18等待直待到再排序缓冲器39中最先的指令执行完毕时为止。然后,它用存储在分配给该指令的重新命名缓冲器入口中的结果来更新结构寄存器。定序器单元18也使再排序缓冲器39中的该指令入口无效,以为后面的指令留空间。第一重新命名缓冲器34和GPR文件32都能将运算符提供给定点执行单元A和B以及复杂定点单元26。
浮点执行单元30将其运算结果返回到第一更新命名缓冲器38的指定入口。当产生结果的指令之前的所有指令已更新了它们的GPR文件入口时,第二重新命名缓冲器38用它的一个入口来更新FPR文件36的一个入口。定序器单元18也协调这一更新。第二重新命名缓冲器38和FPR文件36都给浮点执行单元30提供运算符。
装入/存储执行单元28读出存储在GPR文件32中的数据,或者在完成时刻读取存储在FPR文件36中的数据,并将选定的数据写入数据高速缓冲器16中。这一数据还可以写入外部存储器系统(图中未示出),这取决于数据处理器10的运行特性,与公开的本发明无关。相反,装入/存储执行单元28读出存储在数据高速缓冲存储器16中的数据,并将读出的数据写入第一更新命名缓冲器34或第二重新命名缓冲器38。如果数据高速缓冲存储器16不含所需数据,则它经由BIU12从数据处理器10外部的主存储器系统取出该数据。
在回写阶段期间,每个执行单元将其结果(如果有的话)写入保留的重新命名缓冲器入口。定序器单元18还确定哪些指令能够在下一阶段更新适当的结构寄存器。
在完成阶段期间,在某个或某些特定指令之前的每个指令已更新了结构寄存器文件后,定序器单元18用存储在重新命名缓冲器中的特定指令的结果来更新结构寄存器文件。
总之,每个指令项占用一个机器时钟周期。然而,一些指令需要一个以上的时钟周期来执行,而其它的指令不需要经过这五个阶段。由于各个指令完成其执行所占用的时间范围,也可能在某个特定指令的回写和完成阶段之间有一个迟延。
本发明所公开的数据处理器10的运算在下面将结合图2和图3进行描述。
数据处理器10还利用静态分支预测方法学,来保证向它的各个执行单元20、22、24、26、28和30恒定地提供指令。根据静态分支预测方法学,如果数据处理器10尚未根据分支指令确定所依据的状态时,则它依赖于分支指令本身的一个或多个比特位来假设将采用该分支或不采用该分支,接着,数据处理器10在根据该分支指令实际计算状态之前不采用的或不采用的地址上取出指令作为适合指令。随后,数据处理器10计算该状态,如果预测错误,则返回到先前未选择的取出地址,否则,数据处理器沿着预定路径继续执行指令。在编辑程序时,根据指令执行时该分支是占主导的采用还是占主导的不采用这样一种统计概率,预测每个分支指令为采用的或不采用的。指令自身的一个或多个比特位向数据处理器10指示分支指令是否应该采用或不采用。
图2示出了本发明的一个指令序列的表格形式。图2所示的指令执行两种功能。第一,该指令将常数装入各种不同的寄存器,所述常数是将所需的指令块预装入指令高速缓冲存储器14时所要求的;第二,该指令执行一个例行程序(标记为“循环”),在每当数据处理器10执行“循环”例行程序,该例行程序将高速缓冲存储器行预装入指令高速缓冲存储器14。高速缓冲存储器行是在数据处理器10与它的存储器系统之间的一个标准大小的数据转移。所示的指令是Power PCTm指令集的组成部分(Power PC是国际商业机器公司(IBm)的商标)。然而,本领域的技术人员结合实例描述,可将Power PC指令转换成为另一个数据处理器的指令。
继续参照图2,数据处理器10最初就作好了执行“循环”例行程序的准备。指令高速缓冲存储器14和数据高速缓冲存储器16中的属性比特被修改,以只允许所需的指令被高速缓冲存储在数据处理器10(图中未示出)中。主存储器中的所有其它地址空间被限定为“非高速缓冲存储的”所需的指令装入操作次数N被存储在一个计数器寄存器“ctr”中。指令装入操作次数N等于预装到指令高速缓冲存储器14中的指令个数除以标准存储器存取的大小。数据处理器10执行N次“循环”例行程序。在所示的例子中,预装入的32位比特指令的个数为2048,存储器存取的标准大小为32个字节,则N等于256。预先装入的第一指令的地址LOAD-BLOCK存储在链接寄存器“Ir”中,该链接寄存器起指示器的作用,它指向要从主存储器中取出的下一条指令。
接下来,一个常数锁定指令高速缓冲存储器14以防止再装入,该常数存储器在通用寄存器r3中。该常数HIDO-VALUE最终被移到一个特定用途寄存器HIDO,在“循环”例行程序被执行N次后,在该寄存器中该常数对所有指令高速缓冲存储器运行进行保护。通用寄存器r2装入一个非零值。最后,在通过使用一个指令同步操作而分支到“循环”例行程序之前,所有指令允许完成。
数据处理器10执行“循环”例行程序N次,借此,将N个高速缓冲存储器行预先装入到指令高速缓冲存储器14。数据处理器10通过将以字节形示的存储器存取的标准大小与执行图示的例行程序当前指令指示的N次的每一次相加,来计算下一指令装入操作的地址。接着,数据处理器10执行一条长时间等待指令,其结果是随后分支指令的基础。在这种情况下,如果长时间等待指令的结果等于零,则分支指令将分支到链接寄存器(指示器)的内容,否则,分支指令输出顺序取出地址。
长时间等待指令亦即一个整数除指令,它在分支指令开始之后完成,并且其结果总是“真”或“非零”。分支指令被编码,来按照统计来预测,如果它所依据的条件未知,则它应被采用(“+”)。相反,在分支指令执行之前,长时间等待指令的结果总是未知的。因此,数据处理器10总是预先装入由链接寄存器的内容作索引的8条指令。
最后,数据处理器10完成长时间等待指令,并且确定它不应分支到链接寄存器的内容。然后数据处理10在紧随分支指令之后的指令处继续执行指令。在这里,一个“传送到”(move-to)指令跟在预测错误分支指令之后,该“传送到”指令把下一个指针的值装入链接寄存器。最后,数据处理器10使条件寄存器的内容递减,将该值与零相比较,并且如果它执行该例行程序少于N次,则返回到“循环”例行程序的起始点。程序执行N次后,数据处理器10放弃“循环”例行程序。
执行“循环”例行程序N次之后,数据处理器10锁定指令高速缓冲存储器14,以防止预先装入的指令不致因疏忽而重写。然后,可以修改数据高速缓冲存储器16中的属性比特位,以允许新的数据被高速缓冲存储到数据高速缓冲存储器16中(图中未示出)。
图3示出图1所示数据处理器10执行图2所示的指令序列的一部分时的第一时序图。图3示出了“环路”例行程序相对于周期性时钟信号CLOCK的两种迭代。如上所述,长时间等待除指令divw。在随后的分支指令beqlrt。起点之后结束。在所述的实施例中,数据处理器10可能需要20或更多个周期来执行一个整数除指令。然而,在第5时钟周期内,数据处理器10推测出分支,并且开始预先装入由链接寄存器的内容所索引的指令。分支指令beqlrt最后将在长时间等待指令完成后的时钟周期内产生一个校正的取出地址。一旦指令高速缓冲存储器14完成预装入高速缓冲存储器行,数据处理器10就执行“传送到”指令和第二分支指令。数据处理器10的某些实施例会在它的一旦接收到指令时就执行该预装入的指令。因此,图3示出了预装入高速缓冲存储器行操作与这些预装入的指令将要执行之处的“传送到”指令之间的纵向断开。然而,在分支指令be-qlrt按预计完成之前,这些相同的数据处理器将不会把推测取出的指令的结果传送到各种结构寄存器中。
虽然本发明是参照特定实施例描述的,但本领域的技术人员可以进一步地修改和改进。例如,已公开的本发明可以包括在按常规分类为复杂指令集计算机(CISC)的数据处理器中,也可以结合到每个时钟周期能分配二条或多条指令的数据处理器中。已公开的本发明也可以采用动态分支预测方法来代替所描述的静态分支预测方法。例如Power PC620TM微处理机可以动态预测转移结构,并同时有选择地更新其分支历史表(Power PC 620是国际商业机器公司的商标)。如果分支历史表未修改,以反应不正确的猜测,则这样的方法将导致固定的预测。因此,应该理解,本发明包括不脱离权利要求书所限定的精神与范围之内的所有这类修改。
权利要求
1.一种用以将指令装入数据处理器的指令高速缓冲存储器中的方法,其特征在于,该方法包括以下步骤在数据处理器中第一次取出第一指令,该第一指令在被执行时产生一个结果;在数据处理器中第二次取出一条分支指令,该分支指令在结果等于一个第一值时产生一个“顺序取出地址”,而结果等于一个第二个值时产生一个第一“分支被采用—取出—地址”,而结果未知时,该分支指令推测地产生第一“分支—被采用—取出—地址”;响应“第一分支—被采用—取出—地址”,第一次将指令装入数据处理器的指令高速缓冲存储器中;第一次执行第一指令,该第一指令产生第一值;第二次执行分支指令,该分支指令产生“顺序—取出—地址”;产生一个“第二分支—被采用—取出—地址”;第三次取出第一指令;第四次取出分支指令,该分支指令在结果等于一个第一值时产生“顺序—取出—地址”,而结果等于第二值时产生“第二分支—被采用—取出—地址”,而如果结果未知时,则该分支指令推测地产生“第二分支—被采用—取出—地址”;响应“第二分支—被采用—取出—地址”,第二次将指令装入指令高速缓冲存储器中;第三次执行第一指令,该第一指令产生第一值;及第四次执行分支指令,该分支指令产生“顺序—取出—地址”。
2.根据权利要求1所述的方法,其特征在于,进一步包括锁定指令高速缓冲存储器的步骤。
3.一种用以将指令装入数据处理器的指令高速缓冲存储器中的方法,该方法重复执行一个例行程序,其特征在于,该例行程序包括以下步骤递增指示器;执行一条长时间等待指令,产生一个结果;和推测地执行一条分支指令,该分支指令响应上述结果,产生一个取出地址,该分支指令响应该结果的第一值,产生一个“顺序—取出—地址”,该分支指令响应该结果的第二值和指示器,产生一个“分支—被采用—取出—地址”,而在结果未知时,该分支指令产生“分支—被采用—取出—地址”。
4.根据权利要求3所述的方法,其特征在于,进一步包括在例行程序执行之后锁定指令高速缓冲存储器的步骤。
5.根据权利要求4所述的方法,其特征在于,例行程序进一步包括以下步骤将一个计数器的值与一个预定值相比较;及响应该比较步骤,执行该例行程序。
6.根据权利要求4所述的方法,其特征在于,例行程序进一步包括以下步骤将指示器与一个预定值相比较;及响应比较步骤执行该例行程序。
7.根据权利要求3所述的方法,其特征在于,例行程序进一步包括以下步骤将一个计数器的值与一个预定值相比较;及响应比较步骤,执行该例行程序。
8.根据权利要求3所述的方法,其特征在于,例行程序进一步包括以下步骤将指示器与一个预定值相比较;及响应比较步骤,执行该例行程序。
9.一种用以将指令装入数据处理器的指令高速缓冲存储器中的方法,该方法重复执行一个例行程序,其特征在于,该程序包括以下步骤在数据处理器中第一次取出一条第一指令,该第一指令由顺序取出地址索引,该第一指令在执行时产生一个包括一个第一值的结果;在数据处理器中第二次取出一条第一分支指令,如果结果等于第一值,则该第一分支指令产生“顺序—取出—地址”,如果结果等于一个第二值,该第一分支指令产生一个“分支—被采用—取出—地址”,如果结果未知,则该第一分支指令推测地产生“分支—被采用—取出—地址”;响应该“分支—被采用—取出—地址”,第一次将指令装入一个指令高速缓冲存储器中;产生“分支—被采用—取出—地址”。
10.根据权利要求9所述的方法,其特征在于,进一步包括在例行程序执行之后锁定指令高速缓冲存储器的步骤。
全文摘要
将特定指令块装入哈佛结构数据处理器(10)的指令高速缓冲存储器(14)的方法包括在一个循环中重复地错误预测分支指令。该分支指令受执行谋求输出一个顺序取出地址的指令的限制。该指令的结果直到分支指令开始执行时才能得到。数据处理器推测地执行或预测分支指令。这时分支指令预测它将分支到特定指令块。数据处理器将指令装入其指令高速缓冲存储器,确定它错误地预测分支指令并返回循环起点,以便另一迭代。
文档编号G06F9/38GK1151047SQ9511977
公开日1997年6月4日 申请日期1995年11月23日 优先权日1994年11月25日
发明者布拉德利·伯吉斯 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1