CN102884505B - 数据处理装置和数据处理方法 - Google Patents
数据处理装置和数据处理方法 Download PDFInfo
- Publication number
- CN102884505B CN102884505B CN201280001280.7A CN201280001280A CN102884505B CN 102884505 B CN102884505 B CN 102884505B CN 201280001280 A CN201280001280 A CN 201280001280A CN 102884505 B CN102884505 B CN 102884505B
- Authority
- CN
- China
- Prior art keywords
- bit
- sequence
- range
- bit sequence
- decoded signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 100
- 238000003672 processing method Methods 0.000 title claims description 5
- 238000000034 method Methods 0.000 claims description 92
- 102000006479 Heterogeneous-Nuclear Ribonucleoproteins Human genes 0.000 claims description 5
- 108010019372 Heterogeneous-Nuclear Ribonucleoproteins Proteins 0.000 claims description 5
- 238000000151 deposition Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 94
- 238000010586 diagram Methods 0.000 description 34
- 238000006073 displacement reaction Methods 0.000 description 34
- 230000005055 memory storage Effects 0.000 description 18
- 238000012856 packing Methods 0.000 description 15
- 230000008602 contraction Effects 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000002153 concerted effect Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
具有:解码器,从1个指令中,读取用于指定存放N比特的对象比特序列的比特序列存放区域的信息、表示N比特的比特序列中的第1比特范围的信息、和表示该N比特的比特序列中的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,该第1比特范围包含该N比特的比特序列中的第1端比特,该第2比特范围是与该第1比特范围连续的比特范围,并且不包含该N比特的比特序列中的第2端比特,其中,N是2以上的整数;以及比特操作电路,当从解码器输出解码信号时,根据该解码信号,基于存放在比特序列存放区域中的对象比特序列,生成由N比特构成的输出比特序列并输出。
Description
技术领域
本发明涉及对比特序列进行比特操作的数据处理技术。
背景技术
通常,在计算机系统中,数据被写入存储设备以及从存储设备读出,是以由8比特的整数倍构成的1个字(例如,16比特)为单元来进行的。
以往,为了有效地使用存储装置中的存储区域,已知有如下的计算机系统,即,当写入到存储装置的多个数据由包括小于字单位的分数(fraction)的比特数构成时,将这些多个数据打包(packing)成字单位的整数倍的比特数的数据后,进行数据的写入。
作为在计算机系统中利用的用于相对有效地进行数据的打包的装置,例如有专利文献1、专利文献2中记载的比特字段(bitfield)操作电路。
专利文献1中所描述的比特字段操作电路(后面被称为“比特字段操作电路A”),进行如图21所示的比特字段操作。
在该图中,数据A2000和数据B2001在比特字段操作电路A进行比特字段操作的情况下,是被输入比特字段操作电路A的n比特的比特序列,而数据C2002在比特字段操作电路A进行比特字段操作的情况下,是从比特字段操作电路A输出的n比特的比特序列。
比特字段操作电路A进行如下比特字段操作,即,当被输入用于指定数据A2000、数据B2001、偏移量2010、和宽度量(width)2011的指令时,在数据A2000中的从最低位比特的位置向左移位了偏移量2010后的位置上,插入数据B2001中的包括最低位比特并由宽度量2011表示的比特数的比特序列后生成数据C2002。
专利文献2中描述的比特字段操作电路(以下,简称为“比特字段操作电路B”),进行图22中所示的比特字段操作。
在该图中,数据A2100在比特字段操作电路B进行比特字段操作的情况下,是被输入到比特字段操作电路B的n比特的比特序列,数据B2101在比特字段操作电路A进行比特字段操作的情况下,是从比特字段操作电路B输出的n比特的比特序列。
当被输入用于指定数据A2100、偏移量2110、和移位量2111的指令时,比特字段操作电路B对将数据A2100向右逻辑移位了移位量后的数据,进行比特字段操作,插入数据A2100中的由偏移量2110所示的比特数的包含最低位比特的比特序列,生成数据B2101。
现有技术文献
专利文献
专利文献1:日本特开2008-83795号公报
专利文献2:日本特开2000-99327号公报
发明概要
发明所要解决的课题
但是,当从存储装置读出已打包的数据并利用的情况下,需要对读出的数据进行解包。
因此,在打包及解包数据并加以利用的计算机系统中,除了执行相对高效率的数据的打包之外,还希望能够相对高效率地进行打包后数据的解包。
发明内容
因此,本发明是鉴于相关问题而做出的,其目的是提供一种数据处理装置,能够相对高效率地进行打包后数据的解包。
用于解决课题的手段
用于解决上述课题的本发明的数据处理装置,其特征在于,具有,解码器,从1个指令中,读取用于指定存放N比特的对象比特序列的比特序列存放区域的信息、N比特的比特序列中所包含的表示该N比特的比特序列中包含第1端比特的第1比特范围的信息、和该N比特的比特序列中所包含的在该第1比特范围中连续的比特范围即该N比特的比特序列中不包含第2端比特的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,其中,N是2以上的整数;以及比特操作电路,当从所述解码器输出解码信号时,根据该解码信号,基于存放在所述比特序列存放区域中的所述对象比特序列,生成由N比特构成的输出比特序列并输出,所述比特操作电路为,通过在所述输出比特序列中的所述第1比特范围中,配置与所述对象比特序列中的所述第1比特范围的比特序列等值的比特序列,在所述输出比特序列中的包含所述第2端比特并由所述第2比特范围的比特长度构成的第3比特范围中,配置与所述对象比特序列中的所述第2比特范围的比特序列等值的比特序列,在所述输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任意比特范围的部分中,配置同一规定值,由此来生成所述输出比特序列。
发明效果
根据具有如上所述结构的本发明的数据处理装置,按照根据一个指令解码后的解码信号进行动作的比特操作电路,将向比特序列存放区域存放的比特序列中的被打包在第一比特范围和第二比特范围中的数据,以在第一比特范围和第二比特范围之间插入由同一规定值构成的比特序列的方式解包并输出。由此,该数据处理装置能够相对高效率地进行打包后数据的解包。
附图说明
图1是表示数据处理装置100的主要硬件结构的框图。
图2是由4字节构成的1个指令的比特字段结构图。
图3是表示比特操作种指令与解码信号的对应关系的解码信号对应表。
图4是表示比特操作电路150的电路结构的电路结构图。
图5是表示符号扩展电路330的电路结构的电路结构图。
图6是表示解码器450进行解码的真值表。
图7是掩码数据生成电路350进行的解码的真值表。
图8是shrnhN指令解码时的数据结构图。
图9是shrnlN指令解码时的数据结构图。
图10是shrnlsN指令解码时的数据结构图。
图11是extrhN指令解码时的数据结构图。
图12是extrlN指令解码时的数据结构图。
图13是extrlsN指令解码时的数据结构图。
图14是数据处理装置100进行的比特操作处理的流程图。
图15是具体例的数据结构图。
图16是表示数据处理装置1500的主要硬件结构的框图。
图17是表示SIMD型比特操作种指令与解码信号的对应关系的解码信号对应表。
图18是表示数据处理装置1700的主要硬件结构的框图。
图19(a)是以助记符(mnemonic)形式示意地表示指令形式的示意图之一,图19(b)是以助记符形式示意地表示指令形式的示意图之二。
图20是表示数据处理装置2200的结构的框图。
图21是现有的比特字段操作电路A的数据结构图。
图22是现有的比特字段操作电路B的数据结构图。
图23是底部对齐(bottomalignment)解包处理中的数据结构图。
图24是顶部对齐(topalignment)解包处理中的数据结构图。
具体实施方式
<实施方式1>
在对作为本发明的数据处理装置的一实施方式的数据处理装置100的结构进行详细说明之前,这里首先对开发出数据处理装置100的经过进行说明。
图23是表示作为数据解包处理的一例的底部对齐数据解包处理中的数据结构的图,该数据结构包括底部对齐数据解包处理前的数据结构和底部对齐数据解包处理后的数据结构。
这里,该底部对齐数据解包处理是指如下处理,即,被数据打包了的多个比特序列的各个比特序列,以分别被配置在字单位的整数倍的比特序列的各个比特序列的最低位比特侧的方式被解包的处理。
该图中,数据A2300是底部对齐数据解包处理前的32比特的比特序列,包括由7比特的有效比特序列2301和9比特的有效比特序列2302构成的16比特的比特序列、以及16比特的逻辑值为“0”的无用比特序列2303。
数据B2310是底部对齐数据解包处理后的32比特的比特序列,是如下的数据,即,以在高位16比特中的最低位比特侧位置配置有效比特序列2301,并在低位16比特中的最低位比特侧位置配置有效比特序列2302的方式,被施以底部对齐数据解包处理后得到的数据。
另外,在将数据B2310中的低位16比特的比特序列,例如作为在以16比特单位进行的算术运算等中利用的整数而进行处理的情况下,比特序列2311的部分(以下,称为“扩展比特序列2311”)需要用相同的规定值填满。即,在作为不带符号的整数进行处理的情况下,扩展比特序列2311需要用值“0”填满,而在作为带符号的整数进行处理的情况下,扩展比特序列2311需要用有效比特序列2302中的最高位比特的值填满。
然而,现有的比特字段操作电路A以及现有的比特字段操作电路B不能用1个指令来实现将扩展比特序列2311用规定值填满的类型的底部对齐数据解包处理(下面称为“第1数据解包处理”)。因此,在现有的数据处理装置中,为了实现该第1数据解包处理,需要组合并执行至少2个指令。
图24是表示作为数据解包处理的一例的顶部对齐数据解包处理中的数据结构的一个具体例的图,该数据结构包括顶部对齐数据解包处理前的数据结构、和顶部对齐数据解包处理后的数据结构。
这里,该顶部对齐数据解包处理是指如下的处理,即,被数据打包了的多个比特序列中的各个比特序列,以配置在字单位的整数倍的比特序列的各个比特序列中的最高位比特侧的方式被解包的处理。
该图中,数据A2400是顶部对齐数据解包处理前的32比特的比特序列,包括由7比特的有效比特序列2401和9比特的有效比特序列2402构成的16比特的比特序列、以及16比特的逻辑值为“0”的无用比特序列2403。
数据B2410是顶部对齐数据解包处理后的32比特的比特序列,是如下数据,即,以在高位16比特中的最高位比特侧位置配置有效比特序列2401,并在低位16比特中的最高位比特侧位置配置有效比特序列2402的方式,被施以顶部对齐数据解包处理后而得到的数据。
另外,在将数据B2410中的由有效比特序列2402和比特序列2411构成的16比特的比特序列,例如作为在以16比特单位进行的算术运算等中利用的整数而进行处理的情况下,比特序列2411的部分(以下,称为“扩展比特序列2411”)需要用相同的规定值填满。即,在作为不带符号的整数进行处理的情况下,扩展比特序列2411需要用值“0”填满,在作为带符号的整数进行处理的情况下,扩展比特序列2411需要用有效比特序列2402中的最高位比特的值填满。
然而,现有的比特字段操作电路A以及现有的比特字段操作电路B不能用1个指令来实现将扩展比特序列2411用规定值填满的类型的顶部对齐数据解包处理(以下,称为“第2数据解包处理”)。因此,为了实现该第2数据解包处理,通过现有的数据处理装置需要组合并执行至少2个指令。
通常,在计算机系统中,每单位时间能够被执行的指令的数量是有限的。因此,在现有的数据处理装置中,希望将需要组合并执行至少2个指令的上述第一数据解包处理和第2数据解包处理由1个指令来执行。
因此,研发出数据处理装置100的目的是提供能够用1个指令来执行上述第1数据解包处理和第2数据解包处理的数据处理装置。
该数据处理装置100具有指令解码器、寄存器文件和比特操作电路,比特操作电路基于从指令解码器输出的解码信号,对存放在寄存器文件中的数据进行与移位处理有关的比特操作。
以下,使用附图对数据处理装置100进行详细说明。
<数据处理装置100的结构>
图1是表示数据处理装置100的主要硬件结构的框图。
数据处理装置100由指令取出单元(instructionfetchunit)110、指令解码器120、装入存储单元(loadstoreunit)130、寄存器文件140、比特操作电路150、和时钟脉冲发生器160构成,例如是半导体集成电路。
时钟脉冲发生器160具有生成并输出如下信号的功能,该信号是提供给指令取出单元110、指令解码器120、装入存储单元130、寄存器文件140和比特操作电路150的信号,例如是100MHz的时钟信号。
指令取出单元110与指令解码器120和外部存储器连接,具有以下的两个功能。
功能1:与从时钟脉冲发生器160提供的时钟信号同步,读出存储在外部存储器中的4字节(byte)的1个指令,并将读出的指令输出给指令解码器120的功能。
功能2:将从外部存储器读出指令的情况下使用的地址,相对于前一次从外部存储器读出指令时使用的地址,增加了4字节的功能。
图2是存储在外部存储器中的由4字节构成的1个指令的比特字段结构图。
正如该图所示,存储在外部存储器中的由4字节构成的1个指令,由1比特的sign字段201、1比特的mask_dir字段202、1比特的operation字段203、6比特的N字段204、5比特的width字段205、5比特的shift_len字段206、4比特的read_addr字段207、4比特的write_addr字段208和5比特的其他字段209构成。
再次返回图1,继续数据处理装置100的结构的说明。
指令解码器120与指令取出单元110、装入存储单元130、寄存器文件140、和比特操作电路150连接,并具有如下功能,即,将从指令取出单元110输入并由预先确定的格式记述的指令,根据预先确定的算法解码的功能。
成为指令解码器120的解码对象的指令中,具有使用装入存储单元130和寄存器文件140进行的装入存储处理的装入存储种指令、和使用寄存器文件140和比特操作电路150进行的比特操作处理的比特操作种指令这两种。
这里,对指令解码器120进行的比特操作种指令的解码利用附图在下面进行说明。
图3是解码信号对应表200,表示指令解码器120解码比特操作种指令的情况下的,成为解码对象的比特操作种指令与解码信号之间的对应关系。
该图中,指令形式210表示成为解码对象的比特操作种指令在助记符形式下的指令形式。
比特操作种指令中包括如下六种指令,即,操作码成为shrnhN(N是8、16或32中的某一个。以下同样)的shrnhN指令、操作码成为shrnlN的shrnlN指令、操作码成为shrnlsN的shrnlsN指令、操作码成为extrhN的extrhN指令、操作码成为extrlN的extrlN指令、以及操作码成为extrlsN的extrlsN指令。
并且,这些指令将如下内容作为操作码,即,指定寄存器文件140内的目的寄存器的寄存器名B、指定寄存器文件140内的源寄存器的寄存器名A、表示成为小于N的第1比特长度的shift_len、以及表示成为小于N的第2比特长度的width。
sign220、mask_dir230、operation240、N250、width260、shift_len270、read_addr280、write_addr290,分别是指令解码器120解码比特操作种指令时输出的解码信号。
sign220是在操作码的第6个文字是“s”的情况下,逻辑值是“1”,而在操作码的第6个文字不是“s”的情况下,逻辑值是“0”的信号,被输出给比特操作电路150。该sign220是表示比特操作电路150进行的比特操作处理是伴随有符号扩展的符号扩展处理,还是不伴随有符号扩展的零扩展处理的信号。
并且,sign220是基于图2中的sign字段201而被解码得到的信号。
mask_dir230是在操作码的第5个文字是“h”的情况下逻辑值为“0”,而在操作码的第5个文字不是“h”的情况下,也就是在是“l”的情况下逻辑值为“1”的信号,其被输出给比特操作电路150。该mask_dir230是在比特操作电路150进行的比特操作处理中,用于确定不成为移位处理对象的比特序列的信号。后面将对不成为移位处理对象的比特序列进行说明。
并且,mask_dir230是基于图2中的mask_dir字段202而被解码得到的信号。
operation240是在操作码的第1个文字~第4个文字为“shrn”的情况下逻辑值为“0”,而在操作码的第1个文字~第4个文字不是“shrn”的情况下,也就是在是“extr”的情况下逻辑值为“1”的信号,被输出到比特操作电路150。该operation240是在比特操作电路150进行的比特操作处理中,用于确定成为移位处理对象的比特序列相对于不成为移位处理对象的比特序列的移位方向的信号。后面将对成为移位处理对象的比特序列进行说明。
并且,operation240是基于图2中的operation字段203而被解码得到的信号。
N250是用二进制数表示操作码中包含的数字N的6比特的信号,被输出给比特操作电路150。该N250是表示成为比特操作电路150进行的比特操作处理对象的比特序列的比特长度的信号。
并且,N250是基于图2中的N字段204而被解码得到的信号。
width260是用二进制数表示操作数width的数值的5比特的信号,被输出给比特操作电路150。该width260是在比特操作电路150进行的比特操作处理中,表示成为移位对象的比特序列的比特长度的信号。
并且,width260是基于图2中的width字段205而被解码得到的信号。
shift_len270是用二进制数表示操作数shift_len的数值的5比特的信号,被输出给比特操作电路150。该shift_len270是表示成为比特操作电路150进行的比特操作处理对象的比特序列的移位量的信号。
并且,shift_len270是基于图2中的shift_len字段206而解码得到的信号。
read_addr280是由操作数A指定的,表示寄存器文件140内的源寄存器的4比特的地址的信号(addrA),被输出给寄存器文件140。该read_addr280是基于图2中的read_addr字段207而被解码得到的信号。
write_addr290是表示用操作数B指定的,表示寄存器文件140内的源寄存器的4比特的地址的信号(addrB),被输出给寄存器文件140。该write_addr290是基于图2中规定write_addr字段208而被解码得到的信号。
再次返回图1,继续对数据处理装置100的结构进行说明。
装入存储单元130与指令解码器120、寄存器文件140和外部存储器连接,具有以下的两个功能。
功能1:当从指令解码器120输入在解码装入存储种指令时输出的表示外部存储器的地址的信号ld_addr时,与由时钟脉冲发生器160提供的时钟信号同步地,从外部存储器读出以由ld_addr表示的地址所指定的在外部存储器中的存储区域的4字节的数据,并输出给寄存器文件140的功能。
功能2:当从指令解码器120输入在解码装入存储种指令时输出的表示外部存储器的地址的信号st_addr时,与由时钟脉冲发生器160提供的时钟信号同步地,将从寄存器文件140输入的4字节的数据写入以由st_addr表示的地址所指定的在外部存储器的存储区域中的功能。
寄存器文件140与指令解码器120、装入存储单元130和比特操作电路150连接,在内部具有16个由4字节构成的通用寄存器,并具有以下两个功能。
功能1:当从指令解码器120输入read_addr时,与从时钟脉冲发生器160提供的时钟信号同步地,输出在由read_addr指定的源寄存器中存放的4字节的数据的功能。
功能2:当从指令解码器120输入write_addr时,与从时钟脉冲发生器160供给的时钟信号同步地,将从装入存储单元130或比特操作电路150在相同时钟循环内输出的4字节的数据存放到由write_addr所指定的目的寄存器的功能。
比特操作电路150与指令解码器120和寄存器文件140连接,具有对于从寄存器文件140输入的数据dataA,根据从指令解码器120输入的解码信号进行处理并生成数据dataB,并将其输出的功能。
图4是表示比特操作电路150的电路结构的电路结构图。
正如该图所示,比特操作电路150包括:异或门310、左右移位器320、符号扩展电路330、加法器340、掩码(mask)数据生成电路350、和第1比特选择器360。
异或门310是与解码信号mask_dir的信号线、解码信号operation的信号线和左右移位器320连接的二输入异或电路。
该异或门310被输入mask_dir和operation这2个解码信号时,将表示左右移位器320的移位方向的1比特的信号shift_dir向左右移位器320输出。
左右移位器320是与解码信号sign的信号线、解码信号shift_len的信号线、异或门310、输入数据dataA的信号线和符号扩展电路330连接的左右桶形移位器,具有基于作为控制信号的sign、shift_len、以及shift_dir,将输入数据dataA移位而输出输出数据dataAA的功能。
以下,分别对输入的控制信号进行说明。
shift_dir:是控制移位方向是右方向(低位比特侧)还是左方向(高位比特侧)的信号。左右移位器320在shift_dir的逻辑值为“1”时进行向右方向的移位,在shift_dir的逻辑值为“0”时进行向左方向的移位。
shift_len:是表示移位量的控制信号。左右移位器320向右或左移位由shift_len所示出的移位量。
sign:是用于将右移位时的移位方式控制为伴随符号扩展的右移位,即、算术移位,或者控制为不伴随符号扩展的右移位,即、逻辑移位的信号。左右移位器320在右移位时sign的逻辑值为“1”的情况下,进行伴随符号扩展的右移位,在右移位时sign的逻辑值为“0”的情况下,进行不伴随符号扩展的右移位。
符号扩展电路330与解码信号sign的信号线、解码信号mask_dir的信号线、解码信号operation的信号线、解码信号N的信号线、解码信号width的信号线、左右移位器320和第1比特选择器360连接,并具有基于作为控制信号的sign、mask_dir、operation、N、以及width,在输入数据dataAA中的规定的比特序列的位置上复制规定的比特位置的信号,或者插入逻辑值“0”而输出输出数据dataAAA的功能。
图5是表示符号扩展电路330的电路结构的电路结构图。
正如该图所示,符号扩展电路330包括:减法器410、第1选择器420、第2选择器430、第3选择器440、解码器450和第2比特选择器460。
减法器410与解码信号width的信号线、解码信号N的信号线和第1选择器420连接,具有从N的值减去width的值,输出6比特的信号N-width的功能。
第1选择器420是与解码信号mask_dir的信号线、解码信号width的信号线和减法器410连接的、6比特的二输入一输出选择器,并具有在作为控制信号的mask_dir的逻辑值为“1”的情况下选择width,在mask_dir的逻辑值为“0”的情况下选择N-width,并输出6比特的信号sign_offset的功能。该sign_offset是表示在作为比特操作处理对象的N比特的比特序列中上述规定的比特的位置的信号。
第2选择器430是与输入数据dataAA的信号线、第1选择器420和第3选择器440连接的、1比特的三十二输入一输出选择器,并具有从作为32比特的比特序列的输入数据dataAAA,选择由作为控制信号的sign_offset所示出的位置的比特,并输出1比特的信号sign_data的功能。
第3选择器440是与解码信号sign的信号线、第2选择器430和第2比特选择器460连接的、1比特的二输入一输出选择器,并具有在作为控制信号的sign的逻辑值为“1”时选择sign_data,在sign的逻辑值为“0”时选择逻辑值“0”,输出1比特的信号ext_data的功能。
解码器450是与解码信号operation的信号线、解码信号mask_dir的信号线、解码信号width的信号线、解码信号N的信号线和第2比特选择器460连接的解码器,并具有根据所输入的operation、mask_dir、width、以及N将32比特的ext_mask信号解码的功能。
图6表示解码器450进行的解码的真值表。
在该图中,operation510、mask_dir520和width530是输入到解码器450中的信号,ext_mask(Nbit)540是由32比特的解码信号ext_mask中的低位N比特构成的比特序列。由32比特构成的ext_mask中的除去低位N比特的部分的值成为无关值(未图示)。
解码器450输入operation、mask_dir、width、以及N时,按照该图所示的真值表,输出ext_mask。
再次返回图5,继续说明符号扩展电路330。
第2比特选择器460与输入数据dataAA的信号线、第3选择器440、解码器450和第1比特选择器360(参照图4)连接,由32个二输入一输出选择器构成,并具有对于dataAA,向由ext_mask指定的比特位置插入ext_data的比特而生成dataAAA的功能。
构成第2比特选择器460的选择器,分别具有将ext_mask的各比特作为控制信号,选择对应的dataAA的比特和ext_data中的某一方并输出的功能。
再次返回图4,继续说明比特操作电路150。
加法器340与解码信号width的信号线、解码信号shift_len的信号线和掩码数据生成电路350连接,并具有将width的值和shift_len的值相加,并输出作为6比特的信号的mask_width的功能。
掩码数据生成电路350是与解码信号mask_dir的信号线、解码信号N的信号线、加法器340和第1比特选择器360连接的解码器,并具有根据所输入的mask_dir、N、以及mask_width解码32比特的mask信号的功能。
图7是掩码数据生成电路350进行的解码的真值表。
在该图中,mask_dir610和mask_width620是输入到掩码数据生成电路350中的信号,mask(Nbit)630是由32比特的解码信号mask中的低位N比特构成的比特序列。由32比特构成的mask中的除了低位N比特的部分的值成为无关值(未图示)。
掩码数据生成电路350在被输入mask_dir、mask_width以及N时,按照该图所示的真值表,输出mask。
再次返回图4,继续说明比特操作电路150。
第1比特选择器360与输入数据dataA的信号线、符号扩展电路330、掩码数据生成电路350和输出数据dataB的信号线连接,由32个二输入一输出选择器构成,并具有向dataA中的由mask指定的比特位置,插入dataAAA的数据而生成dataB的功能。
这些选择器分别具有如下功能,将mask的各比特作为控制信号,选择对应的dataA的比特和对应的dataAAA的比特中的某一方并输出的功能。
下面使用附图对具有上述结构的数据处理装置100在指令解码器120解码了比特操作种指令的情况下的比特操作电路150的动作进行说明。
<比特操作电路150的动作>
图8是表示在指令解码器120解码了shrnhN指令的情况下比特操作电路150所利用以及生成的数据的结构的数据结构图。
在该图中,dataA700是在与指令解码器120输出了解码信号的时钟循环相同的循环中,从寄存器文件140输出的32比特的输入数据中的低位N比特的部分的比特序列。dataAA710是与从寄存器文件140输入的dataA对应,并从左右移位器320输出的32比特的数据dataAA中的低位N比特的部分的比特序列。dataAAA720是与从左右移位器320输入的dataAA对应,并从符号扩展电路330输出的32比特的数据dataAAA中的低位N比特的部分的比特序列。dataB730是与从符号扩展电路330输入的dataAAA对应,并从第1比特选择器360输出的32比特的数据dataB中的低位N比特的部分的比特序列。width740是通过从指令解码器120输入的解码信号width所指定的比特长度。shift_len750是通过从指令解码器120输入的解码信号shift_len所指定的移位量。
在从指令解码器120输入与shrnhN指令对应的解码信号时,异或门310(参照图4)将逻辑值“0”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA700向左方向移位由shift_len750所指定的移位量,并输出dataAA710。
并且,当从指令解码器120输入与shrnhN指令对应的解码信号时,解码器450(参照图5)将低位N比特全部的逻辑值为“0”的ext_mask向第2比特选择器460输出。于是,第2比特选择器460将dataAA710直接作为dataAAA720输出。
另一方面,加法器340(参照图4)将width740的值和shift_len750的值相加,并输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由mask_width的值所示出的包含最低位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA720选择width740的值与shift_len750的值之和的值的比特宽(bitwidth)的包含最低位比特的比特序列,除此以外的比特从dataA700中选择,从而作为dataB730输出。
这样,在指令解码器120解码了shrnhN指令的情况下,比特操作电路150从dataA700中,将由width740所指定的比特长度的包含最低位比特的比特序列,左移位由shift_len750所指定的移位量,并不将由N-(width740+shift_len750)的值所指定的比特长度的包含最高位比特的比特序列移位,由此生成比特序列dataB730并输出。
图9是表示指令解码器120解码了shrnlN指令的情况下的比特操作电路150所利用及生成的数据的结构的数据结构图。
在该图中,dataA800、dataAA810、dataAAA820、dataB830、width840、以及shift_len850分别与图8中的dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,这里省略对它们的说明。
当从指令解码器120输入与shrnlN指令对应的解码信号时,异或门310将逻辑值为“1”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA800向右方向进行由shift_len850指定的移位量的不伴随符号扩展的移位,并输出dataAA810。这里,左右移位器320进行的移位是不伴随符号扩展的移位,在图9中的零扩展区域860中插入逻辑值“0”。
并且,当从指令解码器120输入与shrnlN指令对应的解码信号时,解码器450将低位N比特全部的逻辑值为“0”的ext_mask向第2比特选择器460输出。于是,第2比特选择器460将dataAA810直接作为dataAAA820输出。
另一方面,加法器340将width840的值与shift_len850的值相加,并输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由N-(width840+shift_len850)的值所指定的比特长度的包含最低位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA820选择width840的值与shift_len850的值之和的值的比特宽的包含最高位比特的比特序列,并从dataA800选择除此以外的比特,从而作为dataB830而输出。
这样,在指令解码器120解码了shrnlN指令的情况下,比特操作电路150从dataA800中,将由width840所指定的比特长度的包含最高位比特的比特序列不伴随符号扩展地右移位由shift_len850所指定的移位量,并不将由N-(width840+shift_len850)的值所指定的比特长度的包含最低位比特的比特序列移位,由此生成比特序列dataB830并输出。
图10是表示指令解码器120解码了shrnlsN指令的情况下的比特操作电路150所利用以及生成的数据的结构的数据结构图。
在该图中,dataA900、dataAA910、dataAAA920、dataB930、width940、以及shift_len950分别与图8中的dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,这里省略对它们的说明。
当从指令解码器120输入与shrnlsN指令对应的解码信号时,异或门310将逻辑值为“1”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA800向右方向进行由shift_len850所指定的移位量的伴随符号扩展的移位,并输出dataAA810。这里,左右移位器320进行的移位因为伴随符号扩展,所以在图10中的符号扩展区域960中dataA900的最高位比特被符号扩展。
并且,当从指令解码器120输入与shrnlsN指令对应的解码信号时,解码器450将低位N比特全部的逻辑值为“0”的ext_mask向第2比特选择器460输出。于是,第2比特选择器460将dataAA910直接作为dataAAA920输出。
另一方面,加法器340将width940的值与shift_len950的值相加,并输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由N-(width940+shift_len950)的值所指定的比特长度的包含最低位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA920选择width940的值与shift_len950的值之和的值的比特宽的包含最高位比特的比特序列,除此以外的比特从dataA900中选择,从而作为dataB930输出。
这样,在指令解码器120解码了shrnlN指令的情况下,比特操作电路150从dataA900中,将由width940所指定的比特长度的包含最高位比特的比特序列伴随符号扩展而右移位由shift_len950所指定的移位量,并不移位由N-(width940+shift_len950)的值所指定的比特长度的包含最低位比特的比特序列,由此生成比特序列dataB830并输出。
图11是表示在指令解码器120解码了extrhN指令的情况下的比特操作电路150所利用以及生成的数据的结构的数据结构图。
在该图中,dataA1000、dataAA1010、dataAAA1020、dataB1030、width1040、以及shift_len1050分别与图8中的dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,这里省略对它们的说明。
当从指令解码器120输入与extrhN指令对应的解码信号时,异或门310将逻辑值为“1”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA1000向右方向进行不伴随符号扩展的由shift_len1050所指定的移位量的移位,并输出dataAA1010。这里,左右移位器320进行的移位由于不伴随符号扩展,所以在图11中的第1零扩展区域1060中插入逻辑值“0”。
并且,由于从指令解码器120输入的sign的逻辑值为“0”,所以第3选择器440将逻辑值“0”作为ext_data输出。而且,当从指令解码器120输入与extrhN指令对应的解码信号时,解码器450输出:低位N比特中的由width1040的值所指定的比特长度的包含最低位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的ext_mask。于是,第2比特选择器460从dataAA1010中,选择由width1040所指定的比特长度的包含最低位比特的比特序列,对除此以外的比特选择逻辑值“0”,从而生成比特序列dataAAA1020并输出。因此,图11中的第2零扩展区域1070的逻辑值为“0”。
另一方面,加法器340将width1040的值与shift_len1050的值相加,并输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由width1040+shift_len1050的值所指定的比特长度的包含最低位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA1020选择width1040的值与shift_len1050的值之和的值的比特宽的包含最低位比特的比特序列,并从dataA1000选择除此以外的比特,从而作为dataB1030输出。
这样,在指令解码器120解码了extrhN指令的情况下,比特操作电路150从dataA1000中,将由width1040+shift_len1050的值所指定的比特长度的包含最低位比特的比特序列不伴随符号扩展地右移位由shift_len1050所指定的移位量,并不移位由N-(width1040+shift_len1050)的值所指定的比特长度的包含最高位比特的比特序列,由此生成比特序列dataB1030并输出。
图12是表示在指令解码器120解码了extrlN指令的情况下的比特操作电路150所利用以及生成的数据的结构的数据结构图。
在该图中,dataA1100、dataAA1110、dataAAA1120、dataB1130、width1140、以及shift_len1150分别与图8中的dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,这里省略了对它们的说明。
当从指令解码器120输入与extrlN指令对应的解码信号时,异或门310(参照图4)将逻辑值为“0”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA1100向左方向移位由shift_len1150所指定的移位量,并输出dataAA1110。
并且,由于从指令解码器120输入的sign的逻辑值为“0”,第3选择器440将逻辑值“0”作为ext_data输出。而且,当从指令解码器120输入与extrlN指令对应的解码信号时,解码器450输出:低位N比特中的由width1040的值所指定的比特长度的包含最高位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的ext_mask。于是,第2比特选择器460从dataAA1110中,选择由width1140所指定的比特长度的包含最高位比特的比特序列,对除此以外的比特选择逻辑值“0”,由此,生成比特序列dataAAA1120并输出。因此,图12中的第1零扩展区域1160的逻辑值成为“0”。
另一方面,加法器340将width1140的值与shift_len1150的值相加,输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由width1140+shift_len1150的值所指定的比特长度的包含最高位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA1120选择width1140的值与shift_len1150的值之和的值的比特宽的包含最高位比特的比特序列,从dataA1100选择除此以外的比特,并作为dataB1130输出。
这样,比特操作电路150在指令解码器120解码了extrlN指令的情况下,从dataA1100中,将由width1140+shift_len1150的值所指定的比特长度的包含最高位比特的比特序列向左移位由shift_len1150所指定的移位量,并不将由N-(width1140+shift_len1150)的值所指定的比特长度的包含最低位比特的比特序列移位,并将图12中的第2零扩展区域1170的部分的逻辑值设为0,由此生成比特序列dataB1130并输出。
图13是表示在指令解码器120解码了extrlsN指令的情况下的比特操作电路150所利用及生成的数据结构的数据结构图。
在该图中,dataA1200、dataAA1210、dataAAA1220、dataB1230、width1240、以及shift_len1250,分别与图8中的dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,这里省略对它们的说明。
当从指令解码器120输入与extrlN指令相对应的解码信号时,异或门310(参照图4)将逻辑值为“0”的shift_dir向左右移位器320输出。于是,左右移位器320将dataA1100向左方向移位由shift_len1150所指定的移位量,并输出dataAA1110。
并且,由于从指令解码器120输出的mask_dir的逻辑值为“1”,所以第1选择器420选择从减法器410输出的N-width,并作为sign_offset输出。于是,第2选择器430将dataAA1210中的第N-width比特的信号作为sign_data输出。而且,由于从指令解码器120输入的sign的逻辑值为“1”,第3选择器440将dataAA1210中的第N-width比特的信号作为ext_data输出。而且,当从指令解码器120输入与extrlsN指令相对应的解码信号时,解码器450输出:低位N比特中的由width1040的值所指定的比特长度的包含最高位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值为“0”的ext_mask。于是,第2比特选择器460从dataAA1210选择由width1140所指定的比特长度的包含最高位比特的比特序列,对除此以外的比特选择dataAA1210中的第N-width比特的信号,由此生成比特序列dataAAA1120并输出。因此,图13中的第1符号扩展区域1260的逻辑值成为dataAA1210中的第N-width比特的逻辑值。
另一方面,加法器340将width1240的值与shift_len1250的值相加,并输出mask_width。而且,掩码数据生成电路350向第1比特选择器360输出:低位N比特中的由width1240+shift_len1250的值所指定的比特长度的包含最高位比特的比特序列的逻辑值为“1”,低位N比特中的除此以外的比特的逻辑值成为dataAA1210中的第N-width比特的逻辑值的mask。
因此,第1比特选择器360从dataAAA1220选择width1240的值与shift_len1250的值之和的值的比特宽的包含最高位比特的比特序列,从dataA1200选择除此以外的比特,并作为dataB1230输出。
这样,在指令解码器120解码了extrlsN指令的情况下,比特操作电路150从dataA1200中,将由width1240+shift_len1250的值所指定的比特长度的包含最高位比特的比特序列左移位由shift_len1250所指定的移位量,并不将由N-(width1240+shift_len1250)的值所指定的比特长度的包含最低位比特的比特序列移位,在图13中的第2符号扩展区域1270的部分中,复制dataAA1210中的第N-width比特的信号,由此生成比特序列dataB1230并输出。
<动作>
数据处理装置100进行的特征动作中,包括比特操作处理。以下,使用附图对该比特操作处理进行说明。
<比特操作处理>
比特操作处理是在指令取出单元110(参照图1)从外部存储器读出比特操作种指令的情况下,使指令解码器120、寄存器文件140和比特操作电路150协同动作而进行的处理。
图14是数据处理装置100进行的比特操作处理的流程图。
比特操作处理通过指令取出单元110从外部存储器读出比特操作种指令而开始。
当从外部存储器读出比特操作种指令时,指令取出单元110将读出的比特操作种指令向指令解码器120输出。于是,指令解码器120开始该输入的比特操作种指令的解码(步骤S1310)。
当解码比特操作种指令时,指令解码器120将解码信号read_addr和解码信号write_addr向寄存器文件140输出,将解码信号sign、解码信号mask_dir、解码信号operation、解码信号N、解码信号width和解码信号shift_len向比特操作电路150输出(步骤S1320)。
当从指令解码器120输入read_addr时,寄存器文件140将在由read_addr所指定的寄存器中存放的数据输出(步骤S1330)。
对于从寄存器文件140输入的数据,比特操作电路150执行基于从指令解码器120输入的sign、mask_dir、operation、N、width、以及shift_len的比特操作,并将通过执行比特操作而生成的数据向由寄存器文件140中的write_addr所指定的寄存器写入(步骤S1340)。
当结束步骤S1340时,数据处理装置100结束该比特操作处理。
<考量>
数据处理装置100能够通过1个指令进行顶部对齐解包处理。
下面,使用附图对数据处理装置100进行的顶部对齐解包处理的具体例进行说明。
这里所例示的具体例是对于在寄存器文件140中的第1寄存器中存放的32比特的数据执行顶部对齐解包处理,并将执行结果存放于寄存器文件140中的第2寄存器的情况的例子。
图15是表示例示的具体例中比特操作电路150所利用及生成的数据的结构的数据结构图。
在该图中,dataA1400是存放于寄存器文件140中的第1寄存器中的32比特的数据,包括:由7比特的有效比特序列1401与9比特的有效比特序列1402所构成的16比特的比特序列、和16比特的逻辑值为“0”的无用比特序列1403。
dataAA1410对应于从寄存器文件140输入的dataA1400,是从左右移位器320(参照图4)输出的32比特的比特序列。dataAAA1420对应于从左右移位器320输入的dataAA1410,是从符号扩展电路330输出的32比特的比特序列。dataB1430对应于从符号扩展电路330输入的dataAAA,是从第1比特选择器360输出的32比特的比特序列。width1440的比特长度是由从指令解码器120输入的解码信号width所指定的比特长度,如后所述,在这里它的值为16。shift_len1450是由从指令解码器120输入解码信号shift_len所指定的移位量,如后所述,在这里它的值为9。
在dataA1400存放于寄存器文件140中的第1寄存器中的情况下,通过向指令解码器120输入如下指令,数据处理装置100开始本具体例中的作为顶部对齐解包处理的比特操作处理,该指令的操作码为extrh32,操作数B为第2寄存器的寄存器名,操作数A为第1寄存器的寄存器名,操作数shift_len是作为有效比特序列1402的比特长度的9,操作数width是作为拆开(unpack)处理后的数据的单位比特长度的16。
当比特操作处理开始时,指令解码器120将解码信号向比特操作电路150输出,寄存器文件140将存放于第1寄存器的dataA1400向比特操作电路150输出。
当向比特操作电路150输入解码信号和dataA1400时,左右移位器320(参照图4)进行将dataA1400向右方向不伴随由shift_len1450所指定的9比特的量的符号扩展的移位,并输出dataAA1410。
并且,当输入解码信号时,解码器450输出:作为由width1040所指定的16比特的比特长度的包含最低位比特的比特序列的逻辑值为“1”,除此以外的比特的逻辑值为“0”的ext_mask。于是,第2比特选择器460从dataAA1410选择包含最低位比特的16比特的比特序列,对除此以外的比特选择逻辑值“0”,由此,生成比特序列dataAAA1420并输出。
另一方面,掩码数据生成电路350向第1比特选择器360输出:作为width1440(=16)+shift_len1450(=9)的值,即25比特的比特长度的包含最低位比特的比特序列的逻辑值为“1”,除此以外的比特的逻辑值为“0”的mask。
因此,第1比特选择器360从dataAAA1420选择25比特的比特宽的包含最低位比特的比特序列,从dataA1400选择除此以外的比特,作为dataB1430输出。
之后,寄存器文件140将从比特操作电路150输出的dataB1430存放到第2寄存器。
这样,数据处理装置100能够通过1个指令执行如下的顶部对齐解包处理,该顶部对齐解包处理是将存放于第1寄存器的数据中的高位侧16比特之中的7比特的有效比特序列1401、和9比特的有效比特序列1402分别配置在16比特的比特序列的最高位比特侧并存放到第2寄存器中。
<实施方式2>
以下,作为本发明的数据处理装置的一实施方式,对将实施方式1的数据处理装置100的一部进行变形后的数据处理装置1500进行说明。
该数据处理装置1500具有与实施方式1的比特操作电路150相同的多个比特操作电路,通过并列执行该多个比特操作电路,能够进行SIMD(SingleInstructionMultiData,单指令多数据)型数据处理。
以下,对本实施方式2的数据处理装置1500的结构,参照附图,并以与实施方式1的数据处理装置100的结构的不同点为中心进行说明。
<数据处理装置1500的结构>
图16是表示数据处理装置1500的主要硬件结构的框图。
正如该图所示,数据处理装置1500是从实施方式1的数据处理装置100进行了如下变更的装置,即,指令解码器120变更为指令解码器1520,寄存器文件140变更为寄存器文件1540,追加了校准器(aligner)1570,而且,将所具有的比特操作电路变更为第1比特操作电路1551~第8比特操作电路1558共8个电路。
指令解码器1520是从实施方式1的指令解码器120进行了如下变形的解码器,即,追加了解码SIMD型比特操作种指令的功能。
图17是表示在指令解码器120解码SIMD型比特操作种指令的情况下,作为解码对象的SIMD型比特操作种指令与解码信号之间的对应关系的解码信号对应表1600。
在该图中,指令形式1610表示作为解码对象的SIMD型比特操作种指令的助记符形式中的指令形式。
SIMD型比特操作种指令包括如下6种指令,即,操作码为shrnhNxM(N为8、16或32中的某一个。M为2、4或8中的某一个。以下相同)的shrnhNxM指令、操作码为shrnlNxM的shrnlNxM指令、操作码为shrnlsNxM的shrnlsNxM指令、操作码为extrhNxM的extrhNxM指令、操作码为extrlNxM的extrlNxM指令、以及操作码为extrlsNxM的extrlsNxM指令。
而且,这些指令是以如下内容为操作数,即,用于指定寄存器文件1540内的目的寄存器的寄存器名、用于指定寄存器文件1540内的源寄存器的寄存器名A、表示小于N的第1比特长度的shift_len、以及表示小于N的第2比特长度的width。
sign1620、mask_dir1630、operation1640、N1650、M1655、width1660、shift_len1670、read_addr1680、和write_addr1690分别是指令解码器1520在解码比特操作种指令时输出的解码信号。
这些解码信号中,sign1620、mask_dir1630、operation1640、N1650、width1660、shift_len1670、read_addr1680、和write_addr1690分别与实施方式1中的sign220、mask_dir230、operation240、N250、width260、shift_len270、read_addr280、和write_addr290相同。因此,这里省略对它们的说明。
M1655是用二进制数表示操作码中包含的数字M的4比特的信号,被输出给寄存器文件1540。该M1655是表示在寄存器文件1540读出数据或写入数据时作为读出对象或写入对象的寄存器的个数的信号。
再次返回到图16,继续对数据处理装置1500的结构进行说明。
寄存器文件1540是从实施方式1的寄存器文件140进行了如下变形后的文件,即,将16个通用寄存器各自的比特长度从4字节变为8字节。
校准器1570与指令解码器120、寄存器文件1540、第1比特操作电路1551~第8比特操作电路1558连接,并具有以下的6个功能。
功能1:在从指令解码器1520输入M1655的情况下,M1655表示“2”时,当从寄存器文件1540输入64比特的比特序列时,将输入比特序列中的由高位32比特构成的比特序列向第1比特操作电路1551输出,将输入比特序列中的由低位32比特构成的比特序列向第2比特操作电路1552输出的功能。
功能2:在从指令解码器1520输入M1655的情况下,M1655表示“2”时,当从第1比特操作电路1551输入32比特的比特序列(后面称为比特序列A)、从第2比特操作电路1552输入32比特的比特序列(后面称为比特序列B)时,生成比特序列A成为高位侧、比特序列B成为低位侧的64比特的比特序列,并向寄存器文件1540输出的功能。
功能3:从指令解码器1520输入M1655的情况下,M1655表示“4”时,当从寄存器文件1540输入64比特的比特序列时,以使输入比特序列中的由最高位16比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第1比特操作电路1551,以使输入比特序列中的由第2高位的16比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第2比特操作电路1552,以使由第3高位的16比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第3比特操作电路1553,以使由最低位16比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第4比特操作电路1554的功能。这里,比特扩展例如是通过向扩展的部分插入逻辑值“0”而实现的。
功能4:在从指令解码器1520输入M1655的情况下,M1655表示“4”时,当从第1比特操作电路1551输入16比特的比特序列(后面称为比特序列C)、从第2比特操作电路1552输入16比特的比特序列(后面称为比特序列D)、从第3比特操作电路1553输入16比特的比特序列(后面称为比特序列E)、从第4比特操作电路1554输入16比特的比特序列(后面称为比特序列F)时,生成从高位侧开始顺序成为比特序列C、比特序列D、比特序列E、比特序列F的64比特的比特序列,并向寄存器文件1540输出的功能。
功能5:在从指令解码器1520输入M1655的情况下,M1655表示“8”时,当从寄存器文件1540输入64比特的比特序列时,以使输入比特序列中的由最高位18比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第1比特操作电路1551,以使输入比特序列中的由第2高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第2比特操作电路1552,以使由第3高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第3比特操作电路1553,以使由第4高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第4比特操作电路1554,以使由第5高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第5比特操作电路1555,以使由第6高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第6比特操作电路1556,以使由第7高位的8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第7比特操作电路1557,以使由最低位8比特构成的比特序列成为32比特的比特序列的方式向高位侧进行比特扩展并输出给第8比特操作电路1554的功能。这里,比特扩展例如是通过向扩展的部分插入逻辑值“0”而实现的。
功能6:当从指令解码器1520输入M1655的情况下,M1655表示“8”时,当从第1比特操作电路1551输入8比特的比特序列(后面称为比特序列G)、从第2比特操作电路1552输入8比特的比特序列(后面称为比特序列H)、从第3比特操作电路1553输入8比特的比特序列(后面称为比特序列I)、从第4比特操作电路1554输入8比特的比特序列(后面称为比特序列J)、从第5比特操作电路1555输入8比特的比特序列(后面称为比特序列K)、从第6比特操作电路1556输入8比特的比特序列(后面称为比特序列L)、从第7比特操作电路1557输入8比特的比特序列(后面称为比特序列M)、从第8比特操作电路1558输入8比特的比特序列(后面称为比特序列N)时,生成从高位侧开始顺序成为比特序列G、比特序列H、比特序列I、比特序列J、比特序列K、比特序列L、比特序列M、比特序列N的64比特的比特序列,并向寄存器文件1540输出的功能。
第1比特操作电路1551~第8比特操作电路1558分别具有与实施方式1的比特操作电路150相同的功能和相同的结构,并分别与指令解码器1520和校准器1570连接,并分别输入来自相互共用的指令解码器1520的解码信号。
<总结>
具有上述结构的数据处理装置1500能够通过1个指令对存放于寄存器文件1540的寄存器中的数据并列地执行与由实施方式1的数据处理装置100进行的比特操作处理相同的处理。即,能够执行所谓的SIMD型比特操作处理。
<实施方式3>
以下,作为本发明的数据处理装置的一实施方式,对将实施方式1的数据处理装置100的一部分进行变形后的数据处理装置1700进行说明。
在指令解码器解码了操作码为extrhN、extrlN、extrlsN的指令(下面将这些指令称为“伸展指令(extensioninstructions)”)中的某一种指令的情况下,该数据处理装置1700对于从寄存器文件输出的数据,实施预解包(pre-unpack)处理后输入比特操作电路,在指令解码器解码了操作码为shrnhN、shrnlN、shrnlsN的指令(下面将这些指令称为“收缩指令”)中的某一种指令的情况下,该数据处理装置1700对于从比特操作电路输出的数据,实施后打包(post-pack)处理后向寄存器文件输出。
这里,预解包处理是指,在作为解包处理的对象的比特序列中,对比特长度进行0扩展或者符号扩展的处理,后打包处理是指,在打包处理后的比特序列中,使存放有无用比特序列的部分的数据无效的处理。
下面,参照附图对本实施方式3的数据处理装置1700的结构以与实施方式1的数据处理装置100的结构的不同点为中心进行说明。
<数据处理装置1700的结构>
图18是表示数据处理装置1700的主要硬件结构的框图。
正如该图所示,数据处理装置1700是对于实施方式1的数据处理装置100以追加了预解包电路1710和后打包电路1720的方式变形而成的装置。
在该图中,预解包电路1710与指令解码器120、寄存器文件140、和比特操作电路150连接,并具有以下的4个预解包功能。
预解包功能1:在指令解码器120解码了伸展指令的情况下,当从指令解码器120输入的解码信号sign的逻辑值为“0”且解码信号mask_dir的逻辑值为“0”时,对于从寄存器文件140输入的32比特的比特序列中的低位N比特的比特序列,将比特长度为N/2的包含最低位比特的比特序列向左移位N/2比特,向移位后的、且比特长度为N/2的包含最低位比特的比特序列的部分,插入由逻辑值“0”构成的比特序列,而后输出的功能。
预解包功能2:在指令解码器120解码了伸展指令的情况下,当从指令解码器120输入的解码信号sign的逻辑值为“0”且解码信号mask_dir的逻辑值为“1”时,对于从寄存器文件140输入的32比特的比特序列中的低位N比特的比特序列,向比特长度为N/2的包含最高位比特的比特序列插入逻辑值“0”,而后输出的功能。
预解包功能3:在指令解码器120解码了伸展指令的情况下,当从指令解码器120输入的解码信号sign的逻辑值为“1”时,对于从寄存器文件140输入的32比特的比特序列中的低位N比特的比特序列,向比特长度为N/2比特的包含最高位比特的比特序列插入比特长度为N/2的包含最低位比特的比特序列的最高位比特的复制,而后输出的功能。
预解包功能4:在指令解码器120解码了收缩指令的情况下,将从寄存器文件140输入的32比特的比特序列原样输出的功能。
后打包电路1720与指令解码器120、比特操作电路150、和寄存器文件140连接,并具有以下的3个后打包功能。
后打包功能1:在指令解码器120解码了收缩指令的情况下,当从指令解码器输出的解码信号mask_dir的逻辑值为“0”时,对于从比特操作电路150输入的32比特的比特序列中的低位N比特的比特序列,将比特长度为N/2的包含最高位比特的比特序列向右移位N/2比特,并向移位后的、且比特长度为N/2的包含最高位比特的比特序列的部分,插入由逻辑值“0”构成的无效比特序列,而后输出的功能。
后打包功能2:在指令解码器120解码了收缩指令的情况下,当从指令解码器输出的解码信号mask_dir的逻辑值为“1”时,对于从比特操作电路150输入的32比特的比特序列中的低位N比特的比特序列,向比特长度为N/2的包含最高位比特的比特序列插入由逻辑值“0”构成的无效比特序列,而后输出的功能。
后打包功能3:在指令解码器120解码了伸展指令的情况下,将从比特操作电路150输入的32比特的比特序列原样输出的功能。
<总结>
在具有上述结构的数据处理装置1700中,在指令解码器120解码了伸展指令的情况下,在预解包电路1710实施了预解包处理之后,比特操作电路150能够进行比特操作,在指令解码器120解码了收缩指令的情况下,比特操作电路150进行了比特操作之后,后打包电路1720能够进行后打包处理。
<补充>
上面,作为本发明的数据处理装置的一实施方式,在实施方式1、实施方式2中对数据处理装置的例子进行了说明,还能够进行如下的变形,本发明当然不限定于由上述实施方式所示的数据处理装置。
(1)在实施方式1中,对于作为指令解码器120的解码对象的指令为4字节、即32比特的比特长度的结构为例进行了说明,但如果是能够表现比特操作种指令的比特数,不必须限定为32比特的比特长度的结构,例如也可以是64比特的比特长度的结构。而且,作为指令解码器的解码对象的指令也可以是可变长指令的结构。
(2)在实施方式1中,以比特操作电路150对32比特的比特长度的数据进行比特操作处理的结构为例进行了说明,但如果能够基于来自指令解码器120的解码信号,进行比特操作处理,则不必须限定为对32比特的比特长度的数据进行比特操作处理的结构,例如,也可以是对128比特或16比特的比特长度的数据进行比特操作处理的结构。
(3)在实施方式1中,以操作码中包含的“N”是8、16或32中某一个的结构为例进行了说明,但如果是在作为比特操作电路150的比特操作处理对象的数据的比特数以下,则不必须限定为8、16或32中某一个的结构,例如也可以是作为12的结构。
(4)在实施方式1中,以寄存器文件140构成为具有16个寄存器为例进行了说明,但如果能够基于来自指令解码器120的解码信号,读出寄存器的值,或者写入寄存器的值,则不必须限定于具有16个寄存器的结构,例如也可以是具有32个寄存器的结构。
(5)在实施方式1中,以比特操作电路150是图4、图5所示的结构为例进行了说明,但如果是具有与图4、图5所示的结构的电路相同功能的电路,则不必须限定于图4、图5所示的结构。作为一例,对于记述与图4、图5所示的比特操作电路150具有的功能相同的功能的RTL(RegsisterTransferLanguage,寄存器传输语言)记述,考虑利用逻辑合成工具而获得的逻辑合成电路。
(6)在实施方式1中,mask_dir、operation和shift_dir具有如下的关系,即,通过这3个信号中的任意的2个信号,另外的1个信号也被唯一地确定。
因此,在实施方式1中,对数据处理装置100为如下结构的例子进行了说明,即,指令解码器120将mask_dir、和operation作为解码信号输出,比特操作电路150从这些信号中生成shift_dir并利用,但如果指令解码器120将mask_dir、operation和shift_dir中的任意2个信号作为解码信号而输出,比特操作电路150从该2个信号生成另外的1个信号并利用,则不必须限定为指令解码器120将mask_dir和operation作为解码信号而输出,比特操作电路150从这些信号生成shift_dir并利用的结构。
另外,根据从指令解码器120输出的解码信号,当(1)解码对象的指令为收缩指令和伸展指令中的任一种指令时,如果能够确定(2)不成为移位对象的比特序列是包含最高位比特的比特序列和包含最低位比特的比特序列中的某一种比特序列,则不必须限定为指令解码器120将mask_dir、operation和shift_dir中的任意2个信号作为解码信号输出的结构。例如,考虑有如下的结构的例子,即,将表示解码对象的指令是收缩指令和伸展指令中的某一种指令的信号(operation)、和表示作为移位对象的比特序列的移位方向是高位比特侧和低位比特侧中的某一方向的信号这2种信号作为解码信号输出。
(7)在实施方式1中,width、shift_len、和mask_width具有如下的关系,即,根据这3个信号中的任意2个信号,另外的1个信号也被唯一地确定。
因此,在实施方式1中,以数据处理装置100的如下结构,即,指令解码器120将width和shift_len作为解码信号输出,比特操作电路150根据这些信号生成mask_width并利用的结构为例进行了说明,但如果是指令解码器120将width、shift_len、和mask_width中的任意2个信号作为解码信号输出,比特操作电路150根据这2个信号生成另外的1个信号并利用的结构,则不必须限定为指令解码器120将width和shift_len作为解码信号输出,比特操作电路150根据这些信号生成mask_width并利用的结构。
另外,如果能够根据从指令解码器120输出的解码信号,确定成为移位对象的比特序列的比特长度、和不成为移位对象的比特序列的比特长度,则不必须限定为指令解码器120将width、shift_len、和mask_width中的任意2个作为解码信号输出的结构。例如,考虑有如下结构的例子,即,将表示成为移位对象的比特序列的比特长度的信号(width)、和表示不成为移位对象的比特序列的比特长度的信号这2个信号作为解码信号输出的结构。并且,例如,考虑有如下结构的例子等,即,将表示不成为移位对象的比特序列的比特长度的信号、和表示不成为移位对象的比特序列的比特长度与成为移位对象的比特序列的比特长度之差的信号这2个信号作为解码信号输出的结构。
(8)在实施方式1中,以作为指令解码器120的解码对象的比特操作种指令相互独立地指定源寄存器和目的寄存器的结构为例进行了说明,但也可以以使源寄存器和目的寄存器为同一寄存器的方式,将源寄存器和目的寄存器指定为单一的寄存器。
(9)在实施方式1中,以数据处理装置100的如下结构,即,作为比特操作处理的对象的比特序列被存放在寄存器文件140的寄存器中的结构为例进行了说明,但只要是存放在能够唯一确定的存储区域的比特序列,则不必须限定于作为比特操作处理的对象的比特序列被存放在寄存器文件140的寄存器中的结构,例如也可以是将存放在存储器等的外部存储装置中的比特序列作为比特操作处理的对象的结构。
(10)在实施方式2中,以数据处理装置1500具有8个比特操作电路的结构为例进行了说明,但如果各个比特操作电路构成为基于来自相互共用的指令解码器120的解码信号进行动作,则不必须构成为具有8个比特操作电路,例如也可以构成为具有16个比特操作电路。
(11)在实施方式3中,作为指令解码器120的解码对象的比特操作种指令以图3所示的指令结构为例进行了说明,但如果指令解码器120能够对控制寄存器文件140、比特操作电路150、和预解包电路1710的信号进行解码,则也可以构成为在1个指令中包含用于使预解包电路1710动作的部分、和用于使比特操作电路150动作的部分的复合指令。并且,作为指令解码器120的解码对象的比特操作种指令以图3所示的指令的结构为例进行了说明,但如果指令解码器120能够对控制寄存器文件140、比特操作电路150、和后打包电路1720的信号进行解码,则也可以构成为在1个指令中包含用于使后打包电路1720动作的部分、和用于使比特操作电路150动作的部分的复合指令。
(12)在实施方式1中,数据处理装置100例示了指令解码器120将由图3所示的指令形式210构成的比特操作种指令设为解码对象的结构。然而,指令解码器120如果能够输出包含比特操作电路150所需的全部控制信号的解码信号,则作为解码对象的比特操作种指令的指令形式不必须限定于图3所示的指令形式210。作为一例,考虑有图19所例示的指令形式的例子等。
图19(a)所例示的指令形式是以助记符形式示意地示出作为解码对象的比特操作种指令是伸展指令的情况下的指令形式,图19(b)所例示的指令形式是以助记符形式示意地表示作为解码对象的比特操作种指令是收缩指令的情况下的指令形式。
如图19(a)、(b)所示,这些指令形式是由1个操作码和3个操作数构成的指令。
这里,由操作数sh15、操作数sh25所示的移位量,可以是能够指定任意的值的形式,也可以是指定多个固定移位量中的某一个固定移动量的形式。并且,由操作数msk16、操作数msk26所示的比特长度,可以是能够指定任意的值的形式,也可以是指定多个固定比特长度中的某一个固定比特长度的形式。
(13)下面,进一步对本发明的一实施方式的数据处理装置的结构以及其变形例和各效果进行说明。
(a)本发明的一实施方式的数据处理装置,其特征在于,具有:解码器,从1个指令中,读取用于指定存放N比特的对象比特序列的比特序列存放区域的信息、表示N比特的比特序列中的第1比特范围的信息、和表示该N比特的比特序列中的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,该第1比特范围包含该N比特的比特序列中的第1端比特,该第2比特范围是与该第1比特范围连续的比特范围,并且不包含该N比特的比特序列中的第2端比特,其中,N是2以上的整数;以及比特操作电路,当从所述解码器输出解码信号时,根据该解码信号,基于存放在所述比特序列存放区域中的所述对象比特序列,生成由N比特构成的输出比特序列并输出,所述比特操作电路为,通过在所述输出比特序列中的所述第1比特范围中,配置与所述对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述输出比特序列中的第3比特范围中,配置与所述对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的规定值,由此来生成所述输出比特序列,该第3比特范围包含所述第2端比特并由所述第2比特范围的比特长度构成。
根据具有上述结构的本实施方式的数据处理装置,根据由1个指令解码得到的解码信号进行动作的比特操作电路,对存放在比特序列存放区域中的比特序列之中的被打包在第1比特范围和第2比特范围中的数据,以在第1比特范围和第2比特范围之间插入由相同的规定值构成的比特序列的方式进行解包并输出。由此,该数据处理装置能够相对高效率地执行被打包的数据的解包。
图20是表示上述变形例中的数据处理装置2200的结构的框图。
如该图所示,数据处理装置2200由解码器2210和比特操作电路2220构成。
解码器2210与比特操作电路2220连接,并具有如下功能,即,从1个指令中,读取用于指定存放N比特的对象比特序列的比特序列存放区域的信息、表示N比特的比特序列中的第1比特范围的信息、和表示该N比特的比特序列中的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,该第1比特范围包含该N比特的比特序列中的第1端比特,该第2比特范围是与该第1比特范围连续的比特范围,并且不包含该N比特的比特序列中的第2端比特,其中,N是2以上的整数。作为一例,以实施方式1中的指令解码器120来实现。
比特操作电路2220与解码器2210连接,并具有如下功能,即,当从解码器2210输出解码信号时,根据该解码信号,基于存放在所述比特序列存放区域中的所述对象比特序列,生成由N比特构成的输出比特序列并输出,所述比特操作电路为,通过在所述输出比特序列中的所述第1比特范围中,配置与所述对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述输出比特序列中的第3比特范围中,配置与所述对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的规定值,由此来生成所述输出比特序列,该第3比特范围包含所述第2端比特并由所述第2比特范围的比特长度构成。
(b)并且,也可以是,所述解码器还从1个指令中读取表示是否进行符号扩展的符号扩展信息,并将与该符号扩展信息对应的表示是否进行符号扩展的符号扩展信号包含在要输出的解码信号中,在从所述解码器输出的解码信号中包含的符号扩展信号表示进行符号扩展的情况下,所述比特操作电路将所述输出比特序列中的如下比特序列中的最高位比特的值设为所述规定值,该比特序列被配置在所述第1比特范围和所述第3比特范围之中相对处于低位侧的比特范围中,在从所述解码器输入的解码信号中包含的所述符号扩展信号表示不进行符号扩展的情况下,所述比特操作电路将数值零设为所述规定值。
根据这样的结构,通过使作为解码器的解码对象的1个指令包含符号扩展信息,能够对于数据处理装置指定使其进行符号扩展的处理和零挿入的处理中的某一种处理。
(c)并且,也可以是,作为所述解码器的解码对象的1个指令,是包含比特长度信号的比特序列,该比特长度信号用于指定所述第1比特范围的比特长度和所述第2比特范围的比特长度,所述解码器使所述解码信号包含与所述比特长度信号对应的用于指定所述第1比特范围的比特长度和所述第2比特范围的比特长度的比特长度解码信号,并输出包含该比特长度解码信号的所述解码信号,所述比特操作电路根据从所述解码器输出的解码信号中所包含的比特长度解码信号,生成所述输出比特序列。
根据这样的结构,能够使用比特长度信号进行第1比特范围的比特长度和第2比特范围的比特长度的指定。
(d)并且,也可以是,所述比特长度信号包含表示所述第1比特范围的比特长度的信号、表示所述第2比特范围的比特长度的信号、和表示由N比特构成的比特序列中的所述第2比特范围与所述第3比特范围的差分比特数的信号之中的任意两种信号。
根据这样的结构,能够使用表示第1比特范围的比特长度的信号、和表示第2比特范围的比特长度的信号、和由N比特构成的比特序列中的表示第2比特范围与第3比特范围之间的差分比特数的信号之中的某两个来进行第1比特范围的比特长度和第2比特范围的比特长度的指定。
(e)并且,也可以是,作为所述解码器的解码对象的1个指令,还包含表示所述第1端比特是最高位比特和最低位比特中的哪一种比特的端比特信号,所述解码器还使所述解码信号包含与所述端比特信号对应的表示最高位比特和最低位比特中的哪一种比特的端比特解码信号,并输出还包含该端比特解码信号的该解码信号,所述比特操作电路还利用从所述解码器输出的解码信号中所包含的端比特解码信号,生成所述输出比特序列。
根据这样的结构,能够使用端比特信号进行第1端比特是最高位比特和最低位比特中的哪一种比特的指定
(f)并且,也可以是,所述解码器还从1个指令中读取表示是否进行预解包处理的预解包信息,并将与该预解包信息对应的表示是否进行预解包处理的预解包信号包含在要输出的解码信号中,在从所述解码器输出的解码信号中包含的预解包信号表示进行预解包处理的情况下,所述比特操作电路进行预解包处理。
根据这样的结构,通过使成为解码器的解码对象的1个指令包含预解包信息,能够使数据处理装置进行预解包处理。
(g)并且,也可以是,具有追加比特操作电路,当从所述解码器输出解码信号时,该追加比特操作电路根据该解码信号,基于追加对象比特序列生成由N比特构成的追加输出比特序列并输出,该追加对象比特序列由存放在与所述比特序列存放区域建立了对应的追加比特序列存放区域中的N比特构成,所述追加比特操作电路通过在所述追加输出比特序列中的所述第1比特范围中,配置与所述追加对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述追加输出比特序列中的所述第3比特范围中,配置与所述追加对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述追加输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的追加规定值,由此来生成所述追加输出比特序列。
根据这样的结构,能够在1个指令中,根据存放在比特序列存放区域中的对象比特序列和存放在追加比特序列存放区域中的追加对象比特序列,基于该各个比特序列,生成输出比特序列和追加输出比特序列并输出。
工业实用性
本发明的数据处理装置能够广泛地利用于处理由多个比特构成的数字信号的设备。
符号说明
100数据处理装置
110指令取出单元
120指令解码器
130装入存储单元
140寄存器文件
150比特操作电路
160时钟脉冲发生器
Claims (8)
1.一种数据处理装置,其特征在于,具有:
解码器,从1个指令中,读取用于指定存放M比特的比特序列中的低位N比特的对象比特序列的比特序列存放区域的信息、表示N比特的比特序列中的第1比特范围的信息、和表示该N比特的比特序列中的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,该第1比特范围包含该N比特的比特序列中的第1端比特,该第2比特范围是与该第1比特范围连续的比特范围,并且不包含该N比特的比特序列中的第2端比特,其中,M是3以上的整数,N是3以上M以下的整数;以及
比特操作电路,当从所述解码器输出解码信号时,根据该解码信号,基于存放在所述比特序列存放区域中的所述对象比特序列,生成由N比特构成的输出比特序列并输出,
所述比特操作电路为,通过在所述输出比特序列中的所述第1比特范围中,配置与所述对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述输出比特序列中的第3比特范围中,配置与所述对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的规定值,由此来生成所述输出比特序列,该第3比特范围包含所述第2端比特并由所述第2比特范围的比特长度构成。
2.如权利要求1所述的数据处理装置,其特征在于,
所述解码器还从1个指令中读取表示是否进行符号扩展的符号扩展信息,并将与该符号扩展信息对应的表示是否进行符号扩展的符号扩展信号包含在要输出的解码信号中,
在从所述解码器输出的解码信号中包含的符号扩展信号表示进行符号扩展的情况下,所述比特操作电路将所述输出比特序列中的如下比特序列中的最高位比特的值设为所述规定值,该比特序列被配置在所述第1比特范围和所述第3比特范围之中相对处于低位侧的比特范围中,
在从所述解码器输出的解码信号中包含的所述符号扩展信号表示不进行符号扩展的情况下,所述比特操作电路将数值零设为所述规定值。
3.如权利要求2所述的数据处理装置,其特征在于,
作为所述解码器的解码对象的1个指令,是包含比特长度信号的比特序列,该比特长度信号用于指定所述第1比特范围的比特长度和所述第2比特范围的比特长度,
所述解码器使所述解码信号包含与所述比特长度信号对应的用于指定所述第1比特范围的比特长度和所述第2比特范围的比特长度的比特长度解码信号,并输出包含该比特长度解码信号的所述解码信号,
所述比特操作电路根据从所述解码器输出的解码信号中所包含的比特长度解码信号,生成所述输出比特序列。
4.如权利要求3所述的数据处理装置,其特征在于,
所述比特长度信号包含表示所述第1比特范围的比特长度的信号、表示所述第2比特范围的比特长度的信号、和表示由N比特构成的比特序列中的所述第2比特范围与所述第3比特范围的差分比特数的信号之中的任意两种信号。
5.如权利要求3所述的数据处理装置,其特征在于,
作为所述解码器的解码对象的1个指令,还包含表示所述第1端比特是最高位比特和最低位比特中的哪一种比特的端比特信号,
所述解码器还使所述解码信号包含与所述端比特信号对应的表示最高位比特和最低位比特中的哪一种比特的端比特解码信号,并输出还包含该端比特解码信号的所述解码信号,
所述比特操作电路还利用从所述解码器输出的解码信号中所包含的端比特解码信号,生成所述输出比特序列。
6.如权利要求2所述的数据处理装置,其特征在于,
所述解码器还从1个指令中读取表示是否进行预解包处理的预解包信息,并将与该预解包信息对应的表示是否进行预解包处理的预解包信号包含在要输出的解码信号中,
在从所述解码器输出的解码信号中包含的预解包信号表示进行预解包处理的情况下,所述比特操作电路进行预解包处理。
7.如权利要求1所述的数据处理装置,其特征在于,
具有追加比特操作电路,当从所述解码器输出解码信号时,该追加比特操作电路根据该解码信号,基于追加对象比特序列生成由N比特构成的追加输出比特序列并输出,该追加对象比特序列由存放在与所述比特序列存放区域建立了对应的追加比特序列存放区域中的N比特构成,
所述追加比特操作电路通过在所述追加输出比特序列中的所述第1比特范围中,配置与所述追加对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述追加输出比特序列中的所述第3比特范围中,配置与所述追加对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述追加输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的追加规定值,由此来生成所述追加输出比特序列。
8.一种数据处理方法,是数据处理装置进行的数据处理方法,该数据处理装置包含:解码指令的解码器、和根据从该解码器输出的解码信号进行处理的比特操作电路,该数据处理方法的特征在于,
具有:
解码步骤,所述解码器从1个指令中,读取用于指定存放M比特的比特序列中的低位N比特的对象比特序列的比特序列存放区域的信息、表示N比特的比特序列中的第1比特范围的信息、和表示该N比特的比特序列中的第2比特范围的信息,并将与所读取的信息对应的解码信号输出,该第1比特范围包含该N比特的比特序列中的第1端比特,该第2比特范围是与该第1比特范围连续的比特范围,并且不包含该N比特的比特序列中的第2端比特,其中,M是3以上的整数,N是3以上M以下的整数;以及
比特操作步骤,当在所述解码步骤中从所述解码器输出解码信号时,所述比特操作电路根据该解码信号,基于存放在所述比特序列存放区域中的所述对象比特序列,生成由N比特构成的输出比特序列并输出,
所述比特操作步骤中,通过在所述输出比特序列中的所述第1比特范围中,配置与所述对象比特序列中的所述第1比特范围的比特序列等值的比特序列,并在所述输出比特序列中的第3比特范围中,配置与所述对象比特序列中的所述第2比特范围的比特序列等值的比特序列,并在所述输出比特序列中的不属于所述第1比特范围和所述第3比特范围中任一比特范围的部分中,配置相同的规定值,由此来生成所述输出比特序列,该第3比特范围包含所述第2端比特并由所述第2比特范围的比特长度构成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-086313 | 2011-04-08 | ||
JP2011086313 | 2011-04-08 | ||
PCT/JP2012/001890 WO2012137428A1 (ja) | 2011-04-08 | 2012-03-19 | データ処理装置、及びデータ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102884505A CN102884505A (zh) | 2013-01-16 |
CN102884505B true CN102884505B (zh) | 2016-01-20 |
Family
ID=46968844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280001280.7A Expired - Fee Related CN102884505B (zh) | 2011-04-08 | 2012-03-19 | 数据处理装置和数据处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8604946B2 (zh) |
JP (1) | JP5853177B2 (zh) |
CN (1) | CN102884505B (zh) |
WO (1) | WO2012137428A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9122475B2 (en) * | 2012-09-28 | 2015-09-01 | Intel Corporation | Instruction for shifting bits left with pulling ones into less significant bits |
CN104572023B (zh) * | 2014-12-09 | 2017-08-29 | 国电南瑞科技股份有限公司 | 用于变电站自动化系统的触发式的逻辑计算方法 |
US20170177354A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Vector-Based Bit Manipulation |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309347A (zh) * | 1999-11-15 | 2001-08-22 | 德克萨斯仪器股份有限公司 | 具有改良的指令集体系结构的微处理器 |
JP2002522821A (ja) * | 1998-08-06 | 2002-07-23 | トライメディア テクノロジーズ インク | データプロセッサとデータ処理方法 |
CN1432151A (zh) * | 2000-10-04 | 2003-07-23 | Arm有限公司 | 单指令多数据处理 |
CN1556469A (zh) * | 2004-01-09 | 2004-12-22 | 上海汉芯半导体科技有限公司 | 带有快速位提取和位插入单元的数字信号处理器 |
JP2005535966A (ja) * | 2002-08-09 | 2005-11-24 | インテル・コーポレーション | アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS623333A (ja) * | 1985-06-28 | 1987-01-09 | Yokogawa Hewlett Packard Ltd | ビツト群置数方式 |
JPS6481033A (en) * | 1987-09-24 | 1989-03-27 | Hitachi Ltd | Data processing system |
JP3055558B2 (ja) * | 1988-02-29 | 2000-06-26 | ジーイー横河メディカルシステム株式会社 | nビット演算装置 |
JPH05266178A (ja) * | 1992-03-19 | 1993-10-15 | Toshiba Corp | データ処理装置 |
US5734874A (en) * | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
JP3583474B2 (ja) * | 1994-06-29 | 2004-11-04 | 株式会社ルネサステクノロジ | 乗算装置 |
US6275834B1 (en) * | 1994-12-01 | 2001-08-14 | Intel Corporation | Apparatus for performing packed shift operations |
EP1265132A3 (en) * | 1994-12-02 | 2005-02-09 | Intel Corporation | Microprocessor with packing operation of composite operands |
EP0847551B1 (en) * | 1995-08-31 | 2012-12-05 | Intel Corporation | A set of instructions for operating on packed data |
WO1998044410A1 (fr) * | 1997-04-03 | 1998-10-08 | Seiko Epson Corporation | Micro-ordinateur et equipement electronique |
EP1095520A2 (en) * | 1998-06-29 | 2001-05-02 | Limt Technology AB | Method and apparatus for splicing data streams |
JP2000099327A (ja) | 1998-09-28 | 2000-04-07 | Mitsubishi Electric Corp | 計算機 |
US20060093045A1 (en) * | 1999-06-29 | 2006-05-04 | Roger Anderson | Method and apparatus for splicing |
US6430684B1 (en) * | 1999-10-29 | 2002-08-06 | Texas Instruments Incorporated | Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s) |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
US7334116B2 (en) * | 2004-10-06 | 2008-02-19 | Sony Computer Entertainment Inc. | Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length |
JP4374363B2 (ja) | 2006-09-26 | 2009-12-02 | Okiセミコンダクタ株式会社 | ビットフィールド操作回路 |
US7962049B2 (en) * | 2007-12-12 | 2011-06-14 | Ciena Corporation | Systems and methods for communication system control utilizing corrected forward error correction error location identifiers |
-
2012
- 2012-03-19 CN CN201280001280.7A patent/CN102884505B/zh not_active Expired - Fee Related
- 2012-03-19 WO PCT/JP2012/001890 patent/WO2012137428A1/ja active Application Filing
- 2012-03-19 US US13/643,709 patent/US8604946B2/en not_active Expired - Fee Related
- 2012-03-19 JP JP2012548659A patent/JP5853177B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002522821A (ja) * | 1998-08-06 | 2002-07-23 | トライメディア テクノロジーズ インク | データプロセッサとデータ処理方法 |
CN1309347A (zh) * | 1999-11-15 | 2001-08-22 | 德克萨斯仪器股份有限公司 | 具有改良的指令集体系结构的微处理器 |
CN1432151A (zh) * | 2000-10-04 | 2003-07-23 | Arm有限公司 | 单指令多数据处理 |
JP2005535966A (ja) * | 2002-08-09 | 2005-11-24 | インテル・コーポレーション | アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム |
CN1556469A (zh) * | 2004-01-09 | 2004-12-22 | 上海汉芯半导体科技有限公司 | 带有快速位提取和位插入单元的数字信号处理器 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2012137428A1 (ja) | 2014-07-28 |
CN102884505A (zh) | 2013-01-16 |
US20130038474A1 (en) | 2013-02-14 |
US8604946B2 (en) | 2013-12-10 |
WO2012137428A1 (ja) | 2012-10-11 |
JP5853177B2 (ja) | 2016-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101782893B (zh) | 可重构数据处理平台 | |
US6023742A (en) | Reconfigurable computing architecture for providing pipelined data paths | |
CN101154153B (zh) | 位域操作电路 | |
CN110383237A (zh) | 可重新配置的矩阵乘法器系统和方法 | |
US5583804A (en) | Data processing using multiply-accumulate instructions | |
CN102541809B (zh) | 一种动态可重构处理器 | |
US7305649B2 (en) | Automatic generation of a streaming processor circuit | |
CN104350492B (zh) | 在大寄存器空间中利用累加的向量乘法 | |
TW201636829A (zh) | 具有改進的排程效率之密碼編譯雜湊電路 | |
JP4408712B2 (ja) | 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路 | |
CN101111834A (zh) | 动态可重配置处理器 | |
CN102884505B (zh) | 数据处理装置和数据处理方法 | |
US20090031106A1 (en) | Reconfigurable device | |
CN107851013B (zh) | 数据处理装置和方法 | |
US9740488B2 (en) | Processors operable to allow flexible instruction alignment | |
US20070255928A1 (en) | Processor | |
KR100981998B1 (ko) | 데이터 워드 내의 비트 삽입 | |
KR20100092805A (ko) | 재구성 가능한 구조의 프로세서 | |
US5852741A (en) | VLIW processor which processes compressed instruction format | |
CN108415882A (zh) | 利用操作数基础系统转换和再转换的向量乘法 | |
TWI724545B (zh) | 用於影像處理之設備及方法 | |
Gill et al. | Introducing kansas lava | |
CN103207770A (zh) | 一种在嵌入式系统中实现大数预计算的方法 | |
JP5193358B2 (ja) | 多項式データ処理演算 | |
JP2006185423A (ja) | カスタムlsi開発プラットフォーム、命令セット・アーキテクチャ及び論理回路構成情報の生成方法、並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160316 Address after: Osaka Japan Patentee after: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT Co.,Ltd. Address before: Osaka Japan Patentee before: Matsushita Electric Industrial Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160120 Termination date: 20200319 |