CN105980980A - 用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质 - Google Patents
用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质 Download PDFInfo
- Publication number
- CN105980980A CN105980980A CN201480074517.3A CN201480074517A CN105980980A CN 105980980 A CN105980980 A CN 105980980A CN 201480074517 A CN201480074517 A CN 201480074517A CN 105980980 A CN105980980 A CN 105980980A
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- operand
- multiplexer
- groove position
- 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 abstract description 66
- 238000011022 operating instruction Methods 0.000 claims description 15
- 230000001052 transient effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 21
- 230000009471 action Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012938 design process Methods 0.000 description 2
- 238000010977 unit operation Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 101000746134 Homo sapiens DNA endonuclease RBBP8 Proteins 0.000 description 1
- 101000969031 Homo sapiens Nuclear protein 1 Proteins 0.000 description 1
- 102100021133 Nuclear protein 1 Human genes 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- 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/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在一种运行指令的方法中,基于多个指令中的每一个中所包括的信息来获取在预定周期中运行的至少一个指令,并且获取所述至少一个指令中所包括的代码。基于分析结果将指令分配给至少一个槽位,并且选择性地使用运行所述指令所必要的槽位。因此,可以减少使用所述方法的设备的功耗。
Description
技术领域
本发明的一个或多个实施例涉及用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质。
背景技术
基于处理器的设备的电力效率已经变得更加重要,并且特别是,电池操作设备的电力效率已经变成需要高度关注的核心问题。因此,已经进行研究以提高此类设备的电力效率。
提高各种设备的电力效率的方法的示例包括设计使用低功率的单独电路设备的方法和设计管理功耗的处理器的方法。
然而,当单独电路设备被设计并实施时,由于额外硬件的使用而发生额外功耗。另外,当单独指令被添加来设计过程以便管理功耗时,将处理的指令的总尺寸增加。
发明公开
技术问题
当单独电路设备被设计并实施时,由于额外硬件的使用而发生额外功耗。另外,当单独指令被添加来设计过程以便管理功耗时,将处理的指令的总尺寸增加。
解决方案
本发明的一个或多个实施例包括用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质。
有益效果
可以高效地设计在处理器中用于同时运行多个指令的多个槽位(slot)。
附图说明
这些和/或其他方面从下文结合附图对实施例的描述中将变得清楚并且更加容易理解,其中:
图1是根据本发明的实施例的指令存储器系统的方框图;
图2是根据本发明的实施例的用于运行指令的系统的方框图;
图3是示出根据本发明的实施例的用于对指令进行编码的方法的流程图;
图4是示出根据本发明的实施例生成的指令的结构的示图;
图5是示出根据本发明的实施例的用于运行指令的方法的流程图;
图6是示出根据本发明的实施例的用于基于指令执行操作的方法的流程图;
图7是示出根据本发明的实施例的用于将指令分配给第一复用器中所包括的至少一个槽位的方法的表格;
图8是示出根据本发明的实施例的用于在处理器中运行至少一个指令的方法的示图;
图9是根据本发明的实施例的用于对指令进行编码的装置的方框图;并且
图10是根据本发明的实施例的处理器的方框图。
最佳实施方式
本发明的一个或多个实施例包括用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质。
额外方面将在下文描述中部分地阐述并且部分将从描述中显然,或者可以通过实践呈现的实施例了解。
根据本发明的一个或多个实施例,一种用于在处理器中运行指令的方法包括:基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令;从所述至少一个指令提取类型码,所述类型码包括基于所述至少一个指令执行的操作的类型信息;基于所提取的类型码来将所述至少一个指令分配给第一复用器的至少一个槽位;以及执行所述所分配的槽位中的所述操作。
所述至少一个指令的获取可包括:当第一指令中所包括的停止位具有第一值时,在所述预定周期中获取作为第一指令之后的下一个指令的第二指令;以及当第一指令中所包括的所述停止位具有第二值时,在所述预定周期之后的下一个周期中获取第二指令。
所述操作的执行可包括:将电力供应给第一复用器的所述至少一个槽位中的所分配的槽位;并且中断供应给第一复用器的所述至少一个槽位中所分配的槽位之外的所有槽位的电力。
所述操作的执行可包括:基于操作数的类型信息在至少一个寄存器中选择用于获取操作数的寄存器;以及从选定寄存器获取所述操作数。
所述寄存器的选择可包括:将电力供应给使所述选定寄存器与第一复用器的所分配的槽位相连接的第二复用器的槽位;以及中断供应给使所述至少一个寄存器中的未选定寄存器与第一复用器的所分配的槽位相连接的第三复用器的槽位的电力。
根据本发明的一个或多个实施例,一种用于在设备中对指令进行编码的方法包括:生成类型码,所述类型码包括在处理器中可执行的预定操作的类型信息和在预定操作中处理的操作数的类型信息;生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息;以及基于所述类型码和所述停止位来生成用于执行预定操作的指令。
所述停止位的生成可包括:当在所述预定周期中执行作为第一指令之后的下一个指令的第二指令时,在所述停止位中表示第一值;以及当在所述预定周期之后的下一个周期中运行第二指令时,在所述停止位中表示第二值。
根据本发明的一个或多个实施例,一种运行指令的处理器包括:输入单元,其被配置来基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令;控制单元,其被配置来从所述至少一个指令提取类型码,所述类型码包括基于所述至少一个指令执行的操作的类型信息,并且基于所提取的类型码将所述至少一个指令分配给第一复用器的至少一个槽位;以及操作单元,其被配置来执行所述所分配的槽位中的所述操作。
当第一指令中所包括的停止位具有第一值时,所述输入单元可在所述预定周期中获取作为第一指令之后的下一个指令的第二指令;以及当第一指令中所包括的所述停止位具有第二值时,可在所述预定周期之后的下一个周期中获取第二指令。
所述操作单元可将电力供应给第一复用器的所述至少一个槽位中的所分配的槽位,并且中断供应给第一复用器的所述至少一个槽位中所分配的槽位之外的所有槽位的电力。
所述操作单元可基于所述操作数的所述类型信息在至少一个寄存器中选择用于获取所述操作数的寄存器,并且从所述选定寄存器获取所述操作数。
所述操作单元可将电力供应给使所述选定寄存器与第一复用器的所分配的槽位相连接的第二复用器的槽位,并且中断供应给使所述至少一个寄存器中的未选定寄存器与第一复用器的所分配的槽位相连接的第三复用器的槽位的电力。
所述操作单元可在连接到第一复用器的所分配的槽位的至少一个操作执行单元中选择执行所述操作的操作执行单元,并且可基于所获取的操作数来在所述选定操作执行单元中执行所述操作。
根据本发明的一个或多个实施例,一种用于运行指令的装置包括:代码生成单元,其被配置来生成类型码,所述类型码包括在处理器中可执行的预定操作的类型信息和在所述预定操作中处理的操作数的类型信息;停止位生成单元,其被配置来生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息;以及指令生成单元,其被配置来基于所述类型码和所述停止位来生成用于执行所述预定操作的指令。
当在所述预定周期中运行作为第一指令之后的下一个指令的第二指令时,所述停止位生成单元可在所述停止位中表示第一值,以及当在所述预定周期之后的下一个周期中运行第二指令时,可在所述停止位中表示第二值。
具体实施方式
现将详细参考实施例,这些实施例的示例在附图中示出,其中遍及附图相同参考数字指代相同元素。在此方面,本发明的实施例可以具有不同的形式并且不应被解释为限制于在此阐述的描述。因此,这些实施例仅是通过参考附图在下文描述以解释本发明的多个方面。如本文所使用,术语“和/或”包括一个或多个相关所列项目的任何和所有组合。诸如“……中的至少一个”的表达当在元素列表之后时,修饰整个元素列表而不是修饰所述列表的单独元素。
下文将参考附图详细地描述本发明的实施例以便本领域普通技术人员可容易实施本发明的实施例。在此方面,本发明的实施例可以具有不同的形式并且不应被解释为限于在此阐述的这些描述。另外,为了对本发明的实施例的清楚描述,与本发明的实施例的描述不相关的部分将在图中被省略,并且遍及本说明书,相同参考标号将表示相同元素。
应理解当一元素被称为是“连接到”另一个元素时,它能够直接连接到其他元素或可在其间介入其它元素时电连接到其他元素。还将理解,术语“包括”、“包含”和“具有”在本文使用时,指定所述元素的存在,但并不排除其他元素件的存在或添加,除非另外定义。
在下文中,本发明的实施例将参考附图详细地描述。
图1是根据本发明的实施例的指令存储器系统10的方框图。
在图1的指令存储器系统10中,仅示出与本实施例有关的组件。因此,本领域那些或普通技术人员将理解,指令存储器系统10还可包括除图1所示的组件之外的其他通用组件。
参考图1,指令存储器系统10可包括指令编码装置100、外部存储器15和指令高速缓冲存储器18。
指令存储器系统10可基于存储在外部存储器15中的用于定义指令的编码信息来生成指令。在本文中,指令编码装置100可以是编译器。然而,这仅仅是本发明的实施例,并且指令编码装置100可以是可根据本发明的实施例生成指令的任何设备。
根据本发明的实施例,指令编码装置100可基于编码信息生成将在超长指令字(VLIW)处理器中运行的指令。VLIW是用于执行同时运行多个指令的操作的设备中的一种。根据本发明的实施例的指令编码装置100可基于从外部存储器15获取的编码信息和预定条件来生成指令。例如,当指令编码装置100生成在VLIW处理器中同时执行的多个指令时,条件可被如此设定使得执行标量操作的指令(在下文中,称为标量指令)必须在执行矢量操作的指令(在下文中,称为矢量指令)之前生成。也就是,当必须在当前第一周期中执行一个标量操作和两个矢量操作时,指令编码装置100可按照标量指令、第一矢量指令和第二矢量指令的次序生成多个指令。
当指令编码装置100基于预定条件生成指令时,可以高效地设计处理器中用于同时运行多个指令的多个槽位。稍后将参考图8详细地描述这种情况。
外部存储器15可存储根据本发明的实施例用于定义指令的编码信息。例如,指令可包括:操作码、基于操作码处理的操作数的地址码、或存储操作结果的结果值的地址码。所述指令中所包括的详细信息(例如,执行预定功能的代码)可根据操作而变化,所述操作根据所述指令来执行。
根据本发明的实施例的指令的结构还可包括除操作码、操作数的地址和结果值的地址码之外的类型码和停止位。
类型码可包括基于指令执行的操作的类型信息。在本文中,操作的类型可包括标量操作或矢量操作。另外,类型码可包括基于指令执行的操作数的类型信息。在本文中,操作数的类型可包括标量数据或矢量数据。
指令中所包括的至少一个代码或位可根据指令的预定结构来布置。在下文中,例如,假设停止位被部署在构成指令的多个位中的第一位,并且类型码被部署在其最后一位。然而,这仅仅是本发明的实施例,并且本发明的实施例不限于此。
图2是根据本发明的实施例的用于运行指令的系统20的方框图。
在图2的系统20中,仅示出与本实施例有关的组件。因此,本领域那些或普通技术人员将理解,系统20还可包括除图2所示的组件之外的其他通用组件。
参考图2,系统20可包括指令队列22、第一寄存器24、第二寄存器26和处理器200。
指令队列22可包括在处理器200中可运行的多个指令。根据本发明的实施例,指令队列22可从图1所示的指令存储器系统10的指令高速缓冲存储器18接收指令。根据另一个实施例,指令队列22可获取存储在外部设备中的指令。
指令可基于由指令编码装置100生成的指令的次序来存储在指令队列22中。例如,当指令编码装置100按照标量指令、第一矢量指令和第二矢量指令的次序生成多个指令时,多个指令可按照标量指令、第一矢量指令和第二矢量指令的次序存储在指令队列22中。
指令队列22可同时输出预定数量的指令。例如,当预定数量是4时,指令队列22可同时输出第一标量指令、第二标量指令、第一矢量指令和第二矢量指令。
处理器200可从指令队列22中输出的多个指令中获取将在预定周期中运行的至少一个指令。根据本发明的实施例的处理器200可基于从指令队列22输出的多个指令中的每一个中所包括的停止位来确定将在预定周期中运行的至少一个指令。
另外,处理器200可基于将在预定周期中运行的指令来执行操作。处理器200可通过分析指令中所包括的操作码、操作数的地址码和结果值的地址码来执行操作。
根据本发明的实施例的处理器200可基于指令中所包括的类型码来确定用于运行所述指令的槽位。例如,处理器200可通过所确定的槽位从指令队列22获取指令。在本文中,处理器200中所包括的第一复用器可包括用于从指令队列22获取至少一个指令的至少一个槽位。
由处理器200确定的槽位可包括使预定寄存器与第一复用器的槽位相连接的至少一个复用器,所述预定寄存器存储基于指令处理的操作数。在以下描述中,假设处理器200包括第二复用器和第三复用器。
第一寄存器24和第二寄存器26可存储基于处理器200获取的指令处理的操作数。存储操作数的寄存器的地址信息可被存储在处理器200中。
根据存储在第一寄存器24和第二寄存器26中的每一个中的操作数的类型,第一寄存器24和第二寄存器26可被分类为矢量寄存器和标量寄存器。例如,当标量数据被存储器在第一寄存器24中时,第一寄存器24可以是标量寄存器。另外,当矢量数据被存储在第二寄存器26中时,第二寄存器26可以是矢量寄存器。
图3是示出根据本发明的实施例的用于对指令进行编码的方法的流程图。
在操作310中,指令编码装置100可生成包括预定操作的类型信息和操作数的类型信息的类型码。在本文中,操作的类型可包括标量操作或矢量操作。另外,操作数的类型可包括标量数据或矢量数据。
例如,根据本发明的实施例的指令可包括32位。关于操作类型的信息可由32位指令的第32位表示。例如,当由指令执行的操作是标量操作时,第32位可以是0。另外,当由指令执行的操作是矢量操作时,第32位可以是1。然而,这仅仅是本发明的实施例,并且关于操作类型的信息不限于在第32位中表示。例如,关于操作类型的信息可由两个或更多个位表示,并且关于操作类型的信息可在第32位之外的位中表示。另外,例如,指示标量操作的位可表示为1,并且指示矢量操作的位可表示为0。
根据本发明的实施例,关于操作数的类型的信息可由32位指令的预定数量的位表示。当由指令执行的操作是标量操作时,操作数可以是标量数据。当由指令执行的操作是矢量操作时,操作数可仅包括矢量数据或可包括矢量数据和标量数据两者。
在标量操作的情况下,因为操作数是标量数据,所以操作数的类型可不通过额外使用指示标量操作的第32位之外的位来表示。在矢量操作的情况下,当操作数仅包括矢量数据时,例如,第27位可表示为0。另外,在矢量操作的情况下,当操作数包括矢量数据和标量数据两者时,第27位可表示为1。
在操作320中,指令编码装置100可生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息。停止位可用来从多个操作中确定将在预定周期中执行的至少一个操作。
例如,在实施例中,在VLIW处理器中同时可运行的指令的最大数量可以是4个。当四个指令中的每一个中所包括的停止位是例如0011时,可在预定周期中执行三个操作。根据本发明的实施例,当停止位具有第一值(例如0)时,可在预定周期中执行预定操作之后的下一个操作。另一方面,当停止位具有第二值(例如1)时,可在预定周期之后的下一个周期中执行预定操作之后的下一个操作。
根据本发明的实施例的指令编码装置100可在构成指令的多个位中的第一位中表示停止位。然而,这仅仅是本发明的实施例,并且本发明的实施例不限于此。
在操作330中,指令编码装置100可基于所生成的类型码和停止位来生成用于执行预定操作的指令。
指令编码装置100可通过根据指令的预定结构部署类型码和停止位来生成指令。在本文中,所述指令可包括:操作码、基于操作码处理的操作数的地址码和存储操作结果的结果值的地址码。指令中所包括的详细信息(例如,执行预定功能的代码)可根据操作而变化,所述操作由所述指令执行。
图4是示出根据本发明的实施例生成的指令的结构的图。
参考图4,在实施例中,图4中示出第(n-1)个指令420、第(n)个指令440和第(n+1)个指令460。在本文中,可在同一周期中从指令队列22(见图2)输出第(n-1)个指令420、第(n)个指令440、第(n+1)个指令460和第(n+2)个指令(未示出)。
例如,根据本发明的实施例的指令可包括32位。基于指令的预定结构,停止位的值可在32位中的位0(第一位)中表示。包括关于操作类型的信息和关于操作数的类型的信息的类型码可在多个位中表示,例如,位31(第32位)至位26(第27位)或位31至位27(第28位)。详细地,基于指令执行的操作的类型信息可在位31中表示。在本文中,当位31的值是0时,操作是标量操作,并且当位31的值是1时,操作是矢量操作。另外,操作数的类型信息可在多个位中表示,例如,位30(第31位)至位27(第28位)或位30至位26(第27位)。将参考每个指令的结构详细描述操作数的类型信息。
参考图4,在实施例中,类型码421可在第(n-1)个指令420的多个位中表示,例如,位31至位27(第28位)。在图4中,第(n-1)个指令420的位31的值是0。当位31的值是0时,基于第(n-1)个指令420执行的操作可以是标量操作。第(n-1)个指令420的位30至位27的值是0。在标量操作的情况下,操作数总是标量数据。在标量操作的情况下,可以不单独设定用于标识操作数类型的信息。然而,这仅仅是本发明的实施例,第(n-1)个指令420中的位30至位27的值可被设定为0以指示操作数是标量数据。
操作码423可在第(n-1)个指令420的位26至位19(第20位)中表示。另外,存储操作数的寄存器的地址425和427可在第(n-1)个指令420的位18(第19位)至位13(第14位)和位6(第7位)至位1(第二位)中表示。存储操作结果的结果值的地址426可在第(n-1)个指令420的位12(第13位)至位7(第8位)中表示。
停止位的值可在32位中的位0(第一位428)中表示。因为0在第(n-1)个指令420的位0(第一位428)中表示为停止位的值,所以可在处理器200的预定周期中获取第(n)个指令440,所述第(n)个指令440是作为当前指令的第(n-1)个指令420之后的下一个指令。
类型码可在第(n)个指令440的多个位中表示,例如,位31至位27(第28位)。例如,第(n)个指令440的位31的值是1。当位31的值是1时,基于第(n)个指令440执行的操作的类型可以是矢量操作。第(n)个指令440的位30至位27的值是0。在矢量操作的情况下,操作数可包括矢量数据和标量数据两者或可仅包括矢量数据。第(n)个指令440的位30至位27的值可设定为0以指示操作数仅包括矢量数据。
操作码可在第(n)个指令440的位26至位18(第19位)中表示。另外,存储操作数的寄存器的地址可在第(n)个指令440的位17(第18位)至位13(第14位)和位5(第6位)至位1(第二位)中表示。存储操作结果的结果值的地址446可在第(n)个指令440的位12(第13位)至位7(第8位)中表示。
停止位的值可在32位中的位0(第一位448)中表示。因为0在第(n)个指令440的位0(第一位448)中表示为停止位的值,所以可在处理器200的预定周期中获取第(n+1)个指令460,所述第(n+1)个指令460是作为当前指令的第(n)个指令440之后的下一个指令。
类型码461可在第(n+1)个指令460的多个位中表示,例如,位31至位26(第27位)。例如,第(n+1)个指令460的位31的值是1。当位31的值是1时,基于第(n+1)个指令460执行的操作可以是矢量操作。第(n+1)个指令460的位30至位27的值是0。在矢量操作的情况下,操作数可包括矢量数据和标量数据两者或可仅包括矢量数据。值0、0、0、1、0可分别在第(n+1)个指令460的位30至位26(第27位)中表示以指示操作数类型包括矢量数据和标量数据两者。
操作码463可在第(n+1)个指令460的位25(第26位)至位19(第20位)中表示。另外,存储操作数的寄存器的地址465和467可在第(n+1)个指令460的位18(第19位)至位13(第14位)和位5(第6位)至位1(第二位)中表示。存储操作结果的结果值的地址466可在第(n+1)个指令460的位12至位7中表示。
停止位的值可在32位中的位0(第一位468)中表示。因为1在第(n+1)个指令460的位0(第一位468)中表示为停止位的值,所以可在处理器200的预定周期中获取第(n+2)个指令,所述第(n+2)个指令是作为当前指令的第(n+1)个指令460之后的下一个指令。
图5是示出根据本发明的实施例的用于运行指令的方法的流程图。
在操作510中,处理器200可基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令。
处理器200可基于从指令队列22接收的多个指令中的每一个中所包括的停止位来在预定周期中获取至少一个指令。在本文中,指令队列22可在每个周期中输出预定数量的指令。
当由处理器200接收的第一指令中所包括的停止位具有第一值(例如0)时,处理器200可在预定周期中获取第二指令,所述第二指令是第一指令之后的下一个指令。在本文中,可以基于将多个指令存储在指令队列22中的次序来确定下一个指令。也就是,当第一指令和第二指令顺序地存储在指令队列22中时,第二指令可以是第一指令之后的下一个指令。
当由处理器200接收的第一指令中所包括的停止位具有第二值(例如1)时,处理器200可在预定周期之后的下一个周期中获取第二指令,所述第二指令是第一指令之后的下一个指令。也就是,当停止位具有第二值时,处理器200可在预定周期中获取第一指令并且在下一个周期中获取第二指令。
例如,处理器200可接收从指令队列22输出的四个指令(也就是,图4所示的第(n-1)个指令420、第(n)个指令440、第(n+1)个指令460和第(n+2)个指令)。所接收的四个指令的停止位分别可以是0、0、1和1。在识别出预定周期中所接收的第(n-1)个指令420中所包括的停止位的值是0时,处理器200可获取作为第(n-1)个指令420之后的下一个指令的第(n)个指令440。在识别出第(n)个指令440的停止位的值是0时,处理器200可获取作为第(n)个指令440之后的下一个指令的第(n+1)个指令460。在识别出第(n+1)个指令460的停止位的值是1时,处理器200可以不获取作为第(n+1)个指令460之后的下一个指令的第(n+2)个指令。处理器200可在预定周期之后的下一个周期中获取第(n+2)个指令。
在操作520中,处理器200可从至少一个指令提取类型码,所述类型码包括基于至少一个指令执行的操作的类型信息。在本文中,操作可以是标量操作或矢量操作。
处理器200可识别所提取的类型码中所包括的操作类型信息。例如,在由第32位表示操作类型的指令的情况下,当第32位的值是0时,处理器200可将操作类型识别为标量操作。另外,当第32位的值是1时,处理器200可将操作类型识别为矢量操作。
在操作530中,处理器200可基于所提取的类型码来将至少一个指令分配给第一复用器的至少一个槽位。例如,当第一复用器包括四个槽位时,处理器200可将执行标量操作的标量指令分配给第一槽位和第二槽位。另外,处理器200可将执行矢量操作的矢量指令分配给第三槽位和第四槽位。
参考图4,处理器200可获取第(n-1)个指令420、第(n)个指令440和第(n+1)个指令460。在本文中,第(n-1)个指令420是标量指令,第(n)个指令440是矢量指令,并且第(n+1)个指令460是矢量指令。处理器200可将第(n-1)个指令420分配给第一复用器的第一槽位。另外,处理器200可将第(n)个指令440分配给第一复用器的第三槽位并且将第(n+1)个指令460分配给第一复用器的第四槽位。
在操作540中,处理器200可执行所分配的槽位中的操作。处理器200可将电力供应给第一复用器的至少一个槽位中分配有指令的槽位。因为在操作530中将指令分配给四个槽位中的第一槽位、第三槽位和第四槽位,所以处理器200可将电力供应给第一槽位、第三槽位和第四槽位。
另一方面,处理器200可中断对第一复用器的至少一个槽位中分配有指令的槽位之外的槽位的电力供应。例如,因为在操作530中没有将指令分配给四个槽位中的第二槽位,所以处理器200可中断对第二槽位的电力供应。因为仅将电力供应给多个槽位中分配有指令的槽位,并且不将电力供应给未分配指令的槽位,所以可以高效地使用电力。
图6是示出根据本发明的实施例的用于基于指令执行操作的方法的流程图。
在操作610中,处理器200可基于从至少一个指令提取的类型码来将至少一个指令分配给第一复用器的至少一个槽位。例如,当第一复用器包括四个槽位时,处理器200可将执行标量操作的标量指令分配给第一槽位和第二槽位。另外,处理器200可将执行矢量操作的矢量指令分配给第三槽位和第四槽位。
在操作620中,处理器200可基于类型码中所包括的操作数的类型信息来在至少一个寄存器中选择用于获取操作数的寄存器。在本文中,操作数可包括标量数据或矢量数据。
在标量指令的情况下,操作数是标量数据。因此,处理器200可选择存储标量数据的标量寄存器。在矢量指令的情况下,操作数可以是标量数据或矢量数据。例如,矢量指令可包括仅处理作为操作数的矢量数据的第一矢量指令和处理作为操作数的矢量数据和标量数据两者的第二矢量指令。因此,处理器200可基于表示操作数的类型信息的类型码来识别在预定矢量指令中处理的操作数的类型。
在操作630中,处理器200可确定是否选择了至少一个寄存器。
在操作640中,处理器200可将电力供应给使选定寄存器与第一复用器的所分配槽位相连接的第二复用器的槽位。在本文中,第二复用器可包括使选定寄存器与第一复用器中所包括的至少一个槽位相连接的多个槽位。
在操作650中,处理器200可中断供应给第三复用器的使未选定寄存器与第一复用器的所分配槽位相连接的槽位的电力。在本文中,第三复用器可包括使未选定寄存器与第一复用器中所包括的至少一个槽位相连接的多个槽位。
根据本发明的实施例的处理器200中断供应给未在指令运行过程中使用的第三复用器的槽位,进而使得可能高效地使用电力。
在操作660中,处理器200可从选定寄存器获取操作。处理器200可基于从预定指令提取的操作数的地址信息来从选定寄存器获取操作数。
在操作670中,处理器200可从连接到第一复用器的所分配槽位的至少一个操作单元中选择对应于指令的操作单元。处理器200可提取预定指令中所包括的操作码,并且基于所提取的操作码来选择操作单元。
在操作680中,处理器200可基于从选定操作单元获取的操作数来执行操作。基于指令中所包括的结果值的地址信息,处理器200可将结果值存储在存储器的对应于地址信息的预定区域中,所述结果值通过执行操作来生成。
图7是示出根据本发明的实施例的用于将指令分配给第一复用器中所包括的至少一个槽位的方法的表格。
参考图7,图7的表格包括从指令队列22输出的多个指令、所述多个指令中的每一个中所包括的停止位以及关于根据多个指令中的每一个中所包括的停止位分配的第一复用器的槽位的信息。
指令队列22可在同一周期中同时输出预定数量的指令。例如,指令队列22可同时输出四个指令。
指令队列22可输出分别具有停止位0、0、0和1的第一标量指令、第二标量指令、第一矢量指令和第二矢量指令。处理器200可基于各个指令的停止位来将全部四个指令分配给第一复用器的槽位。当预定指令的停止位的值是1时,处理器200可在当前周期中运行预定指令并且在当前周期之后的周期中运行随后的指令。因此,在分别具有停止位0、0、0和1的四个指令中,可将至最后次序的第二矢量指令的全部指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位0、0、1和x的第一标量指令、第二标量指令、第一矢量指令和x指令。在本文中,停止位是x的情况意味着停止位是0或1的情况。另外,x指令意指指令是标量指令或矢量指令的情况。
在停止位具有值1的时间点之后,即使当停止位具有值0或1时,不会影响确定在当前周期中输出的指令。这是因为,当预定指令的停止位是1时,不在当前周期中运行预定指令之后的指令。
处理器200可将分别具有停止位0、0、1和x的四个指令(也就是,第一标量指令、第二标量指令、第一矢量指令和x指令)分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位0、1、x和x的第一标量指令、第二标量指令和两个x指令。处理器200可将分别具有停止位0、1、x和x的四个指令中的第一标量指令和第二标量指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位0、0、1和x的第一标量指令、第一矢量指令、第二标量指令和x指令。处理器200可将分别具有停止位0、0、1和x的四个指令中的第一标量指令、第一矢量指令和第二矢量指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位0、1、x和x的第一标量指令、第一矢量指令和两个x指令。处理器200可将分别具有停止位0、1、x和x的四个指令中的第一标量指令和第一矢量指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位1、x、x和x的第一标量指令和三个x指令。处理器200可将分别具有停止位1、x、x和x的四个指令中的第一标量指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位0、1、x和x的第一矢量指令、第二矢量指令和两个x指令。处理器200可将分别具有停止位0、1、x和x的四个指令中的第一矢量指令和第二矢量指令分配给第一复用器的槽位。
在另一个示例中,指令队列22可输出分别具有停止位1、x、x和x的第一矢量指令和三个x指令。处理器200可将分别具有停止位1、x、x和x的四个指令中的第一矢量指令分配给第一复用器的槽位。
图8是示出根据本发明的实施例的用于在处理器200中运行至少一个指令的方法的示图。如图8所示,处理器200包括输入单元(或输入)210、控制单元(或控制器)230和操作单元(或操作器)250。
指令队列22可包括在处理器200中可运行的多个指令。指令可基于由指令编码装置100生成的指令的次序来存储在指令队列22中。
指令队列22可同时输出预定数量的指令。例如,当预定数量是4时,指令队列22可同时输出四个指令。在图8中,指令队列22可同时输出第一标量指令mul32、第一矢量指令v_and、第二矢量指令vs_add_w和第二标量指令and32。
从指令队列22输出的四个指令的停止位分别是0、0、1和1。当停止位是1时,可在当前周期之后的下一个周期运行在具有停止位1的指令之后的指令。处理器200可在预定周期中运行从指令队列22输出的四个指令中的、停止位中首先表示1的第二矢量指令。也就是,处理器200可在预定周期中运行第一标量指令、第一矢量指令和第二矢量指令。
处理器200可从指令队列22获取第一标量指令、第一矢量指令和第二矢量指令。处理器200可基于所获取的每个指令中所包括的类型码来将每个指令分配给第一复用器252的至少一个槽位。在本文中,第一复用器252可包括例如四个槽位,255-1至255-4。处理器200可将执行标量操作的标量指令分配给四个槽位中的第一槽位255-1和第二槽位255-2。另外,处理器200可将执行矢量操作的矢量指令分配给四个槽位中的第三槽位255-3和第四槽位255-4。例如,处理器200可将第一标量指令分配给第一槽位255-1。另外,处理器200可将第一矢量指令分配给第三槽位255-3并且将第二矢量指令分配给第四槽位255-4。
处理器200可通过分析分配给槽位255-1、255-3和255-4中的每一个的指令中所包括的操作码、操作数的地址码和结果值的地址码来执行操作。
处理器200可基于预定指令中所包括的操作数的类型信息来在至少一个寄存器中选择用于获取操作数的寄存器24和26。具体地说,在可处理作为操作数的标量数据和矢量数据两者的矢量指令的情况下,处理器200可选择存储标量数据的标量寄存器24和存储矢量数据的矢量寄存器26中的至少一种。
例如,处理器200可运行仅处理作为操作数的矢量数据的第一矢量指令。参考图8,可将第一矢量指令分配给第三槽位255-3。首先,处理器200可使第三槽位255-3与矢量寄存器26相连接以便运行第一矢量指令。因为第一矢量指令不需要标量操作数,所以处理器200可中断对使标量寄存器与第三槽位255-3相连接的第三复用器254的电力供应。
在另一个示例中,处理器200可运行处理作为操作数的矢量数据和标量数据两者的第二矢量指令。参考图8,可将第二矢量指令分配给第四槽位。首先,处理器200可使第四槽位与矢量寄存器相连接以便运行第二矢量指令。因为不同于第一矢量指令,第二矢量指令需要标量操作数,所以处理器200可使标量寄存器与第四槽位相连接。根据本发明的实施例的处理器200可将电力供应给使标量寄存器与第四槽位255-4相连接的第二复用器253。处理器200可将分配给各个槽位255-1、255-2、255-3和255-4的各个指令发送给对应于各个槽位255-1、255-2、255-3和255-4的解码单元256-1、256-2、256-3和256-4。例如,处理器200可将分配给第一槽位255-1的第一指令发送给对应于第一槽位255-1的第一标量指令解码单元256-1。第一标量指令解码单元256-1可分析第一标量指令中所包括的操作码,并且将第一标量指令发送给对应于第一标量指令的操作执行单元260。
根据本发明的实施例,操作执行单元260可分析解码单元256-1、256-2、256-3和256-4中所包括的各个指令中所包括的操作码,并且执行对应于各个指令的操作。在本文中,操作执行单元260可包括可执行各种操作的单元。操作执行单元260中所包括的各个单元可执行对应于从解码单元256-1、256-2、256-3和256-4接收的各个指令的操作。
图9是根据本发明的实施例的指令编码装置100的方框图。
在图9中,仅示出与本实施例有关的组件。因此,本领域那些或普通技术人员将理解,指令编码装置100还可包括除图9所示的组件之外的其他通用组件。
参考图9,指令编码装置100可包括代码生成单元110、停止位生成单元130和指令生成单元150。
代码生成单元110可生成类型码,所述类型码包括在处理器中可执行的预定操作的类型信息和在预定操作中处理的操作数的类型信息。在本文中,操作可以是标量操作或矢量操作。另外,操作数可包括标量数据或矢量数据。
根据本发明的实施例的指令可包括32位。关于操作类型的信息可由32位指令的第32位表示。然而,这仅仅是本发明的实施例,并且关于操作类型的信息不限于在第32位中表示。例如,关于操作类型的信息可由两个或更多个位表示,并且关于操作类型的信息可在第32位之外的位中表示。
根据本发明的实施例,关于操作数类型的信息可由32位指令的预定数量的位表示。当由指令执行的操作是标量操作时,操作数可以是标量数据。当由指令执行的操作是矢量操作时,操作数可仅包括矢量数据或可包括矢量数据和标量数据两者。
停止位生成单元130可生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息。
当在预定周期中运行作为第一指令之后的下一个指令的第二指令时,停止位生成单元130可在停止位中表示第一值,例如0。当在预定周期之后的下一个周期中运行第二指令时,停止位生成单元130可在停止位中表示第二值,例如1。
例如,根据本发明的实施例在VLIW处理器中同时可运行的指令的最大数量可以是4个。当四个指令中的每一个中所包括的停止位是0011时,可在预定周期中执行三个操作。详细地,在四个指令(也就是,第(m)个指令、第(m+1)个指令、第(m+2)个指令和第(m+3)个指令)中,首先具有停止位值1的指令是第(m+2)个指令。在这种情况下,可在预定周期之后的下一个周期中运行作为第(m+2)个指令之后的下一个指令的第(m+3)个指令,并且可在预定周期中运行第(m)个指令、第(m+1)个指令和第(m+2)个指令。
指令生成单元150可基于类型码和停止位来生成用于执行预定操作的指令。
指令生成单元150可通过根据指令的预定结构布置类型码和停止位来生成指令。在本文中,指令可包括:操作码、基于所述操作码处理的操作数的地址码和存储操作结果的结果值的地址码。指令中所包括的详细信息(例如,执行预定功能的代码)可根据操作而变化,所述操作由所述指令执行。
图10是根据本发明的实施例的处理器200的方框图。
在图10中,仅示出与本实施例有关的组件。因此,本领域那些或普通技术人员将理解,处理器200还可包括除图10所示的组件之外的其他通用组件。
参考图10,处理器200可包括输入单元210、控制单元230和操作单元250。
输入单元210可基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令。根据本发明的实施例,输入单元210可基于从指令队列22接收的多个指令中的每一个中所包括的停止位来在预定周期中获取至少一个指令。在本文中,指令队列22可在每个周期中输出预定数量的指令。
当由输入单元210接收的第一指令中所包括的停止位具有第一值(例如0)时,输入单元210可在预定周期中获取作为第一指令之后的下一个指令的第二指令。在本文中,可以基于将多个指令存储在指令队列22中的次序来确定下一个指令。也就是,当第一指令和第二指令顺序地存储在指令队列22中时,第二指令可以是第一指令之后的下一个指令。
当由输入单元210接收的第一指令中所包括的停止位具有第二值(例如1)时,输入单元210可在预定周期之后的下一个周期中获取作为第一指令之后的下一个指令的第二指令。也就是,当停止位具有第二值时,输入单元210可在预定周期中获取第一指令并且在下一个周期中获取第二指令。
控制单元230可从至少一个指令提取类型码,所述类型码包括基于由输入单元210所获取的至少一个指令执行的操作的类型信息。在本文中,操作可以是标量操作或矢量操作。
控制单元230可识别所提取类型码中所包括的操作类型信息。例如,在由第32位表示操作类型的指令的情况下,当第32位的值是0时,控制单元230可将操作识别为标量操作。另外,当第32位的值是1时,控制单元230可将操作识别为矢量操作。
根据本发明的实施例,控制单元230可基于所提取的类型码来将至少一个指令分配给第一复用器252的至少一个槽位。例如,当第一复用器252包括四个槽位时,控制单元230可将执行标量操作的标量指令分配给第一槽位255-1和第二槽位255-2。另外,控制单元230可将执行矢量操作的矢量指令分配给第三槽位255-3和第四槽位255-4。
操作单元250可执行所分配的槽位中的操作。详细地,为了执行所分配的槽位中的操作,操作单元250可将电力供应给第一复用器252的至少一个槽位中分配有指令的槽位。例如,因为将指令分配给四个槽位中的第一槽位255-1、第三槽位255-3和第四槽位255-4,所以操作单元250可将电力供应给第一槽位255-1、第三槽位255-3和第四槽位255-4。
另一方面,操作单元250可中断供应给第一复用器252的至少一个槽位中分配有指令的槽位之外的槽位的电力。例如,当不将指令分配给四个槽位中的第二槽位255-2时,操作单元250可中断供应给第二槽位255-2的电力。因为仅将电力供应给多个槽位中分配有指令的槽位,并且不将电力供应给未分配指令的槽位,所以可以高效地使用电力。
操作单元250可基于类型码中所包括的操作数的类型信息来在至少一个寄存器中选择用于获取操作数的寄存器。在本文中,操作数可包括标量数据或矢量数据。
在标量指令的情况下,操作数是标量数据。因此,操作单元250可选择存储标量数据的标量寄存器。在矢量指令的情况下,操作数可以是标量数据或矢量数据。例如,矢量指令可包括仅处理作为操作数的矢量数据的第一矢量指令和处理作为操作数的矢量数据和标量数据两者的第二矢量指令。因此,操作单元250可基于表示操作数的类型信息的类型码来识别在预定矢量指令中处理的操作数的类型。
根据本发明的实施例的操作单元200可将电力供应给使选定寄存器与第一复用器252的所分配的槽位相连接的第二复用器253的槽位。在本文中,第二复用器253可包括使选定寄存器与第一复用器252中所包括的至少一个槽位相连接的多个槽位。
操作单元250可中断电力使未选定寄存器与第一复用器252的所分配的槽位相连接的第三复用器254的槽位的电力供应。在本文中,第三复用器254可包括使未选定寄存器与第一复用器252中所包括的至少一个槽位相连接的多个槽位。操作单元250中断供应给未在指令执行过程中使用的第三复用器254的槽位的电力,进而使得可能高效地使用电力。
操作单元250可从选定寄存器获取操作。详细地,操作单元250可基于从预定指令提取的操作数的地址信息来从选定寄存器获取操作数。
操作单元250可在连接到第一复用器252的所分配的槽位的操作执行单元260(参见图8)中选择可以运行指令的单元。在本文中,操作执行单元260可包括可执行对应于各个指令的操作的至少一个单元。另外,参考图8,操作执行单元260可被包括在操作单元250中。然而,这仅仅是本发明的实施例,并且操作执行单元260可位于操作单元250外部。
操作单元250可提取预定指令中所包括的操作码,并且基于所提取的操作码来选择操作执行单元260中所包括的单元。操作执行单元160中选定的单元可基于所获取的操作数来执行操作。基于指令中所包括的结果值的地址信息,操作单元250可将通过执行操作生成的结果值存储在存储器的对应于地址信息的预定区域中。
根据本发明的实施例的装置可包括处理器、用于存储和运行程序数据的存储器、永久性存储装置诸如磁盘驱动器、用于与外部设备通信的通信端口以及用户接口(UI)设备诸如触控面板、键和按钮。由软件模块或算法实施的方法可作为在处理器上可运行的计算机可读代码或程序命令存储在计算机可读记录介质上。计算机可读记录介质的示例包括磁性存储介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、软盘和硬盘)和光学记录介质(例如,光盘只读存储器(CD-ROM)和数字通用光盘(DVD))。计算机可读记录介质还可分布于网络耦合计算机系统中,以便计算机可读代码可以以分布方式来存储并运行。计算机可读记录介质通过计算机可读,并且可存储在存储器中并且在处理器中运行。
本文所引用的所有参考文件,包括公开、专利申请和专利,按照相同的程度以引用方式并入本文中,如同每个参考文件都单个地和特别地指示为以引用方式并入到本文中并且其全部内容都进行了阐述。
为了达到促进对本发明构思的理解的目的,已经参考附图中所示的示例性实施例,并且已经使用特定术语来描述本发明的实施例。然而,本发明的范围不被特定术语限制,并且本发明可涵盖可由本领域普通技术人员通常想到的所有元素。
可以在功能块组件和各种处理操作方面来描述本发明的实施例。此类功能块可由运行特定功能的任何数量的硬件和/或软件组件来实施。例如,本发明的实施例可采用各种集成电路(IC)组件,诸如存储器元件、处理元件、逻辑元件和查找表,其可在一个或多个微处理器或其他控制设备的控制下运行各种功能。类似地,在本发明的元件由软件编程或软件元件实施的情况下,本发明的实施例可由任何编程或脚本语言诸如C、C++、Java或汇编语言来实施,其中各种算法由数据结构、过程、例程或其他编程元素的任何组合实施。功能方面可由在一个或多个处理器中运行的算法来实施。另外,本发明的实施例可采用用于电子环境设定、信号处理和/或数据处理的相关技术。诸如“机构”、“元件”、“单元”和“配置”的术语可在广泛意义上使用并且不限于机械和物理配置。所述术语可包括软件例程结合处理器等的意义。
本文所述的特定实现方式仅仅是示例性的,并且不以任何方式限制本发明的范围。为了简洁起见,可省略相关技术电子配置、控制系统、软件和系统的其他功能方面的描述。另外,附图中所示的连接线或连接部件表示各种元件之间的示例性功能关系和/或物理或逻辑连接,并且各种替代或额外功能关系、物理连接或逻辑连接可存在于实际装置中。另外,没有元件可对于本发明的实施例的实践是本质的,除非所述元件特别描述为“本质的”或“关键的”。
应理解,在此描述的示例性实施例应仅以描述意义考虑而不是用于限制目的。每个实施例中对特征或方面的描述应典型地被认为可用于其他实施例中的其他相似特征或方面。
虽然本发明的一个或多个实施例已参考附图进行了描述,但是本领域普通技术人员将理解其中在不脱离所附权利要求定义的本发明范围的精神和范围的情况下可做出形式和细节上的各种变化。
Claims (15)
1.一种在处理器中运行指令的方法,包括:
基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令;
从所述至少一个指令提取类型码,所述类型码包括基于所述至少一个指令执行的操作的类型信息;
基于所提取的类型码来将所述至少一个指令分配给第一复用器的至少一个槽位;以及
执行所分配的槽位中的所述操作。
2.如权利要求1所述的方法,其中所述至少一个指令的获取包括:
当第一指令中所包括的停止位具有第一值时,在所述预定周期中获取作为第一指令之后的下一个指令的第二指令;而
当第一指令中所包括的停止位具有第二值时,在所述预定周期之后的下一个周期中获取第二指令。
3.如权利要求1所述的方法,其中所述操作的类型包括标量操作或矢量操作。
4.如权利要求1所述的方法,其中所述操作的类型包括标量操作或矢量操作。
5.如权利要求1所述的方法,其中所述类型码包括所述操作中处理的操作数的类型信息。
6.如权利要求5所述的方法,其中所述操作数的类型包括标量数据或矢量数据。
7.如权利要求5所述的方法,其中所述操作的执行包括:
基于所述操作数的类型信息从至少一个寄存器中选择用于获取操作数的寄存器;以及
从所述选定寄存器获取所述操作数。
8.如权利要求7所述的方法,其中所述寄存器的选择包括:
将电力供应给使所述选定寄存器与第一复用器的所分配的槽位相连接的第二复用器的槽位;以及
中断供应给使所述至少一个寄存器中的未选定寄存器与第一复用器的所分配的槽位相连接的第三复用器的槽位的电力。
9.如权利要求7所述的方法,其中所述操作的执行包括:
从连接到第一复用器的所分配的槽位的至少一个操作执行单元中选择执行所述操作的操作执行单元;以及
基于所获取的操作数来在所述选定操作执行单元中执行所述操作。
10.如权利要求1所述的方法,其中所述处理器是超长指令字VLIW处理器。
11.一种用于在设备中对指令进行编码的方法,包括:
生成类型码,所述类型码包括处理器中可执行的预定操作的类型信息和在所述预定操作中处理的操作数的类型信息;
生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息;以及
基于所述类型码和所述停止位来生成用于执行所述预定操作的指令。
12.一种运行指令的处理器,包括:
输入单元,其被配置来基于多个指令中的每一个中所包括的停止位来获取在预定周期中运行的至少一个指令;
控制单元,其被配置来从所述至少一个指令提取类型码,所述类型码包括基于所述至少一个指令执行的操作的类型信息,并且基于所提取的类型码将所述至少一个指令分配给第一复用器的至少一个槽位;以及
操作单元,其被配置来执行所分配的槽位中的所述操作。
13.一种运行指令的装置,包括:
代码生成单元,其被配置来生成类型码,所述类型码包括在处理器中可执行的预定操作的类型信息和在所述预定操作中处理的操作数的类型信息;
停止位生成单元,其被配置来生成停止位,所述停止位包括关于在预定周期中执行的至少一个操作的信息;以及
指令生成单元,其被配置来基于所述类型码和所述停止位来生成用于执行所述预定操作的指令。
14.一种非暂态计算机可读记录介质,其存储程序,所述程序当由计算机运行时执行权利要求1所述的方法。
15.一种非暂态计算机可读记录介质,其存储程序,所述程序当由计算机运行时执行权利要求11所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2013-0147519 | 2013-11-29 | ||
KR1020130147519A KR102179385B1 (ko) | 2013-11-29 | 2013-11-29 | 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체 |
PCT/KR2014/011298 WO2015080440A1 (en) | 2013-11-29 | 2014-11-24 | Method and processor for executing instructions, method and apparatus for encoding instructions, and recording medium therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105980980A true CN105980980A (zh) | 2016-09-28 |
CN105980980B CN105980980B (zh) | 2020-06-09 |
Family
ID=53199337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480074517.3A Expired - Fee Related CN105980980B (zh) | 2013-11-29 | 2014-11-24 | 用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10956159B2 (zh) |
EP (1) | EP3060981B1 (zh) |
KR (1) | KR102179385B1 (zh) |
CN (1) | CN105980980B (zh) |
WO (1) | WO2015080440A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2548601B (en) | 2016-03-23 | 2019-02-13 | Advanced Risc Mach Ltd | Processing vector instructions |
US10599428B2 (en) * | 2016-03-23 | 2020-03-24 | Arm Limited | Relaxed execution of overlapping mixed-scalar-vector instructions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062634B1 (en) * | 2002-01-29 | 2006-06-13 | Stmicroelectronics Limited | Processor and a method for handling and encoding no-operation instructions |
US7281119B1 (en) * | 1999-05-03 | 2007-10-09 | Stmicroelectronics S.A. | Selective vertical and horizontal dependency resolution via split-bit propagation in a mixed-architecture system having superscalar and VLIW modes |
CN101501634A (zh) * | 2006-08-18 | 2009-08-05 | 高通股份有限公司 | 使用标量/向量指令处理数据的系统和方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100267089B1 (ko) * | 1996-08-19 | 2000-11-01 | 윤종용 | 스칼라/벡터연산이조합된단일명령복수데이터처리 |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
US6185670B1 (en) * | 1998-10-12 | 2001-02-06 | Intel Corporation | System for reducing number of opcodes required in a processor using an instruction format including operation class code and operation selector code fields |
US6711670B1 (en) * | 1999-10-14 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | System and method for detecting data hazards within an instruction group of a compiled computer program |
US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
US20020112193A1 (en) | 2001-02-09 | 2002-08-15 | International Business Machines Corporation | Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile |
US7051193B2 (en) * | 2001-03-28 | 2006-05-23 | Intel Corporation | Register rotation prediction and precomputation |
US6983389B1 (en) * | 2002-02-01 | 2006-01-03 | Advanced Micro Devices, Inc. | Clock control of functional units in an integrated circuit based on monitoring unit signals to predict inactivity |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US7139897B2 (en) * | 2002-04-01 | 2006-11-21 | Hewlett-Packard Development Company, L.P. | Computer instruction dispatch |
US7174469B2 (en) * | 2003-09-30 | 2007-02-06 | International Business Machines Corporation | Processor power and energy management |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
US7831804B2 (en) * | 2004-06-22 | 2010-11-09 | St Microelectronics S.R.L. | Multidimensional processor architecture |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US20070233961A1 (en) * | 2006-03-31 | 2007-10-04 | Banning John P | Multi-portioned instruction memory |
EP2069912B1 (en) * | 2006-09-06 | 2010-04-28 | Silicon Hive B.V. | Data processing circuit with a plurality of instruction modes, method of operating such a data circuit and scheduling method for such a data circuit |
EP2171609A1 (en) * | 2007-06-18 | 2010-04-07 | Imec | Programmable device for software defined radio terminal |
JP5568939B2 (ja) * | 2009-10-08 | 2014-08-13 | 富士通株式会社 | 演算処理装置及び制御方法 |
-
2013
- 2013-11-29 KR KR1020130147519A patent/KR102179385B1/ko active IP Right Grant
-
2014
- 2014-11-24 CN CN201480074517.3A patent/CN105980980B/zh not_active Expired - Fee Related
- 2014-11-24 WO PCT/KR2014/011298 patent/WO2015080440A1/en active Application Filing
- 2014-11-24 EP EP14865605.1A patent/EP3060981B1/en not_active Not-in-force
- 2014-11-26 US US14/554,785 patent/US10956159B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281119B1 (en) * | 1999-05-03 | 2007-10-09 | Stmicroelectronics S.A. | Selective vertical and horizontal dependency resolution via split-bit propagation in a mixed-architecture system having superscalar and VLIW modes |
US7062634B1 (en) * | 2002-01-29 | 2006-06-13 | Stmicroelectronics Limited | Processor and a method for handling and encoding no-operation instructions |
CN101501634A (zh) * | 2006-08-18 | 2009-08-05 | 高通股份有限公司 | 使用标量/向量指令处理数据的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150062651A (ko) | 2015-06-08 |
EP3060981A1 (en) | 2016-08-31 |
EP3060981A4 (en) | 2017-11-22 |
EP3060981B1 (en) | 2019-06-19 |
WO2015080440A1 (en) | 2015-06-04 |
KR102179385B1 (ko) | 2020-11-16 |
US20150154026A1 (en) | 2015-06-04 |
US10956159B2 (en) | 2021-03-23 |
CN105980980B (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104252391B (zh) | 用于在分布式计算系统中管理多个作业的方法和装置 | |
CN106104483A (zh) | 微处理器系统中的异常处理 | |
CN104583941B (zh) | 用于在多线程处理系统中选择性激活恢复检查操作的方法和设备 | |
CN105453031B (zh) | 用于优化指令的方法和系统 | |
CN105579967A (zh) | Gpu发散栅栏 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN106164810B (zh) | 使用基于电压的功能的性能变化的指令优化 | |
US20160371067A1 (en) | Determination of branch convergence in a sequence of program instruction | |
CN110147281A (zh) | 优化雪花算法在金融业务中应用的方法、装置、电子设备 | |
WO2007107707A3 (en) | Computer architecture | |
CN104793996A (zh) | 一种并行计算设备的任务调度方法及任务调度装置 | |
US9489315B2 (en) | Method of executing, by a microprocessor, a polymorphic binary code of a predetermined function | |
CN101344857B (zh) | 用于加速Java翻译的设备和方法 | |
CN102222017A (zh) | 通过不可见接口实现不符合abi特征的方法和系统 | |
CN104049947B (zh) | 基于动态重命名的矢量寄存器堆的寄存器重新配置 | |
CN105980980A (zh) | 用于运行指令的方法和处理器、用于对指令进行编码的方法和装置以及用于其的记录介质 | |
US7788659B1 (en) | Method of converting computer program with loops to one without loops | |
CN104090804B (zh) | 一种实时dsp嵌入式系统虚拟内存扩容方法 | |
JP2017010077A (ja) | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 | |
CN103988462A (zh) | 用于执行寄存器重命名的寄存器重命名数据处理装置和方法 | |
Yeh et al. | A circular pipeline processing based deterministic parallel test pattern generator | |
CN115543534A (zh) | 训练任务的管理方法、装置、电子设备及存储介质 | |
CN101819608A (zh) | 一种微处理器指令级随机验证中加速取指的装置和方法 | |
CN102880457B (zh) | 一种对数据进行处理的方法和设备 | |
JP3949105B2 (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 | ||
GR01 | Patent grant | ||
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: 20200609 Termination date: 20211124 |