CN105426160B - 基于sprac v8指令集的指令分类多发射方法 - Google Patents
基于sprac v8指令集的指令分类多发射方法 Download PDFInfo
- Publication number
- CN105426160B CN105426160B CN201510762294.6A CN201510762294A CN105426160B CN 105426160 B CN105426160 B CN 105426160B CN 201510762294 A CN201510762294 A CN 201510762294A CN 105426160 B CN105426160 B CN 105426160B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- level
- decoding
- execution
- 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
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
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)
Abstract
基于SPRAC V8指令集的指令分类多发射方法。该方法将SPARC V8指令划分为四个类别,将SPRAC V8处理器划分为取指、译码、执行、访存、写回五个流水级,五个流水级之间通过公共数据总线连接,通过在取指级增加n‑1条取指通路,在译码级增加n‑1个译码单元,在译码级和执行级之间加入n组保留站,在执行级和访存级之间加入重排序缓冲区在执行级加入对应的执行单元,为SPRAC V8处理器建立了多发射五级流水线结构,通过保留站检测并行指令之间的冲突,通过不同的执行单元处理不同的指令,最后由重排序缓冲区对指令执行结果按序提交,实现了指令的并行执行,提高了SPRAC V8处理器的处理性能。
Description
技术领域
本发明涉及基于SPRAC V8指令集的指令分类多发射方法,属于嵌入式应用领域。
背景技术
RISC结构是单发射处理器体系结构设计的一大进展。单发射结构中流水线设计的目标,是做到平均每个周期能执行完成一条指令,即IPC=1,但由于控制相关、数据相关和资源相关等问题引起的冲突,使得IPC达不到1。通过指令重组、分支预测和前向数据通路等技术可以提高IPC使之接近于1,但不可能大于或等于1。为了突破这一上限,当前嵌入式处理器的总体发展趋势是在保持低功耗的前提下,通过创新指令集和流水线架构来提高处理器的综合性能,适应日益发展的嵌入式系统对于性能的需求。从技术角度,嵌入式处理器主要从浅流水(流水线级数小于8)往深流水(流水线级数超过8)发展,从单发射架构往多发射架构发展。所谓多发射即在一个周期内发出多条指令,通过分时复用执行单元或配置多个执行单元同时进行处理,通过增加寄存器端口同时提交多个执行结果,从而提高处理指令的效率。
SPRAC V8(Scalable Processor Architecture V8)体系结构作为RISC处理器的经典代表之一,占有十分重要的地位。国产SPRAC V8系列处理器面向嵌入式系统,已经成功应用于数字听写机、指纹识别系统、GPS处理器等。随着技术的发展,市场对高性能处理器的需求增强,通过多发射技术来提高SPARC V8处理器的性能适应市场的需求,是一种行之有效的方式。但是目前尚没有针对SPARC V8处理器的多发射方法。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供基于SPRAC V8指令集的指令分类多发射方法,实现了指令的并行执行,提高了SPRAC V8处理器的性能。
本发明的技术解决方案是:基于SPRAC V8指令集的指令分类多发射方法,包括如下步骤:
(1)将SPRAC V8处理器划分为取指、译码、执行、访存、写回五个流水级,将SPRACV8指令划分为分支指令、乘除法指令、加载存储指令和其他指令四类,五个流水级之间通过公共数据总线连接,在取指级增加n-1条取指通路,在译码级增加n-1个译码单元,在译码级和执行级之间加入n组保留站,每组保留站与一类指令相对应;在执行级和访存级之间加入重排序缓冲区;根据待执行指令的类别在执行级加入对应的执行单元,所述执行单元包括加法器、移位器、乘法器/除法器和算术逻辑单元;n为自然数,n大于等于1小于8;
(2)取指级从指令缓存中同时取回n条指令,并通过公共数据总线将这n条指令分别发送给译码级n个译码单元,同时取指级将这n条指令在指令缓存中的顺序存放在重排序缓冲区;
(3)译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断,将判断后得到的待执行指令对应的操作、源地址、目的地址或操作数通过公共数据总线发送给该指令相应的保留站;
(4)各保留站根据指令地址对操作数进行预取,并判断各条指令之间是否存在相关冲突,对于存在相关冲突的指令,将其放在下一周期执行,将不存在相关冲突的m条指令分别通过公共数据总线发送给指令对应的执行单元执行,m为自然数,m小于等于n;
(5)执行单元对m条指令并行执行后,分别将运算结果通过公共数据总线发送给重排序缓冲区;存在相关冲突的指令所在的保留站可通过公共数据总线从重排序缓冲区读取本周期指令的执行结果,作为下一周期指令执行时的操作数;
(6)重排序缓冲区判断这m条指令是否按序排在存在相关冲突的指令之前,如果是,则将m条指令的执行结果通过公共数据总线同时写回对应的存储器或寄存器,否则,将按序排在相关冲突指令之前的指令执行结果同时提交,按序排在后面的指令等待存在相关冲突的指令执行之后写回对应的存储器或寄存器,从而实现了SPRAC V8处理器的多发射。
所述步骤(3)中译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断的实现方式为:
(2.1)译码级通过公共数据总线从重排序缓冲区中读出这n条指令在指令缓存中的顺序,将所述n条指令按顺序进行标识;
(2.2)在译码时判断每一条指令是否是跳转指令,如果第i个指令是跳转指令,且i小于等于n-3,则将按序排在第i+1个指令后面的指令全部清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第i+2个指令之前的所有指令为待执行指令;如果第i个指令是跳转指令,且i等于n-2,则将第n个指令清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第n个指令之前的所有指令为待执行指令;i为自然数,i=1,2,3,……,n-2。
所述步骤(4)中保留站判断各条指令之间是否存在相关冲突的方法为:
(3.1)各保留站通过公共数据总线从重排序缓冲区中读出所存放指令的顺序;
(3.2)每个保留站对所存放的指令进行分析,如果所存放的指令需要用到按序排在前面指令的运算结果,则该指令存在相关冲突,否则,不存在相关冲突。
所述步骤(6)中,如果多个指令的写目的寄存器或存储器相同,则只需要将按序排在最后的指令的结果写入相应的寄存器或存储器,前面指令的结果被忽略。
本发明与现有技术相比,具有如下有益效果:
(1)本发明是对指令分类之后实现的多发射方法,根据待执行指令的情况增加执行单元,执行单元的面积增加较小,例如仅加入一个加法器和一个移位器,就能够实现四发射结构,从而用较小的面积代价换取较好的性能提升效果;
(2)本发明设计了包括保留站、公共数据总线(CDB,Common Data Bus)和重排序缓冲区的动态执行核结构,采用顺序发射-乱序执行-顺序提交的机制,在不打乱指令发射和提交顺序的前提下,充分利用指令间潜在的并行性,从而提高指令的执行效率。
(3)本发明通过加入保留站同时实现操作数预取和相关冲突的检测和处理,解决了单发射结构变换到多发射结构的一大难点——多指令相关冲突问题,保证了处理器基本功能的正确性,同时可以通过公共数据总线快速取回前面指令的执行结果供后续指令使用,提高了相关冲突处理效率;
(4)本发明对于并行指令写回的写相关冲突问题,仅写入按序排在最后的指令的执行结果,避免了多次写造成的资源和时间浪费。
附图说明
图1为本发明基于的SPRAC V8处理器五级流水结构图;
图2为利用本发明方法实现的四发射五级流水处理器结构图;
图3为本发明保留站的结构;
图4为本发明重排序缓冲区的结构。
图5为本发明的具体实现流程图;
具体实施方式
本发明涉及嵌入式应用领域,特别针对应用SPARC V8指令集的多发射处理器结构,通过分析指令的执行过程,对指令分类处理,根据功能需要配置处理单元。
本发明实现的是基于国产SPRAC V8系列处理器的多发射方法,该方法首先将SPRAC V8处理器划分为五级流水结构,如图1所示,五级流水分别是取指级、译码级、执行级、访存级和写回级,五级之间通过数据总线和控制总线传递数据和控制信息。本发明方法通过分析指令的执行过程将SPARC V8指令按照功能划分为四个类别(分支跳转指令、加载/存储指令、乘/除法指令和其他类指令),分别通过不同的功能单元(依次对应移位器、加法器、乘/除法器和算术逻辑部件)处理,并且将对分支指令的处理提前到译码级完成,各类指令在各个流水级执行的操作如表1所示。
表1
如图5所示,本发明方法包括如下步骤:
(1)建立SPRAC V8处理器多发射结构,将SPRAC V8处理器划分为取指、译码、执行、访存、写回五个流水级,将SPRAC V8指令划分为分支指令,乘除法指令,加载存储指令和其他指令四类,五个流水级之间通过公共数据总线连接,在取指级增加n-1条取指通路,在译码级增加n-1个译码单元,在译码级和执行级之间加入n组保留站,每组保留站与一类指令相对应;在执行级和访存级之间加入重排序缓冲区;根据待执行指令的类别在执行级加入对应的执行单元,所述执行单元包括加法器、移位器、乘法器/除法器和算术逻辑单元;n为自然数,n大于等于1小于8;
(2)取指级从指令缓存中同时取回n条指令,并通过公共数据总线将这n条指令分别发送给译码级n个译码单元,同时取指级将这n条指令在指令缓存中的顺序存放在重排序缓冲区;
(3)译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断,将判断后得到的待执行指令对应的操作、源地址、目的地址或操作数通过公共数据总线发送给该指令相应的保留站;
译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断的实现方式为:
(2.1)译码级通过公共数据总线从重排序缓冲区中读出这n条指令在指令缓存中的顺序,将所述n条指令按顺序进行标识;
(2.2)在译码时判断每一条指令是否是跳转指令,如果第i个指令是跳转指令,且i小于等于n-3,则将按序排在第i+1个指令后面的指令全部清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第i+2个指令之前的所有指令为待执行指令;如果第i个指令是跳转指令,且i等于n-2,则将第n个指令清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第n个指令之前的所有指令为待执行指令;i为自然数,i=1,2,3,……,n-2。
(4)各保留站根据指令地址对操作数进行预取,并判断各条指令之间是否存在相关冲突,对于存在相关冲突的指令,将其放在下一周期执行,将不存在相关冲突的m条指令分别通过公共数据总线发送给指令对应的执行单元执行,m为自然数,m小于等于n;
保留站判断各条指令之间是否存在相关冲突的方法为:
(3.1)各保留站通过公共数据总线从重排序缓冲区中读出所存放指令的顺序;
(3.2)每个保留站对所存放的指令进行分析,如果所存放的指令需要用到按序排在前面指令的运算结果,则该指令存在相关冲突,否则,不存在相关冲突。
(5)执行单元对m条指令并行执行后,分别将运算结果通过公共数据总线发送给重排序缓冲区;存在相关冲突的指令所在的保留站通过公共数据总线从重排序缓冲区读取本周期指令的执行结果,作为下一周期指令执行时的操作数;
(6)重排序缓冲区按这m条指令在指令缓存中的顺序对各个执行单元运算得到的指令结果进行排序,按序同时完成的m条指令可同时提交,但按序排在前面的指令没有执行完成时,按序排在后面的指令不可提交;结果写回对应的存储器或寄存器后,就实现了SPRAC V8处理器的多发射。
如果多个指令的写目的寄存器或存储器相同,则只需要将按序排在最后的指令的结果写入相应的寄存器或存储器,前面指令的结果被忽略。
本发明将指令的分配与操作数的预取放在同一阶段。指令译码后放入保留站的过程中,也会去寄存器堆中读取操作数放入对应保留站。指令从取指级经译码级传递至保留站,并在重排序缓冲区中创建相应的表项,这样就实现了成功发射。
在多发射流水线结构中,如果设计实现功能相同的多条流水线,再为每个运算部件分配多个保留站则会消耗极大的硬件资源。本发明提出的超标量流水线结构通过将指令分类,用不同的执行单元来完成运算,实现指令的并行,硬件资源增加较少。
本发明采用顺序发射-乱序执行-顺序提交的机制,在不打乱指令发射和提交顺序的前提下,充分利用指令间潜在的并行性,提高指令的执行效率。保留站、公共数据总线和重排序缓冲区是实现指令并行的关键所在。
(1)保留站设置:
保留站是接到每个执行单元入口的多重缓冲器,如图3。它们可以看作包含以下信息的虚拟功能单元:
Busy,标志着该保留站是否被占用。通常指令的分配包含以下三部:选择一个空保留站;将操作数和/或寄存器地址和数据放入选中的保留站;并将busy位置1。分配单元通过检测busy位找到空的保留站。
Op,记录指令要进行的操作。
Qj,如果操作数rs1准备好了可以被放入Vj,该位置零;否则,跟踪rs1data并记录将会给出rs1data的功能单元名称。
Vj,存放操作数rs1data。
Busy_j,标志着操作数rs1data是否就绪。
Qk,与Qj类似,只是对象是rs2data;有时候操作数rs1data可能是个立即数,这样Qk就直接取零。
Vk,存放操作数rs2data。
Busy_k,标志着操作数rs2data是否就绪。
Qi,存放rd,指示要写入哪一个寄存器,该位可用于消除写后写相关冲突。
A,此位为store指令设置,用于存放从目的寄存器中取出的操作数,等待写入存储器。
当busy=’0’时,表示保留站为空,此时无论执行单元是否在执行指令,指令队列都可以向功能单元分配指令,分配的指令可以在保留站中等待,当两个操作数都准备就绪且功能单元可用则可以开始执行。只要存在空的保留站,无论指令操作数是否准备就绪指令队列都可以向功能单元发射指令,这避免了由于指令分布问题引起相关而造成的流水线停顿。
分配单元检测所有的busy位,并从中选择一个空的保留站来分配指令。一旦一个保留站被选中了就立即向其中存入操作类别、寄存器地址、操作数据等信息,并将busy位置1。每个保留站有两个操作数字段,Vj和Vk。如果操作数未就绪则在Qj或Qk中记录将会产生该操作数的寄存器或存储器地址,一旦操作数就绪立即放入Vj和Vk。只有当Busy_j=’1’和Busy_k=’1’同时满足,且执行单元可用时,指令才能被发送到执行单元去执行。执行结果会存到重排序缓冲区中去,必须将重排序缓冲区与保留站结合起来使用,才能实现顺序发射-乱序执行-顺序提交的机制,保证程序正确、高效运行。
本发明采用了动态保留站分配机制,这种分布式硬件保留站框架与集中式的保留站方案相比,优点是进入保留站的指令在操作数就绪后可直接送入到相应的执行单元中,有效简化保留站的指令分发逻辑。发射窗口中的指令由派送逻辑根据指令的操作数准备情况进行分发。当操作数准备就绪时,指令直接传递给执行单元开始运算操作;当指令操作数未完全就绪时,指令在保留站中有专门的功能单元跟踪操作数,一旦操作数就绪就会立即传递给运算单元。这种机制有效提升了处理器的运算速度。
(2)公共数据总线设置:
公共数据总线连接三个功能单元的输出和保留站、重排序缓冲区、寄存器和数据cache。寄存器将数据输出到公共数据总线上,需要该数据作为操作数的保留站从公共数据总线上取出相应的数据。对于load指令,需要从存储器中取一个数据,一旦存储器允许访问,操作数可以立即被取到公共数据总线上同时传输到保留站中。对于store指令,寄存器中传来的数据要先放到重排序缓冲区中,等待存储级检测相应存储地址是否存在相关冲突,接收到可以存入信号时才会将数据存入存储器。乘除法指令和其他类指令执行结果同样也可以通过公共数据总线发送到保留站,作为一个操作数来使用,或者送到重排序缓冲区作为指令输出值,等待写入寄存器。公共数据总线实现了快捷的前向数据通路,使得数据不需要通过寄存器就可以直接从数据产生者传递到数据使用者。通过公共数据总线目标寄存器可以根据相应指令的执行结果同步更新。
(3)重排序缓冲区设置:
重排序缓冲区是为了帮乱序执行之后的指令找回原先的顺序而设定的。所有已经被分派出去但未执行完成的指令都会在重排序缓冲区中记录,包括正在保留站中等待的指令、正在执行单元中执行的指令和执行完成等待按程序顺序提交的指令。每条指令可以有三种状态:等待被执行,执行中和执行完成。如图4,每条指令在重排序缓冲区中对应有以下标志位:
Busy,标志着该重排序缓冲区是否可用。指令分派出来以后放进空的重排序缓冲区中,Busy置1;指令提交之后Busy置0,将相应重排序缓冲区刷新。
N,记录指令进入重排序缓冲区的先后顺序,当同一执行单元对应的两个保留站中的指令都可以执行时,先取入重排序缓冲区的指令优先执行,执行完成后指令需要按照进入的顺序提交。如果某条指令已经执行完成,但它前面还有指令尚未完成,则该指令不能提交。
K,记录指令的类别:分支指令(branch),存储指令(store)、加载和运算指令(load/ALU)。分支指令没有需要写入寄存器的结果,不需要目标地址;存储指令写存储器,要给存储器发送一个目标地址;而load/ALU指令写寄存器,目标地址指向寄存器。
Qj,记录目标寄存器地址(为load/ALU指令)或目标存储器地址(为store指令)。
Vj,暂存load/ALU(包括乘除法)指令或store指令传递过来的结果数据,对于ALU指令该数据是将要存入寄存器的结果;对于load/store指令该数据是存储器地址。
Ready,表示该操作是否已经执行完成,如果执行完成,将Ready置1,等待指令按顺序提交;否则Ready置零。
PC,该位记录每条指令来自的地址pc,有时分支指令需要用它来计算跳转的目标地址。同时还可将该位输出,用来验证模型功能是否正确。
重排序缓冲区可以看作是有一个头指针和一个尾指针的循环队列。指令从尾指针进入重排序缓冲区,只要存再空的重排序缓冲区指令就可以顺序写入,直到写满;指令从头指针处译码、执行和提交,指令定义的操作完成之后就会将Ready位置1,表示当前指令已经执行完成,等待提交。指令的提交会从头指针处开始,按照顺序依次提交,一旦遇到未完成指令(Ready=0)则停止提交。状态位会随着指令在不同流水级之间的传输而更新。每周期最多同时写入或提交四条指令。指令数目由该组指令的功能、指令之间的相关性、空重排序缓冲区的数量和空目的寄存器的数量决定。当一条指令完成了,它的保留站和重排序缓冲区都会被刷新。
重排序缓冲区还可用于分支预测。只要增加一个额外的标志位,如果预测正确,那么猜测执行的指令就可以采纳,执行结果可以暂存在重排序缓冲区中然后按正常顺序提交;否则,预测错误,猜测执行的指令无效,指令被刷新。
实施例:
当n=4时,本发明方法实现的是四发射五级流水处理器,其结构框图如图2所示。
五个流水级之间通过公共数据总线连接,在取指级增加3条取指通路,在译码级增加3个译码单元,在译码级和执行级之间加入4组保留站,每组保留站与一类指令相对应;在执行级和访存级之间加入重排序缓冲区;待执行指令包括加载/存储指令、乘/除法指令、分支指令和算术逻辑指令,根据待执行指令在执行级所做的运算操作,给执行级在原有基础上加入一个加法器和一个移位器。
取指级从指令缓存中同时取回4条指令,将它们按顺序分别标识为i1、i2、i3、i4(i后面的数字表示顺序),并假定本组中i1为加法指令、i2和i4为加载/存储指令、i3为乘法指令。取指级通过公共数据总线将这4条指令分别发送给译码级4个译码单元,同时将这4条指令在指令缓存中的顺序存放在重排序缓冲区。
译码时,如果发现i1是跳转指令,则清除i3和i4,将跳转地址反馈给取指级,i1和i2作为待执行指令,发送到相应的保留站继续执行;如果i1不是跳转指令,而i2是跳转指令,则清除i4,将跳转地址反馈给取指级,i1、i2和i3作为待执行指令发送到相应的保留站继续执行;本例中没有跳转指令,所有指令都是待执行指令,都会分配给对应保留站。
2条加载/存储指令会在对应的保留站区域中按原顺序排队,排在前面的加载/存储指令i2将会与i1和i3进行相关检测,如果i2用到了i1的执行结果,也就是发生了写后读相关冲突,则i2必须延后执行,等待i1的执行结果;否则i2可以和i1同时执行。同理,如果i3用到了i1或i2的执行结果,则i3必须延后执行;如果不存在相关冲突,则这3条指令可以并行执行。
执行单元并行执行完成之后,运算结果通过公共数据总线发送给重排序缓冲区。如果指令i1、i2和i3都执行完成,则它们可以并行提交;如果i3未执行完而i1和i2执行完,则它们也可以并行提交;如果i2未执行完而i1和i3执行完,则i1可以提交,i3不可以提交,必须等待i2执行完成之后才可提交。如果并行写回的目的地址出现重复的情况,也就是发生了写后写相关冲突,例如指令i2和i3的目的地址相同,则只写后面指令i3的结果,i2的结果被忽略掉。
相较于单发射结构,应用本发明方法,执行单元仅增加了一个加法器和一个移位器,实现了指令的并行执行,同时性能提升为单发射结构的1.8倍左右,用较小的面积代价获得了较好的性能提升效果。
总的说来,该发明可以在很大程度上提升芯片性能,满足用户更高的应用需求,顺应处理器架构的发展方向,具有很广的应用空间和市场前景。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (3)
1.基于SPRAC V8指令集的指令分类多发射方法,其特征在于包括如下步骤:
(1)将SPRAC V8处理器划分为取指、译码、执行、访存、写回五个流水级,将SPRAC V8指令划分为分支指令、乘除法指令、加载存储指令和其他指令四类,五个流水级之间通过公共数据总线连接,在取指级增加n-1条取指通路,在译码级增加n-1个译码单元,在译码级和执行级之间加入n组保留站,每组保留站与一类指令相对应;在执行级和访存级之间加入重排序缓冲区;根据待执行指令的类别在执行级加入对应的执行单元,所述执行单元包括加法器、移位器、乘法器/除法器和算术逻辑单元;n为自然数,n大于等于1小于8;
(2)取指级从指令缓存中同时取回n条指令,并通过公共数据总线将这n条指令分别发送给译码级n个译码单元,同时取指级将这n条指令在指令缓存中的顺序存放在重排序缓冲区;
(3)译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断,将判断后得到的待执行指令对应的操作、源地址、目的地址或操作数通过公共数据总线发送给该指令相应的保留站;
译码级n个译码单元对这n条指令进行并行译码,译码的同时分别对每条指令进行跳转指令判断的实现方式为:
(a)译码级通过公共数据总线从重排序缓冲区中读出这n条指令在指令缓存中的顺序,将所述n条指令按顺序进行标识;
(b)在译码时判断每一条指令是否是跳转指令,如果第i个指令是跳转指令,且i小于等于n-3,则将按序排在第i+1个指令后面的指令全部清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第i+2个指令之前的所有指令为待执行指令;如果第i个指令是跳转指令,且i等于n-2,则将第n个指令清除不再向保留站分配,同时将跳转的目标地址反馈给取指级,第n个指令之前的所有指令为待执行指令;i为自然数,i=1,2,3,……,n-2;
(4)各保留站根据指令地址对操作数进行预取,并判断各条指令之间是否存在相关冲突,对于存在相关冲突的指令,将其放在下一周期执行,将不存在相关冲突的m条指令分别通过公共数据总线发送给指令对应的执行单元执行,m为自然数,m小于等于n;
(5)执行单元对m条指令并行执行后,分别将运算结果通过公共数据总线发送给重排序缓冲区;存在相关冲突的指令所在的保留站可通过公共数据总线从重排序缓冲区读取本周期指令的执行结果,作为下一周期指令执行时的操作数;
(6)重排序缓冲区判断这m条指令是否按序排在存在相关冲突的指令之前,如果是,则将m条指令的执行结果通过公共数据总线同时写回对应的存储器或寄存器,否则,将按序排在相关冲突指令之前的指令执行结果同时提交,按序排在后面的指令等待存在相关冲突的指令执行之后写回对应的存储器或寄存器,从而实现了SPRAC V8处理器的多发射。
2.根据权利要求1所述的基于SPRAC V8指令集的指令分类多发射方法,其特征在于:所述步骤(4)中保留站判断各条指令之间是否存在相关冲突的方法为:
(2.1)各保留站通过公共数据总线从重排序缓冲区中读出所存放指令的顺序;
(2.2)每个保留站对所存放的指令进行分析,如果所存放的指令需要用到按序排在前面指令的运算结果,则该指令存在相关冲突,否则,不存在相关冲突。
3.根据权利要求1所述的基于SPRAC V8指令集的指令分类多发射方法,其特征在于:所述步骤(6)中,如果多个指令的写目的寄存器或存储器相同,则只需要将按序排在最后的指令的结果写入相应的寄存器或存储器,前面指令的结果被忽略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510762294.6A CN105426160B (zh) | 2015-11-10 | 2015-11-10 | 基于sprac v8指令集的指令分类多发射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510762294.6A CN105426160B (zh) | 2015-11-10 | 2015-11-10 | 基于sprac v8指令集的指令分类多发射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105426160A CN105426160A (zh) | 2016-03-23 |
CN105426160B true CN105426160B (zh) | 2018-02-23 |
Family
ID=55504391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510762294.6A Active CN105426160B (zh) | 2015-11-10 | 2015-11-10 | 基于sprac v8指令集的指令分类多发射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426160B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10067875B2 (en) * | 2016-11-14 | 2018-09-04 | Via Alliance Semiconductor Co., Ltd. | Processor with instruction cache that performs zero clock retires |
US11551067B2 (en) | 2017-04-06 | 2023-01-10 | Shanghai Cambricon Information Technology Co., Ltd | Neural network processor and neural network computation method |
WO2018184570A1 (zh) | 2017-04-06 | 2018-10-11 | 上海寒武纪信息科技有限公司 | 运算装置和方法 |
CN108733625B (zh) * | 2017-04-19 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
EP3654172A1 (en) | 2017-04-19 | 2020-05-20 | Shanghai Cambricon Information Technology Co., Ltd | Fused vector multiplier and method using the same |
CN108733408A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 计数装置及计数方法 |
CN108733348B (zh) | 2017-04-21 | 2022-12-09 | 寒武纪(西安)集成电路有限公司 | 融合向量乘法器和使用其进行运算的方法 |
CN109087682B (zh) * | 2017-06-14 | 2020-09-01 | 展讯通信(上海)有限公司 | 全局存储器顺序检测系统及方法 |
CN108287730B (zh) * | 2018-03-14 | 2023-12-29 | 武汉市聚芯微电子有限责任公司 | 一种处理器流水线装置 |
CN109086033B (zh) * | 2018-07-06 | 2021-08-03 | 中科星图股份有限公司 | 一种遥感数据处理的流程调度方法 |
CN109885857B (zh) * | 2018-12-26 | 2023-09-01 | 上海合芯数字科技有限公司 | 指令发射控制方法、指令执行验证方法、系统及存储介质 |
CN110297662B (zh) * | 2019-07-04 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 指令乱序执行的方法、处理器及电子设备 |
CN110377339B (zh) * | 2019-08-17 | 2024-03-01 | 中昊芯英(杭州)科技有限公司 | 长延时指令处理装置、方法以及设备、可读存储介质 |
CN111240747B (zh) * | 2020-01-13 | 2022-05-06 | Oppo广东移动通信有限公司 | 指令生成方法、装置、测试架构和电子设备 |
CN111459551B (zh) * | 2020-04-14 | 2022-08-16 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN111913746B (zh) * | 2020-08-31 | 2022-08-19 | 中国人民解放军国防科技大学 | 一种低开销嵌入式处理器设计方法 |
CN112214241B (zh) * | 2020-09-23 | 2023-11-24 | 上海赛昉科技有限公司 | 一种分布式指令执行单元的方法及系统 |
CN114528025B (zh) * | 2022-02-25 | 2022-11-15 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
CN114610392A (zh) * | 2022-03-25 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种指令处理方法、系统、设备以及介质 |
CN114996017A (zh) * | 2022-06-14 | 2022-09-02 | 广东赛昉科技有限公司 | 一种基于指令相关性的指令分派方法与装置 |
CN114756287B (zh) * | 2022-06-14 | 2022-09-02 | 飞腾信息技术有限公司 | 一种重排序缓冲区的数据处理方法、装置及存储介质 |
CN115114876A (zh) * | 2022-07-20 | 2022-09-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种访问内部总线的方法、系统、设备和存储介质 |
CN115129480B (zh) * | 2022-08-26 | 2022-11-08 | 上海登临科技有限公司 | 标量处理单元的访问控制方法及标量处理单元 |
CN115840593A (zh) * | 2023-02-13 | 2023-03-24 | 飞腾信息技术有限公司 | 处理器中的执行部件的验证方法及装置、设备、存储介质 |
CN117193861B (zh) * | 2023-11-07 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、计算机设备和存储介质 |
CN117472445B (zh) * | 2023-12-26 | 2024-04-23 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
CN119149114B (zh) * | 2024-10-18 | 2025-03-28 | 北京微核芯科技有限公司 | 加速器指令的处理方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711602B1 (en) * | 2000-02-18 | 2004-03-23 | Texas Instruments Incorporated | Data processor with flexible multiply unit |
CN101013389A (zh) * | 2007-01-30 | 2007-08-08 | 中国科学院计算技术研究所 | 一种基于时间冗余的检验流水线瞬态故障的装置及方法 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
CN101477454A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN101710272A (zh) * | 2009-10-28 | 2010-05-19 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
CN102682232A (zh) * | 2011-12-26 | 2012-09-19 | 丁丹 | 一种高性能超标量椭圆曲线密码处理器芯片 |
CN103984530A (zh) * | 2014-05-15 | 2014-08-13 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种提高store指令执行效率的流水线结构及方法 |
CN104657145A (zh) * | 2015-03-09 | 2015-05-27 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
-
2015
- 2015-11-10 CN CN201510762294.6A patent/CN105426160B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711602B1 (en) * | 2000-02-18 | 2004-03-23 | Texas Instruments Incorporated | Data processor with flexible multiply unit |
CN101013389A (zh) * | 2007-01-30 | 2007-08-08 | 中国科学院计算技术研究所 | 一种基于时间冗余的检验流水线瞬态故障的装置及方法 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
CN101477454A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN101710272A (zh) * | 2009-10-28 | 2010-05-19 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
CN102682232A (zh) * | 2011-12-26 | 2012-09-19 | 丁丹 | 一种高性能超标量椭圆曲线密码处理器芯片 |
CN103984530A (zh) * | 2014-05-15 | 2014-08-13 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种提高store指令执行效率的流水线结构及方法 |
CN104657145A (zh) * | 2015-03-09 | 2015-05-27 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105426160A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105426160B (zh) | 基于sprac v8指令集的指令分类多发射方法 | |
US9645819B2 (en) | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor | |
CN100461094C (zh) | 一种针对流处理器的指令控制方法 | |
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
Yoon et al. | Virtual thread: Maximizing thread-level parallelism beyond GPU scheduling limit | |
CN101957744B (zh) | 一种用于微处理器的硬件多线程控制方法及其装置 | |
CN108845830B (zh) | 一种一对数装载指令的执行方法 | |
US20130339711A1 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
CN102422262B (zh) | 处理器 | |
WO2013144733A2 (en) | Instruction merging optimization | |
CN108287730A (zh) | 一种处理器流水线结构 | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
JPH05224921A (ja) | データ処理システム | |
US9886278B2 (en) | Computing architecture and method for processing data | |
CN105094747B (zh) | 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 | |
US20220413849A1 (en) | Providing atomicity for complex operations using near-memory computing | |
WO2021218633A1 (zh) | Cpu指令处理方法、控制器和中央处理单元 | |
US20090063818A1 (en) | Alignment of Cache Fetch Return Data Relative to a Thread | |
US7475225B2 (en) | Method and apparatus for microarchitecture partitioning of execution clusters | |
US10877763B2 (en) | Dispatching, allocating, and deallocating instructions with real/virtual and region tags in a queue in a processor | |
CN118295710A (zh) | 多端口发射的空间回收方法、装置、设备和介质 | |
CN113703841B (zh) | 一种寄存器数据读取的优化方法、装置及介质 | |
US6351803B2 (en) | Mechanism for power efficient processing in a pipeline processor | |
KR100861701B1 (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |