运算单元、处理器和处理器体系结构.pdf

上传人:t**** 文档编号:1006112 上传时间:2018-03-25 格式:PDF 页数:119 大小:4.70MB
返回 下载 相关 举报
摘要
申请专利号:

CN200780052666.X

申请日:

2007.05.17

公开号:

CN101689108A

公开日:

2010.03.31

当前法律状态:

终止

有效性:

无权

法律详情:

专利权的视为放弃IPC(主分类):G06F 9/38放弃生效日:20100331|||实质审查的生效IPC(主分类):G06F 9/38申请日:20070517|||公开

IPC分类号:

G06F9/38

主分类号:

G06F9/38

申请人:

富士通株式会社

发明人:

吉沢英树

地址:

日本神奈川县

优先权:

专利代理机构:

北京三友知识产权代理有限公司

代理人:

黄纶伟

PDF下载: PDF下载
内容摘要

本发明提供运算单元、处理器和处理器体系结构。在处理器(1)的执行阶段中进行规定位长的运算的运算单元(17)具有:多个部分运算单元(201~204),其在分别不同的流水线阶段中执行通过在位方向上对规定位长的运算进行分割得到的各运算;以及多个流水线寄存器(211~213、221~227、231~237、241~246),其分别划分各流水线阶段之间,各流水线寄存器(211~213、221~227、231~237、241~246)以能够在与输入触发同步地更新输出值的触发模式、和直接输出输入值的透明模式这两个动作模式之间切换的方式动作。

权利要求书

1.  一种运算单元,该运算单元在处理器的执行阶段中进行规定位长的运算,该运算单元的特征在于,该运算单元具有:
多个部分运算单元,其在分别不同的流水线阶段中执行通过在位方向上分割所述规定位长的运算得到的各运算;以及
多个流水线寄存器,其分别划分各所述流水线阶段之间。

2.
  根据权利要求1所述的运算单元,其特征在于,
所述流水线寄存器以能够在与输入触发同步地更新输出值的触发模式、和直接输出输入值的透明模式这两个动作模式之间切换的方式动作。

3.
  一种处理器,该处理器具有权利要求1所述的运算单元,通过该运算单元进行执行阶段中的所述规定位长的运算,该处理器的特征在于,
所述部分运算单元的运算位长是通过将所述规定位长的运算N(N为2以上的整数)等分得到的位长,
该处理器具有时钟生成部,该时钟生成部使所述流水线阶段以具有如下周期的动作频率进行动作,该周期的长度为一个所述规定位长的运算所使用的期间的1/N倍。

4.
  一种处理器,该处理器具有权利要求2所述的运算单元,通过该运算单元进行执行阶段中的所述规定位长的运算,该处理器的特征在于,
所述部分运算单元的运算位长是通过将所述规定位长的运算N(N为2以上的整数)等分得到的位长,
该处理器具有:
时钟控制部,其使所述流水线阶段以具有如下周期的动作频率进行动作,该周期的长度为一个所述规定位长的运算所使用的期间的1/N倍;以及
流水线寄存器控制部,其根据所述约数,将各所述流水线寄存器的动作模式分别切换为所述触发模式和所述透明模式中的一种。

5.
  根据权利要求4所述的处理器,其特征在于,
所述时钟控制部根据在所述取得阶段中取得的命令所包含的运算执行数,来选择所述约数。

6.
  根据权利要求4所述的处理器,其特征在于,
该处理器具有同时发布多个运算命令的调度部,
所述时钟控制部根据由所述调度部同时发布的运算数,来选择所述约数。

7.
  一种处理器体系结构,该处理器体系结构用于如下的处理器,该处理器具有运算单元、和保持针对该运算单元的操作数和该运算单元的运算结果的寄存器文件,通过该运算单元进行执行阶段中的规定位长的运算,该处理器体系结构的特征在于,
所述运算单元由部分运算单元和流水线寄存器构成,该部分运算单元在分别不同的流水线阶段中执行通过在位方向上将所述规定位长的运算分割为N个(N为2以上的整数)得到的各运算,该流水线寄存器划分各所述流水线阶段之间,
所述寄存器文件由如下的存储元件构成,该存储元件具有能够在一个所述规定位长的运算所使用的期间内读写N次的存取等待时间。

8.
  根据权利要求7所述的处理器体系结构,其特征在于,
所述流水线寄存器由以能够在与输入触发同步地更新输出值的触发模式、和直接输出输入值的透明模式这两个动作模式间切换的方式动作的存储元件构成。

9.
  根据权利要求7所述的处理器体系结构,其特征在于,
设所述部分运算单元的运算位长为通过将所述规定位长的运算N等分得到的位长,
在所述处理器中设置时钟控制部,该时钟控制部使所述流水线阶段以具有如下周期的动作频率进行动作,该周期的长度为一个所述规定位长的运算所使用的期间的1/N倍。

10.
  根据权利要求7所述的处理器体系结构,其特征在于,
设所述部分运算单元的运算位长为通过将所述规定位长的运算N等分得到的位长,
在所述处理器中设置:
时钟控制部,其使所述流水线阶段以具有如下周期的动作频率进行动作,该周期的长度为一个所述规定位长的运算所使用的期间的1/N倍;以及
流水线寄存器控制部,其根据所述约数,将各所述流水线寄存器的动作模式分别切换为所述触发模式和所述透明模式中的一种。

11.
  根据权利要求10所述的处理器体系结构,其特征在于,
所述时钟控制部根据在所述取得阶段中取得的命令所包含的运算执行数,来选择所述约数。

12.
  根据权利要求10所述的处理器体系结构,其特征在于,
在所述处理器中设置同时发布多个运算命令的调度部,
所述时钟控制部根据由所述调度部同时发布的运算数,来选择所述约数。

说明书

运算单元、处理器和处理器体系结构
技术领域
本发明涉及能够并行执行多个命令的处理器的结构技术。
背景技术
作为通过同时执行多个命令来提高处理能力的处理器,公知有VLIW(超长形式机械命令:Very Long Instruction Word)处理器、超标量处理器。
图1是现有的VLIW处理器的概略结构图。VLIW处理器900具有:取得单元902,其在命令取得阶段(IF)中从命令存储器901中取得VLIW命令;解码器911~914,其在命令解码阶段(ID)中将VLIW命令解码为多个算术逻辑运算命令;多个算术逻辑运算单元(ALU)921~924,其在执行阶段(EX)中执行这些多个算术逻辑运算命令;以及寄存器930,其在写入阶段(WB)中存储运算结果。
图2是现有的超标量处理器的概略结构图。超标量处理器940在命令取得阶段和命令解码阶段之间具有命令调度器941。命令调度器941根据运算单元921~924的使用状况,动态地变更命令执行数和针对运算单元921~924的命令分配。
另外,在下述专利文献1中公开了如下的数据处理装置:使用能够变更输入输出接口的多个处理单元,构成能够独立动作的多个数据路径。
专利文献1:日本特开2004-102988号公报
在上述VLIW处理器和超标量处理器这种并行执行多个命令的处理器中,需要设置与能够并行执行的命令数的最大值相同数量的算术逻辑运算单元。
但是,预先准备的数量的算术逻辑运算单元全部使用的机会很少,通常的情况下,有些算术逻辑运算单元不使用或者执行NOP命令。因此,产生以下这种浪费。
第1,连接寄存器文件或存储单元与算术逻辑运算单元之间的数据路径,需要具有能够使所准备的算术逻辑运算单元全部与相同的寄存器或相同的存储器地址连接的连接自由度。一般地,与电路规模相比,芯片面积由布线面积或存储元件面积支配性地决定,所以,算术逻辑运算单元的实际装配数量增加时,数据路径的布线面积急剧增加。因此,实际装配了使用频度低的算术逻辑运算单元时,白白增加芯片面积。
第2,不使用的算术逻辑运算单元也消耗电力。因此,实际装配了使用频度低的算术逻辑运算单元时,产生无用的电力消耗。
发明内容
鉴于这些问题点,本发明的目的在于,削减处理器中的布线面积和消耗电力。
为了达成上述目的,在本发明中,对在处理器的执行阶段中进行的算术运算或逻辑运算等运算,进行位方向分割,由此分为多个部分运算。然后,进行在不同的流水线阶段中执行这些多个部分运算的流水线处理。
因此,本发明的第1方式的运算单元在处理器的执行阶段中进行规定位长的运算,该运算单元具有:多个部分运算单元,其在分别不同的流水线阶段中执行对规定位长的运算进行位方向分割后的各运算;以及多个流水线寄存器,其分别划分各流水线阶段之间。
对运算进行分割并通过流水线处理来执行,由此,能够利用单一的运算单元并行进行多个运算。因此,能够使用数量比现有的处理器少的运算单元并行进行多个运算,能够减少连接寄存器文件或存储单元与运算单元的数据路径的布线。
即,在现有的处理器中,对于在多个运算单元和寄存器文件等之间分别单独设置的数据路径而言,在各运算单元进行1个运算的周期(以下表示为“基本周期”)的期间一直被占有,但是,根据本发明,1个运算单元通过流水线处理并行执行多个运算,所以,在不同的定时产生为了进行这些运算而分别进行的针对寄存器文件等的存取。即,根据本发明,在1个基本周期中对在并行执行的多个运算中分别进行的针对寄存器文件等的存取进行时分复用,所以,在这些多个运算之间能够共用1个数据路径。
流水线寄存器可以由存储元件构成,该存储元件以能够在与输入触发(trigger)同步地更新输出值的触发模式(flip flop mode)、和直接输出输入值的透明模式(transparent mode)这两个动作模式间切换的方式动作。通过这样构成流水线寄存器,从而能够变更运算单元执行的流水线处理的流水线级数。由此,对运算单元并行执行的命令数进行加减,以必要最低限度的执行命令数进行处理,由此,能够节约消耗电力。
根据本发明的第2方式,提供通过第1方式的运算单元进行执行阶段中的规定位长的运算的处理器。这里,部分运算单元的运算位长是将规定位长的运算N(N为2以上的整数)等分的位长,处理器具有时钟生成部,该时钟生成部使流水线阶段以具有如下周期的动作频率的、N倍的动作频率进行动作,该周期的长度为规定位长的运算所使用的期间的1/N倍。
根据本发明的第3方式,提供通过运算单元进行执行阶段中的规定位长的运算的处理器的处理器体系结构。在本体系结构中,运算单元由部分运算单元和流水线寄存器构成,该部分运算单元在分别不同的流水线阶段中执行对规定位长的运算进行位方向分割后的各运算,该流水线寄存器划分各流水线阶段之间,存储针对运算单元的操作数和运算单元的运算结果的存储单元由如下的流水线阶段能够存取的存取等待时间的存储元件构成,该流水线阶段以具有如下周期的动作频率的整数倍的速度进行动作,该周期的长度为规定位长的运算所使用的期间的1/N倍。
根据本发明,削减了处理器中的布线面积和消耗电力。因此,特别地,在便携电话用LSI等这样要求省电的LSI、低成本的电子部件中,优选利用本发明的运算单元和处理器。
附图说明
图1是现有的VLIW处理器的概略结构图。
图2是现有的超标量处理器的概略结构图。
图3是现有的运算单元的示意图。
图4是本发明的运算单元的基本结构图。
图5是图4所示的流水线寄存器的概略结构图。
图6是并行数为1时的运算单元的动作的时序图。
图7是并行数为2时的运算单元的动作的时序图。
图8是并行数为4时的运算单元的动作的时序图。
图9是示出本发明的处理器的基本动作的示意图。
图10是示出本发明的VLIW处理器的实施例的概略结构图。
图11是示出命令存储器、程序计数器控制部、命令缓冲器、主解码器、运算部、WR解码器和时钟控制部之间的连接关系的图。
图12是示出主解码器、寄存器单元、LS解码器、数据存储器、地址运算器、运算部和时钟控制部之间的连接关系的图。
图13是示出运算部、WR解码器、程序计数器控制部、数据存储器和时钟控制部之间的连接关系的图。
图14是程序计数器控制部的概略结构图。
图15是主解码器的概略结构图。
图16是例示出由本处理器解读的命令的种类的图。
图17A是单命令解码部的解码的说明图(其一)。
图17B是单命令解码部的解码的说明图(其二)。
图18A是并行命令解码部的解码的说明图(其一)。
图18B是并行命令解码部的解码的说明图(其二)。
图19是寄存器单元的概略结构图。
图20是运算部的概略结构图。
图21是时钟控制部的概略结构图。
图22是示出并行数从1变化为4时的取得阶段中的处理器的动作的时序图。
图23是示出并行数从1变化为4时的解码阶段中的处理器的动作的时序图。
图24是示出并行数从1变化为4时的执行阶段中的处理器的动作的时序图。
图25是示出并行数从1变化为4时的信号Ckw和BranchCntrl的变化的时序图。
图26是图21所示的时钟转换器140的概略结构图。
图27是图26所示的时钟转换器140的状态迁移图。
图28是示出图21所示的时钟转换器140的内部状态的时序图。
图29是示出图21所示的时钟转换器141~143的内部状态的时序图。
图30是示出图21所示的时钟转换器142、143的内部状态的时序图。
图31是图21所示的时钟转换器151的概略结构图。
图32是图21所示的时钟转换器151的状态迁移图。
图33是示出并行数从1变化为4时的时钟转换器151的内部状态的时序图。
图34是图21所示的时钟转换器152的状态迁移图。
图35是示出并行数从1变化为4时的时钟转换器152的内部状态的时序图。
图36是图21所示的时钟转换器153的状态迁移图。
图37是示出并行数从1变化为4时的时钟转换器153和154的内部状态的时序图。
图38是图21所示的时钟转换器154的状态迁移图。
图39是图21所示的模式切换信号生成部161的概略结构图。
图40是图21所示的模式切换信号生成部161的状态迁移图。
图41是示出并行数从1变化为4时的模式切换信号生成部161的内部状态的时序图。
图42是图21所示的模式切换信号生成部162的状态迁移图。
图43是图21所示的模式切换信号生成部163的状态迁移图。
图44是示出并行数从1变化为4时的模式切换信号生成部162和163的内部状态的时序图。
图45是示出并行数从1变化为2时的取得阶段中的处理器的动作的时序图。
图46是示出并行数从1变化为2时的解码阶段中的处理器的动作的时序图。
图47是示出并行数从1变化为2时的执行阶段中的处理器的动作的时序图。
图48是示出并行数从1变化为2时的时钟转换器151的内部状态的时序图。
图49是示出并行数从1变化为2时的时钟转换器152的内部状态的时序图。
图50是示出并行数从1变化为2时的时钟转换器153和154的内部状态的时序图。
图51是示出并行数从1变化为2时的模式切换信号生成部161的内部状态的时序图。
图52是示出并行数从1变化为2时的模式切换信号生成部162和163的内部状态的时序图。
图53是示出并行数从4变化为1时的取得阶段中的处理器的动作的时序图。
图54是示出并行数从4变化为1时的解码阶段中的处理器的动作的时序图。
图55是示出并行数从4变化为1时的执行阶段中的处理器的动作的时序图。
图56是示出并行数从4变化为1时的时钟转换器151的内部状态的时序图。
图57是示出并行数从4变化为1时的时钟转换器152的内部状态的时序图。
图58是示出并行数从4变化为1时的时钟转换器153和154的内部状态的时序图。
图59是示出并行数从4变化为1时的模式切换信号生成部161的内部状态的时序图。
图60是示出并行数从4变化为1时的模式切换信号生成部162和163的内部状态的时序图。
图61是示出并行数从2变化为4时的取得阶段中的处理器的动作的时序图。
图62是示出并行数从2变化为4时的解码阶段中的处理器的动作的时序图。
图63是示出并行数从2变化为4时的执行阶段中的处理器的动作的时序图。
图64是示出并行数从2变化为4时的时钟转换器151的内部状态的时序图。
图65是示出并行数从2变化为4时的时钟转换器152的内部状态的时序图。
图66是示出并行数从2变化为4时的时钟转换器153和154的内部状态的时序图。
图67是示出并行数从2变化为4时的模式切换信号生成部161的内部状态的时序图。
图68是示出并行数从2变化为4时的模式切换信号生成部162和163的内部状态的时序图。
图69是示出本发明的超标量处理器的实施例的概略结构图。
标号说明
201~204:部分运算单元;211~219、221~228、231~237:流水线寄存器。
具体实施方式
参照图3~图9说明本发明的运算单元的基本动作。图3是进行规定位长即M比特的运算的现有的运算单元的示意图,图4是进行与图3所示的运算单元相同的位长的运算的本发明的运算单元的基本结构图。图3所示的运算单元分别输入M比特的第1输入数据A和第2输入数据B以及运算码,在这些M比特的数据A和B之间,进行由运算码指定的算术运算或逻辑运算,输出M比特的运算结果S和表示进位等的产生的标志F。
图4所示的本发明的运算单元200分别输入M比特的第1输入数据A和第2输入数据B以及运算码,在这些M比特的数据A和B之间,进行由运算码指定的算术运算或逻辑运算,输出M比特的运算结果S和表示进位等的产生的标志F。
运算单元200具有分别进行在位方向上分割M比特运算后的部分运算的第1~第4部分运算单元201~204。在图4所示的结构例中,在位方向上将M比特运算分割为4个,设置进行各个部分运算的4个部分运算单元。但是,运算的分割数即部分运算单元的数量也可以不是4个,只要是2以上的任意的数即可。
在第1~第4部分运算单元201~204中分别输入有指定各个单元201~204应该执行的运算的种类的运算码。然后,第1部分运算单元201将M比特的输入数据A和B中分别从第0比特~第(M1-1)比特的M1比特的部分即A1和B1作为输入,进行由运算码指定的运算,输出M1比特的运算结果S1和进位C1。
第2部分运算单元202将输入数据A和B中分别从第M1比特~第(M2-1)比特的(M2-M1)比特的部分即A2和B2、以及来自第1部分运算单元201的进位C1作为输入,进行由运算码指定的运算,输出(M2-M1)比特的运算结果S2和进位C2。
第3部分运算单元203将输入数据A和B中分别从第M2比特~第(M3-1)比特的(M3-M2)比特的部分即A3和B3、以及来自第2部分运算单元202的进位C2作为输入,进行由运算码指定的运算,输出(M3-M2)比特的运算结果S3和进位C3。
第4部分运算单元204将输入数据A和B中分别从第M3比特~第(M-1)比特的(M-M3)比特的部分即A4和B4、以及来自第3部分运算单元203的进位C3作为输入,进行由运算码指定的运算,输出(M-M3)比特的运算结果S4和表示进位判定和零判定的结果的标志F。
另外,在以下的说明中,在表示多个比特的数据D中很靠下的下位的第m比特~很靠上的上位的第n比特的部分的数据的情况下,有时表记为D[n:m]。
各部分运算单元201~204利用不同的时钟循环时间来执行1个M比特运算中不同的部分运算,并且,各部分运算单元201~204在同一时钟循环时间中进行不同的M比特运算的部分运算,由此,运算单元200通过流水线处理来并行执行不同的M比特运算。因此,运算单元200具有用于保持分割后的输入数据A2~A4和B2~B4、运算码以及各部分运算单元201~203的运算结果的流水线寄存器211~219、221~228、231~237。然后,部分运算单元201~204利用由这些流水线寄存器211~219、221~228、231~237划分的多个流水线阶段执行运算。
将第1~第4部分运算单元201~204进行运算的流水线阶段分别表示为第1流水线阶段~第4流水线阶段。在第1流水线阶段和第2流水线阶段之间设有流水线寄存器211~219,在第2流水线阶段和第3流水线阶段之间设有流水线寄存器221~228,在第3流水线阶段和第4流水线阶段之间设有流水线寄存器231~237。
通过设置流水线寄存器211~219、221~228、231~237,从而运算单元200实现如下所述的流水线处理。假设在连续的4个循环Ti(i=0、1、2、3)中向运算单元200输入运算码COM#i以及M比特的输入值A(i)和B(i)。各流水线寄存器与循环Ti同步地锁存前级的流水线阶段的输出值并更新存储值。
在循环T3中,运算码COM#3、输入值A(3)[(M1-1):0]和B(3)[(M1-1):0]被输入到第1部分运算单元201。第1部分运算单元201将A(3)[(M1-1):0]和B(3)[(M1-1):0]作为输入,进行由运算码COM#3指定的运算。
其间,流水线寄存器211保持在循环T2中对运算单元200赋予的运算码COM#2。
并且,流水线寄存器212保持A(2)[(M2-1):M1],流水线寄存器213保持B(2)[(M2-1):M1],流水线寄存器214保持A(2)[(M3-1):M2],流水线寄存器215保持B(2)[(M3-1):M2],流水线寄存器216保持A(2)[(M-1):M3],流水线寄存器217保持B(2)[(M-1):M3]。
流水线寄存器218保持在循环T2中第1部分运算单元201运算的运算结果S1(2),流水线寄存器219保持该运算结果的进位C1(2)。第1部分运算单元201在循环T2中将A(2)[(M1-1):0]和B(2)[(M1-1):0]作为输入,进行由运算码COM#2指定的运算。
并且,在循环T3中,保持在流水线寄存器211中的运算码COM#2、保持在流水线寄存器212和213中的输入值A(2)[(M2-1):M1]和B(2)[(M2-1):M1]、以及循环T2中的第1部分运算单元201的运算结果的进位C1(2)被输入到第2部分运算单元202。然后,第2部分运算单元202将输入值A(2)[(M2-1):M1]和B(2)[(M2-1):M1]以及进位C1(2)作为输入,进行由运算码COM#2指定的运算。
其间,流水线寄存器221保持在循环T1中对运算单元200赋予的运算码COM#1。并且,流水线寄存器222保持A(1)[(M3-1):M2],流水线寄存器223保持B(1)[(M3-1):M2],流水线寄存器224保持A(1)[(M-1):M3],流水线寄存器225保持B(1)[(M-1):M3]。
然后,流水线寄存器226保持在循环T1中第1部分运算单元201运算的运算结果S1(1)。第1部分运算单元201在循环T1中将A(1)[(M1-1):0]和B(1)[(M1-1):0]作为输入,进行由运算码COM#1指定的运算。
并且,流水线寄存器227保持第2部分运算单元202在循环T2中进行的运算结果S2(1),流水线寄存器228保持其进位C2(1)。第2部分运算单元202在循环T2中将循环T1中的第1部分运算单元201的运算结果的进位C1(1)、以及A(1)[(M2-1):M1]和B(1)[(M2-1):M1]作为输入,进行由运算码COM#1指定的运算。
在循环T3中,保持在流水线寄存器221中的运算码COM#1、保持在流水线寄存器222和223中的输入值A(1)[(M3-1):M2]和B(1)[(M3-1):M2]、以及循环T2中的第2部分运算单元202的运算结果的进位C2(1)被输入到第3部分运算单元203。然后,第3部分运算单元203将输入值A(1)[(M3-1):M2]和B(1)[(M3-1):M2]以及进位C2(1)作为输入,进行由运算码COM#1指定的运算。
其间,流水线寄存器231保持在循环T0中对运算单元200赋予的运算码COM#0。并且,流水线寄存器232保持A(0)[(M-1):M3],流水线寄存器233保持B(0)[(M-1):M3]。
然后,流水线寄存器234保持在循环T0中第1部分运算单元201运算的运算结果S1(0)。第1部分运算单元201在循环T0中将A(0)[(M1-1):0]和B(0)[(M1-1):0]作为输入,进行由运算码COM#0指定的运算。
流水线寄存器235保持在循环T1中第2部分运算单元202运算的运算结果S2(0)。第2部分运算单元202在循环T1中将循环T0中的第1部分运算单元201的运算结果的进位C1(0)、以及A(0)[(M2-1):M1]和B(0)[(M2-1):M1]作为输入,进行由运算码COM#0指定的运算。
流水线寄存器236保持在循环T2中第3部分运算单元203运算的运算结果S3(0),流水线寄存器237保持其进位C3(0)。第3部分运算单元203在循环T2中将循环T1中的第2部分运算单元202的运算结果的进位C2(0)、以及A(0)[(M3-1):M2]和B(0)[(M3-1):M2]作为输入,进行由运算码COM#0指定的运算。
在循环T3中,保持在流水线寄存器231中的运算码COM#0、保持在流水线寄存器232和233中的输入值A(0)[(M-1):M3]和B(0)[(M-1):M3]、以及循环T2中的第3部分运算单元203的运算结果的进位C3(0)被输入到第4部分运算单元204。然后,第4部分运算单元204将输入值A(0)[(M-1):M3]和B(0)[(M-1):M3]以及进位C3(0)作为输入,进行由运算码COM#0指定的运算。然后,输出其运算结果S4(0)和标志F。
根据以上的说明可知,在由运算码COM#0指定的1个运算中,第0比特~第(M1-1)比特的部分通过第1部分运算单元201在循环T0中进行,第M1比特~第(M2-1)比特的部分通过第2部分运算单元202在循环T1中进行,第M2比特~第(M3-1)比特的部分通过第3部分运算单元203在循环T2中进行,第M3比特~第(M-1)比特的部分通过第4部分运算单元204在循环T3中进行。然后,各个运算结果同时在循环T3中从流水线寄存器234~236和部分运算单元204输出。
并且可知,在循环T3中,第1~第4部分运算单元201~204分别并行进行在循环T3~T0中输入到运算单元200中的不同的运算COM#0~3,运算单元200进行流水线处理。
图5是图4所示的流水线寄存器211的概略结构图。其他的流水线寄存器212~219、221~228、231~237也具有相同的结构。流水线寄存器211具有:触发器(FF)261,其与时钟信号CK同步地锁存n比特输入数据Din;以及复用器(MUX)262,其根据模式切换信号CKEN的值,选择触发器261的输出值和输入数据Din的一方作为流水线寄存器211的输出。在本结构例中,CKEN=“H”时,输出触发器261的输出值作为流水线寄存器211的输出,CKEN=“L”时,直接输出输入数据。
因此,流水线寄存器211在CKEN=H时,在与输入时钟CK同步地更新输出值的触发模式下动作,在CKEN=L时,在直接输出输入值的透明模式下动作。
在图4所示的运算单元200中,向第1流水线阶段和第2流水线阶段之间的流水线寄存器211~219提供相同的时钟信号φ20和相同的模式切换信号CKEN20。并且,向第2流水线阶段和第3流水线阶段之间的流水线寄存器221~228提供相同的时钟信号φ21和相同的模式切换信号CKEN21。向第3流水线阶段和第4流水线阶段之间的流水线寄存器231~237提供相同的时钟信号φ22和相同的模式切换信号CKEN22。
通过改变模式切换信号CKEN20~CKEN22的值来变更流水线寄存器的动作模式,由此,能够变更运算单元200的流水线级数即运算单元200的并行运算执行数。以下,有时将运算单元200并行执行的运算的数量表示为“并行数”。
当使全部的流水线寄存器在触发模式下动作时,运算单元200的流水线级数为4,运算单元200能够并行进行4个不同的运算。
当使流水线寄存器211~219和231~237在透明模式下动作、且使流水线寄存器221~228在触发模式下动作时,由流水线寄存器211~219划分的第1和第2流水线阶段成为1个流水线阶段,并且,流水线寄存器231~237划分的第3和第4流水线阶段成为1个流水线阶段,所以,运算单元200的流水线级数为2。
当使全部的流水线寄存器在透明模式下动作时,运算单元200已经不进行流水线处理,所以,运算单元200的并行数为1。
图6是并行数为1时的运算单元200的动作的时序图。矩形波“×1CLK”表示运算单元200完成1个M比特运算所使用的循环。因此,矩形波×1CLK的1周期为基本周期。
信号“CD0”表示输入到第1部分运算单元201的运算码,信号“CD1”表示输入到第2部分运算单元202的运算码,信号“CD2”表示输入到第3部分运算单元203的运算码,信号“CD3”表示输入到第3部分运算单元204的运算码。
并且,信号“A”和“B”表示输入到第1部分运算单元201和流水线寄存器212~217的输入数据。并且,“φ20”和“CKEN20”表示对流水线寄存器211~219赋予的时钟信号和模式切换信号,“φ21”和“CKEN21”表示对流水线寄存器221~228赋予的时钟信号和模式切换信号,“φ22”和“CKEN22”表示对流水线寄存器231~237赋予的时钟信号和模式切换信号。
如图所示,模式切换信号CKEN20~22都设定为“L”,全部的流水线寄存器在透明模式下动作。因此,全部的部分运算单元201~204同时执行分割1个M比特运算后的各部分运算,所以,运算单元200的并行数为1。并且,各时钟φ20~φ22的循环设定为与基本周期相同的长度。
图7是并行数为2时的运算单元200的动作的时序图。该情况下,为了在1个基本周期的期间并行执行2个运算,将各时钟φ20~φ22的循环设定为基本周期的1/2的长度,使运算单元200动作。
当前,假设在循环Ti(i=1、2、3)的前半部分,对运算单元200赋予命令#ia以及输入Aa(i)和Ba(i),在循环Ti的后半部分,对运算单元200赋予命令#ib以及输入Ab(i)和Bb(i)。
并且,将模式切换信号CKEN21设定为“H”,将模式切换信号CKEN20和22设定为“L”。因此,仅有包含第2部分运算单元202的第2流水线阶段和包含第3部分运算单元203的第3流水线阶段之间的流水线寄存器221~228作为触发器动作。因此,第1部分运算单元201和第2部分运算单元202同时执行相同的M比特运算的部分运算,第3部分运算单元203和第4部分运算单元204执行第1部分运算单元201运算的M比特运算的前1/2基本周期输入到运算单元200中的M比特运算的部分运算。这样,运算单元200通过流水线处理并行执行2个运算。
图8是并行数为4时的运算单元200的动作的时序图。该情况下,为了在1个基本周期的期间并行执行4个运算,将各时钟φ20~φ22的循环设定为基本周期的1/4的长度,使运算单元200动作。
当前,假设在运算单元200中,在循环Ti(i=1、2、3)的第1四分之一期间对运算单元200赋予命令#ia以及输入Aa(i)和Ba(i),在第2四分之一期间对运算单元200赋予命令#ib以及输入Ab(i)和Bb(i),在第3四分之一期间对运算单元200赋予命令#ic以及输入Ac(i)和Bc(i),在第4四分之一期间对运算单元200赋予命令#id以及输入Ad(i)和Bd(i)。
将模式切换信号CKEN20~22设定为“H”。因此,在全部的流水线阶段之间设置的流水线寄存器221~228作为触发器动作。因此,第2部分运算单元202执行第1部分运算单元201执行的M比特运算的之前的1/4基本周期的M比特运算的部分运算,第3部分运算单元203执行第2部分运算单元202执行的M比特运算的之前的1/4基本周期的M比特运算的部分运算,第4部分运算单元204执行第3部分运算单元203执行的M比特运算的之前的1/4基本周期的M比特运算的部分运算。这样,运算单元200通过流水线处理并行执行4个运算。
如上所述,运算单元200能够作为逐一进行M比特运算的运算单元动作,并且,能够作为并行进行2个或4个M比特运算的运算单元动作。
根据本发明的运算单元200,如图9所示,在执行阶段中进行将执行期间错开1/N基本周期来执行N个运算的N级流水线处理,由此,能够利用1个运算单元并行执行多个运算。因此,在VLIW处理器和超标量处理器中,能够通过比现有少的数量的运算单元并行执行多个运算,能够减少连接寄存器文件和存储单元与运算单元的数据路径的布线。
并且,根据本发明的运算单元200,能够根据需要增减在执行阶段中并行执行的运算数。通过以必要最低限度的执行命令数来进行处理,从而能够节约消耗电力。
以下,参照添加的附图说明本发明的实施例。图10是示出本发明的VLIW处理器的实施例的概略结构图。处理器1具有用于进行2个32比特的数据彼此的数值运算或逻辑运算的运算部17,该运算部17具有与参照图4说明的运算单元200相同的结构。
并且,处理器1具有:程序计数器(PC)控制部10,其控制程序计数器(PC);命令缓冲器(InstBuff)11,其保持从程序计数器所示的命令存储器500内的地址中取得的命令;以及主解码器12,其对从命令缓冲器11中取出的命令进行解码并生成中间码和操作数。
进而,处理器1具有:寄存器文件14,其存储储能器、通用寄存器和基址寄存器等各种寄存器;地址运算器15,其用于地址运算;LS解码器13,其从由主解码器12生成的中间码中取出执行码和操作数选择信号;以及复用器16,其根据操作数选择信号,由从寄存器文件14中读出的寄存器值、即值的操作数和从数据存储器501中读出的数据中的任一方中,选择针对运算部17的输入值。
处理器1具有:WR解码器18,其根据执行码所包含的代码生成分支控制信号和存储器写入控制信号;以及时钟控制部19,其根据基准时钟信号RefCLK,生成使处理器1的各部动作的时钟信号和变更运算部17的流水线级数的模式切换信号。
以下,参照图11~图13说明处理器1内的各要素间的连接关系。图11是示出命令存储器500、程序计数器控制部10、命令缓冲器11、主解码器12、运算部17、WR解码器18和时钟控制部19之间的连接关系的图。
时钟控制部19接收基准时钟信号RefCLK,生成具有与基准时钟信号RefCLK相同的周期和相位并确定命令缓冲器11的取得定时的取得定时时钟信号Ckf、以及使基准时钟信号RefCLK延迟1/8周期的主时钟MainCLK。
另外,在并行数为1时、即运算部17没有并行进行多个32比特运算时,运算部17以与取得定时时钟信号Ckf的周期相同的周期处理1个32比特运算。因此,有时将与取得定时时钟信号Ckf相同周期的时钟信号即基准时钟信号RefCLK和主时钟MainCLK的周围记为“基本周期ΔTb”。
并且,时钟控制部19生成比主时钟MainCLK快4倍的时钟信号×4CLK。时钟信号×4CLK的周期为ΔTb/4。
程序计数器控制部10从时钟控制部19接收主时钟MainCLK,与主时钟MainCLK同步地更新存储在内部的程序计数器的值,向命令存储器500输出程序计数器的值InstAddr。并且,从WR解码器18接收分支控制信号(BranchCntrl),从运算部17接收目的地地址。
命令缓冲器11读入存储在命令存储器500内的由程序计数器控制部10指定的地址InstAddr中的命令,向主解码器12输出该命令码(Code)和命令操作数(Operand)。
图12是示出主解码器12、寄存器文件14、LS解码器13、数据存储器501、地址运算器15、运算部17和时钟控制部19之间的连接关系的图。
主解码器12对VLIW命令即从命令缓冲器11接收到的命令码和命令操作数进行解码,输出包含用于指定运算部17执行的运算的种类的执行码在内的中间码和各操作数。
主解码器12对从命令缓冲器11接收到的VLIW命令进行解码后,检测这些命令所包含的运算数P#。该运算数P#表示在执行阶段即运算部17中并行执行的运算的数量。根据参照图4说明的运算单元200的说明中的术语的用法,有时P#也称为“并行数”。
从主解码器12的输出端子CodeS和CodeM、以及R0#S、R0#M、R1#S、R1#M、Ridx#、ImmD#和ImmA#输出的信号如下所述。
从输出端子CodeS和CodeM输出包含用于指定运算部17执行的运算的种类的执行码和目的寄存器的指定在内的中间码。并且,中间码还包含表示有无针对数据存储器501写入运算结果的存储器写入控制信号、以及伴随分支命令和跳过命令的分支控制信号。
在并行数P#=1时,主解码器12从输出端子CodeS向复用器31输出通过解码而生成的中间码。并且,在并行数P#>1时,从输出端子CodeM依次逐一向复用器31输出多个中间码。
从端子R0#S和R0#M输出指定第1源寄存器的寄存器编号,从端子R1#S和R1#M输出指定第2源寄存器的寄存器编号。在并行数P#=1时,主解码器12分别从输出端子R0#S和R1#S向复用器32和33输出第1和第2源寄存器的寄存器编号。
另一方面,在并行数P#>1时,主解码器12分别从输出端子R0#M和R1#M依次逐一向复用器32和33输出多个第1寄存器编号和第2源寄存器的寄存器编号。
主解码器12生成表示并行数P#是1还是大于1的选择信号Sel。复用器31根据选择信号Sel,将端子CodeS和CodeM中的任一方连接到寄存器41。针对寄存器41保持从所选择的端子输出的中间码CodeD。
复用器32根据选择信号Sel,将端子R0#S和R0#M中的任一方连接到寄存器42。针对寄存器42保持从所选择的端子输出的第1源寄存器的寄存器编号Rs0。
复用器33根据选择信号Sel,将端子R1#S和R1#M中的任一方连接到寄存器43。针对寄存器43保持从所选择的端子输出的第2源寄存器的寄存器编号Rs1。
从端子Ridx#输出数据传送命令用的基址寄存器的寄存器编号Ridx。并且,从端子ImmD#输出运算用的即值操作数IM。进而,从端子ImmA#输出数据传送命令用的偏置值ImmA。
另外,本实施例的处理器1禁止在并行命令即VLIW命令内包含数据传送命令和使用即值的运算命令,在从命令缓冲器11读入的VLIW命令是并行命令的情况下,不从端子Ridx#、ImmD#和ImmA#输出数据。
寄存器编号Ridx作为寄存器文件14的读出寄存器编号指定输入p2A,输入到寄存器文件14,由寄存器编号Ridx指定的基址寄存器的值从输出端口p2D0输出,并被地址运算器15接收。地址运算器15计算在接收到的基址寄存器的值中加上偏置值ImmA后得到的存储器地址。该存储器地址被寄存器文件14的输入端口p2Di接收,并保持在寄存器45中。并且,即值操作数IM保持在寄存器44中。
寄存器41~45是用于在针对寄存器文件14和数据存储器501的存取期间保持主解码器12的解码结果的寄存器。寄存器41~45与如后所述生成的解码结果保持定时时钟信号Ckd同步地,锁存上述各信号并更新保持内容。
从寄存器41输出的中间码CodeD被LS解码器13接收。LS解码器13取出指定运算部17执行的运算的种类的执行码CodeExe和选择第2操作数的操作数选择信号OperandSel。执行码CodeExe保持在寄存器51中。
从寄存器42和43输出的第1和第2源寄存器的寄存器编号Rs0和Rs1分别作为寄存器文件14的读出寄存器编号指定输入p0A和p1A,被寄存器文件14接收。
由寄存器编号Rs0指定的寄存器的内容RA从输出端口p0Do输出,作为运算部17的第1输入数据A保持在寄存器52中。
由寄存器编号Rs1指定的寄存器的内容RB从输出端口plDo输出,保持在复用器16中。
在复用器16中还输入有从寄存器44输出的即值操作数IM、以及通过从寄存器45输出的存储器地址而地址化的数据存储器501内的数据M。复用器16根据操作数选择信号OperandSel,选择这些数据RB、IM和M中的任一方,作为运算部17的第2输入数据B保持在寄存器53中。
寄存器51、52和53是先进先出(FIFO)缓冲器,与解码结果保持定时时钟信号Ckd同步地,分别锁存执行码CodeExe、第1输入数据A和第2输入数据B。然后,与命令投入定时时钟信号Cke同步地,依次取出当前存储的数据中最早输入的数据。
运算部17在2个输入数据A和B之间进行由执行码CodeExe指定的运算后,分别向寄存器文件14的输入端口p3Di和pfDi输出其运算结果S和标志F,并且,向寄存器文件14的写入寄存器编号指定输入p3A输出写入结果S的目的寄存器的寄存器编号Rd。
寄存器文件14与从时钟控制部19提供的寄存器更新时钟φ23同步地,更新在写入寄存器编号指定输入p3A中指定的寄存器和标志寄存器的值。
并且,数据存储器501从后述的WR解码器18中接收存储器写入控制信号WriteEnable信号。在存储器写入控制信号WriteEnable信号意味着指示针对数据存储器501的写入的情况下,数据存储器501存储运算部17的运算结果。
时钟控制部19生成主时钟MainCLK和时钟信号×4CLK,分别提供给数据存储器501和主解码器12。
并且,时钟控制部19接收主解码器12检测出的并行数P#。然后,根据接收到的并行数P#,生成解码结果保持定时时钟信号Ckd、命令投入定时时钟信号Cke和时钟φ23。
进而,时钟控制部19根据并行数P#,生成参照图4~图8说明的对运算部17赋予的时钟信号φ20~φ22和模式切换信号CKEN20~CKEN22。时钟控制部19的结构以及各时钟信号和模式切换信号的生成动作在后面叙述。
图13是示出运算部17、WR解码器18、程序计数器控制部10、数据存储器501和时钟控制部19之间的连接关系的图。
运算部17对从寄存器51输入的执行码CodeExe进行解码,输出从其中取出的代码CodeWrite、标志F以及运算结果S。寄存器61、62和63与从时钟控制部19提供的执行结果保持定时时钟Ckw同步地,输出代码CodeWrite、标志F以及运算结果S。代码CodeWrite是表示执行码CodeExe是否是分支命令和跳过命令、以及执行码CodeExe是否是向数据存储器501输出运算结果的命令的代码。
WR解码器18根据保持在寄存器61中的代码CodeWrite和保持在寄存器62中的标志F的结果,生成分支控制信号BranchCntrl和存储器写入控制信号WriteEnable。分支控制信号BranchCntrl被程序计数器控制部10接收,存储器写入控制信号WriteEnable被数据存储器501接收。
并且,在执行码CodeExe是分支命令或跳过命令的情况下,运算部17输出目的地地址JmpAddr作为运算结果S。因此,从寄存器63输出的运算结果S被提供给程序计数器控制部10。
从寄存器63输出的运算结果S还被提供给数据存储器501。在执行码CodeExe是向数据存储器501输出运算结果的命令的情况下,向数据存储器501写入运算部17的运算结果S。
图14是程序计数器控制部10的概略结构图。程序计数器控制部10具有:寄存器101,其保持程序计数器的值InstAddr;解码器102,其对分支控制信号BranchCntrl进行解码;复用器103,其根据解码器102的解码结果,在之前执行分支命令时好像没有选择JmpAddr的情况下,选择常数1;以及运算器104,其根据当前的程序计数器运算下一程序计数器。
图15是主解码器12的概略结构图。主解码器12具有:并行数信号产生部111、寄存器112、失速信号生成部113、以及Sel信号生成部114。
并行数信号产生部111检测从命令缓冲器11读入的命令码(Code)和命令操作数(Operand)所包含的运算命令数,生成并行数信号P#。
失速信号生成部113接收主解码器12在本次的取得定时接收的命令的并行数P#(0)和在上次的取得定时接收的命令的并行数P#(-1)。失速信号生成部113在上次接收的命令的并行数大于1(P#(-1)>1)、且上次接收的命令的并行数和本次接收的命令的并行数不同(P#(-1)≠P#(0))时,代替本次接收的命令,生成请求发布NOP命令的失速信号。失速信号被后述的单命令解码部115、并行命令解码部116和命令传送单元118接收。
Sel信号生成部114根据并行数P#,生成控制复用器31~33的切换动作的选择信号Sel。
并且,主解码器12具有:单命令解码部115、并行命令解码部116、命令队列117、以及命令传送单元118。
单命令解码部115在从命令缓冲器11读入的命令码(Code)和命令操作数(Operand)中仅包含1个运算命令时,对他们进行解码并生成1组的中间码和操作数。然后,向CodeS端子输出中间码,并且,向R0#S端子、R1#S端子、Ridx#端子、ImmD#端子和ImmA#端子输出操作数。并且,单命令解码部115在从失速信号生成部113接收失速信号的期间,停止所生成的中间码和操作数的输出和来自命令缓冲器11的命令的读入,发布NOP命令。
并行命令解码部116在命令码和命令操作数中包含多个运算命令时,对它们进行解码并生成多组的中间码和操作数。然后,向命令队列117输出这些中间码和操作数。并且,并行命令解码部116在从失速信号生成部113接收失速信号的期间,停止来自命令缓冲器11的命令的读入。
命令队列117保持由并行命令解码部116解码后的多组的中间码和操作数。然后,与命令传送单元118生成的命令传送触发信号同步地,依次一组一组地取出中间码和操作数,向CodeM端子、R0#M端子、和R1#M端子输出。
命令传送单元118接收时钟信号×4CLK和并行数P#(-1)。在并行数P#(-1)=4时,命令传送单元118将时钟信号×4CLK作为命令传送触发信号输出到命令队列117。由此,命令队列117以基本周期ΔTb的1/4周期,依次输出各个组的中间码和操作数的组。
并且,在并行数P#(-1)=2时,命令传送单元118将对时钟信号×4CLK进行二分频后的信号作为命令传送触发信号输出到命令队列117。由此,命令队列117以基本周期ΔTb的1/2周期,依次输出各个组的中间码和操作数。
命令传送单元118在从失速信号生成部113接收失速信号的期间,停止来自命令队列117的生成的中间码和操作数输出,从命令队列117发布NOP命令。
参照图16~图18说明主解码器12的解码动作。图16是例示出由本处理器1执行的命令的种类的图。由本处理器1执行的命令的形式例如被分类为命令类型1~命令类型6。
属于命令类型1的命令伴随2个源寄存器的指定R0和R1以及1个目的寄存器的指定S0,将2个源寄存器R0和R1的值之间的运算结果写入目的寄存器S0。该形式的命令例如是“add r0,r1,r2”,将寄存器r0和r1的值的和写入寄存器r2。
属于命令类型2的命令伴随1个目的寄存器的指定S0,进行基于目的寄存器S0的值的运算,将其结果写入目的寄存器S0。该形式的命令例如是“abs r2”,将寄存器r2的值的绝对值写入寄存器r2。
属于命令类型3的命令伴随1个源寄存器R0的指定、1个即值ImmD以及1个目的寄存器的指定S0,将源寄存器R0和即值ImmD之间的运算结果写入目的寄存器S0。该形式的命令例如是“add r0,-10,r2”,将寄存器r0的值和“-10”的和写入寄存器r2。
属于命令类型4的命令伴随基址寄存器的指定Ridx、偏置值ImmA以及1个寄存器的指定S0。该形式的命令例如是存储器传送命令“1d*(r0,10),r2”,将存储在通过在基址寄存器r0的值中加上偏置值10后的值所示的地址中的数据存储器501内的数据的内容传送到寄存器r2。
属于命令类型5的命令伴随即值ImmD。该形式的命令例如是跳到地址#100的跳过命令“jp#100”。
属于命令类型6的命令伴随寄存器即值ImmD和1个寄存器的指定R0。该形式的命令例如是“jp r0,#100”,是跳到在寄存器r0中加上100后的地址的跳过命令。
图17A和图17B是单命令解码部115的解码的说明图。图17A所示的各命令、“add r0,r1,r2”(命令1)、“abs r2”(命令2)、“add r0,-10,r2”(命令3)、“ld*(r0,10),r2”(命令4)、“jp#100”(命令5)、“jp r0,#100”(命令6)都是并行数为1的命令。
因此,包含这些命令的命令码Code和命令操作数Operand由单命令解码部115解码。当主解码器12以图示的取得顺序接收到分别包含上述命令1~命令6的命令码Code和命令操作数Operand后,单命令解码部115将这些命令分别转换为1组中间码和操作数。单命令解码部115分别向图17B的表所示的CodeS端子、R0#S端子、R1#S端子、Ridx#端子、ImmD#端子和ImmA#端子输出中间码和操作数。
另外,如上所述,中间码包含“add”或“abs”这种指定运算部17执行的运算的种类的执行码和目的寄存器的指定。因此,图17B所示的表示出从CodeS端子输出目的寄存器的指定的情况。图18B中也同样。
图18A和图18B是并行命令解码部116的解码的说明图。图18A所示的命令“SAA r0,r1,r2”是在寄存器r2的值中加上寄存器r0和r1的值的差的绝对值的命令。
这里,运算部17实际不装配通过一次运算而完成命令“SAA”的数值逻辑运算单元,组合3个运算
在寄存器r7中存储减法运算r0-r1的结果(运算1)
在r7中存储寄存器r7的值的绝对值(运算2)
在寄存器r2中存储寄存器r7和寄存器r2的值的和(运算3)
来执行该命令,命令“SAA”的并行数为3。
因此,包含这些命令的命令码和命令操作数由并行命令解码部116解码。当主解码器12针对命令“SAA”接收到命令码Code和命令操作数Operand后,单命令解码部115将命令“SAA”转换为必要的3组中间码和操作数。
具有与图4所示的运算单元200相同的结构的运算部17能够作为并行数为1即单一的运算单元动作,或者,能够并行运算2个或4个运算。因此,在对并行数为3的命令“SAA”进行解码时,并行数信号产生部111生成并行数信号“P#=4”,单命令解码部115向命令队列117输出上述3组中间码和操作数以及1个NOP命令。
命令队列117与具有基本周期ΔTb的1/4周期的命令传送触发信号同步地,分别向图18B的表所示的CodeM端子、R0#M端子、和R1#M端子依次输出这些中间码、操作数以及NOP命令。
图19是寄存器文件14的概略结构图。寄存器文件14具有:寄存器#0~#7,其是与时钟信号φ23同步地锁存32比特的输入数据的存储元件;以及复用器121~123,其选择这些寄存器#0~#7中由读出寄存器编号指定输入p0A~p2A指定的寄存器,分别向输出端口p0Do~p2Do输出所选择的寄存器的值。
并且,寄存器文件14具有:复用器125a~125h,其从其自身存储的值、以及输入到输入端口p2Di和p3Do的数据中选择针对各寄存器#0~#7的输入值;以及写入寄存器选择解码器124,其根据写入寄存器编号指定输入p2A和p3A,生成各复用器125a~125h的切换信号。
如上所述,在从寄存器文件14中读出并行数P#为4的命令的操作数时,主解码器12以基本周期ΔTb的1/4周期指定读出寄存器编号。并且,运算部17处理1个32比特运算的期间的上限与取得1个VLIW命令的周期即基本周期ΔTb相等。由此,在并行数P#为4时,主解码器12以运算部17处理1个32比特运算所使用的期间的1/4的长度的周期,指定读出寄存器编号。
同样,在写入并行数P#为4的命令的运算结果时,如后所述,运算部17以基本周期ΔTb的1/4的长度的周期输出运算结果。
因此,在各寄存器#0~#7中,采用能够以运算部17处理1个32比特运算所使用的期间的1/4的长度的周期进行读写的存储元件。
图20是运算部17的概略结构图。运算部17具有与图4所示的运算单元200相同的结构。因此,相同的结构要素使用相同的参照编号示出并省略说明。
设于运算部17中的部分运算单元201~204分别进行将运算部17进行的32比特运算4等分后的8比特运算。即,第1部分运算单元201将32比特的输入数据A和B中分别从第0比特~第7比特的部分即A[7:0]和B[7:0]作为输入,进行由执行码CodeExe指定的运算,输出8比特的运算结果S[7:0]和进位C1。
第2部分运算单元202将A和B中分别从第8比特~第15比特的部分即A[15:8]和B[15:8]、以及进位C1作为输入,进行由执行码CodeExe指定的运算,输出8比特的运算结果S[15:8]和进位C2。
第3部分运算单元203将A和B中分别从第16比特~第23比特的部分即A[23:16]和B[23:16]、以及进位C2作为输入,进行由执行码CodeExe指定的运算,输出8比特的运算结果S[23:16]和进位C3。
第4部分运算单元204将A和B中分别从第16比特~第23比特的部分即A[31:24]和B[31:24]、以及进位C3作为输入,进行由执行码CodeExe指定的运算,输出8比特的运算结果S[31:24]和表示进位判定和零判定的结果的标志F。
然后,运算部17输出组合了这些运算结果S[7:0]、S[15:8]、S[23:16]和S[31:24]后的32比特的运算结果S[31:0]以及标志F。
并且,运算部17具有解码器252,该解码器252对执行码CodeExe进行解码,取得CodeExe所包含的代码CodeWrite和目的寄存器的指定Rd。
图21是时钟控制部19的概略结构图。时钟控制部19具有:与基准时钟信号RefCLK同步的PLL电路130、生成各时钟信号的时钟转换器140~143和151~154、以及生成模式切换信号CKEN20~CKEN22的模式切换信号生成部161~162。
PLL电路130具有相位比较电路131;倍增部132,其生成基准时钟信号RefCLK的8倍速度的时钟信号×8CLK;以及分频部133,其使倍增部132的输出时钟信号的速度降低到1/8,生成与基准时钟信号RefCLK所具有的周期和相位相同的周期和相位的时钟信号。分频部133的输出信号作为取得定时时钟信号Ckf和时钟信号Ck1使用。
时钟转换器140~143是如下的有限状态机械:根据输入P#(0)和当前状态,以所输入的时钟信号×8CLK的周期即基本周期ΔTb的1/8周期更新当前状态,并输出基于当前状态的逻辑值。时钟转换器140~143能够以基本周期ΔTb的1/8周期输出逻辑值,所以,能够输出具有与基本周期ΔTb相同的周期、基本周期ΔTb的1/2周期以及1/4周期的时钟。时钟转换器140~143在输入P#(0)为1、2和4时,分别输出与基本周期ΔTb相同的周期、基本周期ΔTb的1/2周期以及1/4周期的时钟。
在输入P#(0)中输入常数4的时钟转换器140生成具有基本周期ΔTb的1/4周期的时钟信号×4CLK。并且,使时钟信号×4CLK反转生成时钟信号Ck4。
并且,在输入P#(0)中输入常数1的时钟转换器141生成具有与基本周期ΔTb相同的周期的主时钟MainCLK和执行结果保持定时时钟Ckw。
时钟转换器142和143的时钟Ckd和Cke的生成动作在后面叙述。
并且,输出时钟信号φ20~φ23的时钟转换器151~154是如下的有限状态机械:根据输入P#(0)、P#(-1)和当前状态,以所输入的时钟信号×8CLK的周期更新当前状态,并输出基于当前状态的逻辑值。与时钟转换器140~143同样,时钟转换器151~154能够输出具有与基本周期ΔTb相同的周期、基本周期ΔTb的1/2周期以及1/4周期的时钟。
生成模式切换信号CKEN20~22的模式切换信号生成部161~163也是如下的有限状态机械:根据输入P#(0)、P#(-1)和当前状态,以时钟信号×8CLK的周期更新当前状态,并输出基于当前状态的逻辑值。
这些时钟转换器151~154的时钟信号φ20~φ23的生成动作和模式切换信号生成部161~163的模式切换信号CKEN20~22的生成动作在后面叙述。
以下,说明伴随并行数的变化来变更运算部17的流水线阶段的处理器1的动作。图22是示出并行数从1变化为4时的取得阶段中的处理器1的动作的时序图,图23是示出并行数从1变化为4时的解码阶段中的处理器1的动作的时序图,图24是示出并行数从1变化为4时的执行阶段中的处理器1的动作的时序图,图25是示出并行数从1变化为4时的执行结果保持定时时钟Ckw和分支控制信号BranchCntrl的变化的时序图。
另外,在本处理器1中,取得阶段表示从命令存储器500的读出到针对命令缓冲器11的写入的段,解码阶段表示从命令缓冲器11的读出到针对寄存器51~53的写入的段,执行阶段表示从寄存器51~53的读出到针对寄存器61~63的写入的段。
如图22所示,在基准时钟RefCLK的循环T0中,命令缓冲器(InstBuff)11读入的命令Com#3的并行数为1,在接着循环T0的循环T1中读入的命令Com#4中,并行数从1变化为4,假设在循环T1~T4中,命令缓冲器11读入的命令Com#4~7的并行数为4。命令缓冲器11在循环T1中,取得并行数P#=4的命令Com#4。
如图23所示,在循环T1中,主解码器12的并行数信号产生部111从命令缓冲器11接收到命令Com#4后,将并行数信号的值P#从1变更为4。并行数信号(P#=4)被输入图21所示的时钟控制部19的寄存器171。
另外,在图23中,信号Sel表示从主解码器12输出的选择信号Sel,信号Ckd表示解码结果保持定时时钟信号Ckd,信号CodeD表示锁存在寄存器41中的中间码CodeD,信号Rs0和Rs1表示锁存在寄存器42和43中的寄存器编号Rs0和Rs1,Ridx表示从主解码器12输出的寄存器编号Ridx,ImmD和ImmA表示从主解码器12输出的即值ImmD和ImmA,RA和RB表示从寄存器文件14输出的寄存器值RA和RB,IM表示锁存在寄存器44中的即值IM,M表示从数据存储器501输出的数据值M。
并且,将对在命令缓冲器11中取得的命令Com#j(j=0、1、2...)进行解码而得到的中间码CodeD、寄存器编号Rs0、Rs1和Ridx、即值ImmD、ImmA和IM、寄存器值RA和RB、以及数据值M,分别表记为CdD#j、Rs0(j)、Rs1(j)、Ridx(j)、ImmD(j)、ImmA(j)和IM(j)、RA(j)和RB(j)、以及M(j)。
特别地,将通过对并行数P#不是1的命令Com#j进行解码而产生的多个中间码表示为#ja、#jb、#jc和#jd,将中间码#ja的操作数的寄存器编号表示为s0a(j)和s1a(j),将中间码#jb的操作数的寄存器编号表示为s0b(j)和s1b(j),将中间码#jc的操作数的寄存器编号表示为s0c(j)和s1c(j),将中间码#jd的操作数的寄存器编号表示为s0d(j)和s1d(j)。
将寄存器编号为s0a(j)和s1a(j)的寄存器值分别表示为RA(j)a和RB(j)a,将寄存器编号为s0b(j)和s1b(j)的寄存器值分别表示为RA(j)b和RB(j)b,将寄存器编号为s0c(j)和s1c(j)的寄存器值分别表示为RA(j)c和RB(j)c,将寄存器编号为s0d(j)和s1d(j)的寄存器值分别表示为RA(j)d和RB(j)d。
寄存器171是与和基准时钟信号RefCLK相等的时钟信号Ck1同步地锁存从主解码器12输出的并行数信号P#的寄存器,寄存器172是与时钟信号Ck1同步地锁存寄存器171的输出PQ0的寄存器,寄存器173是与时钟信号Ck1同步地锁存寄存器172的输出PQ1的寄存器。因此,寄存器171的输出PQ0比从主解码器12输出的并行数信号P#滞后基本周期ΔTb,寄存器172的输出PQ1相对于寄存器171的输出PQ0滞后基本周期ΔTb,寄存器173的输出PQ2d相对于寄存器172的输出PQ1滞后基本周期ΔTb。
图26是图21所示的时钟转换器140的概略结构图。如上所述,时钟转换器140是有限状态机械,具有:当前状态存储部181,其保持当前状态QS;下一状态函数部182,其根据当前状态QS和输入P#(0)决定下一状态S,输出到当前状态存储部181,并且输出与下一状态S对应的逻辑值D;以及输出函数部183,其根据逻辑值D输出输出值D。当前状态存储部181和输出函数部183使用通过输入了时钟信号×8CLK的输入时钟CK来锁存输入数据的触发器等的存储元件构成。时钟转换器141~143的结构与时钟转换器140的结构相同。
图27是图26所示的时钟转换器140的状态迁移图。下一状态函数部182在输入P#(0)为1的期间决定下一状态,以巡回“0”~“7”的状态。在输入P#(0)为2的期间,下一状态函数部182决定下一状态,以巡回“8”~“11”的状态。在输入P#(0)为4的期间,下一状态函数部182决定下一状态,以使下一状态交替具有状态“12”和“13”。
然后,在输入P#(0)从1以外的值向1变化时,将下一状态设定为“0”,在输入P#(0)从2以外的值向2变化时,将下一状态S设定为“8”,在输入P#(0)从4以外的值向4变化时,将下一状态S设定为“12”。
下一状态函数部182根据下一状态S是“0”~“13”的哪个状态来决定向输出函数部183输出的逻辑值D。图27所示的状态迁移图示出如下情况:在下一状态S的值是配置在点划线上方的状态的任一个时,下一状态函数部182输出逻辑值D=1,在下一状态S的值是配置在点划线下方的状态的任一个时,下一状态函数部182输出逻辑值D=0。例如,图27所示的状态迁移图示出如下情况:在下一状态S的值是“0”~“3”、“8”、“9”和“12”的任一个时,下一状态函数部182输出逻辑值D=1,在下一状态S的值是“4”~“7”、“10”、“11”和“13”的任一个时,下一状态函数部182输出逻辑值D=0。
另外,关于后述的图32、图34、图36、图38、图40、图42和图44所示的状态迁移图,也根据与图27相同的表记方法示出下一状态S和与其对应的逻辑值D之间的关系。
图28是示出图21所示的时钟转换器140的内部状态的时序图。对时钟转换器140赋予×8CLK作为输入时钟CK,始终赋予常数“4”作为输入P#(0)。因此,当前状态QS和下一状态S的状态以基本周期ΔTb的1/8的周期在“12”和“13”之间变化,所以,输出Q是输出值以ΔTb/8的周期在“1”和“0”之间变化的时钟即时钟信号×4CLK。
另外,时钟信号×4CLK的上升沿从基准时钟RefCLK的上升沿滞后ΔTb/8。这是基于构成输出函数部183的触发器的延迟。
图29是示出图21所示的时钟转换器141~143的内部状态的时序图。
对时钟转换器141赋予×8CLK作为输入时钟CK,始终赋予常数“1”作为输入P#(0)。因此,当前状态QS和下一状态S的值以基本周期ΔTb的1/8的周期巡回“0”~“7”的值。因此,输出Q是输出值以ΔTb/2的周期在“1”和“0”之间变化的时钟。因此,时钟转换器141输出的主时钟MainCLK和执行结果保持定时时钟Ckw是与基本周期ΔTb相同周期的时钟。
并且,与时钟信号×4CLK同样,主时钟MainCLK和执行结果保持定时时钟Ckw也从基准时钟RefCLK的上升沿滞后ΔTb/8。以下,将比基准时钟RefCLK的循环Ti(i=0、1、2...)滞后ΔTb/8的主时钟MainCLK的循环记为Ti’。
在输入P#(0)为1的期间,由时钟转换器142生成的解码结果保持定时时钟信号Ckd、以及由时钟转换器143生成的命令投入定时时钟信号Cke也成为与主时钟MainCLK相同的信号。
因此,如图23所示,与时钟信号Ckd同步地锁存输入的寄存器组41~45在保持并行数为1的命令的解码结果时,以与主时钟MainCLK的循环Ti’相同的循环,更新解码结果。
如图24所示,以与主时钟MainCLK的循环Ti’相同的循环,从与时钟信号Cke同步地取出数据的寄存器组51~53向运算部17输出执行码CodeExe以及输入值A和B。
图30是示出输入P#(0)从“1”变化为“4”时的时钟转换器142、143的内部状态的时序图。在循环T2中,当输入P#(0)从“1”变化为“4”时,将下一状态S的状态设置为“12”,然后,当前状态QS和下一状态S的状态在“12”和“13”之间变化。因此,输出Q在输入P#(0)变化为“4”后滞后ΔTb/8,开始输出ΔTb/4的周期的时钟信号。
如图21所示,在时钟转换器142的输入P#(0)中输入寄存器171的输出PQ0,在时钟转换器143的输入P#(0)中输入寄存器172的输出PQ1。
因此,如图23所示,从时钟转换器142输出的时钟信号Ckd的周期变化为,比利用主解码器12检测到并行数信号P#的变化的时刻滞后(1+1/8)×基本周期ΔTb。在本时序图中,并行数信号P#从“1”变化为“4”,所以,时钟信号Ckd的周期从ΔTb变化为ΔTb/4。这样,时钟信号Ckd的周期变化,由此,主解码器12对并行数信号P#不是1的命令进行解码,由此,在从命令队列117以比基本周期ΔTb的周期短的周期输出中间码和操作数时,寄存器组41~43依次对它们进行锁存。
并且,如图23和24所示,从时钟转换器143输出的时钟信号Cke的周期变化为,比从时钟转换器142输出的时钟信号Ckd滞后基本周期ΔTb。
另外,在图24中,信号Cke表示命令投入定时时钟信号Cke,信号CodeExe表示从寄存器51向运算部17输出的执行码CodeExe,信号A和B表示从寄存器52和53向运算部17输出的第1和第2输入数据A和B,信号φ20~22表示从时钟控制部19向运算部17供给的时钟信号φ20~22,信号CKEN20~22表示从时钟控制部19向运算部17供给的模式切换信号CKEN20~22,信号φ23表示从时钟控制部19向寄存器文件14赋予的寄存器更新时钟φ23。
CD1~CD3表示从图20所示的运算部17的流水线寄存器211、221和231分别输出到部分运算单元202~204的执行码。例如,在循环T3’的第4四分之一周期中,部分运算单元201接收执行码#4d,部分运算单元202接收执行码#4c,部分运算单元203接收执行码#4b,部分运算单元204接收执行码#4a。
信号S和信号F表示从运算部17输出的运算结果S和标志F,信号Rd表示从运算部17的解码器252输出的目的寄存器的指定Rd。
并且,将对在命令缓冲器11中取得的命令Com#j(j=0、1、2...)进行解码而得到的执行码CodeExe表记为CdE#j,将对命令Com#j进行解码而得到的针对运算部17的第1和第2输入数据A和B分别表记为A(j)和B(j)。
特别地,将通过对并行数P#不是1的命令Com#j进行解码而产生的多个执行码表记为#ja、#jb、#jc和#jd。并且,将通过对并行数P#不是1的命令Com#j进行解码而产生的多个第1输入数据A表记为Aa(j)、Ab(j)、Ac(j)和Ad(j)。进而,将通过对并行数P#不是1的命令Com#j进行解码而产生的多个第2输入数据B表记为Ba(j)、Bb(j)、Bc(j)和Bd(j)。
将第1和第2输入数据Aa(j)和Ba(j)之间的运算结果S和标志F分别表记为Sa(j)和FLa(j),将第1和第2输入数据Ab(j)和Bb(j)之间的运算结果S和标志F分别表记为Sb(j)和FLb(j),将第1和第2输入数据Ac(j)和Bc(j)之间的运算结果S和标志F分别表记为Sc(j)和FLc(j),将第1和第2输入数据Ad(j)和Bd(j)之间的运算结果S和标志F分别表记为Sd(j)和FLd(j)。
进而,将通过对并行数P#不是1的命令Com#j进行解码而产生的目的寄存器的指定表记为Rda(j)、Rdb(j)、Rdc(j)和Rdd(j)。
如图20所示,保持执行码的流水线寄存器211以及保持输入值A和B的流水线寄存器212~217由相同的时钟φ20和模式切换信号CKEN20驱动,流水线寄存器221和流水线寄存器222~225由相同的时钟φ21和模式切换信号CKEN21驱动,流水线寄存器231和流水线寄存器232~ 235由相同的时钟φ22和模式切换信号CKEN22驱动。
因此,各部分运算单元201~204在接收到某个执行码#jx(x=a、b...)时,同时接收伴随该执行码#jx的第1输入数据Ax(j)和第2输入数据Bx(j)。
如图12所示,解码结果保持定时时钟信号Ckd和命令投入定时时钟信号Cke被供给到设于处理器1的解码阶段和执行阶段之间的先进先出缓冲器即寄存器51~53。时钟信号Ckd被用作确定针对寄存器51~53的数据写入定时的时钟,时钟信号Cke被用作确定从寄存器51~53读出数据的数据读出定时的时钟。
如图23和24所示,在处理器1的解码阶段中处理的命令比在执行阶段中处理的命令滞后1个基本周期ΔTb。因此,在某个循环Tj中取得的命令Com#j的并行数P#不是1的情况下,在对执行阶段先行的循环T(j-1)中取得的命令Com#(j-1)进行处理的中途,主解码器12开始输出中间码#ja、#jb...和寄存器编号S0a(j)、S0b(j)...、S1a(j)、S1b(j)...。
因此,将先进先出缓冲器即寄存器51~53设置在解码阶段和执行阶段之间,使数据读出用时钟信号Cke比数据写入用时钟信号Ckd滞后1个基本周期ΔTb。通过设置这种寄存器51~53,由此,在执行阶段处理对命令Com#(j-1)进行解码而得到的执行码的期间,保持对下一命令Com#j进行解码而得到的中间码#ja、#jb...和寄存器编号S0a(j)、S0b(j)...、S1a(j)、S1b(j)...。
以下,说明图24所示的生成时钟信号φ20~φ23的时钟转换器151~154的动作、以及图24所示的生成模式切换信号CKEN20~22的模式切换信号生成部161~163的动作。图31是图21所示的时钟转换器151的概略结构图。如上所述,时钟转换器151是有限状态机械,具有:当前状态存储部184,其保持当前状态QS;下一状态函数部185,其根据当前状态QS以及输入P#(0)和P#(-1)决定下一状态S,输出到当前状态存储部184,并且输出与下一状态S对应的逻辑值D;以及输出函数部186,其根据逻辑值D输出输出值D。当前状态存储部184和输出函数部186使用通过输入了时钟信号×8CLK的输入时钟CK来锁存输入数据的触发器等的存储元件构成。时钟转换器152~154的结构与时钟转换器151的结构相同。
参照图21,在时钟转换器151的输入P#(0)中输入有寄存器172的输出PQ1。因此,当并行数存在变化时,生成时钟信号φ20的时钟转换器151的输入P#(0)以与生成命令投入定时时钟信号Cke的时钟转换器143的输入P#(0)相同的定时变化。并且,在时钟转换器151的输入P#(-1)中输入有寄存器173的输出PQ2d,输入P#(-1)比输入P#(0)滞后1个基本周期ΔTb。
图32是图21所示的时钟转换器151的状态迁移图。在并行数为1的期间、即P#(0)=P#(-1)=1的期间,决定下一状态的值S,以巡回状态“0”~“7”。
并行数从1变化为4从而使P#(0)变化为4时,下一状态S沿着由参照标号J1-1所示的线变化为状态“15”。然后,在P#(0)=4且P#(-1)=1的期间,下一状态S交替成为状态“17”和“16”。
当P#(0)变化为4后经过1个基本周期ΔTb时,P#(-1)变化为4。此时,下一状态S沿着由参照标号J1-2所示的线变化为状态“12”。然后,下一状态S交替成为状态“12”和“13”。
图33是示出并行数从1变化为4时的时钟转换器151的内部状态的时序图。当并行数从1变化为4时,时钟转换器151的输出φ20的周期比命令投入定时时钟信号Cke的变化滞后ΔTb/4,从基本周期ΔTb变化为ΔTb/4。
参照图21,在时钟转换器152的输入P#(0)中输入有寄存器174的输出PQ2。这里,寄存器174是与时钟信号Ck4同步地锁存寄存器172的输出PQ1的寄存器,寄存器175是与时钟信号Ck4同步地锁存寄存器174的输出PQ2的寄存器,寄存器176是与时钟信号Ck4同步地锁存寄存器175的输出PQ3的寄存器,寄存器177是与时钟信号Ck4同步地锁存寄存器176的输出PQ4的寄存器。
因此,寄存器174的输出PQ2比寄存器172的输出PQ1滞后ΔTb/4,寄存器175的输出PQ3比寄存器174的输出PQ2滞后ΔTb/4,寄存器176的输出PQ4比寄存器175的输出PQ3滞后ΔTb/4,寄存器177的输出PQ5比寄存器176的输出PQ4滞后ΔTb/4。
当并行数存在变化时,生成时钟信号φ21的时钟转换器152的输入P#(0)以比生成时钟信号φ20的时钟转换器151的输入P#(0)滞后ΔTb/4的定时变化。并且,在时钟转换器152的输入P#(-1)中输入有寄存器175的输出PQ3,输入P#(-1)比输入P#(0)滞后ΔTb/4。
图34是图21所示的时钟转换器152的状态迁移图。在并行数为1的期间、即P#(0)=P#(-1)=1的期间,决定下一状态S,以巡回状态“0”~“7”。
当P#(0)变化为4时,下一状态S沿着由参照标号J1-1所示的线变化为状态“15”。然后,在P#(0)=4且P#(-1)=1的期间,下一状态S维持在状态“17”。
当P#(0)变化为4后经过ΔTb/4时,P#(-1)变化为4。此时,下一状态S沿着由参照标号J1-2所示的线变化为状态“12”。然后,下一状态S的值交替成为状态“12”和“13”。
图35是示出并行数从1变化为4时的时钟转换器152的内部状态的时序图。当并行数从1变化为4时,时钟转换器152的输出φ21的周期比时钟信号φ20的变化滞后ΔTb/4,从基本周期ΔTb变化为ΔTb/4。
参照图21,在时钟转换器153的输入P#(0)中输入有寄存器175的输出PQ3。因此,当并行数存在变化时,生成时钟信号φ22的时钟转换器153的输入P#(0)以比生成时钟信号φ21的时钟转换器152的输入P#(0)滞后ΔTb/4的定时变化。并且,在时钟转换器153的输入P#(-1)中输入有寄存器176的输出PQ4,输入P#(-1)比输入P#(0)滞后ΔTb/4。
图36是图21所示的时钟转换器153的状态迁移图。在并行数从1变化为4时产生的时钟转换器153的状态迁移与在时钟转换器152中产生的状态迁移相同。图37是示出并行数从1变化为4时的时钟转换器153和154的内部状态的时序图。当并行数从1变化为4时,时钟转换器153的输出φ22的周期比时钟信号φ21的变化滞后ΔTb/4,从基本周期ΔTb变化为ΔTb/4。
参照图21,在时钟转换器154的输入P#(0)中输入有寄存器176的输出PQ4。因此,当并行数存在变化时,生成时钟信号φ23的时钟转换器154的输入P#(0)以比生成时钟信号φ22的时钟转换器153的输入P#(0)滞后ΔTb/4的定时变化。并且,在时钟转换器154的输入P#(-1)中输入有寄存器177的输出PQ5,输入P#(-1)比输入P#(0)滞后ΔTb/4。
图38是图21所示的时钟转换器154的状态迁移图。在并行数从1变化为4时产生的时钟转换器154的状态迁移与在时钟转换器152中产生的状态迁移相同。因此,如图37所示,在并行数从1变化为4时,时钟转换器153的输出φ23的周期比时钟信号φ22的变化滞后ΔTb/4,从基本周期ΔTb变化为ΔTb/4。
图39是图21所示的模式切换信号生成部161的概略结构图。模式切换信号生成部161是有限状态机械,具有:当前状态存储部187,其保持当前状态QS;下一状态函数部188,其根据当前状态QS以及输入P#(0)和P#(-1)决定下一状态S,输出到当前状态存储部187,并且输出与下一状态S对应的逻辑值D;以及输出函数部189,其根据逻辑值D输出输出值D。当前状态存储部187和输出函数部189使用通过输入了时钟信号×8CLK的输入时钟CK来锁存输入数据的触发器等的存储元件构成。模式切换信号生成部162和163的结构与模式切换信号生成部161的结构相同。
参照图21,在模式切换信号生成部161的输入P#(0)中输入有寄存器172的输出PQ1。因此,当并行数存在变化时,模式切换信号生成部161的输入P#(0)以与生成命令投入定时时钟信号Cke的时钟转换器143的输入P#(0)相同的定时变化。并且,在模式切换信号生成部161的输入P#(-1)中输入有寄存器173的输出PQ2d,输入P#(-1)比输入P#(0)滞后1个基本周期ΔTb。
图40是图21所示的模式切换信号生成部161的状态迁移图。在并行数为1的期间、即P#(0)=P#(-1)=1的期间,下一状态S维持在状态“0”。在P#(0)变化为4时,下一状态S变化为状态“4”,然后,在P#(-1)变化为4之前,维持在状态“5”。然后,当成为P#(-1)=4时,下一状态S变化为状态“2”。然后,在P#(0)=4且P#(-1)=1的期间,下一状态S维持在状态“2”。
图41是示出并行数从1变化为4时的模式切换信号生成部161的内部状态的时序图。当并行数为1时,模式切换信号生成部161的输出CKEN20为“L”,图20所示的流水线寄存器211~219在直接输出输入值的透明模式下动作。
当并行数从1变化为4时,模式切换信号CKEN20的值与时钟信号φ20的周期变化为ΔTb/4相比,提前ΔTb/8变化为“H”,流水线寄存器211~219开始在触发模式下动作。
参照图21,在模式切换信号生成部162的输入P#(0)中输入有寄存器174的输出PQ2。因此,当并行数存在变化时,模式切换信号生成部162的输入P#(0)以比生成模式切换信号CKEN20的模式切换信号生成部161的输入P#(0)滞后ΔTb/4的定时变化。并且,在模式切换信号生成部162的输入P#(-1)中输入有寄存器175的输出PQ3,输入P#(-1)比输入P#(0)滞后ΔTb/4。
并且,在模式切换信号生成部163的输入P#(0)中输入有寄存器175的输出PQ3。因此,当并行数存在变化时,模式切换信号生成部163的输入P#(0)以比生成模式切换信号CKEN21的模式切换信号生成部162的输入P#(0)滞后ΔTb/4的定时变化。并且,在模式切换信号生成部163的输入P#(-1)中输入有寄存器176的输出PQ4,输入P#(-1)比输入P#(0)滞后ΔTb/4。
图42和图43分别是图21所示的模式切换信号生成部162和163的状态迁移图。在并行数从1变化为4时产生的模式切换信号生成部162和163的状态迁移与在时钟转换器152中产生的状态迁移相同。因此,如图44所示,在并行数为1时,模式切换信号生成部162和163的输出CKEN21和CKEN22为“L”,图20所示的流水线寄存器221~228和231~237在透明模式下动作。
当并行数从1变化为4时,模式切换信号CKEN21的值与时钟信号φ21的周期变化为ΔTb/4相比,提前ΔTb/8变化为“H”,流水线寄存器221~228开始在触发模式下动作。并且,模式切换信号CKEN22的值与时钟信号φ22的周期变化为ΔTb/4相比,提前ΔTb/8变化为“H”,流水线寄存器231~237开始在触发模式下动作。
当并行数从1变化为4时,图21所示的时钟控制部19如上所述变更时钟信号φ21~23以及模式切换信号CKEN20~CKEN22。
其结果,如图24所示,通过对并行数P#为4的命令Com#4和Com#5进行解码而生成多个执行码#4a~#4d和#5a~#5d,以周期ΔTb/4依次供给到各部分运算单元201~204。
然后,#4b和接着该#4b的执行码比供给到部分运算单元201的定时滞后ΔTb/4而供给到部分运算单元202,比供给到部分运算单元202的定时滞后ΔTb/4而供给到部分运算单元203,比供给到部分运算单元203的定时滞后ΔTb/4而供给到部分运算单元204。
因此,当并行数P#为4时,供给到运算部17的1个32比特运算在位方向上被分割为4个部分运算,这些部分运算分别被分配给部分运算单元201~204。然后,部分运算单元201比部分运算单元202提前ΔTb/4执行所分配的部分运算,部分运算单元202比部分运算单元203提前ΔTb/4执行所分配的部分运算,部分运算单元203比部分运算单元204提前ΔTb/4执行所分配的部分运算。
然后,观察某个时点时,部分运算单元201~204并行执行属于4个不同的32比特运算的部分运算。通过这种部分运算单元201~204的动作,运算部17开始并行执行4个运算的流水线处理。
以下,说明并行数从1变化为2时的处理器1的动作。图45是示出并行数从1变化为2时的取得阶段中的处理器1的动作的时序图,图46是示出并行数从1变化为2时的解码阶段中的处理器1的动作的时序图,图47是示出并行数从1变化为2时的执行阶段中的处理器1的动作的时序图。另外,图46和图47所示的各记号的用法与图23和图24所示的记号的用法相同。
如图45所示,在循环T0中命令缓冲器11读入的命令Com#3的并行数为1,在循环T1中读入的命令Com#4中,并行数从1变化为2,假设在循环T1~T4中,命令缓冲器11读入的命令Com#4~7的并行数为2。
如图45和图46所示,在循环T1中,主解码器12的并行数信号产生部111从命令缓冲器11接收到命令Com#4后,将并行数信号的值P#从1变更为2。此时,时钟信号Ckd的周期变化为,比利用主解码器12检测到并行数信号P#的变化的时刻滞后(1+1/8)×基本周期ΔTb。并且,时钟信号Cke的周期变化为,比时钟信号Ckd滞后基本周期ΔTb。
以下,说明图47所示的生成时钟信号φ20~φ23的时钟转换器151~154的动作、以及图47所示的生成模式切换信号CKEN20~22的模式切换信号生成部161~163的动作。
如图32所示,在图21所示的时钟转换器151中,在并行数为1的期间、即P#(0)=P#(-1)=1的期间,决定下一状态,以巡回状态“0”~“7”。
并行数从1变化为2从而使P#(0)变化为2时,下一状态S沿着由参照标号J4-1所示的线变化为状态“26”。然后,在P#(0)=2且P#(-1)=1的期间,决定下一状态,以巡回状态“26”~“29”。
当P#(0)变化为2后经过1个基本周期ΔTb时,P#(-1)变化为2。此时,下~状态S沿着由参照标号J4-2所示的线变化为状态“8”。然后,决定下一状态,以巡回状态“8”~“11”的值。图48示出并行数从1变化为2时的时钟转换器151的内部状态的时序图。
如图34所示,在图21所示的时钟转换器152中,在并行数为1的期间,决定下一状态S,以巡回状态“0”~“7”。
并行数从1变化为2从而使P#(0)变化为2时,下一状态S沿着由参照标号J4-1所示的线变化为状态“30”。然后,在P#(0)=2且P#(-1)=1的期间,下一状态S维持在状态“30”。
当P#(0)变化为2后经过ΔTb/4时,P#(-1)变化为2。此时,下一状态S沿着由参照标号J4-2所示的线变化为状态“8”。然后,决定下一状态,以巡回状态“8”~“11”。
图49示出并行数从1变化为2时的时钟转换器152的内部状态的时序图。
如图36所示,在图21所示的时钟转换器153中,在并行数为1的期间,决定下一状态S,以巡回状态“0”~“7”。
并行数从1变化为2从而使P#(0)变化为2时,下一状态S沿着由参照标号J4-1所示的线变化为状态“30”。然后,在P#(0)=2且P#(-1)=1的期间,下一状态S维持在状态“30”。
当P#(0)变化为2后经过ΔTb/4时,P#(-1)变化为2。此时,下一状态S沿着由参照标号J4-2所示的线变化为状态“31”。然后,下一状态S重复2次状态“31”后,沿着由参照标号J4-3所示的线转移为“8”。然后,决定下一状态S,以巡回状态“8”~“11”。
图50示出并行数从1变化为2时的时钟转换器153的内部状态的时序图。
如图38所示,在图21所示的时钟转换器154中,在并行数为1的期间,决定下一状态S,以巡回状态“0”~“7”。
在P#(0)变化为2时,下一状态S沿着由参照标号J4-1所示的线变化为状态“30”。然后,在P#(0)=2且P#(-1)=1的期间,下一状态S维持在状态“30”。
当P#(0)变化为2后经过ΔTb/4时,P#(-1)变化为2。此时,下一状态S沿着由参照标号J4-2所示的线变化为状态“8”。然后,决定下一状态S,以巡回状态“8”~“11”。
图50示出并行数从1变化为2时的时钟转换器154的内部状态的时序图。
如图40所示,在图21所示的模式切换信号生成部161中,在并行数为1的期间、即P#(0)=P#(-1)=1的期间,下一状态S维持在状态“0”。在P#(0)变化为2时,下一状态S变化为状态“11”,在P#(-1)变化为2之前,维持在状态“11”。然后,当成为P#(-1)=2时,下一状态S变化为状态“9”。然后,下一状态S维持在状态“9”。图51示出并行数从1变化为2时的模式切换信号生成部161的内部状态的时序图。
如图42所示,在图21所示的模式切换信号生成部162中,在并行数为1的期间,下一状态S为状态“0”。在P#(0)变化为2时,下一状态S变化为状态“11”,在P#(-1)变化为2之前,维持在状态“11”。然后,当成为P#(-1)=2时,下一状态S变化为状态“1”。然后,下一状态S维持在状态“1”。图52示出并行数从1变化为2时的模式切换信号生成部162的内部状态的时序图。
如图43所示,在图21所示的模式切换信号生成部163中,在并行数为1的期间,下一状态S为状态“0”。在P#(0)变化为2时,下一状态S变化为状态“11”,在P#(-1)变化为2之前,维持在状态“11”。然后,当成为P#(-1)=2时,下一状态S的值变化为“9”。然后,下一状态S维持在状态“9”。图52示出并行数从1变化为2时的模式切换信号生成部163的内部状态的时序图。
如图51和图52所示,在并行数从1变化为2时,模式切换信号CKEN20和CKEN22的值维持在“L”,图20所示的流水线寄存器211~219和231~237在透明模式下动作。
另一方面,模式切换信号CKEN21在循环T3’的中间从“L”变化为“H”。由此,图20所示的流水线寄存器221~228在循环T3’的中间变化为触发模式。
其结果,与图7所示的运算单元200的动作时序图同样,运算部17的第1部分运算单元201和第2部分运算单元202同时执行相同的32比特运算的部分运算,第3部分运算单元203和第4部分运算单元204在第1部分运算单元201运算的32比特运算之前的基本周期的1/2的期间(ΔTb/2),执行输入到运算部17的32比特运算的部分运算。通过这种部分运算单元201~204的动作,运算部17开始并行执行2个运算的流水线处理。
以下,说明并行数从4变化为1时的处理器1的动作。图53是示出并行数从4变化为1时的取得阶段中的处理器1的动作的时序图,图54是示出并行数从4变化为1时的解码阶段中的处理器1的动作的时序图,图55是示出并行数从4变化为1时的执行阶段中的处理器1的动作的时序图。另外,图54和图55所示的各记号的用法与图23和图24所示的记号的用法相同。
如图53所示,在循环T0中命令缓冲器11读入的命令Com#3的并行数为4,在循环T1中读入的命令Com#4中,并行数从4变化为1,假设在循环T1~T4中,命令缓冲器11读入的命令Com#4~6的并行数为1。
如图53和图54所示,在循环T1中,主解码器12的并行数信号产生部111从命令缓冲器11接收到命令Com#4后,将并行数信号的值P#从4变更为1。并且,失速信号生成部113如参照图15说明的那样,由于上次接收的命令的并行数P#大于1、且上次接收的命令的并行数和本次接收的命令的并行数P#不同,因此生成失速信号。因此,在基本周期ΔTb的期间,单命令解码部115发布NOP命令。
在执行并行数为1以上的命令的期间,在运算部17内的流水线寄存器211~219、221~228和231~237中保持执行码CodeExe、输入数据A和B、运算结果以及进位。因此,如果在并行数变化的命令Com#4更靠前的命令所包含的运算全部完成后没有运算,则无法根据命令Com#4的并行数来变更时钟信号φ20~φ23和模式切换信号CKEN20~CKEN22。因此,在已经执行了并行数为1以上的命令时,在存在并行数的变更的情况下,主解码器12在基本周期ΔTb的期间发布NOP命令。
以下,说明图55所示的生成时钟信号φ20~φ23的时钟转换器151~154的动作、以及图55所示的生成模式切换信号CKEN20~22的模式切换信号生成部161~163的动作。
如图32所示,在图21所示的时钟转换器151中,在并行数为4的期间、即P#(0)=P#(-1)=4的期间,下一状态S交替成为状态“12”和“13”。
并行数从4变化为1从而使P#(0)变化为1时,下一状态S沿着由参照标号J2-1所示的线变化为状态“18”。然后,在P#(-1)变化为1之前,下一状态S维持在状态“19”。
当P#(0)变化为1后经过1个基本周期ΔTb时,P#(-1)变化为1。此时,下一状态S沿着由参照标号J2-2所示的线变化为状态“0”。然后,决定下一状态S,以巡回状态“0”~“7”。图56示出并行数从4变化为1时的时钟转换器151的内部状态的时序图。
如图34所示,在图21所示的时钟转换器152中,在并行数为4的期间,下一状态S交替成为状态“12”和“13”。
在P#(0)变化为1时,下一状态S沿着由参照标号J2-1所示的线变化为状态“20”。然后,在P#(-1)变化为1之前,下一状态S维持在状态“21”。
当P#(0)变化为1后经过ΔTb/4时,P#(-1)变化为1。此时,下一状态S沿着由参照标号J2-2所示的线转移为状态“23”。然后,下一状态S重复4次状态“23”后,沿着由参照标号J2-3所示的线转移为“0”。然后,决定下一状态S,以巡回状态“0”~“7”。图57示出并行数从4变化为1时的时钟转换器152的内部状态的时序图。
如图36所示,在图21所示的时钟转换器153中,在并行数为4的期间,下一状态S交替成为状态“12”和“13”。
在P#(0)变化为1时,下一状态S沿着由参照标号J2-1所示的线变化为状态“20”。然后,在P#(-1)变化为1之前,下一状态S维持在状态“21”。
当P#(0)变化为1后经过ΔTb/4时,P#(-1)变化为1。此时,下一状态S沿着由参照标号J2-2所示的线转移为状态“23”。然后,下一状态S重复2次状态“23”后,沿着由参照标号J2-3所示的线转移为“0”。然后,决定下一状态S,以巡回状态“0”~“7”。图58示出并行数从4变化为1时的时钟转换器153的内部状态的时序图。
如图38所示,在图21所示的时钟转换器154中,在并行数为4的期间,下一状态S交替成为状态“12”和“13”。
在P#(0)变化为1时,下一状态S沿着由参照标号J2-1所示的线变化为状态“21”。然后,在P#(-1)变化为1之前,下一状态S维持在状态“21”。
当P#(0)变化为1后经过ΔTb/4时,P#(-1)变化为1。此时,下一状态S沿着由参照标号J2-2所示的线转移为状态“0”。然后,决定下一状态S,以巡回状态“0”~“7”。图58示出并行数从4变化为1时的时钟转换器154的内部状态的时序图。
如图40所示,在图21所示的模式切换信号生成部161中,在并行数为4的期间、即P#(0)=P#(-1)=4的期间,下一状态S为状态“2”。在P#(0)变化为1时,下一状态S的值在P#(-1)变化为1之前,维持在状态“3”。然后,当成为P#(-1)=1时,下一状态S为状态“0”。图59示出并行数从4变化为1时的模式切换信号生成部161的内部状态的时序图。
如图42所示,在图21所示的模式切换信号生成部162中,在并行数为4的期间,下一状态S为状态“2”。在P#(0)变化为1时,下一状态S在P#(-1)变化为1之前,维持在状态“3”。然后,当成为P#(-1)=1时,下一状态S的值转移为“6”。然后,下一状态S重复4次状态“6”后转移为“0”。图60示出并行数从4变化为1时的模式切换信号生成部162的内部状态的时序图。
如图43所示,在图21所示的模式切换信号生成部163中,在并行数为4的期间,下一状态S为状态“2”。在P#(0)变化为1时,下一状态S在P#(-1)变化为1之前,维持在状态“3”。然后,当成为P#(-1)=1时,下一状态S的值转移为“6”。然后,下一状态S重复2次状态“6”后转移为“0”。图60示出并行数从4变化为1时的模式切换信号生成部163的内部状态的时序图。
如图55所示,在并行数从4变化为1时,运算部17在接收NOP命令的循环T3’的期间,完成并行数P#为4的命令Com#3所包含的全部运算,在接着的循环T4’以后,执行并行数P#为1的命令Com#4~6所包含的运算。
以下,说明并行数从2变化为4时的处理器1的动作。图61是示出并行数从2变化为4时的取得阶段中的处理器1的动作的时序图,图62是示出并行数从2变化为4时的解码阶段中的处理器1的动作的时序图,图63是示出并行数从2变化为4时的执行阶段中的处理器1的动作的时序图。另外,图62和图63所示的各记号的用法与图23和图24所示的记号的用法相同。
如图61所示,在循环T0中命令缓冲器11读入的命令Com#3的并行数为2,在循环T1中读入的命令Com#4中,并行数从2变化为4,假设在循环T1~T4中,命令缓冲器11读入的命令Com#4~6的并行数为4。
如图61和图62所示,在循环T1中,主解码器12的并行数信号产生部111从命令缓冲器11接收到命令Com#4后,将并行数信号的值P#从2变更为4。并且,失速信号生成部113由于上次接收的命令的并行数P#大于1、且上次接收的命令的并行数和本次接收的命令的并行数P#不同,因此生成失速信号。其结果,在基本周期ΔTb的期间,命令队列117发布NOP命令。
以下,说明图63所示的生成时钟信号φ20~φ23的时钟转换器151~154的动作、以及图63所示的生成模式切换信号CKEN20~22的模式切换信号生成部161~163的动作。
如图32所示,在图21所示的时钟转换器151中,在并行数为2的期间、即P#(0)=P#(-1)=2的期间,决定下一状态S,以巡回状态“8”~“11”。
并行数从2变化为4从而使P#(0)变化为4时,下一状态S沿着由参照标号J3-1所示的线变化为状态“25”。然后,在P#(0)=4且P#(-1)=2的期间,然后,下一状态S维持在状态“25”。
当P#(0)变化为4后经过1个基本周期ΔTb时,P#(-1)变化为4。此时,下一状态S沿着由参照标号J3-2所示的线转移为状态“32”。下一状态S重复2次状态“32”后,沿着由参照标号J3-3所示的线转移为状态“12”。然后,下一状态S交替成为状态“12”和“13”。图64示出并行数从2变化为4时的时钟转换器151的内部状态的时序图。
如图34所示,在图21所示的时钟转换器152中,在并行数为2的期间,决定下一状态S,以巡回状态“8”~“11”。
在P#(0)变化为4时,下一状态S沿着由参照标号J3-1所示的线变化为状态“25”。然后,在P#(0)=4且P#(-1)=2的期间,然后,下一状态S维持在状态“25”。
当P#(0)变化为4后经过ΔTb/4时,P#(-1)变化为4。此时,下一状态S沿着由参照标号J3-2所示的线转移为状态“32”。然后,下一状态S重复8次状态“32”后,沿着由参照标号J3-3所示的线转移为状态“12”。然后,下一状态S交替成为状态“12”和“13”。图65示出并行数从2变化为4时的时钟转换器152的内部状态的时序图。
如图36和图38所示,在图21所示的时钟转换器153和154中,在并行数为2的期间,决定下一状态S,以巡回状态“8”~“11”。
在P#(0)变化为4时,下一状态S沿着由参照标号J3-1所示的线变化为状态“25”。然后,在P#(0)=4且P#(-1)=2的期间,下一状态S维持在状态“25”。
当P#(0)变化为4后经过ΔTb/4时,P#(-1)变化为4。此时,下一状态S沿着由参照标号J3-2所示的线转移为状态“32”。然后,下一状态S重复8次状态“32”后,沿着由参照标号J3-3所示的线转移为状态“12”。然后,下一状态S交替成为状态“12”和“13”。图66示出并行数从2变化为4时的时钟转换器153和154的内部状态的时序图。
如图40所示,在图21所示的模式切换信号生成部161中,在并行数为2的期间、即P#(0)=P#(-1)=2的期间,下一状态S为状态“9”。在P#(0)变化为4时,下一状态S变化为状态“7”,当成为P#(-1)=4时,下一状态S临时成为状态“8”后成为状态“2”。图67示出并行数从2变化为4时的模式切换信号生成部161的内部状态的时序图。
如图42所示,在图21所示的模式切换信号生成部162中,在并行数为2的期间,下一状态S为状态“1”。在P#(0)变化为4时,下一状态S变化为状态“10”,当成为P#(-1)=4时,下一状态S变化为状态“2”。图68示出并行数从2变化为4时的模式切换信号生成部162的内部状态的时序图。
如图43所示,在图21所示的模式切换信号生成部163中,在并行数为2的期间,下一状态S为状态“9”。在P#(0)变化为4时,下一状态S变化为状态“7”,然后,当成为P#(-1)=4时,下一状态S重复7次状态“8”后,转移为状态“2”。图68示出并行数从2变化为4时的模式切换信号生成部163的内部状态的时序图。
如图63所示,在并行数从2变化为4时,运算部17在接收NOP命令的循环T3’的期间,完成并行数P#为2的命令Com#3所包含的全部运算。
然后,在循环T4’以后,运算部17开始如下的流水线处理:并行执行由通过对并行数P#为4的命令Com#4和Com#5进行解码而生成的多个执行码#4a~#4d和#5a~#5d所指定的运算。
图69是示出本发明的超标量处理器的实施例的概略结构图。处理器1在命令缓冲器11和主解码器312之间具有调度器20,该调度器20同时针对主解码器312调度器在命令缓冲器11中取得的命令中的多个命令。
并且,如图所示,本实施例的处理器1具有与参照图10说明的第1实施例的处理器相同的结构,对相同结构要素赋予相同参照标号,并省略说明。
调度器20能够动态地变更对主解码器312同时发布的命令数,将同时发布的命令数作为并行数P#通知给时钟控制部19。
这里,与图15所示的主解码器12在输出由1个VLIW命令形成的N个中间码(N=1、2或4)时、以ΔTb/N间隔输出N个中间码的情况同样地,构成主解码器312,以便能够以ΔTb/N间隔输出对从调度器20同时接收到的N个命令进行解码而得到的N个中间码。并且,时钟控制部19与图21所示的时钟控制部相同,构成为生成Ckd、Cke、φ20~23等各时钟信号和模式切换信号CKEN20~CKEN22。
通过这样构成调度器20、主解码器312和时钟控制部19,由此,与在图10所示的处理器1中并行执行VLIW命令所包含的多个运算的情况相同,由调度器20同时发布的多个命令各自所包含的运算,通过运算部17的流水线处理来并行执行。
以上,详细叙述了本发明的优选实施方式,但是,本领域技术人员应该能够理解:本领域技术人员能够进行各种修正和变更,并且,权利要求范围包含处于本发明真正的精神和主旨的范围内的这种全部的修正和变更,这些都包含在本发明的范围中。
产业上的可利用性
本发明一般能够利用于能够并行执行多个命令的处理器。特别地,能够利用于VLIW处理器和超标量处理器。

运算单元、处理器和处理器体系结构.pdf_第1页
第1页 / 共119页
运算单元、处理器和处理器体系结构.pdf_第2页
第2页 / 共119页
运算单元、处理器和处理器体系结构.pdf_第3页
第3页 / 共119页
点击查看更多>>
资源描述

《运算单元、处理器和处理器体系结构.pdf》由会员分享,可在线阅读,更多相关《运算单元、处理器和处理器体系结构.pdf(119页珍藏版)》请在专利查询网上搜索。

本发明提供运算单元、处理器和处理器体系结构。在处理器(1)的执行阶段中进行规定位长的运算的运算单元(17)具有:多个部分运算单元(201204),其在分别不同的流水线阶段中执行通过在位方向上对规定位长的运算进行分割得到的各运算;以及多个流水线寄存器(211213、221227、231237、241246),其分别划分各流水线阶段之间,各流水线寄存器(211213、221227、231237、241。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1