CN105512092A - 算术电路和用于算术电路的控制方法 - Google Patents
算术电路和用于算术电路的控制方法 Download PDFInfo
- Publication number
- CN105512092A CN105512092A CN201510594336.XA CN201510594336A CN105512092A CN 105512092 A CN105512092 A CN 105512092A CN 201510594336 A CN201510594336 A CN 201510594336A CN 105512092 A CN105512092 A CN 105512092A
- Authority
- CN
- China
- Prior art keywords
- data
- selector switch
- operand
- element circuitry
- circuitry
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 230000006835 compression Effects 0.000 claims description 69
- 238000007906 compression Methods 0.000 claims description 69
- 230000000873 masking effect Effects 0.000 claims description 35
- 230000006870 function Effects 0.000 description 34
- 101100055224 Anemone leveillei AL10 gene Proteins 0.000 description 9
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 7
- 230000006837 decompression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000009434 installation 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/3001—Arithmetic 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种算术电路和用于算术电路的控制方法。该算术电路包括:第一元件电路至第N元件电路,其中,N是等于或大于3的整数,所述第一元件电路至所述第N元件电路分别包括:输入电路,该输入电路输入第一操作数数据和第二操作数数据;以及元件数据选择器,该元件数据选择器基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及数据总线,该数据总线将操作数数据从输入电路提供给元件数据选择器。当控制信号处于第一状态时,元件数据选择器基于包括在第二操作数数据中的请求元件信号来选择元件电路中的任何元件电路的第一操作数数据并且输出该第一操作数数据。
Description
技术领域
本发明涉及算术电路和用于算术电路的控制方法。
背景技术
已经积极地促进了使得能够高速算术处理的处理器的开发。安装在进行高性能计算的信息处理设备上的处理器采用用于提高算术处理的速度的各种技术。作为用于通过并行进行多种处理来提高算术处理的速度的技术,存在用于使用一个命令来对多个数据同时并行执行相同的算术处理的单指令多数据流(SIMD)处理系统。
SIMD处理器包括多个SIMD算术元件并且对多个数据并行执行一个命令。特别地,在近几年的处理器中,趋向于增大SIMD算术元件的数目以进一步提高速度。
在下述简单处理的情况下,SIMD处理器通过对单个命令进行解码以及对多个数据进行并行的算术处理来获得高速算术处理,所述简单处理包括:对一个命令进行解码;将命令的处理目标数据输入至多个SIMD算术元件;以及对数据并行进行算术处理。在日本公开特许公报No.2002-229962中公开了该SIMD。
然而,当不进行简单处理时,例如,当由SIMD算术元件生成的算术结果经受由其他SIMD算术元件进行的算术处理时,需要进行对SIMD算术元件中的数据的交换和分发。这往往会降低算术处理的效率。因此,需要在多个SIMD算术元件中进行数据交换等的元件间算术电路。
然而,根据SIMD处理器的SIMD宽度的增大,大量的SIMD算术元件例如4个SIMD算术元件、8个SIMD算术元件或16个SIMD算术元件被安装在算术处理设备的集成电路基板上。因此,在元件间算术电路中,需要在集成电路基板上的较大范围内提供数据布线。因此,增大了元件间算术电路的电路尺寸。
发明内容
因此,根据实施例的第一方面的目的是提供一种抑制电路尺寸并且进行各种元件间算术运算的算术电路和用于该算术电路的控制方法。
一种算术电路,包括:
第一元件电路至第N元件电路,其中,N为等于或大于3的整数,所述第一元件电路至所述第N元件电路分别包括:
输入电路,该输入电路被配置成输入第一操作数数据和第二操作数数据;以及
元件数据选择器,该元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
数据总线,该数据总线被配置成将通过元件电路输入的操作数数据从元件电路的输入电路供应给元件电路的元件数据选择器,其中,
当控制信号处于第一状态时,第一元件电路至第N元件电路中的元件数据选择器分别基于包括在第二操作数数据中的请求元件信号来选择元件电路中的任何元件电路的第一操作数数据并且输出该第一操作数数据,以及
第一元件电路至第N元件电路分别包括:
操作数选择器,该操作数选择器被配置成在控制信号处于第二状态时基于元件电路的元件编号和移位量来选择第一操作数数据或第二操作数数据并且将所选择的操作数数据输出至数据总线;以及
用于元件连接左移的加法器,该用于元件连接左移的加法器被配置成基于元件电路的元件编号和移位量来生成请求元件信号。根据第一方面,可以抑制电路尺寸并且进行各种元件间算术运算。
附图说明
图1是示出实施例中的算术电路和SIMD运算器的图。
图2是示出本实施例中的全元件排列的算术电路的示例的图。
图3是示出本实施例中的元件连接左移的算术电路的示例的图。
图4是示出本实施例中的元件求和掩蔽的算术电路的示例的图。
图5是示出本实施例中的元件压缩的算术电路的示例的图。
图6是示出进行全元件排列的算术电路AL10-1的左半侧的图。
图7是示出进行全元件排列的算术电路AL10-1的右半侧的图。
图8是示出进行元件连接左移的算术电路AL10-2的左半侧的图。
图9是示出进行元件连接左移的算术电路AL10-2的右半侧的图。
图10A至图10C是用于阐述加法器CSL_Adder的运算的逻辑值表。
图11是示出进行元件求和掩蔽的算术电路AL10-3的左半侧的图。
图12是示出进行元件求和掩蔽的算术电路AL10-3的右半侧的图。
图13是示出进行元件压缩的算术电路AL10-4的左半侧的图。
图14是示出进行元件压缩的算术电路AL10-4的右半侧的图。
图15A至图15D是示出压缩解码器Compress的逻辑值表的图。
图16是示出本实施例中的具有所有功能的算术电路的左侧的图。
图17是示出本实施例中的具有所有功能的算术电路的右侧的图。
具体实施方式
[实施例的概述]
图1是示出实施例中的算术电路和SIMD运算器的图。在图1中,示出了设置在处理器中的4-SIMD运算器。4-SIMD运算器包括分别包括运算器AL1的4个SIMD算术元件E_#0、E_#1、E_#2和E_#3。作为示例,SIMD宽度被设置成4(4个SIMD)。SIMD运算器包括至少2个SIMD算术元件。SIMD运算器可以是例如包括8个SIMD算术元件的8-SIMD运算器或者可以是16-SIMD运算器。
SIMD算术元件E_#0至E_#3包括:保存第一操作数数据和第二操作数数据的第一操作数寄存器OP1和第二操作数寄存器OP2、接收第一操作数数据的输入和第二操作数数据的输入并且进行算术运算的运算器AL1、保存运算器AL1的算术运算结果的结果寄存器R3、保存由结果寄存器R3保存的数据的重命名寄存器R2以及保存由重命名寄存器R2保存的数据的SIMD寄存器R1。
SIMD算术元件还包括:在第一操作数寄存器OP1和第二操作数寄存器OP2的前级处的对结果寄存器R3、重命名寄存器R2以及SIMD寄存器R1中任一寄存器进行选择的两种选择器SA和SB;以及对多个运算器AL1的输出进行选择的选择器SC。还可以设想从结果寄存器R3至其他部件的数据转发。然而,在本实施例中未提及数据转发。
第一操作数寄存器OP1的操作数数据和第二操作数寄存器OP2的操作数数据是例如64位。类似地,SIMD寄存器R1、重命名寄存器R2和结果寄存器R3也具有64位宽度。然而,该实施例不限于64位宽度。
进入保留站(未示出)的SIMD命令被输入至多个SIMD算术元件。多个SIMD元件中的运算器AL1分别进行对多个第一操作数数据和第二操作数数据对的算术运算并且将算术运算结果存储在相应的结果寄存器R3中。重命名寄存器R2是临时保存数据以使运算器AL1分别不按顺序对多个命令进行算术运算并且按顺序输出命令的寄存器。
处理器包括被设置成横越4个SIMD算术元件E_#0至E_#3的元件间算术电路AL10。算术电路AL10接收在SIMD算术元件E_#0至E_#3中的第一操作数寄存器OP1和第二操作数寄存器OP2中的第一操作数数据的输入和第二操作数数据的输入,并且执行例如以下所阐述的算术运算。算术电路AL10进行例如(1)元件间数据替换(元件排列),(2)用于对元件的数据进行连接(concatenate)并且将数据向左移的元件连接左移(元件连接左移),(3)用于将元件的数据进行相加的元件相加掩蔽(元件求和掩蔽),以及(4)用于压缩和布置元件的数据的元件数据压缩(元件压缩)。算术电路AL10的算术运算结果被输出至SIMD算术元件中的结果寄存器R3。
如上所述,元件间算术电路AL10进行基本算术处理例如重新布置4个SIMD算术元件中的数据、掩蔽任何元件的数据、以及广播(broadcast)以将任何元件的数据分发至所有元件。此外,元件间算术电路AL10还对元件的数据进行相加运算、特定的重新布置处理等。因此,元件间算术电路AL10通过包括两个或更多个SIMD算术元件的SIMD运算器来充分利用高速并行处理的优点。
图2是示出本实施例中的全元件排列的算术电路的示例的图。算术电路AL10-1包括选择器S1,该选择器S1选择存储在4个SIMD算术元件E_#0至E_#3的第一操作数寄存器OP1中的数据中的任一数据并且将该数据输出至4个SIMD算术元件的结果寄存器R3中的任一结果寄存器。例如,选择器S1被设置成与相应的4个SIMD算术元件对应并且将所选择的数据输出至相应的结果寄存器R3。选择器S1的选择信号可以包括在例如第二操作数寄存器OP2中的第二操作数数据中。在第一操作数寄存器OP1与4个SIMD算术元件的选择器S1的输入之间需要用于数据传输的数据总线。
由于设置了选择器S1,因此,算术电路AL10-1对SIMD算术元件中的数据进行重新布置并且进行广播以将任何SIMD算术元件的数据分发至所有SIMD算术元件。
此外,如下所述,通过设置对选择器S1的输出或全零数据进行选择的掩蔽选择器,可以将任何SIMD算术元件的数据掩蔽为全零数据。
图3是示出本实施例中的元件连接左移的算术电路的示例的图。算术电路AL10-2将数目与元件的数目×2相等的数据向左移任何数目的元件并且按照元件编号从高至低的顺序将该数据存储在SIMD算术元件的结果寄存器R3中,所述元件的数目×2是通过将SIMD算术元件中的每个SIMD算术元件的两个操作数数据进行组合而获得的。
算术电路AL10-2包括左移电路SL,该左移电路SL将SIMD算术元件的第一操作数寄存器OP1的数据和第二操作数寄存器OP2的数据在其中所述数据被组合的状态下向左移任何移位量。左移电路SL的输出按顺序被存储在4个SIMD算术元件的结果寄存器R3中。移位量的数据(未示出)被提供给左移电路SL。
例如,当移位量为2时,算术电路AL10-2分别将element#2的第一操作数数据、element#3的第一操作数数据、element#0的第二操作数数据以及element#1的第二操作数数据传输至element#0至element#3的结果寄存器R3。
在算术电路AL10-2中,需要左移电路SL以及将数据从SIMD算术元件E_#0至E_#3的第一操作数寄存器和第二操作数寄存器提供给左移电路SL的数据总线。特别地,由于4个SIMD算术元件被布置在集成电路板上的较大区域中,因此数据总线增大了电路的安装成本。在本实施例中,通过将微小电路添加至全元件排列算术电路AL10-1,实现了元件连接左移算术电路AL10-2。
图4是示出本实施例中的元件求和掩蔽的算术电路的示例的图。该算术电路AL10-3对指示相应的元件是否有效的1位的有效数据进行计数并且将作为计数值的有效元件的数目存储在所有SIMD算术元件的结果寄存器R3中。可替选地,算术电路AL10-3可以将有效元件的数目存储在有效元件的结果寄存器R3中。
算术电路AL10-3将例如1位例如相应的元件的第二操作数寄存器OP2的第二操作数数据中的最高有效位用作有效位。算术电路AL10-3包括有效位加法器AD-1。有效位加法器AD-1的和与有效元件的数目被存储在所有元件的相应的结果寄存器R3中。
当算术电路AL10-3具有由无效元件的结果寄存器R3中的全零数据进行掩蔽的功能时,有效位加法器AD-1的计数值仅被存储在有效元件的结果寄存器R3中。全零数据被存储在无效元件的结果寄存器R3中。在这种情况下,使用所有元件排列算术电路AL10-1的掩蔽电路。
图5是示出本实施例中的元件压缩的算术电路的示例的图。该算术电路AL10-4接收SIMD算术元件的操作数数据以及控制信号Ctrl#0至Ctrl#3的指示操作数数据是否被使用的输入,将控制信号指示其有效的元件的操作数数据进行组合并且从左侧的element#0开始按元件编号的顺序即在左对准的状态下将操作数数据存储在相应的结果寄存器R3中。
在图5所示的示例中,控制信号Ctrl#0和Ctrl#3是有效的,控制信号Ctrl#1和Ctrl#2是无效的,element#0和element#3的操作数数据被存储在element#0和element#1的结果寄存器R3中,并且全零数据被存储在element#2和element#3的结果寄存器R3中。
算术电路AL10-4包括电路10和掩蔽电路12,电路10将控制信号指示其有效的元件的数据进行组合并且执行左移,并且掩蔽电路12将全零数据存储在无效元件的结果寄存器R3中。根据该实施例,算术电路AL10-4被配置成使用全元件排列算术电路AL10-1的元件数据选择器S1和掩蔽选择器(附图中未示出)。
[本实施例中的算术电路]
阐述了本实施例中的4个算术电路的详细配置示例。还阐述了4个算术电路的整合的配置示例。
[全元件排列算术电路AL10-1]
图6是示出进行全元件排列的算术电路AL10-1的左半侧的图。图7是示出进行全元件排列的算术电路AL10-1的右半侧的图。如参照图1所阐述的那样,算术电路AL10-1被设置成横越4个SIMD算术元件E_#0至E_#3。算术电路AL10-1具有总体上参照图2所阐述的功能。
算术电路AL10-1包括与4个SIMD算术元件对应的4个元件电路element#0至element#3。元件电路中的每个元件电路包括X1级至X6级以及U级的管道(pipeline)结构。寄存器分别设置在X2级至X6级中。U级与结果寄存器R3对应。X2级至X6级的寄存器分别称为X2寄存器X2-R至X6寄存器X6-R。图6的左侧的电路和图7的右侧的电路除元件编号以外是对称的。
在X1周期处,元件电路element#0至element#3读出与元件电路对应的SIMD算术元件中的第一操作数寄存器和第二操作数寄存器中的操作数数据op1[63:0]和op2[63,1:0]。在X2周期和X3周期处,元件电路中每个元件电路经由X2寄存器X2-R和X3寄存器X3-R来将第一操作数数据op1[63:0]以及第二操作数数据op2[63:0]的最高有效位op2[63]和最低有效的2位op2[1:0]传输至执行数据交换的选择器部100。X3寄存器X3-R的相对于第一操作数数据op1[63:0]的输出与数据data[63:0]对应。相对于第二操作数数据op2[63:0]的最高有效位op2[63]的输出和最低有效的2位op2[1:0]的输出与掩蔽信号mask和请求元件信号want_el[1:0]对应。
在X4周期处,元件电路将数据data[63:0]、掩蔽信号mask以及请求元件信号want_el[1:0]存储在X4寄存器X4-R中并且将数据data[63:0]、掩蔽信号mask以及请求元件信号want_el[1:0]提供给元件数据选择器S1和掩蔽选择器S2。通常,元件电路包括将所有元件的数据data[63:0]提供给所有元件电路的元件数据选择器S1的输入的数据总线DB。在X4周期处,元件数据选择器S1选择由请求元件信号want_el[1:0]请求的元件的数据。掩蔽选择器S2在掩蔽信号mask为0时选择所选择的数据data[63:0],在掩蔽信号mask为1时选择全零数据“0”,并且将数据输出至X5寄存器X5-R。
因此,当掩蔽信号mask为0时,将由元件数据选择器S1基于请求元件信号want_el[1:0]选择的元件的数据data[63:0]输出至X5寄存器X5-R。当掩蔽信号mask为1时,将由掩蔽选择器S2选择的全零掩蔽数据“0”输出至X5寄存器X5-R。
在X5周期处,将所选择的元件数据data[63:0]或所选择的掩蔽数据“0”存储在X5寄存器X5-R中。因此,选择器部100将所选择的元件数据data[63:0]或所选择的全零掩蔽数据“0”发送至元件电路中的X6寄存器X6-R。在X6周期处,将所发送的数据存储在X6寄存器X6-R中,并且在U周期处将其存储在结果寄存器R3中。
如上所述,在本实施例中,作为示例,在SIMD算术元件之间交换的数据被输入作为第一操作数寄存器OP1的第一操作数数据。各种控制信号mask和want_el[1:0]包括在第二寄存器OP2的第二操作数数据中并且被输入。当不需要掩蔽功能时,在选择器部100中不必须设置掩蔽选择器S2。
[元件连接左移算术电路AL10-2]
图8是示出进行元件连接左移的算术电路AL10-2的左半侧的图。图9是示出进行元件连接左移的算术电路AL10-2的右半侧的图。算术电路AL10-2具有总体上参照图3所阐述的对元件的数据进行连接并且将该数据向左移的功能。在图8和图9所示的算术电路AL10-2中,除了在图6和图7所示的全元件排列算术电路AL10-1的部件以外,元件电路element#0至element#3在输入电路INPUT中还包括:用于元件连接左移的加法器CSL_Adder、开关SW1和SW2、请求元件选择器S4以及操作数选择器S3,所述用于元件连接左移的加法器CSL_Adder接收控制码ctrl_code的输入、移位量数据shc[1:0]的输入以及自身元件编号element#[1:0]的输入并且将移位量数据shc[1:0]从自身元件编号element#[1:0]减去或者将移位量数据shc[1:0]加至自身元件编号element#[1:0],所述操作数选择器S3选择第一操作数数据op1[63:0]和第二操作数数据op2[63:0]中任一操作数数据。
当控制码ctrl_code为1时,所添加的配置有效地工作并且算术电路AL10-2作用为执行元件连接左移的算术电路。当控制码ctrl_code为0时,算术电路AL10-2作用为图6和图7所示的全元件排列算术电路。
阐述了进行元件连接左移的算术电路AL10-2的运算。当控制码ctrl_code为1时,元件连接左移运算信号ecsld_op为1,并且请求元件选择器S4选择加法器CSL_Adder的总和sum[1:0]并且输出总和sum[1:0]作为请求元件信号want_el[1:0]。开关SW1输出作为操作数选择器S3的选择信号的输出操作数开关信号op_switch。操作数开关信号op_switch是在加法器CSL_Adder从自身元件编号element#[1:0]减去移位量数据shc[1:0]时所生成的借用值。开关SW2输出0,将掩蔽信号mask总是设置为0,并且将掩蔽选择器S2的选择固定成元件数据选择器S1的输出。
图10A至图10C是用于阐述加法器CSL_Adder的运算的逻辑值表。图10A是指示哪个元件的第一操作数数据和第二操作数数据中的哪个被布置成与自身元件编号element#[1:0]和移位量数据shc[1:0]对应的表。图10B是在加法器CSL_Adder从自身元件编号element#[1:0]减去移位量数据shc[1:0]时所生成的借用值op_switch的表。图10C是通过将自身元件编号element#[1:0]与移位量数据shc[1:0]进行相加而获得的总和sum[1:0]的表。
如图10A所示,当移位量shc[1:0]为0时,其自身元件编号为0的元件电路element#0使用选择器S1来选择元件0的第一操作数数据并且存储该第一操作数数据。类似地,当移位量shc[1:0]为1、2和3时,元件电路element#0选择并且存储元件1、2和3的第一操作数数据并且存储该操作数数据。当移位量shc[1:0]为0、1和2时,元件电路element#1选择并且存储元件1、2和3的第一操作数数据。当移位量shc[1:0]为3时,元件电路element#1选择并且存储元件0的第二操作数数据。其他元件电路element#2和element#3与元件电路element#1相同。
接着,如图10B所示,元件电路element#U根据选择器S3根据在相减之后的借用值选择第一操作数数据或第二操作数数据。例如,当移位量为0时,由于借用=0,因此元件电路element#0选择第一操作数数据op1。当移位量为1、2和3时,由于借用=1,因此元件电路element#0选择第二操作数数据op2。其他元件电路是相同的。
另一方面,如图10C所示,当移位量为0至3时,元件电路element#0根据总和sum[1:0]来分别选择元件电路element#0至element#3的数据。该选择由元件数据选择器S1进行。其他元件电路是相同的。注意,图10C中的和与图10A中所选的元件编号相同。
因此,图8和图9所示的元件连接左移算术电路AL10-2如以下在也参照图10A、图10B和图10C时所阐述的那样工作。首先,当移位量为0时,在元件电路element#0至element#3中,操作数选择器S3根据作为借用值的操作数开关信号op_switch=0000来选择第一操作数数据op1。元件数据选择器S1根据总和sum=0123来分别选择元件电路element#0、element#1、element#2和element#3。
当移位量为1时,根据作为借用值的操作数开关信号op_switch=1000,元件电路element#0的操作数选择器S3选择第二操作数数据op2。元件电路element#1至element#3的操作数选择器S3选择第一操作数数据op1。元件电路element#0至element#3的元件数据选择器S1根据总和sum=1230来分别选择元件电路element#1、element#2、element#3和element#0。在这种情况下,element#0的第二操作数数据op2由元件电路element#3来选择。
类似地,当移位量为2时,根据作为借用值的操作数开关信号op_switch=1100,元件电路element#0和element#1的操作数选择器S3选择第二操作数数据op2。元件电路element#2和element#3的操作数选择器S3选择第一操作数数据op1。元件电路element#0至element#3的元件数据选择器S1根据总和sum=2301来分别选择元件电路element#2、element#3、element#0和element#1的数据。在这种情况下,element#0和element#1的第二操作数数据op2由元件电路element#2和element#3来选择。
当移动量为3时同样适用。
在元件连接左移算术电路AL10-2中,由于掩蔽选择器S2的选择信号mask根据控制码ctrl_code=1总是被固定为0,因此掩蔽功能不起作用。因此,第二操作数数据op2的最高有效位op2[63]和最低有效的2位op2[1:0]不具有掩蔽功能和选择功能。在元件连接左移算术电路AL10-2中,元件连接左移功能主要通过操作数选择器S3和元件数据选择器S1来实现。
图8和图9所示的元件连接左移算术电路使用图6和图7所示的全元件排列算术电路AL10-1的操作数选择器S3和数据总线DB以及图8和图9中所添加的操作数选择器S3来进行参照图3所阐述的元件连接左移功能。在元件连接左移功能中,在任何移位量下,存储在元件的结果元件中的数据是第一操作数数据或第二操作数数据。因此,由选择器部100的前级处的操作数选择器S3来选择第一操作数数据或第二操作数数据以减少用于发送至选择器部分100中的元件数据选择器S1的数据总线。由数据总线DB和元件数据选择器S1来进行移位运算以减少重新需要的移位电路。
[元件求和掩蔽算术电路AL10-3]
图11是示出进行元件求和掩蔽的算术电路AL10-3的左半侧的图。图12是示出进行元件求和掩蔽的算术电路AL10-3的右半侧的图。算术电路AL10-3具有总体上参照图4所阐述的将元件的有效位进行相加并且将有效位存储在所有元件中的功能。在图11和图12所示的算术电路AL10-3中,除了图6和图7所示的全元件排列算术电路AL10-1的部件以外,选择器部100还包括有效位加法器AD-1、根据控制码ctrl_code=1和元件求和掩蔽运算信号esummd_op=1来选择有效位加法器AD-1的总和sum2[2:0]的总和选择器S5以及掩蔽信号mask和元件求和掩蔽运算信号esummd_op被输入至其的或门OR1。掩蔽选择器S2根据经由或门OR1提供的元件求和掩蔽运算信号esummd_op=1来选择全零数据“0”。
当控制码ctrl_code为1时,算术电路AL10-3作用为进行元件求和掩蔽的算术电路。当控制码ctrl_code为0时,算术电路AL10-3作用为图6和图7所示的全元件排列算术电路。
当控制码ctrl_code为1时,算术电路AL10-3作用为元件求和掩蔽算术电路AL10-2。在这种情况下,不使用第一操作数数据op1以及第二操作数数据的最低有效的2位op2[1:0]。仅将第二操作数数据的最高有效位op2[63]用作表示元件的有效性的位。因此,最低有效的2位op2[1:0]的请求元件信号want_el[1:0]不起作用。经由或门OR1提供的元件求和掩蔽信号esummd_op=1被提供给掩蔽选择器S2。掩蔽选择器S2选择与掩蔽信号mask无关的全零数据“0”。掩蔽功能被有效进行。根据元件求和掩蔽运算信号esummd_op=1,总和选择器S5使用有效位加法器AD-1的总和sum2[2:0]来覆写全零数据“0”。
注意,覆写总和的总和选择器S5可以被设置在掩蔽选择器S2的全零数据的输入端子的前级中。在这种情况下,掩蔽选择器S2选择通过使用有效位的总和sum2[2:0]来覆写全零数据而获得的输入并且将该输入输出至X5寄存器X5-R。
如上所述,当算术电路AL10-3作用为元件求和掩蔽算术电路AL10-2时,元件数据选择器S1不起作用。然而,由于esummd_op=1(ctrl_code=1),因此掩蔽选择器S2总是具有掩蔽功能。另外设置的总和选择器S5选择有效位加法器AD-1的总和sum2[2:0]并且使用总和sum2[2:0]来覆写最低有效的3位全零数据。包括总和sum2[2:0]的63位的数据被输出至X5寄存器X5-R。因此,图11和图12所示的算术电路使用图6和图7所示的全元件排列算术电路的掩蔽选择器S2以及所添加的总和选择器S5实现了元件求和掩蔽功能。
[元件压缩算术电路AL10-4]
图13是示出进行元件压缩的算术电路AL10-4的左半侧的图。图14是示出进行元件压缩的算术电路AL10-4的右半侧的图。算术电路AL10-4具有总体上参照图5所阐述的采集在左侧的元件中的有效元件的数据并且存储有效元件的数据的功能。在图13和图14所示的算术电路AL10-4中,除了图6和图7所示的全元件排列算术电路AL10-1的部件以外,选择器部分100还包括压缩解码器Compress以及第一压缩选择器S6和第二压缩选择器S7。
当控制码ctrl_code为1时,算术电路AL10-4作用为进行对元件数据的压缩的算术电路。当控制码为0时,算术电路AL10-4作用为图6和图7所示的全元件排列算术电路。
当控制码ctrl_code为1时,元件压缩运算信号ecpd_op=1。第一压缩选择器S6和第二压缩选择器S7分别选择压缩解码器Compress的解码信号cmpr#[1:0]和cmpr#[2]。因此,选择器S6不使用第二操作数数据的最低有效的2位op2[1:0],并且被输入至压缩解码器Compress的最高有效位op2[63]作用为元件的有效位。
压缩解码器Compress根据有效位的组合来生成要分别被输出至4个元件的4个解码信号cmpr[2:0]。解码信号cmpr#[2]是指示数据是否被掩蔽的信号。解码信号cmpr#[1:0]是指示哪个元件数据被选择的信号。
第二压缩选择器S7选择解码信号cmpr#[2]而不选择作为op2[63]的掩蔽信号mask。此外,第一压缩选择器S6选择解码信号cmpr#[1:0]而不选择请求元件信号want_el[1:0]。因此,元件数据选择器S1基于解码信号cmpr#[1:0]来选择元件数据。掩蔽选择器S2根据解码信号cmpr#[2]来选择全零数据。
图15A至图15D是示出压缩解码器Compress的逻辑值表的图。在图15A至图15D中,示出了关于element#0至element#3的解码器的逻辑值表。逻辑值表中的“X”指示1或0。
例如,在element#0的解码器中,当element#0的有效位为1(el#0=1)时,解码信号cmpr0[2]=0并且cmpr[1:0]=00。解码器选择element#0的数据并且将该数据存储在结果寄存器R3中。类似地,当element#0的有效位为0并且element#1的有效位为1(el#0=0,el#1=1)时,解码信号cmpr0[2]=0并且cmpr[1:0]=01。解码器选择element#1的数据并且将该数据存储在结果寄存器R3中。当el#0=0,el#1=0并且el#2=1时以及当el#0=0,el#1=0并且el#2=0,el#3=1时,解码器分别选择element#2的数据以及element#3的数据。否则(默认),解码信号cmpr0[2]=1,并且全零数据“0”被输出至结果寄存器R3。
其他element#1、element#2和element#3的解码器是相同的并且能够根据图15A至图15D中的逻辑值表来理解。因此,省略了对解码器的阐述。
如上所述,图13和图14所示的算术电路使用元件数据选择器S1、掩蔽选择器S2、图6和图7所示的全元件排列算术电路的数据库DB、压缩解码器Compress以及第一压缩选择器S6和第二压缩选择器S7来实现元件压缩功能。
[具有所有功能的算术电路]
以上阐述了本实施例中的4种算术电路。在以上阐述中,阐述了全元件排列算术电路AL10-1、元件连接左移算术电路AL10-2、元件求和掩蔽算术电路AL10-3和元件压缩算术电路AL10-4的组合。
阐述了具有所有功能的算术电路,该算术电路根据控制信号来切换4种算术电路的功能。
图16是示出本实施例中的具有所有功能的算术电路的左侧的图。图17是示出本实施例中的具有所有功能的算术电路的右侧的图。图16和图17所示的具有所有功能的算术电路被配置成能够根据2位的控制码ctrl_code[1:0]来切换4种功能。控制码的分配如以下所描述的那样。
Controlcodectrl_code[1:0]=00:全元件排列
Controlcodectrl_code[1:0]=01:元件连接左移
Controlcodectrl_code[1:0]=10:元件求和掩蔽
Controlcodectrl_code[1:0]=11:元件压缩
具有所有功能的算术电路在选择器部100中包括元件数据选择器S1、掩蔽选择器S2、总和选择器S5、第一压缩选择器S6和第二压缩选择器S7、有效位加法器AD-1以及压缩解码器Compress。此外,具有所有功能的算术电路在元件电路element#0至element#3的输入部中包括用于元件连接左移的加法器CSL_Adder、操作数选择器S3、元件选择器S4以及开关SW1和SW2。具有所有功能的算术电路包括解码器D,解码器中的一个解码器对控制码ctrl_code[1:0]进行解码并且生成元件连接左移运算信号ecsld_op以及生成元件求和掩蔽运算信号esummd_op的其他od。根据附图中的解码器D的输出信号可以理解哪个进行了解码。注意,未生成图13和图14中的元件压缩运算信号ecpd_op,而元件压缩运算信号ecpd_op和元件求和掩蔽运算信号esummd_op被控制码ctrl_code[1:0]的高阶位[1]替换。
当控制码ctrl_code[1:0]=00时,具有所有功能的算术电路操作为进行全元件排列的算术电路。由于控制码是“00”,因此所有附加的选择器S3至S7对选择信号“0”侧进行选择。因此,算术电路作用为图6和图7所示的全元件排列算术电路AL10-1。
当控制码ctrl_code[1:0]=01时,具有所有功能的算术电路操作为进行元件连接左移的算术电路。由于控制码是“01”,因此元件连接左移运算信号ecsld_op为1。请求元件选择器S4选择在“1”侧的加法器的总和sum[1:0]。开关SW1将加法器的借用值op_switch输出至操作数选择器S3。开关SW2将掩蔽信号mask设置为“0”。根据控制码的高阶位ctrl_code[1]=0,总和选择器S5选择“0”。第一压缩选择器S6和第二压缩选择器S7分别选择在“0”侧的掩蔽信号mask以及请求元件信号want_el[1:0]。因此,算术电路操作为图8和图9所示的元件连接左移算术电路AL10-2。
当控制码ctrl_code[1:0]=10时,具有所有功能的算术电路操作为进行元件求和掩蔽的算术电路。控制码是“10”,元件求和掩蔽运算信号esummd_op为“1”,控制码的高阶位ctrl_code[1]=1,以及所有选择器S5、S6和S7选择“1”侧。元件连接左移运算信号ecsld_op=0,开关SW1的输出为0,以及选择器S3选择“0”侧。开关SW2的输出为有效位op2[63]。选择器S4输出请求元件位op2[1:0]。因此,算术电路操作为图11和图12所示的元件求和掩蔽算术电路AL10-3。
注意,与图11和图12所示的算术电路不同,选择器S6选择“1”侧并且输出压缩解码器的解码信号cmpr[1:0]。元件数据选择器S1基于解码信号cmpr[1:0]来选择元件的数据。然而,由于或门OR1根据元件求和掩蔽运算信号esummd_op=1来输出“1”并且选择器S7根据控制码的高阶位ctrl_code[1]=1来选择或门的输出“1”,因此掩蔽选择器S2掩蔽全零数据“0”。之后,选择器S5根据请求求和掩蔽运算信号esummd_op1来选择有效位总和sum2[2:0]并且使用该有效位总和来覆写数据。
也就是说,通过选择器S6的元件请求信号want_el[1:0]不是在“元件求和掩蔽”期间提出的。因此,如果控制码的高阶位ctrl_code[1]=1(在“元件求和掩蔽”或“元件压缩”的情况下),则可以减少电路例如用于通过选择选择器S6的“1”侧来生成元件压缩运算信号ecpd_op的解码器。
最后,当控制码ctrl_code[1:0]=11时,具有所有功能的算术电路操作为进行元件压缩的算术电路。控制码是“11”,元件求和掩蔽运算信号esummd_op为“0”,控制码的高阶位ctrl_code[1]=1,选择器S5选择“0”侧,并且选择器S6和S7选择“1”侧。元件连接左移运算信号ecsld_op=0,开关SW1的输出为0,并且选择器S3选择“0”侧。开关SW2的输出是有效位op2[63],并且选择器S4输出请求元件位op2[1:0]。因此,算术电路操作为图13和图14所示的元件压缩算术电路AL10-4。
如上所述,根据本实施例,包括三个或更多个SIMD的算术元件的处理器包括横越多个SIMD算术元件的元件间算术电路AL10。元件间算术电路AL10被配置成能够根据控制码切换、替换、传输和压缩大量SIMD算术元件之中的数据以及算术功能例如对数据的求和的整合。因此,可以充分利用SIMD运算器的高速处理。
Claims (14)
1.一种算术电路,包括:
第一元件电路至第N元件电路,其中,N是等于或大于3的整数,所述第一元件电路至所述第N元件电路分别包括:
输入电路,所述输入电路被配置成输入第一操作数数据和第二操作数数据;以及
元件数据选择器,所述元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
数据总线,所述数据总线被配置成将通过所述元件电路输入的所述操作数数据从所述元件电路的所述输入电路供应给所述元件电路的所述元件数据选择器,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据并且输出所述第一操作数数据,以及
所述第一元件电路至所述第N元件电路分别包括:
操作数选择器,所述操作数选择器被配置成在所述控制信号处于第二状态时基于所述元件电路的元件编号和移位量来选择所述第一操作数数据或所述第二操作数数据,并且将所选择的操作数数据输出至所述数据总线;以及
用于元件连接左移的加法器,所述用于元件连接左移的加法器被配置成基于所述元件电路的所述元件编号和所述移位量来生成所述请求元件信号。
2.根据权利要求1所述的算术电路,还包括:
有效位加法器,所述有效位加法器被配置成在所述控制信号处于第三状态时将包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位进行相加,其中,
所述第一元件电路至所述第N元件电路分别包括总和选择器,所述总和选择器被配置成在所述控制信号处于第三状态时输出通过所述有效位加法器输出的总和而不输出所述元件数据选择器的输出。
3.根据权利要求1所述的算术电路,其中,
所述第一元件电路至所述第N元件电路分别包括掩蔽选择器,所述掩蔽选择器被配置成选择所述元件数据选择器的输出或者全零数据,
所述算术电路还包括压缩解码器,所述压缩解码器被配置成在所述控制信号处于第四状态时基于包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位来生成压缩解码信号,所述压缩解码信号包括针对所述第一元件电路至所述第N元件电路中的每个元件电路的掩蔽信号和元件数据选择信号,以及
所述第一元件电路至所述第N元件电路分别包括:
第一压缩选择器,所述第一压缩选择器被配置成在所述控制信号处于所述第四状态时选择所述元件数据选择信号而不选择所述请求元件信号;以及
第二压缩选择器,所述第二压缩选择器被配置成将所述掩蔽信号输出至所述掩蔽选择器并且使所述掩蔽选择器选择所述全零数据。
4.根据权利要求2所述的算术电路,其中,
所述第一元件电路至所述第N元件电路分别包括掩蔽选择器,所述掩蔽选择器被配置成选择所述元件数据选择器的输出或者全零数据,
所述算术电路还包括压缩解码器,所述压缩解码器被配置成在所述控制信号处于第四状态时基于包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位来生成压缩解码信号,所述压缩解码信号包括针对所述第一元件电路至所述第N元件电路中的每个元件电路的掩蔽信号和元件数据选择信号,以及
所述第一元件电路至所述第N元件电路分别包括:
第一压缩选择器,所述第一压缩选择器被配置成在所述控制信号处于所述第四状态时选择所述元件数据选择信号而不选择所述请求元件信号;以及
第二压缩选择器,所述第二压缩选择器被配置成将所述掩蔽信号输出至所述掩蔽选择器并且使所述掩蔽选择器选择所述全零数据。
5.根据权利要求1所述的算术电路,还包括:
第一SIMD算术元件至第NSIMD算术元件,所述第一SIMD算术元件至所述第NSIMD算术元件分别包括:
第一操作数寄存器,所述第一操作数数据被输入至所述第一操作数寄存器;
第二操作数寄存器,所述第二操作数数据被输入至所述第二操作数寄存器;
算术运算器,所述算术运算器被配置成接收所述第一操作数数据的输入和所述第二操作数数据的输入并且进行对所述第一操作数数据和所述第二操作数数据的算术运算;以及
结果寄存器,所述结果寄存器被配置成存储通过所述算术运算器输出的算术结果。
6.一种算术电路,包括:
第一元件电路至第N元件电路,其中,N是等于或大于3的整数,所述第一元件电路至所述第N元件电路分别包括:
输入电路,所述输入电路被配置成输入第一操作数数据和第二操作数数据;以及
元件数据选择器,所述元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
数据总线,所述数据总线被配置成将通过所述元件电路输入的所述操作数数据从所述元件电路的所述输入电路供应给所述元件电路的所述元件数据选择器,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据并且输出所述第一操作数数据,
所述算术电路还包括有效位加法器,所述有效位加法器被配置成在所述控制信号处于第三状态时将包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位进行相加,以及
所述第一元件电路至所述第N元件电路分别包括总和选择器,所述总和选择器被配置成在所述控制信号处于第三状态时输出通过所述有效位加法器输出的总和而不输出所述元件数据选择器的输出。
7.根据权利要求6所述的算术电路,还包括:
第一SIMD算术元件至第NSIMD算术元件,所述第一SIMD算术元件至所述第NSIMD算术元件分别包括:
第一操作数寄存器,所述第一操作数数据被输入至所述第一操作数寄存器;
第二操作数寄存器,所述第二操作数数据被输入至所述第二操作数寄存器;
算术运算器,所述算术运算器被配置成接收所述第一操作数数据的输入和所述第二操作数数据的输入并且进行对所述第一操作数数据和所述第二操作数数据的算术运算;以及
结果寄存器,所述结果寄存器被配置成存储通过所述算术运算器输出的算术结果。
8.一种算术电路,包括:
第一元件电路至第N元件电路,其中,N是等于或大于3的整数,所述第一元件电路至所述第N元件电路分别包括:
输入电路,所述输入电路被配置成输入第一操作数数据和第二操作数数据;
元件数据选择器,所述元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
掩蔽选择器,所述掩蔽选择器被配置成选择所述元件数据选择器的输出或者全零数据;以及
数据总线,所述数据总线被配置成将通过所述元件电路输入的所述操作数数据从所述元件电路的所述输入电路供应给所述元件电路的所述元件数据选择器,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据并且输出所述第一操作数数据,
当所述控制信号处于第一状态时,所述掩蔽选择器选择所述元件数据选择器的输出,
所述算术电路还包括压缩解码器,所述压缩解码器被配置成在所述控制信号处于第四状态时基于包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位来生成压缩解码信号,所述压缩解码信号包括针对所述第一元件电路至所述第N元件电路中的每个元件电路的掩蔽信号和元件数据选择信号,以及
所述第一元件电路至所述第N元件电路分别包括:
第一压缩选择器,所述第一压缩选择器被配置成在所述控制信号处于所述第四状态时选择所述元件数据选择信号而不选择所述请求元件信号;以及
第二压缩选择器,所述第二压缩选择器被配置成将所述掩蔽信号输出至所述掩蔽选择器并且使所述掩蔽选择器选择所述全零数据。
9.根据权利要求8所述的算术电路,还包括:
第一SIMD算术元件至第NSIMD算术元件,所述第一SIMD算术元件至所述第NSIMD算术元件分别包括:
第一操作数寄存器,所述第一操作数数据被输入至所述第一操作数寄存器;
第二操作数寄存器,所述第二操作数数据被输入至所述第二操作数寄存器;
算术运算器,所述算术运算器被配置成接收所述第一操作数数据的输入和所述第二操作数数据的输入并且进行对所述第一操作数数据和所述第二操作数数据的算术运算;以及
结果寄存器,所述结果寄存器被配置成存储通过所述算术运算器输出的算术结果。
10.一种算术电路,包括:
第一SIMD算术元件至第NSIMD算术元件,其中,N是等于或大于3的整数,所述第一SIMD算术元件至所述第NSIMD算术元件分别包括:
第一操作数寄存器,第一操作数数据被输入至所述第一操作数寄存器;
第二操作数寄存器,第二操作数数据被输入至所述第二操作数寄存器;
算术运算器,所述算术运算器被配置成接收所述第一操作数数据的输入和所述第二操作数数据的输入并且进行对所述第一操作数数据和所述第二操作数数据的算术运算;以及
结果寄存器,所述结果寄存器被配置成存储通过所述算术运算器输出的算术结果;
第一元件电路至第N元件电路,所述第一元件电路至所述第N元件电路分别包括:
输入电路,所述输入电路被配置成输入第一操作数数据和第二操作数数据;
元件数据选择器,所述元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
掩蔽选择器,所述掩蔽选择器被配置成选择所述元件数据选择器的输出或者全零数据;以及
数据总线,所述数据总线被配置成将通过所述元件电路输入的所述操作数数据从所述元件电路的所述输入电路供应给所述元件电路的所述元件数据选择器,其中,
所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据,以及
所述掩蔽选择器将通过所述掩蔽选择器选择的所述元件数据选择器的输出或所述全零数据输出至所述结果寄存器。
11.根据权利要求10所述的算术电路,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据并且输出所述第一操作数数据,
所述第一元件电路至所述第N元件电路分别包括:
操作数选择器,所述操作数选择器被配置成在所述控制信号处于第二状态时基于所述元件电路的元件编号和移位量来选择所述第一操作数数据或所述第二操作数数据并且将所选择的操作数数据输出至所述数据总线;以及
用于元件连接左移的加法器,所述用于元件连接左移的加法器被配置成基于所述元件电路的所述元件编号和所述移位量来生成所述请求元件信号。
12.根据权利要求10所述的算术电路,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据并且输出所述第一操作数数据,
所述算术电路还包括有效位加法器,所述有效位加法器被配置成在所述控制信号处于第三状态时将包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位进行相加,以及
所述第一元件电路至所述第N元件电路分别包括总和选择器,所述总和选择器被配置成在所述控制信号处于第三状态时输出通过所述有效位加法器输出的总和而不输出所述元件数据选择器的输出。
13.根据权利要求10所述的算术电路,其中,
当控制信号处于第一状态时,所述第一元件电路至所述第N元件电路中的所述元件数据选择器分别基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据,
当所述控制信号处于第一状态时,所述掩蔽选择器选择所述元件数据选择器的输出,
所述算术电路还包括压缩解码器,所述压缩解码器被配置成在所述控制信号处于第四状态时基于包括在通过所述第一元件电路至所述第N元件电路输入的所述第二操作数数据中的有效位来生成压缩解码信号,所述压缩解码信号包括针对所述第一元件电路至所述第N元件电路中的每个元件电路的掩蔽信号和元件数据选择信号,以及
所述第一元件电路至所述第N元件电路分别包括:
第一压缩选择器,所述第一压缩选择器被配置成在所述控制信号处于所述第四状态时选择所述元件数据选择信号而不选择所述请求元件信号;以及
第二压缩选择器,所述第二压缩选择器被配置成将所述掩蔽信号输出至所述掩蔽选择器并且使所述掩蔽选择器选择所述全零数据。
14.一种用于算术电路的控制方法,所述算术电路包括:
第一SIMD算术元件至第NSIMD算术元件,其中,N是等于或大于3的整数,所述第一SIMD算术元件至所述第NSIMD算术元件分别包括:
第一操作数寄存器,第一操作数数据被输入至所述第一操作数寄存器;
第二操作数寄存器,第二操作数数据被输入至所述第二操作数寄存器;
算术运算器,所述算术运算器被配置成接收所述第一操作数数据的输入和所述第二操作数数据的输入并且进行对所述第一操作数数据和所述第二操作数数据的算术运算;以及
结果寄存器,所述结果寄存器被配置成存储通过所述算术运算器输出的算术结果;
第一元件电路至第N元件电路,所述第一元件电路至所述第N元件电路分别包括:
输入电路,所述输入电路被配置成输入第一操作数数据和第二操作数数据;
元件数据选择器,所述元件数据选择器被配置成基于请求元件信号来选择元件电路中的任何元件电路的操作数数据;以及
掩蔽选择器,所述掩蔽选择器被配置成选择所述元件数据选择器的输出或者全零数据;以及
数据总线,所述数据总线被配置成将通过所述元件电路输入的所述操作数数据从所述元件电路的所述输入电路供应给所述元件电路的所述元件数据选择器,
所述方法包括:
通过分别包括在所述第一元件电路至所述第N元件电路中的所述元件数据选择器基于包括在所述第二操作数数据中的所述请求元件信号来选择所述元件电路中的任何元件电路的所述第一操作数数据,以及
将通过所述掩蔽选择器选择的所述元件数据选择器的输出或所述全零数据输出至所述结果寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014-207364 | 2014-10-08 | ||
JP2014207364A JP6308095B2 (ja) | 2014-10-08 | 2014-10-08 | 演算回路及び演算回路の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105512092A true CN105512092A (zh) | 2016-04-20 |
Family
ID=54035145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510594336.XA Pending CN105512092A (zh) | 2014-10-08 | 2015-09-17 | 算术电路和用于算术电路的控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10592247B2 (zh) |
EP (1) | EP3007060A3 (zh) |
JP (1) | JP6308095B2 (zh) |
CN (1) | CN105512092A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052483A (zh) * | 2017-12-29 | 2018-05-18 | 南京地平线机器人技术有限公司 | 用于数据统计的电路单元、电路模块和装置 |
CN111158756A (zh) * | 2019-12-31 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019074185A1 (en) * | 2017-10-12 | 2019-04-18 | Samsung Electronics Co., Ltd. | ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF |
US20210133546A1 (en) | 2019-10-31 | 2021-05-06 | SK Hynix Inc. | Arithmetic devices for neural network |
US11954457B2 (en) | 2019-10-31 | 2024-04-09 | SK Hynix Inc. | Arithmetic devices for neural network including a function storage circuit and an activation function circuit |
US11915125B2 (en) * | 2019-10-31 | 2024-02-27 | SK Hynix Inc. | Arithmetic devices for neural network |
US12014184B2 (en) | 2019-10-31 | 2024-06-18 | SK Hynix Inc. | Arithmetic devices for neural network including an input distribution signal generation circuit, an output distribution signal generation circuit, and an output distribution signal compensation circuit |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070043795A1 (en) * | 2005-08-16 | 2007-02-22 | International Business Machines Corporation | Method and apparatus for performing alignment shifting in a floating-point unit |
US20090083519A1 (en) * | 2007-09-20 | 2009-03-26 | Core Logic, Inc. | Processing Element (PE) Structure Forming Floating Point-Reconfigurable Array (FP-RA) and FP-RA Control Circuit for Controlling the FP-RA |
US20100174891A1 (en) * | 2007-03-29 | 2010-07-08 | Shohei Nomoto | Reconfigurable simd processor and method for controlling its instruction execution |
US20110185151A1 (en) * | 2008-05-20 | 2011-07-28 | Martin Whitaker | Data Processing Architecture |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07110798A (ja) * | 1993-08-19 | 1995-04-25 | Kofu Nippon Denki Kk | 並列処理システム |
JP2002229962A (ja) | 2001-02-06 | 2002-08-16 | Ricoh Co Ltd | 総和値とピーク値を検出するsimd型マイクロプロセッサ |
US20040254965A1 (en) | 2001-03-02 | 2004-12-16 | Eric Giernalczyk | Apparatus for variable word length computing in an array processor |
-
2014
- 2014-10-08 JP JP2014207364A patent/JP6308095B2/ja active Active
-
2015
- 2015-08-24 US US14/833,602 patent/US10592247B2/en active Active
- 2015-08-27 EP EP15182753.2A patent/EP3007060A3/en not_active Withdrawn
- 2015-09-17 CN CN201510594336.XA patent/CN105512092A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070043795A1 (en) * | 2005-08-16 | 2007-02-22 | International Business Machines Corporation | Method and apparatus for performing alignment shifting in a floating-point unit |
US20100174891A1 (en) * | 2007-03-29 | 2010-07-08 | Shohei Nomoto | Reconfigurable simd processor and method for controlling its instruction execution |
US20090083519A1 (en) * | 2007-09-20 | 2009-03-26 | Core Logic, Inc. | Processing Element (PE) Structure Forming Floating Point-Reconfigurable Array (FP-RA) and FP-RA Control Circuit for Controlling the FP-RA |
US20110185151A1 (en) * | 2008-05-20 | 2011-07-28 | Martin Whitaker | Data Processing Architecture |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052483A (zh) * | 2017-12-29 | 2018-05-18 | 南京地平线机器人技术有限公司 | 用于数据统计的电路单元、电路模块和装置 |
US11386040B2 (en) | 2017-12-29 | 2022-07-12 | Nanjing Horizon Robotics Technology Co., Ltd. | Circuit unit, circuit module and apparatus for data statistics |
CN111158756A (zh) * | 2019-12-31 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
US11016769B1 (en) | 2019-12-31 | 2021-05-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing information |
CN111158756B (zh) * | 2019-12-31 | 2021-06-29 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160103680A1 (en) | 2016-04-14 |
JP2016076165A (ja) | 2016-05-12 |
JP6308095B2 (ja) | 2018-04-11 |
EP3007060A2 (en) | 2016-04-13 |
EP3007060A3 (en) | 2016-11-02 |
US10592247B2 (en) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512092A (zh) | 算术电路和用于算术电路的控制方法 | |
JP6371451B2 (ja) | コンパクトな演算処理要素を用いたプロセッシング | |
CN100541425C (zh) | 标量/矢量处理器 | |
CN101218560B (zh) | 用于可配置的处理的设备和方法 | |
DE102018005181A1 (de) | Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen | |
EP2758866B1 (en) | A processing device and a swizzle pattern generator | |
KR20220054681A (ko) | 재구성가능한 연산 엔진 회로 | |
DE102018126150A1 (de) | Einrichtung, verfahren und systeme für multicast in einem konfigurierbaren räumlichen beschleuniger | |
CN105264779B (zh) | 使用simd指令的数据压缩和解压 | |
EP1267257A2 (en) | Conditional execution per data path slice | |
DE60021623T2 (de) | Multiplizierer und verschiebungsanordnung mit benutzung von vorzeichenzifferzahlen darstellung | |
US20070250688A1 (en) | Simd Type Parallel Arithmetic Device, Processing Element and Control System of Simd Type Parallel Arithmetic Device | |
CN112784973A (zh) | 卷积运算电路、装置以及方法 | |
DE4430195B4 (de) | Verfahren zur Auswertung von Booleschen Ausdrücken | |
US9933996B2 (en) | Selectively combinable shifters | |
CN110769263A (zh) | 一种图像压缩方法、装置及终端设备 | |
Panchbhaiyye et al. | An efficient FIFO based accelerator for convolutional neural networks | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN101401088B (zh) | 具有高速pe间数据再配置功能的处理器阵列系统 | |
CN110944212A (zh) | 一种视频帧重构方法、装置及终端设备 | |
US20230195388A1 (en) | Register file virtualization : applications and methods | |
CN115543254A (zh) | 一种排序电路、排序方法及电子设备 | |
Hwang et al. | Nonlinear integer goal programming applied to optimal system reliability | |
TW201419140A (zh) | 可重新配置的指令編碼方法、執行方法及電子裝置 | |
CN111836051B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160420 |
|
WD01 | Invention patent application deemed withdrawn after publication |