CN103207776B - 一种gene乱序发射处理器内核 - Google Patents
一种gene乱序发射处理器内核 Download PDFInfo
- Publication number
- CN103207776B CN103207776B CN201310076580.8A CN201310076580A CN103207776B CN 103207776 B CN103207776 B CN 103207776B CN 201310076580 A CN201310076580 A CN 201310076580A CN 103207776 B CN103207776 B CN 103207776B
- Authority
- CN
- China
- Prior art keywords
- instruction
- write
- module
- control module
- register
- 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种gene乱序发射处理器内核。本发明包括译码控制模块和写回控制模块,对应于处理器流水线当中的译码级和写回级。所述的译码控制模块包含:指令流控制模块、指令发射控制模块、数据旁路控制模块、寄存器访问模块、写回允许模块、指令发送模块。所述的写回控制模块包括:写回结果寄存模块、写回输出模块。本发明使用集总控制的译码控制模块和写回控制模块,实现了处理器指令的高效乱序发射,最大限度地开发了处理器的指令级并行度,避免了寄存器重命名技术中的数目庞大的物理寄存器,节省了保留站技术当中大量的硬件资源的消耗。
Description
技术领域
本发明涉及一种处理器内核,尤其是一种gene乱序发射处理器内核。
背景技术
CDC6600中采用的记分牌机制在满足数据相关的情况下允许指令乱序执行。处理器中的每条指令都要通过记分牌,并在这里检查数据相关性,记分牌通过检测其中每条指令的执行情况决定什么时候某条指令可以读操作数和执行。记分牌中冲突已经解除的指令可以乱序发射,并进入执行级。同时,记分牌还控制指令写回目的寄存器的操作,处理器当中指令的所有冲突检测与解除工作都依赖于记分牌。每条指令经过四个阶段:
发射:如果指令所使用的功能部件正在空闲,并且没有与其它正在活动的指令抢用同一目的寄存器,记分牌发射该指令,并记分牌中该指令的状态,以用于其它待发射指令的冲突检测。通过保证发射指令不与正在活动的指令抢用同一目的寄存器,解决了写写冲突。因此,在发射阶段,结构冲突和数据上的写写冲突被解决。
读操作数:记分牌监视源操作数的可用情况,如果没有已经发射的活动指令要写该操作数或者存放该操作数的寄存器此刻正在被某个功能部件写入,则操作数可用,可以执行读操作数的工作。通过这种方法,解决了写读冲突。
执行:指操作数进入功能部件进行执行。
写回:一旦指令执行完成,就检测是否有读写冲突,如果没有读写冲突则指令写回。
记分牌在处理器当中起到了检测指令间的相关性,当发现相关性的时候采用了等待的方式,这很大程度上限制了指令间的并行度。实际上,处理器指令之间的读写相关和写写相关是由于寄存器别名造成的,不是数据流的限制,采用优化的体系结构,可以消除这些相关,使得指令的并行度只受写读相关的限制,达到数据流极限。寄存器重命名、保留站和重定序缓存等技术解决了这个问题,但寄存器重命名技术需要大量的物理寄存器;对于保留站技术,分布式保留站需要为每个功能单元建立保留站队列,保留站的数量太少,则会因保留站不够用造成停顿,太多则会造成大量的硬件上的浪费;重定序缓存技术则除了需要大量的寄存器来保存指令状态外还需要相当复杂的控制机制。这些技术对于最大限度开发并行度,设计高性能的处理器具有很大作用,但对于多核设计当中的单个核心的设计显得过于复杂,其硬件开销也是难以承受的。因此,最好能有一种性能和开销的折衷,在硬件复杂度不过多增加的情况下最大限度地开发并行度。
发明内容
本发明的目的是提供一种指令最大限度开发指令并行度,而硬件开销和复杂度又在可接受的范围内的一种处理器乱序发射技术,其性能比记分牌技术好,而硬件开销和复杂性则比寄存器重命名、保留站和重定序缓存小。
本发明提出了一种新的乱序发射机制,适用于采用流水线技术的多核处理器中的单个核心的设计,处理中指令乱序发射,在条件允许的情况下乱序写回,最大限度地提高了指令的并行度。
本发明提出的结构包含以下两个模块:译码控制模块和写回控制模块,对应于处理器流水线当中的译码级和写回级。
所述的译码控制模块包含:指令流控制模块、指令发射控制模块、数据旁路控制模块、寄存器访问模块、写回允许模块、指令发送模块。
所述的指令流控制模块负责接收要发射的M指令,记录指令信息、检测指令的执行情况,以供其它模块使用。根据发射允许信号和当前M条指令的发射情况来决定哪条指令可以发射,并将该信号送出,供其它模块使用。根据写回控制模块送来的写回完成信号,删除已经写回完成的指令,读入新的指令。所述的M是大于1的自然数。
所述的指令发射模块根据指令流控制模块当中的指令信息和数据旁路完成信号,决定M条指令当中哪条指令的冲突已经解决,并产生发射允许的信号,供其它模块使用。
所述的数据旁路控制模块接收写回控制模块送回的旁路数据,重定向到需要该数据的指令,然后产生指示该数据旁路完成的信号,以供其它模块使用。
所述的寄存器访问模块根据指令流控制模块的指令信息进行寄存器的访问,并将访问的结果送出,供其它模块使用。
所述的写回允许模块根据指令流控制模块当中的信息,来决定每条指令要更新的寄存器是否已经读取完成,当寄存器读取完成之后,送出写回允许信号,表明该条指令的数据可以更新寄存器,并将该信号送出,供其它模块使用。
所述的指令发送模块根据哪条指令可以发射的信息从M条指令中选出要发射的指令,从寄存器文件访存结果和旁路回来的数据当中选择出该条指令的最新操作数,并将要发射的指令和指令的最新操作数送出。
所述的写回控制模块包括:写回结果寄存模块、写回输出模块。
所述的写回结果寄存模块负责接收要写回的M条指令,并将要写回的结果、要写回的目的寄存器等信息记录下来,根据指令流控制模块送来的写回允许信号来决定哪条指令可以写回,产生写回完成信号,供其它模块使用。
所述的写回输出模块根据写回结果寄存模块当中的信息将当前要写回的结果写回到寄存器当中,完成数据写回。
本发明使用集总控制的译码控制模块和写回控制模块,实现了处理器指令的高效乱序发射,最大限度地开发了处理器的指令级并行度,避免了寄存器重命名技术中的数目庞大的物理寄存器,节省了保留站技术当中大量的硬件资源的消耗,同时,在控制的复杂度上又比重定序缓存简单,是处理器乱序发射控制结构高效经济的实现,非常适合用于多核处理器当中单个核心的设计。
附图说明
图1是本发明的系统结构图;
图2 是译码控制模块的结构框图;
图3是指令流控制模块的结构图;
图4 是指令发送模块的结构图;
图5是写回控制模块的结构框图;
图6是写回结果寄存模块的结构图。
具体实施方式
下面结合附图对本发明作进一步描述。
图1表明了本发明的结构图,结构中包含两个模块:译码控制模块和写回控制模块,译码控制模块相当于流水线当中的译码级,指令之间的冲突在这里得到检测和化解;写回控制模块负责指令执行结果的写回,相当于流水线当中的写回级。在两个模块之间,译码控制模块送给写回控制模块写回允许信号,控制指令执行结果的写回;而写回控制模块则将写回完成信号送给译码控制模块,控制译码控制模块当中指令信息的更新。
译码控制模块的结构图如图2所示,其中指令流控制模块接收流入指令,它是一个类似于移位寄存器的结构,记录并存储了流入指令的信息,并将指令信息提供给指令发射控制模块、数据旁路模块、寄存器访问模块、指令发送模块和写回允许模块,它要根据指令发射控制模块送来的发射允许信号、写回控制模块送来的写回完成信号完成指令条目的更新,当一条指令发射完成之后,当前的指令条目就被删除,以便流入新的指令。
数据旁路模块接收传来的旁路数据,并根据来自指令流控制模块的指令信息产生数据旁路完成信号和旁路数据有效信号,数据旁路完成信号送到指令发射控制模块,作为指令发射的条件之一,旁路数据有效信号则送到指令发送模块,用于决定使用旁路数据还是寄存器读出数据作为真正的操作数。
指令发射控制模块根据来自指令控制模块的指令信息、来自数据旁路模块的数据旁路信息判断指令间的冲突,产生指令发射允许信号。
寄存器访问模块根据指令信息进行寄存器访问,读出相应寄存器当中的值,作为操作数的备选值之一。
指令发送模块根据来自指令流控制寄存器的要发射指令的信息、来自寄存器访问模块的寄存器访问结果和外部的旁路数据,经过判断产生最终发射的指令的信息和操作数。
指令流控制模块的结构如图3所示(以M=4为例),指令循环编号为区分每条指令的唯一编号,其值为0、1、2、3,每当有一条指令写回完成,对应的指令编号就回收,并赋值给新流入的指令。例如假设当前指令流控制模块当中的四条指令从前往后的编号分别为0、1、2、3,且编号为2的指令写回完成,则编号2空闲,当新的指令流入的时候,其编号就被赋值为2,则指令流控制模块当中的四条指令从前往后分别为0、1、3、2;如果接着编号为1的指令写回完成,则编号1空闲,当有新的指令流入的时候四条指令从前往后的编号变为0、3、2、1。指令编号随着指令在流水线当中流动,用于标识处于流水线当中其它级的指令在指令流控制模块当中对应的位置。
发射完成标志用于指示当前的指令是否已经发射出去,它作为指令发射的控制条件之一,用来防止已经发射过的指令再次发射。
指令最初以移位的方式进入模块,同样,指令在模块当中的移动也按照移位的方式进行,当有一条指令写回完成,即指令写回控制模块送来的对应的写回完成信号有效时,其对应的指令信息从模块当中删除,该条指令后面的每条指令的指令信息往前移动一个条目,被删除指令信息留下的空白被后面的指令填补,最后面空出来的条目用于接收新流入的指令。
同时,模块根据发射允许信号和指令信息当的发射完成标志选择下一条要发射的指令。其选择规则是:只有当本条指令之前的所有指令都发射完成且本条指令的发射允许信号有效的时候才能发射该条指令。
指令发射模块则根据指令流控制模块中的指令信息和数据旁路模块送来的数据完成信号来确定那条指令可以发射,其判断条件如下:
1.该条指令要使用的功能单元空闲。
2.该条指令之前的各条指令要写回的数据都不是该条指令要读取的数据或者虽然该条指令之前的指令要写回的数据当中有该条指令要读取的数据,但这些该数据已经旁路完成。检测该条指令之前的各条指令要写回的数据是不是该条指令要读取的数据时只需要比较该条指令之前的所有指令的目的寄存器是否跟该指令的源寄存器相同,当该条指令的源寄存器与它前面的所有指令的目的寄存器不相同的时候,该条件满足。而数据旁路完成则需要根据数据旁路模块送来的数据旁路完成信号是否有效来判断。
3.当前发射的指令或者之前的指令都不是存储器访问指令。
添加第三条的原因是该模块中数据之间的冲突是根据寄存器是否相同来实现的,不能够检测存储器访问的数据冲突,检测存储器访问的数据冲突需要寄存器当中的值读出之后才能够进行。为了避免存储器访问指令之间以及存储器访问指令和其它指令之间的冲突,需要添加第三条判断条件。
寄存器访问模块则根据指令流控制模块的指令信息进行寄存器访问,并把访问的结果送到指令发送模块,作为最终输出的操作数的备选值之一。
数据旁路模块则根据指令控制模块当中的指令信息将旁路数据重定向到指令流控制模块当中的某条指令,产生该指令数据旁路完成信号和旁路有效信号数据,分别送给指令发射控制模块和指令发送模块。旁路数据的来源有:功能单元执行结束产生的数据和写回控制模块中等待写回的数据,旁路控制模块根据指令流控制模块送来的指令信息当中的源寄存器、目的寄存器和产生该旁路数据指令的循环编号来决定需要将旁路数据重定向给哪一条指令,进而产生相应的数据旁路完成信号和旁路数据有效信号。
写回允许模块根据指令流控制模块当中的指令信息产生写回允许信号,指示指令流控制模块的指令当中,哪条指令是可以写回的,并将该信号送给写回控制模块。写回允许模块检测了指令当中的读写冲突和写写冲突,其检测也是通过比较指令之间的源寄存器和目的寄存器是否相同来实现。写回允许信号有效的判断条件为:该指令的目的寄存器跟它前面的任何一条指令的目的寄存器和源寄存器都不相同或者虽然其目的寄存器跟它前面某条指令的源寄存器相同,但该指令已经发射。
指令发送模块的结构如图4所示,指令发送模块根据旁路数据有效信号从寄存器访问结果和旁路数据当中选择一个作为发射指令的最终操作数,并输出。指令流控制模块发出的发射指令的指令信息被送到指令发送模块,也由指令发送模块送出。
写回控制模块的结构图如图5所示:
写回指令的指令信息和写回允许信号被送到写回结果寄存模块,写回结果寄存模块将指令信息寄存,以供写回结果输出模块使用,并根据写回允许信号来判断当前哪条指令可以写回。写回指令的写回信息包括指令循环编号、指令的目的寄存器、指令要写回的值,写回结果寄存模块的结构如图6所示。
指令的写回有效信号来表明当前条目中的内容是否需要写回,如果当前条目中的内容已经写回到寄存器或者不是需要写回寄存器的内容,则该有效信号无效;写回指令的信息包括当前需要写回的指令的目的地址、指令的写回值等。写回结果寄存模块中的各个条目跟译码控制模块当中的各个条目相对应,其对应通过使得指令的循环编号相等来实现,每个条目是否可以写回按照下面的条件来判断:
1.指令写回有效信号为高。
2.对应的指令写回允许信号为高。
3.该指令前面的所有指令均不满足写回条件。
当满足上面三个条件的时候,对应的条目的内容被送到写回结果输出模块,写回到寄存器当中,同时,写回结果寄存模块产生写回完成信号。
在整个系统当中,译码控制模块是指令发射的控制中心,而写回控制模块是指令写回的控制中心,整个乱序发射内核被分成这两个模块来实现,两个模块相互协作来完成指令的乱序执行。
以上所述仅为本发明的具体实施方式,并不用以限制本发明,任何本发明所属领域内的技术人员,在本发明揭露的技术范围内,所作的修改或替换,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种gene乱序发射处理器内核,包括译码控制模块和写回控制模块,对应于处理器流水线当中的译码级和写回级,其特征在于:
所述的译码控制模块包含:指令流控制模块、指令发射控制模块、数据旁路控制模块、寄存器访问模块、写回允许模块和指令发送模块;
所述的指令流控制模块负责接收要发射的M指令,记录指令信息、检测指令的执行情况,以供其它模块使用;根据发射允许信号和当前M条指令的发射情况来决定哪条指令可以发射,并将该信号送出,供其它模块使用;根据写回控制模块送来的写回完成信号,删除已经写回完成的指令,读入新的指令;所述的M是大于1的自然数;
所述的指令发射控制模块根据指令流控制模块当中的指令信息和数据旁路完成信号,决定M条指令当中哪条指令的冲突已经解决,并产生发射允许的信号,供其它模块使用;
所述的数据旁路控制模块接收写回控制模块送回的旁路数据,重定向到需要该数据的指令,然后产生指示该数据旁路完成的信号,以供其它模块使用;
所述的寄存器访问模块根据指令流控制模块的指令信息进行寄存器的访问,并将访问的结果送出,供其它模块使用;
所述的写回允许模块根据指令流控制模块当中的信息,来决定每条指令要更新的寄存器是否已经读取完成,当寄存器读取完成之后,送出写回允许信号,表明该条指令的数据可以更新寄存器,并将该信号送出,供其它模块使用;
所述的指令发送模块根据哪条指令可以发射的信息从M条指令中选出要发射的指令,从寄存器文件访存结果和旁路回来的数据当中选择出该条指令的最新操作数,并将要发射的指令和指令的最新操作数送出;
所述的写回控制模块包括:写回结果寄存模块和写回输出模块;
所述的写回结果寄存模块负责接收要写回的M条指令,并将要写回的结果、要写回的目的寄存器等信息记录下来,根据指令流控制模块送来的写回允许信号来决定哪条指令可以写回,产生写回完成信号,供其它模块使用;
所述的写回输出模块根据写回结果寄存模块当中的信息将当前要写回的结果写回到寄存器当中,完成数据写回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310076580.8A CN103207776B (zh) | 2013-03-11 | 2013-03-11 | 一种gene乱序发射处理器内核 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310076580.8A CN103207776B (zh) | 2013-03-11 | 2013-03-11 | 一种gene乱序发射处理器内核 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103207776A CN103207776A (zh) | 2013-07-17 |
CN103207776B true CN103207776B (zh) | 2015-07-15 |
Family
ID=48755009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310076580.8A Expired - Fee Related CN103207776B (zh) | 2013-03-11 | 2013-03-11 | 一种gene乱序发射处理器内核 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103207776B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007966A (zh) * | 2019-04-10 | 2019-07-12 | 龚伟峰 | 一种降低内存读取乱序的方法 |
CN110297662B (zh) * | 2019-07-04 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 指令乱序执行的方法、处理器及电子设备 |
CN111930427B (zh) * | 2020-08-17 | 2022-06-21 | 北京百度网讯科技有限公司 | 指令发射方法、装置、电子设备以及存储介质 |
CN112581351A (zh) * | 2020-12-05 | 2021-03-30 | 西安翔腾微电子科技有限公司 | 一种双发射simt染色处理单元写回单元结构及写回通路冲突检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866281A (zh) * | 2010-06-13 | 2010-10-20 | 清华大学 | 一种多周期指令执行方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2459652B (en) * | 2008-04-28 | 2010-09-22 | Imagination Tech Ltd | Controlling instruction scheduling based on the space in a trace buffer |
-
2013
- 2013-03-11 CN CN201310076580.8A patent/CN103207776B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866281A (zh) * | 2010-06-13 | 2010-10-20 | 清华大学 | 一种多周期指令执行方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103207776A (zh) | 2013-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102687128B (zh) | 运算处理装置 | |
KR100636759B1 (ko) | 추월 기능을 갖춘 벡터 처리 장치 | |
CN100530080C (zh) | 用于在一系统中进行多存储缓冲器转发的系统 | |
CN100370418C (zh) | 用于选择性地禁止猜测性的条件分支指令执行的方法和设备 | |
CN103207776B (zh) | 一种gene乱序发射处理器内核 | |
CN102750130A (zh) | 分配计数器以追踪寄存器映射的方法和系统 | |
CN108287730A (zh) | 一种处理器流水线结构 | |
US20090055591A1 (en) | Hierarchical cache memory system | |
CN107851017B (zh) | 用于传输多个数据结构的设备和方法 | |
CN101706760B (zh) | 矩阵转置自动控制电路系统及矩阵转置方法 | |
CN100592255C (zh) | 32位的多模式微处理器 | |
KR20040085058A (ko) | 일련의 처리 명령들의 파이프라인 처리 방법 및 장치 | |
WO2013095508A1 (en) | Speculative cache modification | |
CN102521151A (zh) | 数据缓存方法和装置 | |
US10659396B2 (en) | Joining data within a reconfigurable fabric | |
CN104216681B (zh) | 一种cpu指令处理方法和处理器 | |
CN113778522B (zh) | 一种发射单元中指令发射处理方法 | |
CN101281513A (zh) | 基于Avalon总线的流处理器IP核 | |
CN110603521B (zh) | 超线程处理器 | |
CN113095026A (zh) | 一种支持乱序多读写的寄存器组电路装置 | |
CN100481060C (zh) | 一种流处理器中多核扩展的方法 | |
CN104391680B (zh) | 一种超标量微处理器中实现存储指令流水提交方法 | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
US20070280224A1 (en) | System and method for an output independent crossbar | |
CN102737163A (zh) | 一种印刷数据的处理方法及系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150715 Termination date: 20160311 |
|
CF01 | Termination of patent right due to non-payment of annual fee |