CN101872336A - 基于主从架构的协处理器高效执行的装置 - Google Patents
基于主从架构的协处理器高效执行的装置 Download PDFInfo
- Publication number
- CN101872336A CN101872336A CN 201010186152 CN201010186152A CN101872336A CN 101872336 A CN101872336 A CN 101872336A CN 201010186152 CN201010186152 CN 201010186152 CN 201010186152 A CN201010186152 A CN 201010186152A CN 101872336 A CN101872336 A CN 101872336A
- Authority
- CN
- China
- Prior art keywords
- instruction
- coprocessor
- primary processor
- coprocessor instruction
- reorders
- 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
Images
Landscapes
- Advance Control (AREA)
Abstract
一种基于主从架构的协处理器高效执行的装置,包括主处理器和协处理器,协处理器指令在主处理器的重排序缓存单元中创建表项时,直接将其标记为已完成运行状态,此时,协处理器指令被发送至协处理器指令缓冲区,在协处理器指令缓冲区中临时等待,由协处理器指令缓冲区实时监控主处理器重排序缓存单元中的该协处理器指令是否在主处理器中进入提交状态,当且仅当协处理器指令被主处理器提交时,协处理器指令从协处理器指令缓冲区发射至协处理器执行单元;主处理器指令在重排序缓存中创建表项时标记为未完成运行状态,需等到对应指令在主处理器执行单元中完成运行后才将其标记为已完成状态。本发明减少流水线空洞、提升主处理和和协处理器性能。
Description
技术领域
本发明涉及嵌入式CPU的协处理器扩展机制,尤其是一种基于主从架构的协处理器高效执行的装置。
背景技术
在嵌入式领域中,协处理器多用来协助主处理器进行对其无法执行或执行效率低下的处理工作而研究开发使用的,以此加速程序的执行。
在使用协处理器加速主处理器中最主要的问题是解决主处理器与协处理器并行执行,最大程度的发挥主处理器和协处理器的性能。
在现有的技术中,通常的实现协处理器的方法是在协处理器可以接受协处理器指令后将协处理器指令在主处理器重排序缓存中创建表项,并且当协处理器指令在主处理器中处于提交状态后才将协处理器指令送入协处理器中执行,当协处理器指令在协处理器中完成后才将主处理器重排序缓存中的协处理器指令更新为完成状态,然后在主处理器重排序缓存中按序退休。
这类传统实现方法由于协处理器指令在协处理器中执行可能需要许多个周期,所以这条协处理器指令需要许多个周期才能够在主处理器重排序缓存中退休。在这种情况下该协处理器指令的其他后续指令可能早已经执行完成但是由于此协处理器指令无法退休导致后续的指令也无法退休,极端的情况下会出现指令塞满主处理器重排序缓存但是却没有指令退休的状况,造成主处理器流水线中出现很大的空洞,影响主处理器和协处理器的整体性能,极大的限制了流水线的优势。
发明内容
为了克服已有的嵌入式处理器的协处理器执行装置的存在流水线空洞、影响主处理器和协处理器性能的不足,本发明提供一种减少流水线空洞、提升主处理器和协处理器性能的基于主从架构的协处理器高效执行的装置。
本发明解决其技术问题所采用的技术方案是:
一种基于主从架构的协处理器高效执行的装置,包括主处理器和协处理器,所述主处理器包括:流水线寄存器,用于储存译码后的主处理器指令和协处理器指令;主处理器执行单元,用以主动运行主处理器指令;重排序缓存单元,用于对主处理器指令和协处理器指令创建表项;所述协处理器包括:协处理器指令缓冲区,用于缓存协处理器指令;协处理器执行单元,用于接受协处理器指令缓冲区提供的协处理器指令,完成指令运行并返回结果;
协处理器指令在所述重排序缓存单元中创建表项时,直接将其标记为已完成运行状态,此时,协处理器指令被发送至协处理器指令缓冲区,在协处理器指令缓冲区中临时等待,由协处理器指令缓冲区实时监控主处理器重排序缓存单元中的该协处理器指令是否在主处理器中进入提交状态,当且仅当协处理器指令被主处理器提交时,协处理器指令从协处理器指令缓冲区发射至协处理器执行单元;
主处理器指令在重排序缓存中创建表项时标记为未完成运行状态,需等到对应指令在主处理器执行单元中完成运行后才将其标记为已完成状态。
作为优选的一种方案:主处理器指令和协处理器指令在重排序缓存单元中创建相应的表项后,主处理器指令在主处理器执行单元中执行,协处理器指令在协处理器执行单元中执行,两者并行执行。
进一步,主处理器指令与协处理器指令在重排序缓存中创建表项时按序创建,退休时按序退休。
再进一步,所述提交状态是指所述协处理器指令已经成为主处理器中最长历史的指令,并已经被确认进入等待退休的状态。
更进一步,协处理器指令缓冲区中缓存的协处理器指令分为已提交指令和未提交指令,所述已提交的协处理器指令被送入协处理器执行单元执行,未提交的协处理器指令将在缓冲区中等待主处理器对其进行提交状态确认。
本发明的有益效果主要表现在:(1)、使得协处理器指令和协处理器指令后的主处理器指令能够尽可能早的送入协处理器执行单元和主处理器执行单元中执行并在主处理器重排序缓存中退休,减少流水线的空洞,提高处理器的整体性能。(2)、本发明硬件开销小,实现简单。仅需要增加一个协处理器指令缓冲区和少量的控制逻辑。
附图说明
图1是一种基于主从架构的协处理器高效执行的装置的结构示意图。
图2是主处理器重排序缓存及其表项内容的结构示意图。
图3是主处理器重排序缓存创建表项时的表项状态示意图。
图4是主处理器重排序缓存表项退休的结构示意图。
图5是协处理器指令缓冲区及其表项内容的结构示意图。
图6是协处理器指令缓冲区中已提交指令与未提交指令的表项状态示意图。
图7是协处理器指令缓冲区更新指令提交状态的结构示意图。
图8是协处理器指令缓冲区表项退休的结构示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图8,一种基于主从架构的协处理器高效执行的装置,包括主处理器10和协处理器20,所述主处理器10包括:流水线寄存器30,用于储存译码后的主处理器指令和协处理器指令;主处理器执行单元50,用以主动运行主处理器指令;重排序缓存单元40,用于对主处理器指令和协处理器指令创建表项;所述协处理器20包括:协处理器指令缓冲区60,用于缓存协处理器指令;协处理器执行单元70,用于接受协处理器指令缓冲区提供的协处理器指令,完成指令运行并返回结果;
协处理器指令在所述重排序缓存单元中创建表项时,直接将其标记为已完成运行状态,此时,协处理器指令被发送至协处理器指令缓冲区,在协处理器指令缓冲区中临时等待,由协处理器指令缓冲区实时监控主处理器重排序缓存单元中的该协处理器指令是否在主处理器中进入提交状态,当且仅当协处理器指令被主处理器提交时,协处理器指令从协处理器指令缓冲区发射至协处理器执行单元;
主处理器指令在重排序缓存中创建表项时标记为未完成运行状态,需等到对应指令在主处理器执行单元中完成运行后才将其标记为已完成状态。
本实施例中,包括主处理器10,协处理器20,流水线寄存器30,主处理器重排序缓存40,主处理器执行单元50,协处理器指令缓冲区60,协处理器执行单元70。其中主处理器10采取5级经典流水线,其处理主处理器指令,并发射协处理器指令给协处理器。协处理器20处理协处理器指令。流水线寄存器30储存译码后的有关主处理器指令和协处理器指令的信息。主处理器重排序缓存40储存主处理器指令和协处理器指令的提交,完成,退休等信息。主处理器执行单元50执行主处理器的指令。协处理器指令缓冲区60储存和管理协处理器指令。协处理器执行单元70执行协处理器指令。
以下介绍本发明实施例的运行过程。
在介绍具体的实施例之前,先对提交,完成,退休这几个术语进行说明。指令的提交是指此指令已经成为主处理器中历史最长的指令且在后续运行过程中将最先实施退休,其位于主处理器重排序缓存的顶端。指令的完成是指此指令已执行完成,获得运行结果。指令的退休是指此指令更新处理器的状态(如回写寄存器堆等),并将指令从重排序缓存中清除。高端嵌入式CPU目前采用乱序执行,按序提交和按序退休的运行机制。
主处理器指令与协处理器指令通过主处理器10的取指、译码阶段后送入流水线寄存器30中储存。当主处理器执行单元50可以接收主处理器指令时,将主处理器指令送入主处理器执行单元50中;当协处理器20可以接收协处理器指令时,将协处理器指令送入协处理器20中。在主处理器指令或协处理器指令被送往各自的目标单元的同时,主处理器指令和协处理器指令都将在主处理器重排序缓存40中创建相应的表项。当主处理器指令或协处理器指令在主处理器10中完成时,则在主处理器重排序缓存40中按序退休。当协处理器20接收协处理器指令后将其送入协处理器指令缓冲区60中,如果协处理器指令缓冲区60中的指令是已提交的,则将其送入协处理器执行单元70中执行,如果是未提交的,则继续在协处理器指令缓冲区60中等待提交。当协处理器指令在协处理器20中完成时,则在协处理器指令缓冲区60中按序退休。
主处理器重排序缓存是先进先出的缓存队列(First In First Out,FIFO),本实施例将以4个表项的FIFO队列为例进行说明。表项的内容包括表项的有效信息,指令的完成信息,以及其它相关的指令信息,具体参考图2。当主处理器指令可以送入主处理器执行单元中或者协处理器指令可以送入协处理器中时,主处理器指令或协处理器指令在重排序缓存中创建表项。但协处理器指令在主处理器重排序缓存中创建表项时,同时将其标记为已完成运行状态(complete位为1),而主处理器指令在主处理器重排序缓存中创建表项时将其标记为未完成运行状态(complete位为0),具体参考图3。当指令在重排序缓存中处于最顶部时,则表示此指令处于已提交的状态,并将此信息发送给协处理器,由协处理器指令缓冲区判断此已提交的指令是否是协处理器指令,并由此做出相应的操作。当主处理器指令或协处理器指令处于重排序缓存中的顶部且已处于已完成运行状态(即complete位为1)后,则将主处理器指令和协处理器指令按序退休,具体参考图4,图4中指令1-4在四个周期中按序退休(假设在周期1时四条指令都已处于已完成运行状态,并且指令1是最早在重排序缓存中创建表项的指令,指令4是最晚的)。主处理器指令在退休时既要将指令从主处理器重排序缓存中清除,也要更新主处理器的状态。而协处理器指令由于在主处理器重排序缓存中创建时即已标记为已完成状态而没有实际的指令执行结果信息,所以当其在主处理器中退休时仅将指令从主处理器重排序缓存中清除,而并不更新主处理器和协处理器的状态,只有当协处理器指令在协处理器中退休时才更新协处理器的状态。
协处理器指令缓冲区缓存主处理器发送给协处理器的协处理器指令,并将已提交的指令发送给协处理器执行单元执行。它是一个有4个表项的FIFO,其表项的内容包括表项的有效信息,指令的完成信息,指令的提交信息,以及其它相关的指令信息,具体参考图5。当协处理器指令缓冲区非满时,则其接收主处理器发送的协处理器指令,并在协处理器指令缓冲区中创建表项,将协处理器指令的相关信息放入创建的表项中。协处理器指令在协处理器指令缓冲区中存在已提交(commit位为1)和未提交(commit位为0)的两种状态,具体可参考图6。协处理器指令缓冲区需要实时监测主处理器发送的指令提交信息,当检测到协处理器指令缓冲区中表项所对应的指令与重排序缓存中已提交的指令相同,则立即更新相应表项中的提交信息,具体参考图7,在图7中提交指针(commit_ptr)总是指向协处理器指令缓冲区中历史最长的未提交的指令,当协处理器指令缓冲区在当前周期检测到提交指针所指向的未提交的指令与主处理器重排序缓存中的提交指令相同时,则在下一个周期更新此未提交指令的提交域,即将其状态变成已提交,并在此同时,提交指针加1指向下一条未提交的指令。当位于协处理器指令缓冲区顶部的指令已提交且协处理器执行单元可接收协处理器指令时,则将其送入到协处理器执行单元中执行。当协处理器指令已完成并位于协处理器指令缓冲区的顶部时,则将此协处理器指令在协处理器指令缓冲区中退休,更新协处理器的状态,并将相应的表项清除,具体参考图8,在图8中退休指针(retire ptr)总是指向协处理器指令缓冲区中历史最长的指令,在周期1协处理器指令缓冲区接受到协处理器执行单元的提交指令1的完成信息,则在周期2将已提交指令的complete位置为1,表示此指令已完成,于是在周期3将已提交指令1的结果回写到协处理器的寄存器堆中(即为更新协处理器的状态),同时将其相应的表项内容清空,然后将退休指针指向下一提交指令。
基于上述主处理器重排序缓存和协处理器指令缓冲区的设计,由于协处理器指令在主处理器中直接标记为已完成状态,使得其在主处理器重排序缓存中可以尽可能早的退休。因此在此协处理器指令后的其他已完成的主处理器指令也可以实现快速退休,该执行装置使得协处理器指令的运行过程不影响后续主处理器指令的执行,极大的提高了处理器的流水线并行性。这种运行机制特别是在协处理器指令需要多个周期才能完成的情况对处理器性能的提升效果尤为明显。由于主处理器不再负责协处理器指令的结果回写,协处理器将独立负责协处理器指令的结果回写与在协处理器中的退休,由此保证了整个指令流的正确性。
Claims (5)
1.一种基于主从架构的协处理器高效执行的装置,包括主处理器和协处理器,所述主处理器包括:流水线寄存器,用于储存译码后的主处理器指令和协处理器指令;主处理器执行单元,用以主动运行主处理器指令;重排序缓存单元,用于对主处理器指令和协处理器指令创建表项;所述协处理器包括:协处理器指令缓冲区,用于缓存协处理器指令;协处理器执行单元,用于接受协处理器指令缓冲区提供的协处理器指令,完成指令运行并返回结果;其特征在于:
协处理器指令在所述重排序缓存单元中创建表项时,直接将其标记为已完成运行状态,此时,协处理器指令被发送至协处理器指令缓冲区,在协处理器指令缓冲区中临时等待,由协处理器指令缓冲区实时监控主处理器重排序缓存单元中的该协处理器指令是否在主处理器中进入提交状态,当且仅当协处理器指令被主处理器提交时,协处理器指令从协处理器指令缓冲区发射至协处理器执行单元;
主处理器指令在重排序缓存中创建表项时标记为未完成运行状态,需等到对应指令在主处理器执行单元中完成运行后才将其标记为已完成状态。
2.如权利要求书1所述的基于主从架构的协处理器高效执行的装置,其特征在于:主处理器指令和协处理器指令在重排序缓存单元中创建相应的表项后,主处理器指令在主处理器执行单元中执行,协处理器指令在协处理器执行单元中执行,两者并行执行。
3.如权利要求书1或2所述的基于主从架构的协处理器高效执行的装置,其特征在于主处理器指令与协处理器指令在重排序缓存中创建表项时按序创建,退休时按序退休。
4.如权利要求书1或2所述的基于主从架构的协处理器高效执行的装置,其特征在于:所述提交状态是指所述协处理器指令已经成为主处理器中最长历史的指令,并已经被确认进入等待退休的状态。
5.如权利要求书1或2所述的基于主从架构的协处理器高效执行的装置,其特征在于:协处理器指令缓冲区中缓存的协处理器指令分为已提交指令和未提交指令,所述已提交的协处理器指令被送入协处理器执行单元执行,未提交的协处理器指令将在缓冲区中等待主处理器对其进行提交状态确认。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101861527A CN101872336B (zh) | 2010-05-31 | 2010-05-31 | 基于主从架构的协处理器高效执行的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101861527A CN101872336B (zh) | 2010-05-31 | 2010-05-31 | 基于主从架构的协处理器高效执行的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101872336A true CN101872336A (zh) | 2010-10-27 |
CN101872336B CN101872336B (zh) | 2011-12-21 |
Family
ID=42997202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101861527A Active CN101872336B (zh) | 2010-05-31 | 2010-05-31 | 基于主从架构的协处理器高效执行的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101872336B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104540050A (zh) * | 2015-01-14 | 2015-04-22 | 北京飞音时代技术有限公司 | 综合接入设备的数据处理方法 |
CN112540789A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
CN113204518A (zh) * | 2020-01-31 | 2021-08-03 | 慧与发展有限责任合伙企业 | 用于配置子系统的主处理器和从处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949241A (en) * | 1987-10-22 | 1990-08-14 | Nec Corporation | Microcomputer system including a master processor and a slave processor synchronized by three control lines |
US20050278504A1 (en) * | 2004-06-15 | 2005-12-15 | Sunplus Technology Co., Ltd. | System capable of dynamically arranging coprocessor number |
US20070198984A1 (en) * | 2005-10-31 | 2007-08-23 | Favor John G | Synchronized register renaming in a multiprocessor |
-
2010
- 2010-05-31 CN CN2010101861527A patent/CN101872336B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949241A (en) * | 1987-10-22 | 1990-08-14 | Nec Corporation | Microcomputer system including a master processor and a slave processor synchronized by three control lines |
US20050278504A1 (en) * | 2004-06-15 | 2005-12-15 | Sunplus Technology Co., Ltd. | System capable of dynamically arranging coprocessor number |
US20070198984A1 (en) * | 2005-10-31 | 2007-08-23 | Favor John G | Synchronized register renaming in a multiprocessor |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104540050A (zh) * | 2015-01-14 | 2015-04-22 | 北京飞音时代技术有限公司 | 综合接入设备的数据处理方法 |
CN112540789A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
CN112540789B (zh) * | 2019-09-23 | 2024-06-18 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
CN113204518A (zh) * | 2020-01-31 | 2021-08-03 | 慧与发展有限责任合伙企业 | 用于配置子系统的主处理器和从处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN101872336B (zh) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US6880073B2 (en) | Speculative execution of instructions and processes before completion of preceding barrier operations | |
TWI299465B (en) | Simultaneous multithread processor and method therefor | |
US9870226B2 (en) | Control of switching between executed mechanisms | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
WO2008029450A1 (fr) | Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement | |
TWI658407B (zh) | 管理處理器流水線中的指令順序 | |
US20110087865A1 (en) | Intermediate Register Mapper | |
CN101281460B (zh) | 处理多个线程的方法和设备 | |
US10346174B2 (en) | Operation of a multi-slice processor with dynamic canceling of partial loads | |
US10824429B2 (en) | Commit logic and precise exceptions in explicit dataflow graph execution architectures | |
US20170300328A1 (en) | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
US20160011877A1 (en) | Managing instruction order in a processor pipeline | |
JP2001209535A (ja) | プロセッサの命令スケジューリング装置 | |
CN101872336B (zh) | 基于主从架构的协处理器高效执行的装置 | |
US9223577B2 (en) | Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage | |
CN115309454A (zh) | 一种超标量risc-v处理器的扩展指令接口 | |
US20140129805A1 (en) | Execution pipeline power reduction | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
US10255071B2 (en) | Method and apparatus for managing a speculative transaction in a processing unit | |
US7124284B2 (en) | Method and apparatus for processing a complex instruction for execution and retirement | |
US9442735B1 (en) | Method and apparatus for processing speculative, out-of-order memory access instructions | |
US9858075B2 (en) | Run-time code parallelization with independent speculative committing of instructions per segment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160223 Address after: 310012 A403 room, Hangzhou Neusoft building, 99 Huaxing Road, Xihu District, Zhejiang, Hangzhou, China Patentee after: Zhongtian Microsystems Co., Ltd., Hangzhou Address before: 310027 Hangzhou, Zhejiang Province, Xihu District, Zhejiang Road, No. 38, No. Patentee before: Zhejiang University |