CN103189837A - 混洗模式生成电路、处理器、混洗模式生成方法、命令 - Google Patents

混洗模式生成电路、处理器、混洗模式生成方法、命令 Download PDF

Info

Publication number
CN103189837A
CN103189837A CN2012800030720A CN201280003072A CN103189837A CN 103189837 A CN103189837 A CN 103189837A CN 2012800030720 A CN2012800030720 A CN 2012800030720A CN 201280003072 A CN201280003072 A CN 201280003072A CN 103189837 A CN103189837 A CN 103189837A
Authority
CN
China
Prior art keywords
index
shuffle mode
signal
generative circuit
shuffle
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
Application number
CN2012800030720A
Other languages
English (en)
Other versions
CN103189837B (zh
Inventor
上田恭子
马场大介
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN103189837A publication Critical patent/CN103189837A/zh
Application granted granted Critical
Publication of CN103189837B publication Critical patent/CN103189837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/766Generation of all possible permutations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions

Abstract

移位复制部根据所输入的4个(位宽为8位)索引列(702),使各索引向左位移1位,输出使各索引各复制2个而得到的索引列(902)。然后,加法器输出从左端起依次对索引列(902)加上1、0、1、0、1、0、1、0的值而得到的混洗模式(703)。

Description

混洗模式生成电路、处理器、混洗模式生成方法、命令
技术领域
本发明涉及生成混洗命令中使用的混洗模式(Shuffle pattern)的混洗模式生成电路。
背景技术
在将打包多个数据要素而得到的数据作为1个数据输入的处理器(例如SIMD(Single Instruction Multiple Data)处理器)中,有时需要在这1个数据内进行数据要素的重排。为了应对这种情况,存在对数据要素进行重排的混洗命令这样的命令。
作为混洗命令的一例,对非专利文献1所记载的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”的数据要素中对应有“1”这样的索引,所以,被混洗到混洗模式101的左边数第3个和第4个的“1”的索引的位置。
现有技术文献
非专利文献
非专利文献1:Intel Corporation:"Intel(R)64and IA-32Architectures Software Developers's Manual Volume2:Instruction SetReference,A-Z",4-212
发明内容
发明要解决的课题
非专利文献1中没有公开PSHUFB命令中使用的混洗模式的生成方法。
在生成混洗模式时,为了实现高速化和低消耗电力,优选尽可能通过简易处理来实现。
本发明是在这种背景下完成的,其目的在于,提供能够通过简易处理生成混洗模式的混洗模式生成电路。
用于解决课题的手段
本发明的混洗模式生成电路的特征在于,该混洗模式生成电路具有:移位复制部,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制所述信号所示的复制个数而得到的索引列;以及加法部,将从所述移位复制部输出的索引列作为输入,受理表示针对各索引的加法值的信号,对所述各索引加上所述信号所示的加法值。
发明效果
根据本发明的混洗模式生成电路,通过向左位移、复制和相加这样的简易处理,也能够生成混洗模式。
附图说明
图1是用于说明PSHUFB命令的动作例的图。
图2是示出基于4×16混洗模式的混洗的图。
图3是示出实施方式1的混洗模式生成电路的图。
图4是示出根据4×16混洗模式生成8×8混洗模式的流程的图。
图5是示出基于4×8混洗模式的混洗的图。
图6是示出根据4×8混洗模式生成8×8混洗模式的流程的图。
图7是示出实施方式2的混洗模式生成电路的图。
图8是示出表示位单位信号的值与各块进行的处理内容的对应关系的表的图。
图9是示出根据4×8混洗模式生成8×8混洗模式的流程的图。
图10是示出根据2×16混洗模式生成4×16混洗模式的流程的图。
图11是示出根据4×8混洗模式生成8×8混洗模式的流程的图。
图12是示出实施方式2的变形例的混洗模式生成电路的图。
图13是示出根据实施方式2的变形例的4×8混洗模式生成8×8混洗模式的流程的图。
图14(a)是示出变形例的混洗模式生成电路的图,图14(b)是示出表示位单位信号A、B的各值与各块进行的处理内容的对应关系的表的图。
图15是示出实施方式3的混洗模式生成电路的图。
图16是示出根据4×16混洗模式生成8×8混洗模式的流程的图。
图17是示出根据2×32混洗模式生成4×16混洗模式的流程的图。
图18是示出根据2×32混洗模式生成8×8混洗模式的流程的图。
图19是示出实施方式4的混洗模式生成电路的图。
图20是示出2×8索引表的图。
图21是示出4×8索引表的图。
图22是示出实施方式5的处理器的图。
图23是示出混洗模式生成命令的格式的图。
图24是示出混洗模式生成命令的位图的图。
图25是混洗模式生成方法的处理的流程图。
图26(a)是示出混洗模式生成命令的格式的图,图26(b)是示出混洗模式生成命令的位图的图。
具体实施方式
下面,参照附图对本发明的实施方式进行说明。
(实施方式1)
上述PSHUFB命令是分别针对位宽为8位的8个数据要素的混洗命令,在输入包数据的数据要素的各位宽和个数与PSHUFB命令的规格不同的情况下,有时难以直接执行上述PSHUFB命令。
该情况下,需要根据PSHUFB命令的规格而重新生成混洗模式的索引的各位宽和个数。另外,也可以以具有多种混洗命令的方式进行应对,以使得即使位宽和个数不同也能够进行混洗,但是,是否能够实现这种应对在很大程度上依赖于处理器的规格,所以,在本实施方式中不采用这种应对。
图2示出要求生成这种混洗模式的情况的例子。
在图2的例子中,根据分别由位宽16位的4个索引构成的输入混洗模式202,生成分别由位宽8位的8个索引构成的输出混洗模式203。这样,生成符合PSHUFB命令的规格的混洗模式。
然后,使用所生成的输出混洗模式203,实际上将4个位宽16位的输入包数据204视为8个位宽8位的包数据进行混洗,得到输出包数据205。
在本实施方式1中,如根据输入混洗模式202生成输出混洗模式203那样,对根据某个混洗模式生成具有基于PSHUFB命令的规格的索引的个数和位宽的混洗模式的结构进行说明。
如图3所示,本实施方式1的混洗模式生成电路301将输入混洗模式202和位单位信号304作为输入,将输出混洗模式203作为输出。
位单位信号304是对向左位移的位数、位宽的扩展或缩小的数量和对各索引相加的值等混洗模式生成电路301内的各块的动作进行控制的信号。
根据位单位信号304,移位器305进行向左位移,位变更器306进行位宽的扩展或缩小,加法器307对各索引加上值,交织器308进行索引的交织。
图4示出由混洗模式生成电路301根据4×16混洗模式202生成8×8混洗模式203的例子。另外,“A×B混洗模式”表示索引的个数为A、各索引的位宽为B的混洗模式。
首先,移位器305生成使4×16混洗模式202向左位移1位而得到的索引列401。
接着,加法器307通过对索引列401的各索引加1而生成索引列402。
然后,位变更器306使索引列401和索引列402的位宽从16位缩小一半而成为8位,分别生成索引列404和索引列403。
最后,交织器308对索引列403和索引列404的数据要素进行交织(交替配置),生成8×8混洗模式203。
使用图5对混洗模式生成所需要的其他例子进行说明。图5是如下例子:使用根据4×8混洗模式202生成的8×8混洗模式203,对由4个16位的数据要素构成的输入包数据502进行混洗,输出由4个16位的数据要素构成的输出包数据503。
这样,4×8混洗模式202的总位宽(32位)与输入包数据502的数据要素的总位宽(64位)不同会引起如下情况等:对4个8位数据进行SIMD运算的结果,运算结果的必要位数增加,需要对数据要素的位宽进行扩展。这里,仅在上述PSHUFB命令这样的针对8个8位数据要素的混洗命令的情况下,必须将由4个16位数据要素构成的输入包数据402视为由8个8位数据要素构成的包数据进行混洗。因此,根据4×8混洗模式202生成8×8混洗模式203,使用所生成的8×8混洗模式203将输入包数据502混洗为输出包数据503。
图6示出由混洗模式生成电路301根据4×8混洗模式202生成8×8混洗模式203的例子。
首先,移位器305生成使4×8混洗模式202向左位移1位而得到的索引列601。
接着,加法器307生成对索引列601加1而得到的索引列602。
然后,位变更器306直接将索引列601和索引列602交给交织器308。
最后,交织器308对索引列601和索引列602的数据要素进行交织(交替配置),生成8×8混洗模式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对应于根据4×8混洗模式生成8×8混洗模式的情况,位单位信号1对应于根据2×16混洗模式生成4×16混洗模式的情况。
通过准备多个这种位单位信号,能够生成符合混洗命令的规格的混洗模式。下面,说明混洗模式生成电路701按照位单位信号的每个值进行的处理的流程。
<位单位信号0的情况>
图9示出根据4×8混洗模式702生成8×8混洗模式703的流程。
首先,移位器706通过使4×8混洗模式702的各索引向左位移1位并提取下位8位,生成索引列901。
接着,复制器707使由移位器706进行移位后的索引列901的各索引各复制2个,生成索引列902。
最后,加法器708接受由复制器707进行复制后的索引列902,通过从左端起对索引列902加上1、0、1、0、1、0、1、0,生成8×8混洗模式703。
<位单位信号1的情况>
图10示出根据2×16混洗模式702生成4×16混洗模式703的流程。
首先,移位器706通过使2×16混洗模式702的各索引向左位移1位并提取下位16位,生成索引列1001。
接着,复制器707使由移位器706进行移位后的索引列1001的各索引各复制2个,生成索引列1002。
最后,加法器708接受由复制器707进行复制后的索引列1002,通过从左端起对各索引加上1、0、1、0,生成4×16混洗模式703。
<位单位信号2的情况>
在图9的例子中,示出根据4个索引生成具有8个索引的混洗模式,但是,例如也可以根据2个有效索引生成具有8个索引的混洗模式。将该例子作为位单位信号2的情况进行说明。
图11示出根据4×8混洗模式702生成8×8混洗模式703的流程。
4×8混洗模式702分别由8位的4个索引构成。
移位器706受理位单位信号2这样的信号后,预先设定在所输入的混洗模式中将左边数第2个索引A0和左边数第4个索引A1作为有效索引进行处理的意思。
该移位器706通过使4×8混洗模式702的有效索引A0和A1向左位移2位并提取下位8位,生成索引列1101。
接着,复制器707使由移位器706进行移位后的索引列1101的各索引各复制4个,生成索引列1102。
然后,加法器708接受由复制器707进行复制后的索引列1102,通过从左端起对各索引加上3、2、1、0、3、2、1、0,生成8×8混洗模式703。
如以上说明的那样,根据本实施方式,通过串联连接的移位器706、复制器707、加法器708生成混洗模式,由此,能够进行高速的生成。并且,由于向左位移、复制、加算这样的简单处理的组合即可,所以,与实施方式1相比,能够实现命令循环数的削减和动作频率的提高。
并且,通过位单位信号704对各块的动作进行控制,由此,能够通过相同的电路结构而生成索引的个数和各索引的位宽不同的多种混洗模式。
另外,在本实施方式中,按照移位器706、复制器707、加法器708的顺序连接并进行处理,但是,例如,如利用复制器707复制索引后利用移位器706进行移位等那样,处理的顺序也可以不同。作为一例,图12所示的混洗模式生成电路701a具有在利用复制器707进行复制后利用移位器706进行向左位移的移位复制部705a。
在这种混洗模式生成电路701a中,与图9同样,图13示出根据4×8混洗模式702生成8×8混洗模式703的流程。
在图13中,首先,复制器707使4×8混洗模式702的各索引各复制2个,生成索引列1301。
然后,移位器706通过使索引列1301向左位移1位并提取下位8位,生成索引列1302。
最后,加法器708接受索引列1302,通过从左端起对索引列1302加上1、0、1、0、1、0、1、0,生成8×8混洗模式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的位数不限于此。例如,也可以是1位。
并且,在本实施方式中,设移位器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,分别进行向左位移、各索引的复制、针对各索引的值的相加以及位宽的变更。
<位单位信号0的情况>
对位单位信号1504为0的情况下的动作进行说明。
图16示出根据4×16混洗模式1502生成8×8混洗模式1503的流程。
首先,移位器1506通过使4×16混洗模式1502的各索引向左位移1位并提取下位16位,生成索引列1601。
接着,复制器1507使索引列1601的各索引各复制2个,生成索引列1602。
然后,加法器1508从左端起对索引列1602的各索引加上1、0、1、0、1、0、1、0。
最后,位变更器1509针对通过相加而得到的索引列1603提取各索引的16位中的下位8位,生成8×8混洗模式1503。
<位单位信号1的情况>
对位单位信号1504为1的情况下的动作进行说明。
图17示出根据2×32混洗模式1502生成4×16混洗模式1503的流程。
首先,移位器1506通过使2×32混洗模式1502的各索引向左位移1位并提取下位32位,生成索引列1701。
接着,复制器1507使索引列1701的各索引各复制2个,生成索引列1702。
然后,加法器1508从左端起对索引列1702的各索引加上1、0、1、0。
最后,位变更器1509针对通过相加而得到的索引列1703提取各索引的32位中的下位16位,生成4×16混洗模式1503。
<位单位信号2的情况>
不限于图16、图17的例子,也可以根据2×32混洗模式生成8×8混洗模式。将该例子作为位单位信号2的情况进行说明。
图18示出根据2×32混洗模式1502生成8×8混洗模式1503的流程。
首先,移位器1506通过使2×32混洗模式1502的各索引向左位移2位并提取下位32位,生成索引列1801。
接着,复制器1507使索引列1801的各索引各复制4个,生成索引列1802。
然后,加法器1508从左端起对索引列1802的各索引加上3、2、1、0、3、2、1、0。
最后,位变更器1509针对通过相加而得到的索引列1803提取各索引的32位中的下位8位,生成8×8混洗模式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为多位的信号,但是,位数不限于此。例如,也可以设为表示0或1的1位的位单位信号。
另外,在本实施方式中,设位单位信号1504为单一的信号,但是,也可以对移位器1506、复制器1507、加法器1508、位变更器1509输入单独或一部分单独的信号。并且,也可以如图14那样使用表示输入混洗模式的位单位信号A和表示输出混洗模式的位单位信号B。
另外,在本实施方式中,设移位器1506、复制器1507、加法器1508、位变更器1509为专用电路,但是,也可以与其他运算电路共用全部或一部分。
除此之外,可以将实施方式2的后半部分所述的各种结构组合到本实施方式中。
(实施方式4)
图19是实施方式4的混洗模式生成电路的图。
在图19中,混洗模式生成电路1901根据32位的输入混洗模式1902生成64位的输出混洗模式1903。混洗模式生成电路1901由2×8索引表1905、4×8索引表1906、索引表参照器1907构成。
2×8索引表1905将4个8位索引作为输入,分别针对输入索引而输出2个8位索引。
图20示出2×8索引表1905保持的数据。2×8索引表1905例如在所输入的8位索引为0的情况下,输出1和0的2个8位索引。
4×8索引表1906将2个16位索引作为输入,分别针对输入索引而输出4个8位索引。图21示出4×8索引表1906保持的数据。4×8索引表1906例如在所输入的16位索引为0的情况下,输出3、2、1、0的4个8位索引。
索引表参照器1907受理所输入的位单位信号1904,将索引交给该位单位信号1904所示的表。然后,从表接受与交接的索引对应的索引,根据接受的索引生成混洗模式。
在本实施方式中,索引表参照器1907在位单位信号1904为0的情况下将索引交给2×8索引表1905,在位单位信号1904为1的情况下将索引交给4×8索引表1906。下面,对位单位信号1904为0的情况和1的情况下的各个动作进行说明。
<位单位信号0的情况>
对位单位信号1904为0的情况下的动作进行说明。
输入混洗模式1902由4个8位的索引构成,输出混洗模式1903由8个8位的索引构成。索引表参照器1907将混洗模式1902的各索引交给2×8索引表1905。
2×8索引表1905根据所输入的1个索引输出2个索引,交给索引表参照器1907。索引表参照器1907依次连结与输入混洗模式的左端的索引对应的索引、与其右侧相邻的索引对应的索引,生成输出混洗模式1903。
作为一例,当设4个8位的索引为“0、1、2、3”时,2×8索引表1905根据“0”的输入索引输出“1、0”的输出索引,根据“1”的输入索引输出“3、2”的输出索引,根据“2”的输入索引输出“5、4”的输出索引,根据“3”的输入索引输出“7、6”的输出索引。
然后,索引表参照器1907从左侧起依次连结这4组输出索引,生成“1、0、3、2、5、4、7、6”这样的混洗模式。
<位单位信号1的情况>
接着,的位单位信号1904为1的情况下的动作进行说明。输入混洗模式1902由2个16位的索引构成,输出混洗模式1903由8个8位的索引构成。索引表参照器1907将混洗模式1902的各索引交给4×8索引表1906。
4×8索引表1906根据所输入的1个索引输出4个索引,交给索引表参照器1907。索引表参照器1907依次连结与输入混洗模式的左端的索引对应的索引、与其右侧相邻的索引对应的索引,生成输出混洗模式1903。
作为一例,当设2个16位的索引为“0、1”时,4×8索引表1906根据“0”的输入索引输出“3、2、1、0”的输出索引,根据“1”的输入索引输出“7、6、5、4”的输出索引。
然后,索引表参照器1907从左侧起依次连结这2组输出索引,生成“3、2、1、0、7、6、5、4”这样的混洗模式。
根据以上说明的实施方式4的结构,通过根据位单位信号1904对索引表进行切换,能够生成与多个索引位宽的组合对应的混洗模式。
另外,在本实施方式中,存储在索引表中的索引的值和位宽、针对1个索引输出的索引的个数等也可以与上述值不同。
另外,在本实施方式中,设索引表的输入为多个,但是,也可以具有多个仅受理1个输入的索引表,也可以不是表,而由例如多输入单输出选择器等的逻辑电路构成。
另外,在本实施方式中,设2×8索引表1905、4×8索引表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对应于从SIMD寄存器文件2204交接的输入混洗模式。并且,输出混洗模式703和1503对应于交给SIMD寄存器文件2204的输出混洗模式,位单位信号704和1504对应于位单位信号2211和2212。
SIMD寄存器文件2204具有32个64位的SIMD寄存器,各SIMD寄存器由R0~R31表示。
图23示出使用混洗模式生成电路2205和2206的混洗模式生成命令的命令格式。
gensflptnl.8.8命令是根据8×8混洗模式生成16×8混洗模式的命令。从SIMD寄存器Ra中取得由8个8位索引构成的输入混洗模式,生成由16个8位索引构成的输出混洗模式,将输出混洗模式的上位64位存储在SIMD寄存器Rb中,将下位64位存储在Rb的下一个寄存器(表记为Rb+1)中。
gensflptnl.16.16命令、gensflptnl.16.8命令也同样,分别是根据4×16混洗模式生成8×16混洗模式的命令、以及根据4×16混洗模式生成16×8混洗模式的命令。
gensflptn.16.8命令是根据4×16混洗模式生成8×8混洗模式的命令。从SIMD寄存器Ra中取得由4个16位索引构成的输入混洗模式,生成由8个8位索引构成的输出混洗模式,存储在SIMD寄存器Rb中。
gensflptn.32.16命令、gensflptn.32.8命令也同样,分别是根据2×32混洗模式生成4×16混洗模式的命令、以及根据2×32混洗模式生成8×8混洗模式的命令。
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区域、1位的Ic区域、1位的Id区域构成。
命令识别码表示是gensflptnl命令或gensflptn命令,如果是gensflptnl命令则命令识别码为0,如果是gensflptn命令则命令识别码为1。Ra区域表示输入混洗模式的存储寄存器,Rb区域表示输出混洗模式的存储寄存器。Ic区域表示输入混洗模式的索引的位宽,如果输入混洗模式的索引的位宽为16则Ic区域为0,如果输入混洗模式的索引的位宽为32则Ic区域为1。Id区域表示输出混洗模式的索引的位宽,如果输出混洗模式的索引的位宽为8则Id区域为0,如果输出混洗模式的索引的位宽为16则Id区域为1。
作为例子,对处理器2201中的gensflptnl.8.8R0:R1,R4命令的动作进行说明。命令解码器2203取得命令位列2202,根据命令识别码检测到是gensflptnl命令。然后,经由输入寄存器编号信号2209、输出寄存器编号信号2210对SIMD寄存器文件2204通知输入和输出混洗模式的存储SIMD寄存器分别为R4和R0。并且,在gensflptnl命令的情况下,由于混洗模式生成电路2205被驱动,所以,经由位单位信号2211对混洗模式生成电路2205通知输入和输出混洗模式的索引的位宽为8位。不对混洗模式生成电路2206的位单位信号2212进行任何通知。SIMD寄存器文件2204结合输入寄存器编号信号2209而从SIMD寄存器R4中取得64位的混洗模式,交给混洗模式生成电路2205。混洗模式生成电路2205根据来自命令解码器2203的位单位信号2211生成混洗模式。
混洗模式生成电路2205进行与实施方式2的混洗模式生成电路701相同的动作,根据8×8混洗模式生成16×8混洗模式。SIMD寄存器文件结合输出寄存器编号信号2210,将从混洗模式生成电路2205取得的混洗模式的上位64位存储在SIMD寄存器R0中,将下位64位存储在SIMD寄存器R1中。
作为另一个例子,对处理器2201中的gensflptn.16.8R0,R4命令的动作进行说明。命令解码器2203取得命令位列2202,根据命令识别码检测到是gensflptn命令。然后,经由输入寄存器编号信号2209、输出寄存器编号信号2210对SIMD寄存器文件2204通知输入和输出混洗模式的存储SIMD寄存器分别为R4和R0。并且,在gensflptn命令的情况下,由于混洗模式生成电路2206被驱动,所以,经由位单位信号2212对混洗模式生成电路2206通知输入和输出混洗模式的索引的位宽分别为16位、8位。不对混洗模式生成电路2205的位单位信号2211进行任何通知。SIMD寄存器文件2204结合输入寄存器编号信号2209而从SIMD寄存器R4中取得64位的混洗模式,交给混洗模式生成电路2206。混洗模式生成电路2206根据来自命令解码器2203的位单位信号2212生成混洗模式。混洗模式生成电路2206进行与实施方式3的混洗模式生成电路1501相同的动作,根据4×16混洗模式生成8×8混洗模式。SIMD寄存器文件结合输出寄存器编号信号2210,将从混洗模式生成电路2206取得的混洗模式存储在SIMD寄存器R0中。
根据该结构,能够实现能够通过1个命令来执行混洗模式生成的处理器。
另外,在本实施方式中,设混洗模式生成电路2205与混洗模式生成电路701的结构相同、混洗模式生成电路2206与混洗模式生成电路1501的结构相同而进行说明,但是,也可以是至少任意一方由实施方式4所示的混洗模式生成电路1901(图19)构成。并且,也可以仅由实施方式2、3、4中的任意一个混洗模式生成电路构成。
另外,在本实施方式中,具有混洗模式生成电路2205和2206、ALU2207、乘法器2208,但是,也可以分别具有多个,还可以具有其他运算器。
并且,也可以分成输入混洗模式位单位信号、输出混洗模式位单位信号等来安装位单位信号2211和2212。并且,例如也可以具有直接指定混洗模式生成电路内的移位器的移位器量等的信号。
另外,在本实施方式中,设混洗模式生成电路2205和2206为专用电路,但是,也可以与ALU2207、乘法器2208或其他运算电路共用全部或一部分。
另外,在本实施方式中,具有SIMD寄存器文件2204,但是,也可以具有其他的特殊寄存器。
另外,在本实施方式中,具有6种命令,但是,也可以具有一部分命令,还可以具有与其他索引位宽对应的混洗命令。
另外,在本实施方式中,将一部分命令定义为别名,但是,也可以如所记载的那样不对应别名,也可以不具有别名,还可以仅具有作为别名的命令。
另外,在本实施方式中,对Ic和Id各分配1位的混洗命令的位图,但是,也可以分别由多位表示。
另外,在本实施方式中,将位图的Ic和Id表示为不同的位区域,但是,也可以由1个区域表示。并且,也可以是组合指定输入混洗模式和输出混洗模式的索引位宽的形式,例如在0的情况下根据8×8混洗模式生成16×8混洗模式,在1的情况下根据4×16混洗模式生成16×8混洗模式等。
另外,在本实施方式中,将位图的Ic和Id表示为与命令识别码不同的位,但是,也可以包含在命令识别码中。
另外,在本实施方式中,命令位列2202为32位,但是,也可以是32以外的位宽。
另外,在本实施方式中,SIMD寄存器文件2204具有32个64位的寄存器,但是,也可以是32以外的个数、64以外的位宽。
另外,还考虑作为包含图24所示的步骤的混洗模式方法来提供。
(实施方式6)
在本实施方式中,更加详细地对实施方式5的图23等中说明的混洗模式生成的命令进行说明。
图26(a)示出混洗模式生成命令的格式。
gensflptnl命令从SIMD寄存器Ra中取得输入混洗模式,根据由Rb的值规定的输入输出的混洗模式生成输出混洗模式,将所生成的输出混洗模式的上位的规定数位存储在SIMD寄存器Rc中,将下位的规定数位存储在Rc的下一个寄存器(表记为Rc+1)中。
gensflptn命令从SIMD寄存器Ra中取得输入混洗模式,根据由Rb的值规定的输入输出的混洗模式生成输出混洗模式,将所生成的输出混洗模式存储在SIMD寄存器Rc中。
下面,对命令的具体规格进行说明。
(命令1)gensflptnl.8.8Rb:Rb+1,Ra(别名:gensflptnl.8、gensflptnl)
该命令根据Ra的8×8混洗模式生成16×8混洗模式,存储在Rb和Rb+1中。
根据本命令,Ra的8×8混洗模式向左位移1位并各复制2个,对1或0进行选择相加,由此生成16×8混洗模式。这是因为,混洗模式的输入为8×8、输出为16×8,这与图9中说明的输入为4×8、输出为8×8的处理相似,所以,输入/输出混洗模式的图像请参照图9。
另外,下面,[B:A]表示第A个~第B个位位置。例如,[63:56]表示第56个~第63个位位置。
并且,“<<1”表示向左位移1位。
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]<<1)+1;
Rb+1[7:0]=(Ra[7:0]<<1)+0;
---------------------------------------------
(命令2)gensflptnl.16.16Rb:Rb+1,Ra(别名:gensflptnl.16)
该命令根据Ra的4×16混洗模式生成8×16混洗模式,存储在Rb和Rb+1中。
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]<<1)+1;
Rb+1[15:0]=(Ra[15:0]<<1)+0;
---------------------------------------------
(命令3)gensflptnl.16.8Rb:Rb+1,Ra(别名:gensflptn.16,gensflptn)
该命令根据Ra的4×16混洗模式生成16×8混洗模式,存储在Rb和Rb+1中。
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×16混洗模式生成8×8混洗模式,存储在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×32混洗模式生成4×16混洗模式,存储在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;
Rb[15:0]=(Ra[31:0]<<1)+0;
---------------------------------------------
(命令6)gensflptn.32.8Rb,Ra
该命令根据Ra的2×32混洗模式生成8×8混洗模式,存储在Rb中。
Rb[63:56]=(Ra[63:32]<<1)+3;
Rb[55:48]=(Ra[63:32]<<1)+2;
Rb[47:40]=(Ra[63:32]<<1)+1;
Rb[39:32]=(Ra[63:32]<<1)+0;
Rb[31:24]=(Ra[31:0]<<1)+3;
Rb[23:16]=(Ra[31:0]<<1)+2;
Rb[15:8]=(Ra[31:0]<<1)+1;
Rb[7:0]=(Ra[31:0]<<1)+0;
---------------------------------------------
(命令7)gensflptnl Rc:Rc+1,Ra,Rb
该命令根据Rb的值,根据Ra生成混洗模式,存储在Rc和Rc+1中。根据Rb[1:0]的值,成为条件分支的IF ELSE文。另外,Rb[1:0]为0、1、2以外的情况下的处理不定。
if(Rb[1:0]=0)[
Rc[63:56]=(Ra[63:56]<<1)+1;
Rc[55:48]=(Ra[63:56]<<1)+0;
Rc[47:40]=(Ra[55:48]<<1)+1;
Rc[39:32]=(Ra[55:48]<<1)+0;
Rc[31:24]=(Ra[47:40]<<1)+1;
Rc[23:16]=(Ra[47:40]<<1)+0;
Rc[15:8]=(Ra[39:32]<<1)+1;
Rc[7:0]=(Ra[39:32]<<1)+0;
Rc+1[63:56]=(Ra[31:24]<<1)+1;
Rc+1[55:48]=(Ra[31:24]<<1)+0;
Rc+1[47:40]=(Ra[23:16]<<1)+1;
Rc+1[39:32]=(Ra[23:16]<<1)+0;
Rc+1[31:24]=(Ra[15:8]<<1)+1;
Rc+1[23:16]=(Ra[15:8]<<1)+0;
Rc+1[15:8]=(Ra[7:0]<<1)+1;
Rc+1[7:0]=(Ra[7:0]<<1)+0;
]else if(Rb[1:0]=1)[
Rc[63:48]=(Ra[63:48]<<1)+1;
Rc[47:32]=(Ra[63:48]<<1)+0;
Rc[31:16]=(Ra[47:32]<<1)+1;
Rc[15:0]=(Ra[47:32]<<1)+0;
Rc+1[63:48]=(Ra[31:16]<<1)+1;
Rc+1[47:32]=(Ra[31:16]<<1)+0;
Rc+1[31:16]=(Ra[15:0]<<1)+1;
Rc+1[15:0]=(Ra[15:0]<<1)+0;
]else if(Rb[1:0]=2)[
Rc[63:56]=(Ra[63:48]<<1)+3;
Rc[55:48]=(Ra[63:48]<<1)+2;
Rc[47:40]=(Ra[63:48]<<1)+1;
Rc[39:32]=(Ra[63:48]<<1)+0;
Rc[31:24]=(Ra[47:32]<<1)+3;
Rc[23:16]=(Ra[47:32]<<1)+2;
Rc[15:8]=(Ra[47:32]<<1)+1;
Rc[7:0]=(Ra[47:32]<<1)+0;
Rc+1[63:56]=(Ra[31:16]<<1)+3;
Rc+1[55:48]=(Ra[31:16]<<1)+2;
Rc+1[47:40]=(Ra[31:16]<<1)+1;
Rc+1[39:32]=(Ra[31:16]<<1)+0;
Rc+1[31:24]=(Ra[15:0]<<1)+3;
Rc+1[23:16]=(Ra[15:0]<<1)+2;
Rc+1[15:8]=(Ra[15:0]<<1)+1;
Rc+1[7:0]=(Ra[15:0]<<1)+0;
]
---------------------------------------------
另外,上述所示的Rb的值、参照Rb的位的位置只不过是一例,不限于此。并且,仅记载了Rb[1:0]为0、1、2的情况,但是,也可以定义除此之外的值,Rb[1:0]为0、1、2以外的情况下的处理也可以不是不定的,而是固定的(例如与0相同等)。这些在下一个命令8中也同样。
(命令8)gensflptn Rc,Ra,Rb
该命令根据Rb的值,根据Ra生成混洗模式,存储在Rc中。Rb[1:0]为0、1、2以外的情况下的处理不定。
if(Rb[1:0]=0)[
Rc[63:56]=(Ra[63:48]<<1)+1;
Rc[55:48]=(Ra[63:48]<<1)+0;
Rc[47:40]=(Ra[47:32]<<1)+1;
Rc[39:32]=(Ra[47:32]<<1)+0;
Rc[31:24]=(Ra[31:16]<<1)+1;
Rc[23:16]=(Ra[31:16]<<1)+0;
Rc[15:8]=(Ra[15:0]<<1)+1;
Rc[7:0]=(Ra[15:0]<<1)+0;
]else if(Rb[1:0]=1)[
Rc[63:48]=(Ra[63:32]<<1)+1;
Rc[47:32]=(Ra[63:32]<<1)+0;
Rc[31:16]=(Ra[31:0]<<1)+1;
Rc[15:0]=(Ra[31:0]<<1)+0;
]else if(Rb[1:0]=2)[
Rc[63:56]=(Ra[63:32]<<1)+3;
Rc[55:48]=(Ra[63:32]<<1)+2;
Rc[47:40]=(Ra[63:32]<<1)+1;
Rc[39:32]=(Ra[63:32]<<1)+0;
Rc[31:24]=(Ra[31:0]<<1)+3;
Rc[23:16]=(Ra[31:0]<<1)+2;
Rc[15:8]=(Ra[31:0]<<1)+1;
Rc[7:0]=(Ra[31:0]<<1)+0;
]
---------------------------------------------
<补充1>
(1)各实施方式的混洗模式生成电路也可以作为生成混洗模式的方法来实施。图25示出与实施方式2对应的方法的流程。在该方法中,成为如下顺序:取得由多个索引构成的索引列(S2501),使各索引向左位移位单位信号所示的位数,并且将各索引各复制位单位信号所示的复制的个数(S2502),对各索引加上位单位信号所示的加法值(S2503)。
(2)在各实施方式中,将对混洗模式生成电路701输入的信息称为“输入混洗模式”,将混洗模式生成电路701生成的信息称为“输出混洗模式”,但是,为了明确区分混洗模式生成电路701中的材料(输入)和生成物(输出),也可以将输入的信息称为“索引列”,将生成的信息简称为“混洗模式”。
(3)实施方式5、6中说明的命令可以由各种信息处理装置的处理器和与该处理器连接的各种电路执行。
<补充2>
本实施方式包括如下方式。
(1)实施方式的混洗模式生成电路具有:移位复制部,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制所述信号所示的复制个数而得到的索引列;以及加法部,将从所述移位复制部输出的索引列作为输入,受理表示针对各索引的加法值的信号,对所述各索引加上所述信号所示的加法值。
(2)并且,也可以是,所述信号所示的加法值在复制源相同的各索引间是不同的值。
通过使加法值在复制源相同的各索引间成为不同的值,能够有助于生成没有重复和缺失的混洗模式。
(3)也可以是,所述复制个数为N个(N为2以上的整数),在所述复制源相同的各索引中,1个索引的加法值为0,其余N-1个索引的加法值分别为1、2、···、N-1。
根据该结构,通过使1个索引的加法值为0,能够减轻处理负荷。
(4)也可以是,所述混洗模式生成电路具有位宽变更部,该位宽变更部受理表示针对各索引的位宽的信号,将各索引的位宽变更为所述信号所示的位宽。
根据该结构,能够对所生成的混洗模式的位宽进行调整。
(5)也可以是,所述移位复制部在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
(6)实施方式的混洗模式生成电路具有:m×k索引表,使m个(其中,m为2以上的整数)k位的索引分别与j个索引对应;n×l索引表,使n个(其中,n为与m不同的2以上的整数)l位的索引分别与j个索引对应;以及参照部,受理由j个索引构成的混洗模式和表示参照哪个索引表的信号,参照所述信号所示的索引表,输出由j×m个或j×n个索引构成的混洗模式。
(7)也可以是包括上述混洗模式生成电路的处理器,该处理器具有:命令解码部,对所输入的命令进行解码,根据所述命令而生成控制信号;以及寄存器文件,根据所述控制信号,针对所述混洗模式生成电路供给数据并存储来自所述混洗模式生成电路的数据,所述混洗模式生成电路受理的信号是所述控制信号。
(8)实施方式的混洗模式生成方法包括以下步骤:移位复制步骤,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制了所述信号所示的复制个数而得到的索引列;以及加法步骤,将由所述移位复制步骤输出的索引列作为输入,受理表示针对各索引的加法值的信号,加上所述信号所示的加法值。
(9)也可以是,在所述移位复制步骤中,在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
(10)实施方式的命令将由多个索引构成的索引列、以及表示位数、复制个数和针对各索引的加法值的控制数据作为输入,将各索引向左位移所述控制数据所示的位数,并且,将各索引各复制所述控制数据所示的复制个数,并且,输出对各索引加上所述控制数据所示的加法值而得到的结果。
(11)在(10)中,也可以是,所述控制数据所示的加法值在复制源相同的各索引间是不同的值。
(12)在(11)中,也可以是,所述复制个数为N个(N为2以上的整数),在所述复制源相同的各索引中,1个索引的加法值为0,其余N-1个索引的加法值分别为1、2、···、N-1。
(13)在(10)中,也可以是,所述控制数据表示针对各索引的位宽,将各索引的位宽变更为该控制数据所示的位宽,作为所述结果进行输出。
产业上的可利用性
根据本发明的混洗模式生成电路,在具有混洗模式生成命令的SIMD处理器等的用途中是有用的。
标号说明
101:混洗模式;202、702、1502、1902:输入混洗模式(索引列);203、703、1503、1903:输出混洗模式;301、701、701a、1411、1501、1901、2205、2206:混洗模式生成电路;304、704、802、1504、1904、2211、2212:位单位信号;305、706、1506:移位器;306、1509:位变更器;307、708、1408、1508:加法器;401、402、403、404、601、602、901、902、1001、1002、1101、1102、1301、1302、1601、1602、1603、1701、1702、1703、1801、1802、1803:索引列;705、705a、1405、1505:移位复制部;707、1507:复制器;1404a:位单位信号A;1404b:位单位信号B;1905:2×8索引表;1906:4×8索引表;1907:索引表参照器;2201:处理器;2203:命令解码器;2204:SIMD寄存器文件。

Claims (13)

1.一种混洗模式生成电路,其特征在于,该混洗模式生成电路具有:
移位复制部,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制了所述信号所示的复制个数而得到的索引列;以及
加法部,将从所述移位复制部输出的索引列作为输入,受理表示针对各索引的加法值的信号,对所述各索引加上所述信号所示的加法值。
2.如权利要求1所述的混洗模式生成电路,其特征在于,
所述信号所示的加法值在复制源相同的各索引间是不同的值。
3.如权利要求2所述的混洗模式生成电路,其特征在于,
所述复制个数为N个,
在所述复制源相同的各索引中,1个索引的加法值为0,其余N-1个索引的加法值分别为1、2、···、N-1,其中,N为2以上的整数。
4.如权利要求1所述的混洗模式生成电路,其特征在于,
所述混洗模式生成电路具有位宽变更部,该位宽变更部受理表示针对各索引的位宽的信号,将各索引的位宽变更为所述信号所示的位宽。
5.如权利要求1所述的混洗模式生成电路,其特征在于,
所述移位复制部在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
6.一种混洗模式生成电路,其特征在于,该混洗模式生成电路具有:
m×k索引表,将m个k位的索引分别与j个索引对应;
n×l索引表,将n个l位的索引分别与j个索引对应;以及
参照部,受理由j个索引构成的混洗模式和表示参照哪个索引表的信号,参照所述信号所示的索引表,输出由j×m个或j×n个索引构成的混洗模式,
其中,m为2以上的整数,n为与m不同的2以上的整数。
7.一种处理器,包括权利要求1或6所述的混洗模式生成电路,其特征在于,该处理器具有:
命令解码部,对所输入的命令进行解码,根据所述命令而生成控制信号;以及
寄存器文件,基于所述控制信号,针对所述混洗模式生成电路供给数据并存储来自所述混洗模式生成电路的数据,
所述混洗模式生成电路受理的信号是所述控制信号。
8.一种混洗模式生成方法,其特征在于,该混洗模式生成方法包括以下步骤:
移位复制步骤,将由多个索引构成的索引列作为输入,受理表示位数和复制个数的信号,将各索引向左位移所述信号所示的位数,并且,输出将各索引各复制了所述信号所示的复制个数而得到的索引列;以及
加法步骤,将由所述移位复制步骤输出的索引列作为输入,受理表示针对各索引的加法值的信号,加上所述信号所示的加法值。
9.如权利要求8所述的混洗模式生成方法,其特征在于,
在所述移位复制步骤中,在所述各索引的向左位移后进行各索引的复制,或者在所述各索引的复制后进行各索引的向左位移。
10.一种命令,其特征在于,
将由多个索引构成的索引列、以及表示位数、复制个数和针对各索引的加法值的控制数据作为输入,
将各索引向左位移所述控制数据所示的位数,并且,
将各索引各复制所述控制数据所示的复制个数,并且,
输出对各索引加上所述控制数据所示的加法值而得到的结果。
11.如权利要求10所述的命令,其特征在于,
所述控制数据所示的加法值在复制源相同的各索引间是不同的值。
12.如权利要求11所述的命令,其特征在于,
所述复制个数为N个,
在所述复制源相同的各索引中,1个索引的加法值为0,其余N-1个索引的加法值分别为1、2、···、N-1,其中,N为2以上的整数。
13.如权利要求10所述的命令,其特征在于,
所述控制数据表示针对各索引的位宽,
将各索引的位宽变更为该控制数据所示的位宽,作为所述结果进行输出。
CN201280003072.0A 2011-10-18 2012-09-13 混洗模式生成电路、处理器、混洗模式生成方法、命令 Active CN103189837B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011228892 2011-10-18
JP2011-228892 2011-10-18
PCT/JP2012/005819 WO2013057872A1 (ja) 2011-10-18 2012-09-13 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令

Publications (2)

Publication Number Publication Date
CN103189837A true CN103189837A (zh) 2013-07-03
CN103189837B CN103189837B (zh) 2016-12-28

Family

ID=48140543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280003072.0A Active CN103189837B (zh) 2011-10-18 2012-09-13 混洗模式生成电路、处理器、混洗模式生成方法、命令

Country Status (4)

Country Link
US (1) US9292286B2 (zh)
JP (1) JP5988222B2 (zh)
CN (1) CN103189837B (zh)
WO (1) WO2013057872A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022609A (zh) * 2015-08-05 2015-11-04 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元
CN115061731A (zh) * 2022-06-23 2022-09-16 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US9514169B2 (en) * 2013-09-23 2016-12-06 Protegrity Corporation Columnar table data protection
US20160139924A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates
US20160139919A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9958521B2 (en) 2015-07-07 2018-05-01 Q Bio, Inc. Field-invariant quantitative magnetic-resonance signatures
US10194829B2 (en) 2015-07-07 2019-02-05 Q Bio, Inc. Fast scanning based on magnetic resonance history
US9665734B2 (en) * 2015-09-12 2017-05-30 Q Bio, Inc. Uniform-frequency records with obscured context
US10964412B2 (en) 2015-10-20 2021-03-30 Q Bio, Inc. Population-based medical rules via anonymous sharing
US10222441B2 (en) 2016-04-03 2019-03-05 Q Bio, Inc. Tensor field mapping
US10359486B2 (en) 2016-04-03 2019-07-23 Q Bio, Inc. Rapid determination of a relaxation time
CN110050259B (zh) * 2016-12-02 2023-08-11 三星电子株式会社 矢量处理器及其控制方法
US11650195B2 (en) 2017-02-03 2023-05-16 Q Bio, Inc. Iterative medical testing of biological samples
US10936180B2 (en) 2017-03-16 2021-03-02 Q Bio, Inc. User interface for medical information
US11278006B2 (en) 2018-09-30 2022-03-22 Rollo Pet Company Llc Systems and methods for providing retractable leash assemblies
US11360166B2 (en) 2019-02-15 2022-06-14 Q Bio, Inc Tensor field mapping with magnetostatic constraint
US11354586B2 (en) 2019-02-15 2022-06-07 Q Bio, Inc. Model parameter determination using a predictive model
US11614509B2 (en) 2019-09-27 2023-03-28 Q Bio, Inc. Maxwell parallel imaging
CN114450599B (zh) 2019-09-27 2023-07-07 Q生物公司 麦克斯韦并行成像
US11614508B1 (en) 2021-10-25 2023-03-28 Q Bio, Inc. Sparse representation of measurements

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131030A1 (en) * 2001-10-29 2003-07-10 Intel Corporation Method and apparatus for parallel shift right merge of data
CN1914592A (zh) * 2003-12-09 2007-02-14 Arm有限公司 执行具有单元大小控制的紧缩数据操作的方法和设备
JP2007526536A (ja) * 2003-06-30 2007-09-13 インテル コーポレイション データをシャッフルするための方法及び装置
CN101061460A (zh) * 2004-09-21 2007-10-24 皇家飞利浦电子股份有限公司 用于混移运算的微处理器设备和方法
CN101986262A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 基于模式偏移的混洗开关矩阵压缩方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US6304991B1 (en) * 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6816961B2 (en) * 2000-03-08 2004-11-09 Sun Microsystems, Inc. Processing architecture having field swapping capability
US7424597B2 (en) * 2003-03-31 2008-09-09 Hewlett-Packard Development Company, L.P. Variable reordering (Mux) instructions for parallel table lookups from registers
GB2411976B (en) 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131030A1 (en) * 2001-10-29 2003-07-10 Intel Corporation Method and apparatus for parallel shift right merge of data
JP2007526536A (ja) * 2003-06-30 2007-09-13 インテル コーポレイション データをシャッフルするための方法及び装置
CN1914592A (zh) * 2003-12-09 2007-02-14 Arm有限公司 执行具有单元大小控制的紧缩数据操作的方法和设备
CN101061460A (zh) * 2004-09-21 2007-10-24 皇家飞利浦电子股份有限公司 用于混移运算的微处理器设备和方法
CN101986262A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 基于模式偏移的混洗开关矩阵压缩方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022609A (zh) * 2015-08-05 2015-11-04 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元
CN115061731A (zh) * 2022-06-23 2022-09-16 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置
CN115061731B (zh) * 2022-06-23 2023-05-23 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置

Also Published As

Publication number Publication date
JPWO2013057872A1 (ja) 2015-04-02
CN103189837B (zh) 2016-12-28
JP5988222B2 (ja) 2016-09-07
WO2013057872A1 (ja) 2013-04-25
US9292286B2 (en) 2016-03-22
US20130275718A1 (en) 2013-10-17

Similar Documents

Publication Publication Date Title
CN103189837A (zh) 混洗模式生成电路、处理器、混洗模式生成方法、命令
Bernstein et al. Kummer strikes back: new DH speed records
CN100410919C (zh) 处理器
CN101097512B (zh) 用于实施混洗和移位操作的方法、设备和系统
CN104137055A (zh) 点积处理器、方法、系统和指令
CN101111834A (zh) 动态可重配置处理器
TWI603262B (zh) 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令
CN105359052A (zh) 用于积分图像计算指令的方法和装置
CN104011644A (zh) 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
CN104951401A (zh) 排序加速处理器、方法、系统和指令
CN104011643A (zh) 打包数据重新安排控制索引产生处理器、方法、系统及指令
CN109992304A (zh) 用于加载片寄存器对的系统和方法
CN104756068A (zh) 合并相邻的聚集/分散操作
CN104115114A (zh) 经改进的提取指令的装置和方法
CN104011646A (zh) 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
CN104011645A (zh) 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和指令
CN106575217A (zh) 位置乱处理器、方法、系统和指令
CN104040488A (zh) 用于给出相应复数的复共轭的矢量指令
CN104081341A (zh) 用于多维数组中的元素偏移量计算的指令
CN104094182A (zh) 掩码置换指令的装置和方法
CN104204989A (zh) 用于选择向量计算的元素的装置和方法
TWI464677B (zh) 經改良插入指令之裝置及方法
CN104025019A (zh) 用于执行双块绝对差求和的系统、装置和方法
CN104583940A (zh) 用于128位处理器上的skein256 sha3算法的指令集
CN104011616A (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
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160301

Address after: Osaka Japan

Applicant after: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT Co.,Ltd.

Address before: Osaka Japan

Applicant before: Matsushita Electric Industrial Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant