CN110770709B - 地址转译数据无效化 - Google Patents
地址转译数据无效化 Download PDFInfo
- Publication number
- CN110770709B CN110770709B CN201880041764.1A CN201880041764A CN110770709B CN 110770709 B CN110770709 B CN 110770709B CN 201880041764 A CN201880041764 A CN 201880041764A CN 110770709 B CN110770709 B CN 110770709B
- Authority
- CN
- China
- Prior art keywords
- translation
- given
- register
- context
- data
- 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.)
- Active
Links
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Machine Translation (AREA)
- Executing Machine-Instructions (AREA)
Abstract
包括存储地址转译数据的一个或更多个事务缓存器16、18、20的数据处理***2执行各自地址转译上下文VMID、ASID、X内的转译缓存器无效化指令TLBI。由于执行转译缓存器无效化指令而产生的转译缓存器无效化信号被广播到各自的转译缓存器且包括指定被执行的转译缓存器无效化指令的地址转译上下文的信号。转译缓存器无效化信号内所指定的此地址转译上下文用来闸控这些转译缓存器无效化信号在由是潜在的无效化目标的转译缓存器所接收时是否被刷新。转译缓存器无效化信号内所提供的地址转译上下文数据也可用来控制在接收到转译缓存器无效化信号时是否中止用于本地事务内存存取的本地内存事务。
Description
技术领域
本公开涉及数据处理***。更具体而言,本公开涉及存储在数据处理***内的地址转译数据的无效化。
背景技术
提供利用地址转译数据来将接收到的地址映射到转译的地址的数据处理***是公知的。例如,处理器可使用虚拟地址空间来执行指令,且本地转译缓存器可存储用于将接收到的虚拟地址映射成转译的物理地址、或中间物理地址(例如在超管理器支持多个虚拟机执行环境的存在时)的地址转译数据。在这些***中,重要的是,地址转译不应使处理操作慢下来,因此可将一个或多个地址转译缓存器分布在靠近处理电路的整个***,该处理电路使用该转译数据以便可在低延迟内本地可用。然而,在将地址转译数据分布在整个***时,引起了该数据的一致性管理问题。管理地址转译数据的一致性的机制本身不应约束处理性能。
发明内容
本公开的至少一些示例实施例提供了用于处理数据的装置,该装置包括:
一个或多个转译缓存器,用来存储将接收到的地址映射到转译的地址的各自的地址转译数据;以及
处理电路,用来执行程序指令;其中
所述处理电路响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或多个转译缓存器广播转译缓存器无效化信号,以及
所述转译缓存器无效化信号指定所述给定的地址转译上下文。
本公开的至少一些示例实施例提供了用于处理数据的装置,该装置包括:
一个或多个转译缓存器单元,用于存储将接收到的地址映射到转译的地址的各自的地址转译数据;以及
处理单元,用于执行程序指令;其中
所述处理单元响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或多个转译缓存器广播转译缓存器无效化信号,以及
所述转译缓存器无效化信号指定所述给定的地址转译上下文。
本公开的至少一些实施例提供一种处理数据的方法,该方法包括以下步骤:
将各自的地址转译数据存储在一个或多个转译缓存器内,该地址转译数据用来将接收到的地址映射到转译的地址;以及
执行程序指令;其中
响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或多个转译缓存器广播转译缓存器无效化信号,以及
所述转译缓存器无效化信号指定所述给定的地址转译上下文。
本公开的至少一些实施例提供了一种用于控制主机数据处理装置以提供指令执行环境的计算机程序,该计算机程序包括:
一个或多个转译缓存器数据结构,用来存储将接收到的地址映射到转译的地址的各自的地址转译数据;以及
处理程序逻辑,用来执行程序指令;其中
所述处理程序逻辑响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或多个转译缓存器数据结构广播转译缓存器无效化信号,以及
所述转译缓存器无效化信号指定所述给定的地址转译上下文。
计算机程序可存储在存储介质中。该存储介质可为非暂时性存储介质。
附图说明
结合附图阅读以下示例的描述,本技术的另外的方面、特征及优点将变得显而易见,在附图中:
图1示意性地例示了包括利用本地转译缓存器的多个处理组件的数据处理***;
图2示意性地例示了处理组件及本地转译缓存器;
图3示意性地例示了针对多线程处理器内的各个程序线程存储缓存器上下文数据;
图4示意性地例示了用于处理组件的地址范围追踪,该地址范围追踪用来闸控(gate)转译缓存器无效化信号的动作;
图5是示意性地例示转译后备缓存器刷新(flush)控制的流程图;
图6是示意性地例示事务(transaction)中止(abort)控制的流程图,;及
图7示意性地例示本技术的仿真器实施方式。
具体实施方式
图1示意性地例示了数据处理***2,该数据处理***包括通用处理器4和6以及图形处理单元8的形式的多个处理组件。这些处理组件4、6、8中的每个包括本地高速缓存存储器10、12、14及本地转译后备缓存器16、18、20的形式的本地转译缓存器。转译后备缓存器16、18、20存储用来将接收到的地址映射到转译的地址的各自的地址转译数据。接收到的地址可例如为如由处理组件4、6、8本地使用的虚拟地址,且被转译到如这些处理组件的本地高速缓存10、12、14内所使用的地址数据。地址转译数据可将这些虚拟地址映射到物理地址PA或中间物理地址IPA(例如在使用超管理程序来支持多个虚拟机执行环境的***的情况下)。
处理组件4、6、8使用它们的本地转译后备缓存器16、18、20来将接收到的地址转换到转译的地址(例如物理地址),接着经由互连器24向存储器***分级结构内的其他组件(例如被通用处理器4、6共享的另外的高速缓存存储器22,及主共享存储器26)发出这些转译的地址。
在处理组件4、6、8中的每个内本地提供转译后备缓存器16、18、20允许这些处理组件在转译数据存在于转译后备缓存器16、18及20内时以高速及以低延迟执行地址映射。转译后备缓存器16、18、20通常可形成处理组件内的关键路径的一部分(这些转译后备缓存器形成这些处理组件的一部分),使得重要的是,转译后备缓存器16、18、20应快速及高效地操作,否则这些转译后备缓存器的相关联的处理组件4、6、8的整体效能可能降级。
数据处理***2的不同部分内所使用的地址转译数据被管理为提供由数据处理***的不同部分所施用的内存映射的一致整体控制,以确保一致性及数据完整性。通常可在使用期间更改映射数据。为了确保本地保持在不同转译后备缓存器16、18、20内的地址转译数据的不同复本之间的一致性,提供了转译缓存器无效化指令,该转译缓存器无效化指令可由处理组件4、6、8中的任一者在该处理组件的程序指令序列内执行。在这些转译缓存器无效化指令被执行时,接着转译缓存器无效化信号被广播到***内的转译后备缓存器16、18、20且被用来选择性地触发保持在这些分布式转译后备缓存器16、18、20内的地址转译数据的无效化。
被执行的转译缓存器无效化指令是由处理组件4、6、8中的给定处理组件在正在执行转译缓存器无效化指令的该处理组件4、6、8的地址转译上下文内所执行的程序指令序列的一部分。地址转译上下文包括哪个虚拟机执行环境目前现用(active)在该处理组件上及哪个程序线程目前现用在利用本身的地址空间的该处理组件上,转译缓存器无效化指令是在该地址转译上下文内执行的。据此,可用包括虚拟机标识符(VMID)的变量来表示任何给定时间处的给定处理组件4、6、8的地址转译上下文,该虚拟机标识符识别可由相关的处理组件4、6、8所执行的多个虚拟机执行上下文之中的一个虚拟机执行上下文。指定地址转译上下文的变量还可包括地址空间标识符(ASID),该地址空间标识符识别可由相关的处理组件4、6、8所执行的多个处理之中的一个给定处理,且可将转译缓存器无效化指令包括在线程内。
在针对转译缓存器无效化指令现用在该特定时间处的地址转译上下文内由处理组件4、6、8中的一者执行该转译缓存器无效化指令的行为引起广播转译缓存器无效化信号的行为,这些转译缓存器无效化信号指定地址转译上下文,该转译缓存器无效化指令曾是在该地址转译上下文内执行的。包括在转译缓存器无效化信号内的是指定始发的转译缓存器无效化指令的地址转译上下文的数据。这允许转译后备缓存器16、18、20闸控这些转译缓存器无效化信号在该转译后备缓存器接收到这些转译无效化信号的给定时间点是否触发地址转译数据的刷新(部分或完全的刷新),这些转译后备缓存器取决于藉以始发转译缓存器无效化信号的地址转译上下文与转译后备缓存器16、18、20的本地上下文之间的匹配或不匹配而存储该地址转译数据。这可避免在不需要维持一致性时不必要地移除地址转译数据,且因此避免了使效能降级,例如是通过由于实际上不必要的地址转译数据刷新而要求转译后备缓存器再填充及/或事务内存事务中止来避免。
图2示意性地例示通用处理器4的形式的处理组件,该通用处理器包括转译后备缓存器16,该转译后备缓存器包括转译后备缓存器内存28、比较电路30及缓存器32、34、36及38,这些缓存器存储虚拟机标识符VMID、地址空间标识符ASID、高存取值HI及低存取值LO的形式的缓存器上下文数据。通用处理器4接收要在指令译码器40处在程序指令序列内执行的程序指令,在该指令译码器处,这些程序指令被译码以产生控制信号,这些控制信号接着控制多个执行管线(pipeline)42、44、46的操作。这些执行管线包括加载存储管线42,该加载存储管线负责执行进行内存存取的程序指令(加载指令及存储指令),且该加载存储管线利用存储在转译后备缓存器16的转译后备缓存器内存28内的地址转译数据48。
在通用处理器4在指令译码器40处接收到转译缓存器无效化指令TLBI时,接着这用来在信号线50上产生转译缓存器无效化信号,这些转译缓存器无效化信号被广播到该通用处理器本身的转译后备缓存器16及数据处理***2内的任何其他转译后备缓存器18、20两者。转译后备缓存器无效化指令TLBI将正被无效化的转译后备缓存器单元格的地址值指定为自变量X。
通用处理器4包括目前程序状态缓存器52,该目前程序状态缓存器存储表示通用处理器4的目前状态的数据。此目前状态包括通用处理器4的目前虚拟机标识符,该目前虚拟机标识符指示多个虚拟机执行内容中的哪一者在通用处理器4内是目前现用的(对应于目前正被执行的程序指令序列)。目前程序状态缓存器52进一步使用与正在执行的目前现用处理相关联的地址空间标识符ASID来在多个处理之中指定该目前现用处理。
存储在目前程序状态缓存器52内的虚拟机标识符VMID及程序标识符ASID一起表示与转译后备缓存器指令TLBI相关联的地址转译上下文的一部分,该转译后备缓存器指令被译码且要被执行。在信号线50上广播的转译缓存器无效化信号包括指定虚拟机标识符VMID、地址空间标识符ASID及目标的接收到的地址值X的信号,要针对该地址值无效化地址转译数据。因此,转译缓存器无效化信号指定与所执行的转译缓存器无效化指令TLBI相关联的地址转译上下文。
广播的转译缓存器无效化信号被发送到***内的转译后备缓存器16、18、20且被供应到这些各自的转译后备缓存器16、18、20内的比较电路30。比较电路决定与存储在相关的转译后备缓存器16、18、20内的地址转译数据48相关联的缓存器上下文数据是否匹配以转译缓存器无效化信号指定的缓存器上下文数据。若缓存器上下文数据的虚拟机标识符VMID匹配转译缓存器无效化信号内所指定的虚拟机标识符,且缓存器上下文数据的地址空间标识符ASID也匹配转译缓存器无效化信号的地址空间标识符,则比较电路30容许从其本地的转译后备缓存器内存28刷新地址转译数据48。这些刷新行为可采取各种不同的形式,例如将存储的数据标记为是无效的。若缓存器上下文数据(VMID、ASID)并不匹配与接收到的转译缓存器无效化信号相关联的地址转译上下文,则比较电路30禁止刷新地址转译数据48,因为无效化操作对于该本地保持的地址转译数据48而言是不必要的。
处理组件中的至少一些部分(包括通用处理器4、6)支持事务内存存取。这些事务内存存取提供了包括程序指令的事务,这些程序指令以各自事务起始点及事务提交点为界。这些事务在若是在达到事务提交点之前被中止则装置返回对应于事务起始点的状态的意义上被原子地(atomically)执行。这些事务内存存取在利用共享内存时通过例如避免明确地使用设定及重设存储器锁的需要来改良***效能上是有用的。
可能触发在此类***内中止内存存取事务的一个情况是存储在本地转译后备缓存器16、18、20内的地址转译数据被不适当地改变的时候。本公开提供缓存器形式的范围追踪电路36、38,这些缓存器追踪在使用存储在相关的本地转译后备缓存器16内的给定地址转译数据48期间由处理组件4所存取的最小地址值LO及最大地址值HI。在本地转译后备缓存器16被刷新时,接着最大地址值HI及最小地址值LO分别被重设为表示地址空间范围内的最低点及地址空间范围内的最高点的值。每次随后进行地址存取,就将存储在缓存器36内的最大值与目前地址值进行比较,且若该目前地址值在地址空间范围中高于目前针对HI所存储的值,则将存储在缓存器36内的值更新成目前地址值。以类似的方式,将最小地址值LO与目前使用的地址值进行比较,且若目前地址在内存地址空间中低于目前存储的最小地址值LO,则将存储的最小地址值LO更新成目前地址值。因此,缓存器36、38存储追踪地址范围的范围追踪值,与转译内存的目前未决事务相关联的任何内存存取都位于该地址范围内。
在给定转译后备缓存器16处接收到转译缓存器无效化信号时,本地比较电路30将所要针对来无效化地址转译数据的目标的接收到的地址值X与范围追踪值HI、LO进行比较,这些范围追踪值追踪已由该处理组件所使用的总地址空间内的地址空间范围。若所进行的比较的结果是,目标的接收到的地址X或目标的接收到的地址范围是在以最小地址值LO及最大地址值HI为界的范围(本地处理器的现用地址范围)之外,则相关的处理组件4继续进行事务内存的任何未决转译,如同这些事务未受到由转译缓存器无效化信号以信号通知的地址转译无效化影响一般。在存储在缓存器32、34内的给定缓存器上下文数据VMID、ASID两者匹配接收到的地址转译上下文VMID及ASID且接收到的目标地址值X是在以最小地址值LO及最大地址值HI为界的范围内时,比较电路30发出中止该本地处理组件4内的任何未决内存事务的信号。这些内存事务中止行为触发返回至对应于相关联的事务起始点的状态的行为。
给定的处理组件4、6、8可支持交错执行多个程序线程(例如在SMT处理器内)。这些程序线程中的每个可具有其本身的地址转译上下文。这些地址转译上下文由存储在转译后备缓存器16、18、20内的VMID、ASID、HI及LO值所表示。图3示意性地例示可如何使用多个缓存器32、32'、34、34'、36、36'、38、38'来存储与存储在转译后备缓存器内存28内的地址转译数据48相关联的多个本地地址转译内容。将指示了指示线程0还是线程1目前为现用的信号的线程用来切换多任务器以选择要将这些地址转译上下文中的哪一个用于与具有接收到的转译缓存器无效化信号的地址转译上下文识别信号进行比较。
图4示意性地例示如何可将用于处理组件的地址范围追踪用来闸控转译缓存器无效化信号。***的内存地址空间54从零延伸到最高地址值。由范围追踪电路使用缓存器36、38来追踪从最后一次转译后备缓存器刷新以来由相关的处理组件所执行的内存存取,由此在每次执行内存存取时,将该内存存取与被注记为已存取的范围的目前存储的最小地址值及最大地址值进行比较。若新接收到的内存地址值是在目前追踪的范围之外,则在必要时更新HI及LO的存储值。此行为例示在图4的左侧上。
图4的右侧指示接收到的转译缓存器无效化信号,这些转译缓存器无效化信号指定用于无效化操作的各自目标地址。若这些目标地址是在目前追踪的内存地址范围之外,则转译缓存器无效化信号并不引起本地处理组件的未决内存存取事务的任何中止行为。然而,若转译缓存器无效化信号指定了是在从最后一次TLB刷新以来已被使用的目前正被追踪的地址范围内的目标地址,则这就针对本地处理组件4的任何未决内存事务触发内存事务中止行为。
图5是示意性地例示转译后备缓存器刷新(flush)控制的流程图。处理在步骤56处等待,直到接收到转译缓存器无效化信号为止。步骤58将在转译缓存器无效化信号中所接收到的VMID值与保持在缓存器32内而作为相关的转译后备缓存器的缓存器上下文数据的一部分的VMID值进行比较。若不匹配,则不执行刷新且处理继续进行到结束。若有匹配,则步骤60用来将被包括在引起转译缓存器无效化信号的转译缓存器无效化指令中的指示现用处理的接收到的地址空间标识符值ASID与缓存器上下文数据且特别是存储在缓存器34内的ASID值进行比较。若不匹配,则处理再次终止。然而,若在步骤58及60两者处有匹配,则处理到达步骤62,在步骤62处,转译后备缓存器内存28内的地址转译数据48被刷新(例如被标记为是无效的)。
图6是示意性地例示事务中止控制的流程图。处理在步骤64处等待接收到转译缓存器无效化信号。步骤66及68再次用来检查表示虚拟机标识符的接收到的VMID信号及表示始发事务缓存器无效化指令的处理的ASID信号与本地的转译后备缓存器的缓存器上下文数据之间的匹配。若这些不都匹配,则处理继续进行到结束且不执行事务中止。然而,若VMID及ASID都匹配,则处理到达步骤70,在步骤70处,在接收到的转译缓存器无效化信号的目标地址X及存储在缓存器36内的目前存储的最大地址值之间进行比较。若接收到的地址小于最大存储值HI,则处理进行到步骤72。若接收到的地址大于存储的HI值,则目标地址是在已使用地址转译数据48来存取的地址范围之外,且因此中止是不必要的。在步骤72处,将由转译缓存器无效化信号所指定的接收到的目标地址与存储的最小地址值LO进行比较。若接收到的地址值小于存储的最小值LO,则不执行事务且处理再次终止。然而,若步骤70及72两者被通过而指示接收到的目标地址是在已使用相关的转译后备缓存器16来存取的内存地址的追踪范围之内,则可能的情况是,未决内存事务中的一者会取决于已被指示要无效化的地址转译数据,且因此步骤74用来触发本地处理组件4内的所有未决内存事务的事务中止行为。将理解到,依据图5的流程图,地址转译数据亦被无效化。
图7例示了可使用的仿真器实施方式。尽管先前所述的实施例根据用于操作支持相关技术的特定处理硬件的装置及方法实施本发明,也可能提供依据本文中所述的实施例的指令执行环境,该指令执行环境是通过使用计算机程序来实施的。这些计算机程序通常称为仿真器,只要它们提供硬件架构的基于软件的实施方式。仿真器计算机程序的变体包括仿真器、虚拟机、模型及二进制转译器(包括动态二进制转译器)。一般而言,仿真器实施方式可运行在支持仿真器程序510的主机处理器530(可选地运行主机操作***520)上。在一些布置中,可能在硬件及所提供的指令执行环境之间存在着多层模拟,和/或存在着提供在相同主机处理器上的多个相异的指令执行环境。历史上,已经需要强大的处理器来提供在合理速度下执行的仿真器实施方式,但此类方法在某些环境中可被调整(justify),例如在基于兼容性或重复使用的理由而有需要运行本地代码至另一处理器时。例如,仿真器实施方式可提供具有未受主机处理器硬件所支持的额外功能性的指令执行环境,或提供一般与不同的硬件架构相关联的指令执行环境。Robert Bedichek在1990年冬季USENIX会议第53-63页的“Some Efficient Architecture Simulation Techniques”中给出了模拟的概述。
在先前针对特定硬件构造或特征描述实施例的情况下,在模拟的实施例中,可由合适的软件构造或特征提供等效的功能性。例如,可在模拟的实施例中将特定的电路实施为计算机程序逻辑。类似地,可在仿真的实施例中将内存硬件(例如缓存器或高速缓存)实施为软件数据结构。在先前所述的实施例中所指称的硬件组件中的一个或更多个存在于主机硬件(例如主机处理器530)上的布置中,一些模拟的实施例可在合适时利用主机硬件。
仿真器程序510可被存储在计算机可读取存储介质(其可为非暂时性介质)上,且向目标代码500(其可包括应用程序、操作***及超管理器)提供程序接口(指令执行环境),该程序接口与正被仿真器程序510所建模的硬件架构的应用程序编程接口相同。因此,可使用仿真器程序510来在指令执行环境内执行目标代码500的程序指令(包括基于上述的领域(realm)保护功能性的内存访问控制),使得实际上不具有上文所论述的数据处理***2的硬件特征的主机处理器530可模仿这些特征。
至少一些实例提供了一种虚拟机,该虚拟机提供依据方法来操作的执行环境,该方法包括以下步骤:将各自的地址转译数据存储在一个或更多个转译缓存器内,该地址转译数据用来将接收到的地址映射到转译的地址;以及执行程序指令;其中响应于使用给定的地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或更多个转译缓存器广播转译缓存器无效化信号,且所述转译缓存器无效化信号指定所述给定的地址转译上下文。存储介质可存储虚拟机计算机程序。存储介质可为非暂时性存储介质。
在本申请中,词语“配置为...”用来意指装置的组件具有能够实现所定义的操作的配置。在此上下文中,“配置”意指硬件或软件互连的布置或方式。例如,装置可具有提供所定义的操作的专用硬件,或处理器或其他处理装置可经程序化以执行该功能。“配置为”并不暗示装置组件需要以任何方式改变以提供所定义的操作。
尽管参照附图在本文中详细描述了本发明的说明性实施例,但应理解,本发明不限于这些精确的实施例,并且在不脱离由所附权利要求所限定的本发明的范围及精神的情况下,本领域的技术人员可在这些实施例中作出各种改变及更改。
Claims (12)
1.一种用于处理数据的装置,包括:
一个或更多个转译缓存器,用来存储用来将接收到的地址映射到转译的地址的各自地址转译数据;及
处理电路,用来执行程序指令;其中
所述处理电路响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或更多个转译缓存器广播转译缓存器无效化信号,以及
所述转译缓存器无效化信号指定所述给定的地址转译上下文;
其中所述一个或更多个转译缓存器之中的给定的转译缓存器存储给定缓存器上下文数据,该给定缓存器上下文数据指定存储在所述给定转译缓存器内的给定地址转译数据的地址转译上下文;
所述装置包括与所述给定转译缓存器相关联的上下文比较电路,该上下文比较电路用来执行所述给定缓存器上下文数据与所述给定地址转译上下文的比较;
所述处理电路包括处理组件,该处理组件使用存储在所述给定转译缓存器内的所述给定地址转译数据;
所述给定缓存器上下文数据与所述处理组件上的现用的程序线程相关联;
所述处理组件支持事务内存存取,使得以事务起始点和事务提交点为界的包括程序指令的事务被原子地执行,可在到达所述事务提交点之前被中止并且将所述装置返回至对应于所述事务起始点的状态;
所述处理组件取决于与所述现用的程序线程相关联的所述给定缓存器上下文数据与所述给定地址转译上下文的比较而选择性地中止未决事务;并且
在所述给定缓存器上下文数据与所述给定地址转译上下文不同时,所述处理组件继续进行所述未决事务。
2.根据权利要求1所述的装置,其中所述装置支持执行多个虚拟机执行上下文,并且所述给定的地址转译上下文包括用来识别所述转译缓存器无效化指令的虚拟机执行上下文的虚拟机标识符。
3.根据权利要求1或权利要求2所述的装置,其中所述装置支持执行具有各自的地址空间转译映射的多个处理,并且所述给定的地址转译上下文包括用来在所述多个处理之中识别所述转译缓存器无效化指令的处理的地址空间标识符。
4.根据权利要求1所述的装置,其中:
在所述给定缓存器上下文数据匹配所述给定地址转译上下文时,所述比较电路容许刷新所述给定地址转译数据,以及
在所述给定缓存器上下文数据与所述给定地址转译上下文不同时,所述比较电路禁止刷新所述给定地址转译数据。
5.根据权利要求1所述的装置,其中:
所述转译缓存器无效化信号指定一个或更多个目标的接收到的地址值,针对该一个或更多个目标的接收到的地址值的地址转译数据应当被无效化;
所述给定转译缓存器包括范围追踪电路,该范围追踪电路用来追踪由所述处理组件在使用存储在所述给定转译缓存器内的所述给定转译数据的期间所存取的最小地址值和最大地址值,并且
在所述一个或更多个目标的接收到的地址值是在以所述最小地址值及所述最大地址值为界的范围之外时,所述处理组件继续进行所述未决事务。
6.根据权利要求5所述的装置,其中在所述给定缓存器上下文数据匹配所述给定地址转译上下文、且所述一个或更多个目标的接收到的地址值是在以所述最小地址值和所述最大地址值为界的范围内时,所述处理组件中止所述未决事务。
7.根据权利要求5和6中任一项所述的装置,其中所述处理组件支持交错执行多个程序线程,且所述给定转译缓存器针对所述多个程序线程中的每个程序线程存储给定缓存器上下文数据以及描述所述最小地址值和所述最大地址值的范围追踪数据。
8.根据权利要求1和2中任一项所述的装置,其中所述处理组件包括通用处理器和图形处理单元中的一者。
9.根据权利要求1和2中任一项所述的装置,其中所述地址转译数据提供以下项中的一者:
虚拟地址到物理地址的映射;以及
虚拟地址到中间物理地址的映射。
10.根据权利要求1和2中任一项所述的装置,其中所述一个或更多个转译缓存器包括一个或更多个转译后备缓存器。
11.一种使用包括处理电路的装置处理数据的方法,包括以下步骤:
将各自的地址转译数据存储在一个或更多个转译缓存器内,该地址转译数据用来将接收到的地址映射到转译的地址;及
执行程序指令;其中
响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或更多个转译缓存器广播转译缓存器无效化信号,并且
所述转译缓存器无效化信号指定所述给定的地址转译上下文;
其中所述一个或更多个转译缓存器之中的给定的转译缓存器存储给定缓存器上下文数据,该给定缓存器上下文数据指定存储在所述给定转译缓存器内的给定地址转译数据的地址转译上下文;
所述方法包括执行所述给定缓存器上下文数据与所述给定地址转译上下文的比较;
所述处理电路包括处理组件,该处理组件使用存储在所述给定转译缓存器内的所述给定地址转译数据;
所述给定缓存器上下文数据与所述处理组件上的现用的程序线程相关联;
所述处理组件支持事务内存存取,使得以事务起始点和事务提交点为界的包括程序指令的事务被原子地执行,可在到达所述事务提交点之前被中止并且将所述装置返回至对应于所述事务起始点的状态;
所述处理组件取决于与所述现用的程序线程相关联的所述给定缓存器上下文数据与所述给定地址转译上下文的比较而选择性地中止未决事务;并且
在所述给定缓存器上下文数据与所述给定地址转译上下文不同时,所述处理组件继续进行所述未决事务。
12.一种存储用于控制主机数据处理装置以提供指令执行环境的计算机程序的存储介质,该计算机程序包括:
一个或更多个转译缓存器数据结构,用来存储用来将接收到的地址映射到转译的地址的各自地址转译数据;以及
处理程序逻辑,用来执行程序指令;其中
所述处理程序逻辑响应于使用给定地址转译上下文来执行的程序指令序列内的转译缓存器无效化指令,向所述一个或更多个转译缓存器数据结构广播转译缓存器无效化信号,并且
所述转译缓存器无效化信号指定所述给定的地址转译上下文;
其中所述一个或更多个转译缓存器数据结构之中的给定的转译缓存器数据结构存储给定缓存器上下文数据,该给定缓存器上下文数据指定存储在所述给定转译缓存器数据结构内的给定地址转译数据的地址转译上下文;
该计算机程序包括与所述给定转译缓存器数据结构相关联的上下文比较程序逻辑,该上下文比较程序逻辑用来执行所述给定缓存器上下文数据与所述给定地址转译上下文的比较;
所述处理程序逻辑使用存储在所述给定转译缓存器内的所述给定地址转译数据;
所述给定缓存器上下文数据与所述处理程序逻辑上的现用的程序线程相关联;
所述处理程序逻辑支持事务内存存取,使得以事务起始点和事务提交点为界的包括程序指令的事务被原子地执行,可在到达所述事务提交点之前被中止并且将所述装置返回至对应于所述事务起始点的状态;
所述处理程序逻辑取决于与所述现用的程序线程相关联的所述给定缓存器上下文数据与所述给定地址转译上下文的比较而选择性地中止未决事务;并且
在所述给定缓存器上下文数据与所述给定地址转译上下文不同时,所述处理程序逻辑继续进行所述未决事务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386022.2 | 2017-06-28 | ||
EP17386022.2A EP3422192B1 (en) | 2017-06-28 | 2017-06-28 | Address translation data invalidation |
PCT/EP2018/064497 WO2019001896A1 (en) | 2017-06-28 | 2018-06-01 | INVALIDATION OF ADDRESS TRANSLATION DATA |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110770709A CN110770709A (zh) | 2020-02-07 |
CN110770709B true CN110770709B (zh) | 2023-10-20 |
Family
ID=59350848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880041764.1A Active CN110770709B (zh) | 2017-06-28 | 2018-06-01 | 地址转译数据无效化 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11615032B2 (zh) |
EP (1) | EP3422192B1 (zh) |
JP (1) | JP2020525905A (zh) |
KR (1) | KR102635247B1 (zh) |
CN (1) | CN110770709B (zh) |
IL (1) | IL270987B (zh) |
TW (1) | TWI790242B (zh) |
WO (1) | WO2019001896A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10977183B2 (en) * | 2018-12-11 | 2021-04-13 | International Business Machines Corporation | Processing a sequence of translation entry invalidation requests with regard to draining a processor core |
US10915456B2 (en) | 2019-05-21 | 2021-02-09 | International Business Machines Corporation | Address translation cache invalidation in a microprocessor |
CN112463657B (zh) * | 2019-09-09 | 2024-06-18 | 阿里巴巴集团控股有限公司 | 一种地址转换缓存清除指令的处理方法和处理装置 |
US11210233B2 (en) * | 2020-01-07 | 2021-12-28 | International Business Machines Corporation | System and method for handling address translation invalidations using an address translation invalidation probe |
US11615033B2 (en) * | 2020-09-09 | 2023-03-28 | Apple Inc. | Reducing translation lookaside buffer searches for splintered pages |
WO2023034662A1 (en) * | 2021-09-02 | 2023-03-09 | Nuvia, Inc. | System and methods for invalidating translation information in caches |
US11748300B2 (en) * | 2021-11-18 | 2023-09-05 | Vmware, Inc. | Reverse deletion of a chain of snapshots |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
CN103309644A (zh) * | 2012-03-13 | 2013-09-18 | 辉达公司 | 用于微处理器的转译地址高速缓存 |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN103777925A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN105320607A (zh) * | 2014-07-08 | 2016-02-10 | Arm有限公司 | 第一类型的存储器事务和第二类型的存储器事务间的转译 |
CN105975405A (zh) * | 2015-05-21 | 2016-09-28 | 上海兆芯集成电路有限公司 | 处理器和使处理器进行工作的方法 |
CN105980994A (zh) * | 2014-02-21 | 2016-09-28 | Arm 有限公司 | 已存地址转换的无效 |
CN106293894A (zh) * | 2015-06-27 | 2017-01-04 | 英特尔公司 | 执行事务性功率管理的硬件设备和方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139149A (ja) * | 1992-10-29 | 1994-05-20 | Mitsubishi Electric Corp | 多重仮想空間制御装置 |
US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
US8005661B2 (en) * | 2007-05-07 | 2011-08-23 | Nec Laboratories America, Inc. | Modeling and verification of concurrent systems using SMT-based BMC |
US9086987B2 (en) * | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
US9086986B2 (en) | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
US9940287B2 (en) | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
US10037280B2 (en) * | 2015-05-29 | 2018-07-31 | Qualcomm Incorporated | Speculative pre-fetch of translations for a memory management unit (MMU) |
US11023233B2 (en) * | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
-
2017
- 2017-06-28 EP EP17386022.2A patent/EP3422192B1/en active Active
-
2018
- 2018-06-01 US US16/625,102 patent/US11615032B2/en active Active
- 2018-06-01 CN CN201880041764.1A patent/CN110770709B/zh active Active
- 2018-06-01 KR KR1020207001455A patent/KR102635247B1/ko active IP Right Grant
- 2018-06-01 JP JP2019570895A patent/JP2020525905A/ja active Pending
- 2018-06-01 WO PCT/EP2018/064497 patent/WO2019001896A1/en active Application Filing
- 2018-06-25 TW TW107121680A patent/TWI790242B/zh active
-
2019
- 2019-11-27 IL IL270987A patent/IL270987B/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
CN103309644A (zh) * | 2012-03-13 | 2013-09-18 | 辉达公司 | 用于微处理器的转译地址高速缓存 |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN103777925A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN105980994A (zh) * | 2014-02-21 | 2016-09-28 | Arm 有限公司 | 已存地址转换的无效 |
CN105320607A (zh) * | 2014-07-08 | 2016-02-10 | Arm有限公司 | 第一类型的存储器事务和第二类型的存储器事务间的转译 |
CN105975405A (zh) * | 2015-05-21 | 2016-09-28 | 上海兆芯集成电路有限公司 | 处理器和使处理器进行工作的方法 |
CN106293894A (zh) * | 2015-06-27 | 2017-01-04 | 英特尔公司 | 执行事务性功率管理的硬件设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201907308A (zh) | 2019-02-16 |
KR20200023380A (ko) | 2020-03-04 |
KR102635247B1 (ko) | 2024-02-08 |
JP2020525905A (ja) | 2020-08-27 |
IL270987A (en) | 2020-01-30 |
TWI790242B (zh) | 2023-01-21 |
IL270987B (en) | 2022-06-01 |
EP3422192B1 (en) | 2020-08-12 |
CN110770709A (zh) | 2020-02-07 |
WO2019001896A1 (en) | 2019-01-03 |
US11615032B2 (en) | 2023-03-28 |
US20200167292A1 (en) | 2020-05-28 |
EP3422192A1 (en) | 2019-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110770709B (zh) | 地址转译数据无效化 | |
US9804970B2 (en) | Invalidating a range of two or more translation table entries and instruction therefor | |
CN108874693B (zh) | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 | |
US8452942B2 (en) | Invalidating a range of two or more translation table entries and instruction therefore | |
KR100954623B1 (ko) | 무한 트랜잭션 메모리 시스템 | |
US8688432B2 (en) | Method, apparatus and full-system simulator for speeding MMU simulation | |
JP5608594B2 (ja) | プレロード命令制御 | |
US8458438B2 (en) | System, method and computer program product for providing quiesce filtering for shared memory | |
CN109313693B (zh) | 针对偶发存储器访问程序指令的许可控制 | |
US8438340B2 (en) | Executing atomic store disjoint instructions | |
CN112639750A (zh) | 用于控制存储器存取的装置及方法 | |
TWI787451B (zh) | 用於資料處理的方法、設備、電腦程式、與儲存器媒體 | |
US10423537B2 (en) | Address space resizing table for simulation of processing of target program code on a target data processing apparatus | |
US20220414016A1 (en) | Concurrent processing of memory mapping invalidation requests | |
US11842195B2 (en) | Conditional yield to hypervisor instruction | |
CN115004158A (zh) | 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序 | |
US11314657B1 (en) | Tablewalk takeover | |
JP2024523150A (ja) | メモリマッピング無効化要求の同時処理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |