CN110515659B - 一种原子指令的执行方法和装置 - Google Patents
一种原子指令的执行方法和装置 Download PDFInfo
- Publication number
- CN110515659B CN110515659B CN201910803100.0A CN201910803100A CN110515659B CN 110515659 B CN110515659 B CN 110515659B CN 201910803100 A CN201910803100 A CN 201910803100A CN 110515659 B CN110515659 B CN 110515659B
- Authority
- CN
- China
- Prior art keywords
- instruction
- atomic
- atomic instruction
- data
- store
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000009191 jumping Effects 0.000 claims description 6
- 238000007726 management method Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/3867—Concurrent 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
本发明公开了一种原子指令的执行方法和装置,本发明方法包括将原子指令发送到Store流水线执行;非Cache一致性区域操作的原子指令发送到下一级存储中,并等待返回结果;Cache一致性区域的原子指令在Store流水线中获取数据,并进行原子操作,并获得原子指令的执行结果,将原子指令的执行的结果,借用Load流水线写结果的通路,写出到结果总线上。原子指令的执行装置包括前述原子指令的执行方法对应的单元和模块。本发明能够基于现有普通存储流水线上实现,利用为普通Load指令和Store指令实现的分离的Load、Store流水线来实现原子指令,减少实现的复杂度和相关实现开销、提高整个***的效率,具有实现复杂度低、运行开销小、执行效率高的优点。
Description
技术领域
本发明涉及微处理器的核心流水线设计领域,具体涉及一种原子指令的执行方法和装置。
背景技术
在并行程序的实现中,总涉及到共享资源的读写。为了避免多个共享资源写的冲突,保证程序执行的正取性。读写实现共享资源读写的基本方法是对共享资源进行锁操作,只有在获得锁后,才能够对共享资源进行写。而锁的实现通常采取“读-修改-写”的序列,而且该序列必须是原子的,也就是该序列执行过程中不能被其它操作打断。这类原子指令的实现就要求处理器能够提供对应的指令就行实现。对此,Intel提供了CMPXCHG原子指令,IBM提供了CAS原子指令,ARM提供了SWP、LDADD等原子指令。以ARM的LDADD 原子指令为例,该指令首先从存储器中取出数据,然后和该原子指令带的操作数相加,然后将相加的结果写回到存储中,并将存储器中取的数据写入到LDADD的目的寄存器中。
在精简指令集的处理器中存储操作一般有数据装载指令(Load指令)和数据存储指令(Store指令)两种。其中Load指令负责从存储器中读取数据,Store指令负责将数据存入存储器中。原子指令和普通存储操作指令(Load、Store指令)的最大不同是,原子指令同时要做Load和Store指令的操作,并且Load和Store操作不能被其他操作打断。
对于普通指令的流水线的设计也根据普通Load、Store指令的特性进行设计,分为数据获取流水线(Load流水线)和数据存储流水线(Store流水线)。这样每条流水线就可以实现最简的功能,以减小设计和验证的复杂度,同时降低不必要的额外开销。为了在一条流水线中实现原子指令,那么需要在流水线中增加一种新的通路,既可以读取数据也可以存储数据,这样的实现在一条流水线中融合了Load和Store流水线的特征,实现代价高,容易造成资源的浪费。因为原子指令在普通程序中的比例很小。为了实现少数指令而浪费资源的设计是不合理的。
目前已知的处理器没有公开的原子指令实现的细节。如果能够利用普通Load指令和Store指令实现的分离的Load、Store流水线来实现原子指令,那么就可以减少实现的复杂度和相关实现开销、提高整个***的效率。但是,具体如何利用普通Load指令和Store指令实现的分离的Load、Store流水线,则仍然是一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种原子指令的执行方法和装置,本发明能够基于现有普通存储流水线上实现,利用普通Load指令和Store指令实现的分离的Load、Store流水线来实现原子指令,减少实现的复杂度和相关实现开销、提高整个***的效率,具有实现复杂度低、运行开销小、执行效率高的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种原子指令的执行方法,实施步骤包括:
1)按照普通指令的执行路径进行原子指令的取指、译码、重命名;
2)在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
3)在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
4)按照普通Store指令的执行路径执行发射至存储指令队列中的原子指令;
5)根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行步骤6)由下一级存储执行原子指令,否则跳转执行步骤9)由处理器核心完成原子指令的操作;
6)分配填充缓存;
7)将数据、原子指令操作码、填充缓存号写入下一级存储;
8)等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
9)获取目标存储区域的数据的写权限;
10)读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
11)根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
12)按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
可选地,步骤1)的详细步骤包括:
1.1)从指令高速缓存中将原子指令取到整个处理器的流水线中;
1.2)根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
1.3)根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
可选地,步骤2)的详细步骤包括:
2.1)根据原子指令的标识识别出原子指令;
2.2)将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,所述目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
可选地,步骤3)的详细步骤包括:指令发射时,原子指令被发送到Store处理单元之后进入相应的等待队列,在等待队列中按照普通Store指令的发射条件和策略进行发射。
可选地,步骤4)的详细步骤包括:
4.1)针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址,该虚拟地址对应了原子指令要操作的数据区域的起始地址;
4.2)将前面生成的虚拟地址转换为物理地址;
4.3)将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
本发明还提供一种原子指令的执行装置,所述原子指令的执行装置被编程以执行本发明前述原子指令的执行方法的步骤。
本发明还提供一种原子指令的执行装置,包括:
取指译码重命名模块,用于按照普通指令的执行路径对原子指令取指、译码、重命名;
分派单元,用于在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
发射单元,用于在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
存储指令队列,用于存储发射的原子指令和普通指令;
原子指令执行模块,用于按照普通Store指令的执行路径执行原子指令;
Store管理逻辑单元,用于根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行填充缓存单元由下一级存储执行原子指令,否则跳转执行写权限获取单元由处理器核心完成原子指令的操作;
填充缓存单元,用于分配填充缓存;
第一原子指令数据回写逻辑单元,用于将数据、原子指令操作码、填充缓存号写入下一级存储;等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
写权限获取单元,用于获取目标存储区域的数据的写权限;
旧数据读取单元,用于读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
原子指令计算单元,用于根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
第二原子指令数据回写逻辑单元,用于按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
可选地,所述取指译码重命名模块包括:
取指单元,用于从指令高速缓存中将原子指令取到整个处理器的流水线中;
译码单元,用于根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
重命名单元,用于根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
可选地,所述分派单元包括:
原子指令识别逻辑,用于根据原子指令的标识识别出原子指令;
原子指令分派逻辑,用于将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,所述目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
可选地,所述原子指令执行模块包括:
地址计算单元,用于针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址,该虚拟地址对应了原子指令要操作的数据区域的起始地址;
虚实地址转换单元,用于将前面生成的虚拟地址转换为物理地址;
数据转换单元,用于将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
和现有技术相比,本发明具有下述优点:
1、本实施例原子指令的执行方法基于现有的普通存储指令的实现通路实现原子指令的执行,基于普通存储流水线进行改造,实现简单。在处理器核心设计时,可以将更多精力用于优化普通存储指令的Load、Store流水线的优化。在此基础上可以以较小的代价实现原子指令。
2. 本实施例原子指令的执行方法实现代价小。在普通Load、Store流水线的基础上,可以以增加少量逻辑的代价实现复杂的原子指令操作。
3. 本实施例原子指令的执行方法不影响现有流水线,集成方便,使用灵活。对于尚不支持原子指令的处理器核来说,可在不影响现有功能的基础上添加原子指令的实现。
附图说明
图1为本发明实施例原子指令的执行方法的基本流程示意图。
图2为本发明实施例原子指令的执行装置的基本结构示意图。
具体实施方式
如图1所示,本实施例原子指令的执行方法的实施步骤包括:
1)按照普通指令的执行路径进行原子指令的取指、译码、重命名;
2)在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
3)在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
4)按照普通Store指令的执行路径执行发射至存储指令队列中的原子指令;
5)根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行步骤6)由下一级存储执行原子指令,否则跳转执行步骤9)由处理器核心完成原子指令的操作;
6)分配填充缓存;
7)将数据、原子指令操作码、填充缓存号写入下一级存储;
8)等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
9)获取目标存储区域的数据的写权限;
10)读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
11)根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
12)按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
本实施例中,步骤1)的详细步骤包括:
1.1)从指令高速缓存(指令Cache)中将原子指令取到整个处理器的流水线中;
1.2)根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
1.3)根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
本实施例中,步骤2)的详细步骤包括:
2.1)根据原子指令的标识识别出原子指令;
2.2)将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
指令分派时,将原子指令分派到Store指令处理单元。指令分派时,识别原子指令的标识,将原子指令按照普通Store指令进行处理,然后发送到Store流水线。由于普通Store指令无需写目的寄存器,而原子指令在存储数据的同时需要将原有的数据写回到寄存器中。所以需要带上目的寄存器的信息,包括寄存器号、寄存器类型等信息。所以在Store流水线的通路上需要增加相关逻辑来保存这些信息。
本实施例中,步骤3)的详细步骤包括:指令发射时,原子指令被发送到Store处理单元之后进入相应的等待队列,在等待队列中按照普通Store指令的发射条件和策略进行发射,这样可以避免增加额外的控制逻辑。
本实施例中,步骤4)的详细步骤包括:
4.1)地址计算:针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址(通常处理器中,这样生成的地址是虚拟地址,并不是真正存储的物理地址),该虚拟地址对应了原子指令要操作的数据区域的起始地址;
4.2)虚实地址转换:将前面生成的虚拟地址转换为物理地址(实地址);
4.3)被存储数据转换:将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
以上阶段的执行和普通Store指令的执行一致,无需增加任何操作。原子指令发射后,按照普通Store指令的执行路径执行,包括但不限于地址计算、虚实地址转换、被存储数据转换三个阶段,此外还可能增加一些其他的预处理。
本实施例中,步骤6)为分配填充缓存的过程。与普通Store不同,这里Store在写到下一级存储之前,必须要分配填充缓存。因为普通Store是不用接收来自下一级存储的数据的。而原子指令必须返回数据,所以这里先要分配填充缓存,用于存储原子指令执行之后返回的数据。需要注意的是这里只需要增加分配填充缓存的相关控制路径就行。返回数据的回填,可以利用已有的数据读取从下一级存储返回数据的通路,不用额外增加逻辑。
本实施例中,步骤7)为将数据、原子指令操作码、填充缓存号写入下一级存储进行处理。这里的控制逻辑沿用普通Store的逻辑就行,主要在写通道上增加原子指令操作码和填充缓存号就行。
本实施例中,步骤9)获取目标存储区域的数据的写权限完全是按照普通Store的通路进行设计,不用修改任何逻辑。获取目标存储区域数据写权限的方法一般通过Cache一致性协议将该数据块置为一致性协议中可以写的状态。
本实施例中,步骤10)读取目标存储区域的数据(根据原子指令操作的地址和访问的大小,将获取了写权限的数据块读取),获取的数据写到处理器核结果总线上;
本实施例中,步骤11)根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算(运算的结果作为需要真正写入存储的数据),得到真正需要写入存储的数据;
本实施例中,步骤12)按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。此处不用为原子指令增加逻辑。
对于维护了一致性协议的存储区域来说,步骤11)、12)和步骤10)中获取的数据通过Load流水线写到处理器核结果总线上可以并行,从而加快指令执行。
本实施例还提供一种原子指令的执行装置,该原子指令的执行装置被编程以执行本实施例前述原子指令的执行方法的步骤。
如图2所示,作为处理器中的硬件,本实施例还提供一种原子指令的执行装置,包括:
取指译码重命名模块,用于按照普通指令的执行路径对原子指令取指、译码、重命名;
分派单元,用于在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
发射单元,用于在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
存储指令队列,用于存储发射的原子指令和普通指令;
原子指令执行模块,用于按照普通Store指令的执行路径执行原子指令;
Store管理逻辑单元,用于根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行填充缓存单元由下一级存储执行原子指令,否则跳转执行写权限获取单元由处理器核心完成原子指令的操作;
填充缓存单元,用于分配填充缓存;
第一原子指令数据回写逻辑单元(原子指令数据回写逻辑单元的一部分),用于将数据、原子指令操作码、填充缓存号写入下一级存储;等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
写权限获取单元(图中未绘出),用于获取目标存储区域的数据的写权限;
旧数据读取单元(图中未绘出),用于读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
原子指令计算单元,用于根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
第二原子指令数据回写逻辑单元(原子指令数据回写逻辑单元的另一部分),用于按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
如图2所示,取指译码重命名模块包括:
取指单元,用于从指令高速缓存中将原子指令取到整个处理器的流水线中;
译码单元,用于根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
重命名单元,用于根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
本实施例中,分派单元包括:
原子指令识别逻辑(图中未绘出),用于根据原子指令的标识识别出原子指令;
原子指令分派逻辑(图中未绘出),用于将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
如图2所示,原子指令执行模块包括:
地址计算单元,用于针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址,该虚拟地址对应了原子指令要操作的数据区域的起始地址;
虚实地址转换单元,用于将前面生成的虚拟地址转换为物理地址;
数据转换单元,用于将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
其中取指单元、译码单元、重命名单元、分派单元、存储指令队列、地址生成单元、虚实地址转换单元转换单元、数据转换单元、数据Cache、填充缓存,Store管理逻辑、load流水线、下一级存储等单元是实现普通指令时也必须实现的。原子指令只需在普通指令执行的处理器核中,增加原子指令计算单元和原子指令数据回写逻辑,并对译码单元,分派单元和Store管理逻辑进行功能增加,就能在一个只有分离的load、store流水线的处理器核中,实现原子指令。
取指单元负责从存储中读取处理器核需要执行的指令,读取的指令交给译码单元进行指令信息的译码,译码后的指令交接重命名单元进行寄存器号的重命名。分派单元接收重命名后的指令,并根据指令信息,将原子指令分派到Store流水线中。进行Store流水线的指令首先会在存储指令(Store 指令)队列中,等待需要的操作数生成。待操作数和其他条件满足后发射到地址生成单元中开始指令功能的执行。地址生成单元根据地址生成规则产生原子指令操作的虚拟地址,经过虚实地址转换单元后得到原子指令操作目标存储区域的物理地址。在数据转换单元中将指令要存储的数据进行转换。数据转换后的指令进入Store管理逻辑中,根据原子指令目标存储区域的存储属性进行下一步的操作。对于没有维护Cache一致性的存储区域的原子指令,将在填充缓存中首先分配存储空间,然后将写操作发往下一级存储中,等待下一级存储将原子指令执行完毕后,原子指令数据回写逻辑将下一级存储返回的数据,通过load流水线写到结果总线上。对于维护Cache一致性的存储区域的原子指令,Store管理逻辑获取目标存储区域的写权限,然后通过原子指令计算单元完成原子指令对存储区域数据的操作,然后计算后的数据写入数据Cache中,并使用原子指令数据回写逻辑,通过Load流水线将结果写回到总线上。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种原子指令的执行方法,其特征在于实施步骤包括:
1)按照普通指令的执行路径进行原子指令的取指、译码、重命名;
2)在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
3)在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
4)按照普通Store指令的执行路径执行发射至存储指令队列中的原子指令;
5)根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行步骤6)由下一级存储执行原子指令,否则跳转执行步骤9)由处理器核心完成原子指令的操作;
6)分配填充缓存;
7)将数据、原子指令操作码、填充缓存号写入下一级存储;
8)等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
9)获取目标存储区域的数据的写权限;
10)读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
11)根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
12)按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
2.根据权利要求1所述的原子指令的执行方法,其特征在于,步骤1)的详细步骤包括:
1.1)从指令高速缓存中将原子指令取到整个处理器的流水线中;
1.2)根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
1.3)根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
3.根据权利要求2所述的原子指令的执行方法,其特征在于,步骤2)的详细步骤包括:
2.1)根据原子指令的标识识别出原子指令;
2.2)将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,所述目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
4.根据权利要求1所述的原子指令的执行方法,其特征在于,步骤3)的详细步骤包括:指令发射时,原子指令被发送到Store处理单元之后进入相应的等待队列,在等待队列中按照普通Store指令的发射条件和策略进行发射。
5.根据权利要求1所述的原子指令的执行方法,其特征在于,步骤4)的详细步骤包括:
4.1)针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址,该虚拟地址对应了原子指令要操作的数据区域的起始地址;
4.2)将前面生成的虚拟地址转换为物理地址;
4.3)将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
6.一种原子指令的执行装置,其特征在于,所述原子指令的执行装置被编程以执行权利要求1~5中任意一项所述原子指令的执行方法的步骤。
7.一种原子指令的执行装置,其特征在于,包括:
取指译码重命名模块,用于按照普通指令的执行路径对原子指令取指、译码、重命名;
分派单元,用于在指令分派时,将原子指令按照普通Store指令进行处理发送到Store流水线并带上目的寄存器的信息;
发射单元,用于在指令发射时,将原子指令按照普通Store指令的发射逻辑发射至存储指令队列;
存储指令队列,用于存储发射的原子指令和普通指令;
原子指令执行模块,用于按照普通Store指令的执行路径执行原子指令;
Store管理逻辑单元,用于根据所访问目标存储区域的存储特性决定下一步的操作,如果Store操作的存储区域是没有维护Cache一致性的,则跳转执行填充缓存单元由下一级存储执行原子指令,否则跳转执行写权限获取单元由处理器核心完成原子指令的操作;
填充缓存单元,用于分配填充缓存;
第一原子指令数据回写逻辑单元,用于将数据、原子指令操作码、填充缓存号写入下一级存储;等待下一级存储返回原子操作的结果,且在返回结果后将获取的数据写到处理器核结果总线上,结束并退出;
写权限获取单元,用于获取目标存储区域的数据的写权限;
旧数据读取单元,用于读取目标存储区域的数据,获取的数据写到处理器核结果总线上;
原子指令计算单元,用于根据原子指令的操作码要求,将读取得到的目标存储区域的数据进行运算,得到真正需要写入存储的数据;
第二原子指令数据回写逻辑单元,用于按照普通Store的数据通路,将真正需要写入存储的数据写入到一级数据Cache中,结束并退出。
8.根据权利要求7所述的原子指令的执行装置,其特征在于,所述取指译码重命名模块包括:
取指单元,用于从指令高速缓存中将原子指令取到整个处理器的流水线中;
译码单元,用于根据原子指令的编码信息进行指令控制和数据信息的获取,且针对原子指令增加原子指令的标识;
重命名单元,用于根据普通指令的重命名逻辑,将原子指令的目的寄存器进行重命名,并将源寄存器修改为响应的重命名后的寄存器号。
9.根据权利要求7所述的原子指令的执行装置,其特征在于,所述分派单元包括:
原子指令识别逻辑,用于根据原子指令的标识识别出原子指令;
原子指令分派逻辑,用于将原子指令按照普通Store指令进行处理,然后发送到Store流水线且带上目的寄存器的信息,所述目的寄存器的信息包括目的寄存器的寄存器号、寄存器类型。
10.根据权利要求7所述的原子指令的执行装置,其特征在于,所述原子指令执行模块包括:
地址计算单元,用于针对发射至存储指令队列中的原子指令,按地址的生成规则读取源操作数的值并生成相应的虚拟地址,该虚拟地址对应了原子指令要操作的数据区域的起始地址;
虚实地址转换单元,用于将前面生成的虚拟地址转换为物理地址;
数据转换单元,用于将被存储数据按物理地址和大小端配置进行转换,使其在进行数据存储时和目标格式一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803100.0A CN110515659B (zh) | 2019-08-28 | 2019-08-28 | 一种原子指令的执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910803100.0A CN110515659B (zh) | 2019-08-28 | 2019-08-28 | 一种原子指令的执行方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515659A CN110515659A (zh) | 2019-11-29 |
CN110515659B true CN110515659B (zh) | 2021-10-01 |
Family
ID=68627593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910803100.0A Active CN110515659B (zh) | 2019-08-28 | 2019-08-28 | 一种原子指令的执行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515659B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563027B (zh) * | 2022-11-22 | 2023-05-12 | 北京微核芯科技有限公司 | 存数指令的执行方法、***及装置 |
CN116909943B (zh) * | 2023-09-08 | 2023-12-19 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103570A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | Simd向量的同步化 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180349280A1 (en) * | 2017-06-02 | 2018-12-06 | Oracle International Corporation | Snoop filtering for multi-processor-core systems |
US11989555B2 (en) * | 2017-06-29 | 2024-05-21 | Intel Corporation | Instructions for remote atomic operations |
GB2570161B (en) * | 2018-01-16 | 2020-03-25 | Advanced Risc Mach Ltd | Simulation of exclusive instructions |
-
2019
- 2019-08-28 CN CN201910803100.0A patent/CN110515659B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103570A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | Simd向量的同步化 |
Also Published As
Publication number | Publication date |
---|---|
CN110515659A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954036B2 (en) | Prefetch kernels on data-parallel processors | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
US9946548B2 (en) | Age-based management of instruction blocks in a processor instruction window | |
US7003629B1 (en) | System and method of identifying liveness groups within traces stored in a trace cache | |
JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
KR101086801B1 (ko) | 외부 및 내부 명령 세트를 갖는 데이터 처리 시스템 | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US9965277B2 (en) | Virtual load store queue having a dynamic dispatch window with a unified structure | |
US10048964B2 (en) | Disambiguation-free out of order load store queue | |
KR20180020985A (ko) | 디커플링된 프로세서 명령어 윈도우 및 피연산자 버퍼 | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
US9990198B2 (en) | Instruction definition to implement load store reordering and optimization | |
US20130339711A1 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
WO2016210026A1 (en) | Mapping instruction blocks into instruction windows based on block size | |
WO2016210028A1 (en) | Bulk allocation of instruction blocks to a processor instruction window | |
CN110515659B (zh) | 一种原子指令的执行方法和装置 | |
KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
CN115640047B (zh) | 指令操作方法及装置、电子装置及存储介质 | |
US6591359B1 (en) | Speculative renaming of data-processor registers | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
US11086632B2 (en) | Method and apparatus for providing accelerated access to a memory system | |
US20140095814A1 (en) | Memory Renaming Mechanism in Microarchitecture | |
WO2002057908A2 (en) | A superscalar processor having content addressable memory structures for determining dependencies | |
CN117270971B (zh) | 加载队列控制方法、装置及处理器 | |
CN108027736B (zh) | 使用通过对物理寄存器预分配的乱序重命名的运行时代码并行化 |
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 |