专利名称:混洗模式生成电路、处理器、混洗模式生成方法、命令的制作方法
技术领域:
本发明涉及生成混洗命令中使用的混洗模式(Shuffle pattern)的混洗模式生成电路。
背景技术:
在将打包多个数据要素而得到的数据作为I个数据输入的处理器(例如SMD(Single Instruction Multiple Data)处理器)中,有时需要在这I个数据内进行数据要素的重排。为了应对这种情况,存在对数据要素进行重排的混洗命令这样的命令。作为混洗命令的一例,对非专利文献I所记载的PSHUFB命令的动作例进行说明。如图1所示,PSHUFB命令是将混洗模式101和输入包数据102作为输入数据而输出输出包数据103的命令。混洗模式101的索引的个数为8个,各索引的位宽为8位。并且,输入包数据102和输出包数据103的数据要素的个数为8个,各数据要素的位宽为8位。关于输入包数据102的各数据要素位置的编号,从右端到左端分别表示为0、1、
2.....7。该编号表示对应的数据要素被混洗到混洗模式101的哪个索引。当执行PSHUFB命令时,例如,由于在输入包数据102的数据要素位置的左端的“A”的数据要素中对应有“7”这样的索引,所以,被混洗到混洗模式101的右边数第2个的“7”的索引的位置。并且,由于在输入包数据102的数据要素位置的右边数第2个的“G”的数据要素中对应有“I”这样的索引,所以,被混洗到混洗模式101的左边数第3个和第4个的“I”的索引的位置。现有技术文献非专利文献非专利文献1:1ntel Corporation:"Intel (R) 64and IA-32ArchitecturesSoftware Developers’s Manual Volume2:1nstruction Set Reference, A-Z〃,4-21
发明内容
发明要解决的课题非专利文献I中没有公开PSHUFB命令中使用的混洗模式的生成方法。在生成混洗模式时,为了实现高速化和低消耗电力,优选尽可能通过简易处理来实现。本发明是在这种背景下完成的,其目的在于,提供能够通过简易处理生成混洗模式的混洗模式生成电路。用于解决课题的手段本发明的混洗模式生成电路的特征在于,该混洗模式生成电路具有:移位复制部,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制所述信号所示的复制个数而得到的索引列;以及加法部,将从所述移位复制部输出的索引列作为输入,受理表示针对各索引的加法值的信号,对所述各索引加上所述信号所示的加法值。发明效果根据本发明的混洗模式生成电路,通过向左位移、复制和相加这样的简易处理,也能够生成混洗模式。
图1是用于说明PSHUFB命令的动作例的图。图2是示出基于4X16混洗模式的混洗的图。图3是示出实施方式I的混洗模式生成电路的图。图4是示出根据4X 16混洗模式生成8X8混洗模式的流程的图。图5是示出基于4X8混洗模式的混洗的图。图6是示出根据4X8混洗模式生成8X8混洗模式的流程的图。图7是示出实施方式2的混洗模式生成电路的图。图8是示出表示位单位信号的值与各块进行的处理内容的对应关系的表的图。图9是示出根据4X8混洗模式生成8X8混洗模式的流程的图。图10是示出根据2X 16混洗模式生成4X 16混洗模式的流程的图。图11是示出根据4X8混洗模式生成8X8混洗模式的流程的图。图12是示出实施方式2的变形例的混洗模式生成电路的图。图13是示出根据实施方式2的变形例的4X8混洗模式生成8X8混洗模式的流程的图。图14 Ca)是示出变形例的混洗模式生成电路的图,图14 (b)是示出表示位单位信号A、B的各值与各块进行的处理内容的对应关系的表的图。图15是示出实施方式3的混洗模式生成电路的图。图16是示出根据4X 16混洗模式生成8X8混洗模式的流程的图。图17是示出根据2X32混洗模式生成4X 16混洗模式的流程的图。图18是示出根据2X32混洗模式生成8X8混洗模式的流程的图。图19是示出实施方式4的混洗模式生成电路的图。图20是示出2X8索引表的图。图21是示出4X8索引表的图。图22是示出实施方式5的处理器的图。图23是示出混洗模式生成命令的格式的图。图24是示出混洗模式生成命令的位图的图。图25是混洗模式生成方法的处理的流程图。图26 Ca)是示出混洗模式生成命令的格式的图,图26 (b)是示出混洗模式生成命令的位图的图。
具体实施例方式下面,参照附图对本发明的实施方式进行说明。
(实施方式I)上述PSHUFB命令是分别针对位宽为8位的8个数据要素的混洗命令,在输入包数据的数据要素的各位宽和个数与PSHUFB命令的规格不同的情况下,有时难以直接执行上述PSHUFB命令。该情况下,需要根据PSHUFB命令的规格而重新生成混洗模式的索引的各位宽和个数。另外,也可以以具有多种混洗命令的方式进行应对,以使得即使位宽和个数不同也能够进行混洗,但是,是否能够实现这种应对在很大程度上依赖于处理器的规格,所以,在本实施方式中不采用这种应对。图2示出要求生成这种混洗模式的情况的例子。在图2的例子中,根据分别由位宽16位的4个索引构成的输入混洗模式202,生成分别由位宽8位的8个索引构成的输出混洗模式203。这样,生成符合PSHUFB命令的规格的混洗模式。然后,使用所生成的输出混洗模式203,实际上将4个位宽16位的输入包数据204视为8个位宽8位的包数据进行混洗,得到输出包数据205。在本实施方式I中,如根据输入混洗模式202生成输出混洗模式203那样,对根据某个混洗模式生成具有基于PSHUFB命令的规格的索引的个数和位宽的混洗模式的结构进行说明。如图3所示,本实施方式I的混洗模式生成电路301将输入混洗模式202和位单位信号304作为输入,将输出混洗模式203作为输出。位单位信号304是对向左位移的位数、位宽的扩展或缩小的数量和对各索引相加的值等混洗模式生成电路301内的各块的动作进行控制的信号。根据位单位信号304,移位器305进行向左位移,位变更器306进行位宽的扩展或缩小,加法器307对各索引加上值,交织器308进行索引的交织。图4示出由混洗模式生成电路301根据4X16混洗模式202生成8X8混洗模式203的例子。另外,“AXB混洗模式”表示索引的个数为A、各索引的位宽为B的混洗模式。首先,移位器305生成使4X 16混洗模式202向左位移I位而得到的索引列401。接着,加法器307通过对索引列401的各索引加I而生成索引列402。然后,位变更器306使索引列401和索引列402的位宽从16位缩小一半而成为8位,分别生成索弓I列404和索引列403。最后,交织器308对索引列403和索引列404的数据要素进行交织(交替配置),生成8X8混洗模式203。使用图5对混洗模式生成所需要的其他例子进行说明。图5是如下例子:使用根据4X8混洗模式202生成的8X8混洗模式203,对由4个16位的数据要素构成的输入包数据502进行混洗,输出由4个16位的数据要素构成的输出包数据503。这样,4X8混洗模式202的总位宽(32位)与输入包数据502的数据要素的总位宽(64位)不同会引起如下情况等:对4个8位数据进行SMD运算的结果,运算结果的必要位数增加,需要对数据要素的位宽进行扩展。这里,仅在上述PSHUFB命令这样的针对8个8位数据要素的混洗命令的情况下,必须将由4个16位数据要素构成的输入包数据402视为由8个8位数据要素构成的包数据进行混洗。因此,根据4X8混洗模式202生成8X8混洗模式203,使用所生成的8X8混洗模式203将输入包数据502混洗为输出包数据503。图6示出由混洗模式生成电路301根据4X8混洗模式202生成8X8混洗模式203的例子。首先,移位器305生成使4X8混洗模式202向左位移I位而得到的索引列601。接着,加法器307生成对索引列601加I而得到的索引列602。然后,位变更器306直接将索引列601和索引列602交给交织器308。最后,交织器308对索引列601和索引列602的数据要素进行交织(交替配置),生成8X8混洗模式203。如以上说明的那样,根据本实施方式,能够结合PSHUFB命令等混洗命令的规格生成混洗模式的索引的各位宽和个数。由此,能够实现适当的混洗。(实施方式2)实施方式2通过更加简易的手法生成混洗模式。图7是实施方式2的混洗模式生成电路的功能框图。混洗模式生成电路701将输入混洗模式702和位单位信号704作为输入,将输出混洗模式703作为输出,具有移位复制部705 (包括移位器706和复制器707。)以及加法器708。位单位信号704是对向左位移的位数、各索引的复制的个数以及对各索引相加的值等进行控制的信号。移位器706、复制器707和加法器708受理该位单位信号704,分别进行向左位移、各索引的复制以及针对各索引的值的相加。图8的表示出位单位信号704的值与各块的动作之间的对应。表801对应于“位单位信号” 802的项目,示出移位器706应该进行的“向左位移的位数”803、复制器707应该进行的“复制的个数”804、加法器708应该相加的“对各索引相加的值”805。在移位器706、复制器707和加法器708中,这样根据位单位信号的值设定应该进行的处理。位单位信号0、2对应于根据4X8混洗模式生成8X8混洗模式的情况,位单位信号I对应于根据2 X 16混洗模式生成4 X 16混洗模式的情况。通过准备多个这种位单位信号,能够生成符合混洗命令的规格的混洗模式。下面,说明混洗模式生成电路701按照位单位信号的每个值进行的处理的流程。<位单位信号O的情况>图9示出根据4X8混洗模式702生成8X8混洗模式703的流程。首先,移位器706通过使4X8混洗模式702的各索引向左位移I位并提取下位8位,生成索引列901。接着,复制器707使由移位器706进行移位后的索引列901的各索引各复制2个,生成索引列902。最后,加法器708接受由复制器707进行复制后的索引列902,通过从左端起对索引列902加上1、0、1、0、1、0、1、0,生成8X8混洗模式703。<位单位信号I的情况>图10示出根据2X16混洗模式702生成4X16混洗模式703的流程。
首先,移位器706通过使2X 16混洗模式702的各索引向左位移I位并提取下位16位,生成索引列1001。接着,复制器707使由移位器706进行移位后的索引列1001的各索引各复制2个,生成索引列1002。最后,加法器708接受由复制器707进行复制后的索引列1002,通过从左端起对各索引加上1、0、1、0,生成4X 16混洗模式703。<位单位信号2的情况>在图9的例子中,示出根据4个索引生成具有8个索引的混洗模式,但是,例如也可以根据2个有效索引生成具有8个索引的混洗模式。将该例子作为位单位信号2的情况进行说明。图11示出根据4X8混洗模式702生成8X8混洗模式703的流程。4X8混洗模式702分别由8位的4个索引构成。移位器706受理位单位信号2这样的信号后,预先设定在所输入的混洗模式中将左边数第2个索引AO和左边数第4个索引Al作为有效索引进行处理的意思。该移位器706通过使4X8混洗模式702的有效索引AO和Al向左位移2位并提取下位8位,生成索引列1101。接着,复制器707使由移位器706进行移位后的索引列1101的各索引各复制4个,生成索引列1102。然后,加法器708接受由复制器707进行复制后的索引列1102,通过从左端起对各索引加上3、2、1、0、3、2、1、0,生成8X8混洗模式703。如以上说明的那样,根据本实施方式,通过串联连接的移位器706、复制器707、加法器708生成混洗模式,由此,能够进行高速的生成。并且,由于向左位移、复制、加算这样的简单处理的组合即可,所以,与实施方式I相比,能够实现命令循环数的削减和动作频率的提闻。并且,通过位单位信号704对各块的动作进行控制,由此,能够通过相同的电路结构而生成索引的个数和各索引的位宽不同的多种混洗模式。另外,在本实施方式中,按照移位器706、复制器707、加法器708的顺序连接并进行处理,但是,例如,如利用复制器707复制索引后利用移位器706进行移位等那样,处理的顺序也可以不同。作为一例,图12所示的混洗模式生成电路701a具有在利用复制器707进行复制后利用移位器706进行向左位移的移位复制部705a。在这种混洗模式生成电路701a中,与图9同样,图13示出根据4X8混洗模式702生成8X8混洗模式703的流程。在图13中,首先,复制器707使4X8混洗模式702的各索引各复制2个,生成索引列1301。然后,移位器706通过使索引列1301向左位移I位并提取下位8位,生成索引列1302。最后,加法器708接受索引列1302,通过从左端起对索引列1302加上1、0、1、0、1、O、1、O,生成8X8混洗模式703。并且,在本实施方式中,设位单位信号704为单一的信号,但是,也可以对移位器706、复制器707、加法器708输入单独或一部分单独的信号。并且,也可以分成表示输入混洗模式的位单位信号A和表示输出混洗模式的位单位信号B来安装位单位信号704。使用图14对这种安装例进行说明。如图14 (a)所示,具有移位复制部1405和加法器1408的混洗模式生成电路1411将位单位信号A1404a和位单位信号B1404b作为输入。如图14 (b)所示,位单位信号A1404a和位单位信号B1404b分别表示输入混洗模式或输出混洗模式的索引的个数和各索引的位宽。对应于该位单位信号A1404a和位单位信号B1404b的值的组合,设定移位复制部1405应该进行的“向左位移的位数”803和“复制的个数”804、加法器1408应该相加的“对各索引相加的值”805。另外,本实施方式中说明的输入混洗模式或输出混洗模式的索引的个数和各索引的位宽是一例,不限于此。 也可以对位宽进行扩展,或者增加各块(移位器706、复制器707、加法器708)中进行处理的索引的个数。或者,也可以缩小输入混洗模式或输出混洗模式的位宽,减少各块(移位器706、复制器707、加法器708)中进行处理的索引的个数。通过这样调整位宽和索引的个数,能够生成多种混洗模式。另外,在本实施方式中,考虑由于向左位移而导致的溢出(overflow)等,在移位器706中提取结果的下位位,但是,不限于移位器706,也可以在复制器707和加法器708中进行下位位提取处理,还可以不分别进行下位位提取处理而例如在相加后等统一进行下位位提取。并且,也可以代替下位位提取或者与其组合而进行饱和处理(在某个值超过所指定的位宽的范围的最大值或最小值的情况下,将某个值置换为最大值或最小值的处理)。另外,在图8的例子中,位单位信号704的位数为多位,应对3种以上的混洗模式的生成,但是,位单位信号704的位数不限于此。例如,也可以是I位。并且,在本实施方式中,设移位器706、复制器707、加法器708为专用电路,但是,也可以与其他运算电路共用全部或一部分。另外,在本实施方式中,通过在加法器708中将从右端起对各索引加上0、1、2、…的处理置换为从左端起加上0、1、2、…的处理,也能够容易地应对将数据内的数据要素的索引从左端起设为0、1、2、…的混洗模式的生成。(实施方式3)在实施方式3中,针对实施方式2的混洗模式生成电路,还具有进行位宽的缩小或扩展的位变更器,由此,能够生成应对位宽的缩小或扩展的混洗模式。如图15所示,混洗模式生成电路1501将输入混洗模式1502和位单位信号1504作为输入,将输出混洗模式1503作为输出,具有移位复制部1505(包括移位器1506和复制器1507。)、加法器1508以及位变更器1509。位单位信号1504是对向左位移的位数、各索引的复制的个数以及对各索引相加的值、位宽的缩小(扩展)的宽度等进行控制的信号。移位器1506、复制器1507、加法器1508和位变更器1509受理该位单位信号1504,分别进行向左位移、各索引的复制、针对各索引的值的相加以及位宽的变更。
<位单位信号O的情况>对位单位信号1504为O的情况下的动作进行说明。图16示出根据4X 16混洗模式1502生成8X8混洗模式1503的流程。首先,移位器1506通过使4X 16混洗模式1502的各索引向左位移I位并提取下位16位,生成索引列1601。接着,复制器1507使索引列1601的各索引各复制2个,生成索引列1602。然后,加法器1508从左端起对索引列1602的各索引加上1、0、1、0、1、0、1、0。最后,位变更器1509针对通过相加而得到的索引列1603提取各索引的16位中的下位8位,生成8X8混洗模式1503。<位单位信号I的情况>对位单位信号1504为I的情况下的动作进行说明。图17示出根据2X32混洗模式1502生成4X 16混洗模式1503的流程。首先,移位器1506通过使2X32混洗模式1502的各索引向左位移I位并提取下位32位,生成索引列1701。接着,复制器1507使索引列1701的各索引各复制2个,生成索引列1702。然后,加法器1508从左端起对索引列1702的各索引加上1、0、1、0。最后,位变更器1509针对通过相加而得到的索引列1703提取各索引的32位中的下位16位,生成4X 16混洗模式1503。<位单位信号2的情况>不限于图16、图17的例子,也可以根据2X32混洗模式生成8X8混洗模式。将该例子作为位单位信号2的情况进行说明。图18示出根据2X32混洗模式1502生成8X8混洗模式1503的流程。首先,移位器1506通过使2X32混洗模式1502的各索引向左位移2位并提取下位32位,生成索引列1801。接着,复制器1507使索引列1801的各索引各复制4个,生成索引列1802。然后,加法器1508从左端起对索引列1802的各索引加上3、2、1、0、3、2、1、0。最后,位变更器1509针对通过相加而得到的索引列1803提取各索引的32位中的下位8位,生成8X8混洗模式1503。如以上说明的那样,根据本实施方式,通过串联连接的移位器1506、复制器1507、加法器1508、位变更器1509生成混洗模式,由此,能够进行高速的生成。并且,特别是,由于具备位变更器1509,因此即使在输入混洗模式和输出混洗模式的位宽相同的情况下,也能够生成高速的混洗模式。并且,通过位单位信号1504对各块的动作进行控制,由此,能够通过相同的电路结构而生成索引的个数和各索引的位宽不同的多种混洗模式。另外,本实施方式中说明的输入混洗模式或输出混洗模式的索引的个数和各索引的位宽是一例,不限于此。也可以对位宽进行扩展,或者增加各块(移位器1506、复制器1507、加法器1508、位变更器1509)中进行处理的索引的个数。或者,也可以缩小输入混洗模式或输出混洗模式的位宽,减少各块(移位器1506、复制器1507、加法器1508、位变更器1509)中进行处理的索引的个数。
另外,在本实施方式中,按照移位器1506、复制器1507、加法器1508、位变更器1509的顺序进行处理,但是,处理的顺序不限于此。也可以如实施方式2的图12那样使复制器1507和移位器1506的处理的顺序反转。并且,位变更器1509也可以插入移位器1506的前级或后级、复制器1507的前级或后级、加法器1508的前级或后级的任意位置。另外,在本实施方式中,设位单位信号1504为多位的信号,但是,位数不限于此。例如,也可以设为表示O或I的I位的位单位信号。另外,在本实施方式中,设位单位信号1504为单一的信号,但是,也可以对移位器1506、复制器1507、加法器1508、位变更器1509输入单独或一部分单独的信号。并且,也可以如图14那样使用表示输入混洗模式的位单位信号A和表示输出混洗模式的位单位信号B0另外,在本实施方式中,设移位器1506、复制器1507、加法器1508、位变更器1509为专用电路,但是,也可以与其他运算电路共用全部或一部分。除此之外,可以将实施方式2的后半部分所述的各种结构组合到本实施方式中。(实施方式4)图19是实施方式4的混洗模式生成电路的图。在图19中,混洗模式生成电路1901根据32位的输入混洗模式1902生成64位的输出混洗模式1903。混洗模式生成电路1901由2X8索引表1905、4X8索引表1906、索引表参照器1907构成。2X8索引表1905将4个8位索引作为输入,分别针对输入索引而输出2个8位索引。图20示出2X8索引表1905保持的数据。2X8索引表1905例如在所输入的8位索引为O的情况下,输出I和O的2个8位索引。4X8索引表1906将2个16位索引作为输入,分别针对输入索引而输出4个8位索引。图21示出4X8索引表1906保持的数据。4X8索引表1906例如在所输入的16位索引为O的情况下,输出3、2、1、0的4个8位索引。索引表参照器1907受理所输入的位单位信号1904,将索引交给该位单位信号1904所示的表。然后,从表接受与交接的索引对应的索引,根据接受的索引生成混洗模式。在本实施方式中,索引表参照器1907在位单位信号1904为O的情况下将索引交给2X8索引表1905,在位单位信号1904为I的情况下将索引交给4X8索引表1906。下面,对位单位信号1904为O的情况和I的情况下的各个动作进行说明。<位单位信号O的情况>对位单位信号1904为O的情况下的动作进行说明。输入混洗模式1902由4个8位的索引构成,输出混洗模式1903由8个8位的索引构成。索引表参照器1907将混洗模式1902的各索引交给2X8索引表1905。2X8索引表1905根据所输入的I个索引输出2个索引,交给索引表参照器1907。索引表参照器1907依次连结与输入混洗模式的左端的索引对应的索引、与其右侧相邻的索引对应的索引,生成输出混洗模式1903。作为一例,当设4个8位的索引为“0、1、2、3”时,2X8索引表1905根据“O”的输入索引输出“1、0”的输出索引,根据“I”的输入索引输出“3、2”的输出索引,根据“2”的输入索引输出“5、4”的输出索引,根据“3”的输入索引输出“7、6”的输出索引。然后,索引表参照器1907从左侧起依次连结这4组输出索引,生成“1、0、3、2、5、4、
7、6”这样的混洗模式。<位单位信号I的情况>接着,的位单位信号1904为I的情况下的动作进行说明。输入混洗模式1902由2个16位的索引构成,输出混洗模式1903由8个8位的索引构成。索引表参照器1907将混洗模式1902的各索引交给4X8索引表1906。4X8索引表1906根据所输入的I个索引输出4个索引,交给索引表参照器1907。索引表参照器1907依次连结与输入混洗模式的左端的索引对应的索引、与其右侧相邻的索引对应的索引,生成输出混洗模式1903。作为一例,当设2个16位的索引为“0、1”时,4X8索引表1906根据“O”的输入索引输出“3、2、1、0”的输出索弓丨,根据“I”的输入索引输出“7、6、5、4”的输出索引。然后,索引表参照器1907从左侧起依次连结这2组输出索弓丨,生成“3、2、1、0、7、6、
5、4”这样的混洗模式。根据以上说明的实施方式4的结构,通过根据位单位信号1904对索引表进行切换,能够生成与多个索引位宽的组合对应的混洗模式。另外,在本实施方式中,存储在索引表中的索引的值和位宽、针对I个索引输出的索引的个数等也可以与上述值不同。另外,在本实施方式中,设索引表的输入为多个,但是,也可以具有多个仅受理I个输入的索引表,也可以不是表,而由例如多输入单输出选择器等的逻辑电路构成。另外,在本实施方式中,设2X8索引表1905、4X8索引表1906、索引表参照器1907为专用电路,但是,也可以与其他运算电路共用全部或一部分。(实施方式5)图22是实施方式5的包括混洗模式生成电路的处理器的图。在图22中,处理器2201进行与32位的命令位列2202对应的处理。处理器2201由命令解码器2203、SIMD寄存器文件2204、混洗模式生成电路2205和2206、ALU2207、乘法器2208构成。混洗模式生成电路2205与实施方式2的混洗模式生成电路701的结构相同,混洗模式生成电路2206与实施方式3的混洗模式生成电路1501的结构相同。实施方式2和3的混洗模式生成电路701和1501中的输入混洗模式702和1502对应于从SMD寄存器文件2204交接的输入混洗模式。并且,输出混洗模式703和1503对应于交给SMD寄存器文件2204的输出混洗模式,位单位信号704和1504对应于位单位信号 2211 和 2212。SIMD寄存器文件2204具有32个64位的SMD寄存器,各SMD寄存器由RO R31表不。图23示出使用混洗模式生成电路2205和2206的混洗模式生成命令的命令格式。gensflptnl.8.8命令是根据8X8混洗模式生成16X8混洗模式的命令。从SMD寄存器Ra中取得由8个8位索引构成的输入混洗模式,生成由16个8位索引构成的输出混洗模式,将输出混洗模式的上位64位存储在SMD寄存器Rb中,将下位64位存储在Rb的下一个寄存器(表记为Rb+Ι)中。
gensflptnl.16.16命令、gensflptnl.16.8命令也同样,分别是根据4X 16混洗模式生成8 X 16混洗模式的命令、以及根据4X 16混洗模式生成16X8混洗模式的命令。gensflptn.16.8命令是根据4 X 16混洗模式生成8 X 8混洗模式的命令。从SMD寄存器Ra中取得由4个16位索引构成的输入混洗模式,生成由8个8位索引构成的输出混洗模式,存储在SMD寄存器Rb中。gensflptn.32.16命令、gensflptn.32.8命令也同样,分别是根据2 X 32混洗模式生成4X 16混洗模式的命令、以及根据2X32混洗模式生成8X8混洗模式的命令。gensflptnl.8 命令、gensflptnl 命令是 gensflptnl.8.8 命令的别名。并且,gensflptnl.16 命令是 gensflptnl.16.16 命令的别名。同样,gensflptn.16 命令和gensflptn 命令是 gensflptn.16.8 命令的别名,gensflptn.32 命令是 gensflptn.32.16 命令的别名。图24示出图23所示的命令格式的位图。位图由20位的命令识别码、5位的Ra区域、5位的Rb区域、I位的Ic区域、I位的Id区域构成。命令识别码表示是gensflptnl命令或gensflptn命令,如果是gensflptnl命令则命令识别码为0,如果是gensflptn命令则命令识别码为I。Ra区域表示输入混洗模式的存储寄存器,Rb区域表示输出混洗模式的存储寄存器。Ic区域表示输入混洗模式的索引的位宽,如果输入混洗模式的索引的位宽为16则Ic区域为0,如果输入混洗模式的索引的位宽为32则Ic区域为I。Id区域表示输出混洗模式的索引的位宽,如果输出混洗模式的索引的位宽为8则Id区域为0,如果输出混洗模式的索引的位宽为16则Id区域为I。作为例子,对处理器2201中的gensflptnl.8.8R0:R1, R4命令的动作进行说明。命令解码器2203取得命令位列2202,根据命令识别码检测到是gensflptnl命令。然后,经由输入寄存器编号信号2209、输出寄存器编号信号2210对SMD寄存器文件2204通知输入和输出混洗模式的存储SMD寄存器分别为R4和R0。并且,在gensflptnl命令的情况下,由于混洗模式生成电路2205被驱动,所以,经由位单位信号2211对混洗模式生成电路2205通知输入和输出混洗模式的索引的位宽为8位。不对混洗模式生成电路2206的位单位信号2212进行任何通知。SMD寄存器文件2204结合输入寄存器编号信号2209而从SIMD寄存器R4中取得64位的混洗模式,交给混洗模式生成电路2205。混洗模式生成电路2205根据来自命令解码器2203的位单位信号2211生成混洗模式。混洗模式生成电路2205进行与实施方式2的混洗模式生成电路701相同的动作,根据8X8混洗模式生成16X8混洗模式。SIMD寄存器文件结合输出寄存器编号信号2210,将从混洗模式生成电路2205取得的混洗模式的上位64位存储在SMD寄存器RO中,将下位64位存储在SMD寄存器Rl中。作为另一个例子,对处理器2201中的gensflptn.16.8R0, R4命令的动作进行说明。命令解码器2203取得命令位列2202,根据命令识别码检测到是gensflptn命令。然后,经由输入寄存器编号信号2209、输出寄存器编号信号2210对SMD寄存器文件2204通知输入和输出混洗模式的存储SMD寄存器分别为R4和R0。并且,在gensflptn命令的情况下,由于混洗模式生成电路2206被驱动,所以,经由位单位信号2212对混洗模式生成电路2206通知输入和输出混洗模式的索引的位宽分别为16位、8位。不对混洗模式生成电路2205的位单位信号2211进行任何通知。SMD寄存器文件2204结合输入寄存器编号信号2209而从SMD寄存器R4中取得64位的混洗模式,交给混洗模式生成电路2206。混洗模式生成电路2206根据来自命令解码器2203的位单位信号2212生成混洗模式。混洗模式生成电路2206进行与实施方式3的混洗模式生成电路1501相同的动作,根据4X 16混洗模式生成8X8混洗模式。SMD寄存器文件结合输出寄存器编号信号2210,将从混洗模式生成电路2206取得的混洗模式存储在SMD寄存器RO中。根据该结构,能够实现能够通过I个命令来执行混洗模式生成的处理器。另外,在本实施方式中,设混洗模式生成电路2205与混洗模式生成电路701的结构相同、混洗模式生成电路2206与混洗模式生成电路1501的结构相同而进行说明,但是,也可以是至少任意一方由实施方式4所示的混洗模式生成电路1901 (图19)构成。并且,也可以仅由实施方式2、3、4中的任意一个混洗模式生成电路构成。另外,在本实施方式中,具有混洗模式生成电路2205和2206、ALU2207、乘法器2208,但是,也可以分别具有多个,还可以具有其他运算器。并且,也可以分成输入混洗模式位单位信号、输出混洗模式位单位信号等来安装位单位信号2211和2212。并且,例如也可以具有直接指定混洗模式生成电路内的移位器的移位器量等的信号。另外,在本实施方式中,设混洗模式生成电路2205和2206为专用电路,但是,也可以与ALU2207、乘法器2208或其他运算电路共用全部或一部分。另外,在本实施方式中,具有SMD寄存器文件2204,但是,也可以具有其他的特殊
寄存器。另外,在本实施方式中,具有6种命令,但是,也可以具有一部分命令,还可以具有与其他索弓I位宽对应的混洗命令。另外,在本实施方式中,将一部分命令定义为别名,但是,也可以如所记载的那样不对应别名,也可以不具有别名,还可以仅具有作为别名的命令。另外,在本实施方式中,对Ic和Id各分配I位的混洗命令的位图,但是,也可以分别由多位表示。另外,在本实施方式中,将位图的Ic和Id表示为不同的位区域,但是,也可以由I个区域表示。并且,也可以是组合指定输入混洗模式和输出混洗模式的索引位宽的形式,例如在O的情况下根据8X8混洗模式生成16X8混洗模式,在I的情况下根据4X 16混洗模式生成16X8混洗模式等。另外,在本实施方式中,将位图的Ic和Id表示为与命令识别码不同的位,但是,也可以包含在命令识别码中。另外,在本实施方式中,命令位列2202为32位,但是,也可以是32以外的位宽。另外,在本实施方式中,SMD寄存器文件2204具有32个64位的寄存器,但是,也可以是32以外的个数、64以外的位宽。另外,还考虑作为包含图24所示的步骤的混洗模式方法来提供。(实施方式6)在本实施方式中,更加详细地对实施方式5的图23等中说明的混洗模式生成的命令进行说明。图26 Ca)示出混洗模式生成命令的格式。
gensflptnl命令从SMD寄存器Ra中取得输入混洗模式,根据由Rb的值规定的输入输出的混洗模式生成输出混洗模式,将所生成的输出混洗模式的上位的规定数位存储在SIMD寄存器Re中,将下位的规定数位存储在Re的下一个寄存器(表记为Rc+1)中。gensflptn命令从SMD寄存器Ra中取得输入混洗模式,根据由Rb的值规定的输入输出的混洗模式生成输出混洗模式,将所生成的输出混洗模式存储在SMD寄存器Re中。下面,对命令的具体规格进行说明。(命令I) gensflptnl.8.8Rb:Rb+l, Ra (别名:gensfIptnl.8、gensflptnl)该命令根据Ra的8 X 8混洗模式生成16X8混洗模式,存储在Rb和Rb+Ι中。 根据本命令,Ra的8 X 8混洗模式向左位移I位并各复制2个,对I或O进行选择相加,由此生成16X8混洗模式。这是因为,混洗模式的输入为8X8、输出为16X8,这与图9中说明的输入为4X8、输出为8X8的处理相似,所以,输入/输出混洗模式的图像请参照图9。另外,下面,[B:A]表不第A个 第B个位位置。例如,[63:56]表不第56个 第63个位位置。并且,“〈〈I”表示向左位移I位。Rb[63:56]= (Ra[63:56] 1) +1 ;Rb[55:48]= (Ra[63:56] 1) +0 ;Rb[47:40]= (Ra[55:48] 1) +1 ;
Rb[39:32]= (Ra[55:48] 1) +0 ;Rb[31:24]= (Ra[47:40] 1) +1 ;Rb[23:16]= (Ra[47:40] 1) +0 ;Rb[15:8]= (Ra[39:32] 1) +1 ;Rb[7:0]= (Ra[39:32] 1) +0 ;Rb+1 [63:56]= (Ra[31:24] 1) +1 ;Rb+1 [55:48]= (Ra[31:24] 1) +0 ;Rb+1 [47:40]= (Ra[23:16] 1) +1 ;Rb+1 [39:32]= (Ra[23:16] 1) +0 ;Rb+1 [31:24]= (Ra[15:8] 1) +1 ;Rb+1 [23:16]= (Ra[15:8] 1) +0 ;Rb+1 [15:8]= (Ra[7:0]〈〈I)+1 ;Rb+1 [7:0]= (Ra[7:0] 1) +0 ;---------------------------------------------(命令2) gensflptnl.16.16Rb:Rb+l, Ra (别名:gensflptnl.16)该命令根据Ra的4 X 16混洗模式生成8X16混洗模式,存储在Rb和Rb+Ι中。Rb[63:48]= (Ra[63:48] 1) +1 ;Rb[47:32]= (Ra[63:48] 1) +0 ;Rb[31:16]= (Ra[47:32] 1) +1 ;Rb[15:0]= (Ra[47:32] 1) +0 ;Rb+1 [63:48]= (Ra[31:16] 1) +1 ;
Rb+1 [47:32]= (Ra[31:16] 1) +0 ;Rb+1 [31:16]= (Ra[15:0]〈〈I)+1 ;Rb+1 [15:0]= (Ra[15:0] 1) +0 ;---------------------------------------------(命令3) gensflptnl.16.8Rb:Rb+l, Ra (别名:gensflptn.16, gensflptn)该命令根据Ra的4 X 16混洗模式生成16X8混洗模式,存储在Rb和Rb+Ι中。Rb[63:56]= (Ra[63:48] 1) +3 ;Rb[55:48]= (Ra[63:48] 1) +2 ;Rb[47:40]= (Ra[63:48] 1) +1 ;Rb[39:32]= (Ra[63:48] 1) +0 ;Rb[31:24]= (Ra[47:32] 1) +3 ;Rb[23:16]= (Ra[47:32] 1) +2 ;Rb[15:8]= (Ra[47:32] 1) +1 ;Rb[7:0]= (Ra[47:32] 1) +0 ;Rb+1 [63:56]= (Ra[31:16] 1) +3 ;
`
Rb+1 [55:48]= (Ra[31:16] 1) +2 ;Rb+1 [47:40]= (Ra[31:16] 1) +1 ;Rb+1 [39:32]= (Ra[31:16] 1) +0 ;Rb+1 [31:24]= (Ra[15:0] 1) +3 ;Rb+1 [23:16]= (Ra[15:0] 1) +2 ;Rb+1 [15:8]= (Ra[15:0] 1) +1 ;Rb+1 [7:0]= (Ra[15:0] 1) +0 ;---------------------------------------------(命令4) gensflptn.16.8Rb, Ra该命令根据Ra的4 X 16混洗模式生成8X8混洗模式,存储在Rb中。Rb[63:56]= (Ra[63:48] 1) +1 ;Rb[55:48]= (Ra[63:48] 1) +0 ;Rb[47:40]= (Ra[47:32] 1) +1 ;Rb[39:32]= (Ra[47:32] 1) +0 ;Rb [31:24]= (Ra[31:16] 1) +1 ;Rb[23:16]= (Ra[31:16] 1) +0 ;Rb[15:8]= (Ra[15:0] 1) +1 ;Rb[7:0]= (Ra[15:0] 1) +0 ;---------------------------------------------(命令5) gensflptn.32.16Rb, Ra (别名:gensflptn.32)该命令根据Ra的2 X 32混洗模式生成4X16混洗模式,存储在Rb中。Rb[63:48]= (Ra[63:32] 1) +1 ;Rb[47:32]= (Ra[63:32] 1) +0 ;Rb [31:16]= (Ra[31:0] 1) +1 ;
权利要求
1.一种混洗模式生成电路,其特征在于,该混洗模式生成电路具有: 移位复制部,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制了所述信号所示的复制个数而得到的索引列;以及 加法部,将从所述移位复制部输出的索引列作为输入,受理表示针对各索引的加法值的信号,对所述各索引加上所述信号所示的加法值。
2.如权利要求1所述的混洗模式生成电路,其特征在于, 所述信号所示的加法值在复制源相同的各索引间是不同的值。
3.如权利要求2所述的混洗模式生成电路,其特征在于, 所述复制个数为N个, 在所述复制源相同的各索引中,I个索引的加法值为O,其余N-1个索引的加法值分别为1、2、...、N-1,其中,N为2以上的整数。
4.如权利要求1所述的混洗模式生成电路,其特征在于, 所述混洗模式生成电路具有位宽变更部,该位宽变更部受理表示针对各索引的位宽的信号,将各索引的位宽变更为所述信号所示的位宽。
5.如权利要求1所述的混洗模式生成电路,其特征在于, 所述移位复制部在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
6.一种混洗模式生成电路,其特征在于,该混洗模式生成电路具有: mXk索引表,将m个k位的索引分别与j个索引对应; nXl索引表,将η个I位的索引分别与j个索引对应;以及 参照部,受理由j个索引构成的混洗模式和表示参照哪个索引表的信号,参照所述信号所示的索引表,输出由jXm个或jXn个索引构成的混洗模式, 其中,m为2以上的整数,η为与m不同的2以上的整数。
7.—种处理器,包括权利要求1或6所述的混洗模式生成电路,其特征在于,该处理器具有: 命令解码部,对所输入的命令进行解码,根据所述命令而生成控制信号;以及寄存器文件,基于所述控制信号,针对所述混洗模式生成电路供给数据并存储来自所述混洗模式生成电路的数据, 所述混洗模式生成电路受理的信号是所述控制信号。
8.—种混洗模式生成方法,其特征在于,该混洗模式生成方法包括以下步骤: 移位复制步骤,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制了所述信号所示的复制个数而得到的索引列;以及 加法步骤,将由所述移位复制步骤输出的索引列作为输入,受理表示针对各索引的加法值的信号,加上所述信号所示的加法值。
9.如权利要求8所述的混洗模式生成方法,其特征在于, 在所述移位复制步骤中,在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
10.一种命令,其特征在于, 将由多个索引构成的索引列、以及表示位数、复制个数和针对各索引的加法值的控制数据作为输入, 将各索引向左位移所述控制数据所示的位数,并且, 将各索引各复制所述控制数据所示的复制个数,并且, 输出对各索引加上所述控制数据所示的加法值而得到的结果。
11.如权利要求10所述的命令,其特征在于, 所述控制数据所示的加法值在复制源相同的各索引间是不同的值。
12.如权利要求11所述的命令,其特征在于, 所述复制个数为N个, 在所述复制源相同的各索引中,I个索引的加法值为0,其余N-1个索引的加法值分别为1、2、...、N-1,其中,N为2以上的整数。
13.如权利要求10所述的命令,其特征在于, 所述控制数据表示针对各索引的位宽, 将各索引的位宽变更为该控制数据所 示的位宽,作为所述结果进行输出。
全文摘要
移位复制部根据所输入的4个(位宽为8位)索引列(702),使各索引向左位移1位,输出使各索引各复制2个而得到的索引列(902)。然后,加法器输出从左端起依次对索引列(902)加上1、0、1、0、1、0、1、0的值而得到的混洗模式(703)。
文档编号G06F7/76GK103189837SQ20128000307
公开日2013年7月3日 申请日期2012年9月13日 优先权日2011年10月18日
发明者上田恭子, 马场大介 申请人:松下电器产业株式会社