专利名称:用于检测和处理未对齐数据访问的设备、系统和方法
背景技术:
在计算平台领域中,软件应用可能最初被写为由第一计算平台执行,所述第一计算平台例如基于32位的计算平台(例如Intel(RTM)体系结构32(IA-32))。在一些情况下,可能通过使用适当的硬件和/或软件来翻译和执行该软件应用,在第二计算平台上执行所述软件应用,所述第二计算平台例如基于64位的计算平台(例如Intel(RTM)Itanium(RTM)处理器)。
在第二计算平台上软件应用的翻译和执行期间,未对齐数据访问以及与数据未对齐相关联的问题可能会出现。数据未对齐可以包括,例如,数据项驻留在可能不被处理器有效访问的存储器地址上。当第二计算平台试图访问未对齐数据项时,可能需要不期望出现的开销(overhead),例如额外的处理周期或处理时间。在一些情况下,在第二计算平台上软件应用的执行可能使现有的性能问题增加并更严重,例如当软件应用执行于第一(也即最初的)计算平台时也会经历的由于数据未对齐而产生的问题。这可能显著降低执行速度,并且可能显著增加处理时间和/或处理周期数。此外,在一些情况下,未对齐数据访问事件可能被应用或操作系统,例如运行于第二计算平台的操作系统视为错误,并且可能因此引起应用提早终止(termination)或者其他不期望出现的结果。
通过使用相对长的代码序列来替换可能导致未对齐数据访问事件的每条指令,数据未对齐访问的问题可以得到部分减轻。但是,用于防止所有数据未对齐访问的问题的如此长的代码序列的大量(bulk)应用可能是低效率的并且可能导致巨大的开销,例如额外的处理周期和/或处理时间。
附图简要说明本说明书的结论部分特别指出并清楚要求保护作为本发明的主题。然而,当与附图一起阅读时,通过参考以下详细描述,本发明关于操作的组织和方法,以及本发明的特征和优点可以得到最好的理解,其中
图1是根据本发明的一些实施方案,能够检测和处理数据未对齐的计算平台的示意图。
图2是根据本发明的一些实施方案,检测和处理数据未对齐的方法的示意性流程图。
应该可以意识到,为了描述的简单和清晰,图中所示要素并不必要按照比例绘制。例如,为了清晰起见,一些要素的尺寸可能相对于其他要素被放大了。此外,在被认为适当的地方,在图中重复了标号,用来指示对应的或类似的要素。
发明详细描述在以下的详细描述中,阐述了很多具体的细节,以提供对本发明的更透彻的理解。然而,本领域的普通技术人员将理解,无需使用这些具体的细节可以实现本发明。此外,公知的方法、过程、组件、单元和/或电路没有详细描述,以免模糊本发明。
图1根据本发明的示例性实施方案示意性地描述了能检测和处理数据未对齐的计算平台110。例如,计算平台110可以用于数据处理或各种软件应用的执行,并且可以根据本发明的一些实施方案实现未对齐数据访问的检测和/或处理。计算平台110可以包括计算设备。例如,计算平台110可以包括个人计算机、桌面型计算机、移动计算机、膝上型计算机、笔记本式计算机、终端、工作站、服务器计算机、个人数字助理(PDA)设备、平板计算机、专门的或专用的计算设备、网络设备等设备的至少一部分。计算平台110可以利用硬件组件和/或软件组件的任何适当的组合来实现。
在图1所示的实施例中,计算平台110可以包括,例如一个或更多个处理器141、一个或更多个存储器(memory)单元142、一个或更多个储存(storage)单元143、输出单元144和输入单元145。计算平台110可以包括其他适当的本领域内众所周知的组件或组件集,所述组件或组件集可以以可操作的方式与计算平台110的一个或更多个组件相关联。
处理器141可以包括,例如中央处理单元(CPU)、数字信号处理器(DSP)、一个或更多个控制器或者任何适当的专用和/或通用和/或多用处理器或微处理器或控制器。存储器单元142可以包括,例如随机访问存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步DRAM(SD-RAM)或其他适当的存储器单元。储存单元143可以包括,例如硬盘驱动器、软盘驱动器、致密盘(CD)驱动器、CD-ROM驱动器或其他适当的可移动的或不可移动的储存单元或存储器模块。输出单元144可以包括,例如一个或更多个能够连接到监视器或者与监视器通信的卡、适配器、连接器和/或组件。输入单元145可以包括,例如一个或更多个能够连接到键盘、鼠标、触摸板或与键盘、鼠标、触摸板通信的卡、适配器、连接器和/或组件。存储器单元142、储存单元143、输出单元144和/或输入单元145可以以可操作的方式与处理器141相关联。注意到处理器141、存储器单元142、储存单元143、输出单元144和/或输入单元145可以包括其他适当的本领域内周知的组件和/或实现。
在一些实施方案中,软件可以存储在例如储存单元143或存储器单元142中,并且可以用处理器141来执行。例如,这样的软件可以包括一个或更多个操作系统,例如MicrosoftWindows、Linux、Unix、Apple OS、Solaris、Sun-OS、HP-UX或其他适当的操作系统。所述软件还可以包括一个或更多个软件应用、一个或更多个驱动、编译器、解释器、仿真器、执行层、软件环境、受管理的软件环境、翻译层和/或各种其他适当的软件组件。所述软件可以包括,例如软件组件(software component)、软件应用和/或实现或使用根据本发明的实施方案的一种或更多种方法的软件层,和/或其他适当的软件组件。在一些实施方案中,所述软件和/或存储器单元142可以包括一项或更多项未对齐的数据项,例如驻留在存储器单元142中可能不被处理器141有效访问的存储器地址上的数据项。
在一些实施方案中,计算平台110可以选择性地包括可以利用软件组件和/或硬件组件的任何适当的组合形式实现的翻译器150。例如,在一个实施方案中,翻译器150可以包括存储在存储器单元142和/或储存单元143中可利用处理器141来运行或执行的软件和/或指令。在一些实施方案中,翻译器150可以将软件应用或一条或更多条指令从适合于第一计算平台的第一格式翻译和/或转换到适合于第二计算平台(例如适合于计算平台110)的第二格式。在一个实施方案中,翻译器150可以例如利用专用的软件层,例如执行层来实现。在一些实施方案中,翻译器150可以包括一个或更多个模块或组件(未示出),以根据本发明的实施方案执行一个或更多个检测和处理未对齐数据访问的操作,所述一个或更多个模块或组件例如检测模块、插装(instrumentation)模块、轻插装模块、重插装模块、翻译模块、重译模块、优化模块、代码修改模块、代码分类模块等。
在一些实施方案中,如下所述,翻译器150可以检测和/或处理数据未对齐。例如,根据本发明的一些实施方案,由翻译器150执行或者根据翻译器150执行的指令或操作可以反映已修改的翻译处理,该处理可以包括如下所述由检测和处理数据未对齐的示例性方法产生的修改。例如,在本发明的一些实施方案中,如下详细所述,翻译器150可以实现翻译方法或过程(procedure),所述方法或过程考虑与数据未对齐相关的参数。
图2根据本发明的一些实施方案示意性地描述了检测和处理数据未对齐的方法的流程图。图2的方法,以及根据本发明的其他实施方案的方法,可以和例如图1的计算平台110一起被翻译器150、处理器141、被计算平台110执行的软件或指令使用,和/或与各种其他适当的计算平台、设备、装置和/或系统一起使用。在一些实施方案中,图2的所述方法可以被编译器、解释器和/或仿真器使用,所述编译器、解释器和/或仿真器可以使用适当的软件组件和/或硬件组件来实现。
注意到在此使用的短语“块代码”和/或“代码块”可以包括,例如一条或更多条指令或指令集。例如,代码块可以包括五条指令或20条指令等等。
根据本发明的一些实施方案,“热块(hot block)”可以包括,例如被标识和/或分类为优化或进行进一步优化操作的候选的代码块。例如,在软件应用的执行期间可以被执行多次(例如,大量次数)的代码块可以被标识和/或分类为热块。其他适当的标准或条件可以用于标识、分类和/或定义热块。
根据本发明的一些实施方案,“冷块(cold block)”可以包括,例如没有被标识和/或分类为热块的代码块。例如,冷块可以包括在软件应用的执行期间只可以执行一次或少量次数的代码块。注意到在一些实施方案中,例如在最初的翻译操作中代码块可以被标识和/或分类为冷块,并且可以在进一步的翻译和/或优化操作中被重新分类为热块。
如方框210所示,所述方法可以将软件应用的代码块从适合于第一计算平台的第一格式翻译或转换到适合于第二计算平台的第二格式。第一格式的代码块可以被称为“原始代码块”,并且第二格式的代码块可以被称为“译过(translated)代码块”。例如在一些实施方案中,代码块可以从Intel(RTM)体系结构32(IA-32)被译为Intel(RTM)体系结构64(IA-64)。例如,翻译可以使用翻译器150来执行。在一个实施方案中,所述翻译可以使用编译器软件或解释器软件来实现。例如,翻译可以基本上在执行时或接近执行时动态地和/或实时地执行。在一些实施方案中,翻译可以提前执行,例如在执行时刻之前。
如在此详细描述的,本发明的方法的实施方案可以包括插装操作。根据本发明的一些实施方案,插装可以包括,例如给某些代码块或某条指令添加一条或更多条指令,以追踪、检查、调试和/或分析代码块或指令的行为或操作。
使用在这里,短语“轻插装”可以包括,例如可以在代码块级被执行的插装。例如,在一个实施方案中,“轻插装”可以包括可以检测代码块的执行是否可以引起未对齐数据访问,或可以检测代码块的执行是否可以导致未对齐数据访问事件的插装。在一些实施方案中,执行“轻插装”可以导致,例如确定给定代码块的执行是否包括未对齐数据访问事件。
使用在这里,短语“重插装”可以包括,例如可以在指令级被执行的插装。例如,在一个实施方案中,“重插装”可以包括可以检测指令块的执行是否可以引起未对齐数据访问,或可以检测指令块的执行是否可以导致未对齐数据访问事件的插装。在替换性的实施方案中,“重插装”可以包括,例如可标识一条或更多条指令的插装,所述指令的执行可以导致未对齐数据访问。在一些实施方案中,执行“重插装”可以导致,例如确定其执行可以导致未对齐数据访问事件的指令的位置。
在一些实施方案中,使用在这里,短语“检测未对齐数据访问”可以包括,例如检测译过代码块的执行或后续执行包括未对齐数据访问或对未对齐数据项的访问。在一些实施方案中,短语“检测未对齐数据访问”可以可附加地或可替换地包括,例如检测被执行时可以导致未对齐数据访问或对未对齐数据项的访问的指令的位置。
在一些实施方案中,使用在这里,短语“处理未对齐数据访问”、“避免未对齐数据访问”和/或“阻止未对齐数据访问”可以包括,例如修改译过代码块以创建已修改的译过代码块,或重译原始代码块以创建已修改的译过代码块。在一些实施方案中,相对于在未修改的译过代码块执行期间对未对齐数据的相应访问,当已修改的译过代码块执行时可以更有效地、更快地、以更短的时间和/或用更少量的处理周期访问未对齐数据项。例如,在一些实施方案中,“处理未对齐数据访问”、“避免未对齐数据访问”和/或“阻止未对齐数据访问”可以包括分部分,例如分成2部分、4部分、8部分、16部分或其他适当的部分数,用多条访问指令、用多条加载指令、用专用指令序列(例如在此详细描述的代码1(Code 1))或以其他根据本发明的实施方案的适当的方式,分多个访问阶段来访问未对齐数据项。
注意到在一些实施方案中,“处理未对齐数据访问”、“避免未对齐数据访问”和/或“阻止未对齐数据访问”可以包括,例如其他适当的处理、避免、阻止、优化和/或消除数据未对齐访问事件的方式。例如,在一些实施方案中,“处理未对齐数据访问”、“避免未对齐数据访问”和/或“阻止未对齐数据访问”可以包括例如通过对齐数据项、将数据项从第一存储位置移动到第二存储位置、将数据项从第一存储位置拷贝到第二存储位置或其他适当的方式来消除数据项的未对齐。
如方框220所示,所述方法可以执行对译过代码块的轻插装或分析。在一些实施方案中,基本上所有或至少一些其执行可能需要未对齐数据访问的指令可以被轻插装。轻插装可以包括,例如一条或更多条指令的修改,以便已修改的指令可以指示预定义条件的发生或何时满足了预定义标准。例如在一些实施方案中,如果未对齐数据访问事件在译过冷块中被检测到,那么可以产生信号。例如在一个实施方案中,信号或指示可以由翻译器150中的检测模块提供给翻译器150中的翻译模块。
在一些实施方案中,方框220的轻插装的目的或结果可以包括,例如检测译过代码块的执行是否可以引发未对齐数据访问事件,以便如果需要的话进一步的分析和优化操作得以应用来处理、消除、避免或阻止未对齐数据访问事件。如方框230所示,所述方法可以检查在译过代码块中是否曾检测到未对齐数据访问事件。如果检查结果是否定的,那么如指向方框270的箭头235所指示,译过代码块可以被保存或使用。如果检查结果是否定的,则如方框240以及前进方向的方框所示的,译过代码块可以被进一步的检查、分析和/或优化。
如方框240所示,进一步的检查、分析和优化可以包括译过代码块的重插装或分析。在一些实施方案中,基本上所有其执行可能包括未对齐数据访问的指令可以被重插装。重插装可以包括,例如修改一条或更多条指令,以便一旦遇到未对齐数据访问事件,可以提供和/或记录(register)关于未对齐数据访问的信息。在一些实施方案中,所述信息可以包括,例如对于引起未对齐数据访问的译过代码块中的指令或多条指令的指示。例如,所述信息可以包括对未对齐数据的类型或属性的指示,如未对齐的粒度(granularity)。例如在一个实施方案中,导致未对齐数据访问事件的8位数据访问可以被重插装以指示未对齐数据访问具有1字节(byte)的粒度或4字节的粒度。注意到可以标识、检测、记录和/或分析未对齐数据访问的各种其他的属性、特性、特征和/或特征。
如方框250所示,方框240中的重插装可用于在指令级检测和处理数据访问未对齐。在一些实施方案中,一些或所有或基本上所有已被检测出导致未对齐数据访问的指令可以被重建、重译、修改、优化和/或替换,以处理、消除、避免和/或阻止数据访问未对齐,从而允许对未对齐数据项的相对更有效的访问,允许对未对齐数据项的相对更快的访问,或允许用可替换或专门的方式来访问未对齐数据项。
在一个实施方案中,如方框250所示的检测和处理操作可以在热块的翻译期间执行。例如,热块可以被标识,并且方框250所示的检测和处理操作可以在一个或更多个冷块中执行,所述一个或更多个冷块可能被包括在所述热块中。
在一些实施方案中,方框250所示的检测和处理操作可以例如用如下的伪代码来执行//测试位0以观察是否地址是2字节对齐//适当地设置判断语p.mis和p.al//将使用p.mis和p.al来断定下面的指令tbit p.mis,p.al=r.addr,0//如果对齐2字节加载(p.al)ld2r.val=[r.addr]//如果未对齐,分别加载每一个字节(p.mis)ld1 r.val=[r.addr](p.mis)add r.addrH=1,r.addr(p.mis)ld1 r.valH=[r.addrH]//合并分别加载的字节(p.mis)dep r.val=r.valH,r.val,8,8代码1注意到代码1仅仅是以示例性目的被示出,并且本发明的实施方案在此方面不受限制;根据本发明的实施方案,其他适当的指令、指令集、操作、伪码或算法可用来补充代码1或取代代码1。
例如在本发明的一些实施方案中,方框250所示的检测和处理操作可以使用可替换的代码,所述代码可以包括各种与代码1相关的改变。例如在一些实施方案中,一个或更多个更早的未对齐数据访问事件的检测结果可以被记录和/或被追踪以增强和/或免除一个或几个随之发生的对未对齐数据访问事件的检测。例如在一个实施方案中,例如在分析热块的期间在其上检测到未对齐数据访问的存储器地址的位置可以被记录和/或追踪。记录和追踪可以例如使用适当的列表、追踪列表、堆栈、查找表、数组、数据库、变量、寄存器、联合(union)或任何其他适当的方式来执行。先前检测结果的记录、追踪和/或存储可以例如用处理器141、存储器单元142、储存单元143、翻译器150、利用处理器141来执行的适当的软件和/或其他适当的计算平台110的组件来执行。
方框250所示的检测和处理操作中,一些实施方案可以,例如,在第一指令上分析和/或执行插装。因此,可以检测到,例如由第一指令访问第一存储器地址可以导致未对齐数据访问。在这种情况下,第一存储器地址的位置可以例如使用可存储在例如存储器单元142和/或储存单元143中的记录或追踪列表而被记录和/或追踪。当第二指令需要访问第二存储器地址时,为了检测未对齐数据,本发明的方法可以例如使用可存储在存储器单元142和/或储存单元143中的追踪列表或记录来检查第二存储器地址的位置与第一存储器地址的位置是否一致。例如,如果对第一指令的分析已经标识了第一存储器地址是引起未对齐数据访问的原因,则肯定的检查结果可以免除分析和/或插装第二指令的需要。注意到在一些实施方案中,为了检测未对齐数据,不同的存储器地址可以是一致的;例如,如果第一和第二存储器地址的差别或距离是N字节,那么出于数据对齐检测的目的,考虑到N字节的未对齐量和/或K字节的未对齐量(其中K是N的因子),第一和第二存储器地址可以是一致的。例如在一个实施方案中,为了达到检测8字节数据未对齐量的目的,或达到检测4或2字节数据未对齐量的目的,存储器地址L和存储器地址L+8可以是一致的。
类似地,在一些实施方案中,在方框250所示的检测和处理操作中,在一个或更多个对未对齐数据访问的检测中被使用的参数、特征、属性、变量、特性、结果、检查和/或计算中的一些或全部可以用于或重用于后续的检测。例如,代码1中的两字节加载的实施例可以使用一个或更多个断定(predicate),所述断定在一个或更多个先前的对未对齐数据访问的检测和分析中被设置、确定和/或计算。
在一些实施方案中,执行方框250所示的检测和处理操作可以包括,例如,在检测到未对齐数据访问时使用代码序列或指令集来执行数据访问;所述代码序列或指令集可以相对长或包括相对大数量的指令或操作。在一些实施方案中,这样的代码序列和指令集可以被移动到软件应用的适当位置。例如,在一个实施方案中,调度器进程(process)可以将这些指令中的一些或全部移动到译过代码块的外部位置或远程(remote)位置,例如作为子例程(subroutine)、过程(procedure)、函数等。在执行期间中,译过代码块中的指令可以一直被执行直到到达了“分支(branch out)”指令,在该点上可以继续执行外部指令或远程指令。外部或远端指令可以包括最后的指令,所述最后的指令执行可以导致译过代码块从它的“分支”的点继续执行到外部或远程指令。
如方框260所示,一些实施方案可以选择性地进一步优化或分析译过代码块,例如,以检测和处理未对齐数据访问,所述未对齐数据访问可能在上述优化与分析之后或热块被翻译过之后出现。例如,在一个实施方案中,未对齐数据访问可以在相对地优化过的译过代码产生之后出现。在一些实施方案中,该结果可以例如使用进一步的优化操作来排除、处理、避免或减轻,所述优化操作可以连同方框250所示的检测和处理操作一起进行,或在另外适当的时间进行。例如,在方框250所示的操作期间,可以检测到虽然指令没有产生或引起未对齐数据访问事件,但所述指令是导致执行期间未对齐数据访问的潜在的候选者。该指令可以称之为“候选指令”。可以例如相对于一个或更多个适当的标准或条件,例如指令类型、指令导致未对齐数据访问的估计概率、或检测到对指令导致未对齐数据访问的大概率,执行对候选指令的标识、检测、分类、记录和/或评价。
根据本发明的一些实施方案,方框260所示的操作可以选择性地包括,例如一旦检测到候选指令就针对该候选指令执行插装。如果利用所使用的插装检测到未对齐数据访问,那么译过代码块可以被丢弃。另外,所述方法可以记录这样的指示当原始代码块被翻译时,基本上所有原始代码块中的候选指令可以以一种检测和处理未对齐数据访问的方式(例如采用代码1或任何其他适当的代码序列)被翻译。被记录的指示可以存储在例如翻译器150、存储器单元142和/或储存单元143中。在一些实施方案中,所述指示不仅仅与候选指令有关,还与基本上所有的具有候选指令类型的指令有关。一旦原始代码块翻译完,被记录的指示可以被检测或追踪,从而可以以检测和处理未对齐数据访问的方式(例如使用代码1或任何其他适当的代码序列)来翻译原始代码块中基本上所有的候选指令或具有候选指令类型的所有指令。
在一些实施方案中,上述的一个或更多个操作,例如方框240中的数据未对齐的检测和处理操作、参考方框240所述的代码修改、或方框260中的优化操作,可以通过一个或更多个适当的软件和/或硬件组件执行。例如,在一些实施方案中,代码修改可以由翻译器150或由翻译器150的外部模块或组件来执行。在一个实施方案中,代码的修改可以通过例如修改翻译器150或修改其修改会导致代码修改的另外的适当的组件或模块来执行。类似地,数据未对齐的检测和/或处理可以由翻译器150、位于翻译器150内部或外部的一个或更多个模块来执行。
在本发明的一些实施方案中,上述的一个或更多个操作,例如方框210中的翻译操作、方框220中的轻插装、方框230中的数据未对齐检查、方框240中的重插装、方框250中的数据未对齐检测和处理操作、方框260中的优化操作或其他适当的操作可以被重复执行,或执行不止一次,或以不同的操作顺序执行。此外,在一些实施方案中,作为这些操作中的一个或更多个的执行的结果,译过代码块可以被丢弃、删除、替换、检验(inspect)、分析、修改、优化、重建、再生或重译。如方框270所述,在执行了一个或更多个或所有上述操作之后,或执行一个或更多个上述操作的几次迭代或重复之后,作为结果的译过代码块可以被保存和使用,或被记录作为可以被保存和使用的译过代码块。
本发明的实施方案可以允许各种益处。例如,在一些实施方案中,数据未对齐检测和处理可以显著减少处理时间和/或处理次数,或可以显著改善性能。在一个实施方案中,例如在没有数据未对齐检测和处理情况下需要1236秒来完成的工作量(workload),根据本发明的实施方案使用数据未对齐检测和处理可以只需大概133秒来完成。除了上述的益处或与上述益处不同,本发明的一些实施方案可以允许各种其他的益处。
本发明的一些实施方案例如可以使用可以存储指令或指令集的机器可读介质或制品来实现,如果所述指令或指令集被例如计算平台110、处理器141或其他适当的机器的机器执行,导致该机器执行根据本发明的实施方案的方法和/或操作。这样的机器可以包括,例如任何适当的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,并且可以使用硬件和/或软件的任何适当组合来实现。机器可读介质或制品可以包括,例如任何适当类型的存储器单元(例如存储器单元142)、存储器设备、存储器制品、存储器介质、存储设备、存储制品、存储介质和/或储存单元(例如储存单元143),例如存储器、可移去或不可移去的介质、可擦除或不可擦除的介质、可写或可重写的介质、数字或模拟介质、硬盘、软盘、致密盘只读存储器(CD-ROM)、可记录致密盘(CD-R)、可重写致密盘(CD-RW)、光盘、磁介质、各种类型的数字多用途盘(DVD)、磁带、卡带等。指令可以包括任何适当类型的代码,例如源代码、编译后的代码、解释后的代码、可执行代码、静态代码、动态代码等,并且可以使用任何适当的高级、低级、面向对象的、可视的(visual)、经过编译的和/或经过解释的编程语言,例如C、C++、Java、BASIC、Pascal、Fortran、Cobol、汇编语言、机器码等,来实现所述指令。
本发明的一些实施方案可以由软件、硬件、或者适合于特定应用或根据特定的设计需求的软件和/或硬件的任何组合来实现。本发明的实施方案可以包括单元和/或子单元,所述单元和/或子单元可以彼此分开或完全或部分组合在一起,并且可以使用本领域众所周知的专用、多用途或通用处理器或设备来实现。本发明的一些方案可以包括缓冲区、寄存器、储存单元和/或存储器单元,用于短时或长期存储数据或者便于特定实施方案的操作。
虽然这里已经图示和描述了本发明的某些特征,但是本领域的技术人员将会想到很多修改、替换、改变和等同物。因此,应该理解,所附权利要求书想要覆盖所有这些修改和/或改变。
权利要求
1.一种方法,包括检测由从适合于第一计算平台的第一格式翻译到适合于第二计算平台的第二格式的代码块的执行导致的未对齐数据访问;以及根据所述未对齐数据访问来修改所述代码块。
2.如权利要求1所述的方法,其中检测操作包括执行所述代码块的插装,以检测是否所述代码块的执行导致了所述未对齐数据访问。
3.如权利要求2所述的方法,其中检测操作包括执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
4.如权利要求1所述的方法,其中检测操作包括执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
5.如权利要求1所述的方法,其中修改操作包括给所述代码块添加指令,以将所述代码块的执行分支到其执行用于处理所述未对齐数据访问的代码序列。
6.如权利要求1所述的方法,其中修改操作包括修改所述代码块,以处理所述代码块在后续执行中的未对齐数据访问。
7.如权利要求1所述的方法,还包括将所述代码块从所述第一格式翻译为所述第二格式。
8.如权利要求1所述的方法,其中检测操作包括检测从适合于基于32位的计算平台的格式翻译到适合于基于64位的计算平台的格式的代码块的执行导致的未对齐数据访问。
9.一种装置,包括处理器,所述处理器用于检测由从适合于第一计算平台的第一格式翻译到适合于第二计算平台的第二格式的代码块的执行导致的未对齐数据访问,并且用于根据所述未对齐数据访问来修改所述代码块。
10.如权利要求9所述的装置,其中所述处理器能够执行所述代码块的插装,以检测是否所述代码块的执行导致了所述未对齐数据访问。
11.如权利要求10所述的装置,其中所述处理器能够执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
12.如权利要求9所述的装置,其中所述处理器能够执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
13.如权利要求9所述的装置,其中所述处理器能够给所述代码块添加指令,以将所述代码块的执行分支到其执行处理所述未对齐数据访问的代码序列。
14.如权利要求9所述的装置,其中所述处理器能够修改所述代码块,以处理所述代码块在后续执行中的未对齐数据访问。
15.如权利要求9所述的装置,其中所述处理器能够在检测到所述未对齐数据访问之前将所述代码块从所述第一格式翻译为所述第二格式。
16.如权利要求9所述的装置,其中所述第一平台是基于32位的计算平台并且所述第二计算机体系结构是基于64位的计算平台。
17.一种计算平台,包括处理器,所述处理器用于检测由从适合于第一计算平台的第一格式翻译到适合于第二计算平台的第二格式的代码块的执行导致的未对齐数据访问,并且用于根据所述未对齐数据访问来修改所述代码块;以及可操作地与所述处理器相关联的动态随机访问存储器,所述动态随机访问存储器用于存储所述代码块的至少一部分。
18.如权利要求17所述的装置,其中所述处理器能够执行所述代码块的插装,以检测是否所述代码块的执行导致了所述未对齐数据访问。
19.如权利要求18所述的装置,其中所述处理器能够执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
20.如权利要求17所述的装置,其中所述处理器能够执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
21.一种其上存储有指令集的机器可读介质,如果所述指令被机器执行导致所述机器执行方法,所述方法包括检测由从适合于第一计算平台的第一格式翻译到适合于第二计算平台的第二格式的代码块的执行导致的未对齐数据访问;以及根据所述未对齐数据访问来修改所述代码块。
22.如权利要求21所述的机器可读介质,其中所述导致检测操作的指令导致执行所述代码块的插装,以检测是否所述代码块的执行导致所述未对齐数据访问。
23.如权利要求22所述的机器可读介质,其中所述导致检测操作的指令导致执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
24.如权利要求21所述的机器可读介质,其中所述导致检测操作的指令导致执行所述代码块中的至少一条指令的插装,以检测其执行导致了所述未对齐数据访问的指令的位置。
25.如权利要求21所述的机器可读介质,其中所述指令包括翻译器的至少一部分。
26.如权利要求21所述的机器可读介质,其中所述指令包括执行层的至少一部分。
27.如权利要求21所述的机器可读介质,其中所述指令包括操作系统的至少一部分。
28.如权利要求21所述的机器可读介质,其中所述指令包括编译器的至少一部分。
全文摘要
用于检测和处理未对齐数据访问的设备、系统和方法。例如,方法可以包括检测由从适合于第一计算平台的第一格式翻译到适合于第二计算平台的第二格式的代码块的执行导致的未对齐数据访问,以及根据所述未对齐数据访问来修改所述代码块。
文档编号G06F9/312GK1886727SQ200480035086
公开日2006年12月27日 申请日期2004年10月25日 优先权日2003年11月26日
发明者霍罗尔德·西奥多·德沃尔, 奥纳·埃茨恩, 陈建平 申请人:英特尔公司