多端口和交错的超高速缓冲存储器的制作方法

文档序号:6412539阅读:203来源:国知局
专利名称:多端口和交错的超高速缓冲存储器的制作方法
技术领域
本发明涉及一种可同时容纳对计算机输出的多个即至少两个例如装入操作的存储器存取的超高速缓冲存储器。更具体地说,本发明涉及多端口的和交错的超高速缓冲存储器。并且,该多端口和交错存取的超高速缓冲存储器特别适用于能够在一个周期内进行多次同时的存储器存取的超长指令字(“VLIW”)计算机。
例如N路超标量、VLIW和DATAFLOW处理机的高度并行计算机体系结构在每个周期中同时进行多个装入操作和/或存储操作,从而需要很高频带的超高速缓冲存储器。考虑VLIW体系结构作为范例,它为了在每个周期内进行多次装入操作和/或存储操作利用细粒并行性。
计算机系统的传统并行机制涉及多个处理机。这些处理机通过通信网络连接并被控制,从而在同一时刻多于一个的处理机是现用的。为了把传统的并行处理机运用于一个特定的应用中,程序员或复杂的编译程序必须把问题分解成各部分并建立适当的通信和控制。通常,这种方法最宜应用于那些天生地可分解成彼此很少需要通信的许多部分的问题。但是,许多应用不能按这种方式构造。从而,除了用于“科学”数值方法和其它高度结构化的问题外,传统的并行处理不是非常有效的。
在几个方面上细粒并行性是指令级并行性的扩充。编译程序发现程序中可以同时执行的机器指令。这些独立的指令一起放入到一条复合指令中,即“超长指令字”(VLIW)中。VLIW指令的各个部分控制计算机硬件的一个独立部分,例如运算逻辑部件、至主存储器的通路或至寄存器的通路。在一个VLIW机器周期内,可以独立地使用VLIW计算机内所有的这些独立资源,从而可以同时执行几条基本机器指令。这可具有能够比传统单元处理机的处理机下在较少的机器周期内完成任务的优点。
VLIW技术改进了单处理机性能。因此,可把它看成为开发的计算机内并行性,它也称为细粒并行性。相反,传统的或者粗粒的并行性可以看成为计算机间的并行性。当然,通过把几个VLIW计算机连接为一个计算单元有可能利用计算机内和计算机间并行性。


图1是一个框图,说明包括相关存储器分层的现有技术的VLIW的体系结构。寄存器堆110和功能部件102-108连接。更具体地说,装入/存储部件102、浮点加法部件104、整数ALU106和转移部件108中的每个部件具有两条从寄存器堆110提供数据的装入线和一条从功能部件向寄存器堆110存储数据的存储线。寄存器堆110称为LO存储器层。
图1还包括L1存储器层,或超高速缓冲存储器,112,它双向地和寄存器堆110及L2存储器层114连接。L2存储器层114双向地和L3存储器层116连接。L3存储器层116还双向地和L4存储器层118连接。图1中所示的存储器分层体系的一般原理是周知的。
在历史上,两个因素影响计算机的运行速度,第一个因素是例如其最慢的功能部件处理机对现已得到的数据的操作速度。第二个因素是功能部件所需数据可获得的速度。在历史上,改进第二个因素要比第一个因素更难。
VLIW概念认识到,对于给定的存储器存取时间,如果在同一时间处理更多条的数据可以提高有效操作速度。例如,八个功能部件在一个周期内将操作最多达十六条的数据。相反,在任一周期内只能使用其一种功能部件的计算机在每个周期两条数据的速率下操作十六条数据需要八个周期。在该例子中,VLIW计算机尽管具有相同的存储器存取时间都比传统的计算机快八倍。
然而只有当存在着可以同时分别向八个功能部件提供十六条数据的超高速缓冲存储器时VLIW计算机才达到这种改进。从可接线性、性能、功率强度以及在例如低于1纳秒的存取时间的高速下的噪声容限的角度来看,真正的八个或更多的端口的超高速缓冲存储器阵列被认为是不现实的。真正的八端口或更多端口的高速缓冲存储器阵列是极为复杂的。它具有本质上的性能问题,因为,例如,N个端口趋于向电流源性能和单元(cell)输出器件的容量施加大的负载。通过电路的布置,任何端口必须能驱动任何流水线/总线。
相反,把超高速缓冲存储器构造成独立操作的部件或模块,即交错存取的,只要求每个中间层驱动一个流水线。通过利用交错存取伸展超高速缓冲存储器,可接线性得到改进,从而提高性能。因为仅需要驱动一个或二个输出端口,每个单元可做得更小。
本发明的一个目的是提供一种超高速缓冲存储器,它能同时接纳多个存储器存取,例如对VLIW计算机的装入操作。
本发明的一个目的是提供一种运行上等同于真正8端口的和交错存取的超高速缓冲存储器但又不真正是8端口的装置,即一种可同时接纳8个存储器存取的伪8端口的和交错存取的超高速缓冲存储器。
本发明的一个目的是提供一种可同时接纳16个或更多的存储器存取的伪16端口或更多端口的和交错存取的超高速缓冲存储器。
本发明的一个目的是提供用于生成在8端口、16端口或更多端口的和交错存取的超高速缓冲存储器中存储数据的有效地址的方法和装置。
本发明的一个目的是提供一种编译程序方法,用以优化使用8端口、16端口或更多端口的和交错存取的超高速缓冲存储器。
本发明提供一种可同时接纳例如VLIW计算机请求约多个装入操作这样多个存储器存取的超高速缓冲存储器。
本发明提供一种可同时接纳多个存储器存取的超高速缓冲存储器,由于用逻辑构件组成伪多端超高速缓冲存储器,它在可接线性、性能、功率强度和噪声容限上不承受实多端口超高速缓冲存储器的这些方面的成本。从而,伪多端口超高速缓冲存储器具有实多端口超高速缓冲存储器的功能性但不具有其技术和/或制造复杂性。
实多端口存储器的问题例如可接线性和功率强度得到解决,即本发明提供用逻辑构个组成的不具有这些问题的伪8端口、16端口或更多端口的和交错存取的存储器。在一种实施方式中,逻辑构件具有单个写端口、单个读端口和专用行地址总线。在第二实施方式中,逻辑构件具有操作上和一条专用读地址总线连接的第一组的一个写端口和一个读端口以及操作上和另一条专用读地址总线连接的第二组的一个写端口和一个读端口。
本发明的各种目的还通过提供容纳多个数据单元的一个伪多端口和交错存取超高速缓冲存储器来达到。该存储器划分成第一逻辑部分和第二逻辑部分。每个逻辑部分容纳多个数据单元。每个逻辑部分交错成M个区(bank),M≥2。每个区包括至少一个第一写/控制端口;以及至少一个第一读端口。每个区对每对写端口和读端口设有一条专用行地址总线。每个逻辑部分的第一写/控制端口在运行上和第一写/控制总线连接,而每个逻辑部分的第二写/控制端口在运行上和第二写/控制总线连接,从而第一写/控制总线的写操作独立于第二写/控制总线的写操作。
从下面给出的详细说明本发明的可应用的其它范围将变得明了。但是,应该理解,用于表示本发明的最佳实施方式的详细说明以及具体的例子仅是按示意的方式给出的,因为从该详细说明熟练的技术人员将会清楚在本发明的精神和范围之内的各种改变和修改。
从下面给出的仅出于示意方式的和不限定本发明的详细说明及其附图将更全面地理解本发明,附图是图1是现有技术的超长指令字(VLIW)计算机和其相关存储器分层结构的框图;图2是本发明的超高速缓冲存储器的第一和最佳实施方式的框图;图3是和本发明的超高速缓冲存储器结合使用的寻址模式中所涉及的硬件的框图;图4是本发明的超高速缓冲存储器的第二实施方式的图示;图5是第一实施方式的可选附加方式的框图;图6是第一实施方式的可选附加的和最佳的缓冲方式的框图;图7是图6的缓冲方式的更详细的框图;以及图8表示使使用本发明的超高速缓冲存储器的缓冲方式的处理机发出的存储指令的结构。
由于物理的或者真正的8端口或端口更多的超高速缓冲存储器阵列在当今是不现实的,本发明的各实施方式实现一种构件方法,在该方法中使用多个实际的物理构件(最好是最大的物理构件)在逻辑上组成伪8端口、16端口或更多端口的和交错存取的超高速缓冲存储器。
图2描述本发明的第一和最佳的超高速缓冲存储器实施方式的框图。图2的超高速缓冲存储器200最好是一个纯数据超高速缓存,但可以是一个混合式指令/数据超高速缓存,并用于替代图1的L1超高速缓存112。L1超高速缓冲存储器200包括第一逻辑部分A,标记为项202;第二逻辑部分,标记为项204;8×8纵横接线器A206以及8×8纵横接线器B208。
每个逻辑部分202和204划分成,例如,8个区或构件,标记为区0至区7。每个区j,包括一个写端口WPj和一个读端口RPj。写端口WPj和一条8字节宽的写入线WLj连接。
每个纵横接线器206和208具有8个输入端口IP0和IP7和8个输出端口OP0和OP7。纵横接线器206的每个输出端口分别和读出线RLA0至RLA7连接。类似地,纵横制接线器208的每个输出端口分别和读出线RLB0至RLB7连接。每个地址线RLA0至RLA7和RLB0至RLB7和图1的寄存器堆110连接。
纵横接线器206的输入端口和逻辑部分202的读端口连接。类似地,纵横制接线器208的输入端口和逻辑部分204的读端口连接。
每个写入线WL0至WL7、连接逻辑部分的一个读端口和一个纵横接线器输入端口以及读出线RLA0至RLA7和RLB0至RLB7各条总线为,例如,8字节宽,这里8字节数据代表一个双字。
图3是一个框图,描述为生成有效地址以在本发明的8端口、16端口或更多端口的和交错存取的超高速缓冲存储器里存储数据的方法而实施的最佳结构。基址寄存器302和加法器306的一个输入端连接。指令寄存器304的位移域和加法器306的阵个输入端连接。加法器306的输出端和一个3-8译码器308连接。译码器308的输出线充当区选择线BS0至BS7。
图4描述本发明的超高速缓冲存储器的第二实施方式,它是图2的最佳实施方式的一种替代方案。存储设备400表示为具有8个区,区0至区7。每个区是一个具有二个逻辑部分A和B的2端口的逻辑构件。区j的端口A具有写端口A-WPj和读端口A-RPj,并具有专用读地址总线RA(Aj)。类似地,区j的端口B具有写端口B-WPj和读端口B-RPj,以及专用读地址总线RA(Bj)。每对写端口A-WPj和B-WPj一起连接到写入线WLj。换言之,对于每个区0-7分别存在写入线WL0至WL7。
如图2中那样,存在着8×8纵横接线器206和8×8纵横接线器208,纵横接线器206的输入端和存储结构400的逻辑部分A的读端口组连接,纵横接线器208的输入端和逻辑部分B的读端口组连接。
并且,如图2中所示,写入线WL0至WL7、读出线RLA0至RLA7和RLB0至RLB7、以及把存储结构400的读端口连接到纵横接线器206和208的线都为8字节宽。
图5表示图1所示的第一实施方式的可选附加方式的框图。如图2中,有两个各具有区0-区7的存储装置200和204。每个区又划分为4个象限Q0至Q3。每个象限和来自图1的L2存储器层114的8字节宽的数据线连接。例如,在区0中,象限Q0和L2再装入线L2R0连接,我和L2R1连接,Q2和L2R2连接,以及Q3和L2R3连接。类似地,例如,在区7中,Q0和L2再装入线L2R28连接,Q1和L2R29连接,Q2和L2R30连接,以及Q3和L2R31连接。
和图2中逻辑部分A和B的对应端口的写入线组连接在一起相一致,图4的L2再装入线组连接在一起,从而,例如,在数据结构204的区0中,Q0还和L2R0连接,Q1还和L2R1连接,Q2还和L2R2连接,以及Q3还和L2R3连接。为使图5简明,图5中略去L2再装入线和其它区/象限之间的连接。
每个区中的四个象限各还和一个“或”门连接,例如,“或”站500和存储结构200的区0的象限0-3连接。“或”门502和存储结构200的区7的象限Q0-Q3每一个连接。“或”门504和数据结构204的区0的各个象限Q0-Q3连接,而“或”门506和区7的各个象限Q0-Q3连接。各个“或”门500和图1的寄存器堆110连接。类似于L2再装入线,把象限和“或”门连接起来的每条线为8字节宽。L2再装入线0-31代替图1的L2存储器层114和图2有写入线WL0至WL7之间的连接。又,为保留图5的简明性,在图5中未示出所有的“或”门。
图6描述在第一实施方式的可选附加的和最佳的缓冲方式中所涉及的结构的框图。在图6中,为保留图的简明性,仅示出一个逻辑部分的一部分,即部分A的区j。以下更全面讨论的周期挪用逻辑600从读地址线RA(A)j上接收地址信号。
三个存储指令(“存储操作”)缓冲器串行地和区j连接,即,写入线Wj示为馈给存储操作缓冲器606。存储操作缓冲器606馈入给存储操作缓冲器604。存储操作缓冲器604馈给存储操作缓冲器602,并且存储操作缓冲器602馈给区j的写端口Wpj。
经信号线608,周期挪用逻辑600向各个存储操作缓冲器602、604和606发送控制信号。并且,还示出地址比较功能逻辑610,它在读地址线RA(A)j上接收读地址信号,并且分别经信号线612-612从各个存储操作缓冲器602-606接收已被缓冲的存储指令作为目标的存储单元的地址。以下要更全面说明的地址比较操作逻辑610经信号线618输出取出/装入拖延控制信号。
图7是本发明的超高速缓冲存储器的缓冲方式的更详细框图。图7表示超高速缓冲存储器200或400的一个示范性区702,称为“区j”。类似地,和该区j,即项702,相关的三个示范性存储操作缓冲器为项704A、704B和704C。
在图7中,通过16字节的双向寄存器一寄存器数据总线906,定点处理机902和浮点处理机904连接。通过32字节宽的写总线932,浮点处理机904和存储操作缓冲器704C连接。
图7的区j可以存储多个8字节的双字。另外,它有一个经线920j、选择器918并分别经线922和924把区j和定点处理机902及浮点处理机904连接起来的读端口。选择器918例如可以分别是在图2和图4中的纵横接线器206和208中的一个。
经32字节宽的写地址总线932,图7的浮点处理机904和存储操作缓冲器704C连接。通过32字节宽的总线705C,存储操作缓冲器704C和存储操作缓冲器704B连接。存储操作缓冲器704B通过32字节宽的总线705B和存储操作缓冲器704A连接。存储操作缓冲器704A通过32字节宽的总线705A和区j702连接。
图7的存储操作缓冲器704C还直接通过缓冲器旁路总线720和区j702连接。类似地,存储操作缓冲器704B还通过缓冲器旁路总线722直接和区j702连接。
图7也包括周期挪用逻辑706,它通过双向总线710和定点处理机902连接并通过双向总线712和浮点处理机904连接。周期挪用逻辑706还分别通过信号线714、716和718向各个存储操作缓冲器704A、704B和704C发送控制信号。
图7还包括地址比较逻辑708,它从以下接收地址信号经总线710从定点处理机902;经总线712从浮点处理机904;经信号线728从存储操作缓冲器704A;经信号线726从存储操作缓冲器704B;以及经信号线724从存储操作缓冲器704C。地址比较逻辑708分别沿信号线725、727和729向存储操作缓冲器704A、704B和704C发送控制信号。地址比较逻辑708还通过信号线730向定点处理机902并通过信号线732向浮点处理机904发送控制信号。
作为对缓冲器旁路总线720和722的一种替代,图7中未出区旁路总线734、736和738(虚线)。区旁路总线734直接把存储操作缓冲器704C和定点处理机902以及浮点处理机904连接起来。区旁路总线736直接把存储操作缓冲器704B和定点处理机902以及浮点处理机904连接起来。类似地,区旁路总线738把存储操作缓冲器704A直接和处理机902以及904连接起来。
图8表示由处理机902和904中的任一个发出的存储指令800的各字段。存储指令800包括指令字段802;实地址字段804;有效位806;排斥位808;以及操作数字段810。
现说明图2的最佳实施方式的操作。因为逻辑部分A(即存储装置202)的各区的写端口分别和逻辑部分B(即存储装置204)的对应区的写端口连接,图2的超高速缓冲存储器200可以同时进行八个8字节的存储操作。与此相对比,超高速缓冲存储器200具有16个独立的读端口,即逻辑部分A(项202)的读端口RP0至RP7以及逻辑部分B(项204)的读端口RP0至RP7,从而它可以同时进行16个8字节的读操作。
用于逻辑部分A的纵横制接线器(即项206)使任一写端口RP0能够和写入线RLA0至RLA7的任一条连接。例如,能够把项202的写端口连接到项206的读出线RLA2和把读端口RP1连接到读出线RLA7。其余的读端口RP2至RP7可类似地按任意方式和其余的读出线RLA0至RLA1及RLA3至RLA6。在一个存储器访问周期之内可以完成所有的这种任意的交叉连接。
超高速缓冲存储器200划分为或交错为两个逻辑部分A和B。编译程序把用户写出的程序经利用细粒并行性转换成由例如VLIW计算机的并行计算机执行的程序。依赖于编译程序限制对相同区的并发随机装入,即非顺序的装入或非相关的装入,不得多于二个。通过设置二个逻辑部分,由于一个装入操作可以在逻辑部分A的区j中发生而另一个装入操作可以在逻辑部分B的区j中发生,解决了在一个周期内对相同的区二次装入的问题。例如,允许从第一逻辑端口装入VLIW的偶数部分并同时从第二逻辑端口装入奇数部分。
本发明认识到依赖编译程序来限制对相同区的同周期内的多次装入约束了可使用的寻址类型。图3描述反映着这种认识的实施方式。大多数超标量处理机至少支持两种类型的寻址(1)X类型或X形式寻址;以及(2)基址加位移量或D形式寻址。在X类型寻址下,地址是通过相加两个寄存器的内容形成的。然而这种编译程序是有问题的。
编译程序不能确定寄存器的内容,因为在编译时这是一个未知的变量。相反,使用基址加位移量类型寻址时,位移是已知的,因为位移作为一个操作数包含在正由编译程序并行化的程序中的指令内。基址寄存器的内容在技术上仍然是一个未确定的变量。
在图3中描述其地址生成器的本发明还反映了这种认识,即基址寄存器的内容对于该寄存器的某些位,例如58-63,其值为0的可能性很高。例如,对于商用精简指令集计算代码,大部分最公用的基准目标(referenccd objects)即存储器块,通常沿32字节或更大的边界是高度一致的。高度一致的目标从确定的边界例如超高速缓存页面或超高速缓存线的起点上开始。编译程序可以通过把一给定值和基址寄存器里的地址相加而强制寄存器一致来加强这种情况,对于这种情况后续的补偿采取从位移寄存器的后续值中减去该给定的值的形式。
图3的地址生成器根据基址寄存器的58-63位为零的假设生成位移量型或D形式的地址。这使得编译程序能够把对同一区的同一周期内的随机装入的个数限制在不多于二次。在每个区每周期内不必处理多于两个随机装入的前提下,可以仅从两个逻辑部分形成循环存储器而且在功能上部等同于多端口存储器。
通过把和本发明的超高速缓冲存储器相关的处理机限制为基址加位移量类型寻址,并且通过识别出基址寄存器的58-63位几乎总是为0,在编译时编译程序可以非常高的确定性确定任何对超高速缓冲存储器的存储指令的地址。换言之,位移寄存器的10-12位成为超高速缓冲存储区里作为存储指令源的那个区的非常准确的预测器。
图3的加法器306对基址寄存器中其值总为0的概率很高的58-63位和依赖位移寄存器的10-12位进行操作。出于有效地址的生成目的,只需要加法器306产生的64位和中的58-60位。从而,图3的3-8译码器仅对加法器306输出的和中的58-60位操作。译码器308的八条输出线用作为区选择线BS0至BS7。
和图4的双端口构件相比图2的单端口构件的相对优点如下。对于小的超高速缓存阵列,自然地实现成一个数据写入线进入单元和一条数据读出线从单元出来,这是因为单元具有分离的读节点和写结点。单端口单元需要额外的开关电路用以把数据总线和读节点或写节点中的一个相连接。但是,在阵列级,对一个单元有一条线进入和有一条线出来与单条线及其相关的开关电路相比较仅略微占用了更多的空间,但是两条线略微要快些,因为在读和写之间切换时它不需要改变配置。
如上述所讨论,采用八个区是示范性的。例如,四个区或十六个区或更多的区都可采用。如果采用16个区,则加法器应对4个位而不是对来自位移寄存器304的3个位操作。类似地,译码器308应是一个对加法器306产生的和中选定的4个位而不是3个位操作的3-16译码器。
如存储器分层技术中所周知,图1的L2存储器114可以在一次存储器存取内同时写L1超高速缓冲存储器的一条完整的线(亦称为一个块)。这种能力反映在把超高速缓冲存储器200的各个逻辑部分A和B的写端口WP0至WP7和图1的L2存储器层114连接起来。
现在讨论图4的超高速缓冲存储器的第二实施方式的操作。逻辑部分A和B组合到由一组双端口构件或区形成的一个存储装置402中。交错的区0-7具有一个逻辑部分A和一个逻辑部分B,每个逻辑部分分别具有一个读端口和一个写端口以及和其连接的一条专用读地址总线及一条专用写地址总线。除了对逻辑部分A和逻辑部分B的对应部分的存取造成对相同物理构件的存取而不是如图2中的两个独立的构件的存取之外,其操作非常类似于图2的实施方式。
现说明如图5中所描述的第一实施方式的附加可选方式的操作;这些附加的方面可相同地应用于第二实施方式。L2再装入线L2R0-L2R31(和各区的各象限连接)可使图1的L2存储器层114在一个存储器存取时间周期内同时再装入整个超高速缓冲存储器,即存储设备202和204两者。这大大扩大了L1超高速缓存和L2存储器层之间的带宽。作为重申,L2存储器层114可以同时向L1超高速缓冲存储器200发送256个字节。
和各个区j相关的“或”门500用于代替和每个象限Q0至Q3连接的四路选择器。因为在一给定时刻只读一个子层或一个象限,只需要把象限的输出和“或”门相组合。这具有比在别的情况下采用四路开关要更快的优点。
现说明图6中所描述的实施方式的可选附加方式的操作;这些附加的方式可等同地运用到图4所描述的实施方式中。
对于16个或更多的交错,为了达到实际结果必须对存储指令进行缓冲。此外,对于需要使存储指令按原始程序所说明的相同次序执行的操作系统来说,存储指令的缓冲是非常重要的。
存在着这样的情况,即在一个存储器存取周期内对本发明的超高速缓冲存储器的逻辑部分如图2或4中的A和B中的一个或两者进行8个装入操作。在这种情况下,如果还有一个或多个存储指令也安排到该周期,则会发生冲突。冲突的存储指令暂时在缓冲器中保存。
装入操作优先于存储操作给出。通常,装入指令按2∶1的比率在数量上超过存储指令。图6的可选附加方式使得超高速缓冲存储器,例如图2的实施方式200,能在存储指令瞄准的区没有被装入操作访问的周期到来之前缓冲存储指令。
图6的每个存储操作缓冲器602、604和606保存一条存储指令,其中包括存储操作所指向的区中的单元的标识和要存储的有关数据。
图6的周期挪用逻辑600确定何时在下周期中一个或多个区将不由装入操作访问。周期挪用逻辑600中的比较器(未示出)例如从读地址线RA(A)j上的实地址的三个区交错位上判定在下一周期内是否在该区上有装入操作。如果在下一周期中不进行装入操作,则周期挪用逻辑600使存储操作缓冲器的内容对该区释放,从而在下一周期中可发生该存储指令。同时,周期挪用逻辑600还向存储操作缓冲器604和606发送控制信号,从而若存在则把存储操作缓冲器604和606的内容分别传送到存储操作存储器602和604,以为后读执行周期进行准备。
图6中公开例如三个存储操作缓冲器,它们对在常规基准下累积的存储指令的数量是足够的。根据具体的应用可以增加或减少存储操作缓冲器的数量,或者如图2和4中所示全部取消掉。
在本发明的超高速缓冲存储器中对每个区设置一个周期挪用逻辑600和三个缓冲器602、604和606组成的一组。
图6还示出地址比较功能逻辑610。在缓冲存储指令时,会出现一条装入指令试图访问由于正缓冲在一个存储操作缓冲器中而尚未写入到区中的数据的可能性。为了检测这种情况,地址比较功能逻辑610中的比较器(未示出)在每个周期中把所有存储操作缓冲器中用于所有各区的完整目标地址和每个装入操作朝向的地址进行比较。如果当前一个存储操作缓冲器是空的,则逻辑610禁止对该存储操作缓冲器的地址比较,以防止虚假的结果。
如果存在匹配,即,如果一条装入指令所指向的地址和一个缓冲器中的一条存储指令所指向的地址是相同的,则地址比较功能逻辑610拖延该装入操作的执行直至对应的存储操作已从存储操作缓冲器队列中排出。所有比较的输出被组合,例如,借助一个“或”门(未示出)产生原始拖延信号。换言之,在渡过足够的执行周期从而匹配的存储指令已从缓冲器中传出并已在区上执行之前,拖延或阻止该装入操作的执行。
参照图7现更详细地讨论缓冲操作。同样,图7表示一个示范性的区,区j702,以及相关的示范性的存储操作缓冲器704A-704C,它可对应于,例如,图2的202或204逻辑部分A或B中任一个的区0-区7中的任一个区。为了把图7的示范性实施方式应用到图4的示范性实施方式上所需的改变是在熟练的技术人员的一般能力之内的事。
例如在图8中描述的一条存储指令由图7的定点处理机902或浮点处理机904发出并沿写总线932传送到第三存储操作缓冲器704C。如果第二存储操作缓冲器704B中没有保存存储指令,缓冲器704C中的存储指令被传送到缓冲器704B。类似地,若在第一存储操作缓冲器704A中没有保存存储指令,从第二缓冲器704B向第一缓冲器704A传送存储指令。
图7的周期挪用逻辑706监视由处理机902和904发出的装入/取出指令。周期挪用逻辑706的比较器(未示出)例如从线710和712上的读地址的两个区交错位判定在下一周期内是否在区702上有装入操作。如果,在下一机器周期内处理机902和904都不访问区j702,则周期挪用逻辑沿通信线714向第一缓冲器704A发送控制信号,从而可以在下一指令周期期间通过一次写操作完成保存在缓冲器中的存储指令。比较器的输出例如通过一个“或”门(未示出)被组合,以形成构成发送到缓冲器的控制信号的一部分的原始信号。来自周期挪用逻辑706的控制信号中包含着一个在给定周期内输出的用于给定存储指令地址的区写入时钟允许信号。
周期挪用逻辑706还向缓冲器704B和704C发送控制信号,从而任何保存的存储指令可下送到下一个存储缓冲器中,即缓冲器704C中的存储指令传送到缓冲器704B,而缓冲器704B中的存储指令传送到缓冲器704A。
最佳实施方式反映这种假定,在任何给定时刻多半不会积累多于三个的存储指令,从而只示出三个存储操作缓冲器。存储指令缓冲器的适当数量将根据具体应用而变化,并且这种改变是在熟练的技术人员的一般能力之中的事。例如,如果处理机是一个浮点处理机,则可以预料大量的存储发生和大量的装入发生;相应地应增加存储操作缓冲器的数量。
一次常规的管道拖延,例如,一次超高速缓存失漏可以造成5或10个周期的延迟。这是另一个使存储操作缓冲器在超高速缓存控制器(未示出)的控制下排放到超高速缓存区中的时机。
层L1超高速缓冲存储器200或400和处理机902及904的最佳组织反映这种假定,即对于每个处理机902和904只需要一个地址生成器,从而在每一次每个处理机只能对一个区进行一次数据装入/取出。数据装入地址生成器的数量随具体应用变化,而其数量的改变在熟练的技术人员的一般能力之内。
通常,不仅进入区内的存储指令的次序得到保护,而且区间的存储指令的次序也得到保护。拥有一条排斥超高速缓存线使得能够忽视区之间的次序。超高速缓存地址中的一个排斥位由超高速缓存目录(未示出)使用。如果设定该位,则表示和该超高速缓存相关的处理机是拥有该超高速缓存线的唯一处理机。通常存储指令是按程序设定的次序完成的,这是因为存在着该超高速缓存线的别的复制。具有排斥超高速缓存线允许以任意次序对该超高速缓存排放存储指令。例如,如果三个存储操作缓冲器已是满的但又发出另一条存储指令,该最近的存储指令可被控制以绕过已在存储操作缓冲器内的那些存储指令。
除了对排斥超高速缓存线的存储操作之外,编译程序和超高速缓存硬件还识别出对已知非共享存储部件(即,栈、堆等)的存储指令也可能不按次序执行。在该情况下需要一个额外的操作码位。
可能发生这样的情况,即处理机902和904中的一个发出一条指向区j702中一个单元的装入/取出指令,而该单元先前应该由一条存储指令在其上写数据,但是这条存储指令目前保存在一个存储操作缓冲器704A-704C中。地址比较逻辑708中的比较器(未示出)把每条装入/取出指令的地址和缓冲器704A-704C中的存储指令的完整指向地址进行比较。
如果出现匹配,即,如果装入/取出指令指向的单元和被缓冲的存储指令所指向的单元相同,则地址比较逻辑708将拖延处理机对装入/取出指令的执行直至完成对区j702的存储指令的执行。地址比较逻辑708的比较器的输出例如通过一个“或”门(未示出)被组合以生成原始拖延信号。如果当前一个存储操作缓冲器是空的,则不允许逻辑708对该存储操作缓冲器的地址比较,以避免虚假结果。为了反复进行,地址比较逻辑708对所有的存储操作缓冲器进行这种比较并对其控制。
有三种方式可使地址比较逻辑708让存储指令排出/穿过缓冲器704A-704C。
排出/穿过的最佳方法,即缓冲器旁路,是在速度和可布线性之间的折衷。例如,若在缓冲器704C内发现和装入指令匹配的存储指令,则地址比较逻辑708使得该存储指令直接经缓冲器旁路总线720传送到区j702,而不是非直接地依次经过缓冲器704B和704A。类似地,若在缓冲器704B中发现匹配的存储指令,地址比较逻辑708使该存储指令直接经缓冲器旁路总线722而不是非直接地经过缓冲器704A传送到区j702。
作为这种缓冲器旁路方法的一种替代方法,地址比较逻辑708简单地使匹配的存储指令之前的所有存储指令被执行,即由区j702存储。但是,这种方法相对于在缓冲器704C中发现匹配的存储指令并且旁路缓冲器704A和704B里的存储指令的情况,将使拖延的装入操作增加拖延的时间,增加的时间等于执行缓冲器704A和704B中的存储指令所需的时间。
比缓冲器旁路更快的一种替代方法,尽管从可布线性考虑上是较困难的技术,可以称之为区旁路技术。这种技术在图3中用虚线的区旁路总线734、736和738表示,它们用来代替缓冲器旁路总线720和722,虽然区旁路总线和缓冲器旁路总线不必是相互排斥的,即它们可以一起使用。例如,若在第三缓冲器704C中发现匹配的存储指令,则地址比较逻辑指示发出装入指令的处理机分别直接经区旁路总线736或738从缓冲器704B或704A直接装入数据。
在地址比较逻辑708对缓冲器704A-704C中的存储指令的地址和装入指令(组)进行比较时,通过图8的有效位806是否置为逻辑1,它识别缓冲器中存储指令的存在。当存储指令例如从缓冲器704C传送到缓冲器704B时,缓冲器704C的有效位单元806复位为逻辑0以表示未保存存储指令。
另一种备择的实施方式允许由另一个处理机探查的可能性。当一个处理机查看另一个处理机的数据超高速缓存(“Dcache)目标时出现探听。进行探听的处理机可能寻找要由被缓冲的存储指令更新的数据。或者中增加另外一组地址比较逻辑来辩别所探听的数据正被缓冲,或者更简单地一旦进行探听可自动排出缓冲器。后一方法是更佳的,因为探查的频率和造成的缓冲器排出成本上可能不会超过附加一组地址比较逻辑的成本。
从对图7的操作的说明应该明白,根据各区不由装入/取出指令存取的情况的频率,相对于存储指令被发出的次序,在不同的区内不同步地执行存储指令。类似地,缓冲器旁路技术和区旁路技术使得用于特定区的各存储指令可不同步于发出它们的次序而被执行。
如果发生超高速缓存失漏,并且如果每个区至少存在一个存储操作缓冲器,则地址比较逻辑将拖延由存储器系统的其它部分例如L2层执行的一个超高速缓存再装入,直到所有的存储指令从存储操作缓冲器排出为止。这种排出将涉及到依次执行每条存储指令直至排出所有的存储指令。这最多需要三个周期,因为在用一周期内可并行地完成来自不同区的存储指令。
本超高速缓冲存储器可以进行超高速缓冲存储器的已知常规功能,例如,它具有利用一个重写标志位以指示L2存储器层存在着改变的数据从而在L2存储器层对L1超高速缓存的线/块再装入之前进行一次回写操作的能力。
再提一次,本发明的超高速缓冲存储器可以是纯数据超高速缓存或且混合式指令/数据超高速缓存中的一种。若它是混合式指令/数据超高速缓存,则处理机将从中装入指令,即进行I-取出。这种取出在长度上是可变的,例如,从一个区或从所有的8个区装入。从而,超高速缓冲存储器将把I-取出作为只是另一次或多次装入对待。将监视挪用周期的机会,将缓冲存储指令,等等。
这样对本发明进行了说明,很明显上述说明可按许多方式变化。这些改变并不认为是对本发明的精神和范围的背离,对于熟练的技术人员很明显这些改变应包括在下述权利说明书的范围之内。
权利要求
1.一种存储多个数据单元的多端口和交错存取的超高速缓冲存储器,该存储器包括一个划分成第一逻辑部分和第二逻辑部分的存储器,每个逻辑部分存储多个数据单元,每个逻辑部分交错成M个区,M≥2;每个区包括至少一个第一写/控制端口;以及至少一个第一读端口;以及每个区具有每对写端口和读端口一条专用行地址总线;以及M个区写入总线,第一逻辑部分里的一个区上的一个写端口和第二逻辑部分的对应区上的一个写端口这样的每一对连接到M条区写入总线中的一条上,从而同时写到对应区中的写端口;每个读端口独立于其它读端口。
2.如权利要求1中的多端口存储器,其特征在于每个区具有组成第二对的一个第二写端口和一个第二读端口;第一逻辑部分对应于各区的第一写端口和第一读端口,第二逻辑部分对应于各区的第二写端口和第二读端口,从而第一逻辑部分和第二逻辑部分共享各区;以及每个区具有一条与第一写端口和第一读端口对关联的专用行地址总线以及一条与第二写端口和第二读端口对关联的专用行地址总线;每个区代表一个双端口化逻辑构件。
3.如权利要求2中的多端口存储器,其特征在于进而包括按每个读端口一条区读出总线比率的多条区读出总线,使得每个区具有第一和第二区读出总线;以及一个N路纵横接线器,它在运行上和区读出总线连接并具有N个,输出端口N≥2,其中N等于区读出数据总线的数量。
4.如权利要求2的多端口存储器,其特征在于,该多端口存储器具有16个端口并且M=8;从而每个逻辑部分具有8个写端口和8个读端口。
5.如权利要求2的多端口存储器,其特征在于,该多端口存储器具有8个端口并且M=4;从而每个逻辑部分具有4个写端口和4个读端口。
6.如权利要求1的多端口存储器,其特征在于,一个数据单元长度为8字节并且数据单元代表一个双字。
7.如权利要求1的多端口存储器,其特征在于,每个区只具有一个写端口、一个读端口第一条专用行地址总线,从而每个区代表一个单端口逻辑构件并且第一和第二逻辑区不共享任何区。
8.如权利要求7的多端口存储器,其特征在于,该多端口存储器具有16个端口并且M=8,从而每个逻辑部分具有8个写端口和8个读端口。
9.如权利要求7的多端口存储器,其特征在于,该多端口存储器具有8个端口并且M=4,从而每个逻辑部分具有4个写端口和4个读端口。
10.如权利要求7的多端口存储器,其特征在于,按每个区一条区读出总线比率的多条区读出总线;第一N路纵横制接线器,它在运行上和第一逻辑部分的每条区读出总线连接,该第一N路纵横制接线器具有N个输出端口,其中N等于用于第一逻辑部分的区读出数据总线的数目;以及第二N路纵横制接线器,它在运行上和第二逻辑部分的每条区读出总线连接,该第二N路纵横制接线器具有N个输出端口,其中N等于用于第二逻辑部分的区读出数据总线的数目。
11.如权利要求7的多端口存储器,其特征在于,该多端口存储器持有64K字节。
12.如权利要求1的多端口存储器,其特征在于,该多端口存储器的存取时间小于1纳秒。
13.如权利要求1的多端口存储器,其特征在于在运行上第一写/控制总线和第二写/控制总线分别和较慢的下一层存储器连接;第一写/控制总线和第二写/控制总线在规格上是足够的,从而较慢的下一层存储器可以同时再装入该超高速缓冲器的整行。
14.如权利要求13的多端口存储器,其特征在于,每个区划分为四个象限,每个象限在规格上和数据单元相同;以及对每个区,该多端口存储器还包括用于每个象限来自较慢的下一层存储器的专用象限写入总线,其规格是足够的从而较慢的下一层存储器可以同时再装入整个该多端口存储器。
15.如权利要求14的多端口存储器,其特征在于,该多端口存储器对于每个区还包括一条规格和数据单元相等的区输出总线;以及一个41的接线器,用于选择性地把四条象限总线中的一条和区输出总线连接。
16.如权利要求1的多端口超高速缓冲存储器,其特征在于,该多端口存储器对每个区的每个逻辑部分还包括至少一个第一存储操作缓冲器,它在运行上和写端口及第一写/控制总线连接并存储到该区的第一存储指令;以及一个下一周期使用判定电路,用于判定将在下一周期中在该区上执行装入操作的第一状态的出现;一个周期挪用电路,用于若该状态出现使得在下一周期在该区上能够执行第一存储操作缓冲器中的存储指令。
17.如权利要求16的多端口超高速缓冲存储器,其特征在于还包括一个地址比较电路,用于判定第二状态的出现,该第二状态是由任何区中的缓冲器里的存储指令定址的单元和下一周期中要在该多端口超高速缓冲存储器上执行的一条装入指令的地址相同;匹配拖延电路,用于若出现第二状态时拖延匹配的装入指令直至匹配的存储指令可在相应的区上执行。
18.如权利要求16的多端口超高速缓冲存储器,其特征在于还包括第二存储操作缓冲器,在运行上连接于第一存储操作缓冲器和第一写/控制总线之间,并把第二存储指令存储到该区;第三存储操作缓冲器,在运行上连接于第二存储操作缓冲器和第一写/控制总线之间,并把第三存储指令存储到该区;其中周期挪用电路还产生穿过信号,以控制第二和第三存储操作缓冲器,从而把它们中的内容分别传送到第一和第二存储操作缓冲器。
19.如权利要求1的多端口超高速缓冲存储器,其特征在于,该多端口超高速缓冲存储器是纯数据超高速缓存器。
20.一种用于生成有效地址的有效地址生成装置,利用基址加位移量寻址在多端口超高速缓冲存储器的该地址上存储数据,该超高速缓冲存储器交错为M个区,M≥2,并包含多个数据单元,该有效地址生成装置包括一个位移寄存器;一个预设定电路,用于把基地址寄存器的内容预设定成逻辑零;以及一个UV译码器,它接收预定的位移寄存器的一个U位的组,U≥2,并输出V位的数,该输出的数具有足够的位数以便标识M个区中的一个,作为该数据在该交错存取的多端口超高速缓冲存储器中的有效地址。
21.一种生成有效地址的方法,采用基址加位移量寻址把数据存储到多端口超高速缓冲存储器里的该地址上,该超高速缓冲存储器交错为M个区,M≥2,并包含多个数据单元,该方法包括预光假定基址寄存器的内容将为逻辑零;读位移寄存器的内容;基于预定的位移寄存器的U个位的组,U≥2,对M个区中的一个区的标识信息解码;以及输出该标识信息作为数据在该交错多端口超高速缓冲存储器中的有效地址。
22.权利要求21的方法,其特征在于进而包括验证基址寄存器的内容为零。
23.一种编译程序以优化使用多端口超高速缓冲存储器的方法,该超高速缓冲存储器交错成多个区并包括多个数据单元,该方法包括仅允许超高速缓冲存储器的基址加位移量类型的寻址;对基址寄存器判定该基址寄存器的一个或多个预定位组是否不等于逻辑零值的状态;以及若满足该状态,重新调整该基址寄存器的内容并且相应地调整位移寄存器的内容。
全文摘要
一种高速的8端口、16端口或更多端口的超高速缓冲存储器,以及相关的有效地址生成方式。根据交错的双端口构件或双倍的单端口构件,该超高速缓冲存储器构形成在功能上等同于真正的8端口、16端口或更多端口的交错存取的超高速缓冲存储器。
文档编号G06F12/08GK1188277SQ97122689
公开日1998年7月22日 申请日期1997年11月13日 优先权日1996年12月16日
发明者戴维德·阿诺尔德·鲁克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1