CN101438235B - 将硬件结束循环信息编码到指令上 - Google Patents
将硬件结束循环信息编码到指令上 Download PDFInfo
- Publication number
- CN101438235B CN101438235B CN2007800163914A CN200780016391A CN101438235B CN 101438235 B CN101438235 B CN 101438235B CN 2007800163914 A CN2007800163914 A CN 2007800163914A CN 200780016391 A CN200780016391 A CN 200780016391A CN 101438235 B CN101438235 B CN 101438235B
- Authority
- CN
- China
- Prior art keywords
- instruction
- bag
- information
- hardware
- group
- 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
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000000518 rheometry 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
-
- 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
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供用于对关于一组包的硬件循环的信息进行编码的方法及设备,每一包(400)均含有指令。将所述信息编码到所述组包中的至少一个指令(300)的一个或一个以上位中。所述信息可指示包是不是所述循环的结束包。可对关于两个硬件循环的信息进行编码,其中将关于第一循环的信息编码到每一包中的第一位置处的指令中,且将关于第二循环的信息编码到每一包中的第二位置处的指令中。可将结束指令信息编码到为已编码循环信息保留的相同位位置处不具有已编码循环信息的指令中,所述结束指令信息指示指令是否是包的最后指令以及包的长度。
Description
技术领域
本发明实施例大体来说涉及硬件循环,且更具体来说涉及将硬件结束循环信息编码到指令上。
背景技术
当前一种广泛使用的计算机架构为极长指令字(VLIW)架构。在VLIW架构下,指令被分组成若干含有一个或一个以上指令的包且并行地被读取及执行。VLIW架构使用几个执行单元或算术逻辑单元(ALU)以使得所述架构能够同时执行包中的指令,其中每一执行单元或ALU均能够执行特定类型的指令。包中指令的最大数目通常由供用于处理指令的执行单元或ALU的数目来确定。例如,如果存在四个供用于处理指令的执行单元或ALU,则通常每一包最多允许四个指令。此允许并行处理所述包中的每一指令以使得不会有指令等待所述包中另一指令的处理结束。对于VLIW架构来说,可使用编码软件(例如,编译器、汇编程序工具等)来将指令分组为若干含有一个或一个以上指令的包(其中同一包中的指令不相互依赖,因而其可并行地执行)并对所述包进行编码以产生可执行代码。
通常在一个“循环”中指定一组指令或包,以使所述指令或包重复特定数目的迭代。指令或包循环可实施于软件或硬件中。当实施于软件中时,使用额外的指令来规定所述循环(例如,算术、比较及分支类型指令)。
当实施于硬件中时,通常使用寄存器来存储所述循环的开始及结束指令或包的存储器地址并存储循环计数。然后使用所述寄存器来确定何时已到达循环结束、记录循环计数并返回到循环开始处,直到已执行了所期望数目的循环/重复。
在VLIW架构下,硬件循环包括一组一个或一个以上的包,所述包重复特定的次数。常规上,在VLIW架构下,在包的单独标头部分中含有规定硬件循环的信息。其它已知的方法包含使包中包含可规定硬件循环信息的单独的专用指令。然而,标头数据或单独的循环指令可增加所述包的数据开销及处理次数。因此,所属技术领域中需要一种用于需要较小的数据及处理开销来对硬件循环信息进行编码的方法。
发明内容
所揭示的某些方面提供一种用于对关于至少一个硬件循环的信息进行编码的方法及设备,所述硬件循环包括将被执行特定数目的迭代的一组包(其中包含开始及结束包),其中每一包均含有一个或一个以上指令且每一指令均包括一组位。在某些方面中,将所述硬件循环信息编码到所述组包中的至少一个经指定指令的一个或一个以上位(处于一个或一个以上预定的位位置处)中。所述至少一个经指定指令包括最初不用于规定硬件循环的指令(即,最初不关于硬件循环的指令)。
硬件循环具有界定所述循环边界的开始包及结束包。在某些方面中,所述已编码硬件循环信息包括结束包信息,其中被编码在特定包的经指定指令中的信息指示所述特定包是所述硬件循环的结束包,或者指示所述特定包不是所述硬件循环的结束包(因此还指示继续向下进行并处理下一包)。在这些方面中,含有循环结束信息的经指定指令是不用于规定所述硬件循环的结束包的指令(即,不是结束循环指令)。
在某些方面中,所述硬件循环信息并不编码在经指定指令的开端处,而是编码在所述经指定指令的位内,以使得所述经指定指令的位处于所述已编码硬件循环信息的位之前及之后。例如,如果每一指令含有32个位,则所述硬件循环信息可被编码在经指定指令的中间位(例如,第15个及第16个位)中,其中所述经指定指令的剩余位(例如,第1个到第14个位及第17个到第32个位)用于规定所述经指定指令。
在某些方面中,所述组包是一组极长指令字(VLIW)包,且所述硬件循环信息被编码到所述组VLIW包中的每一VLIW包中的预定位置处的指令中。例如,所述硬件循环信息可被编码到每一VLIW包的第一指令中。
在某些方面中,对关于两个硬件循环的信息进行编码,其中将关于第一硬件循环的信息编码到每一包中的第一预定位置处的指令中,且将关于第二硬件循环的信息编码到每一包中的第二预定位置处的指令中。例如,可将关于第一硬件循环的信息编码到每一包的第一指令中,且将关于第二硬件循环的信息编码到每一包的第二指令中。
在某些方面中,将结束指令信息编码到包中不具有已编码硬件循环信息的至少一个指令中。在这些方面中,将所述结束指令信息编码在为已编码硬件循环信息保留的相同预定位位置中进行。所述已编码结束指令信息指示指令是否是包的最后指令(且因此还指示所述包的长度,即,所述包含有多少指令)。
附图说明
图1显示产生已编码VLIW包的编译过程的概念图;
图2显示极长指令字(VLIW)计算机架构的概念图;
图3是经指定以含有已编码硬件循环信息的包的指令的概念图;
图4显示具有两个指令的例示性包的概念图;
图5显示具有三个指令的例示性包的概念图;
图6显示具有四个或四个以上指令的例示性包的概念图;
图7显示具有最多的四个指令的包的已编码结束循环及指令信息的值的所有变分的例示性表;
图8是一种用于将硬件循环信息编码到硬件循环中的包的一个或一个以上指令中的方法的流程图;且
图9显示某些实施例中用于数字信号处理器的极长指令字(VLIW)计算机架构的概念图。
具体实施方式
本文中使用的词“例示性”是指“充当实例、示例或例证”。本文所描述的任何“例示性”实施例未必解释为比其它实施例更优选或更有利。
图1显示产生已编码VLIW包的编译过程的概念图。如图1所示,编程代码105首先生成(例如,由编程器生成)以规定多个指令。每一指令规定特定的计算或操作(例如,移位、相乘、加载、存储等)。在某些实施例中,所述多个指令包含规定将被执行特定次数(即,被执行特定数目的迭代)的一组指令的硬件循环指令,所述组指令包括硬件循环。
然后将编程代码中的指令分组为若干含有一个或一个以上指令的包(例如,由编程器或VLIW编译器分组)以产生指令110的包。所述指令被分组以使同一包的指令不具有依赖性(且因此可并行执行)。一个包中的最大指令数目通常由装置中可供用于处理指令的执行单元或ALU的数目来确定。硬件循环的所述组指令也被分组为若干包以产生将被执行特定次数的包括一组一个或一个以上包(其中包含开始包及结束包)的硬件循环。硬件循环的结束包通常由指示符(例如汇编语法中的“结束循环”)来标记。
然后由VLIW编译器将指令包(源代码)编译成二进制代码(目标代码)的已编码指令包115。每一指令均包括预定数目的位,例如,每一指令可具有32位的字宽度。当对包中的一个或一个以上指令进行编码时,连续地对所述指令进行编码以基本产生单个较大的已编码指令(即,已编码VLIW包)。所述包中的每一指令均具有相对于所述包中的其它指令的特定排序或位置(第一、第二、第三等),且根据其排序或位置存储到存储器(如下文结合图2所论述)。例如,包的第一指令通常存储在与所述包的第二指令相比更低的存储器地址中,所述第二指令具有与所述包的第三指令相比更低的存储器地址。
当所述VLIW编译器接收包的硬件循环时,所述VLIW编译器还必须对关于所述硬件循环的信息进行编码。例如,VLIW编译器可接收标记为硬件循环的结束包(例如,由汇编语法中的“结束循环”标记)的包。在现有技术中,将识别所述结束包的信息编码在结束包的单独标头部分中。其它已知的方法包含使包中具有指示所述包为结束包的单独的已编码指令。然而,标头数据及单独的包结束指令可增加所述包的数据开销及处理时间。
在某些实施例中,将包的硬件循环的结束包信息编码到所述硬件循环中的一个或一个以上包的一个或一个以上指令中。在某些实施例中,将指示循环的结束包的信息编码到所述结束包的指令中。同样,不再需要含有结束包信息的单独标头。另外,将所述结束包信息编码到一指令中,所述指令不是结束循环指令,而是规定不同类型的指令(例如,移位、相乘、加载等)的指令。同样,也不需要单独的结束循环指令来指示结束包。
图2显示极长指令字(VLIW)计算机架构200的概念图。VLIW架构200包含存储器210、处理单元230及将存储器210耦合到处理单元230的一个或一个以上总线220。
存储器210存储数据及指令(以VLIW编译器产生的VLIW包的形式,其中每一VLIW包均包括一个或一个以上指令)。包的每一指令均具有存储器210中的特定地址,其中包中的第一指令通常具有与所述包的最后指令相比更低的存储器地址。存储器的寻址方案在所属技术领域中是众所周知的,且此处不再详细论述。存储器210中的指令经由总线220加载到处理单元230。每一指令通常均为预定宽度。
处理单元230包括:定序器235、用于多个执行单元245的管线240、通用寄存器堆250(其中包括多个通用寄存器)及控制寄存器堆260。处理单元210可包括中央处理单元、微处理器、数字信号处理器等等。
如上所述,每一VLIW包均包括一个或一个以上指令,一个包中指令的最大数目通常由处理单元230中可供用于处理指令的执行管线(例如,ALU)的数目确定。通常,每一指令均含有关于需用于处理指令的执行单元的类型的信息,其中每一执行单元均仅可处理一种特定类型的指令(例如,移位、加载等)。因此,仅有特定数目的可供用于处理特定类型的指令的执行单元。同样,基于包中指令的类型及可用执行单元的类型在所述包中将指令分组以便可并行执行所述指令。例如,如果仅有一个可处理移位型指令的可用执行单元且仅有两个可处理加载型指令的可用执行单元,则不会将两个移位型指令分组到同一包中,也不会将三个加载型指令分组到同一包中。
定序器235从存储器210接收指令包并为每一所接收包的每一指令确定适当的管线240/执行单元245(使用所述指令中含有的信息)。在为包中的每一指令做出此确定后,定序器235将指令输入到适当的管线240中以由适当的执行单元245来进行处理。
接收指令的每一执行单元245均使用通用寄存器堆250来执行指令。如所属技术领域中已众所周知,通用寄存器堆250包括从存储器210加载需用于执行指令的数据的寄存器阵列。在由执行单元245执行包的指令之后,将所得数据存储到通用寄存器堆250且然后将其加载并存储到存储器210。经由总线220将数据加载到存储器210及从存储器210加载数据。通常由多个执行单元245在一个时钟循环中并行执行包中的指令。
为执行指令,执行单元245还可使用控制寄存器堆260。控制寄存器260通常包括一组特殊寄存器,例如,变址寄存器、状态寄存器及判定寄存器。控制寄存器260还可用于存储关于硬件循环的信息,例如,循环计数(迭代计数)及开始循环(开始包)地址。如某些实施例中所描述,控制寄存器260中所存储的硬件循环信息可与已编码结束循环(结束包)信息联合使用以执行特定数目的迭代的硬件循环。特定来说,当达到结束包(由所述包的指令中的已编码结束循环信息指示)时,循环计数减少且在循环计数为正的情况下循环返回到开始包。
图3是包中经指定以含有已编码硬件循环信息的指令300的概念图。在某些实施例中,含有经编码硬件循环信息的经指定指令300不是最初含有硬件循环信息或用于规定硬件循环的指令(即,是诸如移位或加载指令的非硬件循环指令)。指令300包括包含第一位(O)、最后位(N)的多个位及编码在所述指令的第一位与最后位之间的一个或一个以上预定位位置处的一个或一个以上位305中的结束循环信息。应注意,规定经指定指令的剩余位310定位于已编码硬件循环信息的位的任一侧(即,之前及之后)。例如,如果经指定指令为移位指令,则规定所述移位指令的位定位于已编码硬件循环信息的位之前及之后。
在某些实施例中,结束包信息被编码到经指定指令300中,经指定指令300是最初不含有结束包信息或用于规定硬件循环的结束包的指令。在某些实施例中,编码在特定包的经指定指令300中的结束包信息指示(使用第一二进制代码)所述特定包是硬件循环的结束包或指示(使用第二二进制代码)所述特定包不是硬件循环的结束包(因此还指示继续向下进行并处理下一包)。例如,预定的位位置处的2位二进制代码“10”可指示所述包是结束包,且预定位位置处的2位二进制代码“01”可指示所述包不是硬件循环的结束包。
如上文所论述,包中的每一指令均具有相对于所述包的其它指令的特定排序或位置(第一、第二、第三等)。在某些实施例中,将结束循环信息编码到硬件循环的每一包中的相同预定位置(相对于同一包中的其它指令的位置)处的指令(称作经指定指令)中。例如,可将结束循环信息编码到硬件循环中的每一包的第一指令中。
在某些实施例中,规定关于两个硬件循环的信息,第一硬件循环包括将被执行特定数目的迭代的第一组包,且第二硬件循环包括将被执行特定数目的迭代的第二组包。例如,所述第一硬件循环可以是内部循环且所述第二硬件循环可以是含有所述内部循环的外部循环。所述第一及第二硬件循环还可以是单独的独立循环。在这些实施例中,将关于第一硬件循环的信息编码到所述第一组包中的每一包中的相同第一预定位置处的指令中,且将关于第二硬件循环的信息编码到所述第二组包中的每一包中的相同第二预定位置处的指令中。例如,可将第一硬件循环的结束循环信息编码到第一硬件循环中的每一包的第一指令(经指定指令)中,且可将第二硬件循环的结束循环信息编码到第二硬件循环中的每一包的第二指令(经指定指令)中。
在某些实施例中,含有第一硬件循环的结束循环信息的包含有两个或两个以上指令。如果这一包中仅有一个指令,则添加NOP指令以达到至少两个指令。在这些实施例中,所述包的最后指令含有一个或一个以上预定位位置处的一个或一个以上位中指示所述指令是所述包的最后指令(且因此还指示所述包的长度,即,所述包含有多少指令)的已编码信息(结束指令信息)。在某些实施例中,将结束指令信息编码到不具有已编码硬件循环信息的指令中,且将其编码在为已编码硬件循环信息保留的相同预定位位置中。
图4显示具有第一指令(指令A)及第二指令(指令B)的例示性包400的概念图。在图4的实例中,每一指令包括32个位,其中结束循环或结束包信息被编码到所述指令的第15个及第16个位405及406(位编号14与15)中。每一指令的剩余位410(即,第1个到第14个位及第17个到第32个位)均用于规定实际指令(例如,相乘运算、加载运算等)。在其它实施例中,指令可具有其它位宽度且/或已编码信息可含纳于所述指令的其它位中。在图4的实例中,将关于第一硬件循环的结束循环信息编码到第一指令中(例如,其中二进制代码“10”指示包400为结束包)且将结束指令信息编码到最后指令(例如,其中二进制代码“11”指示指令B为包400的最后指令)。
在某些实施例中,含有第二硬件循环的结束循环信息(在经指定指令中)的包含有三个或三个以上指令。如果这一包中仅有一个或两个指令,则添加NOP指令以达到至少三个指令。在这些实施例中,所述包的最后指令含有一个或一个以上预定位位置处的一个或一个以上位中指示所述指令是所述包的最后指令(且因此还指示所述包的长度,即,所述包含有多少指令)的已编码信息(结束指令信息)。在某些实施例中,将结束指令信息编码到不具有已编码硬件循环信息的指令中,且将其编码在为已编码硬件循环信息保留的相同预定位位置中。
图5显示具有第一指令(指令A)、第二指令(指令B)及第三指令(指令C)的例示性包500的概念图。在图5的实例中,每一指令均包括32个位,其中结束循环或结束包信息被编码到所述指令的第15个及第16个位505及506中。每一指令的剩余位510均用于规定实际指令。在图5的实例中,将关于第一硬件循环的结束循环信息编码到第一指令中,将关于第二硬件循环的结束循环信息编码到第二指令中(例如,其中二进制代码“10”指示包500是第二硬件循环的结束包),且将结束指令信息编码到最后指令中。
对于含有四个或四个以上指令的包来说,包中不经指定以含有已编码结束循环或结束包信息的指令可含有(在为已编码结束循环及结束指令信息保留的相同位位置处)无意义的二进制代码,所述代码可以是除用于指示包的最后指令的代码之外的任何代码。图6显示具有四个或四个以上指令(指令A、B、C等)的例示性包600的概念图。在图6的实例中,每一指令均包括32个位,其中结束循环或结束包信息被编码到所述指令的第15个及第16个位605及606中。每一指令的剩余位610均用于规定实际指令。在图6的实例中,将关于第一及第二硬件循环的结束循环指令编码到第一及第二指令(指令A与B)中且将结束指令信息编码到最后指令中。所述剩余指令(例如,指令C)通常可含有相同预定位位置(例如,第15个及第16个位)处的任何二进制代码(除用于指示包的最后指令的代码之外),因为这些位位置处的代码在剩余指令中将不再是有意义的。应注意,在图4到6中所示的包400、500及600中,不包含标头。
在某些实施例中,为已编码结束循环信息、结束包信息或无意义信息(零代码)保留一组包中的每一指令中的相同一个或一个以上预定位位置。在上文图4到6中显示的实例中,为此类型的信息保留每一指令(32位指令的)的第15个及第16个位。在其它实施例中,指令可具有其它位宽度且/或已编码信息可含纳于所述指令的其它位位置中。每一指令的剩余位(即,未保留的位)均用于规定实际指令(例如,相乘运算、加载运算等)。
图7显示具有最多四个指令的包的已编码结束循环及结束指令信息的值的所有变化的例示性表。对于图7的实例表,应注意以下几点:
-指令A是包中的第一指令(具有所述包中的最低存储器地址),指令B是包中的第二指令(具有所述包中的第二最低存储器地址),指令C是包中的第三指令(具有所述包中的第二最高存储器地址),且指令D是包中的第四指令(具有所述包中的最高存储器地址);
-将结束循环信息、结束指令信息及无意义信息作为2位二进制代码编码到每一指令的相同所保留位位置“PP”中;
-将第一硬件循环的结束循环信息编码到每一包的第一指令(指令A)中,其中二进制代码“10”指示所述包是结束包,且二进制代码“01”指示所述包不是第一硬件循环的结束包;
-将第二硬件循环的结束循环信息编码到每一包的第二指令(指令B)中,其中二进制代码“10”指示所述包为结束包,且二进制代码“01”指示所述包不是第二硬件循环的结束包;且
-将结束指令信息编码到每一包的最后指令中,其中二进制代码“11”指示所述指令是所述包的最后指令(且因此还指示所述包的长度,即,所述包含有多少指令)。
然而,在其它实施例中,包可具有多于最多的四个指令,可用不同数目的位来对结束循环及结束指令信息进行编码,可将第一硬件循环的结束循环信息编码到不同于第一指令的指令中,可将第二硬件循环的结束循环信息编码到不同于第二指令的指令中,可使用不同的二进制代码来指示包是或不是结束包,或可使用不同的二进制代码来指示包的最后指令。
图8是用于将硬件循环信息编码到一个或一个以上指令中的方法800的流程图。在某些实施例中,方法800中的某些步骤实施于硬件或软件中,例如,由VLIW编译器来实施。方法800的步骤仅用于图解说明的目的,且在其它实施例中,步骤的次序或编号可不同或可互换。
方法800在规定多个指令的编程代码形成(805处)时开始,所述指令包含规定将被执行特定次数(即,被执行特定数目的迭代)的一组指令的硬件循环指令。所述组指令包括硬件循环。
然后将所述编程代码中的指令分组(在810处)为若干含有一个或一个以上指令的包。将所述指令分组以使相同包的指令不具有依赖性且可并行执行。还将硬件循环的所述组指令分组为若干包以产生包括将被执行特定次数的一组包的硬件循环,所述硬件循环的结束包由指示符(例如汇编语法中的“结束循环”)来标记。
然后将所述指令包(源代码)编译成二进制代码形式的已编码指令包(目标代码)(在815处)。当对硬件循环的结束包信息进行编码时,方法800将所述结束包信息编码到硬件循环中的一个或一个以上包的一个或一个以上指令中。在某些实施例中,将关于第一循环的结束循环信息编码到所述包中的第一预定位置处的指令中,且将关于第二循环的结束循环信息编码到所述包中的第二预定位置处的指令中。还将结束指令信息编码到包中不具有已编码硬件循环信息的至少一个指令中,将所述结束指令信息编码在为已编码硬件循环信息保留的相同预定位位置处。然后方法800结束。
图9显示某些实施例中用于数字信号处理器(DSP)的极长指令字(VLIW)计算机架构900的概念图。VLIW架构900包含存储器910及DSP930,其中指令加载总线920、数据加载总线922及数据加载/存储总线924将存储器910耦合到DSP930。
存储器910存储数据及指令(以具有一个到四个指令的VLIW包的形式)。存储器910中的指令经由指令加载总线920加载到DSP930。在某些实施例中,每一指令均具有经由具有4个字宽度的128位指令加载总线920加载到DSP930的32位字宽度。在某些实施例中,存储器910是统一的字节可寻址存储器,具有可存储指令及数据两者的32位地址空间,且以小端模式来操作。
DSP930包括:定序器935、用于四个逻辑执行单元945的四个管线940、通用寄存器堆950(其中包括多个通用寄存器)及控制寄存器堆960。通常,当存在四个可用管线940时,从编程器的角度来说,存在四个可供用于处理指令的“狭槽”。然而,从硬件的角度来说,还存在供用于处理分支类型指令的额外执行单元,其中所述额外执行单元可从所述“狭槽”的一个子集中产生。定序器935从存储器910接收指令包并为每一所接收包的每一指令确定适当的管线940/执行单元945(使用所述指令中含有的信息)。在为包的每一指令做出此确定后,定序器935将所述指令输入到适当的管线940中以由适当的执行单元945进行处理。
执行单元945包括向量移位单元、向量MAC单元(用于相乘指令)、加载单元及加载/存储单元。所述向量移位单元执行移位指令,例如S型(移位及位处理)、A64型(复杂算术)、A32型(简单算术)、J型(流变化或跳跃/分支)及CR型(涉及控制寄存器)指令。所述向量MAC单元执行相乘指令,例如M型(相乘)、A64型、A32型、J型及JR型(涉及寄存器的流变化指令)指令。所述加载单元将来自存储器910的数据加载并读取到通用寄存器堆950并执行加载型及A32型指令。所述加载/存储单元将来自通用寄存器堆950的数据读取并存储回到所述存储器并执行加载型、存储型及A32型指令。另外,每一执行单元945通常均可执行许多常见的算术及逻辑运算。
接收指令的每一执行单元945均使用由四个执行单元945共享的通用寄存器堆950来执行所述指令。在某些实施例中,通用寄存器堆950包括可作为单个寄存器或作为经对准的64位的寄存器对来存取(使得指令可对32位或64位的值进行操作)的32个32位寄存器。指令所需要的数据经由64位的数据加载总线922加载到通用寄存器堆950。在由执行单元945执行包的指令之后,将所得数据存储到通用寄存器堆950且然后经由64位数据加载/存储总线924将其加载并存储到存储器910。通常包的一个到四个指令由四个执行单元945在一个时钟循环中并行执行(其中在每一时钟循环中管线940接收并处理最多一个指令)。
为执行指令,执行单元945还可使用控制寄存器堆960。控制寄存器堆960包括一组特殊寄存器,例如,变址寄存器、状态寄存器及判定寄存器。控制寄存器960还可用于存储关于硬件循环的信息,例如,循环计数(迭代计数)及开始循环(开始包)地址。如某些实施例中所描述,控制寄存器960中所存储的硬件循环信息可与已编码结束循环(结束包)信息结合使用以执行特定数目的迭代的硬件循环。
所属技术领域的技术人员应了解,可使用各种不同技法及技术中的任一者来表示信息及信号。例如,上文通篇可能提及的数据、指令、命令、信息、信号、位、符号及码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合表示。
所属技术领域的技术人员应进一步了解,结合本文所揭示实施例而描述的各种说明性逻辑块、模块、电路及算法步骤均可实施为电子硬件、计算机软件或二者的组合。为清除地图解说明硬件及软件的此可互换性,上文就其功能大体描述了各种说明性组件、块、模块、电路及步骤。此功能实施为硬件还是软件取决于施加在整体***上的特定应用及设计约束条件。所属技术领域的技术人员可针对每一特定应用以不同方式实施上文描述的功能,但是,此类实施方案决定不应被解释为背离本发明的范围。
与本文所揭示实施例结合描述的各种说明性逻辑块、模块及电路均可由下列装置实施或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行上文描述的功能的任何组合。通用处理器可以是微处理器,但另一选择为,所述处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合,或任何其它此类配置。
结合本文所揭示实施例描述的方法或算法的步骤可直接实施于硬件中、实施于由处理器执行的软件模块中或实施于二者的组合中。软件模块可驻留在RAM存储器、闪存存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可装卸磁盘、CD-ROM或所属技术领域中已知的任何其它形式的存储媒体中。例示性存储媒体耦合到所述处理器,以使所述处理器可从所述存储媒体读取信息及向所述存储媒体写入信息。或者,存储媒体可以是处理器的一部分。处理器及存储媒体可驻留在ASIC中。ASIC可驻留在用户终端中。或者,处理器及存储媒体可作为离散组件驻留在用户终端中。
提供上文对所揭示实施例的说明旨在使所属技术领域的技术人员能够制作或使用本发明。所属技术领域的技术人员将易于得知这些实施例的各种修改方式,且本文所界定的一般原理还可适用于其它实施例,此并不背离本发明的精神或范围。因此,本发明不打算限于本文所示实施例,而应符合与本文所揭示原理及新颖特征相一致的最大范围。
Claims (12)
1.一种用于对关于至少一个硬件循环的信息进行编码的方法,所述至少一个硬件循环包括将被执行特定数目的迭代的一组包,每一包均包括一个或-个以上指令,每一指令均包括一组位,所述方法包括:
将硬件循环结束信息编码到所述组包中的至少一个经指定指令的一个或一个以上所保留位位置处的一个或一个以上位中,其中所述至少一个经指定指令是不用于规定硬件循环的结束包的指令;以及
将结束指令信息编码到所述组包中不具有已编码硬件循环信息的至少一个指令中,其中所述结束指令信息被编码到与为所述已编码硬件循环信息保留的位相同的位中,并且所述已编码结束指令信息指示指令是否是包的最后指令以及指示包的长度。
2.如权利要求1所述的方法,其中:
编码在特定包的经指定指令中的所述硬件循环结束信息指示所述特定包是所述硬件循环的结束包或指示所述特定包不是所述硬件循环的结束包。
3.如权利要求1所述的方法,其中在所述经指定指令的所述位内对所述硬件循环信息进行编码,使得规定所述经指定指令的剩余位处于所述已编码硬件循环信息的所述位之前及之后。
4.如权利要求3所述的方法,其中:
每一指令包括32个位;
将所述硬件循环信息编码在所述经指定指令的第15个及第16个位中;且
所述经指定指令的第1个到第14个位及第17个到第32个位规定所述经指定指令。
5.如权利要求1所述的方法,其中:
所述组包是一组极长指令字VLIW包;且
将所述硬件循环信息编码到所述组包中的每一VLIW包中的相同预定位置处的指令中。
6.如权利要求1所述的方法,其中:
所述至少一个硬件循环包括:包括将被执行特定数目的迭代的第一组包的第一循环及包括将被执行特定数目的迭代的第二组包的第二循环;
将关于所述第一循环的硬件循环信息编码到所述第一组包中的每一包中的第一预定位置处的指令中;且
将关于所述第二循环的硬件循环信息编码到所述第二组包中的每一包中的第二预定位置处的指令中。
7.一种用于对关于至少一个硬件循环的信息进行编码的设备,所述至少一个硬件循环包括将被执行特定数目的迭代的一组包,每一包均包括一个或一个以上指令,每一指令均包括一组位,所述设备包括:
用于将硬件循环结束信息编码到所述组包中的至少一个经指定指令的一个或一个以上所保留位位置处的一个或一个以上位中的装置,其中所述至少一个经指定指令是不用于规定硬件循环的结束包的指令;和
用于将结束指令信息编码到所述组包中不具有已编码硬件循环信息的至少一个指令中的装置,其中所述结束指令信息被编码到与为所述已编码硬件循环信息保留的位相同的位中,并且所述已编码结束指令信息指示指令是否是包的最后指令以及指示包的长度。
8.如权利要求7所述的设备,其中:
编码在特定包的经指定指令中的所述硬件循环结束信息指示所述特定包是所述硬件循环的结束包或指示所述特定包不是所述硬件循环的结束包。
9.如权利要求7所述的设备,其中所述硬件循环信息被编码在所述经指定指令的所述位内,使得规定所述经指定指令的剩余位处于所述已编码硬件循环信息的所述位之前及之后。
10.如权利要求9所述的设备,其中:
每一指令包括32个位;
所述硬件循环信息被编码在所述经指定指令的第15个及第16个位中;且
所述经指定指令的第1个到第14个位及第17个到第32个位规定所述经指定指令。
11.如权利要求7所述的设备,其中:
所述组包是一组极长指令字VLIW包;且
所述硬件循环信息被编码到所述组包中的每一VLIW包中的相同预定位置处的指令中。
12.如权利要求7所述的设备,其中:
所述至少一个硬件循环包括:包括将被执行特定数目的迭代的第一组包的第一循环及包括将被执行特定数目的迭代的第二组包的第二循环;
关于所述第一循环的硬件循环信息被编码到所述第一组包中的每一包中的第一预定位置处的指令中;且
关于所述第二循环的硬件循环信息被编码到所述第二组包中的每一包中的第二预定位置处的指令中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/431,732 | 2006-05-10 | ||
US11/431,732 US20070266229A1 (en) | 2006-05-10 | 2006-05-10 | Encoding hardware end loop information onto an instruction |
PCT/US2007/067134 WO2007133893A1 (en) | 2006-05-10 | 2007-04-20 | Encoding hardware end loop information onto an instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101438235A CN101438235A (zh) | 2009-05-20 |
CN101438235B true CN101438235B (zh) | 2012-11-14 |
Family
ID=38335523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800163914A Expired - Fee Related CN101438235B (zh) | 2006-05-10 | 2007-04-20 | 将硬件结束循环信息编码到指令上 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070266229A1 (zh) |
EP (1) | EP2027532A1 (zh) |
JP (2) | JP5209609B2 (zh) |
KR (1) | KR101066330B1 (zh) |
CN (1) | CN101438235B (zh) |
WO (1) | WO2007133893A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327674A1 (en) * | 2008-06-27 | 2009-12-31 | Qualcomm Incorporated | Loop Control System and Method |
US9678754B2 (en) * | 2010-03-03 | 2017-06-13 | Qualcomm Incorporated | System and method of processing hierarchical very long instruction packets |
JP2011242995A (ja) | 2010-05-18 | 2011-12-01 | Toshiba Corp | 半導体装置 |
US8336017B2 (en) * | 2011-01-19 | 2012-12-18 | Algotochip Corporation | Architecture optimizer |
CN103116485B (zh) * | 2013-01-30 | 2015-08-05 | 西安电子科技大学 | 一种基于超长指令字专用指令集处理器的汇编器设计方法 |
US10009276B2 (en) * | 2013-02-28 | 2018-06-26 | Texas Instruments Incorporated | Packet processing match and action unit with a VLIW action engine |
JP5701930B2 (ja) * | 2013-04-22 | 2015-04-15 | 株式会社東芝 | 半導体装置 |
KR102197071B1 (ko) * | 2014-02-04 | 2020-12-30 | 삼성전자 주식회사 | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 |
KR102168175B1 (ko) * | 2014-02-04 | 2020-10-20 | 삼성전자주식회사 | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 |
US9727460B2 (en) | 2013-11-01 | 2017-08-08 | Samsung Electronics Co., Ltd. | Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop |
US11809558B2 (en) * | 2020-09-25 | 2023-11-07 | Advanced Micro Devices, Inc. | Hardware security hardening for processor devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2737027A1 (fr) * | 1995-07-21 | 1997-01-24 | Dufal Frederic | Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant |
US5727194A (en) * | 1995-06-07 | 1998-03-10 | Hitachi America, Ltd. | Repeat-bit based, compact system and method for implementing zero-overhead loops |
EP1220091A2 (en) * | 2000-12-29 | 2002-07-03 | STMicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in VLIW processors |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1043358A (en) * | 1962-04-02 | 1966-09-21 | Hitachi Ltd | Control system for digital computer |
JP3102027B2 (ja) * | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US6055628A (en) * | 1997-01-24 | 2000-04-25 | Texas Instruments Incorporated | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
JP4125847B2 (ja) * | 1998-11-27 | 2008-07-30 | 松下電器産業株式会社 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
EP1039375A1 (en) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Method and apparatus for implementing zero overhead loops |
US6671799B1 (en) * | 2000-08-31 | 2003-12-30 | Stmicroelectronics, Inc. | System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor |
US7991984B2 (en) * | 2005-02-17 | 2011-08-02 | Samsung Electronics Co., Ltd. | System and method for executing loops in a processor |
-
2006
- 2006-05-10 US US11/431,732 patent/US20070266229A1/en not_active Abandoned
-
2007
- 2007-04-20 JP JP2009509937A patent/JP5209609B2/ja not_active Expired - Fee Related
- 2007-04-20 WO PCT/US2007/067134 patent/WO2007133893A1/en active Application Filing
- 2007-04-20 CN CN2007800163914A patent/CN101438235B/zh not_active Expired - Fee Related
- 2007-04-20 EP EP07761052A patent/EP2027532A1/en not_active Withdrawn
- 2007-04-20 KR KR1020087030038A patent/KR101066330B1/ko not_active IP Right Cessation
-
2012
- 2012-12-20 JP JP2012277649A patent/JP5559297B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5727194A (en) * | 1995-06-07 | 1998-03-10 | Hitachi America, Ltd. | Repeat-bit based, compact system and method for implementing zero-overhead loops |
FR2737027A1 (fr) * | 1995-07-21 | 1997-01-24 | Dufal Frederic | Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant |
EP1220091A2 (en) * | 2000-12-29 | 2002-07-03 | STMicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in VLIW processors |
Also Published As
Publication number | Publication date |
---|---|
JP5209609B2 (ja) | 2013-06-12 |
WO2007133893A1 (en) | 2007-11-22 |
US20070266229A1 (en) | 2007-11-15 |
JP5559297B2 (ja) | 2014-07-23 |
CN101438235A (zh) | 2009-05-20 |
KR20090009966A (ko) | 2009-01-23 |
EP2027532A1 (en) | 2009-02-25 |
JP2013101638A (ja) | 2013-05-23 |
JP2009536769A (ja) | 2009-10-15 |
KR101066330B1 (ko) | 2011-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101438235B (zh) | 将硬件结束循环信息编码到指令上 | |
US7386844B2 (en) | Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions | |
EP2569694B1 (en) | Conditional compare instruction | |
JP4283131B2 (ja) | プロセッサ及びコンパイル方法 | |
KR100705507B1 (ko) | 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치 | |
Goossens et al. | Embedded software in real-time signal processing systems: Design technologies | |
CN117349584A (zh) | 实行16位浮点矩阵点积指令的***和方法 | |
EP1709526B1 (en) | Processor, method and computer program products for execution of instructions for efficient bit stream extractions | |
CN108804137A (zh) | 用于双目的地类型转换、累加和原子存储器操作的指令 | |
CN108647044A (zh) | 浮点缩放处理器、方法、***和指令 | |
CN104838357A (zh) | 瓦解的多嵌套循环的向量化 | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
CN107851013B (zh) | 数据处理装置和方法 | |
CN102053819A (zh) | 信息处理设备和信息处理设备的指令解码器 | |
CN104011665A (zh) | 超级乘加(超级madd)指令 | |
WO2009137108A1 (en) | Microprocessor with compact instruction set architecture | |
EP1128262A2 (en) | Mapping circuitry and method for register renaming | |
CN104011616A (zh) | 改进置换指令的装置和方法 | |
US8707013B2 (en) | On-demand predicate registers | |
CN110058886A (zh) | 用于计算两个区块操作数中的半字节的数量积的***和方法 | |
JP4686435B2 (ja) | 演算装置 | |
US20080270759A1 (en) | Computer Having Dynamically-Changeable Instruction Set in Real Time | |
JP2006072961A (ja) | 演算処理装置のメモリ回路 | |
LANNEER et al. | Embedded Software in Real-Time Signal Processing Systems: Design Technologies | |
KR100233289B1 (ko) | 레지스터 파일의 데이터 디펜던시 체크를 위한 장치 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121114 Termination date: 20190420 |