Vliw处理器的制造方法_3

文档序号:9235258阅读:来源:国知局
l2)将16比特数据Di32和16比特数据Dso的任一方数据输出到位移运算单元334。
[0109]加法运算单元331将从寄存器堆部2输出的2个16比特数据Di31和Di32作为输入,对输入的2个16比特数据进行加法运算处理。然后,加法运算单元331将加法运算处理后的数据输出到第4切换部336。
[0110]此外,加法运算单元331在执行32比特加法运算处理的下位16比特的加法运算处理的情况下将通过16比特数据Di31与16比特数据Di32的加法运算处理取得的进位标记(进位比特(I比特数据))输出到寄存器堆部2,例如,储存在寄存器堆部2的进位寄存器中(未对输出通路进行图示)。
[0111]逻辑运算单元332将从寄存器堆部2输出的2个16比特数据Di31和Di32作为输入,对输入的2个16比特数据进行规定的逻辑运算处理。然后,逻辑运算单元332将逻辑运算处理后的数据输出到第4切换部336。
[0112]乘法运算单元333将从寄存器堆部2输出的2个16比特数据Di31、Di32作为输入,对输入的2个16比特数据进行乘法运算处理。然后,乘法运算单元333将乘法运算处理后的32比特数据中的下位16比特数据输出到第4切换部336并且将上位16比特的数据输出到第5切换部337。
[0113]位移运算单元334将从寄存器堆部2输出的16比特数据Di31和从第3切换部335输出的16比特数据作为输入,对输入的2个16比特数据进行位移运算处理(32比特位移运算处理)。然后,位移运算单元334将位移运算处理后的32比特数据中的下位16比特数据输出到第4切换部336并且将上位16比特的数据输出到第5切换部337。
[0114]第4切换部336将来自加法运算单元331的输出、来自逻辑运算单元332的输出、从乘法运算单元333输出的乘法运算结果数据的下位16比特数据、以及从位移运算单元334输出的位移运算结果数据的下位16比特数据作为输入。然后,第4切换部336按照命令控制部I的指令(控制信号Ctl2)选择来自上述4个单元的输出的任一个作为数据Do3输出到寄存器堆部2。
[0115]再有,第4切换部336可以将通过加法运算单元331的加法运算处理取得的进位标记包含在数据Do3中来进行输出,此外,也可以使用另外的通路来将该进位标记输出到寄存器堆部2。
[0116]第5切换部337将从乘法运算单元333输出的乘法运算结果数据的上位16比特数据以及从位移运算单元334输出的位移运算结果数据的上位16比特数据作为输入。然后,第5切换部337按照命令控制部I的指令(控制信号Ctl2)选择来自上述2个单元的输出的任一个作为数据Ds3输出到状态寄存器34。
[0117]状态寄存器34将从第3插槽33的第5切换部337输出的16比特数据作为输入,对输入的16比特数据进行存储保持。状态寄存器34将保持的16比特数据输出到第2插槽32的状态读出单元323及第I切换部324和第3插槽33的第3切换部335。
[0118]命令存储器Ml是能够存储用于在VLIW处理器1000中执行运算的命令等的存储装置。命令存储器Ml是能够由命令控制部I进行访问的存储器。
[0119]数据存储器M2是能够存储用于在VLIW处理器1000中执行运算的数据等的存储装置。数据存储器M2是能够由命令执行部3的第I插槽31的加载/存储单元311进行访问的存储器。
[0120]再有,命令存储器Ml和数据存储器M2也可以被I个存储器(存储装置)实现。
[0121]〈1.2:VLIW处理器的工作〉
以下,针对像以上那样构成的VLIW处理器1000的工作,一边参照附图一边进行说明。
[0122]以下,对如下情况进行说明:
(1)执行乘法运算处理、对乘法运算结果执行位移运算处理的情况(MulShift处理);
(2)执行乘法运算处理、对乘法运算结果执行加法运算处理的情况(MulAdd处理);
(3)执行乘法运算处理、对乘法运算结果执行位移运算处理,对位移运算结果执行加法运算处理的情况(MulShiftAdd处理);以及
(4)执行位移运算处理、对位移运算结果执行加法运算处理的情况(ShiftAdd处理)。
[0123](1.2.1-MulShift 处理)
说明在VLIW处理器1000中对2个16比特数据执行乘法运算处理、对作为该乘法运算结果的32比特数据进行32比特位移的情况(将在该情况下的处理称为“MulShift处理”。)。
[0124]图3的左图是按每个周期示出在VLIW处理器1000执行MulShift处理的情况下分配给各插槽(第I插槽31、第2插槽32以及第3插槽33)的运算处理的图。此外,图3的右图是明示了在周期2 (Cyc2)中被激活的部分的图。再有,被激活的部分用粗线示出(以下相同)。
[0125]图4、图5也是与图3相同的图。
[0126]图4的右图是明示了在周期3 (Cyc3)中被激活的部分的图。
[0127]图5的右图是明示了在周期4 (Cyc4)中被激活的部分的图。
[0128]MulShift处理例如相当于对2个16比特数据进行乘法运算并对准固定小数点位置的处理。
[0129](CycO):
在周期O (CycO)中,命令控制部I通过控制信号Ctl2对命令执行部3发布加载/存储命令,第I插槽31的加载/存储单元311基于该加载/存储命令从数据存储器M2读出由第3插槽33的乘法运算单元333进行的乘法运算处理(MU116)所需的2个16比特数据(源操作数)中的I个。然后,第I插槽31将读出的16比特数据输出到寄存器堆部2。
[0130]寄存器堆部2将从第I插槽31读出的16比特数据储存在规定的寄存器中。
[0131](Cycl):
在周期I (Cycl)中,命令控制部I通过控制信号Ctl2对命令执行部3发布加载/存储命令,第I插槽31的加载/存储单元311基于该加载/存储命令从数据存储器M2读出由第3插槽33的乘法运算单元333进行的乘法运算处理(MU116)所需的2个16比特数据(源操作数)中的另I个数据。然后,第I插槽31将读出的16比特数据输出到寄存器堆部2。
[0132]寄存器堆部2将从第I插槽31读出的16比特数据储存在规定的寄存器中。
[0133](Cyc2):
在周期2 (Cyc2)中,命令控制部I通过控制信号Ctl2对命令执行部3发布乘法运算命令,第3插槽33的乘法运算单元333变为能够执行的状态。此外,寄存器堆部2基于来自命令控制部I的控制信号Ctl2在周期0、1中经由数据通路Di31、Di32将储存在规定的寄存器中的乘法运算处理对象的2个16比特数据输出到第3插槽33。
[0134]第3插槽33的乘法运算单元333对经由数据通路Di31、Di32输入的2个16比特数据执行乘法运算处理。然后,乘法运算单元333将乘法运算结果的32比特数据中的上位16比特的数据作为16比特数据Ds3经由第5切换部337输出到状态寄存器34。然后,状态寄存器34储存从第3插槽33输出的16比特数据Ds3。
[0135]此外,乘法运算单元333将乘法运算结果的32比特数据中的下位16比特的数据作为16比特数据Do3经由第4切换部336输出到寄存器堆部2。寄存器堆部2将所接收的该16比特数据Do3储存在规定的寄存器中。
[0136](Cyc3):
在周期3 (Cyc3)中,命令控制部I通过控制信号Ctl2对命令执行部3发布位移运算命令,第3插槽33的位移运算单元334变为能够执行的状态。此外,寄存器堆部2基于来自命令控制部I的控制信号Ctl2在周期2中经由数据通路Di31将储存在规定的寄存器中的位移运算对象的16比特数据(乘法运算结果的下位16比特数据)输出到第3插槽33。
[0137]位移运算单元334取得从寄存器堆部2经由数据通路Di31输入的16比特数据和从状态寄存器34输出的16比特数据(乘法运算结果的上位16比特数据)。再有,此时,第3切换部335被控制为根据来自命令控制部I的指令选择来自状态寄存器34的输出来向位移运算单元334输出。
[0138]位移运算单元334对像上述那样输入的由2个16比特数据构成的32比特数据执行位移运算处理。然后,位移运算单元334将位移运算处理结果的32比特数据中的上位16比特的数据作为16比特数据Ds3经由第5切换部337输出到状态寄存器34。然后,状态寄存器34储存从第3插槽33输出的16比特数据Ds3。
[0139]此外,位移运算单元334将位移运算处理结果的32比特数据中的下位16比特的数据作为16比特数据Do3经由第4切换部336输出到寄存器堆部2。寄存器堆部2将所接收的该16比特数据Do3储存在规定的寄存器中。
[0140](Cyc4): 在周期4 (Cyc4)中,命令控制部I通过控制信号Ct12对命令执行部3发布读出命令,第2插槽32的状态读出单元323变为能够执行的状态。状态读出单元323将周期3中的位移运算结果的上位16比特数据作为16比特数据Do2经由第2切换部325输出到寄存器堆部2。再有,此时,第2切换部325被控制为根据控制信号Ctl2选择来自状态读出单元323的输出来进行输出。
[0141]寄存器堆部2将所接收的上述16比特数据Do2储存在规定的寄存器中。
[0142]此外,与上述同样地执行对另外的数据的乘法运算处理(由第3插槽的乘法运算单元333进行的乘法运算处理)。再有,如图5的右图所示,成为该乘法运算处理的处理对象的2个16比特数据在周期2、3中由第I插槽31的加载/存储单元311从数据存储器M2读出并储存在寄存器堆部2的规定的寄存器中。
[0143]根据以上,在VLIW处理器1000中,能够对2个16比特数据执行乘法运算处理,能够执行对作为该乘法运算结果的32比特数据进行32比特位移的处理(MulShift处理)。
[0144](1.2.2:MulAdd 处理)
接着,使用图6、图7来说明在VLIW处理器1000中对2个16比特数据执行乘法运算处理、将作为该乘法运算结果的32比特数据与其它32比特数据进行加法运算的情况(将在该情况下的处理称为“MulAdd处理”。)。作为该MulAdd处理的一个例子,有2个16比特数据的乘法运算结果的累积加法运算处理。这样的处理多用在图像处理、图像识别处理等中。
[0145]图6的左图是按每个周期示出在VLIW处理器1000执行MulAdd处理的情况下分配给各插槽(第I插槽31、第2插槽32以及第3插槽33)的运算处理的图。此外,图6的右图是明示了在周期3 (Cyc3)中被激活的部分的图。
[0146]图7是与图6相同的图。
[0147]图7的右图是明示了在周期4 (Cyc4)中被激活的部分的图。
[0148](CycO ?2):
因为周期O?2 (CycO?2)的处理与“1.2.1:MulShift处理”中的周期O?2的处理相同,所以省略详细的说明。
[0149](Cyc3):
在周期3 (Cyc3)中,命令控制部I通过控制信号Ctl2对命令执行部3发布加法运算命令(AddL命令),第3插槽33的加法运算单元331变为能够执行的状态。此外,寄存器堆部2基于来自命令控制部I的控制信号Ctl2在周期2中经由数据通路Di31将储存在规定的寄存器中的乘法运算结果的下位16比特数据输出到第3插槽33。此外,寄存器堆部2基于来自命令控制部I的控制信号Ctl2经由数据通路Di32
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1