CN103309644B - 用于微处理器的转译地址高速缓存 - Google Patents
用于微处理器的转译地址高速缓存 Download PDFInfo
- Publication number
- CN103309644B CN103309644B CN201310079112.6A CN201310079112A CN103309644B CN 103309644 B CN103309644 B CN 103309644B CN 201310079112 A CN201310079112 A CN 201310079112A CN 103309644 B CN103309644 B CN 103309644B
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- translation
- microprocessor
- alternate version
- 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
- 238000013519 translation Methods 0.000 title claims description 128
- 238000000034 method Methods 0.000 abstract description 59
- 238000003860 storage Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013277 forecasting method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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/30181—Instruction operation extension or modification
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
提供了从包括在微处理器中的指令高速缓存获取指令和达到与指令相同功能性的替代版本相关的实施例。在一个示例中,提供了方法,其包括在示范性微处理器处从指令高速缓存获取指令。示范性方法还包括对用于指令的地址进行散列来确定达到与该指令相同功能性的指令的替代版本是否存在。示范性方法进一步包括,如果散列导致确定这样的替代版本存在,那么中止指令的获取并检索以及执行替代版本。
Description
背景技术
可在指令集架构(ISA)和本地(native)架构之间转译用于微处理器的架构级指令。在一些微处理器中,ISA指令的软件优化可比那些软件优化所基于的ISA指令相对更有效地执行。一些过去的方法对软件优化加以链接以从一个软件优化到另一个软件优化来传递控制。然而,因为可能难以确定间接分支的目标,所以这样的方法可能受到经间接分支的过程的挑战。
附图说明
图1示意性示出了根据本公开的实施例的微处理器。
图2示意性示出了根据本公开的实施例的转译地址高速缓存。
图3A示出了根据本公开的实施例的、从指令高速缓存获取指令和确定用于指令的替代版本是否存储在指令高速缓存中的方法的流程图的一部分。
图3B示出了图3A中所示出的流程图的另一部分。
图3C示出了图3A和图3B中所示出的流程图的另一部分。
图4示意性示出了根据本公开的实施例的对用于指令的线性地址进行散列以生成用于该线性地址的散列(hash)索引和消歧标签的方法。
图5示意性示出了根据本公开的实施例的转译地址高速缓存条目。
具体实施方式
在现代微处理器中,可在诸如高级RISC机器(ARM)架构或x86架构的源指令集架构(ISA)和取得与该源相同可觉察功能性的替代ISA之间转译架构级指令。例如,源ISA的一个或多个指令的集合可转译为实施与该源ISA相同功能的本地架构的一个或多个微操作。在一些设定中,本地微操作可提供相对于源ISA指令的增强的或优化的性能。
一些过去的方法试图对源指令的软件优化进行链接使得控制经由直接本地分支从一个软件优化传递到另一个软件优化。然而,这样的方法可能受到经分支的过程的挑战。因为在程序执行期间分支源可以是动态的,因此软件优化之间的链向交递可能不可行。例如,如果间接分支发生,那么分支的不确定目标可能使得难以查明在创建优化的时候应该检索哪个软件优化。因此,当从潜在的数千候选优化来确定分支和用于该分支的软件优化时微处理器可能停滞。
因此,本文所公开的各种实施例与获取源信息和源信息的替代版本相关,所述源信息的替代版本在可接受公差内(例如,在架构上可觉察效应的可接受公差内)达到源信息的相同可觉察功能性(本文以相同功能性(thesamefunctionality)来指代)。应该理解,几乎可采用任何合适的源信息和其任何替代版本,而不脱离本公开的范围。在一些实施例中,源可包括诸如用于ISA架构的指令的指令。补充或者取代指令,源信息可包括源数据,并且替代版本可包括源数据的可替换的形式或版本。同样地,应该理解,将源转换为其替代版本(例如,软件方法和/或硬件方法)的任何合适的方式均可视为是在本公开的范围内。出于示例性目的,尽管这样的实施例不是限制性的,但是本文所呈现的描述和图形分别将源指令和源指令的转译指代为源信息和源信息的替代版本。
一个示范性方法包括,一旦被引导以检索指令时,就对用于该指令的地址进行散列使得可确定是否存在用于该指令的替代版本。实施散列以确定是否存在达到相同功能性的指令的替代版本,诸如本地转译(例如,在源指令集架构和本地微操作集架构之间的、用于可由微处理器所获取以用于执行的各种指令的转译)。该示范性方法进一步包括,如果散列导致确定这样的替代版本存在,则中止(abort)检索指令并且检索和执行替代版本。
本文的论述将频繁提到“检索(retrieving)”指令以及如果存在某些条件,那么随后中止该检索。在一些实施例中,“检索”指令可包括对指令进行获取。进一步地,当这样的中止发生时,则检索过程终止。终止典型性地在检索过程完成之前发生。例如,在一个场景中,中止检索可在当正在检索用于指令的物理地址时发生。在另一个场景中,中止检索可在检索用于指令的物理地址之后但在从存储器检索该指令之前发生。在检索过程完成之前中止检索可节省花费在访问和从存储器检索源的时间。应该理解,如本文所使用的,检索不限于获取场景,其中获取典型性地在解码之前完成。例如,可在解码期间、在解码之前或在任何合适的点检索但中止指令。
对于在源信息和该信息的经转译版本之间进行映射和转译而言存在各种不同的可能性。通过确定替代版本是否存在并且中止检索指令,例如,ISA指令,如果替代版本的确存在,那么微处理器通过避免解码操作可相对于解码源ISA指令的微处理器提供增强的性能。附加的性能增强可在设定中实现,在该设定中替代版本通过对操作的改变来提供经优化的性能,其允许替代版本比源ISA指令更快地进行执行。
图1示意性描绘了微处理器100的实施例,可结合本文所描述的系统和方法来采用所述微处理器100。微处理器100可包括处理器寄存器109。进一步地,微处理器100可包括和/或可与存储器层级结构110通信,该存储器层级结构110可包括L1处理器高速缓存110A、L2处理器高速缓存110B、L3处理器高速缓存110C、主存储器110D(例如,一个或多个DRAM芯片)、二级存储110E(例如,磁和/或光存储单元)和/或三级存储110F(例如,磁带群)。应该理解,这些示范性的存储器/存储部件按照访问时间和容量的递增顺序列出,尽管可能有例外。
存储器控制器110H可用来处置协议并且提供主存储器110D的所要求的信号接口以及用来调度存储器访问。存储器控制器110H可在处理器裸片(die)或在分开的裸片上实现。可以理解,上文所提供的存储器层级结构是非限制性的并且可使用其他存储器层级结构,而不脱离本公开的范围。
微处理器100还包括管线,其在图1中以简化形式示出为管线102。管线可允许多于一个指令并发地处于检索和执行的不同阶段中。换句话说,可通过管线102中所包括的各阶段(其中包括获取、解码、执行和回写阶段)来传递指令集,同时由管线102从存储器中检索并作用于另一个指令和/或数据。因此,管线102中的下游阶段可被利用,同时上游阶段正在等待存储器返回指令和/或数据等等。该方法可相对于以单独的、串行的方式检索和执行指令和/或数据的方法而言,潜在地加速由微处理器进行的指令和数据处理。
如图1所示,示范性管线102包括获取逻辑120、本地转译缓冲区130、解码逻辑132、调度逻辑134、执行逻辑136、mem(存储)逻辑138以及回写逻辑140。获取逻辑120从指令高速缓存获取所选择的指令用于执行。在图1中所示的示例中,获取逻辑120包括指令转译后备缓冲区122,用于将所选择的指令的线性地址转译为用于待获取以执行的指令的物理地址。如本文所使用的,用于指令的线性地址是指由页表所转译/重映射到与指令存储于该处的存储器中的位置相关联的物理地址的地址。在一些实施例中,线性地址可包括目录、表和/或偏移条目,所述偏移条目可识别可在该处发现用于指令的物理地址的页目录、页表和/或页表中的页帧位置。
指令转译后备缓冲区122几乎可对于那些指令实施将线性地址转译为物理地址的任何合适的方式。例如,在一些实施例中,指令转译后备缓冲区122可包括内容可寻址存储器,该内容可寻址存储器存储将用于指令的线性地址映射到用于那些指令的物理地址的页表的一部分。
获取逻辑120还确定是否存在用于所选择的指令的本地转译。如果这样的本地转译存在,那么系统中止指令获取并且替代地发送本地转译用于执行。在图1所描绘的实施例中,获取逻辑120包括转译地址高速缓存124用于存储本地转译的地址。
几乎任何合适的数据存储架构和逻辑均可用于转译地址高速缓存124。例如,图2示意性示出了用作转译地址高速缓存的4路(way)关联高速缓存200的实施例。在图2所示的实施例中,1024个转译地址条目可存储在4路的任何一个中,其取决于所选择的地址方案,每一路包括256个数据位置。然而,应该理解,一些实施例可具有更少的数据路和/或数据位置而其他实施例可包括更多的数据路和/或数据位置,而不脱离本公开的范围。
继续图1,获取逻辑120包括物理地址多路复用器126,该物理地址多路复用器126对从指令转译后备缓冲区122和转译地址高速缓存124中接收的物理地址进行多路复用并且将其分布到指令高速缓存128。反过来,指令高速缓存128参照用于那些指令和本地转译的物理地址来检索所存储以用于由微处理器100执行的指令和本地转译。如果获取逻辑120确定针对所选择的指令存在本地转译,则从指令高速缓存128检索该本地转移并且可被转发到可选的本地转译缓冲区130以为最终分布到调度逻辑134做准备。可替代地,如果获取逻辑120确定针对所选择的指令不存在本地转译,那么从指令高速缓存128检索所选择的指令并且转发到解码逻辑132。解码逻辑132例如通过解析操作码、操作数以及寻址模式来解码所选择的指令,并且生成一个或多个本地指令或微操作的经解码集合以为分布到调度逻辑134做准备。调度逻辑134调度本地转译和经解码指令用于由执行逻辑136执行。
图1中所描绘的实施例示出了指令高速缓存128,其包括物理索引物理标签(physically-indexed-physically-tagged(PIPT))指令高速缓存,使得可与从指令转译后备缓冲区122中检索源地址并发地从转译地址高速缓存124中检索用于本地转译的地址。然而,应该理解,可随着任何合适的指令高速缓存128来采用根据本公开的实施例。例如,在一些实施例中,指令高速缓存128可包括线性索引物理标签(linear-indexed-physically-tagged(LIPT))指令高速缓存。在这样的实施例中,获取逻辑可并发地从指令转译后备缓冲区中检索用于源的地址、从转译地址高速缓存中检索用于本地转译的地址、以及从LIPT指令高速缓存中检索源。如果存在可用的本地转译,那么可丢弃指令并且可基于用于本地转译的地址从LIPT高速缓存检索本地转译以用于执行。如果不存在可用的本地转译版本,那么可解码指令并且随后加以执行。
管线102还可包括用于实施加载和/或存储操作的mem逻辑138和用于将操作的结果写到诸如寄存器109的适当的位置的回写逻辑140。一旦进行回写,则微处理器输入由指令或多个指令所修改的状态,使得导致所提交状态的操作的结果可能无可挽回。
应该理解,管线102中所示的上述阶段是示例性的典型RISC实现方案,并且不意味着是限制性的。例如,在一些实施例中,VLIW技术可在某些管线化阶段的上游实现。在一些其他实施例中,调度逻辑可包括在微处理器的获取逻辑和/或解码逻辑中。更普遍地,微处理器可包括获取、解码和执行逻辑,而mem和回写功能性由执行逻辑所执行。本公开同等地适用于这些和其他微处理器实现方案。
在所描述的示例中,可以一次一个或者一次多于一个地获取和执行指令,这可能要求多个时钟周期。在该时间期间,数据路径的有效部分可能是未被使用的。补充或者代替单个指令获取,可使用预取方法以改进性能以及避免与读取和存储操作(即指令的读取以及将这样的指令加载到处理器寄存器和/或执行队列中)相关联的时延瓶颈。因此,应予以理解的是,几乎可使用获取、调度和分派指令的任意合适的方式,而不脱离本公开的范围。
图3A-C示意性示出了用于从指令高速缓存中获取所选择的指令和确定用于所选择的指令的本地转译是否存储在指令高速缓存中的方法300的实施例。当就对于指令确定本地转译是否可用而描述方法300时,应予以理解的是,该场景仅是获取指令和确定是否存在达到与该指令相同功能性的替代版本的例示,并且该方法300不限于下面所述的示例和设定。因此,应予以理解的是,对方法300中所述的过程出于示例性目的而加以安排和和描述,并且不意在加以限制。在一些实施例中,本文所述的方法可包括附加的或可替代的过程,而在一些实施例中,本文所述的方法可包括可被重新排序或省略的一些过程,而不脱离本公开的范围。进一步地,应予以理解的是,可使用包括本文所述硬件的任何合适的硬件来实施本文所述的方法。
转向图3A,在302处,方法300包括正被引导以从指令高速缓存获取所选择的指令。在一些实施例中,可引导获取过程以参照用于所选择的指令的线性地址来检索指令。例如,可响应于到目标指令指针的分支而从指令高速缓存中获取所选择的指令,诸如可因分支预测器或因微处理器管线中的分支验证点而产生的分支。应该理解,过程302可如以下更多细节所描述的包括在指令转译后备缓冲区中查找用于该选择的物理地址。
在一些实施例中,获取所选择的指令可包括从指令转译后备缓冲区中获取用于所选择的指令的物理地址。在这样的实施例中,可根据到目标指令指针的引导来接收用于所选择的指令的线性地址。反过来,可由指令转译后备缓冲区通过参照线性地址以搜索存储在指令后备缓冲区中的物理地址来将线性地址转译成用于所选择的指令的物理地址。如果搜索未发现用于所选择的指令的物理地址,那么该物理地址可经由页走(pagewalk)或经由在更高级别的转译后备缓冲区中的查找来加以确定。不管如何确定物理地址,一旦用于所选择的指令的物理地址被确定,其就被提供到指令高速缓存使得可获得所选择的指令。
在304处,方法300包括对用于所选择的指令的线性地址进行散列以当正在获得用于所选择的指令的物理地址的同时从线性地址生成散列索引。如下以更多细节所描述的,当确定用于所选择的指令的本地转译是否存在时可随后使用散列索引。
例如,到目标指令指针的引导可导致与线性地址到指令转译后备缓冲区的分布一起并发地(在合适的公差内)对线性地址进行散列。然而,应予以理解的是,可在过程流内的任何合适的位置采用实施散列的任何合适的方式,而不脱离本公开的范围。
在一些实施例中,可通过包括在微处理器中的合适的硬件结构来对线性地址进行散列。例如,线性地址可由获取逻辑和/或本地转译地址高速缓存进行散列,尽管几乎任何合适的硬件结构均可用来对线性地址进行散列而不脱离本公开的范围。
可采用种类繁多的散列技术。例如,在一些实施例中,可使用XOR散列函数来生成散列索引。还可通过对线性地址的多个部分进行散列来生成散列索引。在一些其他实施例中,可通过使用线性地址的单个部分来生成散列索引。图4示意性示出了使用XOR散列函数对用于指令的48位线性地址进行散列以生成8位散列索引的方法。在图4中所示的示例中,将位0-7与位8-15进行XOR的结果与位16-23进行XOR以生成8位散列索引。
在一些实施例中,当线性地址被散列时可生成消歧标签。当转译地址高速缓存中的多于一个转译地址条目具有相同散列值时,消歧标签可用来对用于替代版本的各种转译地址条目(例如,用于指令的本地转译的地址条目)加以彼此区别。因此,在一些实施例中,消歧标签可用来消除存储在转译地址高速缓存中的具有同样的转译地址索引的多个转译地址条目的歧义。例如,图4示意性示出了由线性地址中未形成8位散列索引的部分来生成用于48位线性地址的40位消歧标签的方法。因此,在一些实施例中,未被用来生成散列标签的位可用来生成消歧标签。在图4中所示的示例中,位8-48用来形成消歧标签。然而,可采用生成消歧标签的任何合适的方式,而不脱离本公开的范围。
虽然上述论述涉及对线性地址进行散列以从转译地址高速缓存中获得一个或多个转译地址条目,使得根据线性地址来为转译地址条目编索引,但应该予以理解的是,可根据任何合适的地址来为转译地址高速缓存编索引。例如,在一些实施例中,可根据物理地址来为经适当配置的转译地址高速缓存编索引。当两个过程在不同的线性地址处映射到共享库时,根据物理地址为转译地址高速缓存编索引可节省转译地址高速缓存内的空间。在一些这样的场景中,可以在存储器中仅物理加载共享库的一个版本。通过根据物理地址来编索引,共享的映射可引向正在获得的单个条目,而未共享的映射可引向正在获得的不同条目。
转向图3B,示范性方法300在306处包括确定对于正在获取的所选择的源指令是否存在有效本地转译。在一些实施例中,对是否存在有效本地转译的确定(在合适的公差内)与对用于所选择的指令的物理地址的确定、对从指令转译后备缓冲区的地址的检索并发发生。在这样的实施例中,如果确定有效本地转译不存在,那么在这些阶段的一个或多个处进行并发处理可允许物理地址获取在没有惩罚的情况下继续进行。然而,应予以理解的是,在一些实施例中该确定并不需要是并发的。
例如,不管何时实施有效性确定,如果确定有效本地转译存在,那么可通过中止对用于源指令的物理地址的检索来中止获取源指令。反过来,通过避免解码步骤和通过允许替代版本的使用,处理效率可得到增强。
在图3B所示的实施例中,对有效本地转译是否存在的确定包括,在308处,获得用于经散列地址的一个或多个转译地址条目,在310处,将在散列过程期间所生成的消歧标签与使用所获得的转译地址中的每一个而获得的一个或多个转译地址消歧标签加以比较。
转译地址条目存储物理地址,在该物理地址中存储本地转译。转译地址条目可根据与其相关联的转译地址索引而被查找。例如,当对地址进行散列时所生成的散列索引可用来查找转译地址高速缓存中的特定转译地址索引。
在一些实施例中,可经由对特定转译地址索引的查找来获得多于一个的转译地址条目。例如,用来查找用于4路关联高速缓存的转译地址索引的经散列的地址可导致对多达4个转译地址条目的检索。在这样的实施例中,每个转译地址条目具有各自的、区分该条目与具有同样的转译地址索引的其他条目的转译地址消歧标签。将由对地址进行散列所生成的消歧标签与随着各自的转译地址条目所检索的消歧标签加以比较可确定所获得的任何条目是否代表用于有效本地转译的物理地址。在一些实施例中,对消歧标签的比较可包括有效位的比较。在这样的实施例中,仅在有效位设置为预选值的情况下,诸如值为1,才可认定正被比较的标签之间的一致。
在一些实施例中,转译地址条目可包括代表用于本地转译的物理地址的位和代表用于本地转译的所假定的上下文的位。此外,在一些实施例中,转译地址条目可包括与转译和/或转译的各方面相关的一个或多个其他位。图5示意性示出了包括物理地址位、所假定的上下文位以及转译相关位的转译地址条目的实施例。
继续图3B,方法300在312处包括确定在对地址进行散列时所生成的消歧标签是否与随着转译地址条目所获得的任何消歧标签相一致。如果消歧标签不一致,那么方法300前进到330,如图3C所描绘的。如果从转译地址高速缓存所获得的消歧标签与由散列所生成的消歧标签相一致,则该一致就指示获得了有效消歧标签。在一些实施例中,有效消歧标签的存在可引向对有效转译存在的确定。然而,在一些实施例中,只靠有效消歧标签的存在可能无法支持与该标签相关联的条目包括有效本地转译的结论。因此,方法300可在314处进行分支,下面以更多细节加以讨论,或者可替代地可继续到318,如图3C所示。
如上所介绍的,在一些实施例中,转译地址条目可包括用于本地转译的所假定的上下文。如本文所使用的,当前上下文描述了微处理器的当前工作状态并且所假定的上下文描述了本地转译对其有效的微处理器的状态。因此,在一些实施例中,即使识别了用于条目的有效消歧标签,与该消歧标签相关联的条目也可不包括用于当前上下文的有效本地转译。在一些示例中,发出对其而言当前上下文和所假定的上下文不相一致的本地转译可造成执行错误或危险。
应该予以理解的是,上下文可包括在转译地址条目和/或转译地址的任何合适的部分中。在图5中所示的示例中,上下文位示出为正被包括在转译地址条目中。在这样的实施例中,上下文可选地可被加以比较,如在图3C的316处所示。因此,取代前进到318,方法300可选地可在314处进行分支,将用于微处理器的当前上下文与存储在转译地址条目中的所假定的上下文加以比较。转到图3C,在这样的实施例中,方法300可包括在316处确定是否当前上下文与所假定的上下文相一致。在一些实施例中,可将当前上下文与所假定的上下文加以比较以确定一致。在一个示范性场景中,如果所假定的和当前上下文基于一对一比较相一致,那么可认定一致。如果上下文一致,那么方法300继续到318,在该处方法300进行对有效本地转译存在的确定。如果上下文不一致,那么方法300前进到330,在该处方法300进行对有效本地转译不存在的确定。
附加地或可替代地,在一些实施例中,用于所假定的上下文的位可包括在转译地址中,诸如在消歧标签和/或散列中。在这样的实施例中,在地址的一个或多个部分中的所假定的上下文的包含物可允许在转译地址高速缓存内的、具有不同上下文而具有同样线性地址的两个或两个以上条目的并发存储。应该予以理解的是,这样的实施例的实现方案可取决于特定于应用的考虑。例如,在一些设置关联性为低的实施例中,诸如在地址被直接映射的场景中,所假定的上下文可包括在散列中可避免冲突未命中。例如,所假定的上下文可在散列期间被XOR到散列中。在一些其他实施例中,诸如那些用于对附加位进行散列的周期时间影响处理时间多于用于处理相对更宽的消歧标签的时间的情况下,所假定的上下文可添加到消歧标签以避免潜在处理延迟。作为示例,所假定的上下文可附加到消歧标签。而在其他实施例中,所假定的上下文可包括在散列中和在消歧标签中。
一旦确定有效本地转译存在,则在320处,方法300包括中止对指令的获取。当中止发生时,终止获取过程。虽然终止可在指令的获取之后发生,但是在一些实施例中,终止可在获取过程的完成之前发生。例如,在对指令进行获取包括从指令转译后备缓冲区中检索用于指令的物理地址的实施例中,中止对指令进行获取可包括中止从指令转译后备缓冲区中检索物理地址。
在322处,方法300包括将用于本地转译的物理地址发送到指令高速缓存,并且,在324处,从指令高速缓存接收所选择的本地转译。在一些实施例中,一旦从指令高速缓存中接收了所选择的本地转译,就可将其转发到本地转译缓冲区以为最终分布到调度逻辑做准备,其在调度逻辑处将被调度以用于执行。
可替代地,在图3C中所示的实施例中,如果有效本地转译不存在,那么在332处,方法300包括允许从指令高速缓存进行获取以完成。例如,在对指令进行获取包括从指令转译后备缓冲区中检索物理地址的实施例中,在334处,方法300可包括在从指令转译后备缓冲区中接收用于指令的物理地址之后,将用于指令的物理地址发送到指令高速缓存,使得在336处可从指令高速缓存获得指令。
因此,通过确定用于源材料的替代版本的存在,(在如上所述的示例中,是提供了与源指令的相同功能性的本地转译)以及同时获取源材料,本文所述的方法可相对于单独基于源材料进行处理而提供增强的处理。进一步地,通过利用硬件结构来实施并发的确定,本文所述的方法相对于基于软件优化的方案可相对更有效率,特别是在经分支的处理场景中。
本书面描述使用示例来公开本发明,包括最佳模式,并且还使相关领域的普通技术人员能够实践本发明,包括制造和使用任何设备或系统以及实施任何所包含的方法。本发明的可专利范围由权利要求所定义,并且可包括如本领域普通技术人员所理解的其他示例。这样的其他示例意在处于权利要求的范围之内。
Claims (9)
1.一种微处理器,包括获取单元可操作以:
获取指令;
对用于所述指令的地址进行散列来确定达到与所述指令相同功能性的所述指令的替代版本是否存在,包括经由用于所述指令的线性地址的一个或多个部分的散列来生成散列索引以及从用于所述指令的所述线性地址的其他部分来生成消歧标签;以及
如果所述散列导致确定这样的替代版本的确存在,那么中止所述获取和检索,包括避免解码,并且发送所述替代版本用于执行。
2.根据权利要求1所述的微处理器,其中所述获取单元进一步可操作以在正在获取所述指令的同时对所述地址进行散列。
3.根据权利要求1所述的微处理器,其中所述获取单元进一步可操作以:
根据从所述散列生成的散列索引、通过参考所述微处理器的转译地址高速缓存中的转译地址索引来确定所述替代版本是否存在;以及
如果所述替代版本存在,那么从所述转译地址高速缓存中检索用于所述替代版本的物理地址。
4.根据权利要求3所述的微处理器,其中所述获取单元进一步可操作以:
根据所述转译地址索引来获得存储在所述转译地址高速缓存中的一个或多个转译地址条目;
将从所述散列所生成的消歧标签和与所获得的所述一个或多个转译地址条目中的每一个相关联的消歧标签加以比较;以及
如果从所述散列所生成的所述消歧标签与从所述转译地址高速缓存中所获得的消歧标签相一致,那么确定所述替代版本存在。
5.根据权利要求3所述的微处理器,其中所述获取单元进一步可操作以:
将用于所述微处理器的当前上下文与所假定的上下文加以比较,所述当前上下文描述所述微处理器的当前工作状态,所述所假定的上下文描述所述替代版本对其有效的所述微处理器的状态;以及
如果所述当前上下文与所述所假定的上下文相一致,那么确定所述替代版本存在,
其中所述所假定的上下文包括在所述散列索引、消歧标签、或者与所述散列索引和所述消歧标签相关联的一个或多个转译地址条目的一个或多个中。
6.根据权利要求3所述的微处理器,进一步包括获取单元可操作以:
将用于所述替代版本的所述物理地址发送到指令高速缓存,使得能够从所述指令高速缓存中获得所述替代版本;以及
将从所述指令高速缓存中获得的所述替代版本发送到调度单元用于调度所述替代版本以执行。
7.根据权利要求1所述的微处理器,进一步包括转译地址高速缓存,配置为针对存储在所述转译地址高速缓存内每个替代版本而存储转译地址条目,所述转译地址条目包括用于所述替代版本的物理地址和用于描述所述替代版本对其有效的所述微处理器的状态的所假定的上下文。
8.根据权利要求1所述的微处理器,进一步包括从包括线性索引物理标签的指令高速缓存和物理索引物理标签的指令高速缓存的组中所选择的指令高速缓存。
9.根据权利要求1所述的微处理器,其中所述获取单元进一步可操作以参照用于所述指令的线性地址,从指令转译后备缓冲区中检索用于所述指令的物理地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/419323 | 2012-03-13 | ||
US13/419,323 | 2012-03-13 | ||
US13/419,323 US10146545B2 (en) | 2012-03-13 | 2012-03-13 | Translation address cache for a microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309644A CN103309644A (zh) | 2013-09-18 |
CN103309644B true CN103309644B (zh) | 2016-08-03 |
Family
ID=49044138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310079112.6A Active CN103309644B (zh) | 2012-03-13 | 2013-03-13 | 用于微处理器的转译地址高速缓存 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10146545B2 (zh) |
CN (1) | CN103309644B (zh) |
DE (1) | DE102013201767B4 (zh) |
TW (1) | TWI515567B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9588902B2 (en) * | 2012-12-04 | 2017-03-07 | Advanced Micro Devices, Inc. | Flexible page sizes for virtual memory |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9330020B2 (en) * | 2013-12-27 | 2016-05-03 | Intel Corporation | System, apparatus, and method for transparent page level instruction translation |
CN103942161B (zh) * | 2014-04-24 | 2017-02-15 | 杭州冰特科技有限公司 | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10380100B2 (en) | 2016-04-27 | 2019-08-13 | Western Digital Technologies, Inc. | Generalized verification scheme for safe metadata modification |
US10380069B2 (en) | 2016-05-04 | 2019-08-13 | Western Digital Technologies, Inc. | Generalized write operations verification method |
KR20180087925A (ko) * | 2017-01-25 | 2018-08-03 | 삼성전자주식회사 | 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치 |
EP3422192B1 (en) * | 2017-06-28 | 2020-08-12 | Arm Ltd | Address translation data invalidation |
US10997066B2 (en) * | 2018-02-20 | 2021-05-04 | Samsung Electronics Co., Ltd. | Storage devices that support cached physical address verification and methods of operating same |
US11175921B2 (en) * | 2018-05-15 | 2021-11-16 | International Business Machines Corporation | Cognitive binary coded decimal to binary number conversion hardware for evaluating a preferred instruction variant based on feedback |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
EP4172757A1 (en) | 2020-06-29 | 2023-05-03 | Aurora Labs Ltd | Efficient controller data generation and extraction |
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
US20230057623A1 (en) * | 2021-08-23 | 2023-02-23 | Intel Corporation | Issue, execution, and backend driven frontend translation control for performant and secure data-space guided micro-sequencing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470428B1 (en) * | 1997-11-13 | 2002-10-22 | Virata Limited | Sequential memory access cache controller |
CN1823322A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于程序代码转换的共享代码缓存方法及设备 |
CN101984403A (zh) * | 2009-06-01 | 2011-03-09 | 威盛电子股份有限公司 | 微处理器及其执行的方法 |
Family Cites Families (184)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3815101A (en) | 1972-11-08 | 1974-06-04 | Sperry Rand Corp | Processor state and storage limits register auto-switch |
US3950729A (en) | 1973-08-31 | 1976-04-13 | Nasa | Shared memory for a fault-tolerant computer |
US4654790A (en) | 1983-11-28 | 1987-03-31 | Amdahl Corporation | Translation of virtual and real addresses to system addresses |
US4812981A (en) | 1985-10-24 | 1989-03-14 | Prime Computer, Inc. | Memory management system improving the efficiency of fork operations |
US4797814A (en) | 1986-05-01 | 1989-01-10 | International Business Machines Corporation | Variable address mode cache |
JP2589713B2 (ja) | 1987-11-20 | 1997-03-12 | 株式会社日立製作所 | データプロセッサ及びデータ処理システム |
US5179669A (en) | 1988-08-22 | 1993-01-12 | At&T Bell Laboratories | Multiprocessor interconnection and access arbitration arrangement |
JPH02288927A (ja) | 1989-01-18 | 1990-11-28 | Nec Corp | 共有メモリ管理方式 |
CA2011807C (en) | 1989-03-20 | 1999-02-23 | Katsumi Hayashi | Data base processing system using multiprocessor system |
JPH0354660A (ja) | 1989-07-21 | 1991-03-08 | Nec Corp | マルチプロセッサシステムにおける共有メモリ管理方式 |
US5123094A (en) | 1990-01-26 | 1992-06-16 | Apple Computer, Inc. | Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers |
JPH04182858A (ja) | 1990-11-19 | 1992-06-30 | Mitsubishi Electric Corp | 共有メモリ管理方式 |
US5245702A (en) | 1991-07-05 | 1993-09-14 | Sun Microsystems, Inc. | Method and apparatus for providing shared off-screen memory |
US5696925A (en) | 1992-02-25 | 1997-12-09 | Hyundai Electronics Industries, Co., Ltd. | Memory management unit with address translation function |
US5414824A (en) | 1993-06-30 | 1995-05-09 | Intel Corporation | Apparatus and method for accessing a split line in a high speed cache |
US5446854A (en) | 1993-10-20 | 1995-08-29 | Sun Microsystems, Inc. | Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes |
GB2284494B (en) | 1993-11-26 | 1998-09-09 | Hitachi Ltd | Distributed shared memory management system |
US5526504A (en) | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
US5956753A (en) | 1993-12-30 | 1999-09-21 | Intel Corporation | Method and apparatus for handling speculative memory access operations |
GB2287111B (en) * | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
JPH0877347A (ja) | 1994-03-08 | 1996-03-22 | Texas Instr Inc <Ti> | 画像/グラフィックス処理用のデータ処理装置およびその操作方法 |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
US5963984A (en) | 1994-11-08 | 1999-10-05 | National Semiconductor Corporation | Address translation unit employing programmable page size |
US6813699B1 (en) | 1995-06-02 | 2004-11-02 | Transmeta Corporation | Speculative address translation for processor using segmentation and optional paging |
US5999189A (en) | 1995-08-04 | 1999-12-07 | Microsoft Corporation | Image compression to reduce pixel and texture memory requirements in a real-time image generator |
US5949785A (en) | 1995-11-01 | 1999-09-07 | Whittaker Corporation | Network access communications system and methodology |
US6298390B1 (en) | 1995-11-22 | 2001-10-02 | Sun Microsystems, Inc. | Method and apparatus for extending traditional operating systems file systems |
US6091897A (en) | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US6711667B1 (en) | 1996-06-28 | 2004-03-23 | Legerity, Inc. | Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US5870582A (en) | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
US6012132A (en) | 1997-03-31 | 2000-01-04 | Intel Corporation | Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table |
AUPO647997A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
US6091987A (en) | 1998-04-29 | 2000-07-18 | Medtronic, Inc. | Power consumption reduction in medical devices by employing different supply voltages |
US6591355B2 (en) | 1998-09-28 | 2003-07-08 | Technion Research And Development Foundation Ltd. | Distributed shared memory system with variable granularity |
US6862635B1 (en) | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US7007075B1 (en) | 1998-12-09 | 2006-02-28 | E-Lysium Transaction Systems Inc. | Flexible computer resource manager |
US6297832B1 (en) | 1999-01-04 | 2001-10-02 | Ati International Srl | Method and apparatus for memory access scheduling in a video graphics system |
US6362826B1 (en) | 1999-01-15 | 2002-03-26 | Intel Corporation | Method and apparatus for implementing dynamic display memory |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6519694B2 (en) | 1999-02-04 | 2003-02-11 | Sun Microsystems, Inc. | System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6714904B1 (en) | 1999-10-13 | 2004-03-30 | Transmeta Corporation | System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions |
US6574749B1 (en) | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US6751583B1 (en) | 1999-10-29 | 2004-06-15 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating a target processor using binary translation |
US6499090B1 (en) | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
US6625715B1 (en) | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
US20010049818A1 (en) | 2000-02-09 | 2001-12-06 | Sanjeev Banerjia | Partitioned code cache organization to exploit program locallity |
US6457115B1 (en) | 2000-06-15 | 2002-09-24 | Advanced Micro Devices, Inc. | Apparatus and method for generating 64 bit addresses using a 32 bit adder |
ATE259081T1 (de) | 2000-07-06 | 2004-02-15 | Texas Instruments Inc | Mehrprozessorsystem prüfungsschaltung |
US6636223B1 (en) | 2000-08-02 | 2003-10-21 | Ati International. Srl | Graphics processing system with logic enhanced memory and method therefore |
US7162612B2 (en) | 2000-08-16 | 2007-01-09 | Ip-First, Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
EP1182571B1 (en) | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
EP1213650A3 (en) | 2000-08-21 | 2006-08-30 | Texas Instruments France | Priority arbitration based on current task and MMU |
US6742104B2 (en) | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Master/slave processing system with shared translation lookaside buffer |
US6883079B1 (en) | 2000-09-01 | 2005-04-19 | Maxtor Corporation | Method and apparatus for using data compression as a means of increasing buffer bandwidth |
US6859208B1 (en) | 2000-09-29 | 2005-02-22 | Intel Corporation | Shared translation address caching |
US20020069402A1 (en) | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
JP2002169696A (ja) | 2000-12-04 | 2002-06-14 | Mitsubishi Electric Corp | データ処理装置 |
US6925547B2 (en) | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US7356026B2 (en) | 2000-12-14 | 2008-04-08 | Silicon Graphics, Inc. | Node translation and protection in a clustered multiprocessor system |
US6560690B2 (en) * | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
US6549997B2 (en) | 2001-03-16 | 2003-04-15 | Fujitsu Limited | Dynamic variable page size translation of addresses |
US7073044B2 (en) | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
US6658538B2 (en) | 2001-06-21 | 2003-12-02 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control |
US6523104B2 (en) | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
US6901505B2 (en) | 2001-08-09 | 2005-05-31 | Advanced Micro Devices, Inc. | Instruction causing swap of base address from segment register with address from another register |
US6757784B2 (en) | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US6823433B1 (en) | 2001-11-13 | 2004-11-23 | Advanced Micro Devices, Inc. | Memory management system and method for providing physical address based memory access security |
US6877077B2 (en) | 2001-12-07 | 2005-04-05 | Sun Microsystems, Inc. | Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency |
EP1331539B1 (en) | 2002-01-16 | 2016-09-28 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
US6851008B2 (en) | 2002-03-06 | 2005-02-01 | Broadcom Corporation | Adaptive flow control method and apparatus |
DE60322366D1 (de) | 2002-04-18 | 2008-09-04 | Advanced Micro Devices Inc | Rechnersystem mit einem für einen sicheren ausführungsmodus geeigneten cpu und einem sicherheitsdienst-prozessor die über einen gesicherten kommunikationsweg miteinander verbunden sind |
US8285743B2 (en) | 2002-06-24 | 2012-10-09 | International Business Machines Corporation | Scheduling viewing of web pages in a data processing system |
US7124327B2 (en) | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
EP1391820A3 (en) | 2002-07-31 | 2007-12-19 | Texas Instruments Incorporated | Concurrent task execution in a multi-processor, single operating system environment |
US6950925B1 (en) | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
GB2392998B (en) | 2002-09-16 | 2005-07-27 | Advanced Risc Mach Ltd | Handling interrupts during multiple access program instructions |
GB2393274B (en) | 2002-09-20 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system having an external instruction set and an internal instruction set |
US7398525B2 (en) | 2002-10-21 | 2008-07-08 | International Business Machines Corporation | Resource scheduling in workflow management systems |
US6981083B2 (en) | 2002-12-05 | 2005-12-27 | International Business Machines Corporation | Processor virtualization mechanism via an enhanced restoration of hard architected states |
US20040122800A1 (en) | 2002-12-23 | 2004-06-24 | Nair Sreekumar R. | Method and apparatus for hardware assisted control redirection of original computer code to transformed code |
US7191349B2 (en) | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US7203932B1 (en) | 2002-12-30 | 2007-04-10 | Transmeta Corporation | Method and system for using idiom recognition during a software translation process |
US20040128448A1 (en) | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7139876B2 (en) | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache |
US7168077B2 (en) | 2003-01-31 | 2007-01-23 | Handysoft Corporation | System and method of executing and controlling workflow processes |
EP1447742A1 (en) | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
US6965983B2 (en) | 2003-02-16 | 2005-11-15 | Faraday Technology Corp. | Simultaneously setting prefetch address and fetch address pipelined stages upon branch |
US6963963B2 (en) | 2003-03-25 | 2005-11-08 | Freescale Semiconductor, Inc. | Multiprocessor system having a shared main memory accessible by all processor units |
ATE460699T1 (de) | 2003-03-27 | 2010-03-15 | Nxp Bv | Aufzeichnen von aktivität nach sprüngen |
US7003647B2 (en) | 2003-04-24 | 2006-02-21 | International Business Machines Corporation | Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory |
US7107441B2 (en) | 2003-05-21 | 2006-09-12 | Intel Corporation | Pre-boot interpreted namespace parsing for flexible heterogeneous configuration and code consolidation |
US7082508B2 (en) | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US7124255B2 (en) | 2003-06-30 | 2006-10-17 | Microsoft Corporation | Message based inter-process for high volume data |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7062631B1 (en) | 2003-07-17 | 2006-06-13 | Transmeta Corporation | Method and system for enforcing consistent per-physical page cacheability attributes |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050050013A1 (en) | 2003-08-28 | 2005-03-03 | Sharp Laboratories Of America, Inc. | System and method for policy-driven device queries |
US7010648B2 (en) | 2003-09-08 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor |
US7921300B2 (en) | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
US7321958B2 (en) | 2003-10-30 | 2008-01-22 | International Business Machines Corporation | System and method for sharing memory by heterogeneous processors |
US7159095B2 (en) | 2003-12-09 | 2007-01-02 | International Business Machines Corporation | Method of efficiently handling multiple page sizes in an effective to real address translation (ERAT) table |
US7730489B1 (en) | 2003-12-10 | 2010-06-01 | Oracle America, Inc. | Horizontally scalable and reliable distributed transaction management in a clustered application server environment |
US7107411B2 (en) | 2003-12-16 | 2006-09-12 | International Business Machines Corporation | Apparatus method and system for fault tolerant virtual memory management |
US7496732B2 (en) | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7340565B2 (en) | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US7293164B2 (en) | 2004-01-14 | 2007-11-06 | International Business Machines Corporation | Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions |
US7082075B2 (en) | 2004-03-18 | 2006-07-25 | Micron Technology, Inc. | Memory device and method having banks of different sizes |
US7383414B2 (en) | 2004-05-28 | 2008-06-03 | Oracle International Corporation | Method and apparatus for memory-mapped input/output |
US7234038B1 (en) | 2004-05-28 | 2007-06-19 | Sun Microsystems, Inc. | Page mapping cookies |
US20060004984A1 (en) | 2004-06-30 | 2006-01-05 | Morris Tonia G | Virtual memory management system |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US7257699B2 (en) | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7194604B2 (en) | 2004-08-26 | 2007-03-20 | International Business Machines Corporation | Address generation interlock resolution under runahead execution |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US8001294B2 (en) | 2004-09-28 | 2011-08-16 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a compressed network in a multi-processing system |
US7340582B2 (en) | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
US8843727B2 (en) | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US20060149931A1 (en) | 2004-12-28 | 2006-07-06 | Akkary Haitham | Runahead execution in a central processing unit |
US8255882B2 (en) | 2004-12-30 | 2012-08-28 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
US7437517B2 (en) | 2005-01-11 | 2008-10-14 | International Business Machines Corporation | Methods and arrangements to manage on-chip memory to reduce memory latency |
US20060174228A1 (en) | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7948896B2 (en) | 2005-02-18 | 2011-05-24 | Broadcom Corporation | Weighted-fair-queuing relative bandwidth sharing |
US7209405B2 (en) | 2005-02-23 | 2007-04-24 | Micron Technology, Inc. | Memory device and method having multiple internal data buses and memory bank interleaving |
TWI309378B (en) | 2005-02-23 | 2009-05-01 | Altek Corp | Central processing unit having a micro-code engine |
US7447869B2 (en) | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US20060236074A1 (en) * | 2005-04-14 | 2006-10-19 | Arm Limited | Indicating storage locations within caches |
US20100161901A9 (en) * | 2005-04-14 | 2010-06-24 | Arm Limited | Correction of incorrect cache accesses |
DE102005021749A1 (de) | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US7739668B2 (en) | 2005-05-16 | 2010-06-15 | Texas Instruments Incorporated | Method and system of profiling applications that use virtual memory |
US20060277398A1 (en) | 2005-06-03 | 2006-12-07 | Intel Corporation | Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline |
US7814292B2 (en) | 2005-06-14 | 2010-10-12 | Intel Corporation | Memory attribute speculation |
US20070067505A1 (en) | 2005-09-22 | 2007-03-22 | Kaniyur Narayanan G | Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware |
JP2007109116A (ja) | 2005-10-17 | 2007-04-26 | Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan | 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体 |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7616218B1 (en) | 2005-12-05 | 2009-11-10 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives |
US7519781B1 (en) | 2005-12-19 | 2009-04-14 | Nvidia Corporation | Physically-based page characterization data |
US7512767B2 (en) | 2006-01-04 | 2009-03-31 | Sony Ericsson Mobile Communications Ab | Data compression method for supporting virtual memory management in a demand paging system |
US7653803B2 (en) | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
JP4890033B2 (ja) | 2006-01-19 | 2012-03-07 | 株式会社日立製作所 | 記憶装置システム及び記憶制御方法 |
US7545382B1 (en) | 2006-03-29 | 2009-06-09 | Nvidia Corporation | Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation |
US20070240141A1 (en) | 2006-03-30 | 2007-10-11 | Feng Qin | Performing dynamic information flow tracking |
JP5010164B2 (ja) | 2006-03-31 | 2012-08-29 | 株式会社日立製作所 | サーバ装置及び仮想計算機の制御プログラム |
US8621120B2 (en) | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US8035648B1 (en) | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
US8706975B1 (en) | 2006-11-01 | 2014-04-22 | Nvidia Corporation | Memory access management block bind system and method |
CN100485689C (zh) | 2007-01-30 | 2009-05-06 | 浪潮通信信息系统有限公司 | 基于文件系统缓存的数据加速查询方法 |
WO2008097710A2 (en) | 2007-02-02 | 2008-08-14 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
CN101042670A (zh) | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种指令异常处理方法 |
US7895421B2 (en) | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
US7712092B2 (en) | 2007-10-01 | 2010-05-04 | The Board Of Trustees Of The Leland Stanford Junior University | Binary translation using peephole translation rules |
US7925923B1 (en) | 2008-01-31 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine in response to failure of an instruction to execute |
US20090327661A1 (en) | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US8145890B2 (en) | 2009-02-12 | 2012-03-27 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
US20110078425A1 (en) * | 2009-09-25 | 2011-03-31 | Shah Manish K | Branch prediction mechanism for predicting indirect branch targets |
US8775153B2 (en) | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
TWI574155B (zh) | 2010-03-29 | 2017-03-11 | 威盛電子股份有限公司 | 資料預取方法、電腦程式產品以及微處理器 |
US8479176B2 (en) | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US8719625B2 (en) | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US8627044B2 (en) | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
KR101612594B1 (ko) | 2011-01-27 | 2016-04-14 | 소프트 머신즈, 인크. | 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑 |
WO2013100996A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Binary translation in asymmetric multiprocessor system |
US8898642B2 (en) | 2012-02-16 | 2014-11-25 | Unisys Corporation | Profiling and sequencing operators executable in an emulated computing system |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9384001B2 (en) | 2012-08-15 | 2016-07-05 | Nvidia Corporation | Custom chaining stubs for instruction code translation |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
-
2012
- 2012-03-13 US US13/419,323 patent/US10146545B2/en active Active
-
2013
- 2013-02-04 DE DE102013201767.7A patent/DE102013201767B4/de active Active
- 2013-03-12 TW TW102108698A patent/TWI515567B/zh active
- 2013-03-13 CN CN201310079112.6A patent/CN103309644B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470428B1 (en) * | 1997-11-13 | 2002-10-22 | Virata Limited | Sequential memory access cache controller |
CN1823322A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于程序代码转换的共享代码缓存方法及设备 |
CN101984403A (zh) * | 2009-06-01 | 2011-03-09 | 威盛电子股份有限公司 | 微处理器及其执行的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103309644A (zh) | 2013-09-18 |
US20130246709A1 (en) | 2013-09-19 |
TW201407348A (zh) | 2014-02-16 |
DE102013201767B4 (de) | 2021-12-02 |
DE102013201767A1 (de) | 2013-09-19 |
TWI515567B (zh) | 2016-01-01 |
US10146545B2 (en) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309644B (zh) | 用于微处理器的转译地址高速缓存 | |
US10241795B2 (en) | Guest to native block address mappings and management of native code storage | |
EP2668565B1 (en) | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor | |
US7003629B1 (en) | System and method of identifying liveness groups within traces stored in a trace cache | |
JP5218998B2 (ja) | バッファを用いて高効率でロード処理を実行する方法およびプログラム | |
JP5065298B2 (ja) | 効率的なメモリ階層管理 | |
US20180129607A1 (en) | Variable caching structure for managing physical storage | |
CN101493762B (zh) | 处理数据的方法和设备 | |
US9891915B2 (en) | Method and apparatus to increase the speed of the load access and data return speed path using early lower address bits | |
CN107818053B (zh) | 用于存取高速缓存的方法与装置 | |
US20200210191A1 (en) | Exit history based branch prediction | |
US11403222B2 (en) | Cache structure using a logical directory | |
US20180181329A1 (en) | Memory aware reordered source | |
CN104424128B (zh) | 变长指令字处理器系统和方法 | |
CN112527395A (zh) | 数据预取方法和数据处理装置 | |
CN114600080A (zh) | 解耦访问执行处理 | |
TW201407470A (zh) | 分支預測功率縮減 | |
US20140115264A1 (en) | Memory device, processor, and cache memory control method | |
JP7025100B2 (ja) | アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理 | |
US6516405B1 (en) | Method and system for safe data dependency collapsing based on control-flow speculation | |
US20080065834A1 (en) | Method to Prevent Operand Data with No Locality from Polluting the Data Cache | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
US20220261350A1 (en) | Promoting Prefetched Data from a Cache Memory to Registers in a Processor | |
US7694110B1 (en) | System and method of implementing microcode operations as subroutines |
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 |