CN111133421A - 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词 - Google Patents
在无地址转换的情况下操作的加载存储单元中处理有效地址同义词 Download PDFInfo
- Publication number
- CN111133421A CN111133421A CN201880061956.9A CN201880061956A CN111133421A CN 111133421 A CN111133421 A CN 111133421A CN 201880061956 A CN201880061956 A CN 201880061956A CN 111133421 A CN111133421 A CN 111133421A
- Authority
- CN
- China
- Prior art keywords
- instruction
- entry
- effective address
- address
- ert
- 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
- 238000013519 translation Methods 0.000 title description 31
- 230000004044 response Effects 0.000 claims abstract description 34
- 238000001514 detection method Methods 0.000 claims abstract description 25
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 75
- 238000000034 method Methods 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 36
- 238000003860 storage Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 2
- 230000014616 translation Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 101150068276 ERT1 gene Proteins 0.000 description 7
- 102100024193 Mitogen-activated protein kinase 1 Human genes 0.000 description 7
- 108700015928 Mitogen-activated protein kinase 13 Proteins 0.000 description 7
- 101100427545 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ULP2 gene Proteins 0.000 description 7
- 239000000872 buffer Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000011010 flushing procedure Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 101100310497 Arabidopsis thaliana SMT2 gene Proteins 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 101150081243 STA1 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 101100161473 Arabidopsis thaliana ABCB25 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100096893 Mus musculus Sult2a1 gene Proteins 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 230000003936 working memory 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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
-
- 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
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/681—Multi-level TLB, e.g. microTLB and main TLB
-
- 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
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
描述了用于由加载‑存储单元(LSU)从乱序(OoO)窗口发出多个指令的技术方案。该发出包括:响应于确定第一指令正在使用第一有效地址,该第一有效地址对应于第一实地址,来在有效真实表(ERT)中创建ERT条目,该ERT条目将第一有效地址映射到第一真实地址。此外,所述执行包括响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:在同义词检测表(SDT)中创建SDT条目,其中SDT条目将第二有效地址映射到所述ERT条目,以及通过用第一有效地址替换第二指令中的第二有效地址来重新启动第二指令。
Description
技术领域
本发明的实施例大致涉及乱序(OoO)处理器,更具体地说,涉及在没有地址转换的情况下操作的加载存储单元中利用同义词检测表(SDT)来处理有效地址同义词。
背景技术
在OoO处理器中,指令定序单元(ISU)将指令分派到各个发出队列,重命名支持OoO执行的寄存器,将来自各个发出队列的指令发出到执行流水线,完成执行的指令,并处理异常条件。寄存器重命名通常在指令被置于其各自的发出队列中之前由ISU中的映射器逻辑执行。ISU包括一个或多个发出队列,其包含用于跟踪指令之间的依赖性的依赖性矩阵。依赖性矩阵通常包括用于发出队列中的每个指令的一行和一列。
在中央处理单元(CPU)设计的领域中,尤其是对于OoO个处理器,当下一指令不能在随后的时钟周期中执行时,危害对CPU微体系结构中的指令流水线造成了技术挑战,因为可能导致不正确的计算结果。危险的典型类型包括数据危险、结构危险和控制流危险(分支危险)。当展现数据依赖性的指令修改流水线的不同阶段中的数据(例如,读后写(RAW)、写后读(WAR)和写后写(WAW))时,发生数据危险。当两个或两个以上指令同时需要处理器的硬件的一部分时,例如在从存储器检索指令的提取阶段中和在写入数据和/或从存储器读取数据的存储阶段中都访问存储器单元时,发生结构危险。此外,分支危险(也称为控制危险)随着处理器执行的计算机程序中的分支而发生。
发明内容
本发明的实施例包括用于在乱序处理器中实现基于有效地址的加载存储单元的方法、系统和计算机程序产品。用于执行一个或多个指令的处理单元的非限制性示例包括用于在存储器和寄存器之间传送数据的加载-存储单元(LSU)。LSU在乱序(OoO)窗口中执行多个指令。该执行包括,响应于确定第一指令正在使用第一有效地址,该第一有效地址对应于第一真实地址,在有效真实表(ERT)中创建ERT条目,该ERT条目将第一有效地址映射到第一真实地址。此外,所述执行包括响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:在同义词检测表(SDT)中创建SDT条目,其中SDT条目将第二有效地址映射到所述ERT条目,以及通过用第一有效地址替换第二指令中的第二有效地址来重新启动第二指令。
根据本发明的一个或多个实施例,一种用于由处理单元执行一个或多个乱序指令的示例性计算机实现方法包括:由加载存储单元(LSU)从乱序(OoO)窗口发出或执行多个指令。该发出包括:响应于确定第一指令正在使用第一有效地址,该第一有效地址对应于第一实地址,来在有效真实表(ERT)中创建ERT条目,该ERT条目将第一有效地址映射到第一实地址。此外,所述执行包括响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:在同义词检测表(SDT)中创建SDT条目,其中SDT条目将第二有效地址映射到ERT条目,以及通过用第一有效地址替换第二指令中的第二有效地址来重新启动第二指令。
根据一个或多个实施例,一种计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令,其中程序指令可由处理单元执行以使处理单元执行操作。所述操作包括由加载-存储单元(LSU)从乱序(OoO)窗口发出或执行多个指令。该发出包括:响应于确定第一指令正在使用第一有效地址,该第一有效地址对应于第一真实地址,来在有效真实表(ERT)中创建ERT条目,该ERT条目将第一有效地址映射到第一真实地址。此外,所述执行包括响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:在同义词检测表(SDT)中创建SDT条目,其中SDT条目将第二有效地址映射到ERT条目,以及通过用第一有效地址替换第二指令中的第二有效地址来重新启动第二指令。
通过本发明的技术实现了附加的特征和优点。本发明的其它实施例和方面在这里被详细描述,并且被认为是所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。
附图说明
在说明书的结尾处的权利要求中特别指出并清楚地要求了本文描述的专有权的细节。从下面结合附图的详细描述中,本发明的实施例的前述和其它特征和优点将变得显而易见,其中:
图1描述根据本发明的一个或多个实施例的系统的框图,所述系统包括在乱序(OoO)处理器中的基于有效地址的加载存储单元;
图2是OoO处理器的处理器体系结构的示例框图,其中根据本发明的一个或多个实施例实现有效地址目录(EAD)和用于利用该EAD的相关机制;
图3示出了根据本发明的一个或多个实施例的处理核的加载存储单元(LSU);
图4是根据一个说明性实施例的有效地址目录(EAD)结构(L1高速缓存)的示例性块;
图5是根据一个说明性实施例的有效真实表(ERT)结构的示例性框图;
图6示出了根据本发明的一个或多个实施方式的用于访问存储器以由LSU执行指令的示例性方法的流程图;
图7示出了根据本发明的一个或多个实施例的用于重加载ERT的方法的流程图;
图8示出了根据本发明的一个或多个实施例的同义词检测表(SDT)的示例结构;
图9示出了根据本发明的一个或多个实施例的用于执行ERT和SDT EA互换的方法的流程图;以及
图10描绘了用于实现本发明的一个或多个实施例的一些或所有方面的计算机系统的框图。
这里描述的图是说明性的。在不脱离本发明的精神的情况下,可以对其中描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。此外,术语"耦合"及其变型描述了在两个元件之间具有通信路径,并且并不暗示元件之间的在它们之间没有中间元件/连接的直接连接。所有这些变化都被认为是说明书的一部分。
具体实施方式
在此描述的本发明的一个或多个实施例通过动态移除OoO处理器中的有效真实地址表条目,来为乱序(OoO)处理器提供基于有效地址(EA)的加载存储单元(LSU)。本文描述的技术方案使用有效地址目录(EAD)连同有效真实表(ERT)和同义词检测表(SDT)以及其它组件,以便于减小芯片面积,并且进一步改进OoO处理器的定时。
如上所述,由于现代处理器的OoO特性,针对相同的真实地址(RA)可以选择较新的加载指令以在较旧的存储指令之前执行。当较新的加载指令在较旧的存储指令之前针对相同RA执行时,较新的加载指令返回过时的数据,并且处理器流水线中的指令必须从流水线中冲刷(flush)并被重新取出以恢复程序一致性。通常,需要延迟较新的加载指令直到执行针对相同RA的较旧的存储指令为止,使得其它独立指令可执行且不会被不必要地从处理器流水线中冲刷。减少由于针对相同RA在较旧的存储指令之前执行较新的加载指令而导致的处理器流水线冲刷的步骤是识别针对相同RA的并且将OoO执行的加载/存储序列,从而需要处理器流水线冲刷。可替换地,或附加地,从加载-重排序队列中或者从指令提取单元(IFU)中冲刷来自加载-重排序队列的较旧的加载指令和自此的所有后续指令。冲刷指令包括向IFU发送冲刷消息(包括该指令的适当标识符)。
大多数现代计算装置提供对虚拟存储器的支持。虚拟存储器是一种技术,通过该技术,应用程序被给予它们具有连续的工作存储器或地址空间的印象,而实际上物理存储器可能被分段并且甚至可能溢出到盘存储器上。实质上,应用程序被给予对计算设备的存储器的这样观点,其中应用使用EA来访问在该应用可见的EA空间中的看似连续的存储器,该EA然后被转换成实际物理存储器或(一个或多个)存储设备的物理地址以实际执行访问操作。EA是用于指定从发出操作的实体(例如,应用、进程、线程、中断处理程序、内核组件等)的角度来看将由该操作访问的存储器位置的值。
也就是说,如果计算设备不支持虚拟存储器的概念,则EA和物理地址是同一个。然而,如果计算设备支持虚拟存储器,则由应用提交的特定操作的EA被计算设备的存储器映射单元转换成物理地址,该物理地址指定在物理存储器或(一个或多个)存储设备中要执行该操作的位置。
此外,在现代计算设备中,计算设备的处理器使用包括一系列数据处理元件的处理器指令流水线,来处理由实体(例如,应用、进程等)提交的指令(操作)。指令流水线是一种通过将计算机指令的处理分成一系列步骤并在每个步骤的结尾存储来增加指令吞吐量的技术。指令流水线操作便于计算设备的控制电路以最慢步骤的处理速率向处理器指令流水线发出指令,该最慢步骤的处理速率比一次执行所有步骤所需的时间快得多。具有指令流水线的处理器,即流水线处理器,在内部被组织成可以半独立地对单独的作业进行工作的阶段。每一阶段被组织并与串联链中的下一阶段链接,使得每一阶段的输出被馈送到另一阶段,直到流水线的最后阶段。
这种流水线处理器可以采用有序或乱序流水线处理器的形式。对于有序流水线式处理器,按顺序执行指令,以使得如果在流水线的特定阶段数据不可用于要处理的指令,那么可停止通过流水线的指令执行,直到数据可用为止。另一方面,OoO流水线处理器允许处理器避免当执行操作所需要的数据不可用时发生的停顿。OoO处理器指令流水线通过及时用准备好被处理的其它指令填充"空隙"并且然后在流水线的末尾对结果重新排序以使得看起来指令被按顺序处理了,来避免这些停顿。在原始计算机代码中对指令进行排序的方式被称为程序顺序,而在处理器中,按照数据顺序(即,按照数据和操作数在处理器的寄存器中变得可用的顺序)对指令进行处理。
现代处理器指令流水线在指令流过指令流水线时跟踪指令的EA。跟踪指令的EA是重要的,因为每当指令的处理导致异常发生、指令冲刷到先前状态、指令分支到相对于其当前存储器位置的新存储器位置、或者指令完成其执行时,就利用该EA。
跟踪指令的EA在处理器芯片面积、功耗等方面是高代价的。这是因为这些EA具有大的尺寸(例如64位),并且现代处理器指令流水线是深的,即具有许多阶段,使得从处理器指令流水线的获取指令阶段到处理器指令流水线的完成阶段的指令的寿命非常长。在高度多线程的OoO处理器中,即以OoO方式执行来自多个线程的指令的处理器中,这种成本可能进一步增加,因为来自不同地址范围的大量指令可以同时处理,即"正在运行"。
在一个或多个示例中,计算设备使用流水线锁存器、分支信息队列(BIQ)和全局完成表(GCT)的组合来跟踪指令的EA。使用锁存器从流水线的前端传送指令组的基础EA,直到它可以在指令定序器单元(ISU)的GCT中被存放和跟踪为止。存储此数据所需的锁存器的数目大约是流水线的获取阶段与分派阶段之间的流水线阶段的数目。这是浪费的,因为在这些阶段期间通常不需要EA。相反,当指令组流过流水线时,它只是与指令组一起"跟随"的有效载荷数据。此外,该方法导致复制存储,因为分支指令在BIQ和GCT中都具有它们的EA。
因此,已经开发了计算装置,其通过仅在GCT中跟踪EA来消除这些低效率。例如,在这些新的计算设备中,指令定序器单元在获取时间在GCT中创建条目。EA此时被加载到GCT中,然后当指令完成时被移除。这消除了整个机器中的许多流水线锁存器。代替与地址线数量一样长的完整EA,例如64位EA,小标签与指令组一起被携带通过流水线。该标签指回GCT中的条目,该GCT保存该指令组的基础EA。不再需要BIQ中的地址存储,因为分支可以在它们发出时直接从GCT检索它们的EA。这样的技术提高了面积效率,但是它们不能应用于OoO处理器。此外,它们缺乏足够的信息来处理不按程序顺序到达的地址请求。另外,这些技术不能支持OoO执行所需的分派和完成带宽,因为它们缺乏跟踪可能已从多个不相交地址范围形成的指令组的能力。历史上,此类机制仅支持来自单个地址范围的指令组,这可显著减少可用于OoO执行的指令的数量。此外,为了查找对应的地址,例如对应于EA的RA(反之亦然),使用内容可寻址存储器(CAM)。CAM使用专用比较电路在单个时钟周期中实现查找表功能。CAM的总体功能是获取搜索字并返回匹配的存储器位置。然而,这种CAM占用芯片面积,并且消耗功率,以用于这种查找。
此外,EA到相应RA的这种转换通常在与处理器相关联的存储器嵌套(memorynest)的第二级完成。如本文所使用的,术语存储器嵌套是指可由处理器使用以存储数据的各种类型的存储装置。通常,存储器嵌套包括高速缓存和物理存储器的层次结构。通常,随着存储器嵌套的级别增加,从处理器到数据的距离增加,并且处理器检索数据的访问延迟也增加。因此,将EA转换为RA减慢了处理器的执行。
本文描述的技术方案的说明性实施例通过提供有效地址目录(EAD)、有效真实表(ERT)和同义词检测表(SDT)来改进这些技术,这些表具有上述GCT方案的面积效率,但是也可以支持广泛发出的OoO流水线而不抑制性能。本文所述的技术方案还便于处理器仅以EA运行,只要处理器能够在乱序(OoO)窗口内避免EA同义词即可。OoO窗口是处理器的指令流水线中的一组指令。通过在OoO窗口中避免EA同义词,处理器减少了地址转换的芯片面积和功耗,因为处理器可以避免在OoO窗口中对EA进行转换。
换句话说,这里描述的技术方案通过在OoO窗口内的EA混叠进行监管,从而减少了加载/存储端口的转换数据结构和硬件,解决了技术问题。因此,本文描述的技术方案通过仅跟踪一个地址EA来促进芯片面积的减小。此外,该技术方案便于OoO处理器以具有分区加载存储队列的2加载和2存储模式运行,进一步减少了通常用于地址转换的CAM端口。
例如,能够发出和执行指令OoO的处理器可以允许在存储指令之前加载将要执行的指令。假定较新加载指令的真实地址(RA)不与较旧存储指令的RA重叠,OoO较新加载指令和较旧存储指令的执行可以提供性能优点。在典型的程序中,较新加载指令的RA与较旧存储指令(其在较新加载指令之后执行)的RA重叠的可能性相对较低。如已知的,当存储指令的RA命中(hit)加载存储单元(LSU)的加载重排序队列(LRQ)时,指示存储违反条件(存储-命中-加载(SHL))。即,当新发出的较旧的存储指令的RA与LSU的LRQ中存在的较新的加载指令的RA匹配时,指示SHL。然而,由于SHL的检测通常在指令执行流水线中的后期发生,因此从SHL恢复通常导致对处理器性能的相对严重的损失。例如,从SHL中恢复通常涉及使导致SHL的较新的加载指令无效并重新发出较新的加载指令以及在较旧的存储指令之后发出的所有指令。
此外,例如,如果针对相同地址的两个加载指令被OoO执行,并且在两个加载指令的执行之间该地址处的数据的值(例如,由另一处理器)被改变,则较后(即,较新)的加载将获得较前(即,旧)的值,并且较前(即,较旧)的加载将获得较后(即,新)的值。这种情况被称为"加载-加载顺序违规"或"加载-命中-加载危险"。如果较新的加载指令获得旧数据,则对相同地址的较旧的加载指令不得获得新数据的要求被称为"顺序加载一致性"。另外,如果在针对相同地址(即,存储器位置)的较早(即,较旧)存储指令完成之前执行了较晚(即,较新)的加载指令,则加载指令将获得较早(即,较旧)的值。这种情况被称为"加载-存储顺序违规"或"加载-命中-存储冒险"。(例如,参见J.M.Tendler等人的"Power4 SystemMicroarchitecture(Power4系统体系结构)",IBM Journal of Research andDevelopment(IBM研究和开发杂志),46卷,第1号,2002年1月,第5-25页)。
然而,在使用EA(而不是RA)操作的OoO处理器的情况下,提出了仅基于EA检测SHL和LHL条件,并进一步从这些情形中恢复的技术挑战。通常,处理器具有专用硬件以避免加载-加载和加载-存储顺序违反,从而帮助确保程序正确性。然而,这种硬件通常是复杂的并且增加了时间延迟。此外,这种硬件依赖于使用RA来检测危险状况,从而占用较大的芯片面积(对于转换/CAM端口)并消耗更多的功率用于EA到RA和/或RA到EA转换。本文描述的技术方案通过使用EA和使用与EAD条目一起存储的有效真实转换表(ERT)索引来解决这样的技术挑战。这里的技术方案使用加载-命中-加载表来检测加载-命中-加载冒险并对这样的情况采取行动。因此,技术方案便于OoO处理器具有较小的专用于存储和操纵实际地址的芯片面积。
现在转到图1,根据本发明的一个或多个实施例,一般示出了系统100的框图,该系统包括OoO处理器的指令定序单元(ISU),用于实现用于在OoO指令窗口中避免EA同义词的技术方案。图1所示的系统100包括指令获取单元/指令解码单元(IFU/IDU)106,其获取并解码指令以便输入到设置块108,该设置块将解码的指令准备用于输入到ISU的映射器110。根据本发明的一个或多个实施例,IFU/IDU106一次可从线程中获取并解码六个指令。根据本发明的一个或多个实施例,发送到设置块108的六个指令可包含六个非分支指令、五个非分支指令和一个分支指令,或四个非分支指令和两个分支指令。根据本发明的一个或多个实施例,设置块108在将所获取的指令发送到ISU中的这些块之前检查是否存在足够的资源,例如发出队列、完成表、映射器和寄存器文件中的条目。
图1中所示的映射器110将程序员指令(例如,逻辑寄存器名称)映射到处理器的物理资源(例如,物理寄存器地址)。图1中示出了各种映射器110,包括条件寄存器(CR)映射器;链路/计数(LNK/CNT)寄存器映射器;整数异常寄存器(XER)映射器;统一映射器(UMapper),用于映射通用寄存器(GPR)和向量标量寄存器(VSR);用于映射GPR和VSR的架构映射器(ARCH映射器);以及,浮点状态和控制寄存器(FPSCR)映射器。
来自设置块108的输出也被输入到全局完成表(GCT)112,用于跟踪当前在ISU中的所有指令。来自设置块108的输出还被输入到分派单元114,用于将指令分派到发出队列。图1所示的ISU的实施例包括CR发出队列CR ISQ 116,其接收并跟踪来自CR映射器的指令,并将它们发出120到获取指令单元(IFU)124以执行CR逻辑指令和移动指令。图1中还示出了分支发出队列,分支ISQ 118,其从LNK/CNT映射器接收并跟踪分支指令和LNK/CNT物理地址。如果预测的分支地址和/或方向不正确,分支ISQ 118可向IFU 124发出指令以重定向指令获取。
从来自LNK/CNT映射器、XER映射器、UMapper(GPR/VSR)、ARCH映射器(GPR/VSR)和FPSCR映射器的分派逻辑和重命名寄存器输出的指令被输入到发出队列102。如图1所示,发出队列102跟踪已分派定点指令(fx)、加载指令(L)、存储指令(S)以及向量和缩放单元(VSU)指令。如图1的实施例中所示,发出队列102被分成两部分,ISQ0 1020和ISQ1 1021,每个部分保存N/2个指令。当处理器在单线程(ST)模式中执行时,发出队列102可以用作包含ISQ0 1020和ISQ1 1021的单个逻辑发出队列,以处理单线程的所有指令(在该示例中为所有N个指令)。
当处理器在多线程(MT)模式中执行时,ISQ0 1020可用于处理来自第一线程的N/2个指令,且ISQ1 1021用于处理来自第二线程ISQ1 1021的N/2个指令。
如图1所示,发出队列102向执行单元104发出指令,所述执行单元被分成两组执行单元1040和1041。图1所示的两组执行单元1040和1041包括完全定点执行单元(完全FX0、完全FX1);加载执行单元(LU0,LU1);简单定点、存储数据和存储地址执行单元(简单FX0/STD0/STA0、简单FX1/STD1/STA1);以及浮点、向量多媒体扩展、十进制浮点和存储数据执行单元(FP/VMX/DFP/STD0,FP/VMX/DFP/STD1)。LU0、简单FX0/STD0/STA0和FP/VMX/DFP/STD0共同形成加载存储单元(LSU)1042。类似地,LU1、简单FX1/STD1/STA1和FP/VMX/DFP/STD1形成加载存储单元(LSU)1043。两个LSU1042和1043一起被称为系统100的LSU。
如图1中所示,当处理器以ST模式执行时,第一执行单元组1040执行从ISQ0 1020发出的指令,且第二执行单元组1041执行从ISQ1 1021发出的指令。在本发明的替代实施例中,当处理器以ST模式执行时,从发出队列102中的ISQ0 1020和ISQ1 1021发出的指令可以被发出到第一组执行单元1040和第二组执行单元1041中的任何一个执行单元1040中的执行单元。
根据本发明的一个或多个实施例,当处理器在MT模式中执行时,第一组执行单元1040执行从ISQ0 1020发出的第一线程的指令,且第二组执行单元1041执行从ISQ1 1021发出的第二线程的指令。
图1所示的发出队列102中的条目的数量和其他元件的尺寸(例如,总线宽度、队列尺寸)在本质上旨在是示例性的,因为本发明的实施例可以被实现用于各种不同尺寸的发出队列和其他元件。根据本发明的一个或多个实施例,尺寸是可选择的或可编程的。
在一个或多个示例中,根据说明性实施例,系统100是OoO处理器。图2是根据本发明的一个或多个实施例的OoO处理器的处理器架构的示例框图,其中实现了EAD和用于利用该EAD的相关机制。如图2所示,处理器体系结构包括指令高速缓存202、指令获取缓冲器204、指令解码单元206和指令分派单元208。指令由指令获取缓冲器204从指令高速缓存202获取,且提供到指令解码单元206。指令解码单元206解码指令并将解码的指令提供给指令分派单元208。根据指令类型,将指令分派单元208的输出提供给全局完成表210以及分支发出队列212、条件寄存器发出队列214、统一发出队列216、加载重排序队列218和/或存储重排序队列220中的一个或多个。通过指令解码单元206的解码和映射来确定指令类型。发出队列212-220向执行单元222-240中的各个单元提供输入。数据高速缓存250和每一相应单元所含有的寄存器堆提供数据以供与指令一起使用。
指令高速缓存202经由第二阶段转换单元262和预解码单元270从L2高速缓存260接收指令。第二阶段转换单元262使用其相关联的分段后备缓冲器264和转换后备缓冲器266,以将所获取指令的地址从有效地址转换为系统存储器地址。预解码单元部分地解码从L2高速缓存到达的指令,并用唯一标识信息来扩充它们,这简化了下游指令解码器的工作。
如果指令是分支指令,则还将获取到指令获取缓冲器204中的指令提供给分支预测单元280。分支预测单元280包含分支历史表282、返回堆栈284和计数高速缓存286。这些元素预测应当从指令高速缓存中取出的下一个EA。分支指令是计算机程序中控制流被改变的点。它是从计算机程序中的控制构造生成的低级机器指令,例如if-then-else或do-while语句。不能采用分支,其中控制流不变,并且要执行的下一个指令是存储器中紧跟其后的指令,或者可以采用分支,其中要执行的下一个指令是存储器中某个其它位置的指令。如果分支被采用,则需要将新EA提供给指令高速缓存。
来自分支预测单元的EA和相关预测信息被写入有效地址目录290。这个EA稍后由分支执行单元222确认。如果正确,则EA保留在目录中,直到来自该地址区域的所有指令都已经完成它们的执行。如果不正确,则分支执行单元清除该地址,并且将已纠正的地址写入其位置。EAD 290还包括便于将目录用作CAM的逻辑单元。
从存储器读取或向存储器写入的指令(例如加载或存储指令)被发出到LS/EX执行单元238、240。LS/EX执行单元使用由该指令指定的存储器地址从数据高速缓存250检索数据。该地址是EA,并且在使用之前需要首先经由第二级转换单元被转换为系统存储器地址。如果在数据高速缓存中没有找到地址,则使用加载未命中队列(load miss queue)来管理对L2高速缓存的未命中请求。为了减少这种高速缓存未命中的损失,高级数据预取引擎预测指令在不久的将来可能使用的地址。以此方式,当指令需要数据时,数据将可能已经在数据高速缓存中,借此防止对L2高速缓存的长延迟时间未命中请求。
LS/EX执行单元238、240通过跟踪加载重排序队列218和存储重排序队列220中的指令年龄和存储器依赖性来不按程序顺序地执行指令。这些队列用于检测OoO执行何时产生与相同程序的有序执行不一致的结果。在此类情况下,当前程序流被冲刷并再次执行。
处理器结构还包括EAD 290,它以集中方式维护一组指令的有效地址,使得EA在需要时可用,但不需要通过流水线。此外,EAD 290包括用于支持OoO处理的电路和/或逻辑。图2示出了经由分支预测单元280访问EAD 290,然而,应当理解,可以提供用于允许图2所示的单元中的各个单元访问EAD 290而不必经过分支预测单元280的电路。
本领域的普通技术人员将理解,图1-2中的硬件可以根据实现而变化。除了图1-2中描述的硬件之外,或者代替这些硬件,可以使用其它内部硬件或外围设备,例如闪存、等效的非易失性存储器或光盘驱动器等。此外,在不脱离本发明的精神和范围的情况下,除了前面提到的SMP系统之外,示例性实施例的处理可以应用于多处理器数据处理系统。
此外,数据处理系统100可以采取多种不同数据处理系统中的任何一种的形式,包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等。在一些说明性示例中,数据处理系统100可以是便携式计算设备,其配置有闪存以提供用于存储例如操作系统文件和/或用户生成的数据的非易失性存储器。本质上,数据处理系统100可以是任何已知的或以后开发的数据处理系统,而没有架构限制。
如本领域技术人员将理解的,本发明可以被实现为系统、装置或方法。在一个说明性实施例中,完全在硬件中提供所述机制,例如处理器的电路、硬件模块或单元等。然而,在其他说明性实施例中,可以利用软件和硬件的结合来提供或实现说明性实施例的特征和机制。例如,可以在固件、驻留软件、微代码等中提供软件。此后阐述的各种流程图提供了可以由该硬件和/或硬件和软件的结合执行的操作的概要。
在说明性实施方式中,其中说明性实施方式的机制至少部分地以软件实现,可以利用存储该软件的一个或多个计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、装置或设备。计算机可读介质的更具体的示例(非穷举列表)将包括以下:随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)等。
通常,对于每个加载和每个存储指令,EA被变换成相应的RA。这种EA到RA的变换也是针对指令获取(I获取)执行的。这种变换通常需要有效到真实地址表(ERAT),用于从低阶存储器检索指令。在这里描述的技术方案中,不是对每个加载和存储指令都执行EA到RA的变换,而是仅在加载-未命中、I-获取未命中以及所有存储的情况下执行EA到RA的变换。
通过仅使用EA用于操作,该技术方案便于从一个或多个数据结构中移除RA位(例如,位8:51),所述数据结构诸如EA目录(也称为L1目录)、LRQF条目、LMQ条目。此外,如果仅使用EA,则不执行SRQ LHS RA比较逻辑。去除这些元件减少了所使用的处理器的芯片面积,从而便于减少典型处理器上的芯片面积。
此外,通过仅使用EA,这里的技术方案消除了每个加载和存储地址生成上的ERAT内容寻址存储操作(camming)。该技术方案进一步消除了遍及单元的RA总线切换,并且还避免了快速SRQ LHS RA内容寻址存储操作。因此,通过不执行上述操作,与典型的处理器相比,该技术方案便于处理器消耗更少的功率。
此外,本申请的技术方案还有利于改善L1延迟。例如,通过消除地址变换,这里的技术方案在确定"最终dval"时比执行EA到RA变换的典型处理器至少快1个周期。因为通过仅使用EA(没有RA变换)消除了诸如设置表多命中、设置表命中/RA未命中等"不良dval"状况,所以也改善了延迟。以类似的方式,本文的技术方案有助于改善L2延迟。
仅使用基于EA的LSU的技术挑战包括指令的乱序执行可能导致危险(LHL、SHL、LHS),并且针对仅EA实现方式这样的危险将在不使用对应真实地址的情况下被检测。本文所述的技术方案解决了这种技术问题。RA不用于OoO执行加载-命中-存储、存储-命中-加载或加载-命中-加载类型的危险检测,如它通常所使用的那样。用于存储的RA计算在存储完成之前发生,因为在完成之后,不处理对于存储指令的任何中断(存储可生成地址转换相关中断,其需要在存储完成之前被处理)。在此,当发出存储时(而不是当排空时)进行RA计算。这里描述的技术方案基于EA和与EA目录条目一起存储的ERT索引,并且还使用具有这里描述的结构和操作的加载重排序队列(LRQF),来确定LHS(加载-命中-存储)、SHL(存储-命中-加载)和LHL(加载-命中-加载)。
再次参考附图,图3示出了根据本发明的一个或多个实施例的处理核的加载-存储单元(LSU)104。所描绘的LSU104促进按照2加载2存储模式的执行;然而,应当注意,本文所述的技术方案不限于这种LSU。下面描述LSU的执行流程。从加载或存储指令中生成EA(如程序员在计算机程序中所使用的)。类似地,对于指令获取,也生成EA。通常,对于每个指令,EA被变换为RA(真实地址,如硬件所使用的,在EA到RA转换之后),这需要更大的芯片面积以及频繁的转换,还有其它技术挑战。这里描述的技术方案通过仅使用EA(而不转换为RA)并且仅在加载-未命中、I-获取未命中和存储时使用有效真实表(ERT)255来生成RA,来解决这样的技术挑战。
LSU 104包括加载-重排序-队列(LRQF)218,其中从分派到完成跟踪所有加载操作。LSU 104还包括第二加载-重排序队列LRQE 225。当拒绝加载(对于高速缓存未命中、或转换未命中、或所依赖的先前指令被拒绝)时,从发出队列中取出加载,并将其放置在LRQE条目中,以便从那里重新发出该加载。对于两个加载模式,所描述的LRQE 225被划分为2个实例,LRQE0和LRQE1,每个具有12个条目(总共24个条目)。在ST模式中,不存在基于线程/管道的划分。在MT模式中,T0、T2操作在管道LD0上启动;以及T1、T3操作在管道LD1上启动,用于重新启动。
如所描述的,LRQF 218被划分为用于两个加载模式的2个实例LRQF0和LRQF1,其中(每个实例)具有40个条目。LRQF 218按顺序条目分配是循环的,按顺序条目排空是循环的,并且按顺序条目解除分配是循环的。此外,在MT模式中,T0、T2操作在管道LD0、ST0上启动;以及T1、T3操作在管道LD1、ST1上启动。在ST模式中,LRQF没有任何管道/线程。
在一个或多个示例中,LRQF 218(和这里描述的其它结构)被划分为用于SMT4模式的T0:LRQF0[0:19]循环队列,T1:LRQF1[0:19]循环队列;T2:LRQF0[20:39]循环队列,T3:LRQF1[20:39]循环队列。
在一个或多个示例中,LRQF 218(以及这里描述的其它结构)被划分为用于SMT2模式的T0:LRQF0[0:39]循环队列,以及T1:LRQF1[0:39]循环队列。此外,在一个或多个示例中,对于ST模式,LRQF0[0:39]循环队列,其中LRQF1是LRQF0副本。对于其它数据结构,在ST模式中,使用类似的划分模式,其中第二实例是第一实例的副本。
在交叉无效冲刷(XI冲刷)的情况下,对于LRQF,NTC+1冲刷从另一个线程排空的XI或存储命中的任何线程,使得在XI冲刷的情况下,LSU 104不执行针对同义词的显式L/L排序冲刷。
所有存储对照LRQF 218进行检查以用于SHL检测,在检测到SHL时,LRQF 218启动对任何加载或存储之后的所有(任何指令/操作)的冲刷。此外,DCB指令对照LRQF 218进行检查以用于SHL情况,在SHL情况时LRQF 218致使对加载或DCB之后的任何事物的冲刷。此外,所有加载对照LRQF 218进行检查以用于LHL检测(顺序加载一致性),当检测到LHL时,LRQF 218致使对较新加载或在较旧加载之后的任何加载的冲刷。在一个或多个示例中,LRQF 218提供四倍字长原子性,并且LQ针对四倍的原子性核查LRQF 218,并且如果不是原子的,则冲刷LQ。此外,在LARX指令的情况下,LSU 104对照LRQF 218进行检查以用于larx-命中-larx情况,并且作为响应,冲刷较新的LARX,或者在较旧的larx指令之后的任何。
因此,LRQF 218便于跟踪从发出到完成的所有加载操作。LRQF 218中的条目以Real_Ltag(rltag)为索引,其是队列结构中的物理位置。LRQF 218中的加载操作/条目的寿命是用有序的Virtual_Ltag(vltag)来确定的。LRQF使用GMASK以及使用GTAG和IMASK的部分组冲刷来冲刷加载。LRQF逻辑可以从当前的iTag或iTag+1或精确的加载iTag进行冲刷。
此外,LRQF不包括通常使用的RA(8:51)字段,而是基于EA,并且包括ERT ID(0:6)和EA(40:51)(节省24位)。LRQF页匹配在SHL上,LHL基于ERT ID匹配。此外,每个LRQ条目具有"强制页匹配(Force Page Match)"位。当与LRQ条目ERT ID匹配的ERT ID被无效时,设置强制页匹配位。LRQ将检测LHL、SHL,并且存储涉及具有强制匹配=1的任何条目的排序冲刷。
LSU 104的SRQ 220具有与LRQF 218类似的结构,(每个实例)具有40个条目的两个实例SRQR0和SRQR1,其按顺序条目分配是循环的、按顺序条目排空是循环的、以及按顺序条目解除分配是循环的。此外,SRQ 220类似于LRQ 218被划分,例如在管道LD0、ST0上启动的T0、T2 op;在管道LD1、ST1上启动的T1、T3 op;以及在ST模式中没有管道/线程划分。在ST模式中,两个副本具有相同值,其中所述副本在MT模式中不同。在SMT4模式中,两个实例被进一步划分,其中每个线程被分配来自SRQ 220的20个条目(参见这里描述的LRQF的示例划分)。在一个或多个示例中,对于存储排空仲裁,在SMT4模式中执行SRQ内读指针复用。可替换地,或另外,在SMT2和SMT4模式中执行SRQ0/1间复用。在ST模式中,仅对SRQ0执行排空操作。
SRQ 220的每个条目包含存储TID(0:1)、ERT ID(0:6)、EA(44:63)和RA(8:51)。为了检测LHS,LSU使用{存储Tid,EA(44:63)},从而消除RA LHS别名检查。ERT ID用于"捕捉"EA(44:63)部分匹配误推测。SRQ条目具有RA(8:51),其在存储代理处被转换,并且仅在向L2发送存储请求时使用(存储指令被排空,不被发出)。每个SRQ条目还具有"强制页匹配"位。当与SRQ条目ERT ID匹配的ERT ID被无效时,设置强制页匹配位。SRQ可以检测LHS,其涉及具有强制页匹配=1的任何条目。例如,针对具有强制页匹配=1的条目的LHS导致拒绝加载指令。此外,如果对于SRQ条目强制页匹配=1,则存储排空强制在L1高速缓存中的未命中。这与"扩展存储命中重加载"LMQ动作协力工作。
例如,对于LMQ,LMQ地址匹配={ERT ID,EA页偏移(xx:51),EA(52:56)}匹配。此外,当与LMQ条目ERT ID匹配的ERT ID被无效时,设置每个LMQ条目的"强制页匹配"位(=1)。如果有效的LMQ条目[X]ForcePageMatch=1并且Ld Miss EA[52:56]=LMQEntry[X]EA(52:56),则LMQ拒绝加载未命中。此外,LMQ具有扩展存储命中重载。例如,如果重加载EA(52:56)=SRQEntry[X]EA(52:56)并且SRQEntry[X]ForcePageMatch=1,则LMQ抑制重加载启用。可替换地或附加地,如果LMQEntry[X]EA(52:56)=StDrain EA(52:56)并且StDrainForcePageMatch=1,则LMQ抑制重加载启用。
所描述的LSU 104将存储数据队列(SDQ)分解为SRQ 220本身的一部分,以进一步节省芯片面积。如果操作数尺寸小于SRQ条目尺寸,例如8字节,则将操作数存储在SRQ本身的条目中。在更宽的操作数的情况下,例如向量操作数是16字节宽,SRQ在MT模式中使用SRQ220中的两个连续条目来存储操作数。在ST模式中,较宽的操作数被存储在SRQ0和SRQ1中,例如每个操作数8字节。
SRQ 220对类型存储、屏障、DCB、ICBI或TLB类型的操作进行排队。单个s标志用于store_agen和store_data。SRQ 220处理加载-命中-存储(LHS)情况(仅相同线程)。例如,所有发出的加载都由SRQ 220检查以确保没有具有数据冲突的较旧的存储。例如,通过将加载EA和数据字节标志与SRQ EA阵列中的较旧的存储进行比较,来检测数据冲突。
SRQ条目在分派时分配,其中分派的指令标签(iTag)被填充到正确的行中。此外,在存储排空时,SRQ条目被解除分配。在一个或多个示例中,iTag数组保持"溢出"分派。例如,如果SRQ中的期望行,比如SRQ条目x仍然在使用中,则在分派时将信息写入iTag数组中。当SRQ项x被解除分配时,其在SRQ溢出itag结构中的对应行被读出并复制到主SRQ itag数组结构中(溢出itag结构的读取由在给定线程/区域的溢出itag数组中是否存在任何有效条目来选通)。主SRQ0/1iTag阵列被内容寻址存储操作(或在SMT4中1/2内容寻址存储操作(1/2cammed)),以确定在存储发出时要写入哪个物理行,从而ISU基于iTag发出存储。当存储排空和解除分配时,SRQ 220向ISU发送iTag。
ISU分配虚拟子区域来存储分派以避免重叠问题。例如,在ST模式中,ISU不发出虚拟SRQ条目40,直到真实SRQ条目0被条目0存储排空解除分配。此外,在SMT4模式中,ISU不能发出Tx虚拟SRQ条目20,直到实际Tx SRQ条目0被排空并被解除分配。ISU将每个线程分区进一步细分为4个区域。
例如,对于ST模式,将SRQ 220细分为4个子区:Ping A:SRQ条目0-9,Ping B:SRQ条目10-19,Ping C:SRQ条目20-29,Ping D:SRQ条目30-39;和Pong A:SRQ条目0-9,Pong B:SRQ条目10-19,Pong C:SRQ条目20-29,Pong D:SRQ条目30-39。最初,ISU发出Ping A、B、C、Ditag。此外,ISU在对Ping A itags解除分配之前不发出Pong A itags。随后,在所有Ping Aitag被解除分配之后,ISU发出Pong A itag,但是不发出Pong B itag直到Ping B itag被解除分配,这类似于情况A。在一个或多个示例中,ISU在发出队列条目中保持3个额外的位(1个卷取位(wrap bit)+用以描绘哪个子区域2个位),以基于子区域创建伪发出依赖性。
图4是根据一个说明性实施例的有效地址目录结构(L1高速缓存)290的示例性块。在一个或多个示例中,EAD是LSU 104的一部分。如图3所示,EAD 290包括一个或多个条目,例如条目0到条目N,其中每个条目包括关于一个或多个指令的组的多个信息字段。例如,在一个说明性实施例中,EAD 290中的每个条目可以表示1到32个指令。EAD 290中的条目是响应于获取位于处理器高速缓存(例如图2中的L2高速缓存260)的新高速缓存线中的指令而创建的。当从该高速缓存线获取额外的指令时,EAD 290中的条目会被更新。EAD 290的每个条目在采用分支(即,来自高速缓存的获取分支指令被解析为"采用")、高速缓存线交叉(即,下一个获取指令在与当前高速缓存线不同的高速缓存线中)或处理器流水线的冲刷(例如,当发生分支错误预测时等)上终止。
如图3中所示,EAD 290条目的字段包括基础有效地址310、第一指令标识符320、最后指令标识符330、关闭标识符340、全局历史向量字段350、链栈指针字段360、分支采用标识符370和分支信息字段380。EAD 290被组织为类似于L1数据高速缓存。设置关联组织。例如,在一个或多个例子中,它是32个索引,由EA(52:56)通过8路寻址,用EA(0:51)选择。
基础EA 310是指令组的起始EA。该组指令中的每个指令具有相同的基础EA,以及然后距基础EA的偏移。例如,在一个说明性实施例中,EA是包括位0:63的64位地址。在一个说明性实施例中,基础EA可以包括该EA的位0:56,其中位57:61表示针对指令组内的特定指令的距基础EA的偏移。位62和63指向每个指令的特定字节。在说明性实施例中,每个地址引用32位长(即4字节)的指令,其中存储器中的每个字节是可寻址的。指令不能进一步被分成可寻址的子部分,因此指令地址将总是具有被设置为零的位62和63。因此,位62和63不需要被存储,并且可以总是被EAD假定为零。
第一指令标识符字段320存储EA偏移位,例如EAD 290条目所对应的指令组中的第一指令的EA的位57:61。来自字段310的基础EA与第一指令标识符字段320中的EA偏移位的组合提供了针对由EAD 290条目所表示的指令组中的第一指令的EA。如下文所论述,此第一字段320可用于例如在流水线被冲刷的情况下恢复重获取地址和分支预测信息。
最后指令标识符字段330存储EAD 290条目所对应的指令组中的最后指令的EA偏移位,例如EA的位57:61。当由EAD 290条目所表示的指令组中的附加指令被获取时,EAD逻辑更新该字段。当发现高速缓存线交叉或采用分支时,EAD逻辑响应于EAD 290条目被关闭而中断特定EAD 290条目中的该字段330的更新。该字段将保持完整,除非发生清除EAD条目的一部分的流水线冲刷。在这种情况下,EAD逻辑更新该字段,以存储指令的EA偏移位,该指令现在是作为冲刷结果在条目中的新的最后指令。该字段最终用于完成,如下文所述,以释放EAD 290中的条目。
关闭标识符字段340用于指示EAD 290条目已经关闭,并且不再进行指令获取以获取对应于EAD 290条目的指令组的指令。EAD 290条目可以由于各种不同的原因而关闭,包括高速缓存线交叉、分支被采用、或者流水线的冲刷。这些条件中的任何一个都可以导致关闭字段340中的值被设置为指示EAD条目被关闭,例如,被设置为值"1"。该字段340在完成时被用于释放EAD 290中的条目,如以下更详细讨论的。
全局历史向量字段350标识创建了在EAD 290中的条目的第一指令获取组的全局历史向量。全局历史向量用于标识分支是否被采用或未被采用的历史,如以下更详细讨论的。全局历史向量用于分支预测目的,以帮助基于正在采用或未采用的分支的最近历史来确定当前分支是否可能被采用。
链栈指针字段360标识创建了在EAD 290中的条目的第一指令获取组的链栈指针。链栈指针是另一分支预测机制,将在下文中更详细地对其描述。
分支采用字段370指示对应于EAD 290条目的指令组是否具有这样的分支指令,在该分支指令中该分支被采用了。响应于EAD 290条目所表示的指令组的分支指令被预测为被采用,更新分支采用字段370中的值。另外,一旦采用了EAD 290条目的指令中的分支,则还通过将适当值写入关闭字段340来关闭EAD 290条目。由于在预测时间推测性地写入分支采用字段,因此当实际执行分支时可能需要用正确值替换它。例如,可以预测分支不被采用,在这种情况下,将"0"写入分支采用字段。然而,在执行的后期,可能发现分支被采用了,在这种情况下,必须通过将该字段写为值"1"来校正该字段。第二写入仅在分支被错误预测的情况下发生。
分支信息字段380存储各种分支信息,用于当分支解析时更新分支预测结构,或者当分支指令完成时更新架构EA状态。
ERT_ID字段385将索引存储到ERT表中(将进一步描述),其标识相应的ERT条目。当ERT条目无效时,相关联的ERT_ID无效,并且还将使L1高速缓存和L1 D高速缓存中的所有关联条目无效。
EAD 290中的条目使用有效地址标签(eatag)来访问,该标签包括至少两部分:基础eatag和eatag偏移。在一个说明性实施例中,该eatag是10位的值,其比64位EA相对小得多。在一个示范性实施方案中,对于10位的eatag值和具有14个条目尺寸的EAD 290,eatag由第一5位(称为基础eatag)和第二5位(称为eatag偏移)组成,其中第一5位用于识别EAD290内的条目,第二5位用于提供EAD 290中的条目所表示的指令组内的特定指令的偏移。标识EAD 290内的条目的5个位中的第一位可以用作卷取位(wrap bit),以指示当从EAD 290的最顶部条目到最底部条目时是否发生卷取。这可以用于年龄检测。标识EAD 290内的条目的5位中的第二位至第五位可以用于索引到EAD中,以标识指令的基础EA,即EA(0:56)。5位偏移值可用于提供例如特定指令的EA的位57:61。该示例eatag说明如下:
eatag(0:9)=行(0:4)||偏移(0:4)
行(0):用于所述EAD的卷取位,其指示当从所述EAD的最顶部条目到最底部条目时是否发生卷取。
行(1:4):到14条目EAD中的索引,用于确定指令的EA(0:56)。
偏移(0:4):指令的EA的位57:61。
图5示出了根据本发明的一个或多个实施例的示例性有效真实表(ERT)结构。在一个或多个示例中,ERT 255包括总共128个条目,然而应当注意,在其它示例中,条目的总数可以不同,并且条目的数量可以是可选择的或可编程的。此外,在LSU通过分开的线程并行执行两个指令的情况下,LSU维护两个ERT 255的实例,每个实例具有64个(一半的)条目,例如ERT0和ERT1。除非另有说明,以下描述这些实例中的任何一个。
ERT 255包括有效的ERT条目,通常存在于L1 I-高速缓存或D-高速缓存目录(EAD290)中的任何活动页,或者SRQ条目或LRQF条目或LMQ条目。换句话说,ERT 255是LSU和IFU(L1 DC、SRQ、LRQE、LRQF、LMQ、IC)中的所有活动RPN的表。在一个或多个示例中,如果处理器106在ST模式下操作,则ERT 255中的所有条目被用于正在执行的单个线程。或者,在一个或多个示例中,ERT 255中的条目被分成集合,并且在ST模式中,每个集合具有相同的内容。例如,如果ERT 255总共具有128个条目,且最多支持两个线程,当处理器运行在ST模式时,ERT255包括两个集合,每个集合中64个条目,且这两个集合具有相同的内容。
或者,如果处理器106在MT模式下操作,则在正在执行的线程之间划分ERT条目。例如,在两个线程的情况下,ERT条目被分成两个相等的集合,第一条目集合与第一线程相关联,第二条目集合与第二线程相关联。例如,LD0管道L1的1个副本未命中、ST0管道启动、T0/T2 I-获取:ERT0,其用于处理SMT2模式下的T0和SMT4模式下的T0/T2;以及LD1管道L1的1个副本未命中、ST1管道启动、T1/T3 I-获取:ERT1,其在SMT2模式下处理T1并在SMT4模式下处理T1/T3。
在一个或多个示例中,每个ERT条目至少包括以下ERT字段,ERT_ID(0:6)、Tid_en(0:1)、页尺寸(0:1)、EA(0:51)和RA(8:51)。ERT_ID字段是每个ERT条目的唯一索引。例如,ERT_ID可以包括标识ERT条目的序列号。ERT_ID存储在EAD 290的ERT_ID字段285中,以及由LSU使用的其它数据结构中。TID_en字段指示条目是否被启用以用于MT模式中,并且在一个或多个示例中,指示正在使用ERT条目的指令的线程标识符。此外,页尺寸指示ERT条目所引用的存储器页尺寸。RA包括与ERT条目相关联的真实地址。
仅在RA将被用于完成指令的执行的情况下LSU才引用ERT 255。如这里所述,ERT255被LSU查询以用于以下四个功能:1.I获取、加载或存储未命中L1高速缓存;2.来自内核中的另一线程的存储;3.来自另一内核的窥探(XI);4.TLB和SLB无效。
在I获取、加载或存储未命中L1高速缓存的第一种情况下,EA和线程_id被用于索引到ERT 255中,并且如果存在有效的ERT条目,则来自相应ERT条目的RA被发送到L2高速缓存。在ERT未命中的情况下,即对于EA和线程_id不存在有效的ERT条目,则使用SLB/TLB。
在第二种情况下,其中来自内核中的另一个线程的存储,从SRQ排空的存储检查ERT 255。如果没有来自不同线程的命中,则没有来自使用相同RA的另一线程的加载。如果存在来自使用相同RA的不同线程的命中,则LSU检查LRQ。但是,在极少情况下,如果RA被另一线程使用则存在来自另一线程的命中的情况。因此,LSU查找ERT表400以找到公共RA的相关EA。EA然后被用于在LRQ中查找匹配(在该周期中拒绝任何存储发出)。LRQ被按每线程划分,因此LSU仅查看相关线程的LRQ。如果在LRQ中存在匹配的加载,则LSU冲刷匹配的加载中最旧的加载。
在来自处理器的另一内核的窥探的第三种情况下,LSU类似于第二种情况工作,并检查来自正在执行的任何其它线程的命中。在TLB/SLB被无效的情况下,ERT 255也被无效。
LRQF 218与ERT表400结合用于检测和处理诸如LHL、SHL和LHS的危险。例如,对照LRQF 218检查每个存储指令以用于SHL检测,并且在在LRQF 218中存在用于与存储指令相同的EA的加载指令情况下,对存储指令和IFU中的由此的其它条目进行冲刷,或者对来自LRQF 218的加载指令进行冲刷。此外,在DCB指令的情况下,对照LRQF 218检查指令以用于SHL情况,对加载以及DCB之后的所有进行冲刷,或者对加载进行冲刷。对于系统100想要处理的每个数据集,要配置相应的数据控制块(DCB)和数据定义(DD)语句或其动态分配等效物。
此外,在一个或多个示例中,当数据移入和移出系统存储器中的物理存储位置时(例如,响应于新进程或上下文切换的调用),TLB中的条目被更新以反映新数据的存在,并且与从系统存储器移除的数据相关联的TLB条目(例如,移出分页到非易失性大容量存储装置)必须被无效。通常,TLB条目的无效是软件的责任,并且通过执行显式TLB无效条目指令(例如,POWERTM指令集体系结构(ISA)中的TLBIE)来实现。LRQF 218通过促进TLBIE指令以标记LRQF 218中的条目来提供TLBIE支持,其中LRQF 218指示是否标记了任何有效条目。
此外,对照LRQF 218检查每个加载指令以用于LHL检测(顺序加载一致性),并且在LHL的情况下,冲刷较新的加载指令,或者冲刷较旧的加载之后的所有。
此外,对照LRQF 218检查每个LARX指令以用于larx-命中-larx情况,并且在检测到该情况的情况下,刷新较新的LARX指令,或者冲刷对较旧的LARX之后的所有。
因此,本文所述的技术方案有助于仅使用EA进行危险检测而不针对每个加载和存储路径使用EA到RA转换,使用EA到RA转换在时间以及芯片面积方面(用以存储RA和CAM端口以进行转换)代价更高。此外,该技术方案有助于改进定时以检测SHL并及时抑制DVAL。
图6示出了根据本发明的一个或多个实施方式的用于访问存储器以由LSU执行指令的示例性方法的流程图。指令可以是针对OoO处理器106的加载、存储或指令获取。在接收到指令时,LSU使用指令的参数来检查EAD 290是否具有与指令相对应的条目,如在505和510处所示。在一个或多个示例中,用于检查的参数包括线程标识符、页尺寸、EA等。
如果LSU在EAD 290中经历EAD命中,即指令的EA与EAD表300中的条目匹配,则LSU读取匹配的EAD条目的内容以确定对应的ERT条目,如520所示。每个EAD条目包含ERT_ID(0:6)字段285。如前所述,当ERT条目被无效时,关联的ERT_ID被无效,这也使EAD表300中的所有关联条目无效。因此,EAD命中意味着ERT命中,因为使用ERT_ID字段285,可以为加载/存储指令找到ERT条目。因此,在EAD命中的情况下,在识别出相应的EAD条目之后,LSU从EAD条目读出ERT_ID,并且发送到SRQ、LMQ和/或LRQF,如530所示。SRQ、LMQ和/或LRQF使用来自所识别的EAD条目的EA。在使用RA的存储指令的情况下,来自ERT条目的RA被读出以用于L2访问,如540和545所示。因此,由于RA不在其他任何地方使用,而是存储指令,因此实现本文的技术方案的内核被称为仅EA内核。
现在考虑指令未命中EAD 290的情况,即指令的EA在EAD表300中不具有匹配条目。将线程_id和EA与来自ERT 255的每个条目进行比较,如550所示。如果发生ERT命中,即ERT条目与参数匹配,则LSU从ERT条目读出RA(8:51),如555和530所示。对于加载请求,LSU将RA发送到L2高速缓存以供访问530。对于存储指令,LSU将RA存储在SRQ中,然后当存储排空到L2高速缓存时将RA发送到L2高速缓存,如540-545所示。
如果ERT未命中发生,则LSU发起ERT 255的重加载,如555和560所示。此外,发起ERT条目替换。ERT条目替换是基于LRU的,并且LSU确保在该过程期间跟踪在OoO窗口中的同义词。
因此,通过实现用于加载的上述方法,如果在基于EA的L1目录中存在EA命中,则不执行地址转换。这改进了典型的处理器,其中L1目录是基于RA的,在L1目录未命中加载的情况下,其导致EA被发送到ERAT表以进行转换,从而得到被发送到L2目录及以上的RA。
此外,对于存储,利用本文描述的方法,LSU必须遍历ERT表来确定RA,RA然后被存储在SRQR中,以当从SRQ中排空存储时将存储排空到高速缓存(L1,L2,存储器)。SRQR保存用于存储的所有RA。RA仅被存储用于排空到嵌套(即,L2、存储器和存储器子系统的其他单元)。RA不用于加载-命中-存储、存储-命中-加载或加载-命中-加载类型的OoO执行危险检测,如在典型解决方案中所做的。用于存储的RA计算在存储完成之前发生,因为在完成之后,LSU不能处理针对存储的任何中断(存储可生成地址转换相关中断,其将在存储完成之前被处理)。这里,RA计算在(从SRQR)发出存储时完成,从而防止LSU必须执行地址转换。因此,存储被发出并被OoO执行,然后按顺序完成,随后按顺序从SRQ中排空存储。在存储被排空之前,没有其它线程或内核知道该存储(只有当前线程知道)。在从SRQ中排空存储之后,存储被写入L1(如果该行已经存在于L1中)和L2高速缓存(如果高速缓存被启用)中,并且在这一点上该存储对于系统100中的所有其它线程和内核都是已知的。
对于未命中基于EA的L1 I高速缓存的指令获取,使用ERT 255将EA转换为RA,并且将RA发送到嵌套以获取I高速缓存线。这里,LHS(加载-命中-存储)、SHL(存储-命中-加载)和LHL(加载-命中-加载)都是基于EA和ERT索引确定的,所述EA和ERT索引与基于EA的L1高速缓存(EAD 290)中的目录条目一起存储。EAD表300中的所有条目使其转换在ERT表400中有效,一旦确定LHS、SHL和LHL,就可以使用所述转换。如果ERT条目无效,则相应的L1高速缓存条目无效。
LRQF是加载-重排序队列,它确保从分派到完成跟踪所有加载操作。当加载被拒绝(由于高速缓存未命中、或转换未命中、或其依赖的先前指令被拒绝)时,从发出队列中取出加载,并将其放置在LRQE中,以便从那里重新发出该加载。
图6示出了根据本发明的一个或多个实施例的用于重加载ERT的方法的流程图。ERT重加载致使响应于并基于ERT未命中而创建或更新ERT中的条目。ERT接收将被添加到ERT 255中的RA,并将RA与ERT0和ERT1中的每个条目进行比较,如605所示。如果RA不存在于ERT 255中,并且如果可以创建新的条目,则ERT 255创建具有新的ERT_ID的新条目以存储RA,如610和615所示。基于执行线程分别是第一线程或第二线程,在ERT0或ERT1中创建新条目。在处理器工作在ST模式的情况下,更新ERT0。如果ERT 255没有用于新条目的开放空隙,则基于最近最少使用或其它这种技术来替换现有条目,如615所示。
如果发现ERT 255中的现有条目具有与所接收RA(重加载RA)相同的RA,则ERT 255将现有条目的页尺寸(0:1)与所接收RA的页尺寸相比较,如620所示。如果现有条目的页尺寸小于重加载RA的页尺寸,则从ERT255中删除该RA的现有条目,并添加具有新ERT ID的新条目以用于页尺寸较大的RA,如625处所示。如果现有条目具有相同或较大的页尺寸,并且如果实现方式使用SDT,则在SDT中创建条目以用于重加载RA,如627所示。
如果现有条目的页尺寸与重加载RA的尺寸相同,则ERT 255检查现有条目是否在用于执行线程的本地ERT上,如630所示。在这种情况下,本地ERT指的是与正在执行的线程相关联的ERT,例如ERT0用于第一线程以及ERT1用于第二线程。如果RA命中是在另一个ERT中,即不是本地ERT的ERT中,则ERT 255在本地ERT中创建新的条目,其ERT_ID与非本地ERT中的ERT_ID匹配,如632所示。例如,如果RA命中在用于线程-0的指令执行的ERT1中,则在ERT0中创建具有匹配的ERT_ID的条目作为ERT1中的条目。
如果RA命中在本地ERT实例上,并且如果EA也匹配,因为EA和RA都与现有条目匹配,但是对于这个提示ERT重加载的线程存在ERT未命中,ERT认为这表明两个线程正在共享相同的EA-RA映射(具有相同的页尺寸)。因此,如634处所示,在现有匹配条目中用于与重加载线程对应的位的tid_en(0)或tid_en(1)位被调成ON,以指示此情况。
如果RA命中是在本地ERT实例上,则EA不匹配现有条目,并且如果现有条目是用于与重加载RA相同的线程,则ERT识别其中两个不同EA映射到来自相同线程的相同RA的混叠情况,如636所示。如果处理器使用基于SDT的实现,则同义词条目被安装在SDT中,其映射到现有匹配条目的ERT ID、EA偏移(40:51)。
如果RA命中是在本地ERT实例上,EA不匹配现有条目,并且如果现有条目是针对不同的线程,则ERT识别其中两个EA映射到来自不同的线程的相同RA的混叠情况,如638所示。如果处理器使用基于SDT的实现,则同义词条目被安装在SDT中,其映射到现有匹配条目的ERT ID、EA偏移(40:51)。
上述方法便于在基于SDT的实现中,当两个线程具有相同的RA但不同的EA时,转换之一使用ERT条目,而另一个将使用SDT条目。因此,ERT条目通过在ERT条目中具有tid_en字段而便于在不同线程上使用相同EA和相同RA的情况。例如,在ERT0实例上Tid_en(0:1)={tid0 en,tid1 en};以及在ERT1实例上Tid_en(0:1)={tid1 en,tid1 en}。此外,ERT条目通过在ERT0和ERT1中具有多个条目以及它们各自的线程标识符,便于相同EA对应于不同线程间的不同RA的情况。ERT条目还支持具有不同EA对应于相同RA的情况(相同或不同线程的情况)。现在基于使用SDT的实现来描述两种情况。
当在ERT重加载时检测到具有对应于相同RA的不同EA的新指令时,LSU在SDT(同义词检测表)而不是ERT 255中安装条目。SDT命中结果利用原始(或较早的)ERT条目的EA重新启动。如果新的同义词页尺寸大于具有匹配RA的现有ERT条目中的页尺寸,则现有ERT条目由新的同义词(具有较大的页尺寸)替换,而不是在SDT中安装同义词。旧的ERT条目最终作为同义词被重新安装在SDT中。
此外,返回参考ERT情况,考虑LSU从处理器106接收来自另一内核的窥探的情况。该窥探可以来自系统中的不同内核(该窥探指示另一内核或线程,改变了相同真实地址处的数据)。LSU还检查来自内核中的线程的存储作为对内核中的其它线程的潜在窥探。所有窥探(来自其它内核)或存储(来自内核中的其它线程)都伴随着RA。在这种情况下,LSU逆向转换RA以基于ERT 255确定相应的EA、ERT_ID和页尺寸。LSU将该信息与存储在每个以下结构中的ERT ID、PS、EA(40:56)进行比较,以检测窥探命中并采取适当的动作。例如,如果在LRQF条目中检测到窥探命中,则LSU指示潜在的加载-命中-加载乱序危险。如果在EAD 290中检测到窥探命中,则如果窥探来自不同的内核则LSU发起L1无效。如果存储来自共享行的另一线程,则该行自动地获得新存储并被更新。
如果LSU使用SDT,并且如果在LMQ中存在窥探命中,则LSU还更新LMQ条目以不存储在L1 D高速缓存中,SRQ条目不被用于SRQ中的窥探,仅被用于LHS EA未命中RA样式检查,并且为窥探命中创建新的SDT条目。
因此,如前所述,对于基于仅EA的LSU,在此描述的执行流程中的技术挑战是线程上的EA同义词。例如,相同的线程EA同义词(即,来自线程映射的两个不同的EA指向相同的RA)。如果OoO窗口包括至少两个L1访问,那么LHS、SHL、LHL可能面临很多技术挑战,诸如:
Tid=w,EA(0:51)=x=>RA(8:51)=z;以及
Tid=w,EA(0:51)=y=>RA(8:51)=z。
本文描述的技术方案通过使用作为另一LSU子单元的SDT解决了该技术挑战。在一个或多个示例中,SDT包括16个条目,用于处理不同EA具有相同RA的情况。这种不同的EA被称为同义词,因为它们都被转换为相同的RA。SDT是LSU中的这种同义词的表。在AGEN(地址生成)处针对ERT未命中访问SDT。在一个或多个示例中,可以有限制地访问SDT,诸如仅在存在用于L/S操作的线程的有效SDT条目作为agen时。
图8示出了根据本发明的一个或多个实施例的同义词检测表(SDT)800的示例结构。所描绘的示例示出了具有16个条目的情况,然而,应当注意,在其他示例中,SDT 800可以包括与该示例不同数目的条目。SDT 800中的条目至少包括以下字段:发出地址{发出tid(0:1)、发出EA(0:51)}、页尺寸(0:1)(例如,4k、64k、2MB、16MB)和重新启动地址{EA(40:51)、ERT ID(0:6)}。在一个或多个示例中,每个条目还可以包括指示SDT条目是否有效的'有效性'字段(未示出)。在其中启动未命中L1的指令的情况下,LSU将指令与SDT 800进行比较。如果所启动的指令在原始地址比较上得到SDT命中,则LSU拒绝该指令,并利用来自SDT条目的对应重新替换地址来重新启动该指令。例如,LSU针对SRQ LHS使用替换Addr(40:51),并"强制匹配"在执行流水线中的ERT ID。
在ERT重加载期间将条目添加到SDT 800中,如这里所述。例如,在ERT重加载期间,将重加载RA与有效ERT条目比较。如果具有匹配RA的ERT条目已经存在并且不是EA命中情况,其中在原始ERT条目中仅设置了附加tid_en位,则读取来自现有ERT条目的EA(32:51),并且将条目安装到SDT 800中,而不是将条目添加到ERT 255中。
因为SDT 800具有有限数量的条目,所以条目被替换。在一个或多个示例中,基于最近最少使用(LRU)技术或任何其它顺序来替换条目。在一个或多个示例中,如果SDT条目被替换,则使用辅助地址的后续启动重新触发SDT条目安装序列。此外,CAM清除具有与无效的ERT条目匹配的ERT ID的SDT条目。
图9示出了根据本发明的一个或多个实施例的用于执行ERT和SDT EA互换的方法的流程图。在一个或多个示例中,在ERT和SDT条目具有相同页尺寸的情况下,LSU执行互换。对于在相同或不同线程上的不同指令上,不同EA对应于相同RA的情况,互换提高了处理器106的效率。例如,考虑两个指令X和Y,使得EAx=>RAz,且EAy=>RAz。如果EAx首先未命中ERT,即在EAy之前,则LSU安装了如这里所述的那样具有映射到RAz的EAx的ERT条目。随后,当EAy在稍后的时间未命中ERT时,LSU CAM具有RAz的ERT,得到RA命中,并在SDT 800中安装具有原始地址=EAy、替换地址=EAx的条目。
现在,如果对RAz的大多数后续接入是利用EAy,则LSU必须比使用EAD本身更频繁地使用SDT。在一个或多个示例中,通过减少到SDT的这种频繁行程来提高LSU的效率的技术方案包括在每个SDT条目中提供递增计数器。如图8所示,LSU启动具有与来自SDT条目的ERTID匹配的ERT ID的指令,如810所示。如果SDT条目ERT ID匹配,则LSU还将启动的指令的EA与SDT条目中的原始EA进行比较,如820所示。如果SDT条目具有与来自指令的EA相匹配的原始地址值,则SDT条目的计数器被递增,如830和835所示。在所启动的指令具有与SDT条目的原始地址不同的EA的情况下,如840所示,SDT条目的计数器被重置。
在一个或多个示例中,计数器是4位字段,暗示最大值15。应当理解,在其他示例中,该字段具有不同的长度,和/或具有不同的最大值,其被用作阈值。例如,在指令已经被启动之后,将计数器值与阈值进行比较,如845和850所示。如果计数器低于阈值,则LSU继续如上所述地操作。如果计数器超过阈值,或者在一些情况下等于阈值,则LSU使与SDT条目相对应的ERT条目无效,如860所示。例如,使具有来自SDT条目的ERT ID的ERT条目无效。ERT条目的无效使得相应的条目从EA目录、LRQF、LMQ和SRQ无效。
此外,LSU以如下方式解决了在要求原始EA来完成的所启动指令中的异常的技术挑战。例如,考虑启动的指令得到SDT命中并且想要用来自SDT条目的替换地址而不是原始启动地址重新启动,但是发生了要求原始EA来结束的异常的情况。这种情况可能发生在DAWR/SDAR等的情况下。
实现这里描述的技术方案的LSU通过将原始地址保持在LRQE中的队列中,来解决这种技术挑战。LRQE还为每个LRQE条目保存SDT命中标志(位),SDT索引(0:3)。当重新启动时,提前一个周期读取SDT索引以获得替换地址。LRQE在重新启动之前还在LRQE条目地址(原始地址)和SDT替换地址(从SDT读取)之间进行复用。对于诸如上述的需要原始地址来结束的异常情况,LRQE具有用于在DAWR部分匹配上设置的用于每个条目的附加SDT命中覆盖标志(位)等。LRQE重新启动存在SDT命中但异常结束并强制启动原始地址的情况。SRQ重新启动类似于这里描述的LRQE重新启动,其中当在重新启动之前确定以异常情况结束时,使用SDT命中覆盖标志。
因此,这里描述的技术方案有助于仅使用EA,提供了技术优点,使得在加载/存储路径中不引用ERAT(其通常在处理器中使用),并且进一步使得及时检测SHL和抑制DVAL不会引起定时问题。此外,本文描述的技术方案仅使用EA的解决了技术问题,例如,当两个不同的EA映射到相同的RA时,LHS、SHL、LHL检测可能被错过。本文描述的技术方案通过使用OoO窗口中用于指令的同义词检测表(SDT)来解决这种技术问题。所述技术方案提供各种技术优点,其中包含芯片面积的减小(通过不存储RA)、功率消耗的减小(通过不转换EA-RA)、以及等待时间的改进,等等。
现在转向图10,用于实现本发明的一个或多个实施例的一些或所有方面的计算机系统1000的框图。本文描述的处理可以以硬件、软件(例如,固件)或其组合来实现。在示例性实施例中,所描述的方法可以至少部分地在硬件中实现,并且可以是专用或通用计算机系统1000的微处理器的一部分,所述计算机系统例如是移动设备、个人计算机、工作站、小型计算机或大型计算机。
在示例性实施例中,如图10所示,计算机系统1000包括处理器1005、耦合到存储器控制器1015的存储器1012、以及经由本地I/O控制器1035通信地耦合的一个或多个输入设备1045和/或诸如外围设备之类的输出设备1047。这些设备1047和1045可以包括例如打印机、扫描仪、麦克风等。传统的键盘1050和鼠标1055可以耦合到I/O控制器1035。I/O控制器1035可以是例如一个或多个总线或其它有线或无线连接,如本领域已知的。I/O控制器1035可以具有附加元件,这些元件为了简单起见而被省略,诸如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,以实现通信。
I/O设备1047、1045还可以包括与输入和输出通信的设备,例如磁盘和磁带存储器、网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发器、电话接口、桥接器、路由器等。
处理器1005是用于执行硬件指令或软件的硬件设备,特别是那些存储在存储器1012中的硬件指令或软件。处理器1005可以是定制的或商业上可获得的处理器、中央处理单元(CPU)、与计算机系统1000相关联的若干处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、微处理器或用于执行指令的其它设备。处理器1005可以包括高速缓存,例如但不限于,用于加速可执行指令获取的指令高速缓存、用于加速数据获取和存储的数据高速缓存、以及用于加速可执行指令和数据的虚拟到物理地址转换的转换后备缓冲器(TLB)。高速缓存可以被组织为更多高速缓存级别(L1、L2等)的层次结构。
存储器1012可以包括易失性存储器元件(例如,随机存取存储器、RAM,诸如DRAM、SRAM、SDRAM等)和非易失性存储器元件(例如,ROM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、盘、磁盘、盒式磁带等)中的一个或组合。此外,存储器1012可以包括电、磁、光或其它类型的存储介质。注意,存储器1012可以具有分布式架构,其中各种组件彼此远离,但是可以由处理器1005访问。
存储器1012中的指令可以包括一个或多个分开的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图10的示例中,存储器1012中的指令包括适当的操作系统(OS)1011。操作系统1011实质上可以控制其他计算机程序的执行,并且提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。
附加数据,包括例如用于处理器1005的指令或其他可检索信息,可以存储在存储装置1027中,其可以是诸如硬盘驱动器或固态驱动器的存储设备。存储器1012中或存储装置1027中的所存储指令可包含使得处理器1005能够执行本发明的分派系统和方法的一个或多个方面的指令。
计算机系统1000还可以包括耦合到显示器1030的显示控制器1025。在示例性实施例中,计算机系统1000还可以包括用于耦合到网络1065的网络接口1060。网络1065可以是用于计算机系统1000和外部服务器、客户机等之间经由宽带连接的通信的基于IP的网络。网络1065在计算机系统1000和外部系统之间发送和接收数据。在示例性实施例中,网络1065可以是由服务提供商管理的受管理IP网络。网络1065可以以无线方式实现,例如使用诸如WiFi、WiMax等的无线协议和技术。网络1065也可以是分组交换网络,例如局域网、广域网、城域网、因特网或其它类似类型的网络环境。网络1065可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN)、内联网或其它适当的网络系统,并且可以包括用于接收和发送信号的设备。
用于提供地址转换以便将真实地址发送到基于有效地址的加载-存储单元中的存储器子系统的系统和方法可以整体或部分地体现在计算机程序产品中或计算机系统1000中,诸如图10中所示。
在此参考相关附图描述本发明的各种实施例。在不偏离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中,在元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不旨在在这方面进行限制。因此,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和过程步骤可并入具有本文未详细描述的额外步骤或功能性的更综合程序或过程中。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语"包含"、"包括"、"具有"、"含有"或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列要素的组合物、混合物、工艺、方法、制品或装置不一定仅限于那些要素,而是可以包括未明确列出的或此类组合物、混合物、工艺、方法、制品或装置固有的其他要素。
另外,术语"示例性"在本文中用于表示"用作示例、实例或说明",本文描述为"示例性"的任何实施例或设计不一定被解释为比其它实施例或设计优选或有利。术语"至少一个"和"一个或多个"可以理解为包括大于或等于一的任何整数,即一、二、三、四等。术语"多个"可以理解为包括大于或等于二的任何整数,即二、三、四、五等。术语"连接"可包括间接"连接"和直接"连接"两者。
术语"约"、"基本上"、"大约"及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,"约"可以包括给定值的±8%或5%或2%的范围。
为了简洁起见,与制造和使用本发明的方面相关的常规技术可以或可以不在本文中详细描述。特别地,用于实现本文描述的各种技术特征的计算系统和特定计算机程序的各个方面是公知的。因此,为了简洁起见,许多常规实现细节在本文中仅简要叙述或完全省略,而不提供众所周知的系统和/或过程细节。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种用于执行一个或多个指令的处理单元,所述处理单元包括:
加载-存储单元(LSU),其用于在存储器和寄存器之间传送数据,所述LSU被配置来在乱序(OoO)窗口中执行多个指令,所述执行包括:
响应于确定第一指令正在使用第一有效地址,所述第一有效地址对应于第一真实地址,来在有效真实表(ERT)中创建ERT条目,所述ERT条目将所述第一有效地址映射到所述第一真实地址;以及
响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:
在同义词检测表(SDT)中创建SDT条目,其中所述SDT条目将所述第二有效地址映射到所述ERT条目;以及
通过用所述第一有效地址替换所述第二指令中的所述第二有效地址来重新启动所述第二指令。
2.如权利要求1所述的处理单元,其中,响应于所述第二有效地址也对应于所述第一实地址:
将与所述第一指令相关联的第一页尺寸和与所述第二指令相关联的第二页尺寸进行比较;以及
其中,将所述第二有效地址映射到所述ERT的所述SDT条目是响应于所述第一页尺寸大于所述第二页尺寸而创建的。
3.根据权利要求2所述的处理单元,其中响应于所述第一页尺寸小于所述第二页尺寸:
通过用所述第二有效地址与所述第一真实地址之间的映射替换所述第一有效地址与所述第一真实地址之间的映射来修改所述ERT条目。
4.根据权利要求3所述的处理单元,其中,进一步响应于所述第一页尺寸小于所述第二页尺寸:
创建将所述第一有效地址映射到所述ERT条目的SDT条目。
5.根据权利要求1所述的处理单元,其中所述SDT条目包括在其上启动所述第一指令的线程的线程标识符、所述第一指令的有效地址、所述第一指令的页尺寸、所述第一指令的重新启动有效地址、以及对应ERT条目的ERT条目标识符。
6.根据权利要求1所述的处理单元,其中所述第一指令是来自由加载指令和存储指令组成的指令组中的一个。
7.如权利要求1所述的处理单元,其中维持计数器以指示利用所述第一有效地址启动的指令的数量,并且响应于所述计数器越过预定阈值,使与所述第一有效地址相对应的ERT条目无效。
8.一种用于由处理单元执行一个或多个乱序指令的计算机实现的方法,所述方法包括:
由加载-存储单元(LSU)从乱序(OoO)窗口发出多个指令,所述发出包括:
响应于确定第一指令正在使用第一有效地址,所述第一有效地址对应于第一实地址,来在有效真实表(ERT)中创建ERT条目,所述ERT条目将所述第一有效地址映射到所述第一真实地址;以及
响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:
在同义词检测表(SDT)中创建SDT,其中所述SDT条目将第二有效地址映射到所述ERT条目;以及
通过用所述第一有效地址替换所述第二指令中的所述第二有效地址来重新启动所述第二指令。
9.如权利要求8所述的计算机实现的方法,其中,响应于所述第二有效地址也对应于所述第一实地址:
将与所述第一指令相关联的第一页尺寸和与所述第二指令相关联的第二页尺寸进行比较;以及
其中,将所述第二有效地址映射到所述ERT条目的SDT条目是响应于所述第一页尺寸大于所述第二页尺寸而创建的。
10.根据权利要求9所述的计算机实现的方法,其中,响应于所述第一页尺寸小于所述第二页尺寸:
通过用所述第二有效地址与所述第一真实地址之间的映射替换所述第一有效地址与所述第一真实地址之间的映射来修改所述ERT条目。
11.根据权利要求10所述的计算机实现的方法,其中,响应于所述第一页尺寸小于所述第二页尺寸:
创建将所述第一有效地址映射到所述ERT条目的SDT条目。
12.如权利要求8所述的计算机实现的方法,其中所述SDT条目包括在其上启动所述第一指令的线程的线程标识符、所述第一指令的有效地址、所述第一指令的页尺寸、所述第一指令的重新启动有效地址以及对应ERT条目的ERT条目标识符。
13.根据权利要求8所述的计算机实现的方法,其中所述第一指令是来自由加载指令和存储指令组成的指令组中的一个。
14.如权利要求8所述的计算机实现的方法,其中,维持计数器以指示利用所述第一有效地址启动的指令的数量,并且响应于所述计数器越过预定阈值,使与所述第一有效地址相对应的ERT条目无效。
15.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由处理器执行以使所述处理器执行操作,所述操作包括:
由加载-存储单元(LSU)过以下操作从乱序(OoO)窗口发出多个指令:
响应于确定第一指令正在使用第一有效地址,所述第一有效地址对应于第一真实地址,来在有效真实表(ERT)中创建ERT条目,所述ERT条目将所述第一有效地址映射到所述第一真实地址;以及
响应于确定由第二指令使用的有效地址同义词,所述有效地址同义词是也与所述第一真实地址相对应的第二有效地址:
在同义词检测表(SDT)中创建SDT,其中所述SDT条目将第二有效地址映射到所述ERT条目;以及
通过用所述第一有效地址替换所述第二指令中的所述第二有效地址来重新启动所述第二指令。
16.如权利要求15所述的计算机程序产品,其中,响应于所述第二有效地址也对应于所述第一实地址:
将与所述第一指令相关联的第一页尺寸和与所述第二指令相关联的第二页尺寸进行比较;以及
其中,将所述第二有效地址映射到所述ERT条目的SDT条目是响应于所述第一页尺寸大于所述第二页尺寸而创建的。
17.根据权利要求16所述的计算机程序产品,其中响应于所述第一页尺寸小于所述第二页尺寸:
通过用所述第二有效地址与所述第一真实地址之间的映射替换所述第一有效地址与所述第一真实地址之间的映射来修改所述ERT条目。
18.根据权利要求17所述的计算机程序产品,其中响应于所述第一页尺寸小于所述第二页尺寸:
创建将所述第一有效地址映射到所述ERT条目的SDT条目。
19.如权利要求15所述的计算机程序产品,其中所述SDT条目包括在其上启动第一指令的线程的线程标识符、第一指令的有效地址、第一指令的页尺寸、第一指令的重新启动有效地址、以及对应ERT条目的ERT条目标识符。
20.根据权利要求15所述的计算机程序产品,其中所述第一指令是来自由加载指令和存储指令组成的指令组中的一个。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/726,627 | 2017-10-06 | ||
US15/726,596 US10606591B2 (en) | 2017-10-06 | 2017-10-06 | Handling effective address synonyms in a load-store unit that operates without address translation |
US15/726,596 | 2017-10-06 | ||
US15/726,627 US11175924B2 (en) | 2017-10-06 | 2017-10-06 | Load-store unit with partitioned reorder queues with single cam port |
US15/825,453 US11175925B2 (en) | 2017-10-06 | 2017-11-29 | Load-store unit with partitioned reorder queues with single cam port |
US15/825,453 | 2017-11-29 | ||
US15/825,494 US10606592B2 (en) | 2017-10-06 | 2017-11-29 | Handling effective address synonyms in a load-store unit that operates without address translation |
US15/825,494 | 2017-11-29 | ||
PCT/IB2018/057694 WO2019069255A1 (en) | 2017-10-06 | 2018-10-03 | MANAGING EFFECTIVE ADDRESS SYNONYMS IN A LOADING-STORAGE UNIT OPERATING WITHOUT ADDRESS TRANSLATION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133421A true CN111133421A (zh) | 2020-05-08 |
CN111133421B CN111133421B (zh) | 2023-09-29 |
Family
ID=65994519
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880061956.9A Active CN111133421B (zh) | 2017-10-06 | 2018-10-03 | 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词 |
CN201880061955.4A Active CN111133413B (zh) | 2017-10-06 | 2018-10-03 | 利用单个cam端口的具有分区重排序队列的加载-存储单元 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880061955.4A Active CN111133413B (zh) | 2017-10-06 | 2018-10-03 | 利用单个cam端口的具有分区重排序队列的加载-存储单元 |
Country Status (5)
Country | Link |
---|---|
JP (2) | JP7025100B2 (zh) |
CN (2) | CN111133421B (zh) |
DE (2) | DE112018004006B4 (zh) |
GB (2) | GB2579534B (zh) |
WO (2) | WO2019069255A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780146A (zh) * | 2022-06-17 | 2022-07-22 | 深流微智能科技(深圳)有限公司 | 资源地址查询方法、装置、系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015480A (zh) * | 2020-08-31 | 2020-12-01 | 上海兆芯集成电路有限公司 | 指令的分配方法和处理器 |
JP2023056289A (ja) | 2021-10-07 | 2023-04-19 | 富士通株式会社 | 演算処理装置および演算処理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004192615A (ja) * | 2002-12-12 | 2004-07-08 | Internatl Business Mach Corp <Ibm> | ハードウェア管理仮想−物理アドレス変換機構 |
US7343469B1 (en) * | 2000-09-21 | 2008-03-11 | Intel Corporation | Remapping I/O device addresses into high memory using GART |
CN101324840A (zh) * | 2007-06-15 | 2008-12-17 | 国际商业机器公司 | 用于增强处理单元中的独立加载的执行的方法和系统 |
CN103198028A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种内存数据迁移方法、装置及系统 |
WO2016105961A1 (en) * | 2014-12-26 | 2016-06-30 | Wisconsin Alumni Research Foundation | Cache accessed using virtual addresses |
US9740409B2 (en) * | 2013-12-13 | 2017-08-22 | Ineda Systems, Inc. | Virtualized storage systems |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
US7730282B2 (en) * | 2004-08-11 | 2010-06-01 | International Business Machines Corporation | Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector |
US8645974B2 (en) * | 2007-08-02 | 2014-02-04 | International Business Machines Corporation | Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device |
US7711929B2 (en) * | 2007-08-30 | 2010-05-04 | International Business Machines Corporation | Method and system for tracking instruction dependency in an out-of-order processor |
US8639884B2 (en) * | 2011-02-28 | 2014-01-28 | Freescale Semiconductor, Inc. | Systems and methods for configuring load/store execution units |
US9182991B2 (en) * | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
US8966232B2 (en) * | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
GB2503438A (en) * | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
-
2018
- 2018-10-03 DE DE112018004006.2T patent/DE112018004006B4/de active Active
- 2018-10-03 DE DE112018004004.6T patent/DE112018004004T5/de active Pending
- 2018-10-03 GB GB2006338.4A patent/GB2579534B/en active Active
- 2018-10-03 CN CN201880061956.9A patent/CN111133421B/zh active Active
- 2018-10-03 GB GB2006344.2A patent/GB2579757B/en active Active
- 2018-10-03 JP JP2020517947A patent/JP7025100B2/ja active Active
- 2018-10-03 WO PCT/IB2018/057694 patent/WO2019069255A1/en active Application Filing
- 2018-10-03 JP JP2020517847A patent/JP7064273B2/ja active Active
- 2018-10-03 WO PCT/IB2018/057695 patent/WO2019069256A1/en active Application Filing
- 2018-10-03 CN CN201880061955.4A patent/CN111133413B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7343469B1 (en) * | 2000-09-21 | 2008-03-11 | Intel Corporation | Remapping I/O device addresses into high memory using GART |
JP2004192615A (ja) * | 2002-12-12 | 2004-07-08 | Internatl Business Mach Corp <Ibm> | ハードウェア管理仮想−物理アドレス変換機構 |
CN101324840A (zh) * | 2007-06-15 | 2008-12-17 | 国际商业机器公司 | 用于增强处理单元中的独立加载的执行的方法和系统 |
CN103198028A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种内存数据迁移方法、装置及系统 |
US9740409B2 (en) * | 2013-12-13 | 2017-08-22 | Ineda Systems, Inc. | Virtualized storage systems |
WO2016105961A1 (en) * | 2014-12-26 | 2016-06-30 | Wisconsin Alumni Research Foundation | Cache accessed using virtual addresses |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780146A (zh) * | 2022-06-17 | 2022-07-22 | 深流微智能科技(深圳)有限公司 | 资源地址查询方法、装置、系统 |
CN114780146B (zh) * | 2022-06-17 | 2022-08-26 | 深流微智能科技(深圳)有限公司 | 资源地址查询方法、装置、系统 |
Also Published As
Publication number | Publication date |
---|---|
JP7025100B2 (ja) | 2022-02-24 |
DE112018004006T5 (de) | 2020-04-16 |
CN111133413B (zh) | 2023-09-29 |
WO2019069255A1 (en) | 2019-04-11 |
CN111133421B (zh) | 2023-09-29 |
CN111133413A (zh) | 2020-05-08 |
JP7064273B2 (ja) | 2022-05-10 |
JP2020536308A (ja) | 2020-12-10 |
JP2020536310A (ja) | 2020-12-10 |
GB2579757A (en) | 2020-07-01 |
GB2579757B (en) | 2020-11-18 |
DE112018004004T5 (de) | 2020-04-16 |
GB202006344D0 (en) | 2020-06-17 |
WO2019069256A1 (en) | 2019-04-11 |
GB2579534A (en) | 2020-06-24 |
GB202006338D0 (en) | 2020-06-17 |
DE112018004006B4 (de) | 2021-03-25 |
GB2579534B (en) | 2020-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776113B2 (en) | Executing load-store operations without address translation hardware per load-store unit port | |
US10534616B2 (en) | Load-hit-load detection in an out-of-order processor | |
US10963248B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US10977047B2 (en) | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses | |
US10310988B2 (en) | Address translation for sending real address to memory subsystem in effective address based load-store unit | |
US11175925B2 (en) | Load-store unit with partitioned reorder queues with single cam port | |
US10606590B2 (en) | Effective address based load store unit in out of order processors | |
US10579387B2 (en) | Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor | |
US10572257B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US9740623B2 (en) | Object liveness tracking for use in processing device cache | |
CN111133421B (zh) | 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词 | |
US10579384B2 (en) | Effective address based instruction fetch unit for out of order processors |
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 |