CN107667344B - 可变长度指令处理模式 - Google Patents
可变长度指令处理模式 Download PDFInfo
- Publication number
- CN107667344B CN107667344B CN201680030360.3A CN201680030360A CN107667344B CN 107667344 B CN107667344 B CN 107667344B CN 201680030360 A CN201680030360 A CN 201680030360A CN 107667344 B CN107667344 B CN 107667344B
- Authority
- CN
- China
- Prior art keywords
- mode
- program instructions
- circuitry
- fetch
- proper subset
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims abstract description 6
- 230000001960 triggered effect Effects 0.000 claims description 8
- 238000005265 energy consumption Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 claims 6
- 238000001514 detection method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002459 sustained effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Images
Classifications
-
- 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
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- 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
- 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
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode 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/3802—Instruction prefetching
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Power Sources (AREA)
Abstract
一种数据处理装置(2)以第一操作模式和第二操作模式进行操作,所述第一操作模式具有准备好执行处理操作的第一组处理电路(8,12,18,20,22),所述第二操作模式具有准备好执行处理操作的第二组处理电路(8,12,14,18,20,22,24)。所述处理器使用第一模式和第二模式中的可选择的一个模式来处理支持的指令集内的程序指令的第一真子集(32)。所述指令集内的程序指令的第二真子集(34)需要由在所述第二模式下操作的所述处理器处理。在操作模式中未激活的处理电路(14,24)可以被置于低功率状态。
Description
技术领域
本公开涉及数据处理系统。更具体地说,本公开涉及用于支持程序指令的执行的硬件的模态控制。
背景技术
已知提供了支持多种指令集的数据处理系统。例如,由英国剑桥ARM有限公司设计的处理系统可能同时支持ARM和Thumb指令集。
发明内容
从一个方面来看,本公开提供了用于处理数据的设备,包括:
处理器,用于对存储在所述处理器的寄存器文件内并且由指令集的程序指令指定的操作数执行处理操作,所述处理器至少以第一操作模式和第二操作模式进行操作,所述第一操作模式具有准备好执行处理操作的第一组活动处理电路,所述第二操作模式具有准备好执行处理操作的第二组活动处理电路,所述第二组活动处理电路不同于所述第一组活动处理电路;其中,
由在所述第一模式和所述第二模式中的可选择的一个模式下操作的所述处理器来处理所述指令集内的程序指令的第一真子集;并且
所述指令集内的程序指令的第二真子集需要由在所述第二模式下操作的所述处理器处理。
从另一个方面来看,本公开提供了用于处理数据的设备,包括:
处理装置,用于对存储在所述处理器装置的寄存器文件内并且由指令集的程序指令指定的操作数执行处理操作,所述处理器至少以第一操作模式和第二操作模式进行操作,所述第一操作模式具有用于执行处理操作的第一组活动处理电路,所述第二操作模式具有用于执行处理操作的第二组活动处理电路,所述第二组活动处理电路不同于所述第一组活动处理电路;其中,
由在所述第一模式和所述第二模式中的可选择的一个模式下操作的所述处理装置来处理所述指令集内的程序指令的第一真子集;并且
所述指令集内的程序指令的第二真子集需要由在所述第二模式下操作的所述处理装置处理。
从另一个方面来看,本公开提供了用于处理数据的方法,包括:
至少使用第一操作模式和第二操作模式对存储在处理器的寄存器文件内并且由指令集的程序指令指定的操作数执行处理操作,所述第一操作模式具有用于执行处理操作的第一组活动处理电路,所述第二操作模式具有用于执行处理操作的第二组活动处理电路,所述第二组活动处理电路不同于所述第一组活动处理电路;其中,
使用所述第一模式和所述第二模式中的可选择的一个模式来处理所述指令集内的程序指令的第一真子集;并且
所述指令集内的程序指令的第二真子集需要使用所述第二模式来处理。
附图说明
现在参考附图,仅通过举例的方式描述实施例,其中:
图1示意性地示出了具有第一操作模式和第二操作模式的数据处理设备;
图2示意性地示出了包括程序指令的第一真子集和程序指令的第二真子集的指令集;
图3示意性地示出了不同形式的模式切换指令;
图4是示意性地示出由中断触发的模式之间的切换的流程图;
图5是示意性地示出由切换指令触发的模式之间的切换的流程图;
图6是示意性地示出由优选度量值触发的模式之间的切换的流程图;并且
图7是示意性地示出由不支持的指令触发的模式之间的切换的流程图。
具体实施方式
图1示意性地示出了包括耦合到存储器6的处理器4的数据处理装置2。处理器4包括用于从存储器6获取用于执行的程序指令的取回电路8。取回电路8由模式信号控制以在第一操作模式或第二操作模式下进行操作。在第一操作模式中,取回电路8用作第一取回电路以第一取回率从存储器6取回程序指令。在第二模式中,取回电路8用作第二取回电路以第二取回率从存储器6取回程序指令。取回电路8包括取回电路所取回的程序指令存储在其中的指令取回缓冲器10。在第一模式中,仅使用指令取回缓冲器10的一部分(计时和/或上电),并且这用作第一指令取回缓冲器。在第二模式中,使用整个指令取回缓冲器10,并且这用作第二指令取回缓冲器。第一个指令取回缓冲器的存储容量比第二个指令取回缓冲器的存储容量小。
从存储器6取回的程序指令可以是16位指令或32位指令。更一般地,指令可以是N位指令或M位指令,其中M大于N。在第一模式的这个示例性实施例中,取位宽度是16位,而在第二模式中,取位宽度是32位。如果处理装置2每个周期平均消耗一个指令,则在第一模式下操作,则取回电路8能够每个周期取回一个16位程序指令位,所以如果正在执行主要的16位程序指令,则跟上程序执行的步伐。相反地,在第二模式中,取回电路8能够在每个周期中取回一个32位程序指令,并且如果主要执行32位程序指令,则与程序执行保持同步。应该理解的是,实际上可以执行16位和32位程序指令的混合,而且每个周期执行的程序指令的数量可以不是一个。当使用16位读取位宽时,仍然可以读取32位指令,但在这种情况下,将使用两个读取周期来读取每条指令。
指令取回缓冲器10提供指令取回率和指令消耗率之间的滤波。如果指令取回率能力与指令消耗速率相匹配,能耗可以降低。在图1的例子中,如果处理器4主要执行16位指令,那么仅通过在每个周期取平均16位指令就可以节省能量,从而在这种操作(第一操作模式)期间允许取回电路8的部分断电,或者至少被时钟门控。相反,假如处理器4需要执行32位程序指令的持续执行周期,则可以采用取回电路8的第二操作模式,以便支持每周期32位的持续取回率。在取回电路的指令取回率能力被映射到处理器4的指令消耗率的实施例中,效率可以得到提高。提供额外的指令取回率能力会不必要地消耗能量。
可以理解的是,在上面,假设取回周期对应于指令执行周期。在其他实施例中,这可能不一定是这种情况。尽管如此,在这样的其它实施例中,以不同的取回率能力在多个模式下操作取回电路仍然是适当的。在支持混合的16位和32位指令集的系统中,16位指令可以是指令集内程序指令的第一个真子集,关于取回电路8的行为,处理器4可以以支持16位指令取回宽度或32位指令取回宽度的第一模式中的可选择的一个进行操作。取回电路8在第二模式下操作时只有16位程序指令,但具有过量的取回能力,但仍能正常工作。但是,当执行持续的32位程序指令流时,取回电路8(尽管指令取回缓冲器10的动作)如果在第一模式(16位取回宽度)下操作,则可能无法跟上指令消耗,并且因此处理器4可能停止以等待要取回的程序指令。因此,指令集的32位程序指令可以被认为是需要由处理器4在第二模式下处理的程序指令的第二个真子集(至少如果想要避免不期望的停顿)。
由取回电路8取回的程序指令被提供给由第一解码器电路12和第二解码器电路14形成的解码器电路。第一解码器电路12在第一模式中是活动的。第一解码器电路12和第二解码器电路14都在第二模式下有效。当处理器4仅执行16位程序指令时,则其可以在仅第一解码器电路12激活的第一模式下操作。第一解码器电路12能够解码16位程序指令,但不能解码所有的32位程序指令。当以第二模式操作时,第一解码器电路12和第二解码器电路14两者都是有效的,并且指令集内的所有指令都可以被解码。程序指令的第二个真子集(例如一些32位程序指令,诸如浮点程序指令)需要第二解码器电路14有效,因为第一解码器电路12不能够解码来自该第二子集程序指令的程序指令。
关于图1中所示的取回电路8,第一和第二解码器电路12、14以及处理器4的其他元件,当电路的部分不活动时,它们可以被置于低功率状态。该低功率状态可以采取各种形式,例如时钟信号选通,关闭包含在不活动的电路元件中的相关功率域或其他功率控制技术。
模式控制电路16被耦合到第一解码器12和第二解码器14,并且用于窥探被解码用于执行的程序指令。模式控制电路16根据所执行的程序指令流的检测特性,使用该探听数据试探性地控制第一模式和第二模式之间的切换。如果编程指令被解码,则要求处理器在第二模式下操作,则模式控制电路16将操作切换到该第二模式。如果检测到大于在第二模式中优先但不是基本上执行的程序指令的阈值率,则可以切换到第二模式。类似地,如果检测到大于第一真子集的程序指令执行的阈值率优先(例如,至少减少能量消耗的原因),然后可以切换到第一模式。
由第一解码器12和第二解码器14生成的解码控制信号被传递到发布电路18,其中相应的处理操作被发布到多个处理流水线中的适当处理流水线,如整数流水线20、加载存储单元22和浮点流水线24。在这个例子中,浮点流水线24负责执行浮点程序指令。浮点程序指令是作为程序指令的第二个真子集的一部分的32位程序指令,并要求处理器4以第二模式进行操作。相应地,浮点流水线24在第一模式中的非活动状态与第二模式中的活动状态之间切换。不活动状态是低功率状态。实际上,执行程序代码的大部分可能不需要执行浮点程序指令,因此浮点流水线24可以在程序执行期间根据第一操作模式而被关闭。程序指令的第一子集(其不包括任何浮点指令)内的程序指令可以被执行而不管浮点流水线24是否是活动的。如果浮点流水线24不活动,则将实现较低的功耗。
处理器4内提供寄存器文件26以存储要操纵的操作数值。寄存器文件26内的寄存器包括高阶寄存器文件电路和低阶寄存器文件电路。在第二种模式下工作时,高阶寄存器文件电路和低阶寄存器文件电路都处于激活状态并可供使用。当在第一模式下操作时,高阶寄存器文件电路被置于低功率状态,其中低阶寄存器文件电路保持活动状态并且可供使用。程序指令的第一个真子集要求访问低阶寄存器文件电路,但不访问高阶寄存器文件电路。相反,程序指令的第二个真子集要求访问高阶寄存器文件电路和低阶寄存器文件电路。
如上所述的模式控制电路16能够根据检测到的所执行的程序指令流的特性,在第一操作模式和第二操作模式之间进行切换。其他开关机构也是可行的。例如,可以在指令集内提供显式模式切换程序指令。用于从第一模式切换到第二模式的特定16位程序指令可以包括在程序指令的第一真子集内。用于从第二模式切换到第一模式的32位模式切换指令可以包括在第二个合适的程序指令子集内。第一解码器12可响应于16位模式切换程序指令以触发模式控制电路16将操作模式从第一模式切换到第二模式。第二解码器14可响应于32位模式切换指令以触发模式控制电路16从第二模式切换到第一模式。
可以执行的模式切换控制的另一种形式与由中断控制器28接收到的中断信号相关联。当接收到中断时,如本技术领域的技术人员熟悉的那样,触发程序指令执行流程的重定向。中断控制器28配置有与每个接收到的中断信号相关联的数据,其指示当执行该中断时应当启动哪个中断处理程序。该中断配置数据还可以包括模式数据,该模式数据指示要采用第一操作模式或第二操作模式中的哪一个来执行关联的中断处理程序。因此,当中断控制器28接收到中断信号时,启动相关的中断处理程序的执行,并且如果与该中断处理程序相关联的模式标志指示处理器4的当前操作模式的处理的不同模式,则进行操作模式的切换。
图2示意性地示出了由16位程序指令和32位程序指令的混合形成的指令集30。程序指令32的第一个真子集是可以以第一操作模式或第二操作模式中的可选择的一个来处理的指令。程序指令34的第二个真子集是程序指令,例如浮点程序指令,其需要在第二操作模式下进行处理。第一真子集和第二真子集之外的程序指令可以在第一操作模式或第二操作模式中执行,但是优选在第二操作模式中执行。
图3示意性地示出了在指令集30内使用显式模式切换程序指令。如前所述,可以提供在第一操作模式中操作时用于执行的16位指令以将执行切换到第二操作模式。类似地,可以提供显式的32位模式切换程序指令用于在第二操作模式下执行以将执行切换到第一操作模式。
在其他示例性实施例中,代替16位指令和32位指令,系统可以使用32位指令和64位指令来操作。
图4示意性地示出了模式的中断触发开关。在步骤36中,处理等待,直到中断控制器28接收到中断信号。在步骤38中,除了与中断相关联的其他处理操作之外,中断控制器38还用于读取与所接收的中断相关联的模式标志。该模式标志被提供给模式控制器16。在步骤40中,模式控制器16根据接收到的模式标志确定处理器4是否按照新采用的中断处理程序的模式标志所指示的正确模式运行。如果处理器4当前不在正确模式下操作,则步骤42用于切换操作模式。
图5是示意性地示出显式切换指令触发模式切换的流程图。模式切换指令可以是关于图3所参考的16位模式切换指令或32模式切换指令。在步骤44中,指令解码器电路12、14等待,直到接收到模式切换指令。当接收到模式切换指令时,则将信号发送到模式控制器16以指示应该执行模式切换。步骤46对应于模式控制器16切换如已经执行的显式模式切换程序指令所指示的模式。
图6是示意性地示出根据优选执行度量的启发式切换的流程图。在步骤48中,处理等待,直到由模式控制器16检测到的解码器电路12、14的指令被解码为优选用于以与处理器4的当前操作模式不同的模式执行的指令。当检测到优选以不同模式执行的这样的程序指令时,则处理进行到步骤50,其中更新优选度量值。例如,这个优选的度量值可以跟踪以其非优选模式执行的这种程序指令的平均检测率。其他度量值的形式也是可能的。在步骤52中,确定更新的优选度量值是否高于切换阈值。如果优选度量值高于切换阈值,则步骤54启动模式切换。当处理器4当前正在以第一模式操作时,模式切换可以是从第一模式切换到第二模式,或者当处理器4当前在第二模式下操作时,模式切换可以是从第二模式切换到第一模式。不同切换方向的阈值可能不同,实际上用于启发式控制不同方向切换的优选度量也可能不同。
图7示意性地示出了通过检测到不支持的指令触发的模式切换。在步骤56中,处理等待,直到解码器电路12、14检测到当前操作模式中不支持的指令。这种不支持的指令的例子是当处理器4在第一操作模式下操作时检测到的浮点编程指令。当检测到这种不支持的指令时,步骤58用于切换操作模式,例如,从浮点流水线24不活动的第一操作模式切换到其中浮点流水线24活动的第二操作模式。
尽管已经参考附图在本文中详细描述了说明性实施例,但是应该理解的是,权利要求书不限于那些明确的实施例,并且本领域技术人员可以在其中进行各种改变、添加和修改,而不偏离所附权利要求的范围和精神。例如,从属权利要求的特征可以与独立权利要求的特征一起进行各种组合。
Claims (19)
1.一种用于处理数据的设备,包括:
处理器,用于对存储在所述处理器的寄存器文件内并且由指令集的程序指令指定的操作数执行处理操作,所述处理器包括取回电路和耦合至所述取回电路的解码器电路,所述取回电路用于从存储器取回所述程序指令以供执行,所述解码器电路用于解码取回的所述程序指令,并且所述处理器至少以第一操作模式和第二操作模式进行操作,所述处理器在所述第一操作模式下使用第一组活动处理电路来对存储在所述寄存器文件内并且由所述指令集的程序指令指定的操作数执行处理操作,所述处理器在所述第二操作模式下使用第二组活动处理电路来对存储在所述寄存器文件内并且由所述指令集的程序指令指定的操作数执行所述处理操作的替代实现,所述第二组活动处理电路不同于所述第一组活动处理电路;其中,在取回所述程序指令并且解码取回的所述程序指令时:
所述处理器被配置为通过在所述第一操作模式和所述第二操作模式中的可选择的一个模式下进行操作来处理所述指令集内的16/32位程序指令的第一真子集;并且
所述处理器被配置为通过在所述第二操作模式下进行操作来处理所述指令集内的32/64位程序指令的第二真子集,
其中,在所述第一操作模式中所述第一真子集的所述16/32位程序指令是16位,并且在所述第二操作模式中所述第二真子集的所述32/64位程序指令是32位,或者在所述第一操作模式中所述第一真子集的所述16/32位程序指令是32位,并且在所述第二操作模式中所述第二真子集的所述32/64位程序指令是64位,并且
其中,所述第二组活动处理电路包括第一解码器电路以解码所述第一真子集的所述16/32位程序指令以及第二解码器电路以解码所述第二真子集的所述32/64位程序指令,并且所述第一组活动处理电路包括所述第一解码器电路并且不包括所述第二解码器电路。
2.根据权利要求1所述的设备,其中所述第一组活动处理电路具有至少一个不同于所述第二组活动处理电路的性能特征。
3.根据权利要求2所述的设备,其中所述至少一个性能特征包括以下中的一个或多个:
处理程序指令的每个指令的平均能耗;处理程序指令的每个指令的平均耗时;以及漏电功率。
4.根据权利要求1、2和3中任一项所述的设备,其中所述第一真子集包括N位程序指令,所述第二真子集包括M位程序指令,M大于N。
5.根据权利要求4所述的设备,其中所述第一组活动处理电路包括第一取回电路,所述第一取回电路使用以平均每周期第一数量的位进行取回的第一取回率从存储器取回程序指令,并且所述第二组活动处理电路包括第二取回电路,所述第二取回电路使用以平均每周期第二数量的位进行取回的第二取回率从存储器取回程序指令,所述第二取回率大于所述第一取回率。
6.根据权利要求5所述的设备,其中第一取回位宽是N位,第二取回位宽是M位。
7.根据权利要求5和6中任一项所述的设备,其中所述第一取回电路包括第一指令取回缓冲器,所述第二取回电路包括第二指令取回缓冲器,并且所述第一指令取回缓冲器具有比所述第二指令取回缓冲器低的指令存储容量。
8.根据权利要求1、2和3中任一项所述的设备,其中所述第一真子集不包括浮点程序指令,并且所述第二真子集包括浮点指令。
9.根据权利要求8所述的设备,其中所述第二组活动处理电路包括浮点处理电路,并且所述第一组活动处理电路不包括所述浮点处理电路。
10.根据权利要求9所述的设备,其中所述浮点处理电路在所述第一操作模式下处于低功率状态,在所述第二操作模式下处于高功率状态。
11.根据权利要求1所述的设备,其中所述第二解码器电路在所述第一操作模式下处于低功率状态,在所述第二操作模式下处于高功率状态。
12.根据权利要求1、2和3中任一项所述的设备,其中所述第二组活动处理电路包括被配置为存储低阶操作数值的低阶寄存器文件电路和被配置为存储高阶操作数值的高阶寄存器文件电路,并且所述第一组活动处理电路包括所述低阶寄存器文件电路并且不包括所述高阶寄存器文件电路。
13.根据权利要求12所述的设备,其中所述高阶寄存器文件电路在所述第一操作模式中被选通为非激活状态,在所述第二操作模式中被选通为激活状态。
14.根据权利要求1、2和3中任一项所述的设备,其中所述指令集包括在所述第一操作模式和所述第二操作模式之间切换的一个或多个程序指令。
15.根据权利要求1、2和3中任一项所述的设备,包括中断控制电路,以通过一个或多个中断处理程序来控制中断处理,其中相应的模式标志指示中断处理程序是否以所述第一操作模式或所述第二操作模式处理。
16.根据权利要求1、2和3中任一项所述的设备,包括模式控制电路,所述模式控制电路根据检测到的所执行的程序指令流的特性来启发式地控制所述第一操作模式和所述第二操作模式之间的切换。
17.根据权利要求1、2和3中任一项所述的设备,其中,当在所述第一操作模式下操作并且在要执行的程序流内检测到所述第二真子集内的指令时,触发到所述第二操作模式的切换。
18.根据权利要求1、2和3中任一项所述的设备,其中,当在所述第一操作模式下操作并且在要执行的程序流程内检测到多于阈值数量的优选用于在所述第二操作模式下执行的指令时,触发到所述第二操作模式的切换。
19.一种处理数据的方法,包括:
至少使用第一操作模式和第二操作模式对存储在处理器的寄存器文件内并且由指令集的程序指令指定的操作数执行处理操作,所述处理器包括取回电路和耦合至所述取回电路的解码器电路,所述取回电路用于从存储器取回所述程序指令以供执行,所述解码器电路用于解码取回的所述程序指令,其中,在所述第一操作模式下使用第一组活动处理电路来对存储在所述寄存器文件内并且由所述指令集的程序指令指定的操作数执行处理操作,在所述第二操作模式下使用第二组活动处理电路来对存储在所述寄存器文件内并且由所述指令集的程序指令指定的操作数执行所述处理操作的替代实现,所述第二组活动处理电路不同于所述第一组活动处理电路;其中,在取回所述程序指令并且解码取回的所述程序指令时:
利用所述处理器使用所述第一操作模式和所述第二操作模式中的可选择的一个模式来处理所述指令集内的16/32位程序指令的第一真子集;并且
利用所述处理器使用所述第二操作模式来处理所述指令集内的32/64位程序指令的第二真子集,
其中,在所述第一操作模式中所述第一真子集的所述16/32位程序指令是16位,并且在所述第二操作模式中所述第二真子集的所述32/64位程序指令是32位,或者在所述第一操作模式中所述第一真子集的所述16/32位程序指令是32位,并且在所述第二操作模式中所述第二真子集的所述32/64位程序指令是64位,并且
其中,所述第二组活动处理电路包括第一解码器电路以解码所述第一真子集的所述16/32位程序指令以及第二解码器电路以解码所述第二真子集的所述32/64位程序指令,并且所述第一组活动处理电路包括所述第一解码器电路并且不包括所述第二解码器电路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1509746.2A GB2546465B (en) | 2015-06-05 | 2015-06-05 | Modal processing of program instructions |
GB1509746.2 | 2015-06-05 | ||
PCT/GB2016/050978 WO2016193655A1 (en) | 2015-06-05 | 2016-04-07 | Variable-length-instruction processing modes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107667344A CN107667344A (zh) | 2018-02-06 |
CN107667344B true CN107667344B (zh) | 2022-07-22 |
Family
ID=53784983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680030360.3A Active CN107667344B (zh) | 2015-06-05 | 2016-04-07 | 可变长度指令处理模式 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11379237B2 (zh) |
KR (1) | KR102528699B1 (zh) |
CN (1) | CN107667344B (zh) |
GB (1) | GB2546465B (zh) |
WO (1) | WO2016193655A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230185572A1 (en) * | 2021-12-13 | 2023-06-15 | Intel Corporation | Instruction decode cluster offlining |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
CN1430124A (zh) * | 2001-10-02 | 2003-07-16 | O2米克罗公司 | 用于计算机装置的低功率数字音频解码/播放系统 |
CN101101544A (zh) * | 2006-07-07 | 2008-01-09 | 国际商业机器公司 | 用于改进处理器中分支预测的方法和装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726921A (en) * | 1995-12-22 | 1998-03-10 | Intel Corporation | Floating point power conservation |
JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6189090B1 (en) | 1997-09-17 | 2001-02-13 | Sony Corporation | Digital signal processor with variable width instructions |
EP1050796A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics S.A. | A decode unit and method of decoding |
US7124286B2 (en) * | 2000-01-14 | 2006-10-17 | Advanced Micro Devices, Inc. | Establishing an operating mode in a processor |
US6973562B1 (en) * | 2000-01-14 | 2005-12-06 | Advanced Micro Devices, Inc. | Establishing an operating mode in a processor |
US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
US6976182B1 (en) * | 2002-02-01 | 2005-12-13 | Advanced Micro Devices, Inc. | Apparatus and method for decreasing power consumption in an integrated circuit |
US7496776B2 (en) * | 2003-08-21 | 2009-02-24 | International Business Machines Corporation | Power throttling method and apparatus |
US7263621B2 (en) * | 2004-11-15 | 2007-08-28 | Via Technologies, Inc. | System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback |
US7461275B2 (en) * | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
US9304773B2 (en) * | 2006-03-21 | 2016-04-05 | Freescale Semiconductor, Inc. | Data processor having dynamic control of instruction prefetch buffer depth and method therefor |
US8806228B2 (en) | 2006-07-13 | 2014-08-12 | International Business Machines Corporation | Systems and methods for asymmetrical performance multi-processors |
US20080126743A1 (en) * | 2006-07-18 | 2008-05-29 | Via Technologies, Inc. | Reducing Stalls in a Processor Pipeline |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
JP4938080B2 (ja) * | 2007-06-12 | 2012-05-23 | パナソニック株式会社 | マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路 |
CN100555225C (zh) | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
GB2478726B (en) * | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
US8751833B2 (en) * | 2010-04-30 | 2014-06-10 | Arm Limited | Data processing system |
CN101876892B (zh) | 2010-05-20 | 2013-07-31 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
US8683243B2 (en) * | 2011-03-11 | 2014-03-25 | Intel Corporation | Dynamic core selection for heterogeneous multi-core systems |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US8914615B2 (en) * | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
WO2013100996A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Binary translation in asymmetric multiprocessor system |
WO2013101146A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Using reduced instruction set cores |
US10423216B2 (en) * | 2013-03-26 | 2019-09-24 | Via Technologies, Inc. | Asymmetric multi-core processor with native switching mechanism |
US9280422B2 (en) * | 2013-09-06 | 2016-03-08 | Seagate Technology Llc | Dynamic distribution of code words among multiple decoders |
-
2015
- 2015-06-05 GB GB1509746.2A patent/GB2546465B/en active Active
-
2016
- 2016-04-07 KR KR1020177036366A patent/KR102528699B1/ko active IP Right Grant
- 2016-04-07 CN CN201680030360.3A patent/CN107667344B/zh active Active
- 2016-04-07 US US15/572,678 patent/US11379237B2/en active Active
- 2016-04-07 WO PCT/GB2016/050978 patent/WO2016193655A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
CN1430124A (zh) * | 2001-10-02 | 2003-07-16 | O2米克罗公司 | 用于计算机装置的低功率数字音频解码/播放系统 |
CN101101544A (zh) * | 2006-07-07 | 2008-01-09 | 国际商业机器公司 | 用于改进处理器中分支预测的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2546465B (en) | 2018-02-28 |
KR102528699B1 (ko) | 2023-05-04 |
US20180157490A1 (en) | 2018-06-07 |
CN107667344A (zh) | 2018-02-06 |
WO2016193655A1 (en) | 2016-12-08 |
GB2546465A (en) | 2017-07-26 |
US11379237B2 (en) | 2022-07-05 |
GB201509746D0 (en) | 2015-07-22 |
KR20180015660A (ko) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9389863B2 (en) | Processor that performs approximate computing instructions | |
JP5172942B2 (ja) | プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム | |
JP5074389B2 (ja) | Simd並列処理の自動選択を備えたマイクロプロセッサ | |
JP5329563B2 (ja) | マルチスレッド・プロセッサのための共有割込みコントローラ | |
US7809933B2 (en) | System and method for optimizing branch logic for handling hard to predict indirect branches | |
US8407714B2 (en) | Arithmetic device for processing one or more threads | |
US8694976B2 (en) | Sleep state mechanism for virtual multithreading | |
US7596683B2 (en) | Switching processor threads during long latencies | |
KR101660659B1 (ko) | 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행 | |
KR20180067583A (ko) | 이동 프리픽스 명령어 | |
US9588845B2 (en) | Processor that recovers from excessive approximate computing error | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
JP2009501961A (ja) | 予測的なプロセッサコンポーネントサスペンドのためのシステム及びその方法 | |
KR20020073233A (ko) | 코프로세서 명령 실행 장치 및 방법 | |
US20210365265A1 (en) | Processor achieving zero-overhead loop | |
US10235232B2 (en) | Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction | |
CN107667344B (zh) | 可变长度指令处理模式 | |
US10983551B2 (en) | Clock management unit, integrated circuit including the clock management unit, system on chip, and method of operating the system on chip | |
JP2010015375A (ja) | メモリ制御回路および集積回路 | |
JP2007257349A (ja) | プロセッサ及びその処理方法 | |
US7290153B2 (en) | System, method, and apparatus for reducing power consumption in a microprocessor | |
US20140201505A1 (en) | Prediction-based thread selection in a multithreading processor | |
CN113760364B (zh) | 逻辑器件的控制器 | |
US20170083336A1 (en) | Processor equipped with hybrid core architecture, and associated method | |
JP2008234270A (ja) | 情報処理装置および情報処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180525 Address after: cambridge Applicant after: ARM Ltd. Applicant after: ARM TECHNOLOGY (CHINA) Co.,Ltd. Address before: Cambridge County Applicant before: ARM Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |