CN100555216C - 一种数据处理方法及处理器 - Google Patents
一种数据处理方法及处理器 Download PDFInfo
- Publication number
- CN100555216C CN100555216C CNB2007100769822A CN200710076982A CN100555216C CN 100555216 C CN100555216 C CN 100555216C CN B2007100769822 A CNB2007100769822 A CN B2007100769822A CN 200710076982 A CN200710076982 A CN 200710076982A CN 100555216 C CN100555216 C CN 100555216C
- Authority
- CN
- China
- Prior art keywords
- data
- register file
- write
- buffer
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明适用于数据处理领域,提供了一种数据处理方法及处理器,所述方法包括下述步骤:检测寄存器堆当前是否存在空闲写端口;如果寄存器堆当前没有空闲写端口,则根据写寄存器堆的指令顺序,将当前写寄存器堆的指令所在流水线中的数据缓存;如果寄存器堆当前存在空闲写端口,则优先将缓存的数据写入寄存器堆。本发明通过将暂时无法写入寄存器堆的指令所在流水线中的数据缓存,通过地址映射处理实现了写入到缓冲队列相当于写入到了寄存器堆,可以减少寄存器堆写端口的数量,减小寄存器堆的功耗,并有利于降低芯片面积,同时不影响指令在流水线中的运行速度,提高了系统的性价比。
Description
技术领域
本发明属于数据处理领域,尤其涉及一种数据处理方法及处理器。
背景技术
精简指令集计算机(Reduced Instruction Set Computing,RISC)的主要特点是中央处理器(Central Processing Unit,CPU)的指令集大大简化,通过简单的指令来提高机器的性能,特别是提高CPU执行程序的速度,主要有如下特点:
(1)RISC结构采用精简的、长短划一的指令集,它的指令数少、寻址方式少、指令格式少,使得大多数的操作获得了尽可能高的效率;
(2)所有的指令都在一个时钟周期完成,且指令长度相等;
(3)采用装载(Load)、存储(Store)结构;
执行与内存有关的操作指令,只允许Load和Store指令执行存储器操作,其余指令只访问保存在处理器寄存器中的操作数,减少了访问内存的次数,降低了对内存带宽的要求,并且所有的操作限制于只针对寄存器,有助于指令集的简化。
(4)拥有较大的寄存器堆;
为了便于实现多数指令在寄存器之间的操作,必须有足够量的协处理数据操作(CDP)通用寄存器。足量的寄存器减少了对内存的访问,加快了运算速度,工业化的RISC系统中至少采用32个通用寄存器。
(5)采用高速缓存(Cache)结构;
为保证指令不间断地传送给CPU运算器,CPU设置了一定大小的Cache以扩展存储器的带宽,满足CPU频繁取指需求,一般有指令Cache和数据Cache两个独立Cache,分别存储指令和数据。
(6)采用多级指令流水线结构;
RISC的特点决定了其很适合采用流水线结构,可使每一时刻都有多条指令重叠执行,每条指令都以相同的步调执行,使CPU始终是忙的。
随着微处理器的发展,为了达到更高的计算性能,并行流水线数目增多,流水线深度增加,数据宽度增加,要求寄存器同时可用的端口数目增多,以便多条流水线可以同时访问寄存器堆,从而使得寄存器堆的面积和功耗都大大增加。同时,寄存器堆端口数的增多使得控制逻辑更加复杂,系统的稳定性下降,限制了时钟的频率,增加了设计的复杂程度。
为了满足多条流水线写寄存器堆的需要,目前一般增加寄存器读写端口的数量,每条流水线有自己的寄存器堆访问端口,以使系统的速度提高。多端口寄存器堆的使用大大增加了产品的功耗,不但使寄存器堆的动态功耗增加,同时漏电流的通路也大大增加,从而使得静态功耗也大幅增加。当发射(Issue)宽度增加,寄存器堆的端口也随之增加时,寄存器堆的面积会随着发射宽度的二次方增加。同时,复杂的控制结构限制了时钟频率的提高,增加了设计的复杂度和错误产生概率。
为了解决上述问题,现有技术中采用分时复用各端口的方法减少寄存器堆的端口数量。简单的分时复用是在时钟上升沿和下降沿分别进行寄存器操作,即在一个时钟周期内进行多次寄存器操作,将寄存器堆的端口数量减下来。具体有两种实现方式:一种方式是寄存器堆的端口功能固定,写端口始终是写端口,每个时钟周期进行多次写操作,读端口始终是读端口,每个时钟周期进行多次读操作。另一种方式是寄存器堆的端口功能变化,在时钟上升沿进行读操作,在时钟下降沿进行写操作,或者相反。
在上述方案中,分时复用寄存器堆各端口的方式增加了时序控制的复杂性,从而增加了错误的产生概率,同时也增加了产品的设计难度和周期。端口功能变化的实现方式比端口功能固定的实现方式的灵活性大一些,但时序控制更加复杂,对寄存器堆的访问时间必须大大少于半个时钟周期的长度,限制了流水线时钟的最高频率。
发明内容
本发明实施例的目的在于提供一种数据处理方法,旨在解决现有方案在减少寄存器堆端口数量时,产生的时序控制复杂、错误产生概率高的问题。
本发明实施例是这样实现的,一种数据处理方法,所述方法包括下述步骤:
检测寄存器堆当前是否存在空闲写端口;
如果寄存器堆当前没有空闲写端口,则根据写寄存器堆的指令顺序,将当前写寄存器堆的指令所在流水线中的数据缓存;
如果寄存器堆当前存在空闲写端口,则优先将缓存的数据写入寄存器堆。
本发明实施例的另一目的在于提供一种数据处理器,用于对流水线的数据进行处理,所述数据处理器包括:
寄存器堆,用于寄存流水线对操作数的处理结果;
缓冲单元,用于缓存指令所在流水线中的数据;以及
写控制单元,用于检测寄存器堆当前的写端口状态,在寄存器堆当前没有空闲写端口时,根据写寄存器堆的指令顺序,将当前写寄存器堆的指令所在流水线中的数据缓存至所述缓冲单元,在寄存器堆当前存在空闲写端口时,优先将所述缓冲单元缓存的数据写入所述寄存器堆。
通过将暂时无法写入寄存器堆的指令所在流水线中的数据缓存,通过地址映射处理实现了写入到缓冲队列相当于写入到了寄存器堆,可以减少寄存器堆写端口的数量,减小寄存器堆的功耗,并有利于降低芯片面积,同时不影响指令在流水线中的运行速度,提高了系统的性价比。
附图说明
图1是本发明实施例提供的缓冲队列中数据前移时序示例图;
图2是本发明实施例提供的两条指令写同一寄存器时的示意图;
图3是本发明实施例提供的缓冲队列中数据存储变换示意图;
图4是本发明实施例提供的数据处理器的结构图;
图5是本发明的一个示例中提供的浮点协处理器的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,当多条流水线同时写寄存器堆,而寄存器堆的写端口已全部被占用时,按照流水线中的指令顺序,将顺序在前的指令所在流水线中的数据写入寄存器堆,将后续指令所在流水线中的数据缓存,当寄存器堆存在空闲写端口时,优先将缓存的数据写入寄存器堆。
当检测到当前寄存器堆的写端口数量不能满足流水线写入要求时,例如寄存器堆只有一个写端口,多条流水线在同一时钟周期内要写寄存器堆时,或者寄存器堆的写端口数量无法满足多条流水线同时写寄存器堆的要求时,本发明实施例按照流水线中的指令顺序,将顺序在前的指令所在流水线中的数据先写入寄存器堆,同时为了不影响其余流水线中后续指令的继续执行,将因寄存器堆写端口已全部被占用而暂时无法写入寄存器堆的后续指令所在流水线中的数据缓存。为了实现写入到缓冲队列相当于写入到了寄存器堆的操作,将缓存了寄存器堆数据的缓冲队列通过一个地址映射位向量映射到寄存器堆中的某个地址上。
在本发明实施例中,通过缓冲队列对数据进行缓存,缓冲队列的级数可以根据具体应用情况进行配置,在某些应用中可以使用1级或者n级级联的缓冲队列,其中n为n为大于或等于2的自然数。例如对于使用频率较低的处理器,或者对面积和功耗要求很高,而对性能要求次之的微处理器,可以减少缓冲队列的级数,从而减少缓冲队列的面积和功耗,同时也简化了其控制逻辑和判断逻辑。同理,在流水线条数较多、性能要求较高的情况下也可以增加缓冲队列的级数。在本发明实施例中,可以根据具体应用针对多条流水线中的一条或其中几条使用缓冲队列。
每一级缓冲队列中包含有数据位和附加信息位。数据位表示缓冲队列中存储的数据宽度。附加信息位包含有数据标志位和寄存器地址。数据标志位表示当前缓冲队列中的数据是否有效,当数据标志位表示有效时表明该缓冲队列中存储有要写入寄存器堆的数据,当数据标志位表示无效时表明该缓冲队列为空,可以将数据写入。当有效数据从某级缓冲队列中移出时,将该缓冲队列的数据标志位置为无效,但如果有数据存入该缓冲队列时,将其数据标志位置为有效。寄存器地址记录了数据将要写入寄存器堆中的寄存器地址,例如寄存器堆中的寄存器号(Register Number,RN)。
以三级缓冲队列A、B、C为例,每个缓冲队列中都有一个数据标志位V表示A、B、C中的数据是否有效。缓冲队列A、B、C中还包含了所要存储的数据、存储的数据宽度和寄存器地址,例如每级缓冲队列的数据宽度为64位,当存储的数据为双精度时将其占满,当存储单精度数据时将占用其低32位,寄存器地址的宽度为5位。
在本发明实施例中,当检测到寄存器堆当前存在空闲写端口时,如果缓冲队列中存在有效数据,优先将缓冲队列中的数据写入到寄存器堆中,同时将暂时无法写入寄存器堆的后续指令所在流水线中的数据写入到缓冲队列中,并更新缓冲队列的地址映射位向量。如果有多条流水线要进行写操作,但缓冲队列中没有足够的空间进行存储时,例如有两条流水线将要进行写寄存器堆操作而缓冲队列已满,或者三条流水线将要进行写寄存器堆操作而缓冲队列已满或只有一个空闲缓冲队列,则后续指令所在的流水线先停止写寄存器堆的操作,直到缓冲队列中有足够的缓冲空间可以使用。
在本发明实施例中,如果寄存器堆存在空闲写端口,流水线中的数据可以直接写入到寄存器堆,不写入缓冲队列,否则按照流水线中指令的顺序写入缓冲队列。将缓冲队列中的数据写入寄存器堆时,根据缓冲队列的优先级,按照先进先出的原则,例如缓冲队列A、B、C的优先级为C>B>A,数据写入缓冲队列的顺序也按此顺序进行,当缓冲队列A、B、C均为空,或缓冲队列C将为空时,将需要写入的数据写入到缓冲队列C中;如果要写入两个数据,则将数据写入到缓冲队列C与B中;如果优先级高的缓冲队列出现空闲状态,优先级低的缓冲队列中的数据将顺次前移,其时序示例如图1所示。
为了减小先写后读相关(Read After Write,RAW)所产生的后续指令等待读寄存器的时间,本发明实施例中,通过寄存器地址映射处理将缓冲队列配置为可提供数据前推的存储队列,即缓冲队列可以将存储的数据前推到发射级。在这种情况下,进入缓冲队列的数据就可以前推到发射级作为操作数使用,而不会因为缓冲队列中数据需要迟一些再写入寄存器堆而引起后续指令从寄存器堆中读该数据而产生停滞,并减小了读寄存器堆的频率,有助于减少寄存器堆的读端口。在本发明实施例中,缓冲队列中的寄存器地址纪录了数据将要写入寄存器堆中的寄存器地址,如果后续指令需要读取的寄存器地址与寄存器堆中的某个寄存器地址相匹配,例如寄存器地址相同,或者相吻合,即可将该数据进行前推操作。由于缓冲队列中的数据可以前推到发射级,所以数据写入缓冲队列即相当于写入了寄存器堆,该数据相关的后续指令即可发射。
在上述前推过程中,可能会发生前后两条指令的写入寄存器堆的目标寄存器相同,前指令要写入的数据从缓冲队列中流出要进行写操作,同时后指令从流水线中流出要进行写操作而导致冲突的情况。这种情况发生的概率极小,要求流水线比较短使后面的指令很快从流水线输出,同时前面的指令在缓冲队列中运行很长时间。假设数据经过最短的装载/存储流水线中执行级、存储器1级和存储器2级这三级即可进行写回操作,所以发生上述情况的只有一种可能,如图2所示,前后两条指令要写寄存器堆的同一寄存器,并且缓冲队列A、B、C中都有数据,此时前面的指令结果写入缓冲队列A中,同时后面的指令解除停滞状态进入执行级,前面的指令经过缓冲队列A、B、C,前面的数据从缓冲队列C写入寄存器堆,后面的数据流出流水线,其余流水线不会产生该情况。
显然,此时后面的数据将是有效数据,而前面要写入寄存器堆的数据是旧的无效数据,在本发明实施例中,对于上述情况可以选择采取如下方式之一解决:
1.在装载/存储流水线的存储器2级对缓冲队列C进行探测,查看是否有要写入的寄存器堆号相同,是则将装载/存储流水线中的数据写入到寄存器堆或缓冲队列相应的寄存器中,而缓冲队列C中的该数据将被删除。
2.不予处理。由于缓冲队列C中的旧数据将写入寄存器堆中,而装载/存储流水线中的新数据会写入到缓冲队列中,如果有指令读该寄存器中的数据时会先查看是否在缓冲队列中,所以读取的是缓冲队列中的新数据。
3.将缓冲队列级数减少到2级,即删除缓冲队列C,由于缓冲队列优先级高于流水线优先级,所以后面的指令没到达写回级时缓冲队列中的已经写入寄存器堆,不会同时写同一个寄存器。
寄存器堆写端口的位数配置为写入寄存器堆的数据的最大位数,为了提高寄存器堆写端口的利用率,在本发明实施例中,将寄存器堆的写端口配置为多个独立的子端口,每个子端口可以接收位数小于或者等于其端口位数的数据。当写入的数据位数小于等于子端口的位数时,将数据写入一个空闲的子端口内,通过该子端口写入寄存器堆。例如写入寄存器堆中的数据一般为64位双精度或32位单精度/整型数据,将寄存器堆写端口配置为64位,并将该64位的写端口拆分成两个独立的32位写端口。此时,如果写入一个32位的数据,则使用一个32位写端口,另一个32位写端口即可不工作,减少了处理器的功耗和对寄存器堆的访问时间。同时,寄存器堆写端口可以同时写两个不相关的32位数据,提高了端口的利用率,从而提高了数据的存储速度。
作为本发明的一个实施例,为了提高缓冲队列的利用率,将缓冲队列配置为多个寄存器的组合,每个寄存器缓存位数小于或者等于其位数的数据,当缓存的数据的位数小于或者等于寄存器的位数时,将数据存储到缓冲队列中未被占用的寄存器内,当缓存的数据的位数大于寄存器的位数时,将数据存储到缓冲队列中对应位数的寄存器组合内。例如将缓冲队列A、B、C均配置为两个32位寄存器的组合,如果要存储一个64位双精度数据,则将其存储到缓冲队列A、B、C中完全没有被占用的64位寄存器,当只需存储一个32位单精度或是整型数据时,只需将其存储到缓冲队列中的低32位寄存器。
为了使两个不相关的32位数据可以同时写入寄存器堆,当某条流水线将要写入寄存器堆的数据为32位数据,并且缓冲队列中或其他某条流水线也同时要写32位数据时,则将该两个独立的数据分别从寄存器堆写入端口的低32位和高32位写入寄存器堆,即相当于将这两个32位数据组合起来同时写入。在写寄存器堆时,由于缓冲队列的优先级高于三条流水线的优先级,所以缓冲队列中含有有效数据时先将缓冲队列中的数据写入到寄存器堆,即将缓冲队列C中的数据写入寄存器堆,此时如果缓冲队列C中的数据为32位数据,则查看缓冲队列B、A和三条流水线同时要写入的数据是否为32位,是则将该两个32位数据同时写入寄存器堆。当缓冲队列为空时,三条流水中有两条指令同时要写寄存器堆的数据均为32位时,则将这两个数据同时写入寄存器堆。
为了提高缓冲队列的利用率,并减少写寄存器堆时进行的上述判断,在本发明实施例中,缓冲队列中也采用类似的存储方式。例如当缓冲队列A、B和C中两级缓冲队列存储的都是32位有效数据时,可以将这两个32位数据合并到优先级高的缓冲队列中,或者当缓冲队列A、B和C中某级缓冲队列中存储是32位有效数据,并且某条流水线要写入寄存器堆的数据也为32位时,则可以将这两个32位数据合并到该缓冲队列中。如图3所示,其中缓冲队列A、B、C存储有有效数据,缓冲队列中的数字代表存储的数据,缓冲队列B中存储的是一个32位的单精度或整型数据。流水线1将要写入32位数据,流水线2不进行写操作,流水线3将要写入64位数据。在下一个时钟上升沿到来时,缓冲队列C中的64位数据写入到寄存器堆中,缓冲队列B、A中的数据顺次下移,来自流水线3的双精度数据写入到缓冲队列A,来自流水线1的32位数据写入到缓冲队列C的高32位,避免了流水线1的停滞。数据的通路控制在流水线执行级的最后一级进行判断,此时即可知道流水线在下一个时钟周期是否将数据以及哪种类型的数据写入到寄存器堆中,在下一级写回级即可进行相应的操作。
在本发明实施例中,由于缓冲队列中采用了寄存器合并的方法,可以将缓冲队列的数据宽度作为一个整体处理,此时缓冲队列的寄存器地址的判断更简单。以缓冲队列C为例,其可以存储一个64位双精度寄存器或两个32位数据,如果缓冲队列C中只有一个32位数据,则存储在低32位寄存器中,因此低32位中的数据标志位V为1,高32位中的数据标志位V为0。如果有两个不相关的32位数据,高32位和低32中的数据标志位都为1。当缓冲队列C中存储有一个64位双精度数据时,将高32位中的数据标志位V置为1,低32位中的数据标志位V置为0,此时可以将缓冲队列C的64位作为一个整体处理,高32位中寄存器地址的高4位为有效地址,寄存器地址的判断更简单。
其中,缓冲队列中高、低32位的数据标志位所表示的意义如表1所示:
高32位数据标志位 | 低32位数据标志位 | 含义 |
0 | 0 | 整体为空 |
0 | 1 | 只有一个32位单精度数据存储在低32位中 |
1 | 0 | 存储一个64位双精度数据 |
1 | 1 | 存储两个不相关32位单精度数据 |
图4示出了本发明实施例提供的数据处理器的结构,为了便于说明,仅示出了与本发明实施例下相关的部分。
该处理器包含有多条流水线41,每条流水线根据指令对操作数进行处理,并将处理结果输出到寄存器堆43或者内存。
缓冲单元42缓存因寄存器堆43的写端口已全部被占用暂时无法写入寄存器堆43的后续指令所在流水线中的数据。为了实现数据写入到缓冲单元42相当于写入到了寄存器堆43的操作,缓存了寄存器堆43的数据的缓冲单元42通过一个地址映射位向量映射到寄存器堆43中的相应地址上。缓冲单元42可以是一级,也可以是由n级级联的子缓冲单元组成,每级子缓冲单元的优先级不同,n为大于等于2的自然数。将缓冲队列中的数据写入寄存器堆时,根据缓冲队列的优先级,按照先进先出的原则,数据写入缓冲队列的顺序也按此顺序进行,如果优先级高的缓冲队列出现空闲状态,优先级低的缓冲队列中的数据将顺次前移。在本发明实施例中,可以对多条流水线中的一条流水线或其中几条流水线中的数据进行缓存处理。
为了减小先写后读相关所产生的后续指令等待读寄存器的时间,本发明实施例中,缓冲单元42为可提供数据前推的存储队列,如果数据前推控制器421检测到后续指令读取的寄存器地址与寄存器堆43中的相应寄存器地址相匹配,则将缓冲单元42缓存的对应数据前推至发射级。
写控制单元44检测寄存器堆43的写端口状态,在检测到寄存器堆43当前没有空闲写端口时,根据指令顺序,将当前指令所在流水线中的数据缓存到缓冲单元42,在检测到寄存器堆43存在空闲写端口时,优先将缓冲单元42缓存的数据写入寄存器堆43。
作为本发明的一个实施例,当缓冲单元42包括n级(n为大于或等于2的自然数)级联的子缓冲单元时,数据写入时,写控制单元44根据子缓冲单元的优先级顺序,将流水线中的数据写入较高优先级的子缓冲单元,在寄存器堆43存在空闲写端口时,将最高优先级子缓冲单元缓存的数据写入寄存器堆43,并将低优先级子缓冲单元缓存的数据顺次前移至高优先级子缓冲单元。
在检测到寄存器堆43当前存在空闲写端口时,控制器441根据流水线中的指令的先后顺序,以及缓冲单元42的数据缓存状态,输出流水线数据写控制信号、缓存数据写控制信号或者寄存器堆写控制信号。流水线数据写控制信号用来控制将对应流水线中的数据写入寄存器堆43的空闲写端口。缓存数据写控制信号用来控制将对应流水线中的数据写入缓冲单元42,寄存器堆写控制信号用来选择将对应流水线中的数据或者缓冲单元42中的数据写入寄存器堆的空闲写端口。多路选择单元442根据控制器441输出的流水线数据写控制信号、缓存数据写控制信号或者寄存器堆写控制信号,选择输出对应的数据。
根据不同的应用情况,多路选择单元442可以包括多个流水线数据多路选择器4421、至少一个缓存数据多路选择器4422和至少一个寄存器堆多路选择器4423。流水线数据多路选择器4421根据控制器441输出的流水线数据写入控制信号,选择当前指令所在流水线中的数据输出至寄存器堆43的空闲写端口。缓存数据多路选择器4422根据控制器441输出的缓存数据写控制信号选择当前指令所在流水线中的数据写入缓冲单元42。寄存器堆多路选择器4423根据控制器441输出的寄存器堆写入控制信号选择当前指令所在流水线中的数据或者缓冲单元42缓存的数据写入寄存器堆43的空闲写端口。
寄存器堆43的写端口的位数配置为写入寄存器堆43的数据的最大位数,在本发明实施例中,寄存器堆43的写端口包括多个独立的子端口,每个子端口可以接收位数小于或者等于其端口位数的数据,使得寄存器堆43的写端口可以同时写多个不相关的数据,提高了端口的利用率。
为了提高缓冲队列的利用率,在本发明实施例中,将缓冲单元42配置为多个寄存器的组合,每个寄存器缓存位数小于或者等于其位数的数据。
以下以浮点协处理器为例说明本发明实施例的具体实现,如图5所示,为了便于说明,仅示出了与本发明实施例相关的部分。
作为本发明的一个示例,该浮点协处理器中有三条独立工作的流水线:浮点乘加流水线(Floating-point Multiply and Accumulate,FMA),进行除了除法和开方运算的所有算数和逻辑运算;浮点除法开方流水线(Floating-point Divideand Square root,FDS),用于浮点的除法和开方运算;装载/存储流水线(Load/Store,LS),完成寄存器堆与浮点处理器外部的数据交换。
协处理器通过主处理器的完成队列(finish queue)中的控制信号按照指令原有的顺序来更新程序指针寄存器(Program Counter,PC),而协处理器自身不负责PC的更新,三条流水线乱序执行并可以乱序完成,对寄存器堆的写操作具有随机的特点。
寄存器堆由32个32位寄存器组成,由于写入寄存器堆中的数据一般为64位双精度或32位单精度/整型数据,作为本发明的一个实施例,将寄存器堆写端口配置为64位,并将该64位的写端口拆分成两个独立的32位写端口。此时,如果写入一个32位的数据,则使用一个32位写端口,另一个32位写端口即可不工作,减少了处理器的功耗和对寄存器堆的访问时间。同时,寄存器堆写端口可以同时写两个不相关的32位数据,提高了端口的利用率,从而提高了数据的存储速度。
该浮点协处理器具有三级缓冲单元A、B、C,均为两个32位寄存器的组合,可以存储一个64位双精度寄存器或两个32位数据。如果要存储一个64位双精度数据,则将其存储到缓冲单元A、B、C中完全没有被占用的64位寄存器,当只需存储一个32位单精度或是整型数据时,只需将其存储到缓冲单元中的低32位。缓冲单元A、B、C的优先级依次为C>B>A,缓冲单元C与寄存器堆连接。
控制器有九个输入端口,分别检测三条流水线和缓冲队列的三级缓冲单元A、B、C的状态,其输出的控制信号控制数据的流向。其中,控制信号9控制多路选择器9将流水线中的低32位数据还是缓冲单元C中数据的低32位写入到寄存器堆中,控制信号10控制多路选择器10将流水线中的高32位数据还是缓冲单元C中数据的高32位写入到寄存器堆中。如果将流水线中的数据写入到寄存器堆,控制信号1和2分别控制多路选择器1和2将相应流水线中的数据写入到寄存器堆中。如果将缓冲单元中的数据写入到寄存器堆,则将缓冲单元中的最高优先级缓冲单元C中的数据写入到寄存器堆中。通过控制信号9和10的控制可以将流水线中或缓冲单元中64位数据写入寄存器堆,也可以将流水线中的32位数据和缓冲单元中的32位数据同时写入到寄存器堆中。控制信号3至8分别控制多路选择器3至8将哪些数据写入到缓冲单元A、B、C中的高32位和低32位。
本发明实施例以一个具有三条流水线的浮点协处理器为例对本实施例下的处理器的结构进行了说明,流水线的条数、缓冲单元的级数可以根据不同的应用进行灵活调整。显然,上述示例不失一般性,据此可以容易获知其他应用下的处理器结构,具体实现不再赘述。
本发明实施例通过将暂时无法写入寄存器堆的指令所在流水线中的数据缓存,可以减少寄存器堆写端口的数量,从而大幅度的减小寄存器堆的功耗,并有利于降低芯片面积,而且能在减少写寄存器端口的同时不影响指令在流水线中的运行速度,提高系统的性价比。在写寄存器堆的缓冲队列支持数据前推,并通过地址映射处理实现了写入到缓冲队列相当于写入到了寄存器堆,减少了指令等待操作数的时间,提高了运算速度。同时,有利于减少对寄存器堆的读操作,从而有助于减少寄存器堆读端口的数量和对寄存器堆进行读操作时带来的资源冲突。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (12)
1、一种数据处理方法,其特征在于,所述方法包括下述步骤:
检测寄存器堆当前是否存在空闲写端口;
如果寄存器堆当前没有空闲写端口,则根据写寄存器堆的指令顺序,将当前写寄存器堆的指令所在流水线中的数据缓存;所述流水线中的数据通过n级级联的缓冲队列缓存,级联的缓冲队列之间具有不同的优先级,其中n为大于或等于2的自然数;数据缓存时,按缓冲队列的优先级顺序写入对应的缓冲队列;
如果寄存器堆当前存在空闲写端口,则优先将缓存的数据写入寄存器堆。
2、如权利要求1所述的数据处理方法,其特征在于,所述流水线中的数据通过一级缓冲队列缓存。
3、如权利要求1所述的数据处理方法,其特征在于,具体的,当检测到寄存器堆当前存在空闲写端口时,根据缓冲队列的优先级,按照先进先出的顺序,将优先级高的缓冲队列中的数据写入寄存器堆,并将优先级低的缓冲队列中的数据顺次前移至空闲的优先级高的缓冲队列。
4、如权利要求2或3所述的数据处理方法,其特征在于,所述缓冲队列由至少两个寄存器组合而成;
当缓存的数据的位数小于或者等于寄存器的位数时,将数据存储到缓冲队列中未被占用的寄存器内,当缓存的数据的位数大于寄存器的位数时,将数据存储到缓冲队列中未被占用的对应位数的寄存器组合内。
5、如权利要求1所述的数据处理方法,其特征在于,在对数据进行缓存时,所述方法进一步包括下述步骤:
如果后续指令读取的寄存器地址与寄存器堆中的相应寄存器地址相匹配,则将缓存的对应数据前推至发射级。
6、如权利要求1所述的数据处理方法,其特征在于,所述寄存器堆的写端口配置为至少两个独立的子端口,当写入的数据位数小于等于子端口的位数时,将数据通过一个空闲的子端口写入所述寄存器堆。
7、一种数据处理器,用于对流水线的数据进行处理,其特征在于,所述数据处理器包括:
寄存器堆,用于寄存流水线对操作数的处理结果;
缓冲单元,用于缓存指令所在流水线中的数据,包括n级级联的子缓冲单元,级联的子缓冲单元之间具有不同的优先级,其中n为大于或等于2的自然数;以及
写控制单元,用于检测寄存器堆当前的写端口状态,在寄存器堆当前没有空闲写端口时,根据写寄存器堆的指令顺序,将当前写寄存器堆的指令所在流水线中的数据缓存至所述缓冲单元,在寄存器堆当前存在空闲写端口时,优先将所述缓冲单元缓存的数据写入所述寄存器堆。
8、如权利要求7所述的数据处理器,其特征在于,所述缓冲单元包括:
数据前推控制单元,用于在对数据进行缓存时,如果检测到后续指令读取的寄存器地址与寄存器堆中的相应寄存器地址相匹配,将所述缓冲单元中缓存的对应数据前推至发射级。
9、如权利要求7所述的数据处理器,其特征在于,所述缓冲单元由至少两个寄存器组合而成,每个寄存器用于存储位数小于或者等于其位数的数据。
10、如权利要求7所述的数据处理器,其特征在于,所述写控制单元包括:
控制器,用于检测寄存器堆当前的写端口状态、流水线中的指令的先后顺序,以及所述缓冲单元的数据缓存状态,输出控制将对应流水线中的数据写入所述寄存器堆的空闲写端口的流水线数据写控制信号、控制将对应流水线中的数据写入所述缓冲单元的缓存数据写控制信号,或者控制将对应流水线中的数据或者所述缓冲单元中的数据写入寄存器堆的空闲写端口的寄存器堆写控制信号;以及
多路选择单元,用于选择输出与所述流水线数据写控制信号、缓存数据写控制信号或者寄存器堆写控制信号对应的数据。
11、如权利要求10所述的数据处理器,其特征在于,所述多路选择单元进一步包括:
多个流水线数据多路选择器,用于选择与流水线数据写入控制信号对应的当前指令所在流水线中的数据,写入所述寄存器堆的空闲写端口;
至少一个缓存数据多路选择器,用于选择与缓存数据写控制信号对应的当前指令所在流水线中的数据,写入所述缓冲单元;以及
至少一个寄存器堆多路选择器,用于选择与寄存器堆写入控制信号对应的当前指令所在流水线中的数据或者所述缓冲单元缓存的数据,写入所述寄存器堆的空闲写端口。
12、如权利要求7所述的数据处理器,其特征在于,所述寄存器堆的写端口包括至少两个独立的子端口,每个所述子端口用于接收位数小于或者等于其端口位数的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100769822A CN100555216C (zh) | 2007-09-12 | 2007-09-12 | 一种数据处理方法及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100769822A CN100555216C (zh) | 2007-09-12 | 2007-09-12 | 一种数据处理方法及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101122851A CN101122851A (zh) | 2008-02-13 |
CN100555216C true CN100555216C (zh) | 2009-10-28 |
Family
ID=39085196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100769822A Expired - Fee Related CN100555216C (zh) | 2007-09-12 | 2007-09-12 | 一种数据处理方法及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100555216C (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923386B (zh) * | 2010-08-18 | 2012-08-29 | 北京君正集成电路股份有限公司 | 一种降低cpu功耗的方法及一种低功耗cpu |
CN101930281B (zh) * | 2010-08-18 | 2012-08-29 | 北京君正集成电路股份有限公司 | 一种降低cpu功耗的方法及一种低功耗cpu |
CN102487354A (zh) * | 2010-12-02 | 2012-06-06 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
CN103163407B (zh) * | 2011-12-13 | 2016-08-24 | 浙江明凯照明有限公司 | 一种测试系统中多个测试通道的转换方法 |
CN109002159B (zh) * | 2018-06-28 | 2020-12-25 | 珠海全志科技股份有限公司 | 一种cpu的状态控制电路及方法 |
CN109614145B (zh) * | 2018-10-18 | 2021-03-09 | 中国科学院计算技术研究所 | 一种处理器核心结构及数据访存方法 |
CN111290786B (zh) * | 2018-12-12 | 2022-05-06 | 展讯通信(上海)有限公司 | 一种信息处理方法、设备及存储介质 |
CN110647361B (zh) * | 2019-09-09 | 2021-08-27 | 中国人民解放军国防科技大学 | 一种空闲物理寄存器的获取方法和装置 |
CN111104166B (zh) * | 2019-12-13 | 2022-09-06 | 北京新忆科技有限公司 | 寄存器的写入方法和写入装置 |
CN113467702A (zh) * | 2020-03-31 | 2021-10-01 | 上海商汤智能科技有限公司 | 数据处理装置、集成电路和ai加速器 |
CN112463217B (zh) * | 2020-11-18 | 2022-07-12 | 海光信息技术股份有限公司 | 超标量处理器中寄存器堆共享读端口的系统、方法和介质 |
CN114185513B (zh) * | 2022-02-17 | 2022-05-20 | 沐曦集成电路(上海)有限公司 | 数据缓存装置和芯片 |
CN115421788B (zh) * | 2022-08-31 | 2024-05-03 | 苏州发芯微电子有限公司 | 寄存器堆系统、方法及使用该寄存器堆的汽车控制处理器 |
CN116185499B (zh) * | 2023-04-27 | 2023-07-25 | 深圳鲲云信息科技有限公司 | 寄存器数据传输方法、寄存器缓存模块、智能设备和介质 |
-
2007
- 2007-09-12 CN CNB2007100769822A patent/CN100555216C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101122851A (zh) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100555216C (zh) | 一种数据处理方法及处理器 | |
KR100323374B1 (ko) | 부동소숫점유니트에서의다이나믹레지스터관리장치및그방법 | |
CN101055644B (zh) | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 | |
US7418575B2 (en) | Long instruction word processing with instruction extensions | |
US7716455B2 (en) | Processor with automatic scheduling of operations | |
CN102855121B (zh) | 分支处理方法与系统 | |
CN102141905A (zh) | 一种处理器体系结构 | |
US20070192576A1 (en) | Circular register arrays of a computer | |
CN101689105A (zh) | 运用平凡算术运算的处理器 | |
CN1306642A (zh) | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 | |
US20100023730A1 (en) | Circular Register Arrays of a Computer | |
GB2496934A (en) | Multi-stage register renaming using dependency removal and renaming maps. | |
US5404558A (en) | Data driven type information processor having a plurality of memory banks | |
US20030005261A1 (en) | Method and apparatus for attaching accelerator hardware containing internal state to a processing core | |
CN102262611B (zh) | 一种16位的risc cpu系统结构 | |
US20180324112A1 (en) | Joining data within a reconfigurable fabric | |
CN86106713A (zh) | 具有内部单元控制和处理的阵列结构 | |
US8555097B2 (en) | Reconfigurable processor with pointers to configuration information and entry in NOP register at respective cycle to deactivate configuration memory for reduced power consumption | |
CA2420785C (en) | Computer system for processing instructions each containing a group of operations to be executed out of order | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
CN100498970C (zh) | 读改写并发处理系统及读改写并发处理方法 | |
US8631173B2 (en) | Semiconductor device | |
US20210019079A1 (en) | Systems and methods for implementing a random access augmented machine perception and dense algorithm integrated circuit | |
CN100362839C (zh) | 基于流水线的多队列顺序化缓冲管理电路及方法 | |
CN103235762A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091028 |