CN110515660A - 一种加速原子指令执行的方法和装置 - Google Patents

一种加速原子指令执行的方法和装置 Download PDF

Info

Publication number
CN110515660A
CN110515660A CN201910804203.9A CN201910804203A CN110515660A CN 110515660 A CN110515660 A CN 110515660A CN 201910804203 A CN201910804203 A CN 201910804203A CN 110515660 A CN110515660 A CN 110515660A
Authority
CN
China
Prior art keywords
instruction
atomic instructions
result
atomic
instructions
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
Application number
CN201910804203.9A
Other languages
English (en)
Other versions
CN110515660B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201910804203.9A priority Critical patent/CN110515660B/zh
Publication of CN110515660A publication Critical patent/CN110515660A/zh
Application granted granted Critical
Publication of CN110515660B publication Critical patent/CN110515660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种加速原子指令执行的方法和装置,本发明方法为根据原子指令生成对应的辅助指令(Load指令或预取指令),向不同的流水线输出原子指令及辅助指令;辅助指令Load前瞻执行读取原子指令需要操作区域的数据,将结果写往结果总线和原子指令结果队列,使得其他依赖该指令结果的指令可提前执行使得原子指令结果提前送出、执行速度加快,原子指令在提交后执行,根据执行结果确认辅助指令Load的前瞻执行结果;辅助指令为预取指令则执行预取指令提前将数据获取到处理器核中并置为可写状态,原子指令直接操作预取指令已经置为可写状态的数据加速执行过程。本发明可提高处理器核性能,并且实现简单,可灵活应用到现有处理器设计中。

Description

一种加速原子指令执行的方法和装置
技术领域
本发明涉及微处理器的微体系结构设计领域,具体涉及一种加速原子指令执行的方法和装置。
背景技术
为了提高程序性能,目前多数程序都采用并行的方式运行,并行线程之间通过共享资源进行通信。 为了支持共享资源的并发写,多数体系结构都提供了原子指令。原子指令基本操作为对存储空间的某个区域进行“读-修改-写”,并且在此期间不能被打断。原子指令一般需要返回读取的存储空间目标地址的数据,并写回到寄存器中。所以原子指令同时带有数据存储、计算和数据获取的操作。
在高性能乱序执行的处理器中,由于数据获取指令(Load指令)处于程序执行的关键路径上,所以进行了专门的优化,使其可以乱序执行。而数据存储指令(Store指令)一般不允许前瞻执行,必须等到指令提交之后才能往存储器写数据。原子指令需要读并且写存储空间,故一般按照Store指令的执行方式执行。一般来说,Load指令的执行经过指令分派、指令发射、获取数据、写回结果(数据写到结果总线)、指令提交阶段。原子指令由于有Store指令的特性,会先后经过指令分配、指令发射、指令提交、获取数据并修改、写回结果(数据写回结果总线)阶段。由于原子指令也要写回寄存器,所以原子指令写回结果的时间直接影响后续使用该数据的指令的执行时机,从而影响整个程序执行的性能。并且,由于原子指令需要对存储空间数据进行修改,所以需要获取数据的写权限才能执行。而处理器核中的数据多数处于共享(只读)状态,这就要求处理器核通过一致性协议将该数据获取并处于可写状态,而该过程涉及到和处理器核外部交互,一般需要较长时间,这就使得原子指令执行的延迟进一步增大。
如图1所示,在一般乱序执行的处理器中,Load指令能在T3就能返回数据,此时依赖于该Load目的寄存器的后续指令就可以获得数据执行了,在指令T4指令提交时,确认Load指令的执行结果,如果不正确则进行流水线清空操作即可保证整个程序执行的正确性。但是原子指令在T8才能返回读取的数据,因为对存储空间的写无法撤销,所以必须在指令提交之后才能进行写操作。因此原子指令写目的寄存器的时机严重滞后于普通Load,后续指令的执行也相应滞后。如果程序中共享资源的读写较多,那么这样原子指令的执行会严重影响整个程序的性能。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种性能高、开销小、易于实现、使用灵活的加速原子指令执行的方法和装置,本发明可提高处理器核性能,并且实现简单,可灵活应用到现有处理器设计中。
为了解决上述技术问题,本发明采用的技术方案为:
一种加速原子指令执行的方法,实施步骤包括:
1)取原子指令;
2)根据原子指令生成对应的辅助指令,所述辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
3)若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;原子指令在提交后执行,若辅助指令为Load指令,则跳转执行步骤4);若辅助指令为预取指令,则跳转执行步骤5);
4)将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,并引发从该原子指令开始的流水线清空操作,指令执行结束;
5)直接对执行预取指令得到的数据结果进行原子操作,指令执行结束。
可选地,步骤2)中根据原子指令生成对应的辅助指令具体是指:在禁止前瞻缓存中查看是否有该原子指令曾有Load指令前瞻执行错误,如果有则根据原子指令生成对应的辅助指令为预取指令,否则根据原子指令生成对应的辅助指令为Load指令;步骤4)中引发从该原子指令开始的流水线清空操作时还包括通过禁止前瞻缓存记录该原子指令的前瞻执行错误的步骤。
可选地,步骤2)中分别向不同的流水线输出原子指令及其对应的辅助指令时,针对Load指令、预取指令两种辅助指令提交至相同或者不同的流水线。
可选地,步骤3)中原子指令在提交后执行的详细步骤包括:将原子指令发射到流水线中,提交原子指令,获取数据的写权限,根据原子指令的操作对数据进行操作,将操作后的数据写回存储区域,将原子指令操作前存储区域的数据作为原子指令执行的结果。
可选地,步骤3)中前瞻执行Load指令的详细步骤包括:将Load指令发射到流水线中,数据获取,写回结果到结果总线,且Load指令不含提交处理过程。
可选地,步骤3)中执行预取指令的详细步骤包括:将预取指令发射到流水线中,数据获取,预取指令提交,且预取指令并不含写结果总线的动作,只是将数据从下一级存储中读取并放到处理器核中。
本发明还提供一种加速原子指令执行的装置,该装置被编程以执行本发明前述加速原子指令执行的方法的步骤。
本发明还提供一种加速原子指令执行的装置,包括:
取指单元,用于取原子指令;
原子指令拆分单元,用于根据原子指令生成对应的辅助指令,所述辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
原子指令结果队列,用于记录前瞻执行Load指令的执行结果;
Load/预取流水线,用于执行辅助指令,若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;
原子指令流水线,用于执行原子指令,原子指令在提交后执行,若辅助指令为Load指令,则跳转执行原子指令结果检查单元;若辅助指令为预取指令,则直接对执行预取指令得到的数据结果进行原子操作,指令执行结束;
原子指令结果检查单元,用于将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,引发从该原子指令开始的流水线清空操作,指令执行结束。
和现有技术相比,本发明加速原子指令执行的方法具有下述优点:
1、性能高。由于原子指令执行需要在指令提交后,获取数据的写状态才能执行,导致原子指令返回数据到结果总线的时间较长。本发明通过两种方法加速原子指令的执行,从而提高了整个处理的性能。
2. 实现代价小。本发明所提的方法主要拆分的Load指令和预取指令在一般的乱序处理器中都有执行部件,所以拆分出的辅助指令并不需要增加额外的流水线支持。流水线清空操作在乱序执行处理器中也是现有的机制。只需要增加一些控制逻辑和几项原子指令结果队列就可以在现有的处理器设计中实现本发明的方法。
3.使用灵活,不影响现有指令执行通路。本发明所提的加速原子指令执行的方法不影响现有的原子指令、Load指令和预取指令的执行通路。在不需要该加速机制时,关闭原子指令拆分部件即可。
本发明的加速原子指令执行的装置具有与本发明加速原子指令执行的方法相同的技术效果,在此不再赘述。
附图说明
图1为Load指令和原子指令执行时间示意图。
图2为本发明实施例方法的基本流程示意图。
图3为本发明实施例装置的基本结构示意图。
具体实施方式
如图2所示,本实施例加速原子指令执行的方法的实施步骤包括:
1)取原子指令;
2)根据原子指令生成对应的辅助指令,辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
3)若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;原子指令在提交后执行,若辅助指令为Load指令,则跳转执行步骤4);若辅助指令为预取指令,则跳转执行步骤5);
4)将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,并引发从该原子指令开始的流水线清空操作(向处理器核控制单元发送Flush信息),指令执行结束;
5)直接对执行预取指令得到的数据结果进行原子操作,指令执行结束。
本实施例中,辅助指令包括写结果寄存器的Load指令和不写结果寄存器的预取指令两种,辅助指令所操作的存储地址和对应的原子指令相同,并且每次拆分时只选择两者的一个。辅助指令的选择根据辅助指令和原子指令执行历史进行,如果辅助指令为Load指令时,执行结果和原子指令执行结果不同,则下次执行该原子指令时拆分出预取指令,反之,选择预取指令。原子指令在拆分出Load指令的情况下,也可以在图1中的T3时刻返回数据了,从而大大加速了原子指令的执行。在拆分出预取指令的情况下,也可省掉获取数据写状态的时间,从而加速了原则指令的执行。
以原子指令ATOM Rd,Rt,[Rn]为例,其中Rd为该指令需要写的目标寄存器,Rt为原子指令运算的操作数之一,Rn为原子指令操作的存储地址。那么与该原子指令对应的Load指令为LOAD Rd,[Rn],预取指令为PLD [Rn]。Load指令的作用是从原子指令操作存储区域取出原子指令操作执行前的数据。预取指令的作用是将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态。这样在原子指令提交后,对数据进行操作时,就可以直接进行,从而加速原子指令的执行。
辅助指令为Load指令或者辅助指令,根据在禁止前瞻缓存中是否有该原子指令曾经Load前瞻执行错误决定。本实施例中,步骤2)中根据原子指令生成对应的辅助指令具体是指:在禁止前瞻缓存中查看是否有该原子指令曾有Load指令前瞻执行错误,如果有则根据原子指令生成对应的辅助指令为预取指令,否则根据原子指令生成对应的辅助指令为Load指令;步骤4)中引发从该原子指令开始的流水线清空操作时还包括通过禁止前瞻缓存记录该原子指令的前瞻执行错误的步骤。
本实施例中,步骤2)中分别向不同的流水线输出原子指令及其对应的辅助指令时,针对Load指令、预取指令两种辅助指令提交至相同或者不同的流水线。
原子指令的执行在专门的流水线中执行,一般来说包含以下步骤:指令发射到流水线中,指令提交,获取数据的写权限,根据原子的操作对数据进行操作,将操作后的数据写回存储区域,将原子操作前存储区域的数据作为原子指令执行的结果。本实施例中,步骤3)中原子指令在提交后执行的详细步骤包括:将原子指令发射到流水线中,提交原子指令,获取数据的写权限,根据原子指令的操作对数据进行操作,将操作后的数据写回存储区域,将原子指令操作前存储区域的数据作为原子指令执行的结果。
针对前述原子指令ATOM Rd,Rt,[Rn],拆分得到的Load指令为LOAD Rd,[Rn]。
本实施例中,步骤3)中前瞻执行Load指令的详细步骤包括:将Load指令发射到流水线中,数据获取,写回结果到结果总线,且Load指令不含提交处理过程。原子指令的执行过程中,针对Load指令的情形,需要检查原子指令结果队列的数据是否正确,该队列由拆分的Load指令进行写。如果执行结果相等,那说明拆分出的Load指令前瞻地正确返回了原子指令需要返回的结果,则将原子指令执行的结果写入结果总线,也就是说重新将正确的原子指令执行结果写入到总线上,并引发从该原子指令开始的流水线清空操作,因为Load前瞻执行,并写出了错误的数据,现在需要将流水线中所有晚于该原子指令的指令全部清除,确保没有指令使用了错误的数据。否则说明前瞻执行的Load指令错误地往结果总线写了数据,错误数据传播将导致接下来指令执行都是错误的。将该原子指令的程序地址等信息写入禁止前瞻缓存中,以后再遇到该原子指令将不能拆分出前瞻的Load指令。
针对前述原子指令ATOM Rd,Rt,[Rn],拆分得到的预取指令为PLD [Rn]。
预取指令的执行包括指令发射,数据预取,指令提交等。本实施例中,步骤3)中执行预取指令的详细步骤包括:将预取指令发射到流水线中,数据获取,预取指令提交,且预取指令并不含写结果总线的动作,只是将数据从下一级存储中读取并放到处理器核中。预取指令并不会写结果总线,只是将数据从下一级存储中读取,放到处理器核中。这里的预取需要预取可写状态的数据块,以便原子指令在执行时,不需要额外的时间去获取该数据块的可写状态,从而加速原子指令的执行。
本实施例还提供一种加速原子指令执行的装置,该装置被编程以执行本实施例前述加速原子指令执行的方法的步骤。
如图3所示,本实施例还提供一种加速原子指令执行的装置,包括:
取指单元,用于取原子指令;
原子指令拆分单元,用于根据原子指令生成对应的辅助指令,辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
原子指令结果队列,用于记录前瞻执行Load指令的执行结果;
Load/预取流水线,用于执行辅助指令,若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;
原子指令流水线,用于执行原子指令,原子指令在提交后执行,若辅助指令为Load指令,则跳转执行原子指令结果检查单元;若辅助指令为预取指令,则直接对执行预取指令得到的数据结果进行原子操作,指令执行结束;
原子指令结果检查单元,用于将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,引发从该原子指令开始的流水线清空操作,指令执行结束。
参见图3,原子指令拆分单元在进行拆分前,需要检查禁止前瞻队列的内容,从而决定原子指令拆分的方式。原子指令结果检查单元检查原子指令和存储辅助指令中的Load指令执行的结果是否一致,如果不一致,需要向处理器核控制单元发送Flush信息,请求Flush操作。
如图3所示,本实施例加速原子指令执行的装置包括原子指令拆分单元、Load/预取指令执行流水线、原子指令执行流水线、原子指令结果队列、原子指令结果检查队列、禁止前瞻缓存和处理器核控制单元。原子指令拆分单元功能是将原子指令拆分为原子指令和辅助指令,并将拆分的原子指令送往原子指令流水线进行执行,将辅助指令送往Load/预取指令的流水线。原子指令拆分单元在进行拆分前,需要检查禁止前瞻队列的内容,从而决定原子指令拆分的方式。Load/预取指令执行流水线负责执行辅助指令,辅助指令包括Load指令和预取指令两种,这两种指令执行通路类似,一般在同一个流水线中实现。原子指令流水线用于指令原子指令,原子指令执行比较复杂,可以独立的流水线中,也可以实现在Load/预取指令执行流水线中增加额外的通路进行实现。原子指令结果队列用于存储辅助指令中的Load指令的结果。原子指令结果检查单元的功能是检查原子指令和存储辅助指令中的Load指令执行的结果是否一致,如果不一致,需要向处理器核控制单元发送Flush信息,请求Flush操作。处理器核控制单元是管理整个流水线的乱序执行的中心控制机构。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (8)

1.一种加速原子指令执行的方法,其特征在于实施步骤包括:
1)取原子指令;
2)根据原子指令生成对应的辅助指令,所述辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
3)若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;原子指令在提交后执行,若辅助指令为Load指令,则跳转执行步骤4);若辅助指令为预取指令,则跳转执行步骤5);
4)将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,并引发从该原子指令开始的流水线清空操作,指令执行结束;
5)直接对执行预取指令得到的数据结果进行原子操作,指令执行结束。
2.根据权利要求1所述的加速原子指令执行的方法,其特征在于,步骤2)中根据原子指令生成对应的辅助指令具体是指:在禁止前瞻缓存中查看是否有该原子指令曾有Load指令前瞻执行错误,如果有则根据原子指令生成对应的辅助指令为预取指令,否则根据原子指令生成对应的辅助指令为Load指令;步骤4)中引发从该原子指令开始的流水线清空操作时还包括通过禁止前瞻缓存记录该原子指令的前瞻执行错误的步骤。
3.根据权利要求1所述的加速原子指令执行的方法,其特征在于,步骤2)中分别向不同的流水线输出原子指令及其对应的辅助指令时,针对Load指令、预取指令两种辅助指令提交至相同或者不同的流水线。
4.根据权利要求1所述的加速原子指令执行的方法,其特征在于,步骤3)中原子指令在提交后执行的详细步骤包括:将原子指令发射到流水线中,提交原子指令,获取数据的写权限,根据原子指令的操作对数据进行操作,将操作后的数据写回存储区域,将原子指令操作前存储区域的数据作为原子指令执行的结果。
5.根据权利要求1所述的加速原子指令执行的方法,其特征在于,步骤3)中前瞻执行Load指令的详细步骤包括:将Load指令发射到流水线中,数据获取,写回结果到结果总线,且Load指令不含提交处理过程。
6.根据权利要求1所述的加速原子指令执行的方法,其特征在于,步骤3)中执行预取指令的详细步骤包括:将预取指令发射到流水线中,数据获取,预取指令提交,且预取指令并不含写结果总线的动作,只是将数据从下一级存储中读取并放到处理器核中。
7.一种加速原子指令执行的装置,其特征在于,该装置被编程以执行权利要求1~6中任意一项所述加速原子指令执行的方法的步骤。
8.一种加速原子指令执行的装置,其特征在于,包括:
取指单元,用于取原子指令;
原子指令拆分单元,用于根据原子指令生成对应的辅助指令,所述辅助指令为Load指令或预取指令,其中Load指令用于从原子指令操作存储区域取出原子指令操作执行前的数据,预取指令用于将原子指令操作存储区域的数据提前预取到处理器核中,并置于可写状态;分别向不同的流水线输出原子指令及其对应的辅助指令;
原子指令结果队列,用于记录前瞻执行Load指令的执行结果;
Load/预取流水线,用于执行辅助指令,若辅助指令为Load指令,则前瞻执行Load指令读取原子指令需要操作区域的数据,并将结果写往结果总线和原子指令结果队列中,使得其他依赖该指令结果的指令可以提前执行;若辅助指令为预取指令,则执行预取指令提前将数据获取到处理器核中,并置为可写状态;
原子指令流水线,用于执行原子指令,原子指令在提交后执行,若辅助指令为Load指令,则跳转执行原子指令结果检查单元;若辅助指令为预取指令,则直接对执行预取指令得到的数据结果进行原子操作,指令执行结束;
原子指令结果检查单元,用于将原子指令的执行结果和原子指令结果队列中的Load指令执行结果进行对比,若执行结果相等,则整个原子指令执行结束;若执行结果不相等,则将原子指令返回结果写往结果总线,引发从该原子指令开始的流水线清空操作,指令执行结束。
CN201910804203.9A 2019-08-28 2019-08-28 一种加速原子指令执行的方法和装置 Active CN110515660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910804203.9A CN110515660B (zh) 2019-08-28 2019-08-28 一种加速原子指令执行的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910804203.9A CN110515660B (zh) 2019-08-28 2019-08-28 一种加速原子指令执行的方法和装置

Publications (2)

Publication Number Publication Date
CN110515660A true CN110515660A (zh) 2019-11-29
CN110515660B CN110515660B (zh) 2021-08-06

Family

ID=68627643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910804203.9A Active CN110515660B (zh) 2019-08-28 2019-08-28 一种加速原子指令执行的方法和装置

Country Status (1)

Country Link
CN (1) CN110515660B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
CN101145118A (zh) * 2007-10-30 2008-03-19 北京时代民芯科技有限公司 Sparc处理器单粒子效应检测装置与检测方法
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令
US20140129775A1 (en) * 2012-11-06 2014-05-08 Lsi Corporation Cache prefetch for nfa instructions
CN108027766A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 预取指令块
CN109918131A (zh) * 2019-03-11 2019-06-21 中电海康无锡科技有限公司 一种基于非阻塞指令cache的指令读取方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
CN101145118A (zh) * 2007-10-30 2008-03-19 北京时代民芯科技有限公司 Sparc处理器单粒子效应检测装置与检测方法
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令
US20140129775A1 (en) * 2012-11-06 2014-05-08 Lsi Corporation Cache prefetch for nfa instructions
CN108027766A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 预取指令块
CN109918131A (zh) * 2019-03-11 2019-06-21 中电海康无锡科技有限公司 一种基于非阻塞指令cache的指令读取方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
M. BELOVA: "Breadth-First Search with A Multi-Core Computer", 《2017 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS (IPDPSW)》 *
SUMA S: "Coalesced speculative prefetching and Interthread data dependences", 《 2014 INTERNATIONAL CONFERENCE ON COMPUTER COMMUNICATION AND INFORMATICS》 *
张军: "片式处理器一级数据缓存的设计与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
郭建军: "同步数据触发体系结构多核处理器存储***关键技术研究", 《万方数据库》 *

Also Published As

Publication number Publication date
CN110515660B (zh) 2021-08-06

Similar Documents

Publication Publication Date Title
US5809294A (en) Parallel processing unit which processes branch instructions without decreased performance when a branch is taken
TWI295032B (zh)
US5907702A (en) Method and apparatus for decreasing thread switch latency in a multithread processor
US20060236080A1 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US20040054876A1 (en) Synchronising pipelines in a data processing apparatus
US20070143581A1 (en) Superscalar data processing apparatus and method
CN103620555A (zh) 抑制不正确的推测性执行路径上的控制转移指令
US7631149B2 (en) Systems and methods for providing fixed-latency data access in a memory system having multi-level caches
EP3039532B1 (en) A data processing apparatus and method for controlling performance of speculative vector operations
KR20110051233A (ko) 추론적 인터럽트 벡터 프리페칭 장치 및 방법
US10073789B2 (en) Method for load instruction speculation past older store instructions
US20080168260A1 (en) Symbolic Execution of Instructions on In-Order Processors
US20210303303A1 (en) Speculative execution following a state transition instruction
EP2087420A2 (en) Methods and apparatus for recognizing a subroutine call
CN104978284A (zh) 处理器子程序高速缓冲存储器
US20120173848A1 (en) Pipeline flush for processor that may execute instructions out of order
JP2022522363A (ja) リングバッファ更新の処理
US8977837B2 (en) Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US20040225866A1 (en) Branch prediction in a data processing system
CN110515660A (zh) 一种加速原子指令执行的方法和装置
US7003649B2 (en) Control forwarding in a pipeline digital processor
US7861063B1 (en) Delay slot handling in a processor
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant