CN103052942A - 对齐控制 - Google Patents
对齐控制 Download PDFInfo
- Publication number
- CN103052942A CN103052942A CN201180038097XA CN201180038097A CN103052942A CN 103052942 A CN103052942 A CN 103052942A CN 201180038097X A CN201180038097X A CN 201180038097XA CN 201180038097 A CN201180038097 A CN 201180038097A CN 103052942 A CN103052942 A CN 103052942A
- Authority
- CN
- China
- Prior art keywords
- alignment
- storehouse
- checked
- stack pointer
- pointer value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 34
- 238000013500 data storage Methods 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
数据处理系统(2)包括:堆栈指针寄存器(26、28、30、32),该堆栈指针寄存器存储用在对于堆栈数据储存装置(44、46、48、50)的堆栈存取操作中的堆栈指针值。被选择性地停用的堆栈对齐查核电路(36)可被提供,用以查核与堆栈存储器存取相关联的堆栈指针值的存储器地址对齐。堆栈对齐查核电路(36)的动作独立于就所有的存储器存取而执行的任何进一步的其他对齐查核。因此,可提供通用对齐查核电路(38),并可就任何的存储器存取对该通用对齐查核电路(38)独立地选择性停用。
Description
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及在数据处理系统内执行的存储器存取的存取对齐控制。
背景技术
为数据处理系统提供查核存储器存取对齐的机制是已知的。存储器存取(memory access)可以是不受限制的从而使得存储器内的任意个别的字节都可由任意大小的存储器存取来寻址,或存储器存取可以是对齐受限的从而使得仅可在存储器内进行利用诸如半字组、字组、双字组之类的边限对齐的存储器存取。一般而言,在提供高速存储器存取时存储器存取对齐要求的实施是有帮助的,例如宽数据总线可与不必容纳与数据总线宽度不对齐的存取的总线一同使用。然而,当操纵以下的压缩数据结构时,对仅对齐的存储器存取的要求是有问题的:该压缩数据结构中的被存取的数据元素本身可能未必具有与所施加的对齐限制对齐的边限。在一些情况中,所执行的指令可能需要数据存取的对齐,例如对于堆栈数据储存装置的一些读取-修正-写入指令。此外,一些应用二进制接口规定了存取对齐。
发明内容
鉴于一方面,本发明提供了一种用于处理数据的装置,该装置包括:处理电路,该处理电路响应于程序指令而执行数据处理操作;堆栈指针寄存器,该堆栈指针寄存器耦接至所述处理电路并且被配置为存储指示堆栈数据储存装置的存储器内的地址的堆栈指针值;堆栈对齐查核电路,该堆栈对齐查核电路耦接至所述处理电路和所述堆栈指针寄存器,并且被配置为响应指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行堆栈存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;对齐查核控制电路,该对齐查核控制电路耦接至所述堆栈对齐查核电路,并且响应于堆栈配置参数而独立于在进行存储器存取时执行的进一步的对齐查核,选择性地停用所述堆栈对齐查核电路。
本发明的技术认识到,适合于堆栈存储器存取的对齐限制可能并不适合于其他存储器存取(例如,并不涉及堆栈数据储存装置的存储器存取)。作为示例,未存储在堆栈数据储存装置内的数据结构可为压缩数据结构,其中对于该压缩数据结构来说对齐限制将是个问题,然而应用对齐限制于堆栈数据储存装置将有助于识别堆栈指针或堆栈数据储存装置的腐化(corruption)。本发明的技术认识到此情况,且提供了堆栈对齐查核电路的机制以查核堆栈存储器存取的对齐,其中堆栈对齐查核电路独立于在系统内执行的任何进一步的对齐查核(例如,在对堆栈存储器和非堆栈存储器两者的所有的存储器存取时执行的对齐查核)而被选择性地停用。因此,堆栈对齐查核可结合或可不结合独立控制的对于存储器存取的进一步的查核来执行。因此,可以对堆栈数据储存装置实施对齐,而不对通用存储器存取实施对齐。
将了解,进一步的对齐查核可采取多种不同的形式,例如不使用堆栈指针的对齐查核存储器存取。然而,有用的布置是这样的情况,其中进一步的对齐查核是在进行所有的存储器存取时执行的对齐查核(即,使用和不使用堆栈指针的存储器存取)。
将了解,堆栈存储器存取可以是对堆栈地址的顶部进行的读取(弹出)存取或写入(压入)存取,同时对于堆栈指针值的相应更新被执行。
除了被选择性停用的堆栈对齐查核电路以外,一些实施例还可额外地包括:用于检测任意存储器存取是否符合预定对齐条件的通用对齐查核电路。因此,尽管可以单独使用堆栈对齐查核电路,但该堆栈对齐查核电路也可有效地与通用对齐查核电路组合。通用对齐查核电路也可由对齐查核控制电路来控制,以使得该通用对齐查核电路可被选择性地停用。
所施加的对齐条件可改变。对齐条件可为:预定堆栈对齐条件是不加限制的,这相当于停用堆栈对齐查核电路。然而,当对齐条件是使得堆栈指针值为2N的整数倍时(其中,N是非零整数值,例如N为对应于64位和128位对齐的3或4中的一者),堆栈对齐查核电路更为有用。N的值和相应的对齐条件可在使用者控制下设定(例如软件控制)。
尽管本发明的技术可使用于包括单个堆栈指针的实施例中,但是该技术也可应用于包括多个堆栈指针的实施例中,其中每个堆栈指针存储相应的堆栈指针值并且受相应的堆栈配置参数的控制,其中该堆栈配置参数确定对于相关的堆栈指针的堆栈对齐查核是被停用还是被启用。这些不同的堆栈指针可与系统内的差异异常级(特权级)相关联。
鉴于另一方面,本发明提供了一种用于处理数据的装置,该装置包括:处理构件,该处理构件用于响应于程序指令而执行数据处理操作;堆栈指针构件,该堆栈指针构件用于存储堆栈指针值,所述堆栈指针构件耦接至所述处理构件,并且所述堆栈指针值指示堆栈数据储存装置的存储器内的地址;堆栈对齐查核构件,该堆栈对齐查核构件用于查核对齐,所述堆栈对齐查核构件耦接至所述处理构件和所述堆栈指针构件,并且被配置为响应指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;对齐查核控制构件,该对齐查核控制构件用于控制对齐查核,所述对齐查核控制构件耦接至所述堆栈对齐查核构件,并且响应于堆栈配置参数而独立于在进行存储器存取时执行的进一步的对齐查核,选择性地停用所述堆栈对齐查核构件。
鉴于另一方面,本发明提供了一种处理数据的方法,该方法包括以下步骤:响应于程序指令而执行数据处理操作;在堆栈指针寄存器内存储指示堆栈数据储存装置的存储器内的地址的堆栈指针值;响应于指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;响应于堆栈配置参数,独立于在不使用所述堆栈指针值进行存储器存取时执行的对齐查核,选择性地忽略该检测步骤。
本发明的实施例也可以虚拟机的形式来提供,其中该虚拟机是由执行适当的软件以提供匹配前文所描述的装置和方法的执行环境的通用计算机来形成。
附图说明
现在参考附图,仅通过示例来描述本发明的前述和其他实施例,其中:
图1示意性地示出了结合有对齐查核电路及对齐控制电路的数据处理装置;
图2示意性地示出了包括受选择性停用的对齐控制的多个堆栈数据储存装置的存储器;
图3是示意性地示出对堆栈存储器存取和通用存取的对齐控制的方法的流程图;以及
图4是示意性地示出前文所描述的技术的虚拟机实施方式的示意图。
具体实施方式
图1示意性地示出了数据处理装置2,该数据处理装置包括经由存储器管理单元6耦接至高速缓冲存储器8的处理器核心4。主存储器耦接至高速缓冲存储器8,虽然主存储器并未在图1中示出。配置数据储存装置10存储在软件控制下可写入的用于控制数据处理装置2的各种配置参数的配置数据。此配置数据储存装置可被以协同处理器(例如CP15)的形式提供,其中可对该协同处理器进行写入以设定配置参数并可对该协同处理器进行读取以读取配置参数。
处理器核心4包括由通用寄存器库12、乘法器14、移位器16、及加法器18形成的数据路径。数据路径12、14、16、18是由译码器电路20所产生的控制信号来控制的,其中该译码器电路对从指令管线22接收的程序指令进行译码且产生控制信号,该控制信号用以配置数据路径12、14、16、18执行需要的数据处理操作并且配置和控制处理器核心4的其他部分执行用以处理相关的指令所必需的功能。将了解,处理器核心4将通常包括许多其他的电路元件,但是出于简明的目的这些电路元件被从图1中省去。
处理器核心4可在多个异常级(exception level)中进行操作。这些异常级中的每个级对应于一个异常级模式数值,且模式寄存器24存储指示处理器核心4的当前异常级模式的数值。每个异常级模式具有相关联的堆栈指针寄存器26、28、30、32,这些堆栈指针寄存器存储在操作于特定的异常级模式时将被用于由堆栈存取指令指示的堆栈存储器存取的相应堆栈指针值。因此,当处理器核心4处于异常级2(EL2)时执行的堆栈压入或堆栈弹出指令将使用存储在堆栈指针寄存器30内的堆栈指针值。
处理器核心4消耗经由高速缓冲存储器8从存储器读取的数据和指令。若数据项或指令不存在于高速缓冲存储器8中,则对主存储器进行存取以撷取该数据项或指令。许多可能的高速缓存和存储器架构是可能的,且图1仅示出了这种高速缓存或存储器架构的一个示例。
处理器核心4产生虚拟地址,该虚拟地址由存储器管理单元6转换为物理地址。存储器管理单元6通常使用页表数据(pagetable data)来执行此地址转换。存储器管理单元6还存储用于确定是否应允许特定的存储器存取的存取许可数据。存储器管理单元包括对齐查核电路34,该对齐查核电路34包括堆栈对齐查核电路36和通用对齐查核电路38。堆栈对齐查核电路36负责查核堆栈存储器存取的对齐,例如堆栈压入指令或堆栈弹出指令。通用对齐查核电路38负责查核所有的存储器存取,例如通用负载或储存指令。对齐查核电路34包括对齐查核控制电路40,对齐查核控制电路40彼此独立地选择性地启用或停用堆栈对齐查核电路36和通用对齐查核电路38。因此,堆栈对齐查核电路36可被停用或启用,且通用对齐查核电路38可独立地被停用或启用。堆栈对齐查核电路36和通用对齐查核电路38可因此结合在一起执行不查核、仅对堆栈数据储存装置进行存取时进行查核或在进行所有的存储器存取时进行查核。
对齐查核控制电路40响应于存储在配置数据储存装置10内的配置参数。对于堆栈指针寄存器26、28、30、32中的每一个,都存储堆栈配置参数,该堆栈配置参数指示就在相关的堆栈指针寄存器26、28、30、32的相应的异常级发生的堆栈存取的情况,是否停用对齐查核。因此,可针对对应于异常级EL0和EL2的堆栈指针值执行堆栈对齐查核,而针对异常级EL1和EL3的堆栈对齐查核可停用。配置数据储存装置10还包括(就执行的每个对齐查核)指示被查核的匹配所对照的对齐大小的数据,例如对齐是否是对照对应于23或24的倍数的存储器地址的64位存储器地址边界或128位存储器地址边界来查核的。
配置数据储存装置10进一步包括通用配置参数,该通用配置参数控制是停用还是启用通用对齐查核电路38。针对此通用对齐查核实施的对齐的大小也被指定为配置参数。储存在配置数据储存装置10内的确认参数可在软件控制下被写入。这些配置参数也可在硬件控制下设定,或被预先编程在硬件中。
图2示意性地示出了包括对应于不同异常级的四个堆栈数据储存装置44、46、48和50的存储器42。存储在堆栈指针寄存器26、28、30、32中的堆栈指针值指示这些堆栈数据储存装置44、46、48、50中的每一个的顶部地址值,其中可针对这些堆栈储存装置执行诸如压入操作或弹出操作的堆栈存储器存取。
作为示例,与堆栈数据储存装置46相关联的对齐条件在图2中示出。如果实施对齐,则仅有为2N的整数倍的地址是有效的堆栈指针值。如果发现堆栈指针值不同于这些允许值,则触发异常。这种异常的触发结果可根据实施方式而改变。这种异常可根据相关系统的特性,触发软件响应(运行异常处理代码)或硬件响应(实施复位)。
在图示出的示例中,N的值可为3或4,这两个值分别对应于被作为堆栈对齐条件实施的64位对齐或被作为堆栈对齐条件实施的128位对齐。图2中还示出,如果停用堆栈对齐查核电路38,则任何地址都可被用作为堆栈指针值,且堆栈数据储存装置46的顶部地址可位于存储器地址空间内的任何位置(受限于在进行所有的存储器存取时由通用对齐查核电路38单独实施的任何对齐限制)。
图3是示意性地示出对齐查核电路34的操作的流程图。在步骤52,处理等待直到接收到存储器存取。步骤54确定存储器存取地址是否来自堆栈指针寄存器。如果存储器存取是堆栈存储器存取(即,具有来自堆栈指针寄存器的地址),则处理进行至步骤56,其中在步骤56确定是否针对处理器核心4所处理的当前异常级停用堆栈对齐查核(如可使用异常级模式寄存器24确定)。如果启用堆栈对齐查核,则步骤58确定相关的存取是否匹配用于当前异常级的预定对齐条件。如果符合预定对齐条件(即,存取被适当地对齐),则处理进行至步骤60,其中在步骤60存取被允许。如果存取并不匹配预定对齐条件(即,存取是非对齐的),则处理进行至步骤62,其中在步骤62触发堆栈不对齐存取响应。如果在步骤56确定停用堆栈对齐查核,则处理进行至步骤64,其中在步骤64作出关于是否停用通用对齐查核的判决。
如果在步骤54确定存储器存取并不是堆栈存储器存取(即,并不涉及对从堆栈指针寄存器中读取的地址的使用),则处理进行至步骤64,其中在步骤64作出关于当前是否停用通用对齐查核的判决。若通用对齐查核当前被停用,则处理进行至步骤60,其中在步骤60存取被允许。如果在步骤64确定不停用通用对齐查核,则处理进行至步骤66,其中在步骤66作出关于存取是否匹配通用存取的预定对齐条件(即,通用对齐条件)的判决。如果存取确实匹配此通用对齐条件(即,为对齐的),则处理进行至步骤60,其中在步骤60存取被允许。如果存取并不匹配通用对齐条件(即,为非对齐的),则处理进行至步骤68,其中在步骤68触发通用非对齐存取响应。
图4示出了可使用的虚拟机实施方式。尽管先前描述的实施例以用于操作支持相关技术的特定处理硬件的装置和方法的方式实施本发明,但也可以提供所谓的硬件设备的虚拟机实施方式。这些虚拟机实施方式在运行主机操作系统520的主机处理器530上运行,该主机操作系统支持虚拟机程序510。通常,需要非常强大的处理器来提供以合理的速度执行的虚拟机实施方式,但此方法在特定的情况中会受到考验,例如当由于兼容性或重使用的理由需要在另一处理器执行代码时。虚拟机程序510提供至应用程序500的应用程序接口,该应用程序接口与由实际硬件所提供的应用程序接口相同,该实际硬件为由虚拟机程序510模仿的设备。因此,程序指令(包括前文所描述的存储器存取的控制)可从在应用程序500内执行,应用程序500使用虚拟机程序510来模拟它们与虚拟机硬件之间的互动。
Claims (20)
1.一种用于处理数据的装置,该装置包括:
处理电路,该处理电路响应于程序指令而执行数据处理操作;
堆栈指针寄存器,该堆栈指针寄存器耦接至所述处理电路并且被配置为存储指示堆栈数据储存装置的存储器内的地址的堆栈指针值;
堆栈对齐查核电路,该堆栈对齐查核电路耦接至所述处理电路和所述堆栈指针寄存器,并且被配置为响应指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;
对齐查核控制电路,该对齐查核控制电路耦接至所述堆栈对齐查核电路并且响应于堆栈配置参数而独立于在存储器存取时执行的进一步的对齐查核,选择性地停用所述堆栈对齐查核电路。
2.如权利要求1所述的装置,其中所述进一步的对齐查核包括:对于所有的存储器存取的对齐查核。
3.如权利要求1所述的装置,其中所述堆栈存储器存取是下列操作中的一者:
(i)堆栈压入操作,该堆栈压入操作从所述堆栈指针值指定的堆栈地址的顶部开始将一个或多个数据数值存储至所述堆栈存储器并且更新所述堆栈指针值以指示堆栈地址的新顶部;以及
(ii)堆栈弹出操作,该堆栈弹出操作从所述堆栈指针值指定的堆栈地址的顶部开始从所述堆栈存储器读取一个或多个数据数值并且更新所述堆栈指针值以指示堆栈地址的新顶部。
4.如权利要求2和3中的任一项所述的装置,包括:通用对齐查核电路,该通用对齐查核电路耦接至所述处理电路并且被配置为响应指定在任意存储器地址对所述存储器进行通用存取的程序指令,检测所述地址是否匹配预定通用对齐条件。
5.如权利要求4所述的装置,其中所述对齐查核控制电路耦接至所述通用对齐查核电路,并且响应于通用配置参数而独立于在使用所述堆栈指针值进行堆栈存储器存取时由所述堆栈对齐查核电路执行的对齐查核,选择性地停用所述通用对齐查核电路。
6.如前述权利要求中的任一项所述的装置,其中所述预定堆栈对齐条件包括所述堆栈指针值为下列情况中的一者:
不加限制;
2N的整数倍,其中N为非零整数值。
7.如权利要求6所述的装置,其中N为3和4中的一者。
8.如权利要求4和5中的任一项所述的装置,其中N在用户控制下设定。
9.如前述权利要求中的任一项所述的装置,包括:多个堆栈指针寄存器,其中每个堆栈指针寄存器存储相应的堆栈指针值,并且其中所述处理电路被配置为在多个异常级进行操作,每个异常级与所述多个堆栈指针寄存器中的相应的一个相关联以供所述处理电路在该异常级进行操作时使用,并且每个异常级具有相应的用以控制堆栈对齐查核电路是否在该异常级被停用的堆栈配置参数。
10.一种用于处理数据的装置,该装置包括:
处理构件,该处理构件用于响应于程序指令而执行数据处理操作;
堆栈指针构件,该堆栈指针构件用于存储堆栈指针值,其中所述堆栈指针构件耦接至所述处理构件且所述堆栈指针值指示堆栈数据储存装置的存储器内的地址;
堆栈对齐查核构件,该堆栈对齐查核构件用于查核对齐,所述堆栈对齐查核构件耦接至所述处理构件和所述堆栈指针构件,并且被配置为响应指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;
对齐查核控制构件,该对齐查核控制构件用于控制对齐查核,所述对齐查核控制构件耦接至所述堆栈对齐查核构件,并且响应于堆栈配置参数而独立于在存储器存取时执行的进一步的对齐查核,选择性地停用所述堆栈对齐查核构件。
11.一种处理数据的方法,该方法包括以下步骤:
响应于程序指令而执行数据处理操作;
在堆栈指针寄存器中存储指示堆栈数据储存装置的存储器内的地址的堆栈指针值;
响应于指定在所述堆栈指针值指定的地址对所述堆栈数据储存装置进行存储器存取的程序指令,检测所述堆栈指针值是否匹配预定堆栈对齐条件;
响应于堆栈配置参数,独立于在存储器存取时执行的进一步的对齐查核而选择性地忽略该检测步骤。
12.如权利要求11所述的方法,其中所述进一步的对齐查核包括:对于所有的存储器存取的对齐查核。
13.如权利要求11和12中的任一项所述的方法,其中所述堆栈存储器存取是下列操作中的一者:
(i)堆栈压入操作,该堆栈压入操作从所述堆栈指针值指定的堆栈地址的顶部开始将一个或多个数据数值存储至所述堆栈存储器并且更新所述堆栈指针值以指示堆栈地址的新顶部;以及
(ii)堆栈弹出操作,该堆栈弹出操作从所述堆栈指针值指定的堆栈地址的顶部开始从所述堆栈存储器读取一个或多个数据数值并且更新所述堆栈指针值以指示堆栈地址的新顶部。
14.如权利要求11、12和13中的任一项所述的方法,包括以下步骤:通用对齐查核电路响应于指定在任意存储器地址对所述存储器进行通用存取的程序指令,检测所述地址是否匹配预定通用对齐条件。
15.如权利要求14所述的方法,其中响应于通用配置参数,独立于在使用所述堆栈指针值进行堆栈存储器存取时执行的对齐查核,选择性地停用所述通用对齐查核。
16.如权利要求11至15中的任一项所述的方法,其中所述预定堆栈对齐条件包括所述堆栈指针值为下列情况中的一者:
不加限制;
2N的整数倍,其中N为非零整数值。
17.如权利要求16所述的方法,其中N为3和4的一者。
18.如权利要求16和17中的任一项所述的方法,其中N在使用者控制下设定。
19.如权利要求11至18中的任一项所述的方法,包括以下步骤:将多个堆栈指针值存储在各个堆栈指针寄存器中并且在多个异常级进行操作,其中每个异常级与所述多个堆栈指针寄存器中的相应的一个相关联以供所述处理电路在该异常级进行操作时使用,每个异常级具有用以控制堆栈对齐查核是否在该异常级执行的相应的堆栈配置参数。
20.一种包括控制计算机执行如权利要求11至19中任一项所述的方法的计算机程序的虚拟机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1013528.3 | 2010-08-12 | ||
GB1013528.3A GB2482710A (en) | 2010-08-12 | 2010-08-12 | Enabling stack access alignment checking independently of other memory access alignment checking |
PCT/GB2011/051090 WO2012020237A1 (en) | 2010-08-12 | 2011-06-13 | Alignment control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103052942A true CN103052942A (zh) | 2013-04-17 |
CN103052942B CN103052942B (zh) | 2016-08-03 |
Family
ID=42937869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180038097.XA Active CN103052942B (zh) | 2010-08-12 | 2011-06-13 | 对齐控制 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9760374B2 (zh) |
EP (1) | EP2603852B1 (zh) |
JP (1) | JP5703378B2 (zh) |
KR (1) | KR101924821B1 (zh) |
CN (1) | CN103052942B (zh) |
GB (1) | GB2482710A (zh) |
IL (1) | IL223731A (zh) |
MY (1) | MY164219A (zh) |
TW (1) | TWI512460B (zh) |
WO (1) | WO2012020237A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175049A (zh) * | 2019-05-17 | 2019-08-27 | 西安微电子技术研究所 | 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280492B2 (en) | 2013-12-28 | 2016-03-08 | Intel Corporation | System and method for a load instruction with code conversion having access permissions to indicate failure of load content from registers |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
GB2563887B (en) * | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Masking of architectural state associated with a realm |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5201043A (en) * | 1989-04-05 | 1993-04-06 | Intel Corporation | System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking |
US5666508A (en) * | 1995-06-07 | 1997-09-09 | Texas Instruments Incorporated | Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation |
US5761491A (en) * | 1996-04-15 | 1998-06-02 | Motorola Inc. | Data processing system and method for storing and restoring a stack pointer |
CN1886727A (zh) * | 2003-11-26 | 2006-12-27 | 英特尔公司 | 用于检测和处理未对齐数据访问的设备、系统和方法 |
US20070266374A1 (en) * | 2006-05-11 | 2007-11-15 | Arm Limited | Stack memory selection upon exception in a data processing system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6491228A (en) * | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
GB2230118B (en) * | 1989-04-05 | 1992-12-23 | Intel Corp | Microprocessor providing selectable alignment checking on memory references |
JP3507193B2 (ja) * | 1995-06-06 | 2004-03-15 | 株式会社東芝 | ロード・ストア命令処理装置 |
US5596717A (en) * | 1995-06-07 | 1997-01-21 | Texas Instruments Incorporated | Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation |
US6055619A (en) | 1997-02-07 | 2000-04-25 | Cirrus Logic, Inc. | Circuits, system, and methods for processing multiple data streams |
US6341344B1 (en) * | 1998-03-20 | 2002-01-22 | Texas Instruments Incorporated | Apparatus and method for manipulating data for aligning the stack memory |
US6697834B1 (en) * | 1999-12-01 | 2004-02-24 | Sun Microsystems, Inc. | Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section |
US6829700B2 (en) * | 2000-12-29 | 2004-12-07 | Stmicroelectronics, Inc. | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions |
US6772372B2 (en) * | 2001-03-06 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | System and method for monitoring unaligned memory accesses |
US7134000B2 (en) | 2003-05-21 | 2006-11-07 | Analog Devices, Inc. | Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information |
-
2010
- 2010-08-12 GB GB1013528.3A patent/GB2482710A/en not_active Withdrawn
-
2011
- 2011-06-13 JP JP2013523662A patent/JP5703378B2/ja active Active
- 2011-06-13 MY MYPI2012701306A patent/MY164219A/en unknown
- 2011-06-13 WO PCT/GB2011/051090 patent/WO2012020237A1/en active Application Filing
- 2011-06-13 KR KR1020137003613A patent/KR101924821B1/ko active IP Right Grant
- 2011-06-13 EP EP20110733692 patent/EP2603852B1/en active Active
- 2011-06-13 CN CN201180038097.XA patent/CN103052942B/zh active Active
- 2011-06-28 US US13/067,805 patent/US9760374B2/en active Active
- 2011-08-02 TW TW100127445A patent/TWI512460B/zh active
-
2012
- 2012-12-18 IL IL223731A patent/IL223731A/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5201043A (en) * | 1989-04-05 | 1993-04-06 | Intel Corporation | System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking |
US5666508A (en) * | 1995-06-07 | 1997-09-09 | Texas Instruments Incorporated | Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation |
US5761491A (en) * | 1996-04-15 | 1998-06-02 | Motorola Inc. | Data processing system and method for storing and restoring a stack pointer |
CN1886727A (zh) * | 2003-11-26 | 2006-12-27 | 英特尔公司 | 用于检测和处理未对齐数据访问的设备、系统和方法 |
US20070266374A1 (en) * | 2006-05-11 | 2007-11-15 | Arm Limited | Stack memory selection upon exception in a data processing system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175049A (zh) * | 2019-05-17 | 2019-08-27 | 西安微电子技术研究所 | 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
IL223731A (en) | 2016-09-29 |
US20120042136A1 (en) | 2012-02-16 |
EP2603852B1 (en) | 2015-04-29 |
TWI512460B (zh) | 2015-12-11 |
US9760374B2 (en) | 2017-09-12 |
JP2013536504A (ja) | 2013-09-19 |
JP5703378B2 (ja) | 2015-04-15 |
TW201229752A (en) | 2012-07-16 |
WO2012020237A1 (en) | 2012-02-16 |
MY164219A (en) | 2017-11-30 |
KR20130098303A (ko) | 2013-09-04 |
GB201013528D0 (en) | 2010-09-29 |
KR101924821B1 (ko) | 2019-02-27 |
GB2482710A (en) | 2012-02-15 |
CN103052942B (zh) | 2016-08-03 |
EP2603852A1 (en) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103052942A (zh) | 对齐控制 | |
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US8769504B2 (en) | Method and apparatus for dynamically instrumenting a program | |
US10970192B2 (en) | Debugging support unit for microprocessor | |
US7934025B2 (en) | Content terminated DMA | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
US10067813B2 (en) | Method of analyzing a fault of an electronic system | |
KR20030059339A (ko) | 단일 스텝 처리 방법 및 장치 | |
US8707102B2 (en) | Method and program for verifying operation of processor | |
CN110661768A (zh) | 高速缓存线转储清除操作的选择性执行 | |
CN108351826A (zh) | 监视处理器的操作 | |
US9753870B2 (en) | Hardware monitor with context switching and selection based on a data memory access and for raising an interrupt when a memory access address is outside of an address range of the selected context | |
US10705993B2 (en) | Programming and controlling compute units in an integrated circuit | |
TW201712535A (zh) | 向量運算元位元大小控制 | |
US8032673B2 (en) | Transaction ID filtering for buffered programmed input/output (PIO) write acknowledgements | |
KR20210080398A (ko) | 메모리 내장 자체 테스트 컨트롤러를 이용한 판독 전용 메모리 테스트 | |
CN101989190B (zh) | 等待指令 | |
TWI756212B (zh) | 處理向量指令 | |
KR101785540B1 (ko) | 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치 | |
CN113535494B (zh) | 一种设备调试的方法及电子设备 | |
KR20190076217A (ko) | 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법 | |
US9886276B2 (en) | System register access | |
CN107515831A (zh) | 一种嵌入式处理器调试系统 | |
JPS5922154A (ja) | 電子計算機のメモリ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |