CN101593097A - 嵌入式同构对称双核risc微处理器的设计方法 - Google Patents
嵌入式同构对称双核risc微处理器的设计方法 Download PDFInfo
- Publication number
- CN101593097A CN101593097A CNA2009100226577A CN200910022657A CN101593097A CN 101593097 A CN101593097 A CN 101593097A CN A2009100226577 A CNA2009100226577 A CN A2009100226577A CN 200910022657 A CN200910022657 A CN 200910022657A CN 101593097 A CN101593097 A CN 101593097A
- Authority
- CN
- China
- Prior art keywords
- register
- write
- instruction
- read
- nuclear
- 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
- Executing Machine-Instructions (AREA)
Abstract
嵌入式同构对称双核RISC处理器的设计方法,根据取指单元、译码单元、控制单元以及数据通路内部逻辑模块的相对独立性,通过模块划分构成内核各单元。以32位RISC微结构的内部各模块为IP,并根据需要进行功能扩展,设计32位双核RISC的微结构。采用公共PC寄存器方案,实现了双核取指上的同步性,避免两个核心重复取指或者取指的遗漏;双核采用按序发射的策略,即按照双核的取指顺序来执行,简化了设计;针对两个核心间的数据交换,设计出共享寄存器堆方案,使双核实现了资源的共享以及提高了数据交换的灵活性,避免需要扩展指令集来实现数据的共享,缩短了设计周期;采用流水线控制合并的策略,使得两条流水线统一管理,实现了两条流水线的工作协同性。
Description
技术领域
本发明属于超大规模集成电路设计技术领域,具体涉及一种应用于多核CPU的嵌入式同构对称双核RISC微处理器的设计方法。
背景技术
微处理器性能上的飞跃,首先是工艺改进的结果,其次是处理器核心体系结构改进的结果。从工艺上看,目前半导体技术经历了硅晶体管、集成电路、超大规模集成电路、甚大规模集成电路的高速发展,带来了微处理器计算性能和应用能力的飞速提高。从体系结构上看,自1946年计算机问世以来,其体系结构经历了多次重要的变革,其中最有意义的是从复杂指令集计算机(CISC)体系结构过渡到精简指令集计算机(RISC)体系结构。CISC指令格式不固定,操作数可多可少,寻址方式复杂多样,操作数既可能来自寄存器也可能来自存储器,每条指令需要花费若干周期才能完成。正是针对CISC指令种类多、指令格式不规范、寻址方式太多的缺点开发出RISC体系结构微处理器。RISC的设计哲学就是简单性与有效性,也就是说RISC通过简化处理器指令集合的语意以及指令集合的编码来获得芯片资源的有效利用。RISC大多数指令单周期完成,面向寄存器的操作和装入/存储型访问,采用硬连线代替微控制程序控制,相比较CISC有较少的指令和操作方式,有固定的指令格式和三操作数操作。同CISC系统相比,使用相同的工艺和运行时钟下,RISC的运行速度是CISC的2~4倍。
但随着最小线宽极限的逐渐接近,目前单纯依靠提高主频和优化结构来改善处理器的计算能力变得越来越困难,其散热和功耗也已成为制约单核发展的关键因素。单核心微处理器的发展势头已经呈现逐步降低的趋势,而单片多核微处理器的出现,解决了由于频率增速放缓所带来的微处理器性能发展的瓶颈问题。在工作主频相同的情况下采用多核心来大幅度提高性能,利用简洁的架构实现更高的运算性能。集成多个简单内核的微处理器的架构或许会是未来微处理器发展的一大趋势。计算机的发展总是追求系统物理规模的不断减小,以及性能和集成度的不断提高,随着应用的需要,芯片上的处理器数目将不断增多,双核也必然走向多核。由于应用的需要,多核技术将与其它先进技术交织,成为处理器的发展方向。
针对上述背景技术中提及的处理器发展方向,一方面国际上只有INTEL等个别企业推出多核处理器,多核研究尚处在起步阶段;另一方面国内多核研究领域既没有成熟芯片面世,也没有相关文章发表,显示国内多核研究工作尚未真正开始。
发明内容
本发明的目的在于提供一种嵌入式同构对称双核RISC处理器的设计方法,该处理器通过共享寄存器实现了单片上的物理双核集成。
为了实现上述任务,本发明采用如下的解决方案:
1)采用公共PC寄存器实现双核取指的同步性,避免两个核心即双核重复取指或取指遗漏;
2)采用共享寄存器堆实现双核资源共享以及数据交换的灵活性,避免需要扩展指令集来实现数据的共享;
3)采用寄存器相关性消除策略及流水线控制合并策略,使两条流水线统一管理,实现了两条流水线的工作协同。
本发明的公共PC寄存器实现双核取指的同步性是核1、核2共用一个PC寄存器,地址端口比单核增加了一个地址增值器,核1的地址是多路选择器输出的结果,核2的地址是核1的地址经过第一个地址增值器增值后的结果,而输入到共享PC寄存器的地址是经过两次增值的结果,也就是在核2的地址上再加1增值作为PC的输入地址,使核1、核2的输出地址始终相差1,消除存在的重复取指或着遗漏某条指令,保持良好的同步性。
本发明的共享寄存器堆采用合并寄存器堆的策略,在单核中,寄存器堆共有32个寄存器,其中包括29个通用寄存器,一个计数寄存器,一个程序状态寄存器以及一个常数零寄存器,通过寄存器堆的合并,形成了共享寄存器堆模型,使得两个核心共用这32个寄存器,共享以后,对寄存器的控制进行扩展,由单核的两个读控制和一个写控制扩展到双核的四个读控制和两个写控制,体现了两个核心的相对独立性。
本发明的寄存器相关性消除策略:对于单一任务的程序指令序列是有固定顺序的,根据指令序列读写同一个寄存器的操作数的先后次序不同,出现下面四种数据竞争,假定有两条指令i和j,并且指令i在指令j前面:
先写后读相关RAW(Read After Write):指令j读源寄存器Rx,但指令i还没有将结果写回目的寄存器Ry,此时指令j得到的是一个不正确的旧操作数值,这是最普遍的一种数据竞争,处理器微结构设计中一般采用旁路机构BPU转发数据来减少这种竞争,但不能彻底消除这种竞争;
写写相关WAW(Write After Write):指令i和j都写同一个目的寄存器Ry,但是指令j的写操作和指令i同时发生或者在指令i之前完成,最后写的结果是在错误的次序下完成的,导致在目的寄存器Ry的值是指令i写的值或者是不确定的值,而不是指令j写的值,这种数据竞争主要出现在写操作可能发生于多个流水级的处理器中,或者乱序完成的流水线中以及多核心流水线之间;
先读后写相关WAR(Write after Read):指令j写操作结果在指令i读源操作数之前完成,导致指令i读出一个不正确的新值,这种竞争出现在某些指令写结果较早,而某些指令读源操作数较迟的情况,因为流水线的自然结构是指令读操作数在写操作数之前,因此这种数据竞争非常少;
读读相关RAR(Read after Read):指令i和j都读同一个源寄存器;
上述四种相关性都是由于对于同一个寄存器进行某几种操作引起了相关性,由于双核微处理器采用的是共享寄存器堆方法,以及按序发射的指令发射策略,并且2条流水线统一在ID级读源操作数,在EXE级写目的操作数,因此在读源操作数必定在写目的操作数之前,所以也不会引起先读后写相关WAR竞争,在其微结构里面两个核间的数据竞争只会是写写相关WAW和先写后读相关RAW数据竞争;
相关性的检测
双核的每个时钟周期里,两个核心的流水线从ID级各发射一条指令到EXE级执行,其检测方法是在译码级完成,当在取指阶段取完指令后就放入指令寄存器中,通过比较指令寄存器中的相应的源操作数、目的操作数的编码段完成RAW相关性的检测;
首先指令编码在REG1、REG2类型里,第21位到25位是第一源寄存器scr1的编码,第16位到20位是目的寄存器dst的编码,第0位到4位是第二源寄存器scr2的编码,对应到指令寄存器ir里,ir25~21对应源操作数第一源寄存器scr1,ir20~16对应目的操作数目的寄存器dst,ir4~0对应源操作数第二源寄存器scr2;REG3、CTRL、MEM类指令里只有一个源操作数第一源寄存器scr1,除了CTRL类型以及存数类指令没有目的操作数外,其他类型的指令格式都有目的操作数;
先写后读相关RAW检测的具体方案如下:
首先令,
dst(1)=~(bar(1)|bsr(1)|STORE(1))&ir(1)20~16+(bal(1)|bsr(1))&ir(1)25~21;
scr1(2)=ir(2)25~21,
scr2(2)=ir(2)4~0&~(REG3(2)|CTRL(2)|MEM(2));
如果dst(1)==scr1(2)|scr2(2),则存在RAW相关性;
其中,ir(1)代表核1的指令寄存器,dst(1)代表核1的目的操作数,bar(1)、bsr(1)、STORE(1)为核1译完码后无条件转移和存储类控制信号,ir(2)代表核2的指令寄存器,scr1(2)和scr2(2)代表核2的两个源操作数,REG3(2)、CTRL(2)、MEM(2)分别代表核2译码后的寄存器类、控制类、存储器类的控制信号;
相关性的处理
WAW的解决策略
双核微处理器是按序发射指令,因此指令的执行是按照程序中的顺序执行,如果相邻两条指令要对同一寄存器写数据,只要把后一条指令的结果写入寄存器中就可以消除先读后写相关WAW;
具体的处理如下:
C1、C2分别代表核1、核2的写总线,WC1(i)、WC2(i)代表核1、核2的写控制信号,i的值是0~28,代表0~28号通用寄存器,只有写控制信号发生时,才把总线C1、C2上的内容写到寄存器中;
得出,REG(i)=(WC2(i)&C2)|(~WC2(i)&WC1(i)&C1),REG(i)代表第i号寄存器,如果两个核都对同一寄存器写入数据,只把核2的数据写入相应的寄存器当中,通过对寄存器的写操作的修正,解决先读后写相关WAW相关性问题;
先写后读相关RAW数据竞争的解决:①在ID级读源操作数时,此时正确的值在流水线内部还没有产生,产生先写后读相关RAW请求,然后由流水线控制部件处理;②在ID级读源操作数时,此时正确的值已在流水线内部产生,只会发生在核内部由于流水线重叠产生,而双核之间的的并行是完全同步的,即取指、译码、执行完全是同步的,读操作是在译码级进行,这时两个核都还没有执行操作,在两个核间不会产生这种相关性,因此,只对于情况①进行相关性处理。
本发明采用分块的设计方法完成了物理内核的设计。根据取指单元、译码单元、控制单元以及数据通路内部逻辑模块的相对独立性,通过模块的划分来设计各个单元。该双核以32位RISC微结构的内部各模块为IP,并根据由单核到双核结构变化的需要增加部分单核不具备的功能,设计32位双核RISC的微结构。采用公共PC寄存器方案,实现了双核取指上的同步性,避免了两个核心重复取指或者取指的遗漏;双核采用按序发射的策略,即严格按照双核的取指顺序来执行,简化了设计;针对两个核心间的数据交换,设计出共享寄存器堆方案,使得双核实现了资源的共享以及提高了数据交换的灵活性,避免了需要扩展指令集来实现数据的共享,缩短了设计周期;采用流水线控制合并的策略,使得两条流水线统一管理,实现了两条流水线的工作协同性。
附图说明
图1是双核微处理器整体结构及主要功能框图;
图2是公共PC寄存器实现方案;
图3是指令格式;
图4是共享寄存器模型;
图5是RAW相关性消除;
图6是RAW相关性消除波形图。
具体实施方式
以下结合附图和实施例对本发明作进一步的详细说明。
参见图1,发明的基于共享寄存器组的双核微处理器实现方法,按以下方式进行:
1)采用公共PC寄存器实现双核取指的同步性,避免两个核心即双核重复取指或取指遗漏;
2)采用共享寄存器堆实现双核资源共享以及数据交换的灵活性,避免需要扩展指令集来实现数据的共享;
3)采用寄存器相关性消除策略及流水线控制合并策略,使两条流水线统一管理,实现了两条流水线的工作协同。
上述的公共PC寄存器方案:核1、核2共用一个PC寄存器。如图2所示,地址端口比单核增加了一个地址增值器,核1的地址是多路选择器输出的结果,核2的地址是核1的地址经过第一个地址增值器增值后的结果,而输入到共享PC寄存器的地址是经过两次增值的结果,也就是在核2的地址上再加1增值作为PC的输入地址,这样可以使得核1、核2的输出地址始终相差1,并且消除了可能存在的重复取指或着遗漏某条指令,保持良好的同步性。因为本设计是针对单任务双核的协同工作,因此保持两个核的同步工作非常重要,如果核1、核2采用独立的程序寄存器,使得两个核取指是独立的,因此必须从外部加以控制使它们同步。而且对于遇到多周期指令、转移指令等特殊指令需要停止PC寄存器或者修改PC的值时,这使得控制更加复杂,,必须采用软件系统进行调度。因此采用共用PC寄存器的方法减少了控制的复杂性,使得硬件实现更加简单。
上述共享寄存器堆方案:在本双核的微结构里面,数据通路核心部件为寄存器堆。在双核运行过程中,必须要保证两条流水线访问寄存器堆得到的数据应该一样,既保持数据的共享与连续性,也必须要保证两条流水线之间的数据相关正确检测和消除。因此本文设计出合并寄存器堆的策略。
在单核中,寄存器堆共有32个寄存器,其中包括29个通用寄存器,一个计数寄存器,一个程序状态寄存器以及一个常数零寄存器。通过寄存器堆的合并,形成了共享寄存器堆模型,使得两个核心共用这32个寄存器,使得数据得到良好的共享。共享以后,对寄存器的控制进行了扩展,扩展到了四个读控制和两个写控制,体现了两个核心的相对独立性。
如果采用独立的寄存器堆,即每个核心有自己寄存器堆,就存在对寄存器重新编址的问题。因为我们主要考虑是对单任务的按序执行,存在两个核间数据的交换和数据的共享,也就是核1可能用到核2寄存器堆里寄存器中的数据,同样,核2也可能用到核1寄存器堆里寄存器中的数据,这就存在如何对寄存器寻址、编址的问题。首先分析一下所采用的指令格式,如图3所示。
在这五种指令格式中,src1、src2、dst分别对应源寄存器1、源寄存器2、目的寄存器。可见无论源寄存器或者目的寄存器的编码,都是采用5位二进制来编码,而25=32,刚好对应于32个寄存器的地址;而现在如果现在核1、核2各用一个寄存器堆,但为了实现数据共享与交换必须重新对两个寄存器堆编码,也就是要对64个寄存器重新编码,对应于具体的指令格式,就是要扩展源操作数和目的操作数的编码位数。这时src1、src2、dst的就必须在指令中扩展到6位来对寄存器的地址进行编码,因为26=64可以实现对于64个寄存器的编码。但是此时必须改变指令的格式和结构,也就是改变整个指令体系,那么也就是改变整个单核的架构体系,那将是一个复杂的过程,而且使得设计周期变长。
因此,如图4采用共享寄存器堆模型是一种非常有效的资源共享和数据交换的方法。简化了设计,节约了资源。
上述寄存器竞争消除策略:因为对于单一任务的程序指令序列是有固定顺序的,根据指令序列读写同一个寄存器(操作数)的先后次序不同,可能出现下面四种数据竞争(假定有两条指令i和j,并且指令i在指令j前面):
·先写后读相关RAW(Read After Write)。指令j读源寄存器Rx,但指令i还没有将结果写回目的寄存器Ry。这样指令j得到的是一个不正确的旧操作数值。这是最普遍的一种数据竞争,处理器微结构设计中一般采用旁路机构(BPU)转发数据来减少这种竞争,但不能彻底消除这种竞争。
·写写相关WAW(Write After Write)。指令i和j都写同一个目的寄存器Ry,但是指令j的写操作和指令i同时发生或者在指令i之前完成,最后写的结果是在错误的次序下完成的,导致在目的寄存器Ry的值是指令i写的值或者是不确定的值,而不是指令j写的值。这种数据竞争主要出现在写操作可能发生于多个流水级的处理器中,或者乱序完成的流水线中以及多核心流水线之间。
·先读后写相关WAR(Write after Read)。指令j写操作结果在指令i读源操作数之前完成,导致指令i读出一个不正确的新值。这种竞争出现在某些指令写结果较早,而某些指令读源操作数较迟的情况,因为流水线的自然结构是指令读操作数在写操作数之前,因此这种数据竞争是非常少的。
·读读相关RAR(Read after Read)。指令i和j都读同一个源寄存器。(不会引起数据冲突)
可见,上述四种相关性都是由于对于同一个寄存器进行某几种操作引起了相关性。由于本双核微处理器采用的是共享寄存器堆方法,以及按序发射的指令发射策略,并且2条流水线统一在ID级读源操作数,在EXE级写目的操作数,因此在读源操作数必定在写目的操作数之前,所以也不会引起WAR竞争,在其微结构里面两个核间的数据竞争只会是WAW和RAW数据竞争:
·WAW竞争的解决方式比较简单,因为本双核微处理器是按序发射指令,因此指令的执行是按照程序中的顺序执行,如果相邻两条指令要对同一寄存器写数据,只要把后一条指令的结果写入寄存器中就可以消除WAW相关。
·RAW数据竞争的解决方式:①在ID级读源操作数时,此时正确的值在流水线内部还没有产生,产生RAW相关请求,然后由流水线控制部件处理;②在ID级读源操作数时,此时正确的值已在流水线内部产生,这种情况只会发生在核内部由于流水线重叠产生,而双核之间的的并行是完全同步的,即取指、译码、执行完全是同步的。读操作是在译码级进行,这时两个核都还没有执行操作,所以在两个核间不会产生这种相关性。因此,只对于情况①进行相关性处理。
相关性的检测
在双核的每个时钟周期里,两个核心的流水线从ID级各发射一条指令到EXE级执行。而要在执行前就必须做出正确的检测,并进行相应的处理,否则在执行级就很难解决其相关性。因此,本检测方法是在译码级完成,当在取指阶段取完指令后就放入指令寄存器中,通过比较指令寄存器中的相应的源操作数、目的操作数的编码段就可以完成RAW相关性的检测(对于WAW相关性的处理中包含对WAW的检测,所以在此不具体讨论WAW的检测)。
首先,我们来分析一下指令的编码格式。在REG1、REG2类型里,第21位到25位是源寄存器scr1的编码,第16位到20位是目的寄存器dst的编码,第0位到4位是源寄存器scr2的编码。对应到ir(指令寄存器)里,ir25~21对应源操作数scr1,ir20~16对应目的操作数dst,ir4~0对应源操作数scr2。REG3、CTRL、MEM类指令里只有一个源操作数scr1。除了CTRL类型以及存数类指令没有目的操作数外,其他类型的指令格式都有目的操作数。
RAW检测的具体方案如下:
令dst(1)=~(bar(1)|bsr(1)|STORE(1))&ir(1)20~16+(bal(1)|bsr(1))&ir(1)25~21;
scr1(2)=ir(2)25~21,
scr2(2)=ir(2)4~0&~(REG3(2)|CTRL(2)|MEM(2));
如果dst(1)==scr1(2)|scr2(2),则存在RAW相关性。
其中,ir(1)代表核1的指令寄存器,dst(1)代表核1的目的操作数,bar(1)、bsr(1)、STORE(1)为核1译完码后无条件转移和存储类控制信号,ir(2)代表核2的指令寄存器,scr1(2)和scr2(2)代表核2的两个源操作数,REG3(2)、CTRL(2)、MEM(2)分别代表核2译码后的寄存器类、控制类、存储器类的控制信号。
相关性的处理
WAW的解决策略
正如前面所提到的,本双核微处理器针对的是单任务的顺序执行,因此当两个核同时对同一寄存器写操作时,只把后一条指令的目的操作数也就是核2的目的操作数写到相应的寄存器内,这样就解决了WAW相关性。
具体的处理如下:
C1、C2分别代表核1、核2的写总线,WC1(i)、WC2(i)代表核1、核2的写控制信号,i的值是0~28,代表0~28号寄存器(通用寄存器)。只有写控制信号发生时,才把C总线上的内容写到寄存器中。
可以得出,REG(i)=(WC2(i)&C2)|(~WC2(i)&WC1(i)&C1),REG(i)代表第i号寄存器。可见,如果两个核都对同一寄存器写入数据,只把核2的数据写入相应的寄存器当中即可。通过对寄存器的写操作的修正,很好解决了WAW相关性问题。
RAW的解决策略
RAW的相关性解决起来就比较复杂,双核的RAW相关性和单核有着很大的差异,在单核流水线流动的过程中,下一条指令的发射比上一条指令晚一个时钟周期,也就是在下一条指令译码的时候上一条指令正在执行,所以可以通过引入旁路的方法把上一条指令的目的操作数直接作为后一条指令的源操作数,而不通过寄存器;对于双核,两个核是同时译码,同时开始执行,所以要引入旁路是相当困难的,因为取源操作数是在译码级完成的,而这时两个核都还没有开始执行,当然也不会产生目的操作数。那是否可以让核2延迟一个周期然后译码,此时就可以像单核内那样采用旁路的方法解决?前面已经分析相关性的检测只能在译码级进行,所以在译码前也就是在取指级要判断出相关性并进行延时处理是不可行的。因此本文采用修改PC、地址端口,同时对指令寄存器清零的方式,让核2再次取那条具有相关性的指令,并在下一周期从新执行一次,这样就可以正确的取到上一条指令的目的操作数来作为源操作数。
具体的方案如下:如图5现在假设第M条指令和第M+1条指令存在RAW相关性,即第M条指令的目的操作数是第M+1条指令的源操作数。
当核1在第1个周期里取到第M条指令时,同时核2取到第M+1指令;在下个周期译码时,检测到第M条和第M+1条指令存在RAW相关,这时,核1和核2已经分别取出第M+2和第M+3条指令;在译完码的下一个周期的时钟下降沿通过给ir寄存器清零,阻止对第M+2和第M+3条指令的译码,并修改PC寄存器和地址端口的值,使得下一周期两个内核所取得指令分别是第M+1(核1)条、第M+2(核2)条。而当M+1(核1)条、第M+2(核2)条开始译码的时候,第M条指令已经执行完毕,目的操作数已经产生,因此消除了相关性。
图6是RAW相关性解决策略Modelsim仿真波形图。在190ns的时候,核1、核2进行取指,分别取到00001005和00001006这两个地址所对应的指令;在210ns的时候开始译码,这时ir0、ir1所存放的指令302216fe、3c22fc02就是两个核在190ns时所取到的指令,通过相关性检测,检测到了这两条指令具有相关性;在230ns时,修正地址端口所对应的地址并重新取指,同时修改PC,并对指令寄存器ir0、ir1清零,此时,核1与核2分别取的指令是00001006和00001007这两个地址所对应的指令,而00001005这个地址所对应的指令已经执行完毕,消除了RAW相关性,可见仿真结果与本文所提出的解决策略相一致,说明此解决策略是正确可行的。
Claims (4)
1、一种嵌入式同构对称双核RISC处理器的设计方法,其特征在于:
1)采用公共PC寄存器实现双核取指的同步性,避免两个核心即双核重复取指或取指遗漏;
2)采用共享寄存器堆实现双核资源共享以及数据交换的灵活性,避免需要扩展指令集来实现数据的共享;
3)采用寄存器相关性消除策略及流水线控制合并策略,使两条流水线统一管理,实现了两条流水线的工作协同。
2、根据权利要求1所述的嵌入式同构对称双核RISC处理器的设计方法,其特征在于:所说的公共PC寄存器实现双核取指的同步性是核1、核2共用一个PC寄存器,地址端口比单核增加了一个地址增值器,核1的地址是多路选择器输出的结果,核2的地址是核1的地址经过第一个地址增值器增值后的结果,而输入到共享PC寄存器的地址是经过两次增值的结果,也就是在核2的地址上再加1增值作为PC的输入地址,使核1、核2的输出地址始终相差1,消除存在的重复取指或着遗漏某条指令,保持良好的同步性。
3、根据权利要求1所述的嵌入式同构对称双核RISC处理器的设计方法,其特征在于:所说的共享寄存器堆采用合并寄存器堆的策略,在单核中,寄存器堆共有32个寄存器,其中包括29个通用寄存器,一个计数寄存器,一个程序状态寄存器以及一个常数零寄存器,通过寄存器堆的合并,形成了共享寄存器堆模型,使得两个核心共用这32个寄存器,共享以后,对寄存器的控制进行扩展,由单核的两个读控制和一个写控制扩展到双核的四个读控制和两个写控制,体现了两个核心的相对独立性。
4、根据权利要求1所述的嵌入式同构对称双核RISC处理器的设计方法,其特征在于:所说的寄存器相关性消除策略:对于单一任务的程序指令序列是有固定顺序的,根据指令序列读写同一个寄存器的操作数的先后次序不同,出现下面四种数据竞争,假定有两条指令i和j,并且指令i在指令j前面:
先写后读相关RAW(Read After Write):指令j读源寄存器Rx,但指令i还没有将结果写回目的寄存器Ry,此时指令j得到的是一个不正确的旧操作数值,这是最普遍的一种数据竞争,处理器微结构设计中一般采用旁路机构BPU转发数据来减少这种竞争,但不能彻底消除这种竞争;
写写相关WAW(Write After Write):指令i和j都写同一个目的寄存器Ry,但是指令j的写操作和指令i同时发生或者在指令i之前完成,最后写的结果是在错误的次序下完成的,导致在目的寄存器Ry的值是指令i写的值或者是不确定的值,而不是指令j写的值,这种数据竞争主要出现在写操作可能发生于多个流水级的处理器中,或者乱序完成的流水线中以及多核心流水线之间;
先读后写相关WAR(Write after Read):指令j写操作结果在指令i读源操作数之前完成,导致指令i读出一个不正确的新值,这种竞争出现在某些指令写结果较早,而某些指令读源操作数较迟的情况,因为流水线的自然结构是指令读操作数在写操作数之前,因此这种数据竞争非常少;
读读相关RAR(Read after Read):指令i和j都读同一个源寄存器;
上述四种相关性都是由于对于同一个寄存器进行某几种操作引起了相关性,由于双核微处理器采用的是共享寄存器堆方法,以及按序发射的指令发射策略,并且2条流水线统一在ID级读源操作数,在EXE级写目的操作数,因此在读源操作数必定在写目的操作数之前,所以也不会引起先读后写相关WAR竞争,在其微结构里面两个核间的数据竞争只会是写写相关WAW和先写后读相关RAW数据竞争;
相关性的检测
双核的每个时钟周期里,两个核心的流水线从ID级各发射一条指令到EXE级执行,其检测方法是在译码级完成,当在取指阶段取完指令后就放入指令寄存器中,通过比较指令寄存器中的相应的源操作数、目的操作数的编码段完成RAW相关性的检测;
首先指令编码在REG1、REG2类型里,第21位到25位是第一源寄存器scr1的编码,第16位到20位是目的寄存器dst的编码,第0位到4位是第二源寄存器scr2的编码,对应到指令寄存器ir里,ir25~21对应源操作数第一源寄存器scr1,ir20~16对应目的操作数目的寄存器dst,ir4~0对应源操作数第二源寄存器scr2;REG3、CTRL、MEM类指令里只有一个源操作数第一源寄存器scr1,除了CTRL类型以及存数类指令没有目的操作数外,其他类型的指令格式都有目的操作数;
先写后读相关RAW检测的具体方案如下:
首先令,
dst(1)=~(bar(1)|bsr(1)|STORE(1))&ir(1)20~16+(bal(1)|bsr(1))&ir(1)25~21;
scr1(2)=ir(2)25~21,
scr2(2)=ir(2)4~0&~(REG3(2)|CTRL(2)|MEM(2));
如果dst(1)==scr1(2)|scr2(2),则存在RAW相关性;
其中,ir(1)代表核1的指令寄存器,dst(1)代表核1的目的操作数,bar(1)、bsr(1)、STORE(1)为核1译完码后无条件转移和存储类控制信号,ir(2)代表核2的指令寄存器,scr1(2)和scr2(2)代表核2的两个源操作数,REG3(2)、CTRL(2)、MEM(2)分别代表核2译码后的寄存器类、控制类、存储器类的控制信号;
相关性的处理
WAW的解决策略
双核微处理器是按序发射指令,因此指令的执行是按照程序中的顺序执行,如果相邻两条指令要对同一寄存器写数据,只要把后一条指令的结果写入寄存器中就可以消除先读后写相关WAW;
具体的处理如下:
C1、C2分别代表核1、核2的写总线,WC1(i)、WC2(i)代表核1、核2的写控制信号,i的值是0~28,代表0~28号通用寄存器,只有写控制信号发生时,才把总线C1、C2上的内容写到寄存器中;
得出,REG(i)=(WC2(i)&C2)|(~WC2(i)&WC1(i)&C1),REG(i)
代表第i号寄存器,如果两个核都对同一寄存器写入数据,只把核2的数据写入相应的寄存器当中,通过对寄存器的写操作的修正,解决先读后写相关WAW相关性问题;
先写后读相关RAW数据竞争的解决:①在ID级读源操作数时,此时正确的值在流水线内部还没有产生,产生先写后读相关RAW请求,然后由流水线控制部件处理;②在ID级读源操作数时,此时正确的值已在流水线内部产生,只会发生在核内部由于流水线重叠产生,而双核之间的的并行是完全同步的,即取指、译码、执行完全是同步的,读操作是在译码级进行,这时两个核都还没有执行操作,在两个核间不会产生这种相关性,因此,只对于情况①进行相关性处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100226577A CN101593097B (zh) | 2009-05-22 | 2009-05-22 | 嵌入式同构对称双核risc微处理器的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100226577A CN101593097B (zh) | 2009-05-22 | 2009-05-22 | 嵌入式同构对称双核risc微处理器的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101593097A true CN101593097A (zh) | 2009-12-02 |
CN101593097B CN101593097B (zh) | 2011-07-27 |
Family
ID=41407767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100226577A Expired - Fee Related CN101593097B (zh) | 2009-05-22 | 2009-05-22 | 嵌入式同构对称双核risc微处理器的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101593097B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706766A (zh) * | 2009-12-18 | 2010-05-12 | 长沙理工大学 | 一种嵌入式双核互补微处理器的结构方法 |
CN103080921A (zh) * | 2010-08-30 | 2013-05-01 | 富士通株式会社 | 多核处理器系统、同步控制系统、同步控制装置、信息生成方法以及信息生成程序 |
CN103235771A (zh) * | 2013-04-24 | 2013-08-07 | 南京龙渊微电子科技有限公司 | 基于寄存器窗口互相重叠的多核间数据交换方法及装置 |
CN103279448A (zh) * | 2013-04-24 | 2013-09-04 | 南京龙渊微电子科技有限公司 | 基于数据缓存重配置的多核间数据交换方法及装置 |
CN105589679A (zh) * | 2011-12-30 | 2016-05-18 | 世意法(北京)半导体研发有限责任公司 | 用于共享处理器过程上下文的寄存器堆组织 |
CN106991073A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 用于向量运算的数据读写调度器及保留站 |
CN108369508A (zh) * | 2016-01-05 | 2018-08-03 | 英特尔公司 | 使用处理器指令前缀的二进制转换支持 |
CN109520079A (zh) * | 2018-11-08 | 2019-03-26 | 广东美的制冷设备有限公司 | 空调器及其控制方法、装置及计算机可读存储介质 |
CN110806899A (zh) * | 2019-11-01 | 2020-02-18 | 西安微电子技术研究所 | 一种基于指令扩展的流水线紧耦合加速器接口结构 |
CN110825437A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
CN113254070A (zh) * | 2020-02-07 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
CN117331880A (zh) * | 2023-08-15 | 2024-01-02 | 北京城建智控科技股份有限公司 | 双核通信装置、方法及电子设备 |
-
2009
- 2009-05-22 CN CN2009100226577A patent/CN101593097B/zh not_active Expired - Fee Related
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706766B (zh) * | 2009-12-18 | 2014-04-02 | 长沙理工大学 | 一种嵌入式双核互补微处理器的结构方法 |
CN101706766A (zh) * | 2009-12-18 | 2010-05-12 | 长沙理工大学 | 一种嵌入式双核互补微处理器的结构方法 |
CN103080921A (zh) * | 2010-08-30 | 2013-05-01 | 富士通株式会社 | 多核处理器系统、同步控制系统、同步控制装置、信息生成方法以及信息生成程序 |
CN103080921B (zh) * | 2010-08-30 | 2015-11-25 | 富士通株式会社 | 多核处理器系统、同步控制系统、同步控制装置、信息生成方法 |
US9367311B2 (en) | 2010-08-30 | 2016-06-14 | Fujitsu Limited | Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product |
CN105589679A (zh) * | 2011-12-30 | 2016-05-18 | 世意法(北京)半导体研发有限责任公司 | 用于共享处理器过程上下文的寄存器堆组织 |
CN105589679B (zh) * | 2011-12-30 | 2018-07-20 | 世意法(北京)半导体研发有限责任公司 | 用于共享处理器过程上下文的寄存器堆组织 |
CN103235771A (zh) * | 2013-04-24 | 2013-08-07 | 南京龙渊微电子科技有限公司 | 基于寄存器窗口互相重叠的多核间数据交换方法及装置 |
CN103279448A (zh) * | 2013-04-24 | 2013-09-04 | 南京龙渊微电子科技有限公司 | 基于数据缓存重配置的多核间数据交换方法及装置 |
CN108369508A (zh) * | 2016-01-05 | 2018-08-03 | 英特尔公司 | 使用处理器指令前缀的二进制转换支持 |
CN106991073A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 用于向量运算的数据读写调度器及保留站 |
CN110825437A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
CN110825437B (zh) * | 2018-08-10 | 2022-04-29 | 昆仑芯(北京)科技有限公司 | 用于处理数据的方法和装置 |
CN109520079A (zh) * | 2018-11-08 | 2019-03-26 | 广东美的制冷设备有限公司 | 空调器及其控制方法、装置及计算机可读存储介质 |
CN109520079B (zh) * | 2018-11-08 | 2021-07-23 | 广东美的制冷设备有限公司 | 空调器及其控制方法、装置及计算机可读存储介质 |
CN110806899A (zh) * | 2019-11-01 | 2020-02-18 | 西安微电子技术研究所 | 一种基于指令扩展的流水线紧耦合加速器接口结构 |
CN113254070A (zh) * | 2020-02-07 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
CN113254070B (zh) * | 2020-02-07 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
CN117331880A (zh) * | 2023-08-15 | 2024-01-02 | 北京城建智控科技股份有限公司 | 双核通信装置、方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101593097B (zh) | 2011-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101593097B (zh) | 嵌入式同构对称双核risc微处理器的设计方法 | |
US10445250B2 (en) | Apparatus, methods, and systems with a configurable spatial accelerator | |
US10515049B1 (en) | Memory circuits and methods for distributed memory hazard detection and error recovery | |
EP3726389B1 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
US10417175B2 (en) | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator | |
US10387319B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10891240B2 (en) | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator | |
CN101593096B (zh) | 一种共享寄存器相关性消除的实现方法 | |
US20190303153A1 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
EP3343388A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20190205269A1 (en) | Apparatus, methods, and systems for multicast in a configurable spatial accelerator | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
US10459866B1 (en) | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator | |
US12086080B2 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
WO2019194916A1 (en) | Apparatuses, methods, and systems for remote memory access in a configurable spatial accelerator | |
US10853073B2 (en) | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator | |
EP3776216A1 (en) | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
US11037050B2 (en) | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator | |
TW201802668A (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
EP3757814A1 (en) | Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator | |
US11907713B2 (en) | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110727 Termination date: 20140522 |