CN117270971B - 加载队列控制方法、装置及处理器 - Google Patents

加载队列控制方法、装置及处理器 Download PDF

Info

Publication number
CN117270971B
CN117270971B CN202311201699.3A CN202311201699A CN117270971B CN 117270971 B CN117270971 B CN 117270971B CN 202311201699 A CN202311201699 A CN 202311201699A CN 117270971 B CN117270971 B CN 117270971B
Authority
CN
China
Prior art keywords
instruction
state
load
address
index
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
Application number
CN202311201699.3A
Other languages
English (en)
Other versions
CN117270971A (zh
Inventor
翟少敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hexin Technology Co ltd, Shanghai Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202311201699.3A priority Critical patent/CN117270971B/zh
Publication of CN117270971A publication Critical patent/CN117270971A/zh
Application granted granted Critical
Publication of CN117270971B publication Critical patent/CN117270971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本申请提供一种加载队列控制方法、装置及处理器,处理器在执行指令队列时获取地址解析完成表和检查指针,从地址解析完成表中各表项的状态信息中确定各加载指令和存储指令进行地址解析的状态和检查指针指向地址的前一同步指令或前一栅栏指令的排序状态,根据地址解析的状态和排序状态确定加载重排序队列中已完成检查的加载指令,在确定该加载指令的执行顺序无误时即可将已完成检查的加载指令的表项在加载重排序队列中释放,上述提前释放加载重排序队列不再有用的表项提高了加载重排序队列的使用效率,在同样规模的乱序执行指令窗口下可利用更少的加载重排序队列容量达到和基于传统加载重排序队列释放方式的更大容量加载重排序队列相同的性能效果。

Description

加载队列控制方法、装置及处理器
技术领域
本申请涉及但不限定于一种加载队列控制方法、装置及处理器。
背景技术
现代处理器基本上借助指令的乱序执行来开发程序中的指令级并行,从而提升处理器性能。指令乱序执行可能会产生语义冒险,为了支持load乱序执行,而且能够发现顺序违例,设置加载重排序队列(Load reorder Queue,简称:LRQ)存储执行完成的加载(load)指令的地址,而且支持流水线上的指令查询存储部件中地址的功能,如何高效利用LRQ,降低指令对LRQ的资源压力成为研究的重点。
现有技术中,一些乱序执行处理器会在分派(dispatch)的时候为Load指令分配LRQ,还有一些处理器为了减轻LRQ资源压力,会推迟到发射(issue)指令的时候才分配LRQ,但是都需要等到Load指令从指令重排序缓冲中提交时,才会释放对应的LRQ表项。这样维护LRQ,虽然可以简化硬件设计和验证复杂度,但是在指令提交的时候才释放LRQ会增大Load指令在LRQ中的停留时间,继而增大了对LRQ的使用压力。
如何提高LRQ的利用率是本申请待解决的技术问题。
发明内容
本申请提供一种加载队列控制方法、装置及处理器,用以解决LRQ的利用率低的技术问题。
第一方面,本申请实施例提供加载队列控制方法,包括:
获取目标线程对应的地址解析完成表和检查指针,所述地址解析完成表中各指令对应的表项的顺序和所述目标线程对应的指令重排序缓冲中的指令的顺序相同,所述指令包括加载指令、存储指令、同步指令或栅栏指令;所述地址解析完成表中所述加载指令对应的表项和加载重排序队列中所述目标线程对应的各表项一一对应;
从所述地址解析完成表中各表项的状态信息中确定各所述加载指令和各所述存储指令进行地址解析的状态和所述检查指针指向地址的前一同步指令或前一栅栏指令的排序状态;
根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令;
将所述已完成检查的加载指令的表项在所述加载重排序队列中释放。
可选地,根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令,包括:
根据所述检查指针指向地址和预设检查带宽,确定目标指令索引范围;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围;
根据所述指令范围,确定所述加载重排序队列中已完成检查的加载指令。
可选地,根据所述检查指针指向地址和预设检查带宽,确定目标指令索引范围,包括:
将所述检查指针指向地址对应的索引确定为所述目标指令索引范围的开始索引;
将所述检查指针指向地址作为所述预设检查带宽覆盖的第一个索引,将所述预设检查带宽覆盖的最后一个索引确定为所述目标指令索引范围的结束索引。
可选地,所述地址解析完成表中各指令对应的表项包括指令索引;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围,包括:
将所述目标指令索引范围中年龄最老的指令对应的指令索引确定为所述已完成地址检查的指令范围的上限;
将位于所述检查指针指向地址之前的、多个连续的目标指令中年龄最小的指令确定为所述已完成地址检查的指令范围的下限;各所述目标指令的地址解析状态为已解析状态且所述排序状态为已排序状态,所述多个连续的目标指令包括至少一个所述加载指令;所述检查指针指向所述地址解析完成表中未解析的最老指令;
根据所述指令范围的上限和所述指令范围的下限确定所述指令范围。
可选地,所述目标指令索引范围内的多个指令包括至少一个所述加载指令;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围,包括:
当所述目标指令索引范围内各指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述目标指令索引范围为所述已完成地址检查的指令范围。
可选地,根据所述指令范围,确定所述加载重排序队列中已完成检查的加载指令,具体包括:
根据所述指令范围,确定所述加载重排序队列的释放范围;
将所述加载重排序队列中指令索引处于所述释放范围内的加载指令确定为所述已完成检查的加载指令。
可选地,将所述加载重排序队列中指令索引处于所述释放范围内的加载指令确定为所述已完成检查的加载指令,包括:
根据所述释放范围生成释放指令索引编码;所述释放指令索引编码的数据类型包括指令索引范围类型;所述释放指令索引编码包括开始指令索引和结束指令索引;
将所述释放指令索引编码传输至所述加载重排序队列的指令索引存储阵列;所述指令索引存储阵列包括所述加载重排序队列中各加载指令的指令索引;
将大于或等于所述开始指令索引,且小于或等于所述结束指令索引的指令索引对应的加载指令确定为所述已完成检查的加载指令。
可选地,所述地址解析完成表中各指令对应的表项包括地址解析状态位;访存类指令的地址解析状态位初始化为未解析状态,所述访存类指令包括加载指令和存储指令;
根据所述检查指针指向地址和预设检查带宽,确定所述目标指令索引范围之后,所述方法还包括:
在所述目标指令索引范围内的访存类指令的地址解析完成后,将所述访存类指令的地址解析状态位调整为解析状态。
可选地,根据所述地址解析的状态和所述排序状态,确定所述加载重排序列中已完成检查的加载指令,包括:
当目标指令索引范围内包括所述同步指令或所述栅栏指令、且所述排序状态为未排序状态时,等待存储系统将所述同步指令或所述栅栏指令进行排序,直至获得监听检查回复指令;
根据所述监听检查回复指令,将所述排序状态调整为已排序状态,并获取所述目标指令索引范围内各加载指令的监听状态;
当至少一个所述加载指令的监听状态为被监听状态,从处于所述被监听状态的最老的加载指令起重新执行指令,并在执行完成后确定已完成检查的加载指令。
第二方面,本申请提供一种加载队列控制装置,包括:
获取模块,用于获取目标线程对应的地址解析完成表和检查指针,所述地址解析完成表中各指令对应的表项的顺序和所述目标线程对应的指令重排序缓冲中的指令的顺序相同,所述指令包括加载指令、存储指令、同步指令或栅栏指令;所述地址解析完成表中所述加载指令对应的表项和加载重排序队列中所述目标线程对应的各表项一一对应;
处理模块,用于从所述地址解析完成表中各表项的状态信息中确定各所述加载指令和各所述存储指令进行地址解析的状态和所述检查指针指向地址的前一同步指令或前一栅栏指令的排序状态;
所述处理模块还用于根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令;
所述处理模块还用于将所述已完成检查的加载指令在所述加载重排序队列中释放。
第三方面,本申请提供一种处理器,所述处理器用于实现第一方面涉及的方法。
本申请提供的加载队列控制方法、装置及处理器中,处理器在执行指令队列时,获取目标线程对应的地址解析完成表和检查指针,从地址解析完成表中各表项的状态信息中确定各加载指令和各存储指令进行地址解析的状态和检查指针指向地址的前一同步指令或前一栅栏指令的排序状态,根据地址解析的状态和排序状态,确定加载重排序队列中已完成检查的加载指令,在确定该加载指令的执行顺序无误时即可将已完成检查的加载指令的表项在加载重排序队列中释放,上述提前释放加载重排序队列不再有用的表项提高了加载重排序队列的使用效率,在同样规模的乱序执行指令窗口下,可以利用更少的加载重排序队列容量达到和基于传统加载重排序队列释放方式的更大容量加载重排序队列相同的性能效果,而且可以降低时序,面积和功耗压力。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请一些实施例提供的一种乱序执行处理器内核流水线示意图;
图2A和图2B为本申请一些实施例提供的地址解析完成表的结构示意图;
图3A和图3B为本申请一些实施例提供的加载重排序队列的结构示意图;
图4为本申请一些实施例提供的一种加载队列控制方法的流程示意图;
图5为本申请一些实施例提供的确定已完成检查的加载指令的方法流程示意图;
图6为本申请另一些实施例提供的地址解析完成表的结构示意图;
图7为本申请另一些实施例提供的地址解析完成表的结构示意图;
图8为本申请另一些实施例提供的地址解析完成表的结构示意图;
图9为本申请另一些实施例提供的地址解析完成表的结构示意图;
图10为本申请另一些实施例提供的确定已完成检查的加载指令的方法流程示意图;
图11为本申请另一些实施例提供的地址解析完成表的结构示意图;
图12为本申请另一些实施例提供的地址解析完成表的结构示意图;
图13为本申请一些实施例提供的加载队列控制装置的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本申请实施例中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的商品或者系统中还存在另外的相同要素。
现代处理器基本上借助指令的乱序执行来开发程序中的指令级并行,从而提升处理器性能。乱序执行允许不相干的指令越过长延迟的事件,从而提升指令吞吐。然而即使指令可以以各种顺序执行,但是它们必须以程序顺序更新机器状态,从而实现精确异常。在现代高性能处理器中,为了充分利用乱序执行访存(加载(load)和存储(store))指令带来的性能收益,同时能够发现因乱序执行引入的语义冒险,往往会实现2个或更多独立的队列,分别维护进入乱序窗口的加载和存储指令状态,并监测潜在的语义冒险。
语义冒险来源于访存指令乱序执行的结果和指令按照程序顺序执行的结果不一致,即存储顺序违例(memory order violation)。在放松一致性模型(relaxed memoryconsistency model)中一般包括3种存储顺序违例:1)store-load顺序违例;2)load-load顺序违例;3)sync-load顺序违例。
现有技术中设置加载重排序队列(Load reorder Queue,简称:LRQ)存储执行完成的加载(load)指令的地址,而且支持流水线上的指令查询存储部件中地址的功能,如何高效利用LRQ,降低指令对LRQ的资源压力成为研究的重点。
现有技术中,一些乱序执行处理器会在分派(dispatch)的时候为Load指令分配LRQ,还有一些处理器为了减轻LRQ资源压力,会推迟到发射(issue)指令的时候才分配LRQ,但是都需要等到Load指令从指令重排序缓冲中提交时,才会释放对应的LRQ表项。这样维护LRQ,虽然可以简化硬件设计和验证复杂度,但是在指令提交的时候才释放LRQ会增大Load指令在LRQ中的停留时间,继而增大了对LRQ的使用压力。
如何提高LRQ的利用率是本申请待解决的技术问题。
为了解决上述问题,本申请提供一种加载队列控制方法、装置及处理器,本申请的技术构思是:通过地址解析完成列表(Address Resolved List)追踪已经完成地址翻译并且利用自身地址和指令年龄信息在LRQ中进行顺序违例检查的访存指令,从最老的指令开始扫描的若干指令是否已经完成了地址解析,在确定完成地址解析时,对已经解析地址的加载指令在的LRQ中的表项进行释放。
图1为本申请根据一示例性实施例提供的乱序执行处理器的内核流水线示意图,如图1所示,包括:
指令缓存(Instruction-Cache,简称I-cache),用于从外部内存条(DDR)获得并存储近期正在使用的指令以及后面将用到的指令以及指令的辅助信息(比如预译码信息)。
取指单元(Instruction fetch Unit,简称IFU),用于每时钟周期负责从指令缓存中索引一到多条指令。
分支预测单元(Branch Prediction Unit,简称BPU),可以紧耦合到IFU,或者和IFU解耦。用于为IFU预测后续指令取指的轨迹,即预测当前指令流的跳转方向以及跳转地址,IFU从BPU提供的地址处获取对应的指令。
指令译码单元(Instruction Decode Unit,简称IDU),用于接收来自取指单元的指令,并对该指令进行译码,通常将指令集规定的指令字译码为适用于硬件执行的微指令序列。根据指令的复杂程度,译码为一至多条微指令或者内部操作(internal operation,简称IOP)。IOP可以被后续流水线处理和乱序执行,但往往需要等待同属于相同指令的所有IOP都正确地执行完成之后才能提交。
寄存器重命名单元(register renaming),通常用来消除各指令的IOP之间的假依赖性(例如write-after-write,WAW;write-after-read,WAR),以避免指令的串行执行。具体实现中,寄存器重命名单元可以将逻辑(指令集架构层面的)目标寄存器编号映射到物理寄存器空间中的编号,在映射过程中可以消除假相关(WAW,WAR)。一旦进行了译码和重命名,在分派(dispatch)阶段IOP可以被分配流水线后端资源,例如指令重排序缓冲(Instruction ReOrder Buffer,ROB)、指令调度队列(Issue Queue)、Load/Sore队列(LoadReorder Queue,Store Reorder Queue)。根据IOP信息的分类,分别存入相关资源准备执行指令。
指令重排序缓冲,用于存储指令完成状态、指令异常种类、指令寄存器映射历史、以及指令地址等相关信息,从而能够支持指令正常提交,或者在处理指令推测错误(异常,分支预测错误,存储顺序违例等)时,恢复处理器内核相关微架构状态,重新取指令执行。
指令重排序缓冲中的存储的内容是在dispatch阶段进入ROB的指令信息,直至指令从ROB中完成提交,在更新架构态寄存器映射后,才会释放相应的ROB表项。
地址解析完成表(Address Resolved List,简称ARL),和ROB相似的列表,用于追踪访存指令的地址是否已经解析(即成功完成内存地址从虚拟地址到物理地址的转换,利用自身地址和指令年龄信息在LRQ中进行顺序违例检查,且并未发现顺序违例)。其中,非访存类型的指令无需进行地址解析,因此,ARL中的该类指令对应的标志位为1;访存类指令的对应位置则初始化为0,在完成地址翻译之后再更新为1,以表示对应指令的访存地址已解析。
地址解析完成表的表格结构如图2A和图2B所示,每个索引对应一个标志位rslv,该标志位用于表示该索引对应的指令是否进行地址解析;利用检查指针(check ptr)获取指令的地址解析情况,根据地址解析情况(Ld addr resolved/St addr resolved)进行对应的调整;利用提交指针(commit ptr)确定指令的提交情况,该提交指针指向最老的、未提交的指令。此外,该地址解析完成表还包括表示同步指令的排序情况的标志位sync_pending,当未完成排序时,该标志位为1;当完成排序时,该标志位为0。
在一实施例中,乱序执行处理器为单线程处理器时,其中的地址解析完成表的表格结构如图2A所示,乱序执行处理器为该表格分配的寄存器的数量为256个,对应的索引为itag=0~255,针对该表格,设有一个检查指针check ptr、一个提交指针commit ptr,两个指针在0~255的索引范围内进行循环检查。
在另一实施例中,乱序执行处理器为多线程处理器时,其中的地址解析完成表的表格结构如图2B所示,乱序执行处理器为该表格分配的寄存器的总数量为256个,在乱序执行处理器为两线程处理器时,将该总数量进行均匀分配,则各线程所对应的寄存器的数量为128个,针对各线程,分别设有一个检查指针和一个提交指针,则第一线程对应的寄存器的索引为itag=0~127,检查指针check ptr0和提交指针commit ptr0在该索引范围内进行循环检查;第二线程对应的寄存器的索引为itag=128~155,检查指针check ptr1和提交指针commit ptr1在该索引范围内进行循环检查。
完成单元(completion logic),用于检查指令完成情况,并判断是否发生异常,如果没有异常,则根据指令类型更新对应的架构寄存器映射表(arch-state renamemapper)。
架构寄存器映射表,用于存储已提交指令的目的寄存器逻辑地址到物理地址的映射,即logical GPR index->physical GPR index。如果有异常,则根据ROB中的异常信息跳转到对应的异常处理例程中执行异常处理程序。
指令发射队列(Instruction Issue Queue),用于存储重命名之后的IOP,追踪指令的操作数准备状态、执行单元的运行状态和指令流水线所需资源的状态,唤醒队列中依赖于某些操作数的指令,这些操作数可能是即将由发射出去的IOP产生。
指令发射队列还用于为下游执行单元选择对应IOP,仲裁出最老的或者最关键的指令发射出去执行。当指令发射队列发射IOP出去之后会经过物理寄存器文件,读出源操作数或者从旁路通路拿到数据,然后送至对应的执行单元,比如分支执行单元(BranchExecution Unit),整数执行单元(integer Unit),浮点/向量执行单元(Floating Point/Vector Unit),访存执行单元(Load-Store Unit,简称LSU)等。
访存执行单元,包括加载重排序队列(Load Reorder Queue,简称LRQ)和存储重排序队列(Store ReOrder Queue,简称:SRQ)。
LRQ用于检测加载指令(load)的乱序执行是否违反了存储顺序语义,每个load指令在分派阶段或者发射阶段分配到一个LRQ表项,LRQ表项中包括多种参数对应的数据,LRQ的示意图如图3A和图3B所示。
当乱序执行处理器为单线程处理器时,LRQ的示意图如图3A所示,LRQ的各参数包括Ltag、itag、vld、RA、snooped(snped)等信息,Ltag表示其所处的LRQ的索引,处于相同LRQ的各表项的Ltag相同;itag表示其在LRQ中的索引;vld(valid)表示其所处表项的有效状态;RA(Real address)表示访存地址的物理地址,在另一些实施例中也被称为PhysicalAddress(PA),用于处理器通过该地址直接访问DRM,还用于LRQ的地址匹配比较(load指令在硬件完成虚拟地址(Virtual Addres,VA)到物理地址的地址翻译且成功返回load结果后,将RA更新到LRQ中,以等待后续指令对其地址进行检查);snped表示对应表项的Load指令被其他核心或者硬件线程的Store指令,或者invalidate操作查询匹配过,并被失效的情况。
当乱序执行处理器为多线程处理器时,LRQ的示意图如图3B所示,LRQ的各参数包括Ltag、tid、itag、vld、RA、snooped(snped)等信息,其中,tid(thread ID)表示该表项对应的指令在id对应的线程中运行,其他参数已在单线程处理器场景下的LRQ中进行解释,此处不再赘述。
SRQ用于追踪乱序执行窗口中的Store指令,加速Load指令的执行(提供可以旁路的Store data给相同线程中顺序靠后且访问同地址的load,而不需要等待Store提交),负责store类型指令的提交操作(更新存储器系统或者对访存操作进行排序)。
数据缓存单元,用于提供旁路数据的存储。
图4为本申请根据一示例性实施例提供的一种加载队列控制方法的流程示意图,如图4所示,方法包括:
S101、获取目标线程对应的地址解析完成表和检查指针。
当乱序执行处理器为单线程处理器时,该目标线程为该处理器中唯一的单线程。单线程处理器中的地址解析完成表为一个,指令重排序缓冲的数量也为一个,与单线程对应。
当乱序执行处理器为多线程处理器时,该目标线程为该处理器内多线程中的任一线程,多线程处理器中的地址解析完成表的数量、指令重排序缓冲的数量和线程的数量相同,各地址解析完成表和各线程一一对应,各指令重排序缓冲和各线程一一对应。
目标线程对应的地址解析完成表中各指令对应的表项的顺序和该目标线程对应的指令重排序缓冲中的指令的顺序相同,指令包括加载指令、存储指令、同步指令或栅栏指令,在一些实施例中,指令还包括其他非访存类指令。
目标线程对应的地址解析完成表中加载指令对应的表项和该目标线程对应的加载重排序队列中各表项一一对应。
S102、从地址解析完成表中各表项的状态信息中确定各加载指令和各存储指令进行地址解析的状态和检查指针指向地址的前一同步指令或前一栅栏指令的排序状态。
地址解析的状态包括已解析状态或未解析状态,排序状态包括已排序状态或未排序状态。
在一实施例中,用标识1表示已解析状态,用标识0表示未解析状态,如图6和图7中rslv列所示;
用标识0表示已排序状态,用标识0表示未排序状态,如图11和图12中Sync_pending所示。
S103、根据地址解析的状态和排序状态,确定加载重排序队列中已完成检查的加载指令。
在一实施例中,当加载指令对应的地址解析状态为已解析状态,且地址解析完成表中的排序状态为已排序状态,确定该加载指令不存在违例情况。
S104、将已完成检查的加载指令的表项在加载重排序队列中释放。
图5为本申请一些实施例提供的确定已完成检查的加载指令的方法流程示意图,如图5所示,方法包括:
S201、根据检查指针指向地址和预设检查带宽,确定目标指令索引范围。
检查指针指向地址为指令对应的地址,检查指针指向地址和地址解析完成表中该指令对应的索引一一对应。
预设检查带宽为处理器可同时查看地址解析完成表中索引的数量。
更具体的,确定目标指令索引范围包括步骤S2011~S2012:
S2011、将检查指针指向地址对应的索引确定为目标指令索引范围的开始索引。
S2012、将检查指针指向地址作为预设检查带宽覆盖的第一个索引,将预设检查带宽覆盖的最后一个索引确定为目标指令索引范围的结束索引。
例如:当检查指针指向地址对应的索引为1,且预设检查带宽为8时,则目标指令索引范围为地址解析完成表中索引1至8。
在确定目标指令索引范围时,该范围内的访存类指令还未进行地址解析。
地址解析表示load/store访问数据的地址已经完成地址翻译,而且没有未完成的存储器栅栏或者同步指令。
地址解析完成表中包括各指令对应的表项包括地址解析状态位。目标指令索引范围内的访存指令的地址解析的状态为初始化状态,即访存指令对应的地址解析状态位为未解析状态。而非访存类指令因不需要进行数据读取或者存储操作,则非访存类指令的地址解析状态位初始化为已解析状态。
S202、在目标指令索引范围内的访存类指令的地址解析完成后,将访存类指令的地址解析状态位调整为解析状态。
地址解析完成表中排序状态为已排序状态,且访存指令已完成地址翻译时,将访存类指令的地址解析状态位调整为解析状态。
其中,访存指令包括加载指令或者存储指令。
S203、当目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且排序状态为已排序状态,确定地址解析完成表中已完成地址检查的指令范围。
地址解析完成表中各指令对应的表项包括指令索引(itag)。
在一实施例中,确定已完成地址检查的指令范围的过程具体包括步骤S2031~S2033:
S2031、将目标指令索引范围中年龄最老指令对应的指令索引确定为已完成地址检查的指令范围的上限。
S2032、将位于检查指针指向地址之前的、多个连续的目标指令中年龄最小的指令确定为已完成地址检查的指令范围的下限。
在多个连续的目标指令中,各目标指令的地址解析状态为已解析状态且排序状态为已排序状态。
且多个连续的目标指令包括至少一个加载指令。
此时,检查指针指向地址解析完成表中未解析的最老指令。
S2033、根据指令范围的上限和指令范围的下限确定指令范围。
在另一实施例中,确定已完成地址检查的指令范围的过程具体包括步骤S2034:
S2034、当目标指令索引范围内各指令的地址解析状态为已解析状态且排序状态为已排序状态,确定目标指令索引范围为已完成地址检查的指令范围。
S204、根据指令范围,确定加载重排序队列中已完成检查的加载指令。
根据指令范围,确定加载重排序队列的释放范围,将加载重排序队列中指令索引处于释放范围内的加载指令确定为已完成检查的加载指令。
更具体地,根据释放范围生成释放指令索引编码;指令索引编码的数据类型包括指令索引范围类型;释放指令索引编码包括开始指令索引和结束指令索引;
将释放指令索引编码传输至加载重排序队列的指令索引存储阵列;指令索引存储阵列包括加载重排序队列中各加载指令的指令索引;
将大于或等于开始指令索引,且小于或等于结束指令索引的指令索引对应的加载指令确定为已完成检查的加载指令。
在上述技术方案中,处理器在执行指令队列时,获取地址解析完成表和检查指针,从地址解析完成表中各表项的状态信息中确定各加载指令和存储指令进行地址解析的状态和检查指针指向地址的前一同步指令或前一栅栏指令的排序状态,根据地址解析的状态和排序状态,确定加载重排序队列中已完成检查的加载指令,在确定该加载指令的执行顺序无误时即可将已完成检查的加载指令的表项在加载重排序队列中释放,上述提前释放加载重排序队列不再有用的表项提高了加载重排序队列的使用效率,在同样规模的乱序执行指令窗口下,可以利用更少的加载重排序队列容量达到和基于传统加载重排序队列释放方式的更大容量加载重排序队列相同的性能效果,而且可以降低时序,面积和功耗压力。
下面对地址解析完成表的变化过程进行详细解释。
如图6所示,ROB初始状态为空,在分派阶段为其分配8个IOP,分别填入ROB的itag0-7中,ARL中初始化对应的信息,其索引信息和指令在ROB中的索引信息相同,非访存类指令的rslv位初始化为1,访存类指令的rlsv位初始化为0。ARL将Load类指令对应的ld_vld位初始化为1,其他类型指令的ld_vld位为0。Check pointer(check ptr)指向最老的地址未解析的指令,即itag为0的指令;commit pointer(简称commit ptr)也指向最老的未提交的指令,此时check ptr和commit ptr均指向最老的指令。
随着指令的运行,有两个load指令进行了地址解析,如图7所示,则将ARL中对应位置itag1和itag4的rslv置为1。至此itag0-itag4的rslv均被设置为1,而且由于itag0-itag4对应的指令中没有同步(sync)指令,sync_pending=0,表示itag0-itag4中的load指令不再有存储顺序违例的风险,因为itag0-itag4之间的所有访存操作已经完成了地址检查。
因此,根据已完成地址检查的指令的索引,确定LRQ中可释放的指令表项的itag,并生成对应的释放itag编码,图8所示的是itag范围类型的编码,为[itag0,itag4],将其传送到LRQ对应的线程的itag存储阵列,若乱序执行处理器为单线程处理器,可直接将每项LRQ表项的itag和该范围进行比较,若表项的itag位于编码范围内,那么该表项可以被释放掉。若乱序执行处理器为多线程处理器,在LRQ中确定ARL对应线程的tid对应的目标表项,将各目标表项的itag和该范围进行比较,并在表项的itag处于编码范围内时进行释放。
在另一实施例中,释放itag编码还可以为multi-hot型,则生成与乱序窗口关联的向量,各itag对应该向量的一个维度,根据该向量设定对应的释放参数,以使LRQ进行对应的表项释放。
同时,更新检查指针的指向地址,将其指向itag为5的指令,如图8所示,在一个store指令和一个load指令解析完成后,则将ARL中对应位置itag5和itag8的rslv置为1,并再次生成释放itag编码[itag5,itag8],传输至LRQ进行对应的表项释放,并将检查指针的指向地址更新至itag为9的指令,此时,检查指针和ARL的状态如图9所示。
itag为9的指令为同步sync指令,则需要等待该指令的地址被解析。
图10为本申请另一些实施例提供的确定已完成检查的加载指令的方法流程示意图,如图10所示,方法包括:
S301、根据检查指针指向地址和预设检查带宽,确定目标指令索引范围。
S302、当目标指令索引范围内包括同步指令或栅栏指令、且排序状态为未排序状态时,等待存储系统将同步指令或栅栏指令进行排序,直至获得监听检查回复指令。
S303、根据监听检查回复指令,将排序状态调整为已排序状态,并获取目标指令索引范围内各加载指令的监听状态。
监听状态为被监听状态或未被监听状态。
S304、当至少一个加载指令的监听状态为被监听状态,从处于被监听状态的最老的加载指令起重新执行指令,并在执行完成后确定已完成检查的加载指令。
下面对包括同步指令或栅栏指令的地址解析完成表的变化过程进行详细解释。
如图11所示,由于itag为9的指令为同步指令,在执行该同步指令后,sync_pending调整为1。即使后续的访存指令已完成地址解析,由于同步操作没有完成,未收到对应的回复指令。
考虑到在sync指令全局排序的过程中,未被提交的load指令可能会被其他处理器核心的store操作修改,或者load对应的cache line被替换出去,因此,检查指针的指向地址不可更新,也不可释放已完成地址解析的load指令在LRQ中的表项。
在处理器核心收到sync_ack回复后,根据LRQ中的snped标识确定该load指令相对于存储器系统的全局顺序而言是否违例,当根据该snped标识确定违例,例如itag为11的指令违例(snooped)了,需要对该指令进行重新执行,以保证该指令对应的地址正确解析。
如图12所示,还将sync_pending被清除为0的状态,满足生成释放itag编码条件,生成释放itag编码[itag9,itag13],传输至LRQ进行对应的表项释放,并将检查指针的指向地址更新至itag为14的指令。
图13为本申请根据一实施例提供的加载队列控制装置的结构示意图,如图13所示,该加载队列控制装置500包括获取模块501和处理模块502。
获取模块501,用于获取目标线程对应的地址解析完成表和检查指针,地址解析完成表中各指令对应的表项的顺序和目标线程对应的指令重排序缓冲中的指令的顺序相同,指令包括加载指令、存储指令、同步指令或栅栏指令;地址解析完成表中加载指令对应的表项和加载重排序队列中目标线程对应的各表项一一对应。
处理模块502,用于从地址解析完成表中各表项的状态信息中确定各加载指令和各存储指令进行地址解析的状态和检查指针指向地址的前一同步指令或前一栅栏指令的排序状态。
处理模块502还用于根据地址解析的状态和排序状态,确定加载重排序队列中已完成检查的加载指令。
处理模块502还用于将已完成检查的加载指令的表项在加载重排序队列中释放。
在一可行实施例中,处理模块502具体用于:
根据检查指针指向地址和预设检查带宽,确定目标指令索引范围;
当目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且排序状态为已排序状态,确定地址解析完成表中已完成地址检查的指令范围;
根据指令范围,确定加载重排序队列中已完成检查的加载指令。
在一可行实施例中,处理模块502具体用于:
将检查指针指向地址对应的索引确定为目标指令索引范围的开始索引;
将检查指针指向地址作为预设检查带宽覆盖的第一个索引,将预设检查带宽覆盖的最后一个索引确定为目标指令索引范围的结束索引。
在一可行实施例中,处理模块502具体用于:
将目标指令索引范围中年龄最老的指令对应的指令索引确定为已完成地址检查的指令范围的上限;
将位于检查指针指向地址之前的、多个连续的目标指令中年龄最小的指令确定为已完成地址检查的指令范围的下限;各目标指令的地址解析状态为已解析状态且排序状态为已排序状态,多个连续的目标指令包括至少一个加载指令;检查指针指向地址解析完成表中未解析的最老指令;
根据指令范围的上限和指令范围的下限确定指令范围,其中,地址解析完成表中各指令对应的表项包括指令索引。
在一可行实施例中,处理模块502具体用于:
当目标指令索引范围内各指令的地址解析状态为已解析状态且排序状态为已排序状态,确定目标指令索引范围为已完成地址检查的指令范围。
在一可行实施例中,处理模块502具体用于:
根据指令范围,确定加载重排序队列的释放范围;
将加载重排序队列中指令索引处于释放范围内的加载指令确定为已完成检查的加载指令。
将加载重排序队列中指令索引处于释放范围内的加载指令确定为已完成检查的加载指令。
在一可行实施例中,处理模块502具体用于:
根据释放范围生成释放指令索引编码;指令索引编码的数据类型包括指令索引范围类型;释放指令索引编码包括开始指令索引和结束指令索引;
将释放指令索引编码传输至加载重排序队列的指令索引存储阵列;指令索引存储阵列包括加载重排序队列中各加载指令的指令索引;
将大于或等于开始指令索引,且小于或等于结束指令索引的指令索引对应的加载指令确定为已完成检查的加载指令。
在一可行实施例中,处理模块502具体用于:
在目标指令索引范围内的访存类指令的地址解析完成后,将访存类指令的地址解析状态位调整为解析状态;
其中,所地址解析完成表中各指令对应的表项包括地址解析状态位;访存类指令的地址解析状态位初始化为未解析状态,访存类指令包括加载指令和存储指令。
在一可行实施例中,处理模块502具体用于:
当目标指令索引范围内包括同步指令或栅栏指令、且排序状态为未排序状态时,等待存储系统将同步指令或栅栏指令进行排序,直至获得监听检查回复指令;
根据监听检查回复指令,将排序状态调整为已排序状态,并获取目标指令索引范围内各加载指令的监听状态;
当至少一个加载指令的监听状态为被监听状态,从处于被监听状态的最老的加载指令起重新执行指令,并在执行完成后确定已完成检查的加载指令。
本申请还提供一种处理器,用于实现上述实施例中涉及的方法,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (11)

1.一种加载队列控制方法,其特征在于,包括:
获取目标线程对应的地址解析完成表和检查指针,所述地址解析完成表中各指令对应的表项的顺序和所述目标线程对应的指令重排序缓冲中的指令的顺序相同,所述指令包括加载指令、存储指令、同步指令或栅栏指令;所述地址解析完成表中所述加载指令对应的表项和加载重排序队列中所述目标线程对应的各表项一一对应;
从所述地址解析完成表中各表项的状态信息中确定各所述加载指令和各所述存储指令进行地址解析的状态和所述检查指针指向地址的前一同步指令或前一栅栏指令的排序状态;
根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令,其中,当所述加载指令对应的地址解析状态为已解析状态,且所述地址解析完成表中的排序状态为已排序状态时,表明所述加载指令为已完成检查的加载指令;
将所述已完成检查的加载指令的表项在所述加载重排序队列中释放。
2.根据权利要求1所述的方法,其特征在于,根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令,包括:
根据所述检查指针指向地址和预设检查带宽,确定目标指令索引范围;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围;
根据所述指令范围,确定所述加载重排序队列中已完成检查的加载指令。
3.根据权利要求2所述的方法,其特征在于,根据所述检查指针指向地址和预设检查带宽,确定目标指令索引范围,包括:
将所述检查指针指向地址对应的索引确定为所述目标指令索引范围的开始索引;
将所述检查指针指向地址作为所述预设检查带宽覆盖的第一个索引,将所述预设检查带宽覆盖的最后一个索引确定为所述目标指令索引范围的结束索引。
4.根据权利要求2或3所述的方法,其特征在于,所述地址解析完成表中各指令对应的表项包括指令索引;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围,包括:
将所述目标指令索引范围中年龄最老的指令对应的指令索引确定为所述已完成地址检查的指令范围的上限;
将位于所述检查指针指向地址之前的、多个连续的目标指令中年龄最小的指令确定为所述已完成地址检查的指令范围的下限;各所述目标指令的地址解析状态为已解析状态且所述排序状态为已排序状态,所述多个连续的目标指令包括至少一个所述加载指令;所述检查指针指向所述地址解析完成表中未解析的最老指令;
根据所述指令范围的上限和所述指令范围的下限确定所述指令范围。
5.根据权利要求2或3所述的方法,其特征在于,所述目标指令索引范围内的多个指令包括至少一个所述加载指令;
当所述目标指令索引范围内至少一个加载指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述地址解析完成表中已完成地址检查的指令范围,包括:
当所述目标指令索引范围内各指令的地址解析状态为已解析状态且所述排序状态为已排序状态,确定所述目标指令索引范围为所述已完成地址检查的指令范围。
6.根据权利要求2所述的方法,其特征在于,根据所述指令范围,确定所述加载重排序队列中已完成检查的加载指令,具体包括:
根据所述指令范围,确定所述加载重排序队列的释放范围;
将所述加载重排序队列中指令索引处于所述释放范围内的加载指令确定为所述已完成检查的加载指令。
7.根据权利要求6所述的方法,其特征在于,将所述加载重排序队列中指令索引处于所述释放范围内的加载指令确定为所述已完成检查的加载指令,包括:
根据所述释放范围生成释放指令索引编码;所述释放指令索引编码的数据类型包括指令索引范围类型;所述释放指令索引编码包括开始指令索引和结束指令索引;
将所述释放指令索引编码传输至所述加载重排序队列的指令索引存储阵列;所述指令索引存储阵列包括所述加载重排序队列中各加载指令的指令索引;
将大于或等于所述开始指令索引,且小于或等于所述结束指令索引的指令索引对应的加载指令确定为所述已完成检查的加载指令。
8.根据权利要求2所述的方法,其特征在于,所述地址解析完成表中各指令对应的表项包括地址解析状态位;访存类指令的地址解析状态位初始化为未解析状态,所述访存类指令包括加载指令和存储指令;
根据所述检查指针指向地址和预设检查带宽,确定所述目标指令索引范围之后,所述方法还包括:
在所述目标指令索引范围内的访存类指令的地址解析完成后,将所述访存类指令的地址解析状态位调整为解析状态。
9.根据权利要求1所述的方法,其特征在于,根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令,包括:
当目标指令索引范围内包括所述同步指令或所述栅栏指令、且所述排序状态为未排序状态时,等待存储系统将所述同步指令或所述栅栏指令进行排序,直至获得监听检查回复指令;
根据所述监听检查回复指令,将所述排序状态调整为已排序状态,并获取所述目标指令索引范围内各加载指令的监听状态;
当至少一个所述加载指令的监听状态为被监听状态,从处于所述被监听状态的最老的加载指令起重新执行指令,并在执行完成后确定已完成检查的加载指令。
10.一种加载队列控制装置,其特征在于,包括:
获取模块,用于获取目标线程对应的地址解析完成表和检查指针,所述地址解析完成表中各指令对应的表项的顺序和所述目标线程对应的指令重排序缓冲中的指令的顺序相同,所述指令包括加载指令、存储指令、同步指令或栅栏指令;所述地址解析完成表中所述加载指令对应的表项和加载重排序队列中所述目标线程对应的各表项一一对应;
处理模块,用于从所述地址解析完成表中各表项的状态信息中确定各所述加载指令和各所述存储指令进行地址解析的状态和所述检查指针指向地址的前一同步指令或前一栅栏指令的排序状态;
所述处理模块还用于根据所述地址解析的状态和所述排序状态,确定所述加载重排序队列中已完成检查的加载指令,其中,当所述加载指令对应的地址解析状态为已解析状态,且所述地址解析完成表中的排序状态为已排序状态时,表明所述加载指令为已完成检查的加载指令;
所述处理模块还用于将所述已完成检查的加载指令在所述加载重排序队列中释放。
11.一种处理器,其特征在于,所述处理器用于实现如权利要求1至9中任一项所述的方法。
CN202311201699.3A 2023-09-15 2023-09-15 加载队列控制方法、装置及处理器 Active CN117270971B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311201699.3A CN117270971B (zh) 2023-09-15 2023-09-15 加载队列控制方法、装置及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311201699.3A CN117270971B (zh) 2023-09-15 2023-09-15 加载队列控制方法、装置及处理器

Publications (2)

Publication Number Publication Date
CN117270971A CN117270971A (zh) 2023-12-22
CN117270971B true CN117270971B (zh) 2024-03-19

Family

ID=89207363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311201699.3A Active CN117270971B (zh) 2023-09-15 2023-09-15 加载队列控制方法、装置及处理器

Country Status (1)

Country Link
CN (1) CN117270971B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101478A (en) * 1985-06-28 1992-03-31 Wang Laboratories, Inc. I/O structure for information processing system
WO1998002801A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same
CN1310554A (zh) * 1999-09-16 2001-08-29 美国电报电话公司 用于移动性的终端、用户和业务的h.323移动性结构
CN1987827A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 用来实现高效和灵活存储器复制操作的方法和系统
CN107562443A (zh) * 2017-07-17 2018-01-09 上海卫星工程研究所 基于循环队列的卫星程控指令维护方法
CN111213124A (zh) * 2017-11-30 2020-05-29 国际商业机器公司 在乱序处理器中完成合并的全局完成表条目
CN114217859A (zh) * 2021-11-16 2022-03-22 广东赛昉科技有限公司 一种乱序提交指令的装置及其方法
CN116090688A (zh) * 2023-04-10 2023-05-09 中国人民解放军国防科技大学 基于改进指针网络的移动目标遍历访问序列规划方法
CN116635823A (zh) * 2020-07-30 2023-08-22 马维尔亚洲私人有限公司 用于前端聚集/分散存储器合并的方法和装置
CN116662006A (zh) * 2023-06-06 2023-08-29 北京市合芯数字科技有限公司 多线程处理器重命名资源管理方法、系统、装置及介质
CN116663007A (zh) * 2023-04-23 2023-08-29 东南大学 一种基于推测执行构建的缓存侧信道消除方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182540A1 (en) * 2002-03-21 2003-09-25 International Business Machines Corporation Method for limiting physical resource usage in a virtual tag allocation environment of a microprocessor
US7401209B2 (en) * 2006-06-30 2008-07-15 International Business Machines Corporation Limiting entries searched in load reorder queue to between two pointers for match with executing load instruction
US10037229B2 (en) * 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10223266B2 (en) * 2016-11-30 2019-03-05 International Business Machines Corporation Extended store forwarding for store misses without cache allocate
US11314510B2 (en) * 2020-08-14 2022-04-26 International Business Machines Corporation Tracking load and store instructions and addresses in an out-of-order processor

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101478A (en) * 1985-06-28 1992-03-31 Wang Laboratories, Inc. I/O structure for information processing system
WO1998002801A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same
CN1310554A (zh) * 1999-09-16 2001-08-29 美国电报电话公司 用于移动性的终端、用户和业务的h.323移动性结构
CN1987827A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 用来实现高效和灵活存储器复制操作的方法和系统
CN107562443A (zh) * 2017-07-17 2018-01-09 上海卫星工程研究所 基于循环队列的卫星程控指令维护方法
CN111213124A (zh) * 2017-11-30 2020-05-29 国际商业机器公司 在乱序处理器中完成合并的全局完成表条目
CN116635823A (zh) * 2020-07-30 2023-08-22 马维尔亚洲私人有限公司 用于前端聚集/分散存储器合并的方法和装置
CN114217859A (zh) * 2021-11-16 2022-03-22 广东赛昉科技有限公司 一种乱序提交指令的装置及其方法
CN116090688A (zh) * 2023-04-10 2023-05-09 中国人民解放军国防科技大学 基于改进指针网络的移动目标遍历访问序列规划方法
CN116663007A (zh) * 2023-04-23 2023-08-29 东南大学 一种基于推测执行构建的缓存侧信道消除方法
CN116662006A (zh) * 2023-06-06 2023-08-29 北京市合芯数字科技有限公司 多线程处理器重命名资源管理方法、系统、装置及介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Collaborative quickest detection in adhoc networks with delay constraint - part I: Two-node network;Husheng Li ET AL;《 2008 42nd Annual Conference on Information Sciences and Systems》;全文 *
基于RISC-V的超标量乱序处理器研究;马晓杰;《中国知网硕士学位论文电子期刊》;第第2022年卷卷(第第1期期);全文 *
实时专家系统计算机体系结构(连载);亚拉伯罕・凯代尔;情报指挥控制系统与仿真技术(01);全文 *
超标量处理器中重排序缓冲器的研究;张鹤;;信息化纵横(16);全文 *

Also Published As

Publication number Publication date
CN117270971A (zh) 2023-12-22

Similar Documents

Publication Publication Date Title
TWI537824B (zh) 零循環載入
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US7392369B2 (en) Decomposing architectural operation into speculative and architectural micro-operations for speculative execution of others and for violation check
KR101594502B1 (ko) 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법
KR101574007B1 (ko) 트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들
US9292288B2 (en) Systems and methods for flag tracking in move elimination operations
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US20090164758A1 (en) System and Method for Performing Locked Operations
US10073789B2 (en) Method for load instruction speculation past older store instructions
US10203957B2 (en) Processor with improved alias queue and store collision detection to reduce memory violations and load replays
US10776123B2 (en) Faster sparse flush recovery by creating groups that are marked based on an instruction type
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US10579384B2 (en) Effective address based instruction fetch unit for out of order processors
CN117270971B (zh) 加载队列控制方法、装置及处理器
US10078581B2 (en) Processor with instruction cache that performs zero clock retires
US11314505B2 (en) Arithmetic processing device
US6697933B1 (en) Method and apparatus for fast, speculative floating point register renaming
Shum IBM Z/LinuxONE System Processor Optimization Primer
CN116414458A (zh) 指令处理方法以及处理器
CN117742796A (zh) 指令唤醒方法、装置以及设备
Caironi et al. Context reorder buffer: an architectural support for real-time processing on RISC architectures

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