短指针的制作方法

文档序号:6494620阅读:330来源:国知局
短指针的制作方法
【专利摘要】数字处理器在存储器中存储不同大小的指针。特别地,处理器执行指令以存储长指针或短指针。长指针指示存储器的逻辑地址空间中的任何地址,而短指针仅指示那个空间的子集中的任何地址。但是,短指针在存储于存储器中时在大小上小于长指针。因此,长指针支持相对较大的地址范围能力,而短指针使用较少的存储器。处理器还执行指令以将长指针或短指针载入到寄存器堆,并且以当执行其它指令时不需要处理器区分不同的指针的方式来这么做。特别地,处理器将长和短指针转换为公共格式以便载入到寄存器堆,并将采用公共格式的指针转换回长指针或短指针以便存储到存储器中。
【专利说明】短指针
【技术领域】
[0001]本发明通常涉及存储器中指针的存储,更特别地,涉及配置为在存储器中存储不同大小的指针的方法和装置。
【背景技术】
[0002]为了执行具体的任务,数字处理器执行指令序列。这些指令;作为任务的一部分所使用、操纵或产生的任何数据;以及任何其它相关信息都存储于处理器可访问的存储器中。当执行存储指令时,处理器在存储器中存储信息。当执行载入指令时,处理器从存储器检索信息并将其载入到寄存器堆(register file)中。这种寄存器堆包括在由处理器实现的指令集架构中指定的寄存器。
[0003]指令指示的一个或多个地址指明了与执行指令相关的特定存储器位置。例如,存储指令指示的地址指明了要存储信息的存储器位置。载入指令指示的地址指明了要从其中检索信息的存储器位置。
[0004]出于多种原因,包括安全、多程序设计和其它原因,指令不指示存储器的实际物理地址;就是说,访问存储器的地址总线上呈现的实际地址。相反,指令指示存储器的所谓逻辑地址,并且处理器和存储器之间的存储器管理单元将逻辑地址转化为物理地址,反之亦然。存储器的所有逻辑地址的集合构成了那个存储器的逻辑地址空间。
[0005]指针是一种数据结构,其值是存储在存储器的其它地方的另一个值的逻辑地址。因此,指针使用那个值的逻辑地址指示(即,指向)另一个值。惯例规定数字处理器使用某些固定大小的指针,并且此大小允许任何给定的指针指示存储器逻辑地址空间中的整个范围的逻辑地址。例如,数字处理器可以使用固定大小为32位的指针,其允许指针指示具有4千兆字节(GB)逻辑地址空间的存储器中的任何逻辑地址。
[0006]限制数字处理器使用具有单一的固定大小的指针显然精简了处理器的指令集架构。但是,该限制同样人为地增加了存储指针所需的存储器容量和带宽。即使特定的指针不需要指示存储器逻辑地址空间的整个范围,指针还是必须具有与需要指示全部区域的另一个指针相同的固定大小。

【发明内容】

[0007]本文的教导有利地包括操作为在存储器中存储不同大小的指针的数字处理器。所谓的长指针指示存储器逻辑地址空间中的全部范围的逻辑地址,而短指针仅指示那些逻辑地址的子集。短指针相应地相对于长指针在存储于存储器中时在大小上较小。因此,在需要时,长指针支持相对大的地址范围能力,而当地址范围的要求相对较小时,短指针使用较少的存储器。
[0008]在一些实施例中,例如,数字处理器配置为执行在存储器中存储长指针的指令,并且还配置为执行在存储器中存储短指针的指令。长指针指示存储器的逻辑地址空间中的任何地址,但是其在存储于存储器时在大小上相对于短指针而言较大。相反地,短指针指示逻辑地址空间的子集中的任何地址,但是其当存储于存储器中时在大小上相对于长指针而言有利地较短。
[0009]处理器还配置为执行将长指针载入到寄存器堆(其包括在处理器的指令集架构中指定的寄存器)的指令,并执行将短指针载入到寄存器堆的指令。不管是载入长指针还是短指针,处理器都将指针转换为公共格式以载入到寄存器堆。这样,处理器无需在执行随后的指令时另外区分长指针和短指针。当然,尽管如此,为了区分存储于存储器中时的长指针和短指针,处理器将公共格式的指针转换为长指针或短指针以便存储于存储器中。
[0010]在至少一些实施例中,例如为达到与存储器或寄存器堆相关联的某些预定结果的需求,通过添加或移除填充(padding),处理器在公共格式和长短指针之间进行转换。例如,如需要使得指针以预定大小载入到与公共格式相关联的寄存器堆中,处理器可以从长或短指针中添加或移除填充。相反地,处理器可以从公共格式的指针添加或移除填充,如需要使得长或短指针以使得存储器访问更有效率的预定的对准存储在存储器中。
[0011]此外,在一个或多个实施例中,存储器的逻辑地址空间包括预定数量的逻辑段。这些段中的每一个都包括多个逻辑地址。长和短指针都指示了段中的任何一个,在某种意义上,指针指示的最终逻辑地址可以包含于那些段中的任何一个中。但是,长和短指针的不同在于,长指针指示了段中的任何地址,而短指针仅指示了段的子集中的任何地址。因此,在这些实施例中,短指针指示存储器逻辑地址空间的子集中的任何地址,其中这些子集包括逻辑存储器段的不相邻的部分。
[0012]在一些实施例中,长指针在存储于存储器中时具有64位的大小,而短指针具有32位的大小。可是,当将指针载入到寄存器堆时,处理器将长和短指针都转换为具有48位的大小的公共格式。
[0013]此外,在至少一个实施例中,处理器实际上配置为执行载入或存储不同类型的短指针的指令,其中,不同类型的短指针指示不同大小的子集中的地址。
[0014]当然,处理器还可以配置为执行其它指令。即,上述用于载入和存储指针的指令仅仅表示了处理器实现的指令集架构(ISA)中的一些指令。因此,处理器的ISA还可以包括执行算术和逻辑运算的指令,和载入或存储其它类型数据(例如整数)的指令。实际上,在一个或多个实施例中,处理器10配置为执行指令以便载入或存储对应于长和短指针的大小的不同大小的整数。
[0015]在这点上,根据其关于整数和指针的相关配置,可以更一般地理解数字处理器。关于这一点,数字处理器配置为执行指令以载入或存储不同大小的整数(例如,64位和32位)。数字处理器还配置为执行指令以载入或存储对应大小的指针(例如,64位和32位)。
[0016]当然,本发明不限于上述特征和优点。本领域的普通技术人员在阅读了随后的示例实施例的详细描述并回顾包含于其中的附图之后将意识到额外的特征和优点。
【专利附图】

【附图说明】
[0017]图1是根据一个或多个实施例的数字处理器的框图,其操作为在逻辑分段的存储器中存储指针。
[0018]图2是图示根据一些实施例的由数字处理器实施的转换过程的框图,其用于通过添加或移除填充而在公共指针格式和长或短指针之间进行转换。[0019]图3A-3B是根据一个或多个实施例,在它们的地址范围能力方面图示关于长和短指针之间的区别的额外细节的框图。
[0020]图4A-4B是根据一些实施例,图示32位短指针和64位长指针的特定实施例的框图。
[0021]图5A-5B是根据一些实施例,图示不同类型短指针的框图。
[0022]图6A-6C是根据一些实施例,图示包括自识别位的不同类型的短指针的框图。
[0023]图7是根据一个或多个实施例的由数字处理器实现的方法的逻辑流程图,其用于将指针存储于逻辑分段的存储器中。
【具体实施方式】
[0024]图1根据各实施例描述了数字处理器10。如图所示,处理器10在通信上耦合到逻辑分段的存储器12。处理器10配置为执行指令以将信息存储在此存储器12中。处理器10还配置为执行指令以从存储器12中检索信息并将信息载入到寄存器堆14,例如,用于处理。寄存器堆14包括在由处理器10实现的指令集架构中指定的寄存器。
[0025]处理器10在存储器12的逻辑地址而非物理地址空间16中执行这些指令。就是说,处理器10执行指示了那些存储器位置的逻辑地址的指令,而不是执行指示了与指令相关的特定存储器位置的实际物理地址的指令。存储器管理单元(未示出)将这些逻辑地址转化为物理地址用于实际存储器的访问,反之亦然。存储器12的所有逻辑地址的集合构成了那个存储器12的逻辑地址空间16。因此,此逻辑地址空间16具有预定大小。
[0026]指针是处理器10存储于存储器12中或载入到寄存器堆14中的一种信息类型,通过执行指令达到那种效果。指针是一种数据结构,其值是存储于存储器12的其它位置的另一个值的逻辑地址。因此,指针使用那个值的逻辑地址指示(指向)另一个值。
[0027]特别地,处理器10配置为在存储器12中存储不同大小的指针。特别地,处理器10配置为执行指令以在存储器12中存储所谓的长指针,并且还配置为执行指令以在存储器12中存储所谓的短指针。长指针指示了存储器12的逻辑地址空间16中的任何地址;8卩,长指针具有跨越存储器的逻辑地址空间16的全部地址范围的能力。但是,长指针在存储于存储器12时在大小上相对于短指针较大。相反,短指针仅仅指示了逻辑地址空间16的子集18中的任何地址;即,短指针具有跨越存储器的逻辑地址空间16的有限地址范围的能力。但是短指针在存储于存储器12时在大小上比长指针有利的要小。因此,当需要时长指针支持相对大的地址范围能力,而当地址范围要求相对小时,短指针使用较少的存储器12。
[0028]对应地,处理器10配置为执行指令以将长指针载入到寄存器堆14中,并执行指令以将短指针载入到寄存器堆14中。不管载入的是长指针还是短指针,处理器10都将指针转换为公共格式以便载入到寄存器堆14中。这样,处理器10就不需要在执行后续指令中另外区分长或短指针(也就是说,处理器的指令集架构可以保持不变,除了考虑那些与实际载入或存储指针相关联的特殊指令之外)。当然,为了仍然区分存储于存储器12中时的长和短指针,处理器10将采用公共格式的指针转换为长或短指针以便于在存储器12中存储。
[0029]在至少一些实施例中,例如为达到与存储器12或寄存器堆14相关联的某些预定的结果而需要的那样,通过添加或移除填充,处理器10在公共格式和长或短指针之间转换。例如,处理器10可以从长或短指针添加或移除填充,如使得指针以与公共格式相关联的预定大小载入到寄存器堆14所需的那样。相反的,如使得长或短指针以某个预定的对准存储于存储器12中所需的那样(例如,特定字对准,其中字包括某个预定数量的位),处理器10可以从采用公共格式的指针添加或移除填充。此对准可使得存储器的访问更有效率。
[0030]例如,考虑图2。在图2中,通过添加填充24,处理器10将采用公共格式20的指针转换为长指针22以存储于存储器12中。在添加此填充24时,处理器10将长指针22以预定对准存储于存储器12中,通过直接采用公共格式20存储指针其不会另外出现。相反的,通过移除填充24,处理器10将长指针22转换为公共格式20。在移除此填充24时,处理器10将长指针22以预定大小载入到寄存器堆14中。
[0031]处理器10可以按类似方式在公共格式20和短指针26之间转换。但是,由于短指针26与长指针相比在存储器12中存储时的大小相对较小,所以由处理器10添加或移除的填充24的量可能不同于与长指针22的转换关联的量。
[0032]此外,在一些实施例中,并且如图2所示,短指针26固有地在存储器12中对准而无需任何添加的填充,但是为了以预定的大小载入到寄存器堆14中需要填充。因此,在图2中,通过添加填充28处理器10将短指针26转换为公共格式20。在添加此填充时,处理器10使得短指针26以预定的大小载入到寄存器堆14中。同样的,通过移除填充28,处理器10将采用公共格式20的指针转换为短指针26以便于存储在存储器12中。在移除此填充28时,处理器10使得短指针26以预定的对准存储于存储器12中。
[0033]图3A-3B图示根据一个或多个实施例,关于长和短指针22、26之间的区别的额外细节。如图3A所示,存储器12的逻辑地址空间16包括预定数量的逻辑段30 (例如,段O、
1...N)。这些段30中的每一个都包括多个逻辑地址。长指针和短指针22、26都指示段30中的任何一个,在某种意义上,指针指示的最终的逻辑地址可能包含于那些段30中的任何一个。但是,长和短指针22、26的不同在于,长指针22指示段30中的任何地址,而短指针26仅指示段30的子集中的任何地址。图3B更特别地图示了此不同。
[0034]图3B描述了存储器逻辑地址空间16的一个段30。长指针22可以指示此段30中的任何地址;就是说,长指针22具有跨越段30的全部地址范围的能力。作为对比,短指针26只能指示段30中的一些地址,即,短指针26具有跨越段30的有限地址范围的能力。如图所示,例如,短指针26可以指示段20的30A部分中的任何地址,但是不能指示30B部分中的任何地址。因此,在图3A-3B的实施例中,短指针26指示存储器逻辑地址空间16的子集18中的任何地址,其中这种子集18由逻辑存储器段30的不相邻的部分30A组成。
[0035]更详细地,根据各实施例的指针包括指出了存储器逻辑地址空间的特定段30的某些位,以及指出了那个段30中的特定地址的其它位。这些位共同地指示存储器逻辑地址空间16中的特定地址。根据一些实施例,长指针22和短指针26之间的一个不同之处在于短指针26包括指出了段30中特定地址的几个位。使用这几个位,短指针26仅指示段30的子集中的任何地址。
[0036]在这些实施例中,处理器10配置为在将短指针26转换为公共格式20以及将公共格式20转换为短指针26时解释那几个位。例如,在一些情形中,通过将填充添加到指出了段30中的特定地址的那些位中,处理器10将短指针26转换为公共格式20以便于载入到寄存器堆14中。如上面关于图2所讨论那样,处理器10可以添加此填充以使得短指针26以与公共格式20相关联的预定大小载入到寄存器堆14中。同样,通过抽取一个或多个那些位,而不是那些填充,处理器10将采用公共格式20的指针转换为短指针26以便存储于存储器12中。再次如上面讨论的那样,处理器10可以移除此填充以使得短指针26以预定对准存储于存储器12中。
[0037]图4A-4B图示了这些实施例的具体示例。在图4A-4B中,处理器10将采用公共格式20的指针转换为长或短指针22、26,其分别以4个字或2个字的对准存储于存储器12中,其中一个字包括16位。因此,处理器10将采用公共格式20的指针转换为具有64位大小的长指针22,并将采用公共格式20的指针转换为具有32位大小的短指针26。在将长或短指针22、26转换为公共格式20时,处理器10使得那些指针22、26以预定的48位的大小载入到寄存器堆14中。
[0038]更详细地,图4A图示了 64位的长指针22作为包括填充24、选择器32、以及偏移量34。填充24和选择器32每个都包括16位,而偏移量34包括32位。如上所述,填充24由处理器10添加用于存储器对准,其并不指出任何信息。选择器32和偏移量34共同地指示存储器逻辑地址空间16中的任何地址。特别地,选择器32的8位指出了存储器的256个逻辑段30中的任何一个。选择器32的其它8位指出了与所指出的段30相关联的唯一属性。偏移量34的32个位指出了所指出的段30中的232个地址中的任何一个。
[0039]因此,图4A中的64位长指针22包括填充24的16位和可用于指出逻辑地址的信息的48位(选择器32的16位和偏移量34的32位)。因此,这种情形中的处理器10配置为通过从那些长指针22中移除16位的填充24将64位的长指针22简单地转换为48位的公共格式20。同样,处理器10配置为通过添加16位的填充24将采用48位公共格式20的指针简单地转换为64位的长指针22。
[0040]图4B图示32位短指针26的相似细节。短指针26包括8位的局部选择器36和24位的偏移量38。局部选择器36和位偏移量38共同地指示存储器逻辑地址空间16的子集18中的任何地址。特别地,8位的局部选择器36指出了存储器的256个逻辑段30中的任何一个。24位的偏移量38指出了所指出的段30的子集30A中的224个地址中的任何一个。
[0041]因此,图4B中32位短指针26把以其他方式的话包含于图4A的64位长指针22中的8位的选择器32和8位的偏移量34排除在外。使用这些被排除的位,处理器10配置为,通过添加8位默认值40以代替被排除的8个选择器位、并通过添加8位填充28到24个偏移量位而将32位的短指针26转换为48位的公共格式20。以此方式载入到寄存器堆14中,公共格式的短指针指示存储器逻辑地址空间16的子集18中的任何地址,并指出与所指出的段30相关联的默认属性。
[0042]当然,图4A-4B中所示的具体实施例仅仅表示非限定性示例,由于指针或指针部分的位的精确数量可能与上面的那些不同。在一些实施例中,例如,短指针26被限制为指示双字对准的存储器位置。这意味着短指针26指示的逻辑地址的最低有效位η具有“ ;0”值(其中,η=1,2...)。给定此要求,处理器10抑制不必要地在存储器12中存储那些η个最低有效位。那么,为了将短指针26载入到寄存器堆14,处理器10仅仅载入默认值为“O”的寄存器堆14的η个最低有效位。因此,在这些情形中,短指针26到公共格式的转换以及填充的对应添加在某种意义上增加了短指针26的地址范围,但是代价是具有对准限制。这还可以被认为是在短指针26的粒度和短指针26的范围之间的折衷。结果是,在这些情形中,图4中的填充28实际上可以小于8位,即,8-n位,偏移量38可以有效地具有较大范围的224+n个逻辑地址。
[0043]在这点上,图4A-4B也是非限制性的,在某种意义上,短指针可以指示比所示的示例短指针26具有更大或更小大小的子集(S卩,具有更大或更小的地址范围能力)。实际上,根据一些实施例的处理器10实际上被配置为执行指令以载入或存储不同类型的短指针,其中不同类型的短指针指示不同大小的子集中的地址。
[0044]例如,考虑图5A-5B。这些图描绘了两个示范类型的短指针(分别是中等和大的短指针),它们中的任何一个或所有都可以与之前在图4B中所示的短指针(也称为小的短指针)结合使用。在图5A中,存储于存储器12中时的中等短指针42包括4位的局部选择器44和28位的偏移量46。单独考虑4位的局部选择器44,其指出了段30的子集中的任何一个段30 (例如,128个段的子集中的任何段)。28位的偏移量46指出了所指出的段30的子集30A中的228个地址中的任何一个。
[0045]但是处理器10配置为载入中等短指针42以致,如载入到寄存器堆14中那样,公共格式的指针50指出了任何一个段30 (例如,256个段中的任何一个,而不仅仅是128个段的子集)。特别地,处理器10配置为从存储器12载入中等短指针42,并且还配置为从特定寄存器28 (此处示出为RBASE)载入4位,其指出了在段30的剩余子集中的任何段30 (例如,未与中等短指针的4位局部选择器44关联的128个其它段的子集中的任何段)。因此,来自中等短指针的局部选择器44的4位和来自特定寄存器28的4位共同指出了 256个段30中的任何一个。与图4B中的短指针相似,处理器10添加8位默认值52并添加填充54。但是,由于在存储于存储器12中时中等短指针42包括更多的4位用于偏移量46,因此,填充54仅仅是4位而非8位。
[0046]在图5B中,在存储于存储器12中时大的短指针58简单地包括32位的偏移量58。32位的偏移量58指出所指出的段30中的232个地址中的任何一个。在存储于存储器12中时大的短指针58自身不指出此段30。这改为由特殊寄存器60中的8位指出(在一些实施例中,其不同于图5A中讨论的特殊寄存器48)。因此,处理器10配置为从存储器12载入大的短指针56,还配置为从指出256个段30中的任何段30的特殊寄存器60载入8位。因此,如载入到寄存器堆14那样,公共格式的指针64指出了任何一个段30以及段30中的任何地址。与图4B中的短指针相似,处理器10添加8位的默认值62。但是,由于在存储于存储器12中时大的短指针56包含更多的8位偏移量58,所以不添加填充。
[0047]注意到,通过执行相同或不同的指令,处理器10可以载入或存储如上所述的不同类型的短指针(例如,小的、中等的、或大的)。在一些实施例中,例如,处理器10配置为执行相同的指令以便基于识别了其类型(例如,小的、中等的、或大的)的短指针的一个或多个位来载入不同类型的短指针。例如,考虑图6A-6C,其图示了熵编码技术用于实现在不同类型的短指针中的类型识别位。
[0048]图6A根据一些实施例图示了小的短指针70。此小的短指针70包括I位类型识别符72,其将短指针的类型识别为小。小的短指针70进一步包括8位局部选择器74和23位偏移量76。图6B图示了中等短指针80。中等短指针80包括2位类型识别符82,其将短指针类型识别为中等。中等短指针80进一步包括4位局部选择器84和26位偏移量86。最后,图6C图示了大的短指针90。大的短指针90包括2位类型识别符92,其将短指针类型识别为大。大的短指针90进一步包括30位的偏移量96。
[0049]类型识别位的此用法简化了处理器的指令集架构。但是,如图6A-6C中所示,这些一个或多个类型识别位可以代替一位或多位指针偏移量或局部选择器。因此,这些实施例用指令集架构的精简换来了地址范围能力。
[0050]在一些实施例中,指令集架构精简的程度被限制为载入指令而没有存储指令。事实上,在这些实施例中,处理器10仍然可以配置为执行不同的指令来存储不同类型的短指针。此处,不同的指令存储用于识别其类型的短指针的一位或多位的不同值。
[0051]在其它实施例中,处理器10配置为执行同样的指令来存储不同类型的短指针。在这些实施例中,公共格式的短指针,如载入到寄存器堆14中那样,包括一个或多个类型识别位,其描述了短指针应该如何存储于存储器12 (例如,作为小的、中等的、或大的短指针)。这样,处理器10只需要执行单个存储短指针指令来将短指针存储于存储器12,其中该指令检查类型识别位并存储不同位值的不同类型的短指针。再次,类型识别位可以代替公共格式指针的偏移量或选择器的一位或多位。
[0052]长指针也可以包括上面讨论的类型识别位。在此情形中,包含于长指针中的类型识别位描述了那个长指针应该如何作为短指针(例如,作为小的、中等的、或大的短指针)存储于存储器12中。考虑这样的示例,其中具有类型识别位的长指针存储于存储器12中。处理器10可以执行指令以将那个长指针载入到寄存器堆作为公共格式的指针。此公共格式的指针同样包括类型识别位。处理器10随后可以执行指令以将该公共格式的指针作为短指针存储到存储器12中,而不是如原始存储那样的长指针。为此,处理器10检查类型识别位以确定是否将公共格式的指针作为小的、中等的、或大的短指针来存储。注意,在实践中,类型识别位可以额外的指出不知道如何将指针作为短指针存储于存储器12中。在此情形中,处理器10会指出异常或错误。
[0053]记住上面的修改和变化,本领域的技术人员将意识到上面描述的处理器10通常实现图7中所示的处理,其用于处理与逻辑分段的存储器12相关联的指针。如图7所描绘的,这种处理方法包括执行指令以将长指针载入到寄存器堆14中,或将长指针存储到存储器12中(框100)。与迄今为止的描述一致,此上下文中的长指针指示存储器18的逻辑地址空间16中的任何地址,其具有预定大小。处理还包括执行指令以将短指针载入到寄存器堆14中或将短指针存储到存储器12中(框110)。再次与迄今为止的描述一致,短指针指示存储器的逻辑地址空间16的子集18中的任何地址。处理进一步包括将长指针或短指针转换为公共格式以便载入到寄存器堆14中(框120)。并且处理最后包括将采用公共格式的指针转换为长或短指针以便存储于存储器12中(框130)。使用在存储于存储器12中时在大小上相对于长指针较小的短指针,当地址范围要求相对较小时此处理有利地使用较少的存储器。
[0054]本领域的那些技术人员当然将意识到,虽然上面已经将数字处理器10通常描述为配置成执行指令以载入或存储长和短指针,但是处理器10可以配置成也执行其它指令。就是说,上面描述的指令仅表示由处理器10实现的指令集架构(ISA)中的一些指令。因此处理器的ISA还可以包括载入或存储其它类型数据(例如整数)的指令。实际上,在一个或多个实施例中,处理器10配置为执行指令以载入或存储不同大小的整数,其对应于长和短指针的大小。例如,至少一个实施例中的处理器10配置为执行指令以载入或存储64位的长指针和32位的短指针,并对应地配置为执行指令以载入或存储64位的整数和32位的整数。
[0055]在这点上,依据其关于整数和指针的相关配置,可以更一般地理解数字处理器10。在此上下文中的数字处理器10配置为执行指令以在寄存器堆14中载入或在存储器12中存储不同大小的整数(例如,64位和32位)。数字处理器10还配置为执行指令以在寄存器堆14中载入或在存储器12中存储对应大小的指针(例如,64位和32位)。
[0056]因此,本文的实施例广泛地支持在存储于存储器12时的不同大小的指针。不同大小的指针提供不同的地址范围能力,并且因此如果地址范围的需求允许的话,使得程序员通过使用较小大小的指针来使用较少的存储器12。此外,不同大小的指针采用一个公共表示或格式在寄存器堆中内部表示,这有利地避免了对处理器的指令集架构的进一步修改。
[0057]因此,本领域的技术人员将意识到,在不脱离本发明的实质特征的情况下,本发明可以采用不同于本文具体阐述的方式的其它方式来实现。因此,本实施例在所有方面都认为是说明性的而非限制性的,并且落在所附的权利要求的含义和等效范围中的所有变化都旨在包含于其中。
【权利要求】
1.一种数字处理器,操作为处理与逻辑分段的存储器相关联的指针,所述数字处理器配置为: 执行指令以将指示所述存储器的逻辑地址空间中的任何地址的长指针载入到寄存器堆中或存储到所述存储器中,所述逻辑地址空间具有预定大小; 执行指令以将指示逻辑地址空间的子集中的任何地址的短指针载入到所述寄存器堆或存储到所述存储器中; 将长指针或短指针转换为公共格式以便载入到所述寄存器堆;以及 将采用公共格式的指针转换为长指针或短指针以便存储于所述存储器中,短指针在存储于所述存储器时在大小上相对于长指针较小。
2.如权利要求1所述的数字处理器,其中长指针和短指针都指示所述逻辑地址空间的预定数量的段中的任何一个,并且其中长指针指示段中的任何地址,而短指针指示段的子集中的任何地址。
3.如权利要求2所述的数字处理器,其中与长指针相比,短指针包括指出段中的特定地址的较少数量的预定位,并且其中所述数字处理器配置为: 通过将填充添加到所述预定位来将短指针转换为所述公共格式;以及 通过抽取一个或多个所述预定位而不是所述填充,将采用公共格式的指针转换为短指针,以便存储到所述存储器中。
4.如权利要求1所述的数字处理器,配置为通过将填充添加到短指针来将短指针转换为所述公共格式,以及通过从长指针移除填充来将长指针转换为所述公共格式。
5.如权利要求1所述的数字处理器,进一步配置为执行不同的指令以载入或存储不同类型的短指针,不同类型的短指针指示不同大小的子集中的地址。
6.如权利要求1所述的数字处理器,进一步配置为执行相同的指令,以基于识别其类型的短指针的一个或多个位来载入不同类型的短指针,不同类型的短指针指示不同大小的子集中的地址。
7.如权利要求1所述的数字处理器,进一步配置为执行相同的指令,以基于采用所述公共格式的指针的一个或多个位来在所述存储器中将采用所述公共格式的指针存储为不同类型的短指针,所述一个或多个位识别要存储的短指针的类型,不同类型的短指针指示不同大小的子集中的地址。
8.如权利要求1所述的数字处理器,进一步配置为执行指令以将对应于所述长指针和短指针的大小的不同大小的整数载入到所述寄存器堆或存储到所述存储器中。
9.如权利要求1所述的数字处理器,其中长指针在存储于所述存储器时具有64位大小,而短指针在存储于存储器时具有32位大小。
10.如权利要求9所述的数字处理器,其中在存储于所述存储器时长指针包括指出所述逻辑地址空间的预定数量的段中的任何一个的8位,以及指出段中的任何一个地址的32位,并且其中在存储于所述存储器时短指针包括指出所述段中的任何一个的8位,以及指出段的子集中的任何一个地址的24位。
11.如权利要求9所述的数字处理器,其中在存储于所述存储器时长指针包括指出所述逻辑地址空间的预定数量的段中的任何一个的8位,以及指出段中的任何地址的32位,并且其中在存储于所述存储器时短指针具有以下至少任何两个:第一类型,包括指出所述段的任何一个的8位,以及指出段的子集中的任何地址的24位; 第二类型,包括指出所述段的子集中的任何段的4位,以及指出段的子集中的任何地址的28位;以及 第三类型,包括指出段中的任何地址的32位。
12.如权利要求11所述的数字处理器,配置为将所述第二类型和所述第三类型中的至少一个载入到所述寄存器堆中,所述处理器配置为: 通过从所述存储器载入所述短指针以及通过从特殊寄存器载入识别所述段的剩余子集中的任何段的4位,将具有所述第二类型的短指针载入到所述寄存器堆,由此在载入到所述寄存器堆时所述短指针指出所述段的任何一个以及段的子集中的任何地址;以及 通过从所述存储器载入所述短指针以及通过从特殊寄存器载入识别所述段中的任何一个的8位,将具有所述第三类型的短指针载入到所述寄存器堆,由此在载入到所述寄存器堆时所述短指针指出所述段的任何一个以及段中的任何地址。
13.一种在数字处理器中操作以处理与逻辑分段的存储器相关联的指针的方法,所述方法包括: 执行指令以将指示所述存储器的逻辑地址空间中的任何地址的长指针载入到寄存器堆中或存储到所述存储器中,所述逻辑地址空间具有预定大小; 执行指令以将指示所述逻辑地址空间的子集中的任何地址的短指针载入到所述寄存器堆或存储到所述存储器中; 将长指针或短指针转换为公共格式以便载入到所述寄存器堆;以及 将采用公共格式的指针转换为长指针或短指针以便存储于所述存储器中,短指针在存储于所述存储器时在大小上相对于长指针较小。
14.如权利要求13所述的方法,其中长指针和短指针都指示所述逻辑地址空间的预定数量的段的任何一个,并且其中长指针指示段中的任何地址,而短指针指示段的子集中的任何地址。
15.如权利要求14所述的方法,其中与长指针相比,短指针包括指出段中的特定地址的较少数量的预定位,并且其中所述方法包括: 通过将填充添加到所述预定位来将短指针转换为所述公共格式;以及 通过抽取一个或多个所述预定位而不是所述填充,来将采用所述公共格式的指针转换为短指针,以便存储到所述存储器中。
16.如权利要求13所述的方法,包括通过将填充添加到短指针来将短指针转换为所述公共格式,以及通过从长指针移除填充来将长指针转换为所述公共格式。
17.如权利要求13所述的方法,包括执行不同的指令以载入或存储不同类型的短指针,不同类型的短指针指示不同大小的子集中的地址。
18.如权利要求13所述的方法,包括执行相同的指令,以基于识别其类型的短指针的一个或多个位来载入不同类型的短指针,不同类型的短指针指示不同大小的子集中的地址。
19.如权利要求13所述的方法,包括执行相同的指令,以基于采用所述公共格式的指针的一个或多个位来在所述存储器中将采用所述公共格式的指针存储为不同类型的短指针,所述一个或多个位识别要存储的短指针的类型,不同类型的短指针指示不同大小的子集中的地址。
20.如权利要求13所述的方法,进一步包括执行指令以将对应于所述长指针和短指针的大小的不同大小的整数载入到所述寄存器堆或存储到所述存储器中。
21.如权利要求13所述的方法,其中长指针在存储于所述存储器中时具有64位大小,而短指针在存储于所述存储器中时具有32位大小。
22.如权利要求21所述的方法,其中长指针包括指出所述逻辑地址空间的预定数量的段中的任何一个的8位,以及指出段中的任何地址的32位,并且其中短指针包括指出所述段中的任何一个的8位,以及指出段的子集中的任何地址的24位。
23.如权利要求21所述的方法,其中长指针包括指出所述逻辑地址空间的预定数量的段中的任何一个的8位,以及指出段中的任何地址的32位,并且其中短指针具有以下至少任何两个: 第一类型,包括指出所述段中的任何一个的8位,以及指出段的子集中的任何地址的24位; 第二类型,包括指出所述段的子集中的任何段的4位,以及指出段的子集中的任何地址的28位;以及 第三类型,包括指出段中的任何地址的32位。
24.如权利要求23所述 的方法,包括将所述第二类型和所述第三类型中的至少一个载入到所述寄存器堆中,其中: 将具有所述第二类型的短指针载入到所述寄存器堆包括从所述存储器载入所述短指针以及从特殊寄存器载入识别所述段的剩余子集中的任何段的4位,由此在载入到所述寄存器堆时所述短指针指出所述段的任何一个以及段的子集中的任何地址;以及 将具有所述第三类型的短指针载入到所述寄存器堆包括从所述存储器载入所述短指针以及从特殊寄存器载入识别所述段中的任何一个的8位,由此在载入到所述寄存器堆时所述短指针指出所述段的任何一个以及段中的任何地址。
25.一种数字处理器,操作为处理与逻辑分段的存储器相关联的指针,所述数字处理器配置为: 执行指令以将不同大小的整数载入到寄存器堆或存储于所述存储器中;以及 执行指令以将对应大小的指针载入到寄存器堆或存储于所述存储器中。
【文档编号】G06F9/30GK103547995SQ201280012977
【公开日】2014年1月29日 申请日期:2012年3月8日 优先权日:2011年3月11日
【发明者】S·梅尔, J·G·法沃, E·格维茨, R·哈塔韦, E·特雷胡斯 申请人:瑞典爱立信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1