CN101201736B - 数学运算处理装置 - Google Patents
数学运算处理装置 Download PDFInfo
- Publication number
- CN101201736B CN101201736B CN2007101994391A CN200710199439A CN101201736B CN 101201736 B CN101201736 B CN 101201736B CN 2007101994391 A CN2007101994391 A CN 2007101994391A CN 200710199439 A CN200710199439 A CN 200710199439A CN 101201736 B CN101201736 B CN 101201736B
- Authority
- CN
- China
- Prior art keywords
- condition code
- register
- mathematical operation
- value
- operand
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
公开了一种数学运算处理装置,通过其基于多个数学运算的条件代码进行的操作数的供应可以高速地执行。该数学运算处理装置包括多个计算单元,被配置为彼此不同地进行不同的数学运算,并产生这些数学运算的数学运算结果和条件代码。条件代码集合寄存器由计算单元同时产生的条件代码作为条件代码集合。条件代码转换部分对条件代码集合进行预定转换,并输出转换结果作为转换条件代码集合。操作数供应部分基于转换条件代码集合供应用于计算单元中的数学运算的操作数。
Description
技术领域
本发明涉及数学运算处理装置,并且更具体地,涉及其中多个计算单元彼此同步地单独进行数学运算的数学运算处理装置。本发明还涉及用于这种数学运算的处理方法和使得计算机执行该处理方法的程序。
背景技术
在近年来的处理器体系结构中,经常提出缩短机器周期并增加每个机器周期所处理的指令数,以实现有效性能的改进。作为一种这样的处理器体系结构,VLIW(极长指令字)系统是公知的。在VLIM系统中,将多个数学运算等分配在一个指令中,并同时执行。
通常,当处理器执行数学运算时,与数学运算的结果一起输出数学运算的状态,作为条件代码。基于条件代码(例如)可以检测到数字值的一致性、数学关系等。
根据以往的VLIM系统的处理器体系结构,选择由多个指令处理部分的一些生成的条件代码,并基于所选择的条件代码执行条件分支(branching)指令或一些其他条件指令。例如,在日本专利特开平9-91141中公开了所述类型的处理器体系结构(图1)。
发明内容
根据过去的VLIW系统的处理器体系结构,可以将同时执行的数学运算的条件代码之一用作执行条件分支指令等的分支条件。
但是,当涉及复杂的判断条件时,必须存储各个数学运算的条件代码,并单独进行组合条件代码的数学运算,然后产生后续指令的操作数。此外,有时分支目标地址视条件代码而不同,并且在这种情况下,必须基于数学运算的条件代码产生分支指令的操作数,并确定所产生的分支指令的分支目标地址。当提出这种附加的数学运算时,有可能损害VLIW系统的这种优势:同时执行多个数学运算,以实现高速运算。
因此,需要提供一种数学运算处理装置,通过该装置,基于多个数学运算的条件代码进行的操作数的供应可以高速地执行。
根据本发明的实施例,提供了一种数学运算处理装置,其包括:多个计算元件,被配置为彼此不同地进行不同的数学运算,并产生这些数学运算的数学运算结果和条件代码;条件代码集合寄存器,被配置为保存由计算单元同时产生的条件代码,作为条件代码集合;条件代码转换部分,被配置为对条件代码集合进行预定转换,并输出转换结果,作为转换条件代码集合;以及操作数供应部分,被配置为基于转换条件代码集合供应用于计算元件中的数学运算的操作数。在该数学运算处理装置中,将由多个不同的数学运算同时产生的条件代码设置为条件代码集合,并对该条件代码集合进行预定转换。然后,基于转换结果供应操作数。
根据本发明的另一实施例,提供了一种数学运算处理装置,其包括:多个计算元件,被配置为彼此不同地进行不同的数学运算,并产生这些数学运算的数学运算结果和条件代码;条件代码集合寄存器,被配置为保存由计算元件产生的条件代码,作为条件代码集合;条件代码写入部分,被配置为使得由条件代码集合寄存器来保存在条件代码集合寄存器中所保存的条件代码集合的一部分和由计算单元同时产生的条件代码的一部分,作为新的条件代码集合;条件代码转换部分,被配置为对条件代码集合进行预定转换,并输出转换结果,作为转换条件代码集合;以及操作数供应部分,被配置为基于转换条件代码集合供应用于计算单元中的数学运算的操作数。在该数学运算处理装置中,将由多个计算单元产生的条件代码设置为条件代码集合,并对该条件代码集合进行预定转换。然后,基于转换结果供应操作数。
根据本发明的另一实施例,提供了一种数学运算处理装置,其包括:多个计算元件,被配置为彼此不同地进行不同的数学运算,并产生这些数学运算的数学运算结果和条件代码;屏蔽寄存器,被配置为保存代表是否应该对每个条件代码进行屏蔽数学运算的屏蔽位;屏蔽计算单元,被配置为根据屏蔽寄存器对每个条件代码进行屏蔽计算运算;反转寄存器,被配置为保存代表是否应该对由屏蔽计算单元处理过的每个条件代码进行反转处理的反转位;反转处理器,被配置为根据反转寄存器对每个由屏蔽计算单元处理的条件代码进行反转处理;比较样式寄存器,被配置为比较由反转处理器处理的条件代码和比较样式寄存器中所保存的样式;转换表,被配置为保存与由反 转处理器处理的条件代码的组合对应的转换条件代码集合;选择器,被配置为响应于所述比较器的比较结果、由所述反转处理器处理过的条件代码、或由所述反转处理器处理过的条件代码的组合,而选择从所述转换表中读出的转换条件代码集合中的一个;以及操作数供应部分,被配置为基于比较器的输出供应用于计算元件中的数学运算的操作数。在该数学运算处理装置中,将由多个不同的数学运算产生的条件代码设置为条件代码集合,并对该条件代码集合进行屏蔽运算处理、反转处理、比较处理和表格转换处理。然后,基于这些处理的一个得到的值供应操作数。
根据本发明的另一实施例,提供了一种数学运算处理装置,其包括:指令存储器,被配置为保存包括了多个指令的程序;指令抽取/解码器,被配置为从指令存储器中提取指令,并解码该指令;多个计算元件,被配置为基于解码结果彼此不同地进行不同的数学运算,并产生这些数学运算的数学运算结果和条件代码;分支处理部分,被配置为基于解码结果确定将由指令抽取/解码器提取的指令;数据存储器;加载/存储处理部分,被配置为访问数据存储器,以从数据存储器加载必要数据或将必要数据存储到数据存储器中;条件代码集合寄存器,被配置为保存由计算元件同时产生的条件代码作为条件代码集合;条件代码转换部分,被配置为对条件代码集合进行预定转换,并输出转换结果作为转换条件代码集合;以及操作数供应部分,被配置为基于转换条件代码集合供应用于计算单元中的数学运算、由分支处理部分进行的确定、或由加载/存储处理部分进行的访问的操作数。在该数学运算处理装置中,将基于从指令存储器读出的多个指令由多个不同的数学运算同时产生的条件代码设置为条件代码集合,并对该条件代码集合进行预定转换。然后,基于转换结果供应操作数。
根据本发明的数学运算处理装置的优势在于,基于多个数学运算的条件代码进行的操作数的供应可以高速地执行。
结合附图,从以下的描述和所附的权利要求中,本发明的上述和其他目标、特征和优势将变得显而易见,在附图中,由相同的参考标号表示相同的部分或元件。
附图说明
图1是示出了根据本发明的一个实施例的数学运算处理装置的结构例子 的方框图;
图2是示出了图1所示的寄存器单元的结构例子的方框图;
图3A和3B是图示图1所示的标记写入部分的运算模式的例子的视图;
图4是示出了图2所示的设置寄存器和标记转换部分的结构例子的方框图;
图5是图示数学运算处理装置中使用的指令格式的例子的视图;
图6是示出了图1所示的操作数选择器的第一操作数选择器的结构例子的方框图;
图7是示出了图1所示的操作数选择器的第二操作数选择器的结构例子的方框图;
图8A和8B是图示了说明数学运算处理装置的操作的程序的第一例子的视图;
图9是图示用于执行图8A和8B中的第一程序例的设置寄存器的设置例子的方框图;
图10A和10B是图示了说明数学运算处理装置的操作的程序的第二例子的视图;
图11是图示用于执行图10A和10B中的第二程序例的设置寄存器的设置例子的方框图;
图12是图示用于执行图10A和10B中的第二程序例的标记转换表的设置例子的视图;
图13A和13B是图示了说明数学运算处理装置的操作的程序的第三例子的视图;
图14是图示用于执行图13A和13B中的第三程序例的设置寄存器的设置例子的方框图;
图15是图示用于执行图13A和13B中的第三程序例的标记转换表的设置例子的方框图;
图16A和16B是图示了说明数学运算处理装置的操作的程序的第四例子的视图;
图17是图示用于执行图16A和16B中的第四程序例的设置寄存器的设置例子的方框图;以及
图18是图示用于执行图16A和16B中的第四程序例的标记转换表的设 置例子的方框图。
具体实施方式
图1示出了应用本发明的数学运算处理装置的结构的例子。参考图1,所示的数学运算处理装置包括指令存储器100、指令抽取/解码器200、寄存器单元300、操作数选择器400、执行单元组500和数据存储器600。
指令存储器100保存包括了多个指令的程序。该指令存储器100可以是主存储装置的一部分,或保持部分主存储装置的指令缓冲器的部分区域。
指令抽取/解码器200从指令存储器100抽取需要的指令,并解码所抽取的指令。基于指令抽取/解码器200的解码结果,确定要由执行单元组500执行的处理内容。在本实施例中,以根据VLIW系统的处理器体系结构为前提,并假定同时抽取并解码了32位宽度的六个指令。
寄存器单元300保存执行单元组500的处理所需的数据。寄存器单元300包括多个数据寄存器以及条件代码集合寄存器,并且寄存器单元300基于指令抽取/解码器200的解码结果而进行读取或写入。
操作数选择器400将所需的操作数供应至执行单元组500。在本实施例中,假定分别将第一和第二操作数供应给执行单元组的六个单元。
执行单元组500进行数学运算处理装置的实质处理。在本实施例中,执行单元组500包括六个单元,该六个单元包括了计算单元#A501、计算单元#B511、计算单元#C521、计算单元#D531、加载/存储单元541和分支单元551。所提到的六个单元同时执行操作。
计算单元#A到#D501、511、521和531对于从操作数选择器400供应来的第一和第二操作数执行四个基本数学运算、逻辑运算等,并将数学运算结果(rd0[31:0]、rd1[31:0]、rd2[31:0]和rd3[31:0])分别输出到信号线509、519、529和539。在此,在数学运算结果中,rd0[31:0]代表作为数学运算单元#A(501)的输出的32位的数学运算结果,其中MSB是第31位并且LSB是第0位。同样,其他数学运算结果rd1[31:0]、rd2[31:0]和rd3[31:0]类似地分别代表数学运算单元#B(511)、#C(521)和#D(531)的32位的数学运算结果。
此外,每个计算单元#A到#D501、511、521和531确定数学运算处理时的状态,作为条件代码(rf0、rf1、rf2或rf3),并将其与数学运算的结果一起输出。在该例子中,rf0是计算单元#A501的1位条件代码,并且如果数学运 算结果是真则指示“1”,而如果数学运算结果是假则指示“0”。这也类似地适用于其他条件代码rf1、rf2和rf3,并且它们分别代表计算单元#B511、#C521和#D531的条件代码。
将数学运算结果rd0[31:0]、rd1[31:0]、rd2[31:0]和rd3[31:0]以及条件代码rf0、rf1、rf2和rf3供应至寄存器单元300。
加载/存储单元541基于从操作数选择器400供应来的第一和第二操作数来访问数据存储器600。如果由指令抽取/解码器200解码的指令是加载指令,那么加载/存储单元541从数据存储器600读出数据,并通过信号线549将加载数据rd4[31:0]供应至寄存器单元300。在本例中,rd4[31:0]代表32位的加载数据。如果由指令抽取/解码器200解码的指令是存储指令,那么加载/存储单元541将存储数据写入数据存储器600中。
分支单元551基于从操作数选择器400供应的第一和第二操作数判断指令序列是否包括分支。如果指令序列包括分支,那么分支单元551确定分支目标地址。将分支单元551的判断结果供应至指令抽取/解码器200,并用于下一指令的抽取和解码。
数据存储器600保存操作程序所需的数据。数据存储器600可以是主存储装置、或可以是用于部分保持主存储装置的数据高速缓存。
图2示出了本实施例中的寄存器单元300的结构的例子。参考图2,所示的寄存器单元300包括寄存器文件310、设置寄存器320、标记写入部分330和标记转换部分340。
寄存器文件310是包括多个字的寄存器组。将寄存器文件310的内容划分成数据寄存器和条件代码集合寄存器。数据寄存器保存用于执行单元组500的操作数数据。假定在本实施例中,提供了用于32位的16个字(r0到r15)的16个寄存器。条件代码集合寄存器保存条件代码集合。每个条件代码集合是与数学运算单元的数量一样多的多个条件代码。在本实施例中,假定提供了用于四个字的四个寄存器(rF[0]到rF[3]),用于保存每个字一位的标记。
设置寄存器320用于设置控制寄存器单元300的操作的信息。在本实施例中,设置寄存器320包括写模式寄存器Reg_WRMODE、屏蔽(mask)寄存器Reg_MASK[3:0],反转寄存器Reg_XOR[3:0]、比较样式寄存器Reg_MATCH[3:0]和功能寄存器Reg_FUNC[1:0]。将写模式寄存器的值供应至标记写入部分330,而将其他四个寄存器的值供应至标记转换部分340。在下 文中描述所提到的寄存器的内容。
标记写入部分330基于设置寄存器320的写模式寄存器Reg_WRMODE的值执行写入寄存器文件310的条件代码集合寄存器的标记。
标记转换部分340对寄存器文件310的条件代码集合寄存器的标记进行转换,以产生转换条件代码集合rF_out[3:0]。将设置寄存器320的屏蔽寄存器Reg_MASK[3:0],反转寄存器Reg_XOR[3:0]、比较样式寄存器Reg_MATCH[3:0]和功能寄存器Reg_FUNC[1:0]供应至标记转换部分340。
要注意,在本实施例中,写入到数据寄存器中与普通的数学运算处理装置的写入相似,因此,在此省略了相同的描述。
图3A和3B图示本实施例中的标记写入部分330的操作模式的例子。如上所述,标记写入部分330基于设置寄存器320的写模式寄存器Reg_WRMODE的值,执行写入寄存器文件310的条件代码集合寄存器的标记。当写模式寄存器Reg_WRMODE的值指示“0”时,如图3A所示,将从计算单元#A501输出的条件代码rf1保存到条件代码集合寄存器的寄存器rF[0]中。此外,将从计算单元#B511输出的条件代码rf1保存到条件代码集合寄存器的寄存器rF[1]中;将从计算单元#C521输出的条件代码rf2保存到条件代码集合寄存器的寄存器rF[2]中;并将从计算单元#D531输出的条件代码rf3保存到条件代码集合寄存器的寄存器rF[3]中。下文中将写模式寄存器Reg_WRMODE指示“0”的状态称为直达模式(through-mode)。
另一方面,当写模式寄存器Reg_WRMODE时,如图3B所示,将条件代码集合寄存器在朝向MSB的方向上向左移位。具体地,重新由寄存器rF[3]保存条件代码集合寄存器的寄存器rF[2]的值;重新由寄存器rF[2]保存条件代码集合寄存器的寄存器rF[1]的值;并重新由寄存器rF[1]保存条件代码集合寄存器的寄存器rF[0]的值。然后,由寄存器rF[0]保存从计算单元#A到#D501、511、521和531中的一个输出的条件代码。尽管在此表示了其中由条件代码集合寄存器的寄存器rF[0]保存从计算单元#A501输出的寄存器rF[0]的例子,但是可以由指令格式的某些字段来指定对象数学运算单元。在下文中将写模式寄存器Reg_WRMODE指示“1”的状态称为历史模式。
图4示出了本实施例中的设置寄存器320和标记转换部分340的结构的例子。
参考图4,设置寄存器320包括写模式寄存器Reg_WRMODE 321、屏蔽 寄存器Reg_MASK[3:0]322,反转寄存器Reg_XOR[3:0]323、比较样式寄存器Reg_MATCH[3:0]324和功能寄存器Reg_FUNC[1:0]325。
写模式寄存器321在写入到条件代码集合寄存器中时指定标记写入部分330的操作模式。在本实施例中,当写模式寄存器321指示“0”时,标记写入部分330以直达模式操作,而当写模式寄存器321指示“1”时,标记写入部分330以历史模式操作。
屏蔽寄存器322保存是否应该屏蔽条件代码集合寄存器的标记。
反转寄存器323保存是否应该反转屏蔽数学运算后的条件代码集合寄存器的标记。
比较样式寄存器324保存位样式,应该用该位样式检测反转处理后的条件代码集合寄存器的标记的一致性。
功能寄存器325保存代表标记转换部分340的功能的代码。
标记转换部分340包括逻辑与(AND)单元、逻辑异或(XOR)单元343、比较器344、标记转换表345和选择器346。
逻辑与单元342进行条件代码集合寄存器的标记和屏蔽寄存器Reg_MASK[3:0]322的相应位之间的逻辑与运算。具体地,如果屏蔽寄存器Reg_MASK[3:0]322的任意位是“0”,那么将逻辑与单元342的相应输出屏蔽为“0”,而如果屏蔽寄存器Reg_MASK[3:0]322的任意位是“1”,那么照原样从逻辑与单元342输出条件代码集合寄存器的相应位的值。
逻辑异或单元343进行逻辑与单元342的输出位和反转寄存器Reg_XOR[3:0]323的相应位之间的异或运算。具体地,如果反转寄存器Reg_XOR[3:0]323的任意位是“1”,那么将逻辑与单元342的输出位的值反转,然后从逻辑异或单元343输出,而如果反转寄存器Reg_XOR[3:0]323的任意位是“0”,那么照原样从逻辑异或单元343输出逻辑与单元342的输出的相应位的值。输出逻辑异或单元343的输出,作为信号rF_xor[3:0]。
比较器344比较逻辑异或单元343的输出和比较样式寄存器Reg_MATCH[3:0]324的位样式,并输出它们是否相互一致。具体地,如果它们相互一致,那么信号rF_m[3:0]变为“0001”(二进制数),并且信号rF_nm[3:0]变为“0000”(二进制数)。另一方面,如果它们相互不一致,那么信号rF_m[3:0]变为“0000”(二进制数),并且信号rF_nm[3:0]变为“0001”(二进制数)。
标记转换表345包括多个项目,并输出与逻辑异或单元343的输出(信 号rF_xor[3:0])对应的值,作为信号rF_tbl[3:0]。标记转换表345具有预先设置的期望的值。在本实施例中,假定保存了4位的16个项目。
选择器346选择与功能寄存器Reg_FUNC[1:0]325中保存的代码对应的值。具体地,如果功能寄存器Reg_FUNC[1:0]325中保存的代码是“0”(十进制数),那么选择信号rF_m[3:0],而如果代码是“1”(十进制数),那么选择信号rF_nm[3:0]。但是,如果代码是“2”(十进制数),那么选择信号rF_xor[3:0],而如果代码是“3”,那么选择信号rF_tbl[3:0]。然后,输出所选择的信号,作为转换条件代码集合rF_out[3:0]。
从而,对于每个位,将条件代码集合寄存器的值rf[3:0]屏蔽或异或,以产生信号rF_xor[3:0]。因此,从标记转换部分340输出信号rF_xor[3:0]和其他位样式之间的一致性或不一致性、信号rF_xor[3:0]本身和与信号rF_xor[3:0]对应的标记转换表345中的值三者中的一个。
图5图示本实施例中使用的指令格式的例子。在本实施例中,假定同时从指令存储器100中读出六个32位长度的指令,并由指令抽取/解码器200对其解码。图5所示的是一个这样的指令。
参考图5,在所示的指令格式中,指令包括指令代码字段701、标记选择字段#0 702、标记选择字段#1 703、操作数字段#0 704、操作数字段#1 705和目标字段706。
指令代码字段701保存代表指令类型的代码,并且在本实施例中具有15位宽度。
标记选择字段#0 702保存是否应该选择操作数字段#0 704作为第一操作数的信息。同时,标记选择字段#1 703保存是否应该选择操作数字段#1 705作为第二操作数的信息。当没有选择操作数字段#0 704和操作数字段#1 705的任一个时,使用标记转换部分340的输出(转换条件代码集合rF_out[3:0])。本实施例中的标记选择字段#0 702和标记选择字段#1 703具有一位宽度。
操作数字段#0 704保存指令的第一操作数。同时,操作数字段#1 705保存指令的第二操作数。本实施例中的操作数字段#0 704和操作数字段#1 705具有5位宽度。
目标字段706保存指令的目标,并且在本实施例中具有5位宽度。
图6示出了本实施例中的操作数选择器400的第一操作数选择器#0 410的结构的例子。第一操作数选择器#0 410供应执行单元组500的单元之一的 第一操作数。第一操作数选择器#0 410包括一对选择器411和412。
选择器411选择响应于标记选择字段#0 702,选择操作数字段#0 704和标记转换部分340的输出(转换条件代码集合rF_out[3:0])中的一个。在本实施例中,当标记选择字段#0 702是“0”时,选择操作数字段#0 704的值,而当标记选择字段#0 702是“1”时,选择标记转换部分340的输出。供应选择器411的输出,作为选择器412的选择信号。
选择器412响应于选择器411的输出,选择寄存器文件310的数据寄存器r0到r15的值和标记转换部分340的输出(转换条件代码集合rF_out[3:0])中的一个。在本实施例中,如果选择器411的输出具有从“0”到“15”(十进制数)的一个值,那么选择与这个值对应的数据寄存器的值,而如果选择器411的输出具有值“16”(十进制数),那么选择标记转换部分340的输出。
从而,如果标记选择字段#0 702是“0”,则提供与由操作数字段#0 704指示的值对应的数据寄存器(r0到r15)之一的值或标记转换部分340的输出,作为操作数。另一方面,如果标记选择字段#0 702是“1”,则提供由标记转换部分340的输出指示的数据寄存器(r0到r15)之一的值,作为操作数。
图7示出了本实施例中的操作数选择器400的第二操作数选择器#1 420的结构例子。参考图7,第二操作数选择器#1 420供应执行单元组500的单元中的一个的第二操作数。第二操作数选择器#1 420的结构与上文中参考图6所述的第一操作数选择器#0 410的结构类似。但是,第二操作数选择器#1420与第一操作数选择器#0 410的不同之处在于,提供标记选择字段#1 703作为选择器421的选择信号,并提供操作数字段#1 705作为当标记选择字段#1703是“0”时所选择的操作数。
以这种方式,根据本实施例,将从计算单元#A到#D 501、511、521和531输出的条件代码作为条件代码集合保存到条件代码集合寄存器中。然后,标记转换部分340转换条件代码集合寄存器中所保存的条件代码集合,并将其供应至操作数选择器400。从而,可以以高速进行基于条件代码由多个数学运算而进行的操作数的供应。
现在,结合具体例子描述本发明的数学运算处理装置的操作。
图8A和8B图示了说明本实施例的数学运算处理装置的操作的程序的第一例子。第一程序例用于同时判断四个条件,以确定是否应该分支处理。
图8A图示了以由高级语言表示的这种形式的处理对象的程序。图8A所 示的程序表明,如果数据寄存器r0的值与数据寄存器r1的值彼此一致、如果数据寄存器r2的值高于数据寄存器r3的值、如果数据寄存器r4的值与数据寄存器r5的值彼此不一致、以及如果数据寄存器r6的值等于或小于数据寄存器r7的值,那么应该将处理分支到函数func1。
图8B表示以由汇编语言表示的这种形式处理对象的程序,并同时执行在水平方向上并列的六个指令。由计算单元#A 501执行指令[EQ r0,r1];由计算单元#B 511执行指令[GT r2,r3];由计算单元#C 521执行指令[EQ r4,r5];以及由计算单元#D 531执行指令[GT r6,r7]。此外,由分支单元551执行指令[BRf func1]。
在此,指令[EQ rs,rt]是条件判断指令。如果数据寄存器rs的值与数据寄存器rt的值彼此一致(相等),那么输出“1”作为条件代码,而在任何其他情况下,输出“0”作为条件代码。同时,指令[GT rs,rt]是另一条件判断指令,并且如果数据寄存器rs的值高于数据寄存器rt的值,则输出“1”作为条件代码,而在任何其他情况下,输出“0”。此外,指令[BRf func1]是用于如果rF_out[0]是“1”则分支到函数func1的条件分支指令。rF_out[0]是标记转换部分340的LSB的值,并且func1是表示函数的顶部地址的标签。同时,指令[nop]是用于什么都不执行的不操作指令。
图9图示了用于执行图8所示的程序的设置寄存器320的设置的例子。在图9的例子中,预先将“0”设置在写模式寄存器Reg_WRMODE 321中,同时将“1111”(二进制数)设置在屏蔽寄存器Reg_MASK[3:0]322中。此外,将“1100”(二进制数)设置在反转寄存器Reg_XOR[3:0]323中,并将“1111”(二进制数)设置在比较样式寄存器Reg_MATCH[3:0]324中。此外,将“00”(二进制数)置于功能寄存器Reg_FUNC[1:0]325中。可以由软件指令进行集合值的设置。或者,可以将这些值插入指令格式中。
在本例子中,由于写模式寄存器Reg_WRMODE 321是“0”(指示直达模式),所以将用于计算单元#A到#D 501、511、521和531的数学运算的条件代码保存在条件代码集合寄存器的各个寄存器rF[0到3]中。
然后,进行条件代码集合寄存器的位的值和屏蔽寄存器Reg_MASK[3:0]322的相应位之间的逻辑与运算。在本例中,由于屏蔽寄存器Reg_MASK[3:0]322是“1111”,因而没有将任何位被屏蔽。
然后,由逻辑异或单元343进行逻辑与单元342的输出位和反转寄存器 Reg_XOR[3:0]323的相应位之间的异或运算。在本例子中,由于反转寄存器Reg_XOR[3:0]323是“1100”,因而反转高阶2位。
此外,由比较器344相互比较逻辑异或单元343的输出与比较样式寄存器Reg_MATCH[3:0]324的位样式。在本例子中,比较样式寄存器Reg_MATCH[3:0]324的位样式是“1111”。因此,如果满足条件“数据寄存器r0的值与数据寄存器r1的值彼此一致、数据寄存器r2的值高于数据寄存器r3的值、数据寄存器r4的值与数据寄存器r5的值彼此不一致、以及数据寄存器r6的值等于或小于数据寄存器r7的值”,那么信号rF_m[3:0]变为“0001”。但是,如果不满足条件,那么信号rF_m[3:0]变为“0000”。在本例子中,由于功能寄存器Reg_FUNC[1:0]325是“00”,所以选择器346选择信号rF_m[3:0]的值,并将其输出为标签rF_out[3:0]。
在指令[BRf func1]中,由于标记选择字段#0 702指示“0”,并且操作数字段#0 704指示“16”,所以将标签rF_out[3:0]的值供应至分支单元551。如果标签rF_out[3:0]是“0001”,则分支单元551将处理分支到函数func1,而如果标签rF_out[3:0]是“0000”,则不分支处理。
以这种方式,在本实施例中,在两个机器周期中执行图8所示的程序。要注意,尽管这两个机器周期不包括用于设置寄存器320的设置的时间,但是,由于在实际的程序中,在大多数情况下,在一次设置了设置寄存器320之后,重复执行主要的数学运算,因此,在该实例中,可以忽略用于设置的时间。
图10A和10B图示了说明本实施例的数学运算处理装置的操作的程序的第二例子。在第二程序例中,同时设置了四个条件,并且确定了分支目标。
图10A图示了以由高级语言表示的这种形式的处理对象的程序。图10A中所示的程序表明,如果数据寄存器r10的值高于数据寄存器r11的值,那么应该将处理分支到函数func1,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,那么将处理分支到函数func2,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,那么将处理分支到函数func3,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r14的值,那么将处理分支到函数func4。
图10B表示以由汇编语言表示的这种形式的处理对象的程序,并同时执行在水平方向上并列的六个指令。由计算单元#A 501执行指令[GT r10,r11];
由计算单元#B 511执行指令[GT r10,r12];由计算单元#C 521执行指令[GT r10,r13];以及由计算单元#D 531执行指令[GT r10,r14]。此外,由分支单元551执行指令[JMPf]。
在此,指令[JMPf]是寄存器跳转指令,用于使处理跳转到位于由标签rF_out[3:0]指定的数据寄存器中的地址。其他的指令与上文中参考图8所述的指令相同。
图11图示了用于执行图10的第二程序例的设置寄存器320的设置的例子。在图11所示的例子中,预先将“0”设置在写模式寄存器Reg_WRMODE321中;将“1111”(二进制数)设置在屏蔽寄存器Reg_MASK[3:0]322中;将“0000”(二进制数)设置在反转寄存器Reg_XOR[3:0]323中,并将“11”(二进制数)设置在功能寄存器Reg_FUNC[3:0]325中。
在本例子中,由于写模式寄存器Reg_WRMODE 321是“0”(指示直达模式),因而将用于计算单元#A到#D 501、511、521和531的数学运算的条件代码保存在条件代码集合寄存器的寄存器rF[0到3]中。
然后,由逻辑与单元342进行条件代码集合寄存器的标记的值和屏蔽寄存器Reg_MASK[3:0]322的相应位之间的逻辑与运算。但是,在本例子中,由于屏蔽寄存器Reg_MASK[3:0]322是“1111”,因而不将任何位屏蔽。
然后,由逻辑异或单元343进行逻辑与单元342的输出位和反转寄存器Reg_XOR[3:0]323的相应位之间的异或运算。在本例子中,由于反转寄存器Reg_XOR[3:0]323是“0000”,因而任何位都反转。
在本例子中,由于功能寄存器Reg_FUNC[3:0]325是“11”,因而由选择器346选择标记转换表345的输出rF_tbl[3:0]的值,并将其输出作为标签rF_out[3:0]。
图12图示了用于执行图10的第二程序例的标记转换表345的设置的例子。参考图12,在所示例子中,预先将值“3”(十进制数)置于标记转换表345的地址“0001”中;将值“2”(十进制数)置于地址“0010”和“0011”中;将值“1”(十进制数)放置在地址“0100”到“0111”中;并将值“0”(十进制数)置于地址“1000”到“1111”中。所放置的值表明了其中放置了跳转目标的地址的数据寄存器的数量。
与之一起,将函数func1的顶部地址设置在数据寄存器r0中;将函数func2的顶部地址设置在数据寄存器r1中;将函数func3的顶部地址设置在数据寄 存器r2中;并将函数func4的顶部地址设置在数据寄存器r3中。
使用逻辑异或单元343的输出rF_xor[0到3]作为读取地址读出标记转换表345,并将信号rF_tbl[3:0]输出到选择器346。从而,如果数据寄存器r10的值高于数据寄存器r11的值,则信号rF_xor[0]变为“1”,并输出值“0”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,则信号rF_xor[1]变为“1”,并输出值“1”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,则信号rF_xor[2]变为“1”,并输出值“2”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r14的值,则信号rF_xor[3]变为“1”,并输出值“3”(十进制数)作为信号rF_tbl[3:0]。
在指令[JMPf]中,由于标记选择字段#0 702指示“1”,因而将标签rF_out[3:0]用作选择器422(图7)的选择信号,并将放置在由标签rF_out[3:0]指示的数据寄存器中的地址作为操作数。从而,如果满足条件之一,则通过分支单元551将预先放置在数据寄存器中的地址之一供应至指令抽取/解码器200,并执行跳转到相应的函数。
以此方式,在本实施例中,在两个机器周期中执行图10中的第二程序例。
图13A和13B图示了说明本实施例的数学运算处理装置的操作的程序的第三例子。第三程序例用于逐一判断三个条件,以便选择要被替换到寄存器中的值。
图13A图示了以由高级语言表示的这种形式的处理对象的程序。图13A所示的程序表明,如果数据寄存器r10的值高于数据寄存器r11的值,则将数据寄存器r0的值替换到数据寄存器r5中,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,则将数据寄存器r1的值替换到数据寄存器r5中,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,则将数据寄存器r2的值替换到数据寄存器r5中。
图13B表示了以由汇编语言表示的这种形式的处理对象的程序,并且同时执行在水平方向上并列的六个指令。在本例子中,实质的指令都在计算单元#A 501上执行,而其他单元执行nop指令。
在此,指令[MVf r5]是转移指令,用于将由标签rF_out[3:0]指示的数据寄存器的值转移(移动)到数据寄存器r5。其他的指令与上文中参考图8所述 的指令相同。
图14示出了用于执行图13中的第三程序例的设置寄存器320的设置的例子。在本例子中,预先将“1”设置在写模式寄存器Reg_WRMODE 321中;将“0111”(二进制数)设置在屏蔽寄存器Reg_MASK[3:0]322中;将“0000”(二进制数)设置在反转寄存器Reg_XOR[3:0]323中;并将“11”(二进制数)设置在功能寄存器Reg_FUNC[1:0]325中。
参考图14,在所示的例子中,由于写模式寄存器Reg_WRMODE 321是“1”(指示历史模式),因而将计算单元#A 501的数学运算的条件代码保存到条件代码集合寄存器的寄存器rF_[0]中,之后,将代码相继移位到寄存器rF[1]、rF[2]和rF[3]。从而,在本例子中,将“数据寄存器r10的值是否高于数据寄存器r11的值”的条件代码保存在寄存器rF[2]中;将“数据寄存器r10的值是否高于数据寄存器r12的值”的条件代码保存在寄存器rF[1]中;并将“数据寄存器r10的值是否高于数据寄存器r12的值”的条件代码保存在寄存器rF[0]中。
然后,由逻辑与单元342进行条件代码集合寄存器的标记的值和屏蔽寄存器Reg_MASK[3:0]322的相应位之间的逻辑与运算。在本例子中,由于屏蔽寄存器Reg_MASK[3:0]322是“0111”,因而仅将寄存器rF[3]屏蔽为“0”。
其后,由逻辑异或单元343进行逻辑与单元342的输出位和反转寄存器Reg_XOR[3:0]323的相应位之间的异或运算。在本例子中,由于反转寄存器Reg_XOR[3:0]323是“0000”,因而不反转任何一个位。
在本例子中,由于功能寄存器Reg_FUNC[1:0]325是“11”,因而由选择器346选择标记转换表345的输出rF_tbl[3:0]的值,并将其输出作为标签rF_out[3:0]。
图15图示了用于执行图13中的第三程序例的标记转换表345的设置的例子。在本例子中,预先将值“2”(十进制数)放置在标记转换表345的地址“0001”中;将值“1”(十进制数)放置在地址“0010”和“0011”中;并将值“0”(十进制数)放置在地址“0100”到“0111”中。这些值表明其中存储了跳转目标的地址的数据寄存器的数量。
使用逻辑异或单元343的输出rF_xor[0到3]作为读取地址读出标记转换表345,并将信号rF_tbl[3:0]输出到选择器346。从而,如果数据寄存器r10的值高于数据寄存器r11的值,则输出rF_xor[2]变为“1”,并输出值“0”(十 进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,则输出rF_xor[1]变为“1”,并输出值“1”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,则输出rF_xor[0]变为“1”,并输出值“2”(十进制数)作为信号rF_tbl[3:0]。
在指令[MVf r5]中,由于标记选择字段#0 702指示“1”,因而将标签rF_out[3:0]用作选择器422的选择信号,并将由标签rF_out[3:0]指示的数据寄存器的值作为操作数。从而,当满足任何一个条件时,将由标签rF_out[3:0]指示的数据寄存器的值转移到数据寄存器r5。
以这种方式,在本例子中,在四个机器周期中执行图13的第三程序例。
图16A和16B图示了说明本实施例的数学运算处理装置的操作的程序的第四例子。第四程序例用于同时判断三个条件,并根据判断结果执行存储器加载。
图16A图示了以由高级语言表示的这种形式的处理对象的程序。图16A所示的程序表明,如果数据寄存器r10的值高于数据寄存器r11的值,则将来自存储器的“基础地址+8”地址的数据加载到数据寄存器r5中,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,则将来自存储器的“基础地址+4”地址的数据加载到数据寄存器r5中,而在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,则将来自存储器的“基础地址+0”地址的数据加载到数据寄存器r5中。
图16表示以由汇编语言表示的这种形式的处理对象的程序,并同时执行在水平方向上并列的六个指令。由计算单元#A 501执行指令[GT r10,r11];由计算单元#B 511执行指令[GT r10,r12];由计算单元#C 521执行指令[GT r10,r13];并由加载/存储单元541执行指令[LWf r5,r0]。
在此,指令[LWf r5,r0]是存储器加载指令,用于基于地址从存储器加载数据并将该数据存储在数据寄存器r5中,其中该地址是通过将由rF_out[3:0]指定的数据寄存器中所存储的值作为地址偏移量添加到数据寄存器r0中所存储的地址上而得到的。其他的指令是诸如上文中参考图8所述的那些指令。
图17图示了用于执行图16A和16B中的第四程序例的设置寄存器320的设置的例子。在本例子中,预先将“0”设置在写模式寄存器Reg_WRMODE321中;将“0111”(二进制数)设置在屏蔽寄存器Reg_MASK[3:0]322中, 将“0000”(二进制数)设置在反转寄存器Reg_XOR[3:0]323中,并将“11”(二进制数)设置在功能寄存器Reg_FUNC[1:0]325中。
在本例子中,由于写模式寄存器Reg_WRMODE 321是“0”(指示直达模式),因而将计算单元#A到#C 501、511和521的值保存到条件代码集合寄存器的寄存器rF[0到2]中。
然后,由逻辑与单元342进行条件代码集合寄存器的标记的值和屏蔽寄存器Reg_MASK[3:0]322的相应位之间的逻辑与运算。在本例子中,由于屏蔽寄存器Reg_MASK[3:0]322是“0111”,因而仅将寄存器rF[3]屏蔽为“0”。
然后,由逻辑异或单元343进行逻辑与单元342的输出位和反转寄存器Reg_XOR[3:0]323的相应位之间的异或运算。但是,在本例子中,由于反转寄存器Reg_XOR[3:0]323是“0000”,因而不反转任何一个位。
在本例子中,由于功能寄存器Reg_FUNC[1:0]325是“11”,因而由选择器346选择标记转换表345的输出rF_tbl[3:0]的值,并将其输出作为标签rF_out[3:0]。
图18图示了用于执行图16A和16B中的第四程序例的标记转换表345的设置的例子。在该例子中,预先将值“0”(十进制数)放置在标记转换表345的地址“0001”中;将值“4”(十进制数)放置在地址“0010”和“0011”中;并将值“8”(十进制数)放置在地址“0100”到“0111”中。它们表明地址偏移量的值。
使用逻辑异或单元343的输出rF_xor[0到3]作为读取地址读出标记转换表345,并将信号rF_tbl[3:0]输出到选择器346。从而,如果数据寄存器r10的值高于数据寄存器r11的值,则信号rF_xor[0]变为“1”,并输出值“8”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r12的值,则rF_xor[1]变为“1”,并输出值“4”(十进制数)作为信号rF_tbl[3:0]。在任何其他情况下,如果数据寄存器r10的值高于数据寄存器r13的值,则rF_xor[2]变为“1”,并输出值“0”(十进制数)作为信号号rF_tbl[3:0]。
在指令[LWf r5,r0]中,由于标记选择字段#0 702指示“1”,因而将标签rF_out[3:0]用作选择器422的选择信号,并将由标签rF_out[3:0]指示的数据寄存器的值作为操作数。从而,如果满足任何一个条件,则将由标签rF_out[3:0]指示的数据寄存器的值作为偏移量地址而提供给加载/存储单元541。
同时,在指令“LWf r5,r0”中,由于标记选择字段#1 703指示“0”,并且操作数字段#1 705指示“0”,因而将数据寄存器r0的值作为地址提供给加载/存储单元541。
从而,加载/存储单元541将偏移量地址加上基础地址,并基于得到的地址从存储器加载数据。然后,加载/存储单元541将所加载的数据存储到数据寄存器r5中。
以这种方式,在本实施例中,在两个机器周期中执行图16A和16B的第四程序例。
具体地,根据本例子,将计算单元#A到#D 501、511、521和531的条件代码适当组合为条件代码集合,并通过标记转换表部分340转换,提供所得到的数据,作为不同指令的操作数。从而,基于多个数学运算的条件代码进行的操作数的供应可以高速地执行。
虽然已经使用特定术语描述了本发明的优选实施例,但是这种描述仅是用于例示目的,应该理解为,在不脱离以下权利要求的主旨或范围内,可以做出改变和变更。
具体地,根据本发明的实施例,计算元件对应于(例如)计算单元#A到#D 501、511、521和531。条件代码集合寄存器对应于(例如)寄存器文件310的条件代码集合寄存器rF[0到3]。此外,条件代码转换部分对应于(例如)标记转换部分340。此外,操作数供应部分对应于(例如)操作数选择器400。
根据本发明的实施例,屏蔽操作对应于(例如)逻辑与单元342的逻辑与运算。
根据本发明的实施例,反转处理对应于(例如)逻辑异或单元343的异或运算。
根据本发明的实施例,判断基于条件代码集合的值是否与预定值一致的比较对应于(例如)比较器344进行的比较。
根据本发明的实施例,转换表对应于(例如)转换表345。
根据本发明的实施例,数据寄存器对应于(例如)寄存器文件310中的数据寄存器。
根据本发明的实施例,计算元件对应于(例如)计算单元#A到#D 501、511、521和531。条件代码集合寄存器对应于(例如)寄存器文件310的条 件代码集合寄存器rF[0到3]。此外,条件代码写入部分对应于(例如)标记写入部分330。此外,条件代码转换部分对应于(例如)标记转换部分340。此外,操作数供应部分对应于(例如)操作数选择器400。
根据本发明的实施例,计算元件对应于(例如)计算单元#A到#D 501、511、521和531。屏蔽寄存器对应于(例如)屏蔽寄存器322。屏蔽计算元件对应于(例如)逻辑与单元342。反转寄存器对应于(例如)反转寄存器323。反转处理器对应于(例如)逻辑异或单元343。比较样式寄存器对应于(例如)比较样式寄存器324。比较器对应于(例如)比较器344。转换表对应于(例如)标记转换表345。选择器对应于(例如)选择器346。此外,操作数供应部分对应于(例如)操作数选择器400。
根据本发明的实施例,指令存储器对应于(例如)指令存储器100。指令抽取/解码器对应于(例如)指令抽取/解码器200。计算元件对应于(例如)计算单元#A到#D 501、511、521和531。分支处理部分对应于(例如)分支单元551。数据存储器对应于(例如)数据存储器600。加载/存储处理部分对应于(例如)加载/存储单元541。条件代码集合寄存器对应于(例如)寄存器文件310的条件代码集合寄存器rF[0到3]。此外,条件代码转换部分对应于(例如)标记转换部分340。此外,操作数供应部分对应于(例如)操作数选择器400。
应注意,可以将以上在本发明的实施例的描述中所述的处理过程理解为具有该过程的方法、或用于使得计算机执行该过程的程序、或用于存储该程序的记录介质。
相关申请的交叉引用
本发明包括与2006年12月13日在日本专利局提交的日本专利申请JP2006-335583相关的主题,通过引用将其全部内容合并于此。
Claims (10)
1.一种数学运算处理装置,包括:
多个计算元件,被配置为彼此不同地进行不同的数学运算,并产生所述数学运算的数学运算结果和条件代码;
条件代码集合寄存器,被配置为保存由所述多个计算元件同时产生的条件代码作为条件代码集合;
条件代码转换部分,被配置为对所述条件代码集合进行预定转换,并输出转换结果,作为转换条件代码集合;以及
操作数供应部分,被配置为基于所述转换条件代码集合供应用于所述计算元件中的数学运算的操作数。
2.如权利要求1所述的数学运算处理装置,还包括屏蔽寄存器,其中,所述条件代码转换部分基于所述屏蔽寄存器中的值对所述条件代码集合中的相应位进行屏蔽运算,作为预定转换。
3.如权利要求1所述的数学运算处理装置,还包括屏蔽寄存器,其中,所述条件代码转换部分基于所述屏蔽寄存器中的值对所述条件代码集合中的相应位进行反转处理,作为预定转换。
4.如权利要求1所述的数学运算处理装置,其中,所述条件代码转换部分进行比较以判断基于所述条件代码集合的值是否与预定值一致,作为预定转换,并输出转换结果。
5.如权利要求1所述的数学运算处理装置,还包括转换表,该转换表按照与基于条件代码集合的各个值的对应关系来保存转换条件代码集合,所述条件代码转换部分从所述转换表中提取所述转换条件代码集合中与基于条件代码集合的值相对应的那一个。
6.如权利要求1所述的数学运算处理装置,其中,所述操作数供应部分供应所述转换条件代码集合,作为用于所述数学运算的操作数。
7.如权利要求1所述的数学运算处理装置,还包括数据寄存器,该数据寄存器包括多个字,所述操作数供应部分根据所述转换条件代码集合供应从所述数据寄存器中读出的字,作为用于所述数学运算的操作数。
8.如权利要求1所述的数学运算处理装置,还包括:
条件代码写入部分,被配置为将所述条件代码集合寄存器中所保存的条件代码集合的一部分和由所述多个计算元件同时产生的条件代码的一部分,作为新的条件代码集合保存在所述条件代码集合寄存器中。
9.一种数学运算处理装置,包括:
多个计算元件,被配置为彼此不同地进行不同的数学运算,并产生所述数学运算的数学运算结果和条件代码;
屏蔽寄存器,被配置为保存代表了是否应该对每个所述条件代码进行屏蔽数学运算的屏蔽位;
屏蔽计算元件,被配置为根据所述屏蔽寄存器对每个所述条件代码进行屏蔽计算运算;
反转寄存器,被配置为保存代表了是否应该对由所述屏蔽计算元件处理过的每个所述条件代码进行反转处理的反转位;
反转处理器,被配置为根据所述反转寄存器对由所述屏蔽计算元件处理过的每个条件代码进行反转处理;
比较样式寄存器,被配置为保存将用作由所述反转处理器处理过的每个条件代码的比较对象的样式;
比较器,被配置为比较由所述反转处理器处理过的条件代码和在所述比较样式寄存器中所保存的样式;
转换表,被配置为保存与由所述反转处理器处理过的条件代码的组合对应的转换条件代码集合;
选择器,被配置为响应于所述比较器的比较结果、由所述反转处理器处理过的条件代码、或由所述反转处理器处理过的条件代码的组合,而选择从所述转换表中读出的转换条件代码集合中的一个;以及
操作数供应部分,被配置为基于所述选择器的输出来供应用于所述计算元件中的数学运算的操作数。
10.一种数学运算处理装置,包括:
指令存储器,被配置为保存包括了多个指令的程序;
指令抽取/解码器,被配置为从所述指令存储器中提取指令,并解码该指令;
多个计算元件,被配置为基于解码结果彼此不同地进行不同的数学运算,并产生所述数学运算的数学运算结果和条件代码;
分支处理部分,被配置为基于解码结果确定要由所述指令抽取/解码器提取的指令;
数据存储器;
加载/存储处理部分,被配置为访问所述数据存储器,以从所述数据存储器加载必要的数据,或将必要的数据存储到所述数据存储器中。
条件代码集合寄存器,被配置为保存由所述多个计算元件同时产生的条件代码,作为条件代码集合;
条件代码转换部分,被配置为对所述条件代码集合进行预定转换,并输出转换结果,作为转换条件代码集合;以及
操作数供应部分,被配置为基于所述转换条件代码集合来供应用于所述计算元件中的数学运算、由所述分支处理部分进行的确定、或由所述加载/存储处理部分进行的访问的操作数。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006335583A JP4228241B2 (ja) | 2006-12-13 | 2006-12-13 | 演算処理装置 |
| JP335583/06 | 2006-12-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN101201736A CN101201736A (zh) | 2008-06-18 |
| CN101201736B true CN101201736B (zh) | 2011-08-10 |
Family
ID=39516911
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN2007101994391A Expired - Fee Related CN101201736B (zh) | 2006-12-13 | 2007-12-13 | 数学运算处理装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US8635434B2 (zh) |
| JP (1) | JP4228241B2 (zh) |
| CN (1) | CN101201736B (zh) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
| JP5813484B2 (ja) | 2011-11-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | Vliwプロセッサと命令構造と命令実行方法 |
| US9645820B2 (en) | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
| CN104966026A (zh) * | 2015-06-03 | 2015-10-07 | 西安科技大学 | 数学运算系统 |
| US20160378480A1 (en) * | 2015-06-27 | 2016-12-29 | Pavel G. Matveyev | Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations |
| JP6616608B2 (ja) * | 2015-07-16 | 2019-12-04 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
| CN107229722A (zh) * | 2017-06-05 | 2017-10-03 | 商丘医学高等专科学校 | 一种智能数学运算处理系统 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1206145A (zh) * | 1997-06-30 | 1999-01-27 | 索尼公司 | 带有流水线处理电路的信号处理器及其方法 |
| CN1219253A (zh) * | 1996-09-23 | 1999-06-09 | Arm有限公司 | 数据处理状态码标志 |
| CN1746842A (zh) * | 2004-09-08 | 2006-03-15 | 三星电子株式会社 | 用于乱序执行条件指令的硬件装置及其执行方法 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| USH1970H1 (en) * | 1971-07-19 | 2001-06-05 | Texas Instruments Incorporated | Variable function programmed system |
| JPS6043751A (ja) | 1983-08-18 | 1985-03-08 | Hitachi Ltd | 情報処理装置 |
| GB2228597A (en) * | 1989-02-27 | 1990-08-29 | Ibm | Data processor with conditional instructions |
| JP2793357B2 (ja) | 1990-11-20 | 1998-09-03 | 株式会社東芝 | 並列演算装置 |
| JP2928680B2 (ja) | 1992-03-30 | 1999-08-03 | 株式会社東芝 | 複合条件処理方式 |
| JPH0991141A (ja) | 1995-09-26 | 1997-04-04 | Toshiba Corp | Vliw方式プロセッサ及び並列処理方法 |
| JPH1153189A (ja) | 1997-07-31 | 1999-02-26 | Toshiba Corp | 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体 |
| JP3830683B2 (ja) * | 1998-12-28 | 2006-10-04 | 富士通株式会社 | Vliwプロセッサ |
| US6697276B1 (en) * | 2002-02-01 | 2004-02-24 | Netlogic Microsystems, Inc. | Content addressable memory device |
| JP4277042B2 (ja) * | 2005-03-31 | 2009-06-10 | パナソニック株式会社 | 演算処理装置 |
| JP3899114B2 (ja) | 2006-04-28 | 2007-03-28 | 松下電器産業株式会社 | プロセッサ |
-
2006
- 2006-12-13 JP JP2006335583A patent/JP4228241B2/ja not_active Expired - Fee Related
-
2007
- 2007-12-04 US US11/987,700 patent/US8635434B2/en not_active Expired - Fee Related
- 2007-12-13 CN CN2007101994391A patent/CN101201736B/zh not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1219253A (zh) * | 1996-09-23 | 1999-06-09 | Arm有限公司 | 数据处理状态码标志 |
| CN1206145A (zh) * | 1997-06-30 | 1999-01-27 | 索尼公司 | 带有流水线处理电路的信号处理器及其方法 |
| CN1746842A (zh) * | 2004-09-08 | 2006-03-15 | 三星电子株式会社 | 用于乱序执行条件指令的硬件装置及其执行方法 |
Non-Patent Citations (1)
| Title |
|---|
| 全文. |
Also Published As
| Publication number | Publication date |
|---|---|
| US20080148012A1 (en) | 2008-06-19 |
| CN101201736A (zh) | 2008-06-18 |
| US8635434B2 (en) | 2014-01-21 |
| JP2008146544A (ja) | 2008-06-26 |
| JP4228241B2 (ja) | 2009-02-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101201736B (zh) | 数学运算处理装置 | |
| JP2003085000A (ja) | トレース情報生成装置およびその方法 | |
| US7447871B2 (en) | Data access program instruction encoding | |
| TWI770721B (zh) | 硬體處理器及處理器 | |
| JP3449186B2 (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
| JPH0496825A (ja) | データ・プロセッサ | |
| CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
| US6687808B2 (en) | Data processor using indirect register addressing | |
| KR100303712B1 (ko) | 파이프라인기계에서의어드레스파이프라인을위한방법및장치 | |
| US8095775B1 (en) | Instruction pointers in very long instruction words | |
| US8549266B2 (en) | System and method of instruction modification | |
| JPH0673105B2 (ja) | 命令パイプライン方式のマイクロプロセッサ | |
| US5752271A (en) | Method and apparatus for using double precision addressable registers for single precision data | |
| JP2748957B2 (ja) | データ処理装置 | |
| CN108920188B (zh) | 一种扩展寄存器堆的方法及装置 | |
| CN117008975A (zh) | 一种指令融合分割方法、处理器核和处理器 | |
| US5812845A (en) | Method for generating an object code for a pipeline computer process to reduce swapping instruction set | |
| KR19980024622A (ko) | 프로그램 실행 방법 및 그 방법을 이용한 장치 | |
| US20070245120A1 (en) | Multiple microcontroller system, instruction, and instruction execution method for the same | |
| JPH0524537B2 (zh) | ||
| JPH03158929A (ja) | データ処理装置 | |
| JP2011209859A (ja) | 情報処理装置 | |
| JP3147884B2 (ja) | 記憶装置及び情報処理装置 | |
| US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
| JP3102399B2 (ja) | データ処理装置及び方法 |
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 | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110810 Termination date: 20191213 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |