用于管理数据的系统和方法

文档序号:6657124阅读:266来源:国知局
专利名称:用于管理数据的系统和方法
技术领域
本发明涉及用于管理数据(例如,进行数据处理、压缩数据、存储数据、加载数据,等等)的系统和方法,具体来说,用于对数据(例如,压缩的和未压缩的数据的混合)的进行管理的系统和方法,其中,第一指令(例如,一组第一指令)用于对压缩数据进行操作,第二指令(例如,不同于第一指令的一组第二指令)用于对未压缩的数据进行操作。
背景技术
存储器消耗无论是在高性能的还是在低性能的系统设计中都正在成为越来越关键的问题。在低端,随机存取存储器(RAM)消耗面积、功率以及资金。在高端,性能受到有效缓存大小以及从RAM进入高速缓存的带宽的限制,就中央处理单元(CPU)的时钟周期而言变得比较慢。
此外,在存储器和CPU之间传输的许多比特没有用,因为值进行压缩。压缩去除了冗余,如此降低了带宽要求,并有效地使更多数据存储在CPU附近。
当前,使用应用压缩的技术,试图改善存储器效率。然而,这样的技术在存储器层次结构的对性能不非常敏感的部分沿着存储器层次结构(例如,在最低级别的高速缓存和主存储器之间)相对地较远地应用压缩。因此,这样的技术的优点是有限的。

发明内容
鉴于前面的及其他问题、缺点以及如前所述的系统和方法的缺点,本发明的示范性方面的目的是提供了用于管理数据的系统和方法,不仅增大随机存取存储器(RAM)的有效大小,而且也增大高速缓冲存储器(例如,数据高速缓存或“D-高速缓存”)的有效大小,显著地改善了性能。
本发明的示范性方面包括处理器,该处理器执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。重要的是,另一组指令不同于所述指令组。此外,指令组和另一个指令组包括加载指令和存储指令。
系统进一步包括与处理器相邻形成的第一级存储器高速缓存,在第一级存储器高速缓存和处理器之间形成的用于执行压缩数据和解压缩数据中的至少一个操作的模块。此外,模块可以包括软件模块,所述软件模块包括数据获取缓冲器。
模块可以存储不同标记值,这些标记值交换一系列值的带符号的和无符号的指令。例如,模块可以将数据从64比特压缩到32比特、从32比特压缩到16比特、从32比特压缩到8比特,以及从16比特压缩到8比特。
在本发明中,由语言运行时系统基于存储在特定存储器位置的值可被压缩的可能性,作出有关是否使用指令组或另一指令组来访问该位置的数据的决定。
此外,系统进一步包括用于执行指令的软件模块,这些指令通过普通指令的序列模拟压缩的加载指令和压缩的存储指令。软件模块使用主要相对编址来压缩数据,以便大多数指针值以相对形式存储,以不同的形式存储的一些区别值的子集除外。数据可以包括,例如,指针,软件模块与主要相对编址组合起来,以压缩指针。
本发明的另一个方面包括集成电路设备,该设备包括中央处理单元(CPU),所述中央处理单元执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令,与CPU相邻形成的存储器高速缓存,以及在CPU和高速缓存之间形成的缓冲器。缓冲器在用户模式程序控制下操作,以压缩数据(例如,值和指针)。
此外,缓冲器包括硬件散列表加速器,加速器通过有效地址进行索引,并以特殊指令扩增,以支持值压缩。
设备进一步包括编程语言的软件虚拟机,所述虚拟机基于值可被压缩的可能性使用该缓冲器。在一个示范性实施例中,缓冲器包括固定大小设置关联的缓冲器。缓冲器还包括特殊用途的用户可读和可写入的高速缓存,所述高速缓存包括通过存储器地址索引的全字值。
例如,在本发明的示范性方面,当给缓冲器提供了地址时,缓冲器将地址分解为索引一组值的行编号,以及标记,标记用作标识该组值的和与地址关联的值匹配的成员的关键字,如果标记匹配该组的成员,则返回缓冲器中的关联的全字值,并存储在始发指令的目标寄存器中,如果标记不匹配该组的成员,则生成缓冲器故障,控制到预先定义的处理程序的分支。
此外,当发生溢出时,缓冲器可以查询软件散列表,所述散列表与缓冲器具有相同逻辑结构,并映射将溢出的近指针存储到实际全字绝对地址的地址。
例如,指令组可以包括Load and Uncompress HalfwordUnsigned(luhu)指令,所述指令由CPU执行,以执行操作,其中,如果值小于最大无符号半字量,则值返回到目标寄存器,加零扩展,如果值不小于最大无符号半字量,则最大无符号值充当标记,有效地址被用作查找缓冲器中的全字值的关键字。
指令组还包括Pointer Extract指令,所述指令由CPU执行,以执行操作,其中,如果溢出(OV)条件是1,则目标寄存器中的值是从缓冲器中检索的全字量,目标寄存器保持保持不变,如果溢出(OV)条件是1之外的值,则目标寄存器包括压缩的指针。
指令组可以包括Store and Compress Halfword Unsigned(schu)指令。指令组包括Load and Uncompress Halfword Signed(luh)指令,所述指令由CPU执行,以执行操作,其中,最大负值充当溢出标记,而半字是符号扩展。
指令组可以包括Store and Compress Halfword Signed(sch)指令。指令组可以包括Load and Uncompress Halfword Byte Unsigned(lubu)指令,所述指令由CPU执行,以执行操作,其中,如果值小于最大无符号字节量,则值返回到目标寄存器,加零扩展,如果值不小于最大无符号字节量,则有效地址可以被用作查找缓冲器中的全字值的关键字。
此外,如果指针是空值,则存储空值标记值,如果指针是非空的,则指针转换为带符号的偏移,如果指针适合半字,则指针存储在编址存储器中,如果指针不适合半字,则在缓冲器中创建或替换一个条目。
此外,指令组还包括Pointer Extract指令,所述指令由CPU执行,以执行操作,其中,如果目标寄存器rd包含空值的标记值,寄存器rd被清除,如果目标寄存器rd不包含空值的标记值,则向源寄存器rs的内容中添加偏移,以产生有效地址,从所述有效地址加载寄存器rd的内容。指令组还包括指针压缩指令,所述指令由CPU执行,以执行操作,其中,如果源寄存器rs是空值,则指针变为标记值,如果源寄存器rs不是空值,则寄存器rs通过减去有效地址而转换为相对指针。
本发明的另一个方面包括一种管理数据的方法,该方法包括执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。
本发明的另一个方面包括可触摸地实现可由数字处理设备执行的机器可读指令的程序的可编程存储器介质,以执行根据本发明的示范性方面的管理数据的方法。
本发明的另一个方面包括一种用于部署计算基础架构(其中,计算机可读代码集成到了计算系统中)的方法,以便代码和计算系统组合起来,以执行根据本发明的示范性方面的管理数据的方法。
利用本发明独特和新颖的特征,本发明的示范性方面提供了管理数据的系统和方法,不仅增大RAM的有效大小,而且也增大D-高速缓存的有效大小,显著地改善了性能。


通过参考附图对本发明的实施例的下列详细描述,将更好地理解前面的及其他目的,方面和优点,其中图1显示了根据本发明的示范性方面的管理数据的系统100;
图2提供了根据本发明的示范性方面的地址如何与BDFB中的全字值(例如,a 512-entry,2KB,2-way set-associative Big DataFetch Buffer(BDFB))关联的例图;图3是显示了根据本发明的示范性方面的BDFB用于Loadand Uncompress Halfword Unsigned(luhu)指令的操作的流程图;图4是显示了根据本发明的示范性方面的BDFB用于Storeand Compress Halfword Unsigned(schu)指令的操作的流程图;图5是显示了根据本发明的示范性方面的BDFB用于Loadand Uncompress Halfword signed(luh)指令的操作的流程图;图6是显示了根据本发明的示范性方面的BDFB用于Storeand Compress Halfword Signed(sch)指令的操作的流程图;图7是显示了根据本发明的示范性方面的BDFB用于Loadand Uncompress Byte Unsigned(lubu)指令的操作的流程图;图8是显示了根据本发明的示范性方面的BDFB用于新指令“Pointer Extract”或px的操作的流程图;图9是显示了根据本发明的示范性方面的BDFB用于Pointer Compress(pc)指令的操作的流程图;图10是显示了根据本发明的示范性方面的管理数据的方法1000的流程图;图11显示了系统1100,这是用于实现本发明的系统和方法的典型的硬件配置;以及图12显示了可触摸地实现可由数字处理器执行的机器可读指令的程序的用于执行本发明的方法的可编程存储器介质1200(例如,软盘)。
具体实施例方式
现在请参看附图,图1显示了用于管理数据的系统100。该系统包括处理器110(例如,至少一个处理器),该处理器110执行用于对压缩数据进行操作的一组指令(例如,第一指令)以及用于对未压缩的数据进行操作的另一组指令(例如,可能不同于第一指令的第二指令)。
在示范性实施例中,系统100可以包括第一级存储器高速缓存120(它与处理器110相邻),模块130(例如,硬件或软件压缩和解压缩模块),用于执行压缩(例如,透明值和数据压缩)和解压缩数据中的至少一个操作,在第一级存储器高速缓存和处理器之间形成(例如,对所述数据进行操作)。例如,模块130包括数据获取缓冲器(例如,大数据获取缓冲器(BDFB)),该数据获取缓冲器包括对透明数据和指示符压缩的有效的硬件支持。
在本发明中,通过使用1)模拟加载/存储指令(例如,加载指令和/或存储指令),以及2)所有软件结构,完全在标准硬件上模拟压缩/解压缩数据的模块。如此,不需要其他硬件模块与处理器和第一级存储器高速缓存相邻。
与传统技术(沿着存储器层次结构(例如,在最低级别的高速缓存和主存储器之间)相对地较远地应用压缩)不同,本发明的示范性方面提供了改进开发对于存储器层次结构的处理器(例如,中央处理单元(CPU))和第一级存储器高速缓存之间的对性能最敏感的部分应用起来足够有效的系统和方法。
本发明的示范性方面提供了新型硬件后备缓冲区(例如,大数据获取缓冲器(BDFB)),这用于在用户模式程序控制下压缩数据和指针。BDFB包括,例如,硬件散列表加速器,加速器通过有效地址进行索引,并以特殊指令扩增,以支持值压缩。
发明人进行了测量,显示了对于Java虚拟机中的大部分数据对象,中等大小的BDFB产生两倍的压缩。此外,由于数据以压缩的形式存储在数据高速缓存中,本发明的示范性方面不仅增大了RAM的有效大小,而且也增大了D-高速缓存的有效大小,显著地改善了性能。如此,本发明的示范性方面(例如,包括BDFB)导致面积、功率,以及RAM要求降低,同时提高了性能。
大数据获取缓冲器BDFB用来进行各种压缩和优化。BDFB包括,例如,通过存储器地址索引的全字(例如,32比特)值的特殊用途的用户可读和可写入的高速缓存。当给BDFB提供了地址时,它将地址分解为行编号和标记,正如普通高速缓存那样。行编号索引一组值,标记用作确定该组值的哪一个成员(如果有的话)包含与提供的地址关联的值的关键字。
如果标记匹配,则返回BDFB中的关联的全字值,并存储在始发指令的目标寄存器中。如果标记不匹配,则生成BDFB故障,控制到预先定义的(用户级别)处理程序的分支。
图2提供了地址如何与BDFB 200中的全字值关联的地址的例图。如图2所示,BDFB 200将地址205分解为索引一组全字值的行编号210,以及标记215,该标记被用作确定该组值的哪一个成员(如果有的话)包含与地址关联的值的关键字。从BDFB检索的全字值220存储在处理器的目标寄存器rd225中。
例如,图2显示了根据本发明的示范性方面的512-entry,2KB,2-way set-associative Big Data Fetch Buffer(BDFB))。在此示范性方面,对于3.5KB的总的空间消耗,标记消耗额外的1.5KB。具体来说,标记215包括有效地址205的高23比特和低比特,中间的8比特构成行编号210。
此外,为了处理溢出情况,本发明的示范性方面以软件维护散列表(例如,Big Data Table(BDT)),所述散列表映射了溢出的值(例如,近指针)存储到实际全字绝对地址上的地址。BDT中的条目称为大数据表条目(BDTE)。
在每次故障时以软件查询散列表将非常慢,并导致性能疯狂的变化。因此,散列表(例如,BDT)可以与BDFB具有相同逻辑结构,该结构被用作BDT条目的硬件加速的高速缓存。
一般而言,通过更新条目、删除条目,以及通过清空缓冲器来操作BDFB。此外,对于上下文开关,在清空时,在标记上包括用户/管理比特(例如,用户比特和/或管理比特),以避免在时钟报时中断时的清空。
此外,在本发明的示范性方面,只有在发生散列表冲突的情况下,才“转至”软件。此外,对于指针数据,最差情况的开销是2-3倍。
值压缩指针不是以比较高的概率小于它们的最大值的唯一量。许多种数据适合此范例。已经提出了许多静态技术来解决此问题,但是有许多静态技术失败的情况。
本发明的示范性方面(例如,包括BDFB)用于进行值压缩以及指针压缩,并用来高效地处理这些情况。具体来说,本发明用于一般性数据压缩以及专门的应用程序,例如,压缩的Unicode字符串(例如,每个字符使用一个字节)。
例如,图3-7包括显示了本发明中的指令的各种操作的流程图。一般而言,图3、5和7显示了加载和解压缩指令的操作(例如,从数据高速缓存350(例如,在从源寄存器rs330计算出的有效地址和I-高速缓存340中的指令的偏移部分)到目标寄存器rd390),图4和6显示了存储和压缩指令的操作(例如,从目标寄存器rd390到数据高速缓存350(例如,在从源寄存器rs330计算出的有效地址和I-高速缓存340中的指令的偏移部分))。
具体来说,图3是显示了BDFB 300用于Load andUncompress Halfword Unsigned(luhu)指令的操作的流程图(例如,存储在指令高速缓存(I-高速缓存)340)中。在一种情况下(例如,典型情况),值(例如,存储在数据高速缓存(D-高速缓存)350中)小于最大无符号半字量,该值返回到目标寄存器rd390,加零扩展。否则,最大无符号值充当标记360,有效地址305被用作查找BDFB300中的全字值的关键字。
图4显示了BDFB用于Store and Compress HalfwordUnsigned(schu)指令的操作的情况。在此情况下,偏移(例如,从I-高速缓存340)添加到源寄存器rs330的内容中,以产生有效地址305,并提供给BDFB 300。在源寄存器rs330的值大于或等于最大无符号半字量的情况下(例如,rs>=216-1),值存储在BDFB 300中,标记值360存储在数据高速缓存(D-高速缓存)350中。否则,在源寄存器rs330的值小于最大无符号半字量的情况下(例如,rs<216-1),值存储在数据高速缓存(D-高速缓存)350中。
图5显示了BDFB 300用于Load and Uncompress Halfwordsigned(luh)指令的操作的情况。luh指令的操作类似于如图3所示的luhu指令的操作,如此,参考图3的大多数讨论也同样适用于图5。然而,与图3的luhu指令不同,对于luh指令的操作,最大负值充当溢出标记,而半字是符号扩展而不是加零扩展。
图6显示了BDFB 300用于Store and Compress HalfwordSigned(sch)指令的操作的情况。sch指令的操作类似于如图4所示的schu指令的操作,如此,参考图4的大多数讨论也同样适用于图6。
然而,与图4的schu指令不同,对于sch指令的操作,在源寄存器rs330的绝对值大于或等于最大半字量的情况下(例如,|rs|>=215),值存储在BDFB 300中,标记值360存储在数据高速缓存(D-高速缓存)350中。否则,在源寄存器rs 330的绝对值小于最大无符号半字量的情况下(例如,|rs|<215),绝对值存储在数据高速缓存(D-高速缓存)350中。
图7显示了BDFB 300用于Load and Uncompress ByteUnsigned(lubu)指令的操作的情况。此操作类似于图3的luhu指令的操作(如此,参考图3的大多数以上的讨论这里也同样适用),只是使用了“字节”量,而不是“半字”量。
在一种情况下(例如,典型情况),值(例如,存储在数据高速缓存350中)小于最大无符号字节量(例如,255),该值返回到目标寄存器rd390,加零扩展。否则,最大无符号字节量(例如,255)充当标记360,有效地址305被用作查找BDFB 300中的全字值的关键字。
指针压缩本发明的示范性方面(例如,BDFB)也用于降低指针(例如,“近指针”和“远指针”)的存储要求。远指针包括绝对全字量,而近指针包括相对半字量。近指针作为带符号的16比特值存储,这是相对于存储器中的它们自己的地址。
传统上,近指针/远指针(例如,近指针和/或远指针)系统已经由程序员提取,因为这样的系统需要大量额外的编码和较低的抽象级别,并常常需要代码路径的多个版本。
然而,本发明的示范性方面使用BDFB提供压缩的指针表示形式的优点,而使区别对于程序透明。具体来说,本发明以16比特半字以它们的压缩的相对形式存储指针。在通常的情况下,预计指针适合16比特。事实上,由于正在加载字指针,已知,结果指针的两个低比特将是0,如此,范围增大到218字节或±128KB。
有两种其他情况要么指针是空值,要么它溢出了18比特偏移。空指针通过最大正半字值来表示(不使用0,由于某些算法依赖于能够使用自我指针),导致目标寄存器被设置为0。
图8显示了BDFB 300用于新指令“Pointer提取”或px的情况。一般而言,如果目标寄存器rd390包含空值的标记值,则清除源寄存器rs330。否则,向源寄存器rs330的内容中添加偏移,以产生有效地址305,从所述有效地址加载目标寄存器rd的内容。将此值添加到目标寄存器rd390的内容,以将它从相对指针转换为绝对指针。
具体来说,指令px rd,偏移(rs)(例如,从指令高速缓存(例如,I-高速缓存)340)呈现由load and uncompress halfword signed指令(例如,luh指令)加载的值(例如,参见图5),并将值作为编码的相对指针。寄存器和偏移参数应该正好与前面的luh指令的相同。
如果加载的值溢出了半字并必须从BDFB 300获取,则luh指令将设置溢出(OV)条件码。如果半字值相当于最大正半字整数(被指针压缩指令用作空值的标记),则它也将设置相等的(EQ)条件码。
指针提取指令按如下方式进行操作如果OV=1,则它表示目标寄存器rd390中的值是从BDFB 300检索出的全字量,在这种情况下,寄存器rd390保持不变。否则,寄存器rd390包含压缩的指针,该指针要么是空值,要么是相对指针。
如果设置了EQ条件码,那么,寄存器rd390包含空值标记值,寄存器rd390被清空。如果没有设置EQ条件码,那么,寄存器rd390包含相对于从其加载它的字对准的有效地址的字对准的指针。在该情况下,寄存器rd390被设置为字对准的有效地址305和向左偏移两个比特的寄存器rd390的内容的总和。
然而,如果在BDFB 300中没有发现值,则生成BDFB Fault(BDFB故障),调用以前注册的用户级别故障处理程序。然后,故障处理程序查询软件维护的BDT中的期望值并更新BDFB 300。
在BDFB 300被更新以包含值之后,处理程序返回控制,并重新执行故障指令。由于BDFB 300现在包含期望的值,则指令如上文所描述的那样正常地完成。
在px中有各种可以提供的指令(例如,“pointer extract”指令)。至少,应该提供字节指针指令,但事实上,各种粒度的相对指针都有用(例如,双字、四字、页面-大小等等)。作为指令编码中的编译时常量,或者通过第三寄存器参数动态地提供校准。
类似地,本发明的示范性方面为将指针压缩为字节宽的量提供支持,或更深入地,如果本发明包括可变的字节宽度子字指针,则压缩为任意大小。
图9显示了BDFB 300用于Pointer Compress(pc)指令的操作的情况。一般而言,如果源寄存器rs330是空值,则它被变为标记值(最大正整数)。否则,寄存器rs330通过减去有效地址305转换为相对指针。
具体来说,Pointer Compress(pc)指令对指针提取指令px执行补码操作(即,pcrs,offset(rd))。如果指针是空值,则存储空值标记值。如果非空的指针被转换为带符号的偏移,如果指针适合半字,指针存储在编址存储器中。否则,在BDT和BDFB 300中创建(或替换)一个条目。
存储指针使条目被从BDT中删除(可能是BDFB 300)。因此,这样的存储必须服从写通(write-through)策略。因此,希望非常有效地,可能以硬件实现BDFB故障处理程序。普通(非冲突)BDT更新就确定地是这种情况。
简而言之,本发明包括具有两组(例如,类)指令的机器用于对压缩的数据进行操作的指令和用于对未压缩的数据进行操作的指令(例如,不同于用于对压缩数据进行操作的指令)。重要的是,数据可以是L1高速缓存(例如,与CPU最近的高速缓存的级别,在与CPU同一个芯片上形成)和CPU之间的压缩的/未压缩的(例如,压缩和/或未压缩的)数据。
此外,用于压缩和解压缩的指令包括加载/存储(例如,加载指令和/或存储)指令。例如,机器包括大数据获取缓冲器硬件结构。此外,不同标记值(高比特对区别的值)交换一系列值的带符号的/无符号的指令(例如,带符号的指令和/或无符号的指令)。此外,机器将数据从64比特压缩到32比特、从32比特压缩到16比特、从32比特压缩到8比特,以及从16比特压缩到8比特。
此外,由语言运行时系统基于存储在特定存储器位置的值可被压缩的可能性,作出有关是否使用压缩的指令或未压缩的指令来访问该位置的数据的决定。
除通过使用硬件结构来实现外,本发明(例如,机器)也通过普通指令的序列模拟压缩的加载/存储指令用软件来实现。即,大数据获取缓冲器可以用软件(例如,完全用软件)来实现。
此外,机器可以使用主要相对编址来压缩数据。即,大多数指针值以相对形式存储(例如,指针-有效地址或P-EA),以不同的形式存储的一些区别值的子集除外。具体来说,专门地处理空值(0)和EA的方案允许实现空值始终是零(0)的期望的属性。
此外,通过将主要相对编址与大数据获取缓冲器(硬件、软件、硬件/软件组合等等)组合,进行指针的压缩。
如图10所示,本发明的另一个方面旨在提供一种管理数据的方法1000,包括执行(100)用于对压缩数据进行操作的一组指令(例如,第一指令)以及用于对未压缩的数据进行操作的另一组指令(例如,不同于第一指令的第二指令)。该方法进一步包括在第一级存储器高速缓存和处理器之间执行压缩数据和解压缩数据(例如,值和指针)中的至少一个操作。
现在请参看图11,系统1100显示了用于实现用于管理数据的本发明的系统和方法的典型的硬件配置。优选情况下,配置至少具有一个处理器或中央处理单元(CPU)1111。CPU 1111通过系统总线1112互连到随机存取存储器(RAM)1114、只读存储器(ROM)1116、输入/输出(I/O)适配器1118(用于将诸如光盘单元1121和磁带驱动器1140之类的外围设备连接到总线1112),用户接口适配器1122(用于将键盘1124、鼠标1126、扬声器1128、麦克风1132,和/或其他用户接口设备连接到总线1112),通信适配器1134,用于将信息处理系统连接到数据处理网络、因特网、内部网、个人区域网络(PAN)等等,以及显示适配器1136,用于将总线1112连接到显示设备1138和/或打印机1139。此外,还包括自动化读取器/扫描仪1141。这样的读取器/扫描仪从许多地方买到。
除了上文所描述的系统之外,本发明的不同方面包括用于执行以上所述的方法的计算机实现的方法。作为示例,此方法以上文所讨论的特定环境中。
这样的方法通过对计算机进行操作来实现,计算机作为数字数据处理设备来实现,以执行机器可读指令的序列。这些指令驻留在各种信号承载介质中。
如此,本发明的此方面旨在提供编程产品,包括信号承载介质,可触摸地实现可由数字数据处理器执行的机器可读指令的程序,以执行以上所述的方法。
这样的方法通过运转CPU 1111以执行机器可读指令的序列来实现。这些指令驻留在各种信号承载介质中。
如此,本发明的此方面旨在提供编程产品,包括信号承载介质,可触摸地实现可由数字数据处理器(包括CPU 1111和上述硬件)执行的机器可读指令的程序,以执行本发明的方法。
此信号承载介质包括,例如,CPU 1111内包含的RAM,以快速访问存储器代表。或者,指令包含在另一种信号承载介质中,如可由CPU 1111直接或间接地访问的磁性数据存储磁盘1200(图12)。
无论是包含在计算机服务器/CPU 1111中,还是在别处,指令都存储在各种机器可读数据存储介质中,如DASD存储器(例如,常规的“硬盘驱动器”或RAID阵列)、磁带、电子只读存储器(例如,ROM、EPROM或EEPROM)、光存储设备(例如,CD-ROM、WORM、DVD、数字光带等等)、纸张“冲孔”卡,或其他合适的信号承载介质,包括传输介质,如数字和模拟和通信链路和无线方式。在本发明的说明性实施例中,机器可读指令包括从诸如Java、“C”等等之类的语言编译的软件目标代码。
利用其独特和新颖的特点,本发明的示范性方面提供了管理数据的系统和方法,不仅增大RAM的有效大小,而且也增大D-高速缓存的有效大小,显著地改善了性能。
尽管是通过一个或多个实施例来对本发明进行描述的,但是,那些本领域技术人员将认识到,可以在所附的权利要求的精神和范围内,对本发明进行修改。具体来说,那些本领域普通技术人员将理解,这里的附图只是说明性的,本发明的组件的设计不仅限于这里所说明的情况,而且,在本发明的精神和范围内,也可以进行修改。
此外,还应该理解,这里所使用的术语“数据”应该解释为包括值和指针中的至少一个,但是,不仅限于此。此外,还应该理解,这里所使用的术语“管理数据”应该解释为包括存储数据、加载数据、压缩数据、解压缩数据中的至少一个,但是,不仅限于此。
此外,申请人的意图是包含所有权利要求元素的等效内容,对本申请中的任何权利要求的修改不应该被理解为放弃对修改的权利要求的任何元素或特点的等效内容的任何兴趣或权利。
权利要求
1.一种用于管理数据的系统,包括处理器,该处理器执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。
2.根据权利要求1所述的系统,其中,所述另一组指令不同于所述一组指令。
3.根据权利要求1所述的系统,其中,所述一组指令和所述另一指令组包括加载指令和存储指令。
4.根据权利要求1所述的系统,进一步包括与所述处理器相邻形成的第一级存储器高速缓存;以及在所述第一级存储器高速缓存和所述处理器之间形成的用于执行压缩数据和解压缩数据中的至少一个操作的模块。
5.根据权利要求4所述的系统,其中,所述模块包括软件模块,所述软件模块包括数据获取缓冲器。
6.根据权利要求4所述的系统,其中,所述模块存储了不同标记值,这些标记值交换一系列值的带符号的和无符号的指令。
7.根据权利要求4所述的系统,其中,所述模块将数据从64比特压缩到32比特、从32比特压缩到16比特、从32比特压缩到8比特,以及从16比特压缩到8比特。
8.根据权利要求1所述的系统,其中,由语言运行时系统基于存储在特定存储器位置的值可被压缩的可能性,作出有关是使用所述一组指令还是所述另一指令组来访问所述特定存储器位置的数据的决定。
9.根据权利要求1所述的系统,进一步包括用于执行指令的软件模块,这些指令通过普通指令的序列模拟压缩的加载指令和压缩的存储指令。
10.根据权利要求9所述的系统,其中,所述软件模块使用主要相对编址来压缩数据,以便大多数指针值以相对形式存储,以不同的形式存储的一些区别值的子集除外。
11.根据权利要求9所述的系统,其中,所述数据包括指针,所述软件模块与主要相对编址组合起来,以压缩所述指针。
12.一种集成电路设备,包括中央处理单元(CPU),所述中央处理单元执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令;与所述CPU相邻形成的存储器高速缓存;以及在所述CPU和所述存储器高速缓存之间形成的缓冲器。
13.根据权利要求12所述的设备,其中,所述缓冲器在用户模式程序控制下操作,以压缩值和指针。
14.根据权利要求12所述的设备,其中,所述缓冲器包括硬件散列表加速器,所述加速器通过有效地址进行索引,并以特殊指令扩增,以支持值压缩。
15.根据权利要求12所述的设备,进一步包括编程语言的软件虚拟机,所述虚拟机基于值可被压缩的可能性使用所述缓冲器。
16.根据权利要求12所述的设备,其中,所述缓冲器包括固定大小设置关联的缓冲器。
17.根据权利要求12所述的设备,其中,所述缓冲器包括特殊用途的用户可读和可写入的高速缓存,所述高速缓存包括通过存储器地址索引的全字值。
18.根据权利要求12所述的设备,其中,当给所述缓冲器提供了地址时,所述缓冲器将所述地址分解为索引一组值的行编号,以及标记,所述标记用于标识所述组的和与所述地址关联的值匹配的成员,以及其中,如果所述标记匹配所述组的成员,则返回所述缓冲器中的关联的全字值,并存储在始发指令的目标寄存器中,如果所述标记与所述组的成员不匹配,则生成缓冲器故障,控制到预先定义的处理程序的分支。
19.根据权利要求12所述的设备,其中,当发生溢出时,所述缓冲器查询软件散列表,所述散列表与所述缓冲器具有相同逻辑结构,并映射将溢出的近指针存储到实际全字绝对地址的地址。
20.根据权利要求12所述的设备,其中,所述数据包括值、近指针和远指针。
21.根据权利要求12所述的设备,其中,所述一组指令包括Load and Uncompress Halfword Unsigned(luhu)指令,所述指令由所述CPU执行,以执行操作,其中,如果值小于最大无符号半字量,则所述值返回到目标寄存器,加零扩展,如果值不小于所述最大无符号半字量,则最大无符号值充当标记,使用有效地址查找所述缓冲器中的全字值。
22.根据权利要求12所述的设备,其中,所述一组指令包括指针提取指令,所述指令由所述CPU执行,以执行操作,其中,如果溢出(OV)条件是1,则目标寄存器中的值包括从所述缓冲器中检索的全字量,所述目标寄存器保持不变,如果所述溢出(OV)条件是1之外的值,则所述目标寄存器包括压缩的指针。
23.根据权利要求12所述的设备,其中,所述一组指令包括Store and Compress Halfword Unsigned(schu)指令。
24.根据权利要求12所述的设备,其中,所述一组指令包括Load and Uncompress Halfword Signed(luh)指令,所述指令由所述CPU执行,以执行操作,其中,最大负值充当溢出标记,而所述半字是符号扩展。
25.根据权利要求12所述的设备,其中,所述一组指令包括Store and Compress Halfword Signed(sch)指令。
26.根据权利要求12所述的设备,其中,所述一组指令包括Load and Uncompress Byte Unsigned(lubu)指令,所述指令由所述CPU执行,以执行操作,其中,如果值小于最大无符号字节量,则所述值返回到目标寄存器,加零扩展,如果值不小于最大无符号字节量,则使用有效地址作为查找所述缓冲器中的全字值的关键字。
27.根据权利要求12所述的设备,其中,如果指针是空值,则存储空值标记值,以及其中,如果所述指针是非空的,则指针转换为带符号的偏移,如果所述指针适合半字,则所述指针存储在编址存储器中,如果所述指针不适合半字,则在缓冲器中创建或替换一个条目。
28.根据权利要求12所述的设备,其中,所述一组指令包括Pointer Extract指令,所述指令由所述CPU执行,以执行操作,其中,如果目标寄存器rd包含空值的标记值,所述寄存器rd被清除,如果所述目标寄存器rd不包含空值的标记值,则向源寄存器rs的内容中添加偏移,以产生有效地址,从所述有效地址加载所述寄存器rd的内容。
29.根据权利要求12所述的设备,其中,所述一组指令包括指针压缩指令,所述指令由所述CPU执行,以执行操作,其中,如果源寄存器rs是空值,则指针变为标记值,如果所述源寄存器rs不是空值,则所述寄存器rs通过减去有效地址转换为相对指针。
30.一种用于管理数据的方法,包括执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。
31.一种可编程存储器介质,用于可触摸地实现可由数字处理设备执行的机器可读指令的程序,以执行管理数据的方法,所述方法包括执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。
32.一种用于部署其中计算机可读代码被集成到计算系统中的计算基础架构的方法,以便所述代码和所述计算系统组合起来,以执行管理数据的方法,所述用于管理数据的方法包括执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令。
33.一种用于管理数据的系统,包括用于执行用于对压缩数据进行操作的一组指令的装置;以及用于执行用于对未压缩的数据进行操作的另一组指令的装置。
全文摘要
用于管理数据的系统和方法包括执行用于对压缩数据进行操作的一组指令和用于对未压缩的数据进行操作的另一组指令(例如,不同的指令)。
文档编号G06F9/318GK101040254SQ200580035424
公开日2007年9月19日 申请日期2005年10月27日 优先权日2004年11月16日
发明者大卫·F·培根, 佩里·程, 大卫·P·格洛沃 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1