CN103150141A - Vliw处理器、指令结构和指令执行方法 - Google Patents
Vliw处理器、指令结构和指令执行方法 Download PDFInfo
- Publication number
- CN103150141A CN103150141A CN2012105057666A CN201210505766A CN103150141A CN 103150141 A CN103150141 A CN 103150141A CN 2012105057666 A CN2012105057666 A CN 2012105057666A CN 201210505766 A CN201210505766 A CN 201210505766A CN 103150141 A CN103150141 A CN 103150141A
- Authority
- CN
- China
- Prior art keywords
- comparison
- result
- value
- indication
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 18
- 230000000052 comparative effect Effects 0.000 claims description 90
- 238000012545 processing Methods 0.000 description 51
- 230000014509 gene expression Effects 0.000 description 29
- 101100464779 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CNA1 gene Proteins 0.000 description 28
- 101100464782 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CMP2 gene Proteins 0.000 description 27
- 101150029874 cmb1 gene Proteins 0.000 description 22
- 101100060402 Dianthus caryophyllus CMB2 gene Proteins 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 102100036576 Coiled-coil domain-containing protein 174 Human genes 0.000 description 12
- 101000715221 Homo sapiens Coiled-coil domain-containing protein 174 Proteins 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 3
- 238000003708 edge detection Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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
-
- 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
-
- 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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明涉及VLIW处理器、指令结构和指令执行方法。第一运算单元130根据第一控制信号ctr1将第一比较运算单元122的输出或者该输出与已经保存于寄存器50内的值的与值或者或值作为第一运算结果CR1输出。第二运算单元140根据第二控制信号ctr2将第二比较运算单元124的输出或者该输出与已经保存于寄存器50内的值的与值或者或值作为第二运算结果CR2输出。第三运算单元150根据第三控制信号ctr3将第一运算结果CR1或者第一运算结果CR1与第二运算结果CR2的与值或者或值作为执行结果输出到寄存器50。寄存器50重新保存并输出来自第三运算单元150的执行结果。
Description
相关申请的交叉引用
本申请基于并且要求在2011年11月30日提交的日本专利申请No.2011-262706的优先权益,并在此通过引用并入该专利申请No.2011-262706的全部公开内容。
技术领域
本发明涉及包括多个比较指令的VLIW指令,以及用于执行VLIW指令的技术。
背景技术
使用VLIW(超长指令字)指令的处理器(VLIW处理器)能够在一个周期内执行多个指令,并因此被应用于各个领域。
例如,在图像处理中,处理需要复杂的条件判断,例如,边缘检测,在该边缘检测中邻近像素的值被比较以确定所感兴趣的像素的值。表达式(1)示出了边缘检测滤波器的处理实例。
res=(val>c&&(val>b||val==b&&(sc==0||sc==2)))?1:0; (1)
在表达式(1)中的标记“?”之前的项内,每个字母都代表一个变元(argument),而每个值都代表一个直接值(immediate)。另外,“&&”和“||”分别代表“与(AND)”和“或(OR)”,并且等号和不等号中的每个都代表比较处理。假定在标记“?”之前的且在表达式(1)的右侧的项是X,则表达式(1)代表其中“1”在X为真时被作为值“res”来输出的处理,以及代表其中“0”在X为假时被作为值“res”来输出的处理。
图18示出了用来通过使用分支指令在VLIW处理器中实现表达式(1)所示的处理的程序的实例。
例如,如同图19的程序所示,下面的表达式(2)所示的处理同样能够通过使用分支指令在VLIW处理器中实现。
res=((d01==0)&&(d11!=0))&&(((d02!=0)&&(d12==0))||((d00!=0)&&(d10==0))) (2)
例如,如同图18的程序的第二到第四行以及图19的程序的第二到第三行所示,一个分支指令(brf)和一个比较指令(cmp)并行执行。与在一个周期内只能够执行一个指令的处理器相比,这提高了处理效率。
但是,一般地,存在着要耗费大量的时间来执行分支指令的问题。例如,如果分支开销(branch penalty)是两个周期,则需要九个周期来执行图18所示的程序,并且需要12周期来执行图19所示的程序。
人们已经从各种角度提出了用于VLIW处理器的技术。
例如,日本未经审查的专利申请公开No.10-27102公开了用于通过使用断言寄存器(predicate register)来消除条件分支的技术。
应用了这种技术的VLIW处理器包括被设置为与包含于单个VLIW指令内的多个运算指令字段中的一个或更多个对应的多个运算单元。每个运算单元都包括:用于执行由相应的一个或更多个运算指令字段指示的运算的运算电路;用于存储用来确定是否执行运算电路的运算的值的寄存器(断言寄存器);以及存储装置,用于响应于预定指令将通过评估预定指令的运算结果所获得的全部值都写入到所有运算单元中的寄存器内。在每个运算单元内的运算电路根据写入断言寄存器内的值来确定是否执行在以上所述的断言寄存器内指定的运算指令。
日本未经审查的专利申请公开No.07-302199公开了其中通用的积和电路被并行地设置于VLIW处理器内并且复杂的条件判断(综合测试)在一个周期内执行以由此实现条件分支的技术。
日本未经审查的专利申请公开No.2008-146544公开了用于将多个条件代码组合成单个条件代码集的技术,该多个条件代码通过在多个周期内的操作获得。
专利申请No.2003-520360的PCT国际公开的已出版的日文译本公开了用于获得由当前比较指令与前一周期内的比较指令生成的状态信息的布尔组合的结果的技术。
发明内容
在日本未经审查的专利申请公开No.10-27102中公开的技术使用断言寄存器来代替条件分支。这种技术在减少寄存器文件于运算单元之间的转移次数方面是有效的。但是,在表达式(1)和表达式(2)所示的使用具有复杂的层次结构的条件判断语句的情形中,效率提高的效果是有限的。
在日本未经审查的专利申请公开No.07-302199中公开的技术允许在一个周期内评估各种条件的组合,该组合能够由积和标准形式(sum-of-products standard form)来表示。但是,在图像处理中,例如,在该处理中能够将条件的组合限定于某一程度,存在着硬件尺寸过度增大的问题。
在日本未经审查的专利申请公开No.2008-146544中公开的技术通过包括多个位的条件代码集有效地实现了到多个分支目标的转移。但是,该技术在只有一个分支目标(如同例如表达式(1)所示的边缘检测滤波器中那样)时是低效的。
在专利申请No.2003-520360的PCT国际公开的已出版的日文译本中公开的技术能够获得由当前比较指令和前一周期内的比较指令生成的状态信息的布尔组合的结果。但是,例如表达式(1)和表达式(2)所示的处理需要结合(例如,逻辑运算)多个比较指令的结果。这使得难以提高在专利申请No.2003-520360的PCT国际公开的已出版的日文译本中公开的技术的效率。
需要这样的技术:能够在小的电路尺寸的情况下有效地执行如表达式(1)和(2)所示的复杂的条件判断处理,同时充分利用能够在一个周期内执行多个指令的VLIW处理器的特性。
本发明的第一方面是VLIW处理器。VLIW处理器包括第一比较运算单元、第二比较运算单元、第一运算单元、第二运算单元、第三运算单元和寄存器。
第一比较运算单元接收第一比较运算信号、第一输入信号和第二输入信号,对第一输入信号和第二输入信号执行由第一比较运算信号指示的比较运算,并且输出比较运算的结果。
第二比较运算单元接收第二比较运算信号、第三输入信号和第四输入信号,对第三输入信号和第四输入信号执行由第二比较运算信号指示的比较运算,并且输出比较运算的结果。
第一运算单元接收第一控制信号、第一比较运算单元的比较结果以及已经保存于寄存器内的值,并且根据第一控制信号将第一比较运算单元的比较结果、第一比较运算单元的比较结果与寄存器的值的与值(AND)以及第一比较运算单元的比较结果与寄存器的值的或值(OR)之一作为第一运算结果输出。
第二运算单元接收第二控制信号、第二比较运算单元的比较结果以及已经保存于寄存器内的值,并且根据第二控制信号将第二比较运算单元的比较结果、第二比较运算单元的比较结果与寄存器的值的与值(AND)以及第二比较运算单元的比较结果与寄存器的值的或值(OR)之一作为第二运算结果输出。
第三运算单元接收第三控制信号、第一运算结果和第二运算结果,并且根据第三控制信号将第一运算结果、第一运算结果与第二运算结果的与值(AND)以及第一运算结果与第二运算结果的或值(OR)之一作为执行结果输出到寄存器。
寄存器重新保存并输出接受自第三运算单元的执行结果。
本发明的第二方面是VLIW指令的指令结构。该指令结构包括:用于存储第一比较指令的第一比较指令字段、用于存储第一合成标记的第一合成标记字段、用于存储第二比较指令的第二比较指令字段、用于存储第二合成标记的第二合成标记字段以及用于存储第三合成标记的第三合成标记字段。
第一合成标记将由第一比较指令指示的比较的结果、该比较的结果与前一VLIW指令的执行结果的与值(AND)以及该比较的结果与前一VLIW指令的执行结果的或值(OR)之一指示为第一运算结果。
第二合成标记将由第二比较指令指示的比较的结果、该比较的结果与前一VLIW指令的执行结果的与值(AND)以及该比较的结果与前一VLIW指令的执行结果之一指示为第二运算结果。
第三合成标记将第一运算结果、第一运算结果与第二运算结果的与值(AND)以及第一运算结果与第二运算结果的或值(OR)之一指示为当前VLIW指令的执行结果。
本发明的第三方面是用于在VLIW处理器内执行VLIW指令的方法,该VLIW处理器包括寄存器并且被配置用于接收VLIW指令,VLIW指令包括第一比较指令、第二比较指令以及三个合成标记,三个合成标记包括各自指示“无需合成(not to synthesize)”、“与(AND)”和“或(OR)”之一的第一和第二合成标记以及指示“与(AND)”和“或(OR)”之一的第三合成标记。
执行方法包括在第一合成标记指示“无需合成(not tosynthesize)”时将由第一比较指令指示的比较的结果作为第一运算结果输出,而在其他情况下,将通过对由第一比较指令指示的比较的结果和已经保存于寄存器内的值执行由第一合成标记指示的逻辑运算而获得的值作为第一运算结果输出。
执行方法还包括在第二合成标记指示“无需合成(not tosynthesize)”时将由第二比较指令指示的比较的结果作为第二运算结果输出,而在其他情况下,将通过对由第二比较指令指示的比较的结果和已经保存于寄存器内的值执行由第二合成标记指示的逻辑运算而获得的值作为第二运算结果输出。
执行方法还包括将通过对第一运算结果和第二运算结果执行由第三合成标记指示的逻辑运算而获得的值作为当前VLIW指令的执行结果输出到寄存器;并且由该寄存器重新保存并输出执行结果。
注意,根据上述方面的作为装置或系统的VLIW处理器、具有根据上述方面的指令结构的VLIW指令、包括VLIW指令的程序、用于执行根据上述方面的VLIW指令和方法的VLIW处理器等的实现方式作为本发明的各个方面也是有效的。
根据本发明的技术,有可能在小的电路尺寸的情况下于VLIW处理器中有效地执行复杂的条件判断处理。
附图说明
根据下面结合附图进行的关于某些实施例的描述,上述及其他方面、优点和特征将变得显而易见,在附图中:
图1是示出用于解释根据本发明的技术的原理的VLIW处理器的示意图;
图2是示出待图1所示的VLIW处理器处理的VLIW指令的结构的示意图;
图3是示出包含于图2所示的VLIW指令的比较指令内的比较算子的实例的表格;
图4是示出在图2所示的VLIW指令与图1所示的VLIW处理器中的每个信号之间的对应关系的表格(第I部分);
图5是示出在图2所示的VLIW指令与图1所示的VLIW处理器中的每个信号之间的对应关系的表格(第II部分);
图6是示出根据本发明的一种实施例的VLIW处理器的示意图;
图7是示出在图6所示的VLIW处理器中的第一运算单元的示意图;
图8是示出在图6所示的VLIW处理器中的第二比较运算单元的示意图;
图9是示出在图6所示的VLIW处理器中的第三运算单元的示意图;
图10是用于解释在使用模式(pattern)A的指令的情况下待图6所示的VLIW处理器执行的处理的示意图;
图11是用于解释在使用模式B的指令的情况下待图6所示的VLIW处理器执行的处理的示意图;
图12是用于解释在使用模式C的指令的情况下待图6所示的VLIW处理器执行的处理的示意图;
图13是用于解释在使用模式D的指令的情况下待图6所示的VLIW处理器执行的处理的示意图;
图14是示出在图6所示的VLIW处理器内实现表达式(1)所示的处理的情形中的划分处理的实例的示意图;
图15是示出用来在图6所示的VLIW处理器中实现表达式(1)所示的处理的程序的实例的示意图;
图16是示出在图6所示的VLIW处理器内实现表达式(2)所示的处理的情形中的划分处理的实例的示意图;
图17是示出用来在图6所示的VLIW处理器中实现表达式(1)所示的处理的程序的实例的示意图;
图18是示出表达式(1)所示的处理在相关技术的VLIW处理器中的实现方式的实例的示意图;以及
图19是示出表达式(1)所示的处理在相关技术的VLIW处理器中的实现方式的实例的示意图。
具体实施方式
以下,本发明的实施例将参照附图来描述。为了使解释更清楚,对下面的描述和附图进行适当的省略和简化。注意,在附图中,相同的元件由相同的附图标记表示,并且根据需要省略了重复的解释。
在本发明的具体实施例的描述之前,在此将参照图1到5来描述根据本发明的技术的原理。
图1所示的VLIW处理器10包括第一比较运算单元122、第二比较运算单元124、第一运算单元130、第二运算单元140、第三运算单元150和寄存器50。在典型的处理器中所设置的用于算术运算的加法器-减法器或ALU(算术逻辑单元)可以被用作第一比较运算单元122和第二比较运算单元124中的每一个。
第一比较运算单元122接收第一比较运算信号V1、第一输入信号V11和第二输入信号V12,对第一输入信号V11和第二输入信号V12执行由第一比较运算信号V1指示的比较运算,并且输出该比较运算的结果。通过第一比较运算单元122获得的比较结果被称为第一比较结果CMP1。
第二比较运算单元124接收第二比较运算信号V2、第三输入信号V21和第四输入信号V22,对第三输入信号V21和第四输入信号V22执行由第二比较运算信号V2指示的比较运算,并且输出该比较运算的结果。通过第二比较运算单元124获得的比较结果被称为第二比较结果CMP2。
第一运算单元130接收第一控制信号ctr1、第一比较结果CMP1和已经保存于寄存器50内的值(PR),并且根据第一控制信号ctr1将第一比较结果CMP1、第一比较结果CMP1和寄存器50的值PR的与值(AND)以及第一比较结果CMP1和寄存器的值PR的或值(OR)之一作为第一运算结果CR1输出。
第二运算单元140接收第二控制信号ctr2、第二比较结果CMP2和寄存器50的值PR,并且根据第二控制信号ctr2将第二比较结果CMP2、第二比较结果CMP2和寄存器50的值PR的与值(AND)以及第二比较结果CMP2和寄存器的值PR的或值(OR)之一作为第二运算结果CR2输出。
第三运算单元150接收第三控制信号ctr3、第一运算结果CR1和第二运算结果CR2,并且根据第三控制信号ctr3将第一运算结果CR1、第一运算结果CR1和第二运算结果CR2的与值(AND)以及第一运算结果CR1和第二运算结果CR2的或值(OR)之一作为执行结果(PR+)输出到寄存器50。
寄存器50重新保存接收自第三运算单元150的执行结果PR+并且根据需要输出执行结果。保存于寄存器50内的值PR被改写为执行结果PR+。
VLIW处理器10能够执行具有图2所示的结构的VLIW指令。现在将参照图2和3来描述待由VLIW处理器10执行的VLIW指令的结构。
如图2所示的,VLIW指令包括用于存储第一比较指令COMPARE1的第一比较指令字段;用于存储与第一比较指令COMPARE1对应的第一合成标记CMB1的第一合成标记字段;用于存储第二比较指令COMPARE2的第二比较指令字段;用于存储与第二比较指令COMPARE2对应的第二合成标记CMB2的第二合成标记字段;以及用于存储第三合成标记CMB3的第三合成标记字段。
第一比较指令COMPARE1和第二比较指令COMPARE2中的每个都是包括两个输入操作数和一个比较算子op的普通的比较指令。两个输入操作数对应于在由一个比较算子op指示的比较运算中的比较目标。
图3示出了包含于第一比较指令COMPARE1和第二比较指令COMPARE2内的比较算子op的实例。如图3所示的,比较算子op的实例包括分别指示“小于”、“小于或等于”、“等于”、“不等于”、“大于”以及“大于或等于”的“LT”、“LE”、“EQ”、“NE”、“GT”和“GE”。
第一比较指令COMPARE1的比较结果对应于在图1所示的VLIW处理器10中的第一比较结果CMP1。第二比较指令COMPARE2的比较结果对应于在图1所示的VLIW处理器10中的第二比较结果CMP2。由第一比较指令COMPARE1和第一合成标记CMB1确定的运算结果对应于在VLIW处理器10中的第一运算结果CR1。由第二比较指令COMPARE2和第二合成标记CMB2确定的运算结果对应于在VLIW处理器10中的第二运算结果CR2。当前VLIW指令的执行结果对应于在VLIW处理器10中的执行结果PR+。前一VLIW指令的执行结果对应于在VLIW处理器10中的执行结果PR。这将在下面参照图4和5更详细地描述。
第一合成标记CMB1将由第一比较指令COMPARE1指示的比较结果(第一比较结果CMP1)、第一比较结果CMP1和执行结果PR的与值(AND)以及第一比较结果CMP1和执行结果PR的或值(OR)之一指示为运算结果(第一运算结果CR1)。
第二合成标记CMB2将由第二比较指令COMPARE2指示的比较结果(第二比较结果CMP2)、第二比较结果CMP2和执行结果PR的与值(AND)以及第二比较结果CMP2和执行结果PR的或值(OR)之一指示为运算结果(第二运算结果CR2)。
第三合成标记CMB3将第一运算结果CR1和第二运算结果CR2的与值(AND)以及第一运算结果CR1和第二运算结果CR2的或值(OR)之一指示为当前VLIW指令的执行结果(执行结果PR+)。
图4和5中的每个都示出了在图2所示的VLIW指令的组元的具体实例与用于由VLIW处理器10执行每个具体实例中的VLIW指令的信号之间的对应关系。图4示出了与VLIW指令的第三合成标记CMB3以及VLIW处理器10的第一控制信号ctr1和第二控制信号ctr2不同的字段。图5示出了VLIW指令的第三合成标记CMB3和VLIW处理器10的第三控制信号ctr3。
如上所述,第一比较指令COMPARE1包括一个比较算子和两个输入操作数,如同普通的比较指令一样。在VLIW处理器10中,指示出由包含于第一比较指令COMPARE1内的比较算子指示的比较运算的信号被作为第一比较运算信号V1输入第一比较运算单元122。包含于第一比较指令COMPARE1内的两个操作数被分别作为第一输入信号V11和第二输入信号V12输入第一比较运算单元122。
第一合成标记CMB1指示“无需合成(not to synthesize)”、“与(AND)”和“或(OR)”之一。术语“无需合成(not to synthesize)”指示第一比较结果CMP1被作为第一运算结果CR1输出。注意,任何字符都可以被用作指示“无需合成(not to synthesize)”的第一合成标记CMB1,只要它能够指示“无需合成(not to synthesize)”。在图4所示的实例中,当第一合成标记CMB1的字段为空时,空字段指示“无需合成(not to synthesize)”。
当第一合成标记CMB1指示“无需合成(not to synthesize)”时,在VLIW处理器10中,指示了第一比较结果CMP1被作为第一运算结果CR1输出的第一控制信号ctr1被输入第一运算单元130。
当第一合成标记CMB1指示与“无需合成(not to synthesize)”不同的逻辑运算,即,“与(AND)”或“或(OR)”时,在VLIW处理器10中,用于指示通过对第一比较结果CMP1和前一执行结果PR执行由第一合成标记CMB1指示的逻辑运算而获得的结果被作为第一运算结果CR1输出的第一控制信号ctr1被输入第一运算单元130。
如上所述,第二比较指令COMPARE2还包括一个比较算子和两个输入操作数,如同普通的比较指令一样。在VLIW处理器10中,指示着由包含于第二比较指令COMPARE2内的比较算子指示的比较运算的信号被作为第二比较运算信号V2输入第二比较运算单元124。包含于第二比较指令COMPARE2内的两个操作数被分别作为第三输入信号V21和第四输入信号V22输入第二比较运算单元124。
如同第一合成标记CMB1一样,第二合成标记CMB2指示“无需合成(not to synthesize)”、“与(AND)”和“或(OR)”之一。术语“无需合成(not to synthesize)”指示第二比较结果CMP2被作为第二运算结果CR2输出。注意,任何字符都可以被用作指示“无需合成(not to synthesize)”的第二合成标记CMB2,只要它能够指示“无需合成(not to synthesize)”。在图4所示的实例中,当第二合成标记CMB2的字段为空时,空字段指示“无需合成(not to synthesize)”。
当第二合成标记CMB2指示“无需合成(not to synthesize)”时,在VLIW处理器10中,用于指示第二比较结果CMP2被作为第二运算结果CR2输出的第二控制信号ctr2被输入第二运算单元140。
当第二合成标记CMB2指示与“无需合成(not to synthesize)”不同的逻辑运算,即,“与(AND)”或“或(OR)”时,在VLIW处理器10中,用于指示通过对第二比较结果CMP2和前一执行结果PR执行由第二合成标记CMB2指示的逻辑运算而获得的结果被作为第二运算结果CR2输出的第二控制信号ctr2被输入第二运算单元140。
第三合成标记CMB3指示“与(AND)”和“或(OR)”之一的逻辑运算。在VLIW处理器10中,用于指示通过对第一运算结果CR1和第二运算结果CR2执行由第三合成标记CMB3指示的逻辑运算而获得的结果被作为执行结果PR+输出的第三控制信号ctr3被输入第三运算单元150。
注意,第二比较指令字段和第三合成标记字段可以为空。如图5所示,当只有一个比较指令时,即,当第二比较指令字段为空时,第三合成标记CMB3并未被涉及,并且用于指示第一运算结果CR1被作为当前指令的执行结果PR+输出的第三控制信号ctr3被输入第三运算单元150。同样,当第三合成标记CMB3的字段为空时,用于指示第一运算结果CR1被作为当前指令的执行结果PR+输出的第三控制信号ctr3被输入第三运算单元150。在这两种情形中,第二比较运算单元124和第二运算单元140不执行操作。
用于处理图2所示的VLIW指令的VLIW处理器10能够在具有小的电路尺寸的情况下有效地执行包含多个比较处理的条件判断处理。这将参照下面的实施例更详细地描述。
图6示出了根据本发明的一种实施例的VLIW处理器100。为了避免多余的解释,与图1所示的那些构件类似的图6的构件(包括信号)由相同的附图标记表示,并且根据需要来解释。
VLIW处理器100包括控制单元110、第一比较运算单元122、第二比较运算单元124、第一运算单元130、第二运算单元140、第三运算单元150和断言寄存器160。
控制单元110包括用于存储所收到的VLIW指令的指令寄存器(未示出)。基于存储于指令寄存器内的VLIW指令,控制单元110输出第一比较运算信号V1、第一输入信号V11、第二输入信号V12、第二比较运算信号V2、第三输入信号V21、第四输入信号V22、第一控制信号ctr1、第二控制信号ctr2和第三控制信号ctr3。
具体地,控制单元110将第一比较运算信号V1、第一输入信号V11和第二输入信号V12输出到第一比较运算单元122。第一比较运算信号V1、第一输入信号V11和第二输入信号V12分别指示包含于第一比较指令COMPARE1内的比较算子和两个操作数。
控制单元110将第二比较运算信号V2、第三输入信号V21和第四输入信号V22输出到第二比较运算单元124。第二比较运算信号V2、第三输入信号V21和第四输入信号V22分别指示包含于第二比较指令COMPARE2内的比较算子和两个操作数。
此外,控制单元110将与第一合成标记CMB1对应的第一控制信号ctr1、与第二合成标记CMB2对应的第二控制信号ctr2以及与第三合成标记CMB3对应的第三控制信号ctr3分别输出到第一运算单元130、第二运算单元140和第三运算单元150。当第二比较指令COMPARE2和第二合成标记CMB2为空时,或者当第三合成标记CMB3为空时,控制单元110识别出第三合成标记CMB3指示着“无需合成(not to synthesize)”,并且将指示“无需合成(not tosynthesize)”的第三控制信号ctr3输出到第三运算单元150。
第一比较运算单元122执行比较运算并且将第一比较结果CMP1输出到第一运算单元130。第二比较运算单元124执行比较运算并且将第二比较结果CMP2输出到第二运算单元140。
图7示出了第一运算单元130。第一运算单元130包括与门132、或门134和选择器136。
与门132和或门134中的每个都接收来自第一比较运算单元122的第一比较结果CMP1和来自断言寄存器160的执行结果PR。与门132将第一比较结果CMP1和执行结果PR的与值(AND)输出到选择器136。或门134将第一比较结果CMP1和执行结果PR的或值(OR)输出到选择器136。
选择器136接收来自与门132的与值(AND)、来自或门134的或值(OR)、第一比较结果CMP1以及来自控制单元110的第一控制信号ctr1,根据第一控制信号ctr1选择所接收到的三个值之一,并且将所选择的值输出到第三运算单元150。选择器136的输出是第一运算结果CR1。
具体地,当第一控制信号ctr1指示“无需合成(not tosynthesize)”时,第一运算单元130将第一比较结果CMP1作为第一运算结果CR1输出。另一方面,当第一控制信号ctr1指示“与(AND)”时,第一运算单元130将与门132的输出作为第一运算结果CR1来输出,而当第一控制信号ctr1指示“或(OR)”时,第一运算单元130将或门134的输出作为第一运算结果CR1来输出。
图8示出了第二运算单元140。第二运算单元140包括与门142、或门144和选择器146。
与门142和或门144中的每个都接收来自第二比较运算单元124的第二比较结果CMP2和来自断言寄存器160的执行结果PR。与门142将第二比较结果CMP2和执行结果PR的与值(AND)输出到选择器146。或门144将第二比较结果CMP2和执行结果PR的或值(OR)输出到选择器146。
选择器146接收来自与门142的与值(AND)、来自或门144的或值(OR)、第二比较结果CMP2以及来自控制单元110的第二控制信号ctr2,根据第二控制信号ctr2来选择这三个输入值之一,并且将所选择的值输出到第三运算单元150。选择器146的输出是第二运算结果CR2。
具体地,当第二控制信号ctr2指示“无需合成(not tosynthesize)”时,第二运算单元140将第二比较结果CMP2作为第二运算结果CR2输出。另一方面,当第二控制信号ctr2指示“与(AND)”时,第二运算单元140将与门142的输出作为第二运算结果CR2来输出,而当第二控制信号ctr2指示“或(OR)”时,第二运算单元140将或门144的输出作为第二运算结果CR2来输出。
图9示出了第三运算单元150。第三运算单元150包括与门152、或门154和选择器156。
与门152和或门154中的每个都接收来自第一运算单元130的第一运算结果CR1和来自第二运算单元140的第二运算结果CR2。与门152将第一运算结果CR1和第二运算结果CR2的与值(AND)输出到选择器156。或门154将第一运算结果CR1和第二运算结果CR2的或值(OR)输出到选择器156。
选择器156接收来自与门152的与值(AND)、来自或门154的或值(OR)、第一运算结果CR1以及来自控制单元110的第三控制信号ctr3,根据第三控制信号ctr3来选择所接收到的三个值之一,并且将所选择的值输出到断言寄存器160。选择器156的输出是执行结果PR+。
具体地,当第三控制信号ctr3指示“无需合成(not tosynthesize)”时,第三运算单元150将第一运算结果CR1作为执行结果PR+输出。另一方面,当第三控制信号ctr3指示“与(AND)”时,第三运算单元150将与门152的输出作为执行结果PR+来输出,而当第三控制信号ctr3指示“或(OR)”时,第三运算单元150将或门154的输出作为执行结果PR+来输出。
断言寄存器160保存来自第三运算单元150的最新的执行结果PR+。具体地,作为当前VLIW指令的执行结果的执行结果PR+变为在后一VLIW指令执行时的执行结果PR。
以下参照图10到13来对在图2所示的VLIW指令中的比较指令和合成标记的每个组合模式给出关于待由VLIW处理器100执行的处理的描述。
<模式A>
模式A是代表着如下的模式:VLIW指令包括第一比较指令COMPARE1和第二比较指令COMPARE2,并且所有合成标记字段(CMB1、CMB2和CMB3)都指示“与(AND)”和“或(OR)”之一。模式A包括四个模式A(1)到A(4)。
如图10所示,模式A(1)代表VLIW指令“COMPARE1_ANDCOMPARE2_AND AND”,在该指令中所有合成标记字段都指示“与(AND)”。
在模式A(1)的情形中,由VLIW处理器100获得的执行结果PR+指示着执行结果PR(前一执行结果)与第一比较结果CMP1和第二比较结果CMP2的与值(AND)的与值(AND)。
模式A(2)代表VLIW指令“COMPARE1_OR COMPARE2_OROR”,在该指令中所有合成标记字段都指示“或(OR)”。
在模式A(2)的情形中,由VLIW处理器100获得的执行结果PR+指示着执行结果PR与第一比较结果CMP1和第二比较结果CMP2的或值(OR)的或值(OR)。
模式A(3)代表VLIW指令“COMPARE1_ANDCOMPARE2_AND OR”,在该指令中第一合成标记CMB1和第二合成标记CMB2指示“与(AND)”,而第三合成标记CMB3指示“或(OR)”。
在模式A(3)的情形中,由VLIW处理器100获得的执行结果PR+指示着执行结果PR与第一比较结果CMP1和第二比较结果CMP2的或值(OR)的与值(AND)。
模式A(4)代表VLIW指令“COMPARE1_OR COMPARE2_ORAND”,在该指令中第一合成标记CMB1和第二合成标记CMB2指示“或(OR)”,而第三合成标记CMB3指示“与(AND)”。
在模式A(4)的情形中,由VLIW处理器100获得的执行结果PR+指示着执行结果PR与第一比较结果CMP1和第二比较结果CMP2的与值(AND)的或值(OR)。
即,在模式A的指令的情形中,VLIW处理器100能够在一个周期内执行两个比较指令,在执行结果PR与由第一比较指令指示的比较的结果之间的逻辑运算,在执行结果PR与由第二比较指令指示的比较的结果之间的逻辑运算,以及在两个逻辑运算的结果之间的逻辑运算。
<模式B>
模式B是代表着如下的模式:VLIW指令包括第一比较指令COMPARE1和第二比较指令COMPARE2;第一合成标记CMB1和第二合成标记CMB2的字段之一为空;以及第三合成标记CMB3指示“与(AND)”和“或(OR)”之一。模式B包括四个模式B(1)到B(4)。
如图11所示,模式B(1)代表VLIW指令“COMPARE1_ANDCOMPARE2_OR”,在该指令中第一合成标记CMB1指示“与(AND)”;第二合成标记CMB2的字段为空;以及第三合成标记CMB3指示“或(OR)”。
在模式B(1)的情形中,由VLIW处理器100获得的执行结果PR+指示着第二比较结果CMP2与第一比较结果CMP1和执行结果PR的与值(AND)的或值(OR)。
模式B(2)代表VLIW指令“COMPARE1_COMPARE2_ANDOR”,在该指令中第一合成标记CMB1的字段为空;第二合成标记CMB2指示“与(AND)”;以及第三合成标记CMB3指示“或(OR)”。
在模式B(2)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1与第二比较结果CMP2和执行结果PR的与值(AND)的或值(OR)。
模式B(3)代表VLIW指令“COMPARE1_OR COMPARE2_AND”,在该指令中第一合成标记CMB1指示“或(OR)”;第二合成标记CMB2的字段为空;以及第三合成标记CMB3指示“与(AND)”。
在模式B(3)的情形中,由VLIW处理器100获得的执行结果PR+指示着第二比较结果CMP2与第一比较结果CMP1和执行结果PR的或值(OR)的与值(AND)。
模式B(4)代表VLIW指令“COMPARE1_COMPARE2_ORAND”,在该指令中第一合成标记CMB1的字段为空;第二合成标记CMB2指示“或(OR)”;以及第三合成标记CMB3指示“与(AND)”。
在模式B(4)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1与第二比较结果CMP2和执行结果PR的或值(OR)的与值(AND)。
即,在模式B的指令的情形中,VLIW处理器100能够在一个周期内执行两个比较指令,在执行结果PR与由比较指令之一指示的比较的结果之间的逻辑运算,以及在该逻辑运算的结果与另一比较指令的执行结果之间的逻辑运算。
<模式C>
模式C是代表着如下的模式:VLIW指令包括第一比较指令COMPARE1和第二比较指令COMPARE2;第一合成标记CMB1和第二合成标记CMB2的字段为空;而第三合成标记CMB3指示“与(AND)”和“或(OR)”之一。模式C包括两个模式C(1)和C(2)。
如图12所示,模式C(1)代表VLIW指令“COMPARE1_COMPARE2_AND”,在该指令中第三合成标记CMB3指示“与(AND)”。
在模式C(1)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1和第二比较结果CMP2的与值(AND)。
模式C(2)代表VLIW指令“COMPARE1_COMPARE2_OR”,在该指令中第三合成标记CMB3指示“或(OR)”。
在模式C(2)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1和第二比较结果CMP2的或值(OR)。
即,在模式C的指令的情形中,VLIW处理器100能够在一个周期内执行两个比较指令以及在由这两个比较指令指示的比较的结果之间的逻辑运算。
<模式D>
在以上所述的模式A到C中,VLIW指令包括两个比较指令。该模式D代表仅包括一个比较指令(第一比较指令COMPARE1)的VLIW指令。模式D包括三个模式D(1)到D(3)。
如图13所示,模式D(1)代表VLIW指令“COMPARE1_AND”,在该指令中与第一比较指令COMPARE1对应的第一合成标记CMB1指示“与(AND)”。
在模式D(1)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1和执行结果PR的与值(AND)。
模式D(2)代表VLIW指令“COMPARE1_OR”,在该指令中与第一比较指令COMPARE1对应的第一合成标记CMB1指示“或(OR)”。
在模式D(2)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1和执行结果PR的或值(OR)。
模式D(3)代表VLIW指令“COMPARE1”,在该指令中与第一比较指令COMPARE1对应的第一合成标记CMB1的字段为空。
在模式D(3)的情形中,由VLIW处理器100获得的执行结果PR+指示第一比较结果CMP1。
即,在模式D的指令的情形中,VLIW处理器100能够在一个周期内执行一个比较指令。
现在将描述在VLIW处理器100中的实现方式的实例。注意,在下面的描述中,为了便于解释,在具体的程序实例中,指示“与(AND)”的第三合成标记CMB3以“Fand”表示,而指示“或(OR)”的第三合成标记CMB3以“For”表示。在程序实例中,一行指示在一个周期内的处理。
如图14所示,表达式(1)所示的处理能够被划分成五个比较运算A1到A5、四个逻辑运算B1到B4以及用于设置处理结果的C1。根据本实施例的VLIW指令和VLIW处理器100,可以在一个周期内并行地执行两个比较指令,在由比较指令指示的比较的结果与前一执行结果PR(在前一行中的处理结果,从程序的角度来看)之间的逻辑运算,以及这两个逻辑运算的逻辑运算。因此,表达式(1)所示的处理能够按照图14所示的那样来划分,并且能够在不使用任何分支指令的情况下于VLIW处理器100中实现。
图15示出了用于实现在VLIW处理器100中的表达式(1)所示的处理的程序的实例。
程序的第一行代表以下处理:第一比较“SC==0”和第二比较“SC==2”并行执行;在两个比较结果之间的或(OR)操作被执行;以及或(OR)操作的结果被存储于断言寄存器160内。程序的第一行还指示了:两个指令“compare”代表着第一比较指令和第二比较指令,以及第一合成标记CMB1和第二合成标记CMB2的字段为空,这指示着“无需合成(not to synthesize)”。该处理对应于图12所示的模式C(2)的处理。
程序的第二行代表着以下处理:第一比较“val==b”和第二比较“val>b”并行执行,以及第二比较结果与第一比较结果和第一行的执行结果(断言寄存器160的值)的与值(AND)的或值(OR)被获得并被存储于断言寄存器160内。该处理对应于图11所示的模式B(1)处理。
程序的第三行代表着以下处理:第一比较(va1>c)被执行,以及第一比较结果和第二行的执行结果的与值(AND)被获得并被存储于断言寄存器160内。该处理对应于图13所示的模式D(1)的处理。
程序的第四行代表着用于执行指令“mset”的处理,指示出“1”被保存为根据断言寄存器160的值的变元res。
以这种方式,本实施例的VLIW处理器100能够在四个周期内完成表达式(1)所示的处理。
如上所述,在根据分支指令于相关技术的VLIW处理器内实现表达式(1)所示的处理的情形中,当分支开销为两个周期时,需要九个周期(图18)。
图16示出了表达式(2)所示的处理被划分的模式。如图16所示,表达式(2)所示的处理能够被划分成六个比较运算A1到A6、五个逻辑运算B1到B5以及用于设置处理结果的处理C1。
图17示出了当表达式(2)所示的处理按照图16所示的那样划分并且在VLIW处理器100中实现时的程序的实例。
程序的第一行代表着以下处理:第一比较“d02≠0”和第二比较“d12==0”并行执行;对两个比较结果执行与(AND)操作;并且与(AND)运算结果被存储于断言寄存器160内。该处理对应于图12所示的模式C(1)的处理。
程序的第二行代表着以下处理:第一比较“d00≠0”和第二比较“d10=0”并行执行,并且在第一比较结果和第一行的执行结果的或值(OR)与第二比较结果和第一行的执行结果的或值(OR)之间的与值(AND)被获得并被存储于断言寄存器160内。该处理对应于图10所示的模式A(4)的处理。
程序的第三行代表着以下处理:第一比较(d11≠0)和第二比较(d01=0)并行执行,以及在第一比较结果和第二行的执行结果的与值(AND)与第二比较结果和第二行的执行结果的与值(AND)之间的与值(AND)被获得并被存储于断言寄存器160内。该处理对应于图10所示的模式A(1)的处理。
程序的第四行代表着用于执行指令“mset”的处理,指示出“1”被保存为根据断言寄存器160的值的变元res。
以这种方式,本实施例的VLIW处理器100能够在四个周期内完成表达式(2)所示的处理。
如上所述,在根据分支指令于相关技术的VLIW处理器内执行表达式(2)所示的处理的情形中,当分支开销为两个周期时,需要12个周期(图19)。
以这种方式,本实施例的VLIW处理器100能够有效地执行包括多个比较处理的条件判断处理。
由于促使VLIW处理器100在用于图片的边缘检测处理中执行条件判断处理,本发明的发明人已经证实:大约高为典型的VLIW处理器的速度的两倍的速度被获得。
本发明在上文已经参照实施例进行了描述。上述实施例仅作为示例而示出,并且在不脱离本发明的要旨的情况下,能够对上述实施例进行各种改动、添加、省略及组合。本领域技术人员应当理解,包括这些改动、添加、省略及组合的所修改的实例同样属于本发明的范围之内。
例如,在VLIW处理器100中,断言寄存器160被用作用于保存最新的执行结果PR+的寄存器。典型的断言寄存器具有一个位,而通用的寄存器具有16个位或32个位。在VLIW处理器100中,VLIW指令的执行结果是一个位。因此,断言寄存器160的使用还抑制了电路尺寸。通用的寄存器同样可以用于保存最新的执行结果PR+的寄存器。
例如,在如上所描述的那样只执行一个比较指令的情形中,第三合成标记CMB3的字段可以为空。在这种情况下,第三合成标记字段可以用于不同的应用,例如用于其他指令的直接字段(immediate field),而不是使第三合成标记字段保留为空。
此外,权利要求的范围不由以上所描述的实施例来限定。
而且,应当指出,申请人的意图是要包含所有权利要求的要素的等同物,即便是后面在申请过程中的修改。
Claims (11)
1.一种超长指令字VLIW处理器,包括:
第一比较运算单元;
第二比较运算单元;
第一运算单元;
第二运算单元;
第三运算单元;以及
寄存器,其中
所述第一比较运算单元接收第一比较运算信号、第一输入信号和第二输入信号,对所述第一输入信号和所述第二输入信号执行由所述第一比较运算信号指示的比较运算并且输出该比较运算的结果,
所述第二比较运算单元接收第二比较运算信号、第三输入信号和第四输入信号,对所述第三输入信号和所述第四输入信号执行由所述第二比较运算信号指示的比较运算并且输出该比较运算的结果,
所述第一运算单元接收第一控制信号、所述第一比较运算单元的比较结果以及已经保存于所述寄存器内的值,并且根据所述第一控制信号将所述第一比较运算单元的比较结果、所述第一比较运算单元的比较结果和所述寄存器的值的与值以及所述第一比较运算单元的比较结果和所述寄存器的值的或值之一作为第一运算结果输出,
所述第二运算单元接收第二控制信号、所述第二比较运算单元的比较结果以及已经保存于所述寄存器内的值,并且根据所述第二控制信号将所述第二比较运算单元的比较结果、所述第二比较运算单元的比较结果和所述寄存器的值的与值以及所述第二比较运算单元的比较结果和所述寄存器的值的或值之一作为第二运算结果输出,
所述第三运算单元接收第三控制信号、所述第一运算结果和所述第二运算结果,并且根据所述第三控制信号将所述第一运算结果、所述第一运算结果和所述第二运算结果的与值以及所述第一运算结果和所述第二运算结果的或值之一作为执行结果输出到所述寄存器,以及
所述寄存器重新保存并输出接收自所述第三运算单元的所述执行结果。
2.根据权利要求1所述的VLIW处理器,还包括用于执行包括第一比较指令、第一合成标记、第二比较指令、第二合成标记和第三合成标记的一个VLIW指令的控制单元,所述第一合成标记对应于所述第一比较指令并且指示“无需合成”、“与”和“或”之一,所述第二合成标记对应于所述第二比较指令并且指示“无需合成”、“与”和“或”之一,所述第三合成标记指示“与”和“或”之一,其中
所述控制单元将作为所述第一比较运算信号、所述第一输入信号和所述第二输入信号的分别指示包含于所述第一比较指令内的比较算子和两个输入操作数的若干信号分别输出到所述第一比较运算单元,
所述控制单元将作为所述第二比较运算信号、所述第三输入信号和所述第四输入信号的分别指示包含于所述第二比较指令内的比较算子和两个输入操作数的若干信号分别输出到所述第二比较运算单元,并且
所述控制单元将与所述第一合成标记对应的所述第一控制信号、与所述第二合成标记对应的所述第二控制信号以及与所述第三合成标记对应的所述第三控制信号分别输出到所述第一运算单元、所述第二运算单元和所述第三运算单元。
3.根据权利要求2所述的VLIW处理器,其中当所述第二比较指令为空时或者当所述第三合成标记为空时,所述控制单元将与所述第一比较指令对应的第一比较运算信号、所述第一输入信号和所述第二输入信号输出到所述第一比较运算单元,并且将用于指示所述第一运算结果被作为所述执行结果输出的所述第三控制信号输出到所述第三运算单元。
4.根据权利要求1所述的VLIW处理器,其中
所述第一运算单元包括:
第一与门和第一或门,所述第一与门和所述第一或门中的每一个被配置用于接收所述第一比较运算单元的比较结果与已经保存于所述寄存器内的值;以及
第一选择器,用于接收所述第一控制信号、所述第一比较运算单元的比较结果、所述第一与门的输出以及所述第一或门的输出,并且
所述第一选择器根据所述第一控制信号选择三个输入之一作为所述第一运算结果,并且输出所选择的输入。
5.根据权利要求1所述的VLIW处理器,其中
所述第二运算单元包括:
第二与门和第二或门,所述第二与门和所述第二或门中的每一个被配置用于接收所述第二比较运算单元的比较结果与已经保存于所述寄存器内的值;以及
第二选择器,用于接收所述第二控制信号、所述第二比较运算单元的比较结果、所述第二与门的输出以及所述第二或门的输出,并且
所述第二选择器根据所述第二控制信号选择三个输入之一作为所述第二运算结果,并且输出所选择的输入。
6.根据权利要求1所述的VLlW处理器,其中
所述第三运算单元包括:
第三与门和第三或门,所述第三与门和所述第三或门中的每一个被配置用于接收所述第一运算结果和所述第二运算结果;以及
第三选择器,用于接收所述第三控制信号、所述第一运算结果、所述第三与门的输出以及所述第三或门的输出,并且
所述第三选择器根据所述第三控制信号选择三个输入之一作为所述执行结果,并且输出所选择的输入。
7.根据权利要求1所述的VLIW处理器,其中所述寄存器是断言寄存器。
8.一种VLIW指令的指令结构,包括:
用于存储第一比较指令的第一比较指令字段;
用于存储第一合成标记的第一合成标记字段;
用于存储第二比较指令的第二比较指令字段;
用于存储第二合成标记的第二合成标记字段;以及
用于存储第三合成标记的第三合成标记字段,
所述第一合成标记将由所述第一比较指令指示的比较的结果、所述比较的结果和前一VLIW指令的执行结果的与值以及所述比较的结果和所述前一VLIW指令的执行结果的或值之一指示为第一运算结果,
所述第二合成标记将由所述第二比较指令指示的比较的结果、所述第二比较指令指示的比较的结果和所述前一VLIW指令的执行结果的与值以及所述第二比较指令指示的比较的结果和所述前一VLIW指令的执行结果的或值之一指示为第二运算结果,并且
所述第三合成标记将所述第一运算结果、所述第一运算结果和所述第二运算结果的与值以及所述第一运算结果和所述第二运算结果的或值之一指示为当前VLIW指令的执行结果。
9.根据权利要求8所述的指令结构,其中当所述第二比较指令字段和所述第三合成标记字段之一为空字段时,所述空字段指示所述第一运算结果被作为所述当前VLIW指令的执行结果输出。
10.一种用于在VLIW处理器中执行VLIW指令的方法,所述VLIW处理器包括寄存器并且被配置用于接收VLIW指令,所述VLIW指令包括第一比较指令、第二比较指令和三个合成标记,所述三个合成标记包括各自指示“无需合成”、“与”和“或”之一的第一和第二合成标记以及指示“与”和“或”之一的第三合成标记,所述方法包括:
在所述第一合成标记指示“无需合成”时将由所述第一比较指令指示的比较的结果作为第一运算结果输出,而在其他情况下,将通过对由所述第一比较指令指示的比较的结果和已经保存于所述寄存器内的值执行由所述第一合成标记指示的逻辑运算而获得的值作为所述第一运算结果输出;
在所述第二合成标记指示“无需合成”时将由所述第二比较指令指示的比较的结果作为第二运算结果输出,而在其他情况下,将通过对由所述第二比较指令指示的比较的结果和已经保存于所述寄存器内的值执行由所述第二合成标记指示的逻辑运算而获得的值作为所述第二运算结果输出;
将通过对所述第一运算结果和所述第二运算结果执行由所述第三合成标记指示的逻辑运算而获得的值作为当前VLIW指令的执行结果输出到所述寄存器;以及
由所述寄存器重新保存并输出所述执行结果。
11.根据权利要求10所述的执行方法,其中当所述第二比较指令和所述第三合成标记之一为空时,所述第一运算结果被作为所述当前VLIW指令的执行结果输出到所述寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011262706A JP5813484B2 (ja) | 2011-11-30 | 2011-11-30 | Vliwプロセッサと命令構造と命令実行方法 |
JP2011-262706 | 2011-11-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150141A true CN103150141A (zh) | 2013-06-12 |
CN103150141B CN103150141B (zh) | 2017-03-01 |
Family
ID=47357947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210505766.6A Active CN103150141B (zh) | 2011-11-30 | 2012-11-30 | Vliw处理器和指令执行方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9250898B2 (zh) |
EP (1) | EP2600241B1 (zh) |
JP (1) | JP5813484B2 (zh) |
KR (1) | KR101986669B1 (zh) |
CN (1) | CN103150141B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107340992A (zh) * | 2017-06-15 | 2017-11-10 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030061471A1 (en) * | 1999-07-23 | 2003-03-27 | Masahito Matsuo | Data processor |
CN1469241A (zh) * | 2002-06-14 | 2004-01-21 | ���µ�����ҵ��ʽ���� | 处理器、程序变换装置和变换方法以及计算机程序 |
CN1523495A (zh) * | 1997-06-16 | 2004-08-25 | ���µ�����ҵ��ʽ���� | 高效执行特长指令字的处理器 |
US20040215940A1 (en) * | 1998-11-27 | 2004-10-28 | Matsushita Electric Industrial Co., Ltd. | Processor, compiling apparatus, and compile program recorded on a recording medium |
CN101965554A (zh) * | 2008-03-11 | 2011-02-02 | 高通股份有限公司 | 选择性地提交已执行指令的结果的系统和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659722A (en) | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JPH09265397A (ja) * | 1996-03-29 | 1997-10-07 | Hitachi Ltd | Vliw命令用プロセッサ |
JP3442225B2 (ja) | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
JP3670668B2 (ja) * | 1997-01-24 | 2005-07-13 | 株式会社ルネサステクノロジ | データ処理装置 |
US6366999B1 (en) | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
JP3830683B2 (ja) * | 1998-12-28 | 2006-10-04 | 富士通株式会社 | Vliwプロセッサ |
JP3475860B2 (ja) | 1999-06-24 | 2003-12-10 | 日本電気株式会社 | 演算処理装置 |
US7028170B2 (en) * | 2000-03-08 | 2006-04-11 | Sun Microsystems, Inc. | Processing architecture having a compare capability |
JP2004021890A (ja) * | 2002-06-20 | 2004-01-22 | Pacific Design Kk | データ処理装置 |
JP4283131B2 (ja) * | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
JP3899114B2 (ja) | 2006-04-28 | 2007-03-28 | 松下電器産業株式会社 | プロセッサ |
JP4228241B2 (ja) | 2006-12-13 | 2009-02-25 | ソニー株式会社 | 演算処理装置 |
JP2011145886A (ja) * | 2010-01-14 | 2011-07-28 | Nec Corp | 情報処理装置 |
US8843730B2 (en) * | 2011-09-09 | 2014-09-23 | Qualcomm Incorporated | Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination |
-
2011
- 2011-11-30 JP JP2011262706A patent/JP5813484B2/ja active Active
-
2012
- 2012-11-27 US US13/686,828 patent/US9250898B2/en active Active
- 2012-11-29 KR KR1020120137121A patent/KR101986669B1/ko active IP Right Grant
- 2012-11-29 EP EP12194717.0A patent/EP2600241B1/en active Active
- 2012-11-30 CN CN201210505766.6A patent/CN103150141B/zh active Active
-
2016
- 2016-01-06 US US14/989,647 patent/US9606798B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1523495A (zh) * | 1997-06-16 | 2004-08-25 | ���µ�����ҵ��ʽ���� | 高效执行特长指令字的处理器 |
US20040215940A1 (en) * | 1998-11-27 | 2004-10-28 | Matsushita Electric Industrial Co., Ltd. | Processor, compiling apparatus, and compile program recorded on a recording medium |
US20030061471A1 (en) * | 1999-07-23 | 2003-03-27 | Masahito Matsuo | Data processor |
CN1469241A (zh) * | 2002-06-14 | 2004-01-21 | ���µ�����ҵ��ʽ���� | 处理器、程序变换装置和变换方法以及计算机程序 |
CN101965554A (zh) * | 2008-03-11 | 2011-02-02 | 高通股份有限公司 | 选择性地提交已执行指令的结果的系统和方法 |
Non-Patent Citations (1)
Title |
---|
VINOD KATHAIL,MICHAEL S.SCHLANSKER,B.RAMAKRISHNA RAU: ""HPL-PD Architecture Specification: Version 1.1"", 《HP LABS: TECHNICAL REPORTS》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107340992A (zh) * | 2017-06-15 | 2017-11-10 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
CN107340992B (zh) * | 2017-06-15 | 2020-07-28 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
Also Published As
Publication number | Publication date |
---|---|
CN103150141B (zh) | 2017-03-01 |
US9250898B2 (en) | 2016-02-02 |
US9606798B2 (en) | 2017-03-28 |
JP2013114608A (ja) | 2013-06-10 |
KR20130061102A (ko) | 2013-06-10 |
EP2600241B1 (en) | 2021-06-09 |
US20160117168A1 (en) | 2016-04-28 |
KR101986669B1 (ko) | 2019-06-07 |
EP2600241A3 (en) | 2014-07-09 |
JP5813484B2 (ja) | 2015-11-17 |
US20130138928A1 (en) | 2013-05-30 |
EP2600241A2 (en) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531540B2 (en) | Processing apparatus and processing method with dynamically configurable operation bit width | |
JP5647859B2 (ja) | 乗累算演算を実行するための装置および方法 | |
KR101482540B1 (ko) | 중첩된 피연산자들을 갖는 simd 내적 연산들 | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
US20200334042A1 (en) | Method and device (universal multifunction accelerator) for accelerating computations by parallel computations of middle stratum operations | |
US6426746B2 (en) | Optimization for 3-D graphic transformation using SIMD computations | |
US9354893B2 (en) | Device for offloading instructions and data from primary to secondary data path | |
WO2009065072A1 (en) | Runtime instruction decoding modification in a multi-processing array | |
US7539847B2 (en) | Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages | |
CN103150141A (zh) | Vliw处理器、指令结构和指令执行方法 | |
CN102955683B (zh) | 使用中断信号定义指令解码的处理器 | |
Glossner et al. | HSA-enabled DSPs and accelerators | |
USH1385H (en) | High speed computer application specific integrated circuit | |
Jamro et al. | Implementation of convolution operation on general purpose processors | |
US7107478B2 (en) | Data processing system having a Cartesian Controller | |
US20060206695A1 (en) | Data movement within a processor | |
Ryoo et al. | Leveraging parallelism in the presence of control flow on CGRAs | |
CN117806712A (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
CN117055962A (zh) | 数字信号处理器、电子设备以及数据处理方法 | |
Azarmehr et al. | A Simple Central Processing Unit with Multi-Dimensional Logarithmic Number System Extensions | |
Luo | Design ofa Pipelined CPU including FPU based on | |
Le-Huu et al. | A micro-architecture design for the 32-bit VLIW DSP processor core | |
Jo et al. | Enhancing Utilization of Integer Functional Units for High-Throughput Floating Point Operations on Coarse-Grained Reconfigurable Architecture | |
CA2220993A1 (en) | Single-instruction-multiple-data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Tokyo, Japan Applicant after: Renesas Electronics Corporation Address before: Kanagawa, Japan Applicant before: Renesas Electronics Corporation |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |