CN104536914B - 基于寄存器访问标记的相关处理装置和方法 - Google Patents
基于寄存器访问标记的相关处理装置和方法 Download PDFInfo
- Publication number
- CN104536914B CN104536914B CN201410546092.3A CN201410546092A CN104536914B CN 104536914 B CN104536914 B CN 104536914B CN 201410546092 A CN201410546092 A CN 201410546092A CN 104536914 B CN104536914 B CN 104536914B
- Authority
- CN
- China
- Prior art keywords
- mark
- instruction
- register
- processor
- architecture
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
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
本发明提供了一种基于寄存器访问标记的相关处理装置和方法,采用标记寄存器组或标记寄存器与处理器内体系结构寄存器组或寄存器一一对应;标记寄存器组或标记寄存器的数量设置取决于处理器内部划分的寄存器组或寄存器的数量;每个体系结构寄存器都对应一个标记寄存器。本发明大幅度降低了硬件设计的复杂度,简化了操作数前向数据通路的设计。
Description
技术领域
本发明属于处理器体系结构设计领域,涉及处理器流水线设计中对于指令相关问题的检测及解决。
背景技术
现代微处理器设计中,为了在执行时大幅提高指令的处理效率,都采用指令的流水线设计结构。指令的流水执行使得指令的读写操作并不在同一个流水段完成,因此程序执行时会经常遇到寄存器写后读相关的问题,这是典型的数据相关问题。数据相关在处理器设计中发生的频率非常高。一般的处理器设计中都通过硬件数据通路来解决数据相关,而随着流水线深度的增加,相关问题越来越多的依赖编译器来解决,给编译器的设计带来了很大的难度。
传统的数据相关的硬件处理方法是,比较译码当前指令的源寄存器索引Src0和Src1与流水线中已经流水的指令的目的索引Dest是否相等,以此来判定当前指令与流水线中正在执行的指令是否发生相关。这种检测方法虽然可行,但是比较繁琐复杂。如果流水线较长或者操作数较多,相关检测逻辑将占用很大的资源,也会带来很大的功耗问题。另外,由于指令集的增加,各类指令由于功能的差异,指令的执行周期被划分成不同的流水线长度,又导致了指令的写后写相关以及写写资源相关问题。传统的处理器设计中对于这两种相关的检测方法仅限于索引号的对比,而解决方法只能靠停顿流水线,不能有效提高流水线执行效率。
发明内容
为了克服现有技术的不足,本发明提供一种指令数据相关检测和解决相关的处理装置和方法,来解决传统方法中基于源、目的索引比较的方法导致相关检测电路复杂度高、结构扩展性差的问题;同时,通过硬件对指令相关的高效解决办法,降低处理器编译器设计的复杂度。
本发明解决其技术问题所采用的技术方案是:一种寄存器访问标记的指令相关处理装置,包括标记寄存器组或标记寄存器、标记表和标记分配单元。
所述标记寄存器组或标记寄存器与处理器内体系结构寄存器组或寄存器一一对应;标记寄存器组或标记寄存器的数量设置取决于处理器内部划分的寄存器组或寄存器的数量;每个体系结构寄存器都对应一个标记寄存器;
所述标记寄存器用于对处理器内的体系结构寄存器进行标记,当指令需要写回体系结构寄存器时,在目的寄存器对应的标记寄存器上写入一个标记;被标记的寄存器表示该寄存器的数值将要被执行单元内的指令修改;
所述标记表包含一个独立的标记和一组可分配标记;所述独立的标记的表明体系结构寄存器可用;该独立标记不会被标记分配单元分配给指令,该标记在指令执行结束写回寄存器时;所述标记表中可分配的标记用来表明体系结构寄存器不可用;
所述标记分配单元为需要写入体系结构寄存器的指令分配一个标记;标记分配单元从标记表中选择分配给指令的标记,标记分配单元为当前译码的指令分配的标记与流水线内其他指令分配的标记不相同,指令携带分配的标记进入流水线执行单元。
对所述指令相关处理装置的一种改进是针对多指令流多数据流(MIMD)或有多条指令流水线的处理器体系结构,包括诸如并行指令(一条指令编码中含有常规指令中多条指令的操作,典型指令如TI公司的C3X系列)、超长指令字(VLIW)体系结构等。所述装置针对多指令流或多流水线的改进为:
标记表中包含一个独立的标记和多组可分配标记;多组可分配标记与处理器内并发执行的流水线一一对应,可分配标记的组数量与处理器内并发执行的数量相等;标记分配单元每次分配多个标记,为当前各指令操作分配的标记不相同,而且分配的标记和进入执行流水线的所有指令操作分配的标记各不相同。
本发明还提供一个用于数据相关处理的方法,包括以下步骤:
步骤1、对当前进入译码阶段的指令或指令包,根据当前指令或指令包中源操作数寄存器对应的寄存器索引,从对应标记寄存器组中读取源操作数的标记状态;
步骤2、检测指令或指令包所有源操作数是否和当前流水线中流水的指令发生数据相关,如果当前指令或指令包的源操作数寄存器的结果全部可用,即源操作数寄存器的标记为寄存器可用,将指令或指令包中的部分或全部指令译码并送入执行流水线,转步骤4;否则,至少有一个源操作数标记为不可用,产生数据相关,转步骤3;
步骤3、返回指令执行结果数据,同时返回指令携带的标记;将指令携带的标记和源操作数寄存器的标记进行比较,如果两者标记相同,表示源操作数的数据可以通过前向通路数据获得;如果指令中发生相关的源操作数都可以通过前向通路解决,该指令的相关可以解除,转步骤4;否则,当前指令停顿,之前的指令在流水线中继续执行,转步骤2;
步骤4、为送入执行单元的当前指令分配一个标记,指令携带分配的标记进入执行单元流水段;如果是MIMD结构或多条并行流水线的处理器结构,标记分配单元为进入每个进入流水线的指令分配一个标记;
步骤5、对指令的目的寄存器进行标记,将步骤4中为指令分配的标记写入指令的目的寄存器对应的标记寄存器中;
步骤6、在指令执行结束,将结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
所述步骤6中,将各个流水段上执行结束的指令携带的标记和指令要写回的目的寄存器的标记进行比较,选择标记相同的流水段内的指令执行结果,作为写回目的寄存器的结果数据;其它所携带标记与目的寄存器的标记不相同的指令,其执行结果不被写回;结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
本发明的有益效果是:提出了一种对于通用寄存器组进行标记的方法,完全替代了传统处理器设计中,通过对比源索引和目的索引来判断寄存器读后写数据相关的方法,有效提高了执行效率。有以下几个优点:
1.相关检测逻辑不需要流水段内的每一条指令的信息,只需要在指令译码阶段读取源操作数的标记寄存器,进行简单的逻辑判断得到指令的相关情况。尤其对于具有流水线较深的结构,大幅度降低了硬件设计的复杂度。
2.简化了操作数前向数据通路的设计。不需要对写回指令的索引进行逐个比较,只要选择与源操作数标记匹配的指令的结果数据作为前向通路的数据。
3.对于多周期指令的处理器结构,在写回逻辑上增加少量处理逻辑,解决指令的写后写和写写资源相关。
4.对SIMD和MIMD结构,本发明提出的方法也能适用。这两种结构的指令或指令包具有多个目的寄存器,而且进入流水线的指令或指令包也包括多个源操作数,因此传统相关处理方法的逻辑复杂度也指数增长。而本发明的结构和方法仅仅关注源操作数寄存器的标记,即使指令操作数数量增加,导致的相关处理逻辑的增加也仅仅是一种线性的增加,只需要对增加的源操作数复制一份相关处理的逻辑即可。因而本发明的结构和方法有效降低了硬件实现的复杂度。
附图说明
图1是本发明相关处理的结构示意图;
图2是本发明的方法寄存器写回的结构示意图;
图3是本发明提供的方法流程图;
图4是含有多条执行流水线的处理器结构框图;
图5是优选的多流水结构的标记表设计示意图;
图6是本发明写回逻辑的改进结构示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明提出了一种基于寄存器访问标记的相关处理的装置和方法。该装置和方法通过对寄存器或寄存器组进行标记来实现对数据相关的检测和相关的解除。
本专利提出的内容应用于单指令流的处理器,即每个周期至多有一条指令进入流水线的处理器。但是,对本专利的内容进行改进后,也能适用于多指令流的处理器,该部分内容也包含在本专利的说明中。我们首先以单指令流处理器结构为基础,介绍本专利的发明内容。
所述的寄存器访问标记的指令相关处理装置包括以下功能部件:标记寄存器或标记寄存器组、标记表、标记分配单元。
所述标记寄存器组或标记寄存器与处理器内体系结构寄存器组或寄存器一一对应。标记寄存器组或标记寄存器的数量设置取决于处理器内部划分的寄存器组或寄存器的数量。每个体系结构寄存器都可以对应一个标记寄存器。
所述标记寄存器用于对处理器内的体系结构寄存器进行标记,当指令需要写回体系结构寄存器时,在目的寄存器对应的标记寄存器上写入一个标记。被标记的寄存器表示该寄存器的数值将要被执行单元内的指令修改。标记寄存器对用户是不可见的,仅用于内部处理相关的结构组成中。
所述标记表包含一个独立的标记和一组可分配标记。所述独立的标记的表明体系结构寄存器可用。也就是说,如果体系结构寄存器对应的标记寄存器内存储的是该独立标记,就表示没有当前流水线内执行的指令要对该体系结构寄存器写入数据;否则,就表示该体系结构寄存器将会被流水线内执行的指令修改。该独立标记不会被标记分配单元分配给指令。该标记在指令执行结束写回寄存器时,将标记写入对应寄存器的标记寄存器中,表明对应的寄存器不会被流水线内的指令修改,当前寄存器可用。所述标记表中可分配的标记用来表明体系结构寄存器不可用。即对应体系结构寄存器将会被已进入执行单元的指令的结果数据修改。
所述可分配的标记的最小个数根据执行阶段的流水段长度确定。专利中对具体的标记编码不作权利要求。
所述标记分配单元作用是为需要写入体系结构寄存器的指令分配一个标记。标记分配单元从标记表中选择分配给指令的标记。标记分配单元可选择的标记限于标记表中可分配的标记中。标记分配单元为当前译码的指令分配的标记必须与流水线内其他指令分配的标记不相同,以确保当流水线中有不同的指令对同一个目的寄存器写入数据时,只有指令携带的标记与标记寄存器的内容相同的指令才能将执行结果写入对应的目的寄存器。指令携带分配的标记进入流水线执行单元。专利中对标记分配策略不作权利要求。
对于单指令单数据流(SISD)的处理器结构,指令的目的寄存器至少有一个,如寄存器传输类指令目的寄存器只有一个、算术逻辑指令目的寄存器有通用寄存器和状态寄存器,指令经过译码后,要修改的标记寄存器至少有一个。不论目的寄存器的个数,标记分配单元为这样的指令分配一个标记。
对于单指令流多数据流(SIMD)的处理器结构,根据并行度的不同,处理器的指令执行结果要写入的目的寄存器有多个,那么指令经过译码后,要进行标记的寄存器为一组,每组根据并行度不同包含包括多个至少一个寄存器,但是对这一组寄存器对应的标记寄存器写入的标记相同,即标记分配单元为指令分配的唯一标记。
对所述指令相关处理装置的一种改进是针对多指令流多数据流(MIMD)或有多条指令流水线的处理器体系结构。包括诸如并行指令(一条指令编码中含有常规指令中多条指令的操作,典型指令如TI公司的C3X系列)、超长指令字(VLIW)体系结构等。所述装置针对多指令流或多流水线的改进为:
所述标记表的改进为:标记表中包含一个独立的标记和多组可分配标记。多组可分配标记与处理器内并发执行的流水线一一对应,可分配标记的组数量与处理器内并发执行的数量相等。组内标记的最小个数由该组对应的流水线在执行阶段的流水段级数确定。
所述标记分配单元的改进为:根据指令或指令包中等效的常规指令操作,为每个操作分配一个标记。标记分配单元根据指令或指令操作将要进入的执行流水线,从对应的标记组中选择一个标记,分配给进入该流水线的指令或指令操作。改进后的标记分配单元每次能够分配多个标记,并且为当前各指令操作分配的标记不相同,而且分配的标记和进入执行流水线的所有指令操作分配的标记各不相同。
为实现本发明的目的,还提供一个用于数据相关处理的方法,其特征在于以下步骤:
步骤1、读源操作数的标记。
对当前进入译码阶段的指令(或指令包),根据当前指令(或指令包)中源操作数寄存器对应的寄存器索引,从对应标记寄存器组中读取源操作数的标记状态。转步骤2。
步骤2、基于标记的相关检测。
相关检测逻辑检测指令(或指令包)所有源操作数是否和当前流水线中流水的指令发生数据相关。如果当前指令(或指令包)的源操作数寄存器的结果全部可用,即源操作数寄存器的标记为寄存器可用,将指令(或指令包中的部分或全部指令)译码并送入执行流水线,转步骤4;否则,至少有一个源操作数标记为不可用,产生数据相关,转步骤3,判断是否可以通过前向通路解决相关。
步骤3、基于标记一致性的前向数据通路使能判断。
指令执行结束后,返回执行结果数据,同时返回指令携带的标记。将指令携带的标记和源操作数寄存器的标记进行比较,如果两者标记相同,表示源操作数的数据可以通过前向通路数据获得。如果指令中发生相关的源操作数都可以通过前向通路解决,该指令的相关可以解除,转步骤4。否则,当前指令停顿,之前的指令在流水线中继续执行,转步骤2。随着流水线的执行,停顿的指令的数据相关逐渐减少。
对指令包而言,步骤2和步骤3分别独立地检测指令包中各指令的源操作数相关性和前向通路使能状态。由于指令包中的各指令独立处理,指令包中的指令可能部分或全部一旦具备送入步骤4处理的条件,就进入后续处理步骤。
步骤4、标记产生和分配。
由“标记分配单元”为送入执行单元的当前指令分配一个标记,指令携带分配的标记进入执行单元流水段。如果是MIMD结构或多条并行流水线的处理器结构,标记分配单元为进入每个进入流水线的指令分配一个标记。转步骤5。
步骤5、对寄存器或寄存器组标记。
该步骤对指令的目的寄存器进行标记。将步骤4中为指令分配的标记写入指令的目的寄存器对应的标记寄存器中。转步骤6。
步骤6、写回数据并标记清除。
在指令执行结束,将结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。标记被清除掉后,意味着该标记已被回收,可以作为可用标记为后续指令分配。
所述相关处理方法的一个改进是,对步骤6的写回数据方法改进,可以用作对写后写相关和写写资源相关的解决办法。写后写相关和写写资源相关在指令具有不同的流水线长度的情况下,多个流水段对同一目的寄存器发生写回操作。
所述对步骤6中写回数据方法的改进为:
将各个流水段上执行结束的指令携带的标记和指令要写回的目的寄存器的标记进行比较,选择标记相同的流水段内的指令执行结果,作为写回目的寄存器的结果数据。其它所携带标记与目的寄存器的标记不相同的指令,其执行结果不被写回。结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
为具体说明本发明的优选实施用例,提供一种先以单指令流单数据流的处理器体系结构说明专利的方法。
图1示出了使用专利的相关处理结构的连接关系。该结构包括:一个标记表、标记分配逻辑、标记寄存器组、操作数相关判断逻辑和前向通路使能逻辑、前向数据选择通路开关。其他处理器实现的硬件:寄存器组、指令执行单元、指令寄存器、译码单元、PC指针寄存器。
所述标记寄存器用来对寄存器的状态进行标记。标记寄存器与处理器体系结构寄存器一一对应。假设处理器体系结构寄存器组中有32个通用寄存器URi(0≤i≤31)用于指令的操作数寄存器,那么在结构中有32个标记寄存器TAGi(0≤i≤31)与URi一一对应。
标记寄存器TAGi设置的目的是用来标记当前时钟周期内URi是否可用以及被流水线中指令改写的状态。该状态是由存储在对应TAGi中的标记来表明的,标记由标记分配单元从标记表中分配标记,并将标记写入标记寄存器中。
图1中包括了一个标记表。在本发明的方法中,仅要求标记表中标记的最小个数,标记的编码并不在本发明具体要求范围内。结构设计人员可以在处理器实现时,可以按照最简单的方式安排标记的编码。按图中所示,标记表中有一个独立的状态,表明当前寄存器可用,不会被当前流水线中的指令写回数据。在本实施例中,将标记‘0’分配来表示寄存器可用的状态。标记表中的其余标记表明寄存器被哪条指令修改,这些标记的最小个数由执行和写回流水段的长度N决定。例如,执行和写回的流水段共有5级,那么标记表中的标记的最小个数为6项,包括1个独立标记和5个分配给执行和写回5个流水段内指令的标记。相应地,标记编码的最小比特位宽为:
所述相关处理结构中的标记分配单元用于将标记表中的可分配标记分配给可执行的指令。标记分配的策略有多种,本发明的不对分配策略做权利要求。图1中表示了一种轮转方法分配的策略,标记按照先后顺序依次分配给可执行的指令。指令执行结束后,标记被回收到标记表继续分配。
需要说明的是,发明中的标记表并不要求在处理器实现时必须在硬件上有一个表项设计。设计人员可以实现一个独立的标记表ROM和一个标记分配逻辑单元;也可将标记表嵌入标记分配单元中,将两者合在一起。
当指令的相关解除后,指令携带分配的标记进入执行单元。指令在流水线中流动执行时,标记随指令流动。
操作数相关判断逻辑和前向使能逻辑用来判断指令操作数是否发生相关,以及该相关能否通过前向数据通路解决。相关判断的方法在后续指令相关处理方法流程中详细介绍。
图2所示表示了写回逻辑的设计结构。在本发明方法的基础下,写回逻辑结构包括:标记寄存器清除逻辑、体系结构寄存器写逻辑和标记寄存器。
如专利方法所述,由于实施实例中以SISD结构处理器为背景,在处理器流水线中每个时钟节拍最多只有一条指令写回。指令在将结果数据写回目的寄存器时,同步将目的寄存器对应的标记寄存器上的标记清除掉。清除的方法是将标记表中表示寄存器可用的标记状态写入标记寄存器。
结合下列程序示例说明本专利所述的相关处理方法的具体流程。Rx为通用寄存器,对应的标记寄存器为TAGx。
在上述程序中,LD指令将常数写入通用寄存器Rx中,MULT为乘法操作指令,ADD为加法操作指令。上述程序片段中,存在LD和MULT之间的数据写后读相关(RAW),MULT和ADD指令间的写后读相关。
假设执行和写回的流水为5级,那么标记表中至少有6个标记。在此,标记t0表示寄存器可用,没有流水线中的指令将数据写入;标记t1~t5用来分配给执行的指令。标记分配按照轮转的策略。
在指令执行过程中,标记t1分配给第一条LD指令,标记t2分配给第二条LD指令。
考虑第2条LD指令处于写回阶段,MULT指令由于RAW相关仍处于译码阶段时,处理器对相关的处理过程。此时,第一条LD指令已经执行完成,R0对应的TAG0内的标记为t0。第二条LD指令的目的寄存器R1对应的TAG1保存的标记为t2。
按照图3所述方法对MULT指令的相关处理流程为:
Setp-1、读MULT指令的源操作数的标记。根据MULT指令的通用寄存器索引读取对应的源操作数寄存器的标记TAG0和TAG1。
Step-2、相关检测。指令片段中的第一条LD指令已执行完成流出流水线,TAG0的标记为t0,表示可用;TAG的标记为t2,寄存器R1将要由携带标记t2的LD指令写入数据,当前拍不可用。指令MULT和LD指令发生相关,转Step-3判断前向通路是否可用;否则,Step-4;
Step-3、前向数据通路。判断写回阶段的LD指令携带的标记是否与发生相关的源操作数标记相同,如果相同,前向通路有效,指令相关解除,转Step-4;否则,转Step-2。
Step-4、标记产生和分配。MULT指令解除相关后,将标记t3分配给MULT指令。转Step-5。
Step-5、对寄存器或寄存器组标记。将给MULT指令分配的标记t3写入指令的目的寄存器R2对应的TAG2中。转Step-6。
Step-6、标记清除。MULT执行结束,结果数据写入R2的同时,将TAG2的标记清除。具体操作时将标记t0写入TAG2中。处理流程结束。
以上完成了对MULT指令的相关处理。对于MULT和ADD指令的RAW相关处理方法相同。
从上述相关处理流程可以看出,本发明提供的相关处理方法仅仅涉及对标记寄存器的访问和标记的判断,完全不涉及执行和写回阶段流水线上的指令信息。这样有利于将执行和写回段流水按照系统的性能需求进行更细致的流水线划分,而不用考虑这样的划分是否会对前边的流水线的功能或设计复杂度产生的影响。对于诸如DSP或专用指令集中支持复杂操作的指令,可以将执行单元划分为更细的流水线,提高指令的并行性。更为重要的是,避免了传统相关处理方法中,对源索引和目的索引的逐级比较判断,仅使用标记的简单判断就能判定指令是否发生相关。
所述方法对于SIMD结构的处理器的应用实施方式为:
对于SIMD结构处理器,根据不同的并行度,源操作数的读取一般是按组读。例如对于带SIMD特征的指令ADDI(2)R0,R2R4,该指令的并行度为2,该指令的两个源操作数分别为两组寄存器{R0,R1}和{R2,R3}。对于该指令的相关检测,两个源操作数组内至少有一个寄存器的标记为不可用,那么该指令就与流水线中的指令发生相关。
同样地,对于SIMD指令的目的寄存器也是按组写入数据。如ADDI(2)指令的目的寄存器为{R4,R5}。按照所述的处理方法,对目的寄存器的标记是对目的寄存器组对应的所有标记寄存器进行标记。但是需要注意的是,对于SIMD的指令分配的标记只需要一个,相应的使用这个标记对目的寄存器对应的所有标记寄存器进行标记。这是因为,SIMD指令虽然对应一组多个目的寄存器,但是指令执行结束后,同时将结果数据提交写回这一组寄存器,可以看做SIMD结构中可以并发执行的流水线只有一条,即使流水线中有多个计算的数据流。
由此可见,标记分配单元每次分配的标记的数量与处理器内可同时并发执行的流水线数量有关。
对所述指令相关处理方法的另一种改进是针对多指令流多数据流(MIMD)或有多条指令流水线的处理器体系结构。对于静态流水线处理器,如大多数DSP或多媒体加速处理器的实现方式,多条执行流水线的实现方式有两种:
①、并行指令:一条指令编码中含有常规指令中多条指令的操作。典型指令如TI公司的C3X系列的并行指令。并行指令与常规指令同样采用32位编码,但是可以实现算术运算、访存或寄存器传输的两路操作并行执行。
②、超长指令字(VLIW)体系结构。典型指令结构有ADI公司的TS201处理器、TI公司的C6000系列处理器和CELL处理器器的协处理器SPE。
图4表示了一个含有两条执行流水线的结构。并行指令或指令包译码后,被分发到相应的流水线上执行。每条流水线分别将执行结果数据写回体系结构寄存器中的目的寄存器。流水线1的长度为4,流水线2的长度为7。
图5中描述了对多流水线结构的标记表。可见,表中有一个独立的编码0000,两条流水线分别有一组编码,且两组编码没有重复。以ADD||MPY并行指令为例,ADD在流水线1上执行,MPY指令在流水线2上执行,该并行指令送入执行单元后,将标记0001分配给ADD指令操作,将1001分配给MPY指令操作。前向通路逻辑只需要通过标记来判断前向数据通路是否就绪,而不用关心两路并行结果是从哪一条流水线上提交的。
图6表示了对不同长度的指令流水线,指令写回结构的改进。相比图4的写回结构,指令在写回之前要将指令携带的标记和标记寄存器组中目的寄存器的标记进行比较,选择标记一致的指令将结果写回,产生体系结构寄存器的写控制;其余不一致的指令的结果不写回寄存器。
如上述指令片段,MULT、ADD、LD指令在同一拍执行完毕,要将结果写回。其中,给MULT指令分配的标记t3,MULT指令分配的标记t4,MULT指令分配的标记t5。按照专利所述处理方法,R2寄存器的标记寄存器TAG2在当前拍存储的标记应该是t5。最终,3条指令中只有LD指令携带的标记与目的寄存器的标记相同,因此,写入R2寄存器的结果是LD指令执行的结果,MULT和ADD指令的结果不会写入。这种处理方法和指令执行的逻辑顺序也是一致的。
Claims (4)
1.一种基于寄存器访问标记的相关处理装置,包括标记寄存器组或标记寄存器、标记表和标记分配单元,其特征在于:
所述标记寄存器组与处理器内体系结构寄存器组一一对应,所述标记寄存器与处理器内体系结构寄存器一一对应;
标记寄存器组数量设置取决于处理器内部划分的寄存器组的数量,标记寄存器的数量设置取决于处理器内部划分的寄存器的数量;每个体系结构寄存器都对应一个标记寄存器;
所述标记寄存器用于对处理器内的体系结构寄存器进行标记,当指令需要写回体系结构寄存器时,在目的寄存器对应的标记寄存器上写入一个标记;被标记的体系结构寄存器表示该体系结构寄存器的数值将要被执行单元内的指令修改;
所述标记表包含一个独立标记和一组可分配标记;所述独立标记的表明体系结构寄存器可用;该独立标记不会被标记分配单元分配给指令,该独立标记在指令执行结束时写回标记寄存器;所述标记表中可分配的标记用来表明体系结构寄存器不可用;
所述标记分配单元为需要写入体系结构寄存器的指令分配一个标记;标记分配单元从标记表中选择分配给指令的标记,标记分配单元为当前译码的指令分配的标记与流水线内其他指令分配的标记不相同,指令携带分配的标记进入流水线执行单元。
2.根据权利要求1所述的基于寄存器访问标记的相关处理装置,其特征在于:所述的标记表中包含一个独立标记和多组可分配标记;多组可分配标记与处理器内并发执行的流水线一一对应,可分配标记的组数量与处理器内并发执行的数量相等;标记分配单元每次分配多个标记,为当前各指令操作分配的标记不相同,而且分配的标记和进入执行流水线的所有指令操作分配的标记各不相同。
3.一种利用权利要求1所述装置基于寄存器访问标记的相关处理方法,其特征在于包括下述步骤:
步骤1、对当前进入译码阶段的指令或指令包,根据当前指令或指令包中源操作数寄存器对应的寄存器索引,从对应标记寄存器组中读取源操作数的标记状态;
步骤2、检测指令或指令包所有源操作数是否和当前流水线中流水的指令发生数据相关,如果当前指令或指令包的源操作数寄存器全部可用,即源操作数寄存器的标记为寄存器可用,将指令或指令包中的部分或全部指令译码一并送入执行流水线,转步骤4;否则,至少有一个源操作数标记为不可用,产生数据相关,转步骤3;
步骤3、返回指令执行结果数据,同时返回指令携带的标记;将指令携带的标记和源操作数寄存器的标记进行比较,如果两者标记相同,表示源操作数的数据可以通过前向通路数据获得;如果指令中发生相关的源操作数都可以通过前向通路解决,该指令的相关可以解除,转步骤4;否则,当前指令停顿,之前的指令在流水线中继续执行,转步骤2;
步骤4、为送入执行单元的当前指令分配一个标记,指令携带分配的标记进入执行单元流水段;如果是MIMD结构或多条并行流水线的处理器结构,标记分配单元为进入每个进入流水线的指令分配一个标记;
步骤5、对指令的目的寄存器进行标记,将步骤4中为指令分配的标记写入指令的目的寄存器对应的标记寄存器中;
步骤6、在指令执行结束,将结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
4.根据权利要求3所述的基于寄存器访问标记的相关处理方法,其特征在于:所述步骤6中,将各个流水段上执行结束的指令携带的标记和指令要写回的目的寄存器的标记进行比较,选择标记相同的流水段内的指令执行结果,作为写回目的寄存器的结果数据;其它所携带标记与目的寄存器的标记不相同的指令,其执行结果不被写回;结果数据写入目的寄存器后,将目的寄存器对应的标记寄存器上的标记清除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546092.3A CN104536914B (zh) | 2014-10-15 | 2014-10-15 | 基于寄存器访问标记的相关处理装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546092.3A CN104536914B (zh) | 2014-10-15 | 2014-10-15 | 基于寄存器访问标记的相关处理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104536914A CN104536914A (zh) | 2015-04-22 |
CN104536914B true CN104536914B (zh) | 2017-08-11 |
Family
ID=52852444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410546092.3A Active CN104536914B (zh) | 2014-10-15 | 2014-10-15 | 基于寄存器访问标记的相关处理装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104536914B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915183B (zh) * | 2015-06-23 | 2018-10-16 | 北京玉华骢科技股份有限公司 | 一种多发射流水线的前馈探测电路 |
CN105354117B (zh) * | 2015-10-26 | 2018-10-19 | 清华大学 | 超标量处理器中指令相关性检测的方法 |
CN110825437B (zh) * | 2018-08-10 | 2022-04-29 | 昆仑芯(北京)科技有限公司 | 用于处理数据的方法和装置 |
CN110750752B (zh) * | 2019-09-10 | 2023-12-05 | 许昌许继软件技术有限公司 | 一种模拟量数据的插值方法及装置 |
CN111124492B (zh) * | 2019-12-16 | 2022-09-20 | 成都海光微电子技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534462A (zh) * | 2003-03-29 | 2004-10-06 | 汤姆森许可贸易公司 | 流水线处理一系列处理指令的方法和设备 |
US7434032B1 (en) * | 2005-12-13 | 2008-10-07 | Nvidia Corporation | Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators |
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
CN101593096A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
CN101916180A (zh) * | 2010-08-11 | 2010-12-15 | 中国科学院计算技术研究所 | Risc处理器中执行寄存器类型指令的方法和其系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005084721A (ja) * | 2003-09-04 | 2005-03-31 | Renesas Technology Corp | マイクロコンピュータ |
-
2014
- 2014-10-15 CN CN201410546092.3A patent/CN104536914B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534462A (zh) * | 2003-03-29 | 2004-10-06 | 汤姆森许可贸易公司 | 流水线处理一系列处理指令的方法和设备 |
US7434032B1 (en) * | 2005-12-13 | 2008-10-07 | Nvidia Corporation | Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators |
CN101593096A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
CN101916180A (zh) * | 2010-08-11 | 2010-12-15 | 中国科学院计算技术研究所 | Risc处理器中执行寄存器类型指令的方法和其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104536914A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104536914B (zh) | 基于寄存器访问标记的相关处理装置和方法 | |
CN108027769B (zh) | 使用寄存器访问指令发起指令块执行 | |
CN105706050B (zh) | 能量高效的多模式指令发布 | |
EP3350686B1 (en) | Debug support for block-based processor | |
CN106843810B (zh) | 跟踪指令的控制流程的设备、方法以及机器可读介质 | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
US8904153B2 (en) | Vector loads with multiple vector elements from a same cache line in a scattered load operation | |
WO2017189464A1 (en) | Parallel instruction scheduler for block isa processor | |
US20170083320A1 (en) | Predicated read instructions | |
US10198263B2 (en) | Write nullification | |
EP3834083B1 (en) | Commit logic and precise exceptions in explicit dataflow graph execution architectures | |
CN108351786A (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
KR20150112774A (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
CN104040491A (zh) | 微处理器加速的代码优化器 | |
CN109643233A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
US10061584B2 (en) | Store nullification in the target field | |
CN104182204B (zh) | 融合if‑then指令的微处理器 | |
CN109478140A (zh) | 基于块的处理器中的加载-存储顺序 | |
US11726912B2 (en) | Coupling wide memory interface to wide write back paths | |
CN102402418B (zh) | 处理器 | |
CN107357552A (zh) | 基于bwdsp芯片实现浮点复数向量求和的优化方法 | |
WO2013101114A1 (en) | Later stage read port reduction | |
CN104951283B (zh) | 一种risc处理器的浮点处理单元集成电路及方法 |
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 |