高效地址转换的制作方法

文档序号:13080166阅读:238来源:国知局
高效地址转换的制作方法与工艺

本公开涉及地址转换,特别是涉及高效地址转换。



背景技术:

诸如便携式计算机、台式计算机、平板计算机、智能电话等计算设备具有相关联的指令集架构(isa)。isa是计算设备架构中与编程有关的一部分,包括原生数据类型、指令、寄存器、寻址模式、存储器架构、中断和异常处置、以及外部i/o。isa通常具有相关联的原生字长,例如32位、64位等。原生字长与寄存器大小(以位为单位)以及存储器地址大小和存储器地址空间的相应容量有关。被设计用于在所选定的计算设备上执行的应用通常包括对应于计算设备的原生字长的指令。

附图说明

要求保护的主题的特征和优点将从与其一致的实施例的以下详细描述中变得显而易见,应参照附图考虑所附描述,在附图中:

图1展示了根据本公开的各实施例的计算设备的功能框图;

图2是存储器图,展示了根据本公开的各实施例的源(访客)存储器架构和目标(主机)存储器架构;

图3展示了根据本公开的一个实施例的三种示例源isa指令转换;并且

图4是根据本公开的各实施例的高效地址转换操作的流程图。

虽然以下具体实施方式将参考说明性实施例进行,但是许多替代方案、修改及其变体将对本领域的技术人员而言是明显的。

具体实施方式

有时期望与第一isa(“访客isa”)相关联的应用在与第二isa(“主机isa”)相关联的计算设备上执行(当这些isa不相同时)。访客(即源)isa可以具有比主机(即,目标)isa的原生字长更小的原生字长(以位为单位)。例如,访客isa可对应于armv7isa(可从英国剑桥的控股公司获得),并且主机isa可对应于x86-64isa(例如,可从加利福尼亚州圣克拉拉的公司获得的x86-64isa)。armv7isa具有32位原生字长,并且x86-64isa具有64位原生字长。

这样的执行可以通过在主机上仿真访客操作来实现。仿真包括转换指令从源isa到目标isa,以及转换存储器地址从访客到主机。这些isa之间的指令可能不同,例如,被配置用于将存储器位置的内容加载(即移动)到寄存器中的ld指令或mov指令。算术运算的结果中的位数对应于原生字长,并且因此可能不同。存储器地址可能不同,因为存储器的大小和相关联的存储器地址数量与原生字长有关,并且因此与isa有关。如本文所述,转换可以由编译器静态地(即,在运行时之前)和/或由即时(jit)编译器、由访客操作系统(os)和/或由虚拟机(vm)动态地(即,在运行时期间)执行。

转换可以包括向被配置用于确保仿真准确度的目标指令添加一个或多个控制前缀。例如,可以将操作控制前缀添加到目标指令,所述目标指令被配置用于确保算术结果被限制为源isa原生字长。在另一示例中,可以将被配置用于确保经转换的地址对应于访客原生地址空间的地址控制前缀添加到包括基址±偏移量计算的目标存储器访问指令。控制前缀被配置用于确保在主机上由于执行所仿真的源isa指令而产生的行为与在其原生平台上由于执行源isa而产生的行为相同。虽然提供了益处,但是包括这样的前缀消耗了计算设备资源。因为可能至少将地址控制前缀添加到包括基址±偏移量地址计算的每个存储器访问指令,所以每个前缀增加了由应用占据的存储器量。与解码和/或执行所述前缀相关联的操作消耗更多的处理器资源。此外,与控制前缀相关联的增大的存储器使用率可能增加高速缓存未命中,并且因此增大与存储器访问相关联的延迟。

总体上,本公开涉及高效地址转换。本方法和系统被配置用于减少地址控制前缀的数量,同时确保在目标isa平台(即,计算设备)上由于执行源isa指令而产生的准确行为。在实施例中,当偏移量是零与最大偏移量之间的常数时,可以从包括基址加上或减去(±)偏移量计算的存储器访问指令中省略地址控制前缀。在本实施例中,当是偏移量不是常数和/或偏移量不在零与最大偏移量之间两种情况中的至少一种时,对于存储器访问指令而言,包括了地址控制前缀。最大偏移量的大小(即,量)与相关联的os的特性有关。例如,最大偏移量可以是4096。在另一示例中,最大偏移量可以是8192。在另一示例中,最大偏移量可以大于或小于4096。在另一示例中,偏移量可以大于或小于8192。

包括向或从基址加上或减去偏移量的存储器地址计算可能导致上溢、下溢或既不上溢也不下溢。当既没有下溢也没有上溢时,所产生的地址指向源地址空间和目标地址空间两者中类似的存储器位置。如果基址和偏移量之和大于访客/源isa可寻址的最大允许地址,则可能会由于将偏移量添加到基址而导致发生上溢。换言之,较高阶的位被截断,使得所产生的地址对应于较小的地址。如果偏移量大于基址,则可能会由于从基址中减去偏移量而导致发生下溢。换言之,结果为负,并且当结果为负时,由于在计算设备中表示负数的方式(例如,二进制补码、反码),对应于相对较大的数正数(即,无符号整数),设定(多个)最高阶位。

作为说明性示例,可以考虑四位源原生字长、八位目标原生字长以及为0100b的基址。最大源地址为1111b,并且最大目标地址为11111111b,其中下标b对应于二进制。当向基址添加大于或等于1100b的偏移量时,可能会在源平台地址空间中发生上溢。换言之,使用目标原生字长的地址计算是00000100b+00001100b=00010000b,可能是目标存储空间中的未预留的(即,用户空间)地址。由于结果可能被截断用于源地址,所以这四位结果为0000b,对应于源(访客)地址空间中的内核预留空间。当从基址中减去绝对值大于0100b的偏移量时,可能发生下溢。例如,对负数使用二进制补码,00000100b-00000101b=00000100b+11111011b=11111111b,可能是目标存储器中的内核空间。由于结果可能被截断用于源地址,所以这四位结果为1111b,对应于源存储器中的内核空间。

在源原生架构中,当上溢或下溢导致指向预留的存储空间的地址时,上溢或下溢可能触发存储器访问异常(即故障)。例如,预留的存储器空间可以包括在低存储器中的源内核预留存储器(即在零处或附近的存储器地址)、以及高存储器中的源内核空间(即在最大允许地址处或附近的存储器地址)。预留的源内核可能因此对应于上溢区域,并且源内核空间可能对应于下溢区域。源内核预留存储器和源内核空间的对应大小可能与架构和/或os有关。目标架构可以类似地包括预留的存储器空间:低存储器中预留的目标内核以及高存储器中的目标内核空间。应用一般没有访问预留的内存空间的权限。因此,指向预留的存储器空间的地址可能引起存储器访问异常,所述存储器访问异常然后可能被通信到尝试访问的应用。这种预留的存储器空间可以由例如os和/或vmm(虚拟机监视器)来管理。

在没有仿真的情况下,配置用于源isa的存储器地址计算(即,基址±偏移量)可以在与目标isa相关联的目标平台上执行时产生不同的结果。例如,可在源平台上导致上溢(基址+偏移量>最大存储器地址)的基址加偏移量计算可能反而指向目标平台上的用户空间中的存储器位置。在另一示例中,可在源平台上导致下溢的基址减去偏移量计算可能类似地导致目标平台上的下溢。尽管导致下溢的所产生地址可能不是相同的地址,但它们都会导致存储器访问异常。换言之,两者都产生相同的行为。

根据本公开的方法和系统被配置用于在目标存储器地址空间中提供与源存储器地址空间中的对应上溢区域和下溢区域相关的上溢区域和下溢区域。如本文所述,最大偏移量值与目标上溢区域和下溢区域的大小有关。因为目标原生字大于源原生字,所以基址加偏移量计算在目标上可能不上溢,而是可以指向用户空间内比最大源存储器地址更高存储器地址处的存储器位置。可以定义目标上溢区域,其从源存储器地址空间的上限开始并且具有与最大偏移量相关的大小,如本文所述。可以通过为此区域中的存储器位置设定存储访问权限来仿真所述目标上溢区域,以防止读取、写入和/或执行访问。例如,存储器访问权限可以通过存储器保护系统调用而被设定为无读取、无写入和无执行权限。因此,指向目标上溢区域的存储器地址结果可以在没有地址控制前缀的情况下引起存储器访问异常。

因此,在没有地址控制前缀的情况下,可以准确地仿真包括基址±偏移量的访客存储器地址计算,其中,偏移量是常数并且在零与最大偏移量之间。可以避免与地址转换的验证相关联的操作。在偏移量不是常数和/或不在零到最大偏移量的范围内的情况下,访客存储器地址计算可以包括地址控制前缀。因此,可以减小存储器使用率,可以释放处理器资源,并且可以减少高速缓存未命中。此外,可以在没有配置用于确认结果的准确度的附加验证操作的情况下实现准确的仿真。

图1展示了根据本公开的各实施例的计算设备100的系统框图。计算设备100可以包括但不限于:服务器、工作站计算机、台式计算机、膝上计算机、平板计算机(例如,等)、超级便携式计算机、超级移动式计算机、上网本计算机和/或小型笔记本计算机;移动电话,包括但不限于智能电手机(例如,基于的电话、基于的电话、基于的电话等。

计算设备100包括处理器102、存储器104、一个或多个外围设备106、主机操作系统(os)110、虚拟机(vm)120以及编译器130。处理器102被配置用于执行与计算设备100相关联的操作。例如,外围设备106可以包括:(多个)用户接口设备,包括显示器、触摸屏显示器、打印机、小键盘、键盘等;(多个)传感器,包括加速度计、全球定位系统(gps)、陀螺仪等;(多个)输入/输出(i/o)端口;(多个)有线和/或无线通信逻辑;(多个)存储设备,包括硬盘驱动器、固态驱动器、可移动存储介质等。如本文所述,存储器104包括任何类型的存储器技术。

计算设备100可以进一步包括虚拟机监视器(vmm)112。在实施例中,vmm112可以对应于主机os110和/或被包括在其中。在另一实施例中,vmm112可以不被包括在主机os110中。vm120主控访客os122和应用124。vm120可以进一步主控编译器126和/或转换器逻辑128。在一些实施例中,转换器逻辑128可以被包括在编译器126中。在一些实施例中,转换器逻辑128可以被包括在vm120中而不在编译器126中。在一些实施例中,转换器逻辑128可以被包括在编译器130中,即可以不被包括在vm120中。例如,编译器130可以对应于静态编译器。在另一示例中,编译器126可以对应于即时(jit)编译器。vmm(即,管理程序)112被配置用于提供vm120和与计算设备100相关联的电路系统之间的接口。换言之,vmm112被配置用于通过vm120来管理对处理器102、存储器104和/或(多个)外围设备106的访问。

主机os110被配置用于在处理器102上执行,因此,主机os110和处理器102的主机原生字长可以相同。主机原生字长可以因此对应主机isa字长和计算设备100寄存器字长。主机原生字长可以包含数量m个位。例如,m可以大于或等于四。例如,m可以等于六十四(64)。访客os122可以具有n位的相关联的访客原生字长,其中,n小于m。例如,n可以大于或等于四。例如,n可以等于三十二(32)。应用124可以包括对应于访客isa的指令。

vm120被配置用于提供访客os122和应用124的访客执行环境。换言之,vm120可被配置用于在计算设备100上执行的同时支持访客os122和应用124。vm120被配置用于在处理器102上执行并且与主机os110和/或vmm112交互。在实施例中,vm120可以对应于进程vm。编译器126被配置用于编译例如应用124和/或访客os122以在处理器102上执行。例如,编译器126可以对应于动态(即时)编译器。在实施例中,编译器126可以包括转换器逻辑128。在另一实施例中,访客os122可以包括转换器逻辑。在另一实施例中,vmm112可以包括转换器逻辑128。

当结合图2查看时,可以最佳地理解以下描述。最初,转换器逻辑128被配置用于选择、确定和/或设定最大偏移量。然后可以将最大偏移量存储在最大偏移量存储设备129中。最大偏移量与主机(目标)isa和/或访客(源)isa有关。因此,最大偏移量可以与主机os和/或源os相关。换言之,最大偏移量与预留的存储器的大小有关。例如,os可以将一个或多个高存储器页预留为内核空间(“内核空间”),例如,以便主控内核。在另一示例中,os可以出于内核目的(“内核预留”)而预留一个或多个低存储器页。转换器逻辑128则可以被配置用于至少部分地基于内核空间的大小和/或内核预留区域的大小来确定最大偏移量。例如,最大偏移量可以小于或等于访客内核空间的大小和预留的访客内核的大小中的最小值。在另一示例中,最大偏移量可以小于或等于访客内核空间的大小、预留的访客内核的大小、主机内核空间的大小以及主机中所创建的of区域的大小中的最小值,如本文所述。在另一示例中,可以确定与被配置为添加到基址的偏移量相关的第一最大偏移量,并且可以确定与被配置为从基址中减去的偏移量相关的第二最大偏移量。继续本示例,第一最大偏移量可以小于或等于访客内核空间的大小和主机内核空间的大小中的最小值,并且第二最大偏移量可以小于或等于预留的访客内核的大小和所创建的of区域的大小中的最小值。最大偏移量被配置用于尤其确保将会在访客平台上导致下溢和存储器访问异常的存储器地址计算(即,基址减偏移量)导致处于主机内核空间中的主机地址,并且因此在主机(即计算设备100)上引起相应存储器访问异常。

转换器逻辑128被进一步配置用于在主机地址空间中创建of区域,所述of区域被配置用于仿真访客内核预留区域。所创建的of区域的大小可以与最大偏移量(即,最大偏移量值)有关,如本文所述。例如,转换器逻辑128可以被配置用于请求将包括在of区域中的存储器位置的访问权限设定为防止(即拒绝)任何读取、写入和/或执行访问。以此方式,产生of区域中的主机地址的地址转换被配置用于引起存储器访问异常。例如,导致上溢的基址加偏移量操作可以至少部分地基于权限设定来引起存储器访问异常。因此,将会在访客平台上引起异常的所仿真的存储器访问指令将在计算设备110上引起类似的异常。

图2是存储器简图200,展示了与本公开的各实施例一致的源(访客)202和目标(主机)204存储器架构。目标存储器204对应于图1的存储器104。源存储器202包括2n个存储器位置。低存储器(即接近地址零)对应于内核预留区域,并且高存储器(即接近地址2n)对应于访客内核空间。所述内核预留区域对应于上溢(of)区域212,并且访客内核空间对应于下溢(uf)区域216,如本文所述。访客存储器202因此可以包括三个区域:of区域212、uf区域216和用户空间214。

转换器逻辑128的初始化被配置用于仿真目标存储器204中的of区域212和访客uf区域216。目标存储器204包括2m个存储器位置,其中,m大于n。目标存储器204包括第一用户存储器区域220、目标内核预留区域221、第二用户存储器区域224以及对应于主机uf区域226的上位存储器(uppermemory)中的主机内核空间。在实施例中,目标存储器204可以包括定位成与存储器位置2n相邻(及以上)的of区域222。针对of区域222的存储器访问权限可以被设定为使存储器访问尝试引起存储器访问异常,如本文所述。如本文所述,最大偏移量可以与of区域212的大小、uf区域216的大小、of区域222的大小和/或uf区域226的大小中的一者或多者有关。例如,可以选择(即,限定)of区域222的大小以限制由of区域222占据的主机存储器空间的量。然后,最大偏移量可以同样被限制为小于或等于of区域222的大小。

应当注意,在访客地址空间202中的存储器位置与主机地址空间204中的存储器位置之间不存在一一对应关系。相反,主机地址空间204被配置用于仿真访客地址空间202。换言之,如果存储器地址对应于访客存储器空间202中的用户空间214,则主机地址空间204中的相应存储器地址还可以对应于用户空间220或224。此外,如本文所述,与在访客地址空间202中引起存储器访问异常的访客存储器地址相对应的主机存储器地址被配置用于在主机地址空间204中引起存储器访问异常。

再次转到图1,在操作中,例如当应用124正在执行时,访客os122被配置用于获取和解码与应用124相关的指令。转换器逻辑128被配置用于判定指令是否为存储器访问指令,并且如果是,则判定所述指令是否包括基址±偏移量地址计算。如果所述指令包括基址±偏移量地址计算,则转换器逻辑128被配置用于判定是否添加地址控制前缀。转换器逻辑128被进一步配置用于管理从访客isa到主机isa的指令(和地址)的转换。

例如,转换器逻辑128可以被配置用于当偏移量不是常数和/或偏移量不在零与最大偏移量之间时将地址控制前缀添加到为基址±偏移量类型的指令的存储器访问指令。转换器逻辑128可以被进一步配置为将基址±偏移量作为访客地址操作进行转换。换言之,地址控制前缀被配置用于确保地址计算被限制到访客isa的原生字长。然后可以将所述指令转换为目标isa指令。

在另一示例中,转换器逻辑128可以被配置用于当偏移量是常数和/或偏移量在零与最大偏移量之间时不将地址控制前缀添加到为基址±偏移量类型的指令的存储器访问指令。转换器逻辑128可以被进一步配置为将基址±偏移量作为主机地址操作进行转换。换言之,可以使用主机isa的原生字长来执行地址计算。将会在访客平台上引起存储器访问异常的地址结果被配置用于在计算设备100上引起存储器访问异常,如本文所述。因此,地址计算可以由具有相关联的主机isa的计算平台100来仿真。

因此,可以通过适当地选择最大偏移量并设定of区域222的存储器访问权限来避免通用地址控制前缀添加。因此,可以通过对应于主机isa的计算设备100来提供与访客isa相关联的存储器访问操作的准确仿真。

图3展示了根据本公开的一个实施例的三种示例源isa转换300。例如,源isa指令可以对应于具有32位原生字长的armv7isa,并且目标isa可以对应于具有64位原生字长的x86-64isa。这些示例的最大偏移量为4096(即,0x800),并且所有三个示例都是包括基址±偏移量计算的存储器访问指令(即,加载指令)。因此,如本文所述,所有三个示例都是转换器逻辑128的分析候选。

第一源isa指令302对应于第一转换目标isa指令312。第一源isa指令302的偏移量为0x10,并且0x10是大于零且小于0x800的常数,因此第一源isa指令可以被转换到目标isa而无需添加地址控制前缀。第一转换目标isa指令312展示了此结果。指令312是被配置用于将由寄存器rdi的内容指向的目标存储器位置的内容加偏移量0x10移动到寄存器r8d中的mov指令。所述转换可以作为主机地址计算、即作为64位计算来执行。

第二源isa指令304对应于第二转换目标isa指令314。第二源isa指令304的偏移量为0x40008000,并且0x40008000大于0x800,因此可以将地址控制前缀(例如,addr32)加在经转换的第二源isa指令之前。第二转换目标isa指令314展示了此结果。指令314是被配置用于将由寄存器edi的内容指向的目标存储器位置的内容加偏移量0x40008000移动到寄存器r10d中的mov指令。所述转换可以作为访客地址计算(即,作为32位计算)来执行,并且所述地址控制前缀被配置用于确保仿真是准确的。

第三源isa指令306对应于第三转换目标isa指令316。第三源isa指令306的偏移量包含在寄存器edx中并且可以不是常数,因此可以将地址控制前缀addr32加在经转换的第三源isa指令316之前。第三转换目标isa指令316展示了此结果。指令316是被配置用于将由寄存器edi的内容指向的目标存储器位置的内容加寄存器edx的内容移动到寄存器r11d中的mov指令。所述转换可以作为访客地址计算来执行,并且所述地址控制前缀被配置用于确保仿真是准确的。

因此,当源isa的原生字长小于目标isa的原生字长时,可以减少地址控制前缀的数量,同时确保在目标isa平台(即,计算设备100)上执行源isa指令而产生的准确行为。当地址对应于基址加上或减去(±)偏移量并且偏移量是零与最大偏移量之间的常数时,可以从存储器访问指令中省略地址控制前缀,如本文所述。

图4是根据本公开的各实施例的高效地址转换操作的流程图400。操作可以例如通过图1的计算系统100、特别是转换器逻辑128、编译器126、访客os122、vm120和/或编译器130来执行。

本实施例的操作可以从接收源isa程序计数器402开始。程序计数器被配置用于指向下一条指令。在操作404处,可以获取并解码所述下一条指令。在操作406处,可以判定所述指令是否包含基址加上或减去(±)偏移量地址计算。如果所述指令不包含基址±偏移量地址计算,则程序流程可以进行到操作416。如果所述指令确实包含基址±偏移量地址计算,则在操作408处,可以判定偏移量是否为常数并且在零与最大偏移量之间。如果所述偏移量是常数并且在0与最大偏移量之间的范围内,则在操作410处,可以将基址±偏移量作为主机(即,目标)地址计算进行转换。换言之,所述计算可以使用主机原生字长来执行,并且可以产生主机原生字长结果。可以不将地址控制前缀添加到经转换的指令,即可以省略地址控制前缀。程序流程然后可以进行到操作416。如果偏移量不是常数和/或偏移量不在零与最大偏移量之间的范围内,则在操作412处,可以添加地址控制前缀。所述地址控制前缀被配置用于将地址计算和地址计算的结果约束到原生字长,如本文所述。在操作414处,基数±偏移量可以作为访客地址计算进行转换,即可以被限制到访客原生字长。程序流程然后可以进行到操作416。在操作416处,可以将所述指令转换为目标isa指令。然后可以在操作418继续程序流程。

因此,在没有地址控制前缀的情况下,可以准确地仿真包括基址±偏移量的至少一些访客存储器地址计算。在偏移量不是常数和/或不在零到最大偏移量的范围内的情况下,访客存储器地址计算可以包括地址控制前缀。因此,可以减小存储器使用率,可以释放处理器资源,并且可以减少高速缓存未命中。

虽然图4的流程图展示根据各实施例的操作,将理解的是,并非图4中描绘的所有操作对其他实施例都是必需的。此外,在本文中完全设想到,在本公开的其他实施例中,图4中描绘的操作和/或本文所描述的其他操作能够以任何附图中未具体示出的方式组合,并且这样的实施例可以包括比图4中所示的更少或更多的操作。因此,涉及未在一个附图中准确示出的特征和/或操作的权利要求被视为处于本公开的范围和内容之内。

vmm112可以被配置用于管理在vm120和/或系统(例如计算设备100)上运行的系统资源和控制任务。vmm112可以为各种虚拟机(例如vm120)提供用于底层硬件的抽象层。访客os可以使用microsoftwindows来实现,然而还可以使用其他操作系统。

存储器104可以包括以下类型的存储器中的一个或多个:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机访问存储器、闪存、磁盘存储器和/或光盘存储器。另外或可替代地,系统存储器可以包括其他的和/或后来开发出的类型的计算机可读存储器。

在此描述的操作的实施例可以在计算机可读存储设备中实现,计算机可读存储设备具有存储在其上的指令,所述指令在由一个或多个处理器执行时执行所述方法。例如,处理器可以包括系统处理单元和/或可编程电路。存储设备可以包括机器可读存储设备,所述机器可读存储设备包括任何类型的有形的、非瞬态的存储设备,例如,包括以下各项的任何类型的磁盘:软盘、光盘、压缩盘-只读存储器(cd-rom)、可复写致密盘(cd-rw)、和磁光盘、如只读存储器(rom)的半导体器件、如动态和静态ram的随机访问存储器(ram)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存、磁卡或光卡、或者适合于存储电子指令的任何类型的存储设备。

如本文中任何实施例所使用的,术语“逻辑”可以指被配置用于执行前述操作中任一操作的应用、软件、固件和/或电路系统。软件可以被具体化为非瞬态计算机可读存储介质上所记录的软件包、代码、指令、指令集和/或数据。固件可以具体化为存储器设备中硬编码(例如,非易失性的)的代码、指令或指令集和/或数据。

如本文中任何实施例所使用的,“电路系统”可以例如单一地或以任何组合形式包括硬接线电路系统、可编程电路系统(诸如包括一个或多个单独指令处理核的计算机处理器)、状态机电路系统、和/或存储有可由可编程电路系统执行的指令的固件。所述逻辑可以被统一地或单独地具体化为形成例如集成电路(ic)、专用集成电路(asic)、片上系统(soc)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话等的更大系统的一部分的电路。

在一些实施例中,可以使用硬件描述语言(hdl)来指定用于本文描述的各种逻辑和/或电路的电路和/或逻辑实施方式。例如,在一个实施例中,硬件描述语言可以符合或兼容可以使本文所述的一个或多个电路和/或逻辑的半导体制造成为可能的超高速集成电路(vhsic)硬件描述语言(vhdl)。vhdl可以符合或兼容ieee标准1076-1987、ieee标准1076.2、ieee1076.1、ieeevhdl-2006草案3.0、ieeevhdl-2008草案4.0和/或其他版本的ieeevhdl标准、和/或其他硬件描述标准。

因此,本公开总体上涉及高效地址转换。本方法和系统被配置用于减少地址控制前缀的数量,同时确保在目标isa平台(即,计算设备)上由于执行源isa指令而产生的准确行为。当地址对应于基址±偏移量并且偏移量是零与最大偏移量之间的常数时,可以从存储器访问指令中省略地址控制前缀。当地址对应于基址±偏移量并且是偏移量不是常数和/或偏移量不在零与最大偏移量之间中的至少一项时,对于存储器访问指令而言,可以包括地址控制前缀。

示例

本公开的示例包括以下主题材料,诸如方法、用于执行所述方法的动作的装置(means)、设备、或者与高效地址转换相关的装置(apparatus)或系统,如下文所讨论的。

示例1

根据本示例,提供了一种设备。所述设备包括:处理器;存储器;以及转换器逻辑。所述处理器用于执行主机指令集。所述转换器逻辑用于响应于接收到访客存储器访问指令而判定偏移量是否为常数以及所述偏移量是否大于零且小于最大偏移量,所述访客存储器访问指令包含基址加上或减去所述偏移量。所述最大偏移量与主机指令集架构(isa)和访客isa中的至少一者有关。

示例2

本示例包括如示例1所述的要素,其中,所述转换器逻辑进一步用于:如果所述偏移量是常数并且所述偏移量大于零且小于所述最大偏移量,则将所述基址加上或减去所述偏移量作为主机地址计算进行转换。

示例3

本示例包括如示例1所述的要素,其中,如果是所述偏移量不是常数和/或所述偏移量不大于零且小于所述最大偏移量两种情况中的至少一种,则所述转换器逻辑进一步用于将地址控制前缀添加到相应主机存储器访问指令;并且所述转换器逻辑进一步用于将所述基址加上或减去所述偏移量作为访客地址计算进行转换。

示例4

本示例包括根据示例1至3中任一项所述的要素,其中,所述转换器逻辑进一步用于将所述访客存储器访问指令从源isa转换为目标isa。

示例5

本示例包括根据示例1至3中任一项所述的要素,其中,所述访客isa的原生字长小于所述主机isa的原生字长,所述访客存储器访问指令与所述访客isa有关。

示例6

本示例包括根据示例1至3中任一项所述的要素,其中,所述转换器逻辑进一步用于限定所述存储器中的上溢(of)区域和下溢(uf)区域,所述of区域和所述uf区域与所述最大偏移量有关。

示例7

本示例包括如示例6所述的要素,其中,所述转换器逻辑进一步用于设定所述of区域的存储器访问权限以防止读取、写入和执行访问。

示例8

本示例包括如示例6所述的要素,其中,所述uf区域对应于主机内核空间。

示例9

本示例包括根据示例1至3中任一项所述的要素,其中,所述访客isa的原生字长为32位,并且所述主机isa的原生字长为64位。

示例10

本示例包括如示例9所述的要素,其中,所述访客isa对应于armv7isa,并且所述主机isa对应于x86-64isa。

示例11

本示例包括根据示例1至3中任一项所述的要素,其中,所述转换器逻辑被包括在虚拟机(vm)中。

示例12

本示例包括根据示例1至3中任一项所述的要素,其中,所述转换器逻辑被包括在动态编译器和静态编译器中的至少一者中。

示例13

本示例包括根据示例1至3中任一项所述的要素,其中,所述最大偏移量为4096。

示例14

根据本示例,提供了一种方法。所述方法包括:由转换器逻辑响应于接收到访客存储器访问指令而判定偏移量是否为常数以及所述偏移量是否大于零且小于最大偏移量,所述访客存储器访问指令包含基址加上或减去所述偏移量。所述最大偏移量与主机指令集架构(isa)和访客isa中的至少一者有关。

示例15

本示例包括如示例14所述的要素,并且进一步包括:如果所述偏移量是常数并且所述偏移量大于零且小于所述最大偏移量,则由所述转换器逻辑将所述基址加上或减去所述偏移量作为主机地址计算进行转换。

示例16

本示例包括如示例14所述的要素,并且进一步包括:如果是所述偏移量不是常数和/或所述偏移量不大于零且小于所述最大偏移量两种情况中的至少一种,则由所述转换器逻辑将地址控制前缀添加到相应主机存储器访问指令;以及由所述转换器逻辑将所述基址加上或减去所述偏移量作为访客地址计算进行转换。

示例17

本示例包括如示例14所述的要素,并且进一步包括:由所述转换器逻辑将所述访客存储器访问指令从源isa转换为目标isa。

示例18

本示例包括如示例14所述的要素,其中,所述访客isa的原生字长小于所述主机isa的原生字长,所述访客存储器访问指令与所述访客isa有关。

示例19

本示例包括如示例14所述的要素,并且进一步包括:由所述转换器逻辑限定存储器中的上溢(of)区域和下溢(uf)区域,所述of区域和所述uf区域与所述最大偏移量有关。

示例20

本示例包括如示例19所述的要素,并且进一步包括:由所述转换器逻辑设定所述of区域的存储器访问权限以防止读取、写入和执行访问。

示例21

本示例包括如示例19所述的要素,其中,所述uf区域对应于主机内核空间。

示例22

本示例包括如示例14所述的要素,其中,所述访客isa的原生字长为32位,并且所述主机isa的原生字长为64位。

示例23

本示例包括如示例22所述的要素,其中,所述访客isa对应于armv7isa,并且所述主机isa对应于x86-64isa。

示例24

本示例包括如示例14所述的要素,其中,所述转换器逻辑被包括在虚拟机(vm)中。

示例25

本示例包括如示例14所述的要素,其中,所述转换器逻辑被包括在动态编译器和静态编译器中的至少一者中。

示例26

本示例包括如示例14所述的要素,其中,所述最大偏移量为4096。

示例27

根据本示例,提供了一种设备。所述设备包括计算机可读存储设备,所述计算机可读存储设备具有存储在其上的指令,所述指令在由一个或多个处理器执行时引起包括以下各项的操作:响应于接收到访客存储器访问指令而判定偏移量是否为常数以及所述偏移量是否大于零且小于最大偏移量,所述访客存储器访问指令包含基址加上或减去所述偏移量,所述最大偏移量与主机指令集架构(isa)和访客isa中的至少一者有关。

示例28

本示例包括如示例27所述的要素,其中,所述指令在由一个或多个处理器执行时引起包括以下各项的附加操作:如果所述偏移量是常数并且所述偏移量大于零且小于所述最大偏移量,则将所述基址加上或减去所述偏移量作为主机地址计算进行转换。

示例29

本示例包括如示例27所述的要素,其中,所述指令在由一个或多个处理器执行时引起包括以下各项的附加操作:如果是所述偏移量不是常数和/或所述偏移量不大于零且小于所述最大偏移量两种情况中的至少一种,则将地址控制前缀添加到相应主机存储器访问指令;以及将所述基址加上或减去所述偏移量作为访客地址计算进行转换。

示例30

本示例包括根据示例27至29中任一项所述的要素,其中,所述指令在由一个或多个处理器执行时引起包括以下各项的附加操作:将所述访客存储器访问指令从源isa转换为目标isa。

示例31

本示例包括根据示例27至29中任一项所述的要素,其中,所述访客isa的原生字长小于所述主机isa的原生字长,所述访客存储器访问指令与所述访客isa有关。

示例32

本示例包括根据示例27至29中任一项所述的要素,其中,所述指令在由一个或多个处理器执行时引起包括以下各项的附加操作:限定存储器中的上溢(of)区域和下溢(uf)区域,所述of区域和所述uf区域与所述最大偏移量有关。

示例33

本示例包括如示例32所述的要素,其中,所述指令在由一个或多个处理器执行时引起包括以下各项的附加操作:设定所述of区域的存储器访问权限以防止读取、写入和执行访问。

示例34

本示例包括如示例32所述的要素,其中,所述uf区域对应于主机内核空间。

示例35

本示例包括根据示例27至29中任一项所述的要素,其中,所述访客isa的原生字长为32位,并且所述主机isa的原生字长为64位。

示例36

本示例包括如示例35所述的要素,其中,所述访客isa对应于armv7isa,并且所述主机isa对应于x86-64isa。

示例37

本示例包括根据示例27至29中任一项所述的要素,其中,所述转换器逻辑被包括在虚拟机(vm)中。

示例38

本示例包括根据示例27至29中任一项所述的要素,其中,所述转换器逻辑被包括在动态编译器和静态编译器中的至少一者中。

示例39

本示例包括根据示例27至29中任一项所述的要素,其中,所述最大偏移量为4096。

示例40

根据本示例,提供了一种设备。所述设备包括:用于由转换器逻辑响应于接收到访客存储器访问指令而判定偏移量是否为常数以及所述偏移量是否大于零且小于最大偏移量的装置,所述访客存储器访问指令包含基址加上或减去所述偏移量。所述最大偏移量与主机指令集架构(isa)和访客isa中的至少一者有关。

示例41

本示例包括如示例40所述的要素,并且进一步包括:用于如果所述偏移量是常数并且所述偏移量大于零且小于所述最大偏移量则由所述转换器逻辑将所述基址加上或减去所述偏移量作为主机地址计算进行转换的装置。

示例42

本示例包括如示例40所述的要素,并且进一步包括:用于如果是所述偏移量不是常数和/或所述偏移量不大于零且小于所述最大偏移量两种情况中的至少一种则由所述转换器逻辑将地址控制前缀添加到相应主机存储器访问指令的装置;以及用于由所述转换器逻辑将所述基址加上或减去所述偏移量作为访客地址计算进行转换的装置。

示例43

本示例包括根据示例40至42中任一项所述的要素,并且进一步包括:用于由所述转换器逻辑将所述访客存储器访问指令从源isa转换为目标isa的装置。

示例44

本示例包括根据示例40至42中任一项所述的要素,其中,所述访客isa的原生字长小于所述主机isa的原生字长,所述访客存储器访问指令与所述访客isa有关。

示例45

本示例包括根据示例40至42中任一项所述的要素,并且进一步包括:用于由所述转换器逻辑限定存储器中的上溢(of)区域和下溢(uf)区域的装置,所述of区域和所述uf区域与所述最大偏移量有关。

示例46

本示例包括如示例45所述的要素,并且进一步包括:用于由所述转换器逻辑设定所述of区域的存储器访问权限以防止读取、写入和执行访问的装置。示例47

本示例包括如示例45所述的要素,其中,所述uf区域对应于主机内核空间。

示例48

本示例包括根据示例40至42中任一项所述的要素,其中,所述访客isa的原生字长为32位,并且所述主机isa的原生字长为64位。

示例49

本示例包括如示例48所述的要素,其中,所述访客isa对应于armv7isa,并且所述主机isa对应于x86-64isa。

示例50

本示例包括根据示例40至42中任一项所述的要素,其中,所述转换器逻辑被包括在虚拟机(vm)中。

示例51

本示例包括根据示例40至42中任一项所述的要素,其中,所述转换器逻辑被包括在动态编译器和静态编译器中的至少一者中。

示例52

本示例包括根据示例40至42中任一项所述的要素,其中,所述最大偏移量为4096。

示例53

本示例包括根据示例1至3中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小和预留的访客内核的大小中的最小值。

示例54

本示例包括根据示例1至3中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小、预留的访客内核的大小、主机内核空间的大小、以及所创建的of(上溢)区域的大小中的最小值。

示例55

本示例包括根据示例1至3中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址加上所述偏移量,并且所述最大偏移量对应于小于或等于访客内核空间的大小和主机内核空间的大小中的最小值的第一最大偏移量。

示例56

本示例包括根据示例1至3中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址减去所述偏移量,并且所述最大偏移量对应于小于或等于预留的访客内核的大小和所创建的of(上溢)区域的大小中的最小值的第二最大偏移量。

示例57

本示例包括如示例6所述的要素,其中,所述of区域的大小被配置用于限制由所述of区域占据的主机存储器空间的量。

示例58

本示例包括如示例14所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小和预留的访客内核的大小中的最小值。

示例59

本示例包括如示例14所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小、预留的访客内核的大小、主机内核空间的大小、以及所创建的of(上溢)区域的大小中的最小值。

示例60

本示例包括如示例14所述的要素,其中,所述访客存储器访问指令包含所述基址加上所述偏移量,并且所述最大偏移量对应于小于或等于访客内核空间的大小和主机内核空间的大小中的最小值的第一最大偏移量。

示例61

本示例包括如示例14所述的要素,其中,所述访客存储器访问指令包含所述基址减去所述偏移量,并且所述最大偏移量对应于小于或等于预留的访客内核的大小和所创建的of(上溢)区域的大小中的最小值的第二最大偏移量。示例62

本示例包括如示例19所述的要素,其中,所述of区域的大小被配置用于限制由所述of区域占据的主机存储器空间的量。

示例63

本示例包括根据示例27至29中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小和预留的访客内核的大小中的最小值。

示例64

本示例包括根据示例27至29中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小、预留的访客内核的大小、主机内核空间的大小、以及所创建的of(上溢)区域的大小中的最小值。

示例65

本示例包括根据示例27至29中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址加上所述偏移量,并且所述最大偏移量对应于小于或等于访客内核空间的大小和主机内核空间的大小中的最小值的第一最大偏移量。

示例66

本示例包括根据示例27至29中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址减去所述偏移量,并且所述最大偏移量对应于小于或等于预留的访客内核的大小和所创建的of(上溢)区域的大小中的最小值的第二最大偏移量。

示例67

本示例包括如示例32所述的要素,其中,所述of区域的大小被配置用于限制由所述of区域占据的主机存储器空间的量。

示例68

本示例包括根据示例40至42中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小和预留的访客内核的大小中的最小值。

示例69

本示例包括根据示例40至42中任一项所述的要素,其中,所述最大偏移量小于或等于访客内核空间的大小、预留的访客内核的大小、主机内核空间的大小、以及所创建的of(上溢)区域的大小中的最小值。

示例70

本示例包括根据示例40至42中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址加上所述偏移量,并且所述最大偏移量对应于小于或等于访客内核空间的大小和主机内核空间的大小中的最小值的第一最大偏移量。

示例71

本示例包括根据示例40至42中任一项所述的要素,其中,所述访客存储器访问指令包含所述基址减去所述偏移量,并且所述最大偏移量对应于小于或等于预留的访客内核的大小和所创建的of(上溢)区域的大小中的最小值的第二最大偏移量。

示例72

本示例包括如示例45所述的要素,其中,所述of区域的大小被配置用于限制由所述of区域占据的主机存储器空间的量。

示例73

一种计算机可读存储设备,具有存储在其上的指令,所述指令在由一个或多个处理器执行时引起包括以下各项的操作:根据权利要求14至26和58至62中任一项所述的方法。

示例74

一种系统,包括被安排用于执行如权利要求14至26和58至62中任一项所述的方法的至少一个设备。

示例75

一种设备,包括用于执行如权利要求14至26和58至62中任一项所述的方法的装置。

本文已采用的术语和表达用作对术语进行描述而非进行限制,并且在使用这种术语和表达时不旨在排除所示且所描述的特征(或其部分)的任何等效物,并且认识到在权利要求书范围内的各种修改是有可能的。因此,权利要求书旨在涵盖所有这种等效物。

在此已经描述了各种特征、方面和实施例。如将由本领域技术人员理解的,特征、方面和实施例易受与彼此的组合以及受变化和修改的影响。因此,本披露应被认为包含这种组合、变化和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1