CN106462391A - 利用管线寄存器作为中间存储器 - Google Patents

利用管线寄存器作为中间存储器 Download PDF

Info

Publication number
CN106462391A
CN106462391A CN201580024902.1A CN201580024902A CN106462391A CN 106462391 A CN106462391 A CN 106462391A CN 201580024902 A CN201580024902 A CN 201580024902A CN 106462391 A CN106462391 A CN 106462391A
Authority
CN
China
Prior art keywords
gpr
value
pipeline register
pipeline
initial
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
Application number
CN201580024902.1A
Other languages
English (en)
Other versions
CN106462391B (zh
Inventor
陈林
杜云
苏梅西·乌达亚库马兰
张弛红
安德鲁·埃文·格鲁贝尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN106462391A publication Critical patent/CN106462391A/zh
Application granted granted Critical
Publication of CN106462391B publication Critical patent/CN106462391B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

在一个实例中,一种方法包含:响应于通过处理单元接收请求将第一值从第一通用寄存器GPR移动到第三GPR及将第二值从第二GPR移动到第四GPR的一或多个指令,通过初始逻辑单元且在第一时钟周期期间将所述第一值拷贝到初始管线寄存器,通过所述初始逻辑且在第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器,通过最终逻辑单元且在第三时钟周期期间将所述第一值从最终管线寄存器拷贝到所述第三GPR,及通过所述最终逻辑单元且在第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR。

Description

利用管线寄存器作为中间存储器
技术领域
本发明涉及处理单元,且更特定来说,涉及在处理单元的通用寄存器之间移动多个值。
背景技术
处理单元(例如,图形处理单元(GPU)及中央处理单元(CPU))可用于在计算装置内执行广泛各种操作。举例来说,GPU可为用于在显示器上操纵及显示计算机化图形的图形呈现装置。GPU是用高度平行结构构建,所述高度平行结构可针对复杂算法范围提供比典型、通用中央处理单元(CPU)更高效的处理。处理单元通常包含用于存储数据的多个通用寄存器(GPR)。在执行操作时,处理单元通常执行致使处理单元在GPR间移动值的指令。
发明内容
一般来说,本发明描述使用管线寄存器来在GPR之间移动值的处理单元。处理单元可经配置以根据指令集架构(ISA)操作,所述ISA可包含多个指令,每一指令规定可由所述处理单元执行的特定操作。作为一个实例,所述ISA中所包含的移动指令可规定将值从源GPR移动到目的地GPR。
在一个实例中,方法包含:通过处理单元接收请求将第一值从多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令。在此实例中,所述方法还包含:响应于接收到一或多个指令,通过所述处理单元中的初始逻辑单元且在第一时钟周期期间,将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器,其中所述多个管线寄存器不同于所述多个GPR;通过所述处理单元中的所述初始逻辑单元且在继所述第一时钟周期之后的第二时钟周期期间,将所述第二值拷贝至所述初始管线寄存器;通过所述处理单元中的最终逻辑单元且在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器中的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及通过所述处理单元中的所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
在另一实例中,处理单元包含多个GPR;包括多个管线寄存器的管线,其中所述多个管线寄存器不同于所述多个GPR;多个逻辑单元;及控制器。在此实例中,控制经配置以接收请求将第一值从所述多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令。在此实例中,响应于接收到所述一或多个指令,所述控制器经配置以致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到所述多个管线寄存器中的初始管线寄存器;致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器中的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及致使所述最终逻辑单元在继所述第二时钟周期之后的第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
在另一实例中,非暂时性计算机可读存储媒体存储供处理单元请求将第一值从多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令。在此实例中,在被执行时,所述一或多个指令致使所述处理单元进行以下操作:致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器;致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及致使所述最终逻辑单元在继所述第二时钟周期之后的第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
在另一实例中,方法包含:通过编译器模块接收代码,及响应于通过所述编译器模块确定可将由所述代码指示的多个操作可组合到组合移动指令中,产生所述组合移动指令。在此实例中,在由处理单元执行时,所述所产生的组合移动指令致使所述处理单元在将多个值从多个GPR中的多个源GPR移动到所述多个GPR中的多个目的地GPR时利用多个管线寄存器作为暂时存储器,且其中所述多个管线寄存器不同于所述多个GPR。
下文的随附图式及描述中阐明一或多个实例的细节。根据所述描述及图式以及根据权利要求书将明了其它特征、目的及优点。
附图说明
图1为根据本发明的一或多种技术说明包含在执行组合移动指令时使用管线寄存器来在通用寄存器(GPR)之间移动值的实例处理单元的集成电路的框图。
图2为根据本发明的一或多种技术说明包含在执行组合移动指令时使用管线寄存器来在GPR之间移动值的实例处理单元的集成电路的框图。
图3A到3C为根据本发明的一或多种技术说明在执行组合移动指令时使用管线寄存器来在GPR之间移动值的处理单元内的实例数据流的时序图。
图4为根据本发明的一或多种技术说明在执行组合移动指令时使用管线寄存器来在GPR之间移动值的处理单元的实例操作的流程图。
图5为根据本发明的一或多种技术说明输出组合移动指令的实例编译器模块的框图。
图6为根据本发明的一或多种技术说明输出组合移动指令的编译器模块的实例操作的流程图。
图7为根据本发明的一或多种技术的说明包含图1的集成电路的实例装置100的框图。
具体实施方式
一般来说,本发明描述使用管线寄存器来在GPR之间移动值的处理单元。处理单元可经配置以根据指令集架构(ISA)操作,所述ISA可包含多个指令,每一指令规定可由所述处理单元执行的特定操作。作为一个实例,所述ISA中所包含的移动指令可规定将值从源GPR移动到目的地GPR。在一些实例中,例如当在寄存器之间移动多个值时,针对每一移动执行单独指令可较低效。
根据本发明的一或多种技术,ISA中所包含的组合移动指令可规定将多个值从多个源GPR移动到多个目的地GPR。在一些实例中,特定GPR可被包含在多个源GPR及多个目的地GPR两者中。举例来说,组合移动指令,例如,对换指令,可规定将存储在第一GPR中的第一值移动到第二GPR且将存储在第二GPR中的第二值移动到第一GPR(例如,对换存储在第一GPR及第二GPR中的值)。在一些实例中,为了执行组合移动指令,处理单元可在执行期间利用第三GPR来暂时存储所述值中的一者。举例来说,处理单元可将第一值从第一GPR拷贝到第三GPR,将第二值从第二GPR拷贝到第一GPR,及将第一值从第三GPR拷贝到第二GPR。
在一些实例中,处理单元可包含一或多个管线。管线中的每一者可包含多个阶段,至少包含可包含初始逻辑单元及初始管线寄存器的初始阶段,及包含最终逻辑单元的最终阶段。如此,在一些实例中,N阶段管线可包含N个逻辑单元及N-1个管线寄存器,且第N-1阶段中所包含的管线寄存器可被称作最终管线寄存器。
在操作中,N阶段管线的初始逻辑单元可在第一时钟周期期间从处理单元的另一组件(例如,GPR)接收值。在随后时钟周期期间,值可通过管线的随后元件,且在第N时钟周期期间,所述值可用于从最终阶段拷贝。举例来说,在第一时钟周期期间,初始逻辑单元可接收值,对所述值执行任何所请求逻辑运算,及将所述值提供到初始管线寄存器,使得在第一时钟周期结束时,初始管线寄存器存储所述值。接着,在第二时钟周期期间,第二逻辑单元可从初始管线寄存器接收值,对所述值执行任何所请求逻辑运算,及将所述值提供到第二管线寄存器,使得在第二时钟周期结束时,第二管线寄存器存储所述值。如果管线为三阶段管线(即,N=3),那么在第三时钟周期期间,第三逻辑单元可从第二管线寄存器接收值,对所述值执行任何所请求逻辑运算,及将所述值提供到处理单元的一或多个其它组件(例如,GPR)使得在第三时钟周期结束时一或多个其它组件存储所述值。
在一些实例中,初始逻辑单元可在第一值已退出管线之前(例如,在最终逻辑单元已将第一值拷贝到GPR之前)接收第二值。举例来说,在第二时钟周期期间,初始逻辑单元可接收第二值,对所述第二值执行任何所请求逻辑运算,及将所述第二值提供到初始管线寄存器,使得在第二时钟周期结束时,初始管线寄存器存储所述第二值。另外,如在其中值为第一值的上述实例中所论述,在第二时钟周期结束时,第二管线寄存器可存储第一值。接着,在第三时钟周期期间,第二逻辑单元可从第一管线寄存器接收第二值,对所述第二值执行任何所请求逻辑运算,及将所述第二值提供到第二管线寄存器,使得在第二时钟周期结束时,第二管线寄存器存储所述第二值。以此方式,可在单个时钟周期期间,可从管线寄存器拷贝第一值且可将第二值拷贝到管线寄存器。
虽然暂时GPR的利用使得处理单元能够完成指令的执行,但在一些实例中,可不期望使用额外GPR。根据本发明的一或多种技术,处理单元可利用处理单元的管线寄存器作为暂时存储器,如与使用额外GPR来进行暂时存储相反。举例来说,在执行对换指令时,处理单元可在第一周期期间将第一值从第一GPR拷贝到管线的初始管线寄存器,在第二周期期间将第二值从第二GPR拷贝到管线的初始寄存器,在第三周期期间将第一值从管线的最终管线寄存器拷贝到第二GPR,及在第四周期期间将第二值从最终管线寄存器拷贝到第一GPR。换句话说,处理单元可使用管线及其构成管线寄存器作为先进先出(FIFO)队列,其中管线寄存器中的每一者中的值在时钟周期中拷贝到相应的下一管线寄存器。以此方式,处理单元可在无需使用额外GPR来进行暂时存储的情况下对换两个GPR的值。
如下文更详细所描述,GPR及管线寄存器不同,且存取管线寄存器相较存取GPR可需要较少功率。因此,通过使用管线寄存器来进行暂时存储而非GPR,技术减少功率消耗,以及避免不必要地使GPR不可用(例如,原本用于暂时存储的GPR)。
图1为根据本发明的一或多种技术说明包含在执行组合移动指令时使用管线寄存器来在GPR之间移动值的实例处理单元2的集成电路1(“IC 1”)的框图。在一些实例中,IC 1可被包含在装置中,例如,移动计算装置(例如,“智能电话”)、计算装置(例如,桌上型计算机、膝上型计算机、服务器及其类似者)、计算装置模块(例如,图形卡)、个人数字助理(PDA)、手持式视频游戏装置、游戏控制台,及/或电视装置。在一些实例中,IC 1可包含经配置以在显示器上操纵及显示计算机化图形的图形处理单元(GPU)及/或经配置以执行一般计算操作的中央处理单元(CPU)。举例来说,处理单元2可为GPU的着色器处理器。如图1中所说明,IC 1可包含处理单元2,所述处理单元2包含通用寄存器(GPR)4A到4N(统称“GPR 4”)、管线6、控制器12及时钟14。
在一些实例中,处理单元2可包含GPR 4,所述GPR 4可经配置以存储供由处理单元2使用的数据。由于GPR 4为通用寄存器,因此GPR 4可存储广泛各种信息。GPR可存储的信息的实例为数据,例如但不限于,整数值、浮点值、字符及位阵列。举例来说,GPR 4中的一或多者可存储向量分量,例如,图形向量。如此,在一些实例中,GPR4中的一或多者可被认为是向量寄存器。作为另一实例,GPR 4中的一或多者可存储地址。
在一些实例中,所有GPR 4可具有相同数据容量(即,GPR 4可全部为相同大小)。举例来说,GPR 4中的每一者可具有8位、16位、32位或64位数据容量。在一些实例中,GPR 4可为变化大小。举例来说,GPR 4中的第一GPR可具有32位数据容量且GPR4中的第二GPR可具有64位数据容量。
在一些实例中,处理单元2可包含可经配置以处理数据的管线6。管线6可为包含逻辑单元10A到10N(统称“逻辑单元10”)的多阶段计算管线,其中逻辑单元10的每一逻辑单元表示离散阶段。管线6可包含初始阶段(即,逻辑单元10A)及最终阶段(即,逻辑单元10N)。在一些实例中,管线6还可包含一或多个中间阶段(即,逻辑单元10B到逻辑单元10N-1)。为了保持由阶段中的一或多者(例如,逻辑单元10中的一或多者)确定的值,管线6可在逻辑单元10中的一或多者后面包含管线寄存器8中的一者。举例来说,管线6可在逻辑单元10A后面包含管线寄存器8A。在一些实例中,管线寄存器6可在最终阶段(即,逻辑单元10N)后面不包含管线寄存器。如此,在一些实例中,在管线6包含N个阶段的情况下,管线6可包含N个逻辑单元10及N-1个管线寄存器8,且管线寄存器8N-1可被称作最终管线寄存器。
如上文所论述,管线6可包含一或多个可经配置以处理值的逻辑单元10。举例来说,逻辑单元10中的每一者可经配置以接收数据,执行一或多个操作(例如,例如添加两个值的一或多个算术运算、例如对两个值进行“与”操作的一或多个逻辑运算,及/或一或多个其它数学运算),并输出结果。在一些实例中,逻辑单元10中的一或多者可为可编程的。作为一个实例,逻辑单元10中的一或多者可经编程以添加两个值。作为另一实例,逻辑单元10中的一或多者可经编程以传递无修改的值。作为另一实例,逻辑单元10中的一或多者可经编程以修改值的数据类型同时传递所述值。举例来说,本发明中所描述的技术利用管线寄存器8来进行暂时存储以避免使用通用寄存器来进行暂时存储。因此,在一些实例中,例如,在使用管线寄存器8来进行暂时存储时,逻辑单元10可经配置以传递无修改或具有数据类型的修改的值。在一些实例中,控制器12可编程逻辑单元10中的一或多者。在一些实例中,逻辑单元10中的一或多者可包含算术逻辑单元(ALU)。
管线6可经配置以响应于从时钟14接收的时钟信号而操作。举例来说,响应于接收从时钟14接收的时钟信号的边缘(例如,上升边缘或下降边缘),管线6可前移到下一周期。如此,在一些实例中,管线6的周期可被称作时钟周期。在管线6的每一周期中,逻辑单元10中的逻辑单元可从输入寄存器接收输入值,处理输入值以确定输出值,及将输出值提供到输出寄存器。换句话说,在每一周期中,值可前移通过管线6。作为一个实例,在周期期间,逻辑单元10B可从管线寄存器8A接收第一输入值,处理第一输入值以确定第一输出值,及将第一输出值提供到管线寄存器8B。还在相同周期期间,逻辑单元10A可从GPR 4中的GPR接收第二输入值,处理第二输入值以确定第二输出值,及将第二输出值提供至管线寄存器8A。如此,在单个周期期间,管线寄存器8A可既将第一输入值提供到逻辑单元10B又从逻辑单元10A接收第二输出值。作为另一实例,在周期期间,逻辑单元10N可从管线寄存器8N接收输入值,处理输入值以确定输出值,及将输出值提供到GPR 4中的GPR。
在一些实例中,例如,在管线6为多阶段计算管线的情况下,可在将值提供到管线6的开头(即,到逻辑10A)的第一周期直到在管线6的结尾处(即,从逻辑10N)可获得结果值的终止周期之间存在多个周期。在一些实例中,此数目个周期可被称作管线6的等待时间。在一些实例中,管线6的等待时间可等于管线6中所包含的阶段的数目。举例来说,在管线6包含四个阶段的情况下,管线6可具有等待时间四。
还如上文所论述,管线6可包含一或多个管线寄存器8,其中的每一者可经配置以存储值。举例来说,管线寄存器8中的管线寄存器可经配置以存储在周期期间由逻辑单元10中的逻辑单元所确定的输出值并在下一周期期间将所述输出值提供到逻辑单元10中的另一逻辑单元。另外,管线寄存器8中的每一者可不能由软件(例如,由控制器12执行的指令)个别地存取及/或寻址。在一些实例中,相较存取GPR 4中的GPR时,处理单元2在存取管线寄存器8中的管线寄存器时可消耗较少量的功率。举例来说,与存取GPR时相比较,处理单元2在存取管线寄存器时可消耗一半的功率。在一些实例中,管线寄存器8中的每一者可具有大于或等于GPR 4中的GPR的数据容量的数据容量。
如上文所描述,管线寄存器8可不能由软件个别地存取及/或寻址。举例来说,指令不能将由任意管线寄存器存储的值移动到另一任意管线寄存器或任意GPR。管线寄存器6的此特性与GPR 4直接相反,GPR 4中的每一者可由软件个别地存取及/或寻址。因此,可仅将数据插入到管线的开头处的管线6(即,逻辑10A)中且可仅在管线的结尾处的管线6(即,逻辑10N)处被存取(例如,被拷贝到GPR),且在之间不可被存取(例如,管线寄存器8A到8N中的数据无法由除相应随后逻辑单元及/或初始逻辑单元外的组件存取)。
处理单元2可包含控制器12,所述控制器可控制处理单元2的一或多个组件的操作。举例来说,控制器12可响应于接收到指令而控制GPR 4及管线6的操作。控制器12可为用于处理单元2的特定控制器或控制装置1的整体操作的较一般的控制器。在一些实例中,控制器12可包含指令解码器。
图2为根据本发明的一或多种技术说明包含在执行组合移动指令时使用管线寄存器来在GPR之间移动值的实例处理单元2A的集成电路1(“IC 1”)的框图。处理单元2A可类似于图1的处理单元2。举例来说,处理单元2A可使用管线寄存器来在执行组合移动指令时在GPR之间移动值。如图2中所说明,处理单元2A可包含通用寄存器(GPR)4A到4N(统称“GPR4”)、管线6A、控制器12及时钟14。由于上文参考图1描述GPR4、控制器12及时钟14,因此不针对图2提供GPR 4、控制器12及时钟14的额外描述。
在一些实例中,处理单元2A可包含可经配置以处理数据的管线6A。管线6A可类似于图1的管线6。举例来说,管线6A可为包含逻辑单元10及管线寄存器8的多阶段管线。如图2的实例中所说明,管线6A可包含旁路信道9A到9N-1(统称“旁路信道9”),所述旁路信道中的每一者可经配置以使得能够将值从管线寄存器8的相应管线寄存器拷贝到初始逻辑单元10A。举例来说,逻辑单元10A可利用旁路信道9B来将值从管线寄存器8B拷贝到管线寄存器8A。
图3A到3C为根据本发明的一或多种技术说明在执行组合移动指令时使用管线寄存器来在GPR之间移动值的处理单元内的实例数据流的时序图。图3A到3C的数据流可代表处理单元(例如,图1的处理单元2或图2的处理单元2A)内的数据流。出于说明的目的,在图1的处理单元2的上下文内描述图3A到3C的数据流,但具有不同于处理单元2的配置的配置的处理单元可具有类似于图3A到3C的数据流的数据流。
图3A到3C中的每一者说明特定组合移动指令的执行期间的处理单元内的实例数据流且包含指示多个时间周期(例如,t0、t1等)的水平轴及指示多个GPR 4及多个管线寄存器8的垂直轴使得数据块中的每一者识别在每一时间周期期间由每一寄存器存储何值。图3A说明在重排指令的执行期间内的处理单元内的实例数据流,图3B说明在集中指令的执行期间的处理单元内的实例数据流,且图3C说明在分散指令的执行期间的处理单元内的实例数据流。
根据本发明的一或多种技术,控制器12可经配置以根据包含组合移动指令的指令集架构(ISA)通过当在通用寄存器(GPR)之间移动值时使用管线寄存器作为暂时存储器来控制处理单元2的操作。可包含在可由控制器12执行的ISA中的一些实例组合移动指令包含但不限于重排指令、对换指令、集中指令及分散指令。通过使用组合移动指令,如与针对每一移动操作执行单独指令相反,控制器12可能够至少关于数据位置以较少指令周期实现相同最终结果且因此实现较高性能。在一些实例中,组合移动指令中的一或多者可为不间断的,意味着控制器12必须在执行另一指令之前完成不间断指令的执行。
控制器12可接收重排指令,所述重排指令指示所述控制器将多个值从多个任意源GPR移动到多个任意目的地GPR。举例来说,控制器12可根据下文的指令(1)接收双值重排指令,其中dst0指示GPR 4中的第一目的地GPR,dst1指示GPR 4中的第二目的地GPR,src0指示GPR 4中的第一源GPR,且src1指示GPR 4中的第二源GPR。
swz dst0,dst1,src0,src1 (1)
从控制器12执行n值重排指令所得的行为可被表示如下:
dst0=convert(src0);
dst1=convert(src1);…;及
dstn-1=convert(srcn-1)。
在一些实例中,控制器12可在两个指令周期中执行双值重排指令。在一些实例中,如果任何源被指令自身盖写,那么所述指令可使用旧源。
图3A说明在对换组合移动指令的执行期间通过处理单元的实例数据流,所述对换组合移动指令为其中第一GPR与第二GPR互换值的重排指令的类型。举例来说,由图3A所说明的数据流可为在重排指令swz 4B、4A、4A、4B的执行期间的处理单元2内的数据流。在以下实例中,管线6可为包含间置在五个逻辑单元(即,逻辑单元10A到10E)之间的四个管线寄存器(即,管线寄存器8A到8D)的五阶段管线。
如图3A中所说明,在时间周期t0期间,GPR 4A可存储值VA且GPR 4B可存储值VB。还在时间周期t0期间,控制器12可致使将VA拷贝到初始管线寄存器8A。作为一个实例,控制器12可致使逻辑10A从GPR 4A接收VA并将VA传递到管线寄存器8A。作为另一实例,例如在VA在时间周期t-1(例如,紧在时间周期t0之前的时间周期)结束时被管线寄存器8B存储的情况下,控制器12可致使逻辑10A经由旁路信道(即,图2的旁路信道9B)从管线寄存器8B接收VA并将VA传递到管线寄存器8A。
在从时钟14接收到信号时,处理单元2可前移到时间周期t1。在时间周期t1期间,逻辑10B可从管线寄存器8A接收VA并将VA传递到管线寄存器8B。换句话说,在时间周期t1期间,逻辑10B可将VA拷贝到管线寄存器8B。还在时间周期t1期间,控制器12可致使将VB拷贝到初始管线寄存器8A。举例来说,控制器12可致使逻辑10A从GPR 4B接收VB并将VB传递到管线寄存器8A。
在从时钟14接收到信号时,处理单元2可前移到时间周期t2。在时间周期t2期间,逻辑10C可从管线寄存器8B接收VA并将VA传递到管线寄存器8C。还在时间周期t2期间,逻辑10B可从管线寄存器8A接收VB并将VB传递到管线寄存器8B。换句话说,在时间周期t2期间,VA及VB两者可前移使得将VA拷贝到管线寄存器8C且将VB拷贝到管线寄存器8B。
在从时钟14接收到信号时,处理单元2可前移到时间周期t3。在时间周期t3期间,逻辑10D可从管线寄存器8C接收VA并将VA传递到管线寄存器8D。还在时间周期t3期间,逻辑10C可从管线寄存器8B接收VB并将VB传递到管线寄存器8C。换句话说,在时间周期t3期间,VA及VB两者可前移使得将VA拷贝到管线寄存器8D且将VB拷贝到管线寄存器8C。
在从时钟14接收到信号时,处理单元2可前移到时间周期t4。在时间周期t4期间,逻辑10E可从管线寄存器8D接收VA并将VA传递到GPR 4B。还在时间周期t4期间,逻辑10D可从管线寄存器8C接收VB并将VB传递到管线寄存器8D。换句话说,在时间周期t4期间,可将VA从最终管线寄存器8D拷贝到GPR 4B使得存储在GPR 4B中的值表示在时间周期t0期间存储在GPR4A中的相同值,且VB可前移使得将VB拷贝到管线寄存器8D。在一些实例中,例如在指令请求VA的数据类型的修改的情况下,由GPR 4B存储的值可为在时间周期t0期间存储在GPR 4A中的值的表示,仅具有不同数据类型。
在从时钟14接收到信号时,处理单元2可前移到时间周期t5。在时间周期t5期间,逻辑10E可从管线寄存器8D接收VB并将VB传递到GPR 4A。换句话说,在时间周期t5期间,可将VB从最终管线寄存器8D拷贝到GPR 4A使得GPR 4A存储在时间周期t0期间存储在GPR 4B中的相同值。以此方式,控制器12可在不需要使用额外GPR来用于暂时存储的情况下执行交换/重排指令(例如,如与在第一周期期间将第一值从第一GPR拷贝到暂时GPR,在第二周期期间将第二值从第二GPR拷贝到第一GPR,及在第三周期期间将第一值从暂时GPR拷贝到第二GPR相反)。
控制器12可接收集中指令,所述集中指令指示所述控制器将多个值从多个任意源GPR移动到多个连续定位的目的地GPR。举例来说,控制器12可根据下文的指令(2)接收四值集中指令,其中dst指示GPR 4中的第一目的地GPR,src0指示GPR 4中的第一源GPR,src1指示GPR 4中的第二源GPR,且src2指示GPR 4中的第三源GPR,且src3指示GPR 4中的第四源GPR。
gat dst,src0,src1,src2,src3 (2)
从控制器12执行n值集中指令所得的行为可被表示如下:
dst=convert(src0);
dst+1=convert(src1);
dst+2=convert(src2);…;及
dst+n-1=convert(srcn-1)。
在一些实例中,控制器12可在四个指令周期中执行四值集中指令。在一些实例中,如果任何源被指令自身盖写,那么所述指令可使用旧源。
图3B说明在集中组合移动指令的执行期间通过处理单元的实例数据流。举例来说,由图3B所说明的数据流可为在三值集中指令gat 4B、4E、4B、4D的执行期间的处理单元2内的数据流。
控制器12可接收分散指令,所述分散指令指示所述控制器将多个值从多个连续定位源GPR移动到多个任意目的地GPR。举例来说,控制器12可根据下文的指令(3)接收四值集中指令,其中dst0指示GPR 4中的第一目的地GPR,dst1指示GPR 4中的第二目的地GPR,dst2指示GPR 4中的第三目的地GPR,且dst3指示GPR 4中的第四目的地GPR,且src指示GPR 4中的第一源GPR。
sct dst0,dst1,dst2,dst3,src (3)
从控制器12执行n值分散指令所得的行为可被表示如下:
dst=convert(src);
dst1=convert(src+1);
dst2=convert(src+1);…;及
dstn-1=convert(src+n-1)。
在一些实例中,控制器12可在四个指令周期中执行四值集中指令。在一些实例中,如果任何源被指令自身盖写,那么所述指令可使用旧源。
图3C说明在分散组合移动指令的执行期间通过处理单元的实例数据流。举例来说,由图3C所说明的数据流可为在三值分散指令gat 4B、4E、4B、4D的执行期间的处理单元2内的数据流。
虽然在上文描述为将每一所拷贝值传递通过管线6,但在一些实例中,控制器12可通过仅将所拷贝值的子集传递通过管线6来执行组合移动指令。举例来说,当执行三值重排指令,例如swz 4C、4A、4B、4A、4B、4C时,控制器12可在第一周期期间将由GPR 4A存储的值存储到管线寄存器8的初始管线寄存器;在第二周期期间,将由GPR 4C存储的值拷贝到GPR4A;在第三周期期间,将由GPR 4B存储的值拷贝到GPR 4C;及在第四周期期间,将所述值从管线寄存器8中的最终管线寄存器拷贝到GPR 4B。在一些实例中,例如在特定GPR未被包含在多个目的地GPR及多个源GPR两者中的情况下,控制器12可执行组合移动指令而无需将任何值传递通过管线6。
图4为根据本发明的一或多种技术说明在执行组合移动指令时使用管线寄存器来在GPR之间移动值的处理单元的实例操作的流程图。图4的技术可由处理单元(例如,图1中所说明的处理单元2或图2中所说明的处理单元2A)执行。出于说明的目的,图4的技术是在图1的处理单元2的上下文内描述,但具有不同于处理单元2的配置的配置的处理单元可执行图4的技术。
根据本发明的一或多种技术,处理单元2的控制器12可接收一或多个指令。举例来说,控制器12可接收请求将第一值从多个GPR中的第一GPR移动到多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令(400)。在一些实例中,指令可进一步请求转换第一值及/或第二值的数据类型中的一者或两者。举例来说,在将第一值作为整数存储在第一GPR中时,指令可请求将第一值移动到第三GPR且将其转换成浮点值。
响应于接收到一或多个指令,控制器12可致使管线6的逻辑单元10的初始逻辑单元在第一周期期间将第一值拷贝到管线6的管线寄存器8中的初始管线寄存器(例如,管线寄存器8A)(402)。作为一个实例,控制器12可发送信号到初始逻辑单元,所述信号致使初始逻辑单元从第一GPR检索第一值并将所述第一值存储到初始管线寄存器。作为另一实例,在所述第一值已被管线寄存器8的特定管线寄存器存储的情况下,控制器12可发送信号到初始逻辑单元,所述信号致使初始逻辑单元从特定管线寄存器检索第一值并将所述第一值存储到初始管线寄存器。如上文所论述,管线寄存器8不同于多个GPR 4。另外,如上文所论述,相较在存取GPR 4中的GPR时,处理单元2可在存取管线寄存器8中的管线寄存器时消耗较少功率。举例来说,与在存取GPR时相比,处理单元2可在存取管线寄存器时消耗一半的功率。在一些实例中,例如在指令请求转换第一值的数据类型时,逻辑单元中的一或多者可执行数据类型转换。举例来说,初始逻辑单元可将第一值从整数数据类型转换成浮点数据类型。初始逻辑单元可在第二周期期间将第二值从GPR 4中的第二GPR拷贝到初始管线寄存器(404)。作为一个实例,控制器12可发送信号到初始逻辑单元,所述信号致使初始逻辑单元从第二GPR检索第二值并将所述第二值存储到初始管线寄存器。作为另一实例,在所述第二值已被管线寄存器8的特定管线寄存器存储的情况下,控制器12可发送信号到初始逻辑单元,所述信号致使初始逻辑单元从特定管线寄存器检索第二值并将所述第二值存储到初始管线寄存器。如上文所论述,还在第二周期期间,逻辑单元10中的随后逻辑单元(例如,逻辑单元10B)可将第一值拷贝到管线寄存器8中的随后管线寄存器(例如,管线寄存器8B)。举例来说,控制器12可发送信号到随后逻辑单元,所述信号致使所述随后逻辑单元从初始管线寄存器检索第一值且将第一值存储到随后管线寄存器。
如果管线6为两阶段管线,那么随后管线寄存器可为管线寄存器8中的最终管线寄存器(例如,管线寄存器N-1)。然而,如果管线6具有大于两个的阶段,那么第一值及第二值可前移通过管线6的阶段直至将第一值存储在最终管线寄存器中。如此,第二周期与第三周期之间可存在周期。
逻辑单元10的最终逻辑单元(例如,逻辑单元10N)可在第三周期期间将第一值从最终管线寄存器拷贝到第三GPR(406)。举例来说,控制器12可发送信号到最终逻辑单元,所述信号致使所述最终逻辑单元从最终管线寄存器检索第一值且将第一值存储到第三GPR。如上文所论述,还在第三周期期间,第N-1逻辑单元(即,第二到最后逻辑单元)可将第二值从第N-1管线寄存器(即,第二到最后管线寄存器)拷贝到最终管线寄存器。
最终逻辑单元可在第四周期期间将第二值从最终管线寄存器拷贝到第四GPR(408)。举例来说,控制器12可发送信号到最终逻辑单元,所述信号致使所述最终逻辑单元从最终管线寄存器检索第二值且将第二值存储到第四GPR。如上文所论述,控制器12可致使逻辑单元响应于接收到单个指令(例如,组合移动指令)而拷贝多个值(即,执行操作402到408)。
图5为根据本发明的一或多种技术说明输出组合移动指令的实例编译器模块16的框图。如图5的实例中所说明,编译器模块16可接收代码并输出指令。编译器模块16可输出指令供由处理单元(例如,图1的处理单元2或图2的处理单元2A)执行,所述处理单元包含多个GPR及管线,所述管线包含多个管线寄存器。在一些实例中,编译器模块16可被包含在与处理单元相同的装置中。另外,如图5的实例中所说明,编译器模块16可包含组合移动模块18。
组合移动模块18可经配置以确定由所接收代码指示的多个操作是否可组合到组合移动指令中。举例来说,组合移动模块18可分析代码以确定由代码指示的多个操作是否包含将多个值在处理单元的多个GPR间移动。在任何情况下,响应于确定由代码指示的多个操作可组合到组合移动指令,组合移动模块18可产生单个组合移动指令,所述单个组合移动指令在由处理单元执行时实现与多个操作相同的结果。作为一个实例,如果由代码指示的多个操作包含将第一值从第一GPR移动到暂时GPR,将第二值从第二GPR移动到第一GPR及将第一值从暂时GPR移动到第二GPR,那么组合移动模块可产生以较少指令周期实现相同结果的单个重排指令。
在一些实例中,编译器模块16可接收未经编译代码。在此些实例中,编译器模块16可将所述代码编译成指令。在一些实例中,组合移动模块18可确定由代码指示的多个操作可在编译过程期间被组合到组合移动指令中。在一些实例中,组合移动模块18可确定由代码指示的多个操作可在编译过程已完成之后被组合到组合移动指令中。在一些实例中,编译器模块16可接收经编译代码(例如,指令)。在此些实例中,组合移动模块18可分析代码中所包含的指令以确定指令中的任一者是否可被组合到组合移动指令中。
图6为根据本发明的一或多种技术说明输出组合移动指令的编译器模块的实例操作的流程图。图6的技术可由编译器模块(例如,图5中所说明的编译器模块16)执行。出于说明的目的,图6的技术是在图5的编译器模块16的上下文内描述,但具有不同于编译器模块16的配置的配置的编译器模块可执行图6的技术。
根据本发明的一或多种技术,编译器模块16可接收代码(602)。如上文所论述,所述代码可为经编译代码或未经编译代码。编译器模块16的组合移动模块18可确定由代码所指示的多个操作是否可被组合到组合移动指令中(604)。响应于确定由代码指示的多个操作可被组合到组合移动指令中,组合移动模块18可产生组合移动指令(606)。如上文所论述,一些实例组合移动指令包含重排指令、集中指令及分散指令。还如上文所论述,在代码包含多个指令的情况下,组合移动模块18可用所产生的组合移动指令替换对应于可被组合到组合移动指令中的多个操作的指令。以此方式,组合移动模块18可减少执行操作所需要的指令的数目。还以此方式,组合移动模块18可减少由处理模块执行操作所需要的指令周期的数目。
图7为根据本发明的一或多种技术的说明包含图1的集成电路的实例装置100的框图。装置100的实例包含(但不限于)无线装置、移动电话、个人数字助理(PDA)、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器及其类似者。装置100包含GPU 17、系统存储器19及处理器20。在图6中所说明的实例中,GPU 17及处理器20经以短划线说明以指示GPU 17及处理器20可被形成在相同集成电路中。在一些实例中,GPU 17及处理器20可被形成在其它集成电路中(即,在不同芯片中)。在一些实例中,GPU 17及处理器20中的一者或两者可为图1的集成电路1的实例。举例来说,GPU 17及处理器20中的一者或两者可经配置以在将多个值从多个GPR中的多个源通用寄存器(GPR)移动到多个GPR中的多个目的地GPR时利用多个管线寄存器作为暂时存取器。
系统存储器19可被认为装置100的存储器。系统存储器19可包括一或多个计算机可读存储媒体。系统存储器19的实例包含(但不限于)随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器或可用于以指令及/或数据结构的形式载运或存储所要程序代码且可由计算机或处理器存取的任何其它媒体。
在一些方面中,系统存储器19可包含致使处理器20及/或GPU 17执行归属于本发明中的处理器20及GPU 17的功能的指令。因此,系统存储器19可为其上存储有指令的计算机可读存储媒体,所述指令在被执行时致使一或多个处理器(例如,处理器20及GPU 17)执行各种功能。系统存储器19可存储指令致使GPU 17及/或处理器20实施本发明中所描述的实例技术。
系统存储器19可在一些实例中被认为非暂时性存储媒体。术语“非暂时性”可指示存储媒体不以载波或传播信号体现的存储媒体。然而,术语“非暂时性”不应被解释意味着系统存储器19为不可移动或其内容为静态的。作为一个实例,可将系统存储器19从装置100移除,且移动到另一装置。作为另一实例,可将存储器(基本上类似于系统存储器19)插入到装置100中。在某些实例中,非暂时存储媒体可存储可随时间改变的数据(例如,存储在RAM中)。
处理器20及GPU 17的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。在一些实例中,GPU 17可为专门硬件,其包含为GPU 17提供适于图形处理的大规模并行处理能力的集成及/或离散逻辑电路。在一些例子中,GPU 17还可包含通用处理能力,且在实施通用处理任务(即,非图形相关任务)时可被称作通用GPU(GPGPU)。
处理器20可执行各种类型的应用程序。应用程序的实例包含web浏览器、电子邮件应用程序、电子表格、视频游戏或产生可视对象以供显示的其它应用程序。用于执行一或多个应用程序的指令可被存储在系统存储器19内。处理器20可将可视对象的图形数据传输到GPU 17以供进一步处理。
举例来说,处理器120可卸载GPU 17的处理任务,例如需要大规模并行操作的任务。作为一个实例,图形处理需要大规模并行操作,且处理器20可卸载GPU 17的此些图像处理任务。处理器20可根据特定应用程序处理接口(API)与GPU 17通信。此些API的实例包含API、科纳斯(Khronos)组织的API及OpenCLTM API;然而,本发明的方面不限于DirectX、OpenGL或OpenCL API,且可扩展到其它类型的API。此外,不需要本发明中所描述的技术根据API起作用,且处理器20及GPU 17可利用任何技术来进行通信。
为执行图形操作,GPU 17可实施图形处理管线。图形处理管线包含执行如由GPU17上执行的软件或固件定义的功能且通过固定功能单元执行功能,所述固定功能单元经硬连线以执行非常特定功能。在GPU 17上执行的软件或固件可被称作着色器程序(或简称着色器),且所述着色器程序可在GPU 17的一或多个着色器核心(也称作着色器处理器)上执行。着色器程序为用户提供功能灵活性,这是因为用户可设计着色器程序从而以任何可设想方式执行所要任务。然而,固定功能单元经硬连线用于固定功能单元执行任务的方式。因此,固定功能单元可不提供许多功能灵活性。
举例来说,处理器20可执行例如视频游戏的应用程序,且处理器20可产生图形数据作为执行的部分。处理器20可输出供由GPU 17处理的图形数据。GPU 17可接着处理图形管线中的图形数据。在一些实例中,为处理图形数据,GPU 17可需要执行一或多个着色器程序。举例来说,在处理器20上执行的应用程序可致使处理器20指示GPU 17从系统存储器19检索着色器程序且指示GPU 17执行着色器程序。
存在各种类型的着色器程序,例如,顶点着色器、外壳着色器、域着色器、几何着色器及片段着色器。这些实例着色器程序中的每一者可形成图形管线的某一部分。举例来说,GPU 17的固定功能单元可将数据输出到执行实例着色器程序中的一或多者的着色器核心,且实例着色器程序中的一或多者可处理数据并将所得数据输出到GPU 17的另一固定功能。着色器程序还可能从另一着色器程序接收数据或将数据输出到另一着色器程序。以此方式,着色器程序被实施为图形管线的部分。
存在各种类型的着色器程序,例如,顶点着色器、外壳着色器、域着色器、几何着色器及片段着色器。这些实例着色器程序中的每一者可形成图形管线的某一部分。举例来说,GPU 16的固定功能单元可将数据输出到执行实例着色器程序中的一或多者的着色器核心,且实例着色器程序中的一或多者可处理数据并将所得数据输出到GPU 16的另一固定功能。着色器程序还可能从另一着色器程序接收数据或将数据输出到另一着色器程序。以此方式,着色器程序被实施为图形管线的部分。
装置100还可包含显示器60、用户接口62及收发器模块64。装置100可包含出于清晰目的图7中未展示的额外模块或单元。举例来说,装置100在其中装置100为移动无线电话的实例中可包含扬声器及麦克风(图7中未展示其中任一者)以实现电话通信。此外,装置100中展示的各种模块及单元可在装置100的每一实例中并非必需的。举例来说,用户接口62及显示器60在其中装置100为桌上型计算机的实例中可在装置100的外部。作为另一实例,用户接口62在其中显示器60为移动装置的触敏或压敏显示器的实例中可为显示器60的部分。
用户接口62的实例包含(但不限于)轨迹球、鼠标、键盘及其它类型的输入装置。用户接口62还可为触摸屏且可被并入为显示器60的部分。收发器模块64可包含允许装置100与另一装置或网络之间的无线或有线通信的电路。收发器模块64可包含调制器、解调制器、放大器及用于有线或无线通信的其它此电路。显示器60可包括液晶显示器(LCD)、阴极射线管(CRT)显示器、等离子显示器、触敏显示器、压敏显示器或另一类型的显示装置。
实例1。一种方法,其包括:通过处理单元接收请求将第一值从多个通用寄存器(GPR)的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令;及响应于接收到所述一或多个指令:通过所述处理单元中的初始逻辑单元且在第一时钟周期期间,将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器,其中所述多个管线寄存器不同于所述多个GPR;通过所述处理单元中的所述初始逻辑单元且在继所述第一时钟周期之后的第二时钟周期期间,将所述第二值拷贝至所述初始管线寄存器;通过所述处理单元中的最终逻辑单元且在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及通过所述处理单元中的所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间将来所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
实例2。根据实例1所述的方法,其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
实例3。根据实例1到2的任一组合所述的方法,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
实例4。根据实例1到3的任一组合所述的方法,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
实例5。根据实例1到4的任一组合所述的方法,其中所述一或多个指令包括请求将所述第一值从所述第一GPR移动到所述第三GPR且将所述第二值从所述第二GPR移动到所述第四GPR的单个不间断指令。
实例6。根据实例1到5的任一组合所述的方法,其中所述指令选自由以下组成的群组:对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR;重排指令,其中所述多个GPR经任意定位;集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位;及分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
实例7。根据实例1到6的任一组合所述的方法,其中所述管线为包含一或多个算术逻辑单元(ALU)的多周期计算管线。
实例8。根据实例1到7的任一组合所述的方法,其进一步包括:在所述第一时钟周期之后且在所述第三时钟周期之前,通过中间逻辑单元将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及在所述第二时钟周期之后且在所述第四时钟周期之前,通过所述中间逻辑单元将所述第二周期从所述初始管线寄存器拷贝到所述中间管线寄存器。
实例9。根据实例1到8的任一组合所述的方法,其中所述处理单元是由中央处理单元(CPU)或图形处理单元(GPU)构成。
实例10。根据实例1到9的任一组合所述的方法,其中将所述第一值拷贝到所述初始管线寄存器包括以下各项中的任一者:将所述第一值从所述第一GPR拷贝到所述初始管线寄存器;或将所述第一值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器;且其中将所述第二值拷贝到所述初始管线寄存器包括以下各项中的任一者:将所述第二值从所述第二GPR拷贝到所述初始管线寄存器;或将所述第二值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器。
实例11。根据实例1到10的任一组合所述的方法,其中所述第三GPR为所述第二GPR及/或所述第四GPR为所述第一GPR。
实例12。一种处理单元,其包括:多个通用寄存器(GPRs);管线,其包括多个管线寄存器,其中所述多个管线寄存器不同于所述多个GPR;多个逻辑单元;及控制器,其经配置以接收请求将第一值从所述多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令,其中响应于接收到所述一或多个指令,所述控制器经配置以:致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到所述多个管线寄存器的初始管线寄存器;致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及致使所述最终逻辑单元在继所述第二时钟周期之后的第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
实例13。根据实例12所述的处理单元,其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
实例14。根据实例12到13的任一组合所述的处理单元,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
实例15。根据实例12到14的任一组合所述的处理单元,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
实例16。根据实例12到15的任一组合所述的处理单元,其中所述一或多个指令包括请求将所述第一值从所述第一GPR移动到所述第三GPR且将所述第二值从所述第二GPR移动到所述第四GPR的单个不间断指令。
实例17。根据实例12到16的任一组合所述的处理单元,其中所述指令选自由以下组成的群组:对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR;重排指令,其中所述多个GPR经任意定位;集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位;及分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
实例18。根据实例12到17的任一组合所述的处理单元,其中所述管线为包含一或多个算术逻辑单元(ALU)的多周期计算管线。
实例19。根据实例12到18的任一组合所述的处理单元,其中响应于接收到所述一或多个指令,所述控制器经进一步配置以进行以下操作:致使所述多个逻辑单元中的中间逻辑单元在所述第一时钟周期之后且在所述第三时钟周期之前,将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及致使所述中间逻辑单元在所述第二时钟周期之后且在所述第四时钟周期之前,将所述第二周期从所述初始管线寄存器拷贝到所述中间管线寄存器。
实例20。根据实例12到19的任一组合所述的处理单元,其中所述处理单元是由中央处理单元(CPU)或图形处理单元(GPU)构成。
实例21。根据实例12到20的任一组合所述的处理单元,其中所述初始逻辑单元经配置以通过以下操作中的任一项将所述第一值拷贝到所述初始管线寄存器:将所述第一值从所述第一GPR拷贝到所述初始管线寄存器;或将所述第一值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器;且其中所述初始逻辑单元经配置以通过以下操作中的任一项将所述第二值拷贝到所述初始管线寄存器:将所述第二值从所述第二GPR拷贝到所述初始管线寄存器;或将所述第二值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器。
实例22。根据实例12到21的任一组合所述的处理单元,其中所述第三GPR为所述第二GPR及/或所述第四GPR为所述第一GPR。
实例23。一种非暂时性计算机可读存储媒体,其存储供处理单元请求将第一值从多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令,所述一或多个指令在被执行时致使所述处理单元进行以下操作:致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到管线的多个管线寄存器的初始管线寄存器;致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及致使所述最终逻辑单元在继所述第二时钟周期之后的第四时钟周期期间将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
实例24。根据实例23所述的非暂时性计算机可读存储媒体,其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
实例25。根据实例23到24的任一组合所述的非暂时性计算机可读存储媒体,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
实例26。根据实例23到25的任一组合所述的非暂时性计算机可读存储媒体,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
实例27。根据实例23到26的任一组合所述的非暂时性计算机可读存储媒体,其中所述处理单元响应于接收单个不间断指令而拷贝所述值。
实例28。根据实例23到27的任一组合所述的非暂时性计算机可读存储媒体,其中所述指令选自由以下组成的群组:对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR;重排指令,其中所述多个GPR经任意定位;集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位;及分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
实例29。根据实例23到28的任一组合所述的非暂时性计算机可读存储媒体,其中所述管线为包含一或多个算术逻辑单元(ALU)的多周期计算管线。
实例30。根据实例23到29的任一组合所述的非暂时性计算机可读存储媒体,其中在被执行时,所述一或多个指令致使所述处理单元进行以下操作:致使所述多个逻辑单元中的中间逻辑单元在所述第一时钟周期之后且在所述第三时钟周期之前,将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及致使所述中间逻辑单元在所述第二时钟周期之后且在所述第四时钟周期之前,将所述第二周期从所述初始管线寄存器拷贝到所述中间管线寄存器。
实例31。根据实例23到30的任一组合所述的非暂时性计算机可读存储媒体,其中所述处理单元是由中央处理单元(CPU)或图形处理单元(GPU)构成。
实例32。根据实例23到31的任一组合所述的非暂时性计算机可读存储媒体,其中所述初始逻辑单元经配置以通过以下操作中的任一项将所述第一值拷贝到所述初始管线寄存器:将所述第一值从所述第一GPR拷贝到所述初始管线寄存器;或将所述第一值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器;且其中所述初始逻辑单元经配置以通过以下操作中的任一项将所述第二值拷贝到所述初始管线寄存器:将所述第二值从所述第二GPR拷贝到所述初始管线寄存器;或将所述第二值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器。
实例33。根据实例23到32的任一组合所述的非暂时性计算机可读存储媒体,其中所述第三GPR为所述第二GPR及/或所述第四GPR为所述第一GPR。
实例34。一种方法,其包括:通过编译器模块接收代码;及响应于通过所述编译器模块确定可将由所述代码指示的多个操作组合到组合移动指令中,产生所述组合移动指令,其中,在由处理单元执行时,所述组合移动指令致使所述处理单元在将多个值从多个通用寄存器(GPR)中的多个源GPR移动到所述多个GPR中的多个目的地GPR时利用多个管线寄存器作为暂时存储器,且其中所述多个管线寄存器不同于所述多个GPR。
实例35。根据实例34所述的方法,其中确定由所述代码指示的所述多个操作可被组合到所述组合模式指令中包括:响应于确定由所述代码指示的所述多个操作包含:在所述多个GPR之间移动多个值,确定可将由所述代码指示的所述多个操作组合到所述组合模式指令中。
实例36。根据实例34到32的任一组合所述的方法,其中所述代码包括多个指令,且其中所述方法进一步包括:用所述所产生组合移动指令替换对应于可被组合到所述组合移动指令中的多个操作的所述指令。
实例37。一种装置,其包括用于执行根据实例1到11及/或实例34到36所述的方法的任何组合的装置。
实例38。一种系统,其包括用于执行根据实例1到11及/或实例34到36所述的方法的任何组合的装置。
实例39。一种装置,其包括:用于通过处理单元接收请求将第一值从多个通用寄存器(GPR)的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令的装置;及响应于接收到所述一或多个指令:用于通过所述处理单元中的初始逻辑单元且在第一时钟周期期间,将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器的装置,其中所述多个管线寄存器不同于所述多个GPR;用于通过所述处理单元中的所述初始逻辑单元且在继所述第一时钟周期之后的第二时钟周期期间,将所述第二值拷贝至所述初始管线寄存器的构件;用于通过所述处理单元中的最终逻辑单元且在继所述第二时钟周期之后的第三时钟周期期间将所述第一值从所述多个管线寄存器的最终管线寄存器拷贝到所述第三GPR的装置,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及用于通过所述处理单元中的所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间将来所述第二值从所述最终管线寄存器拷贝到所述第四GPR的装置,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
实例40。根据实例40所述的装置,其进一步包括用于执行根据实例1到11所述的方法的任何组合的装置。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合实施。如果以软件实施,那么所述功能可作为一或多个指令或代码存储于计算机可读媒体上或者经由计算机可读媒体传输且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体的有形媒体,或包含促进(例如)根据通信协议将计算机程序自一个位置传送至另一位置的任一媒体的通信媒体。以此方式,计算机可读媒体通常可对应于(1)非暂时性的有形计算机可读存储媒体或(2)例如信号或载波的通信媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码及/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
通过实例的方式且非限制性,此些计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光学磁盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用于以指令或数据结构的形式存储所要代码且可由计算机存取的其它媒体。此外,任何连接恰当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输指令,那么所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波等无线技术皆包含于媒体的定义中。然而,应理解计算机可读存储媒体及数据存储媒体不包含连接、载波、信号或其它暂时性媒体,但替代地是针对非暂时性、有形存储媒体。如本文中所使用,磁盘及光盘包含光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通过激光以光学方式再现数据。上述各项的组合还应包括在计算机可读媒体的范围内。
指令可由一或多个处理器执行,例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可是指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供在经配置以用于编码及解码或并入于组合式编解码器中的专用硬件及/或软件模块内。此外,技术可以一或多个电路或逻辑元件来完全实施。
本发明的技术可以广泛各种装置或装备(包含无线手机、集成电路(IC)或IC组(例如,芯片组))实施。各种组件、模块或单元在本发明中经描述以强调经配置以执行所揭示技术的装置的功能方面,而未必需要由不同硬件单元实现。确切来说,如上文所描述,各种单元可以编解码硬件单元组合或通过交互操作硬件单元(包含如上文所描述的一或多个处理器)的集合结合适合软件及/或固件提供。
已描述各种实例。这些及其它实例在以下权利要求书的范围内。

Claims (30)

1.一种方法,其包括:
通过处理单元接收请求将第一值从多个通用寄存器GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令;及
响应于接收到所述一或多个指令:
通过所述处理单元中的初始逻辑单元且在第一时钟周期期间,将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器,其中所述多个管线寄存器不同于所述多个GPR;
通过所述处理单元中的所述初始逻辑单元且在继所述第一时钟周期之后的第二时钟周期期间,将所述第二值拷贝到所述初始管线寄存器;
通过所述处理单元中的最终逻辑单元且在继所述第二时钟周期之后的第三时钟周期期间,将所述第一值从所述多个管线寄存器中的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及
通过所述处理单元中的所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间,将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
2.根据权利要求1所述的方法,
其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且
其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
3.根据权利要求1所述的方法,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
4.根据权利要求1所述的方法,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
5.根据权利要求1所述的方法,其中所述一或多个指令包括请求将所述第一值从所述第一GPR移动到所述第三GPR且将所述第二值从所述第二GPR移动到所述第四GPR的单个不间断指令。
6.根据权利要求5所述的方法,其中所述指令选自由以下组成的群组:
对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR,
重排指令,其中所述多个GPR经任意定位,
集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位,及
分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
7.根据权利要求1所述的方法,其中所述管线为包含一或多个算术逻辑单元ALU的多周期计算管线。
8.根据权利要求1所述的方法,其进一步包括:
通过中间逻辑单元,在所述第一时钟周期之后且在所述第三时钟周期之前,将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及
通过所述中间逻辑单元,在所述第二时钟周期之后且在所述第四时钟周期之前,将所述第二值从所述初始管线寄存器拷贝到所述中间管线寄存器。
9.根据权利要求1所述的方法,其中所述处理单元是由中央处理单元CPU或图形处理单元GPU构成。
10.根据权利要求1所述的方法,
其中将所述第一值拷贝到所述初始管线寄存器包括以下操作中的任一者:
将所述第一值从所述第一GPR拷贝到所述初始管线寄存器;或
将所述第一值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器;且
其中将所述第二值拷贝到所述初始管线寄存器包括以下操作中的任一者:
将所述第二值从所述第二GPR拷贝到所述初始管线寄存器;或
将所述第二值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器。
11.一种处理单元,其包括:
多个通用寄存器GPR;
管线,其包括多个管线寄存器,其中所述多个管线寄存器不同于所述多个GPR;
多个逻辑单元;及
控制器,其经配置以接收请求将第一值从所述多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令,其中响应于接收到所述一或多个指令,所述控制器经配置以进行以下操作:
致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到所述多个管线寄存器中的初始管线寄存器;
致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;
致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间,将所述第一值从所述多个管线寄存器中的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及
致使所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间,将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
12.根据权利要求11所述的处理单元,
其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且
其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
13.根据权利要求11所述的处理单元,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
14.根据权利要求11所述的处理单元,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
15.根据权利要求11所述的处理单元,其中所述一或多个指令包括请求将所述第一值从所述第一GPR移动到所述第三GPR且将所述第二值从所述第二GPR移动到所述第四GPR的单个不间断指令。
16.根据权利要求15所述的处理单元,其中所述指令选自由以下组成的群组:
对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR,
重排指令,其中所述多个GPR经任意定位,
集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位,及
分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
17.根据权利要求11所述的处理单元,其中所述管线为包含一或多个算术逻辑单元ALU的多周期计算管线。
18.根据权利要求11所述的处理单元,其中响应于接收到所述一或多个指令,所述控制器经进一步配置以进行以下操作:
致使所述多个逻辑单元中的中间逻辑单元在所述第一时钟周期之后且在所述第三时钟周期之前,将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及
致使所述中间逻辑单元在所述第二时钟周期之后且在所述第四时钟周期之前,将所述第二值从所述初始管线寄存器拷贝到所述中间管线寄存器。
19.根据权利要求11所述的处理单元,其中所述处理单元是由中央处理单元CPU或图形处理单元GPU构成。
20.根据权利要求11所述的处理单元,
其中所述初始逻辑单元经配置以通过以下操作中的任一者将所述第一值拷贝到所述初始管线寄存器:
将所述第一值从所述第一GPR拷贝到所述初始管线寄存器;或
将所述第一值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器;且
其中所述初始逻辑单元经配置以通过以下操作中的任一者将所述第二值拷贝到所述初始管线寄存器:
将所述第二值从所述第二GPR拷贝到所述初始管线寄存器;或
将所述第二值从所述多个管线寄存器中的管线寄存器拷贝到所述初始管线寄存器。
21.一种非暂时性计算机可读存储媒体,其存储供处理单元请求将第一值从多个GPR中的第一GPR移动到所述多个GPR中的第三GPR及将第二值从所述多个GPR中的第二GPR移动到所述多个GPR中的第四GPR的一或多个指令,所述一或多个指令在被执行时致使所述处理单元进行以下操作:
致使所述多个逻辑单元中的初始逻辑单元在第一时钟周期期间将所述第一值拷贝到管线的多个管线寄存器中的初始管线寄存器;
致使所述初始逻辑单元在继所述第一时钟周期之后的第二时钟周期期间将所述第二值拷贝到所述初始管线寄存器;
致使所述多个逻辑单元中的最终逻辑单元在继所述第二时钟周期之后的第三时钟周期期间,将所述第一值从所述多个管线寄存器中的最终管线寄存器拷贝到所述第三GPR,其中经拷贝到所述第三GPR的所述第一值表示从所述第一GPR拷贝的所述相同第一值;及
致使所述最终逻辑单元且在继所述第二时钟周期之后的第四时钟周期期间,将所述第二值从所述最终管线寄存器拷贝到所述第四GPR,其中经拷贝到所述第四GPR的所述第二值表示从所述第二GPR拷贝的所述相同第二值。
22.根据权利要求21所述的非暂时性计算机可读存储媒体,
其中所述一或多个指令识别所述第一GPR、所述第二GPR、所述第三GPR及所述第四GPR,且
其中所述一或多个指令不个别地识别所述管线寄存器中的任一者。
23.根据权利要求21所述的非暂时性计算机可读存储媒体,其中所述多个管线寄存器不可由指令个别地存取,且其中所述多个GPR可由指令个别地存取。
24.根据权利要求21所述的非暂时性计算机可读存储媒体,其中相较在存取所述多个GPR中的GPR时,所述处理单元在存取所述多个管线寄存器中的管线寄存器时消耗较少功率。
25.根据权利要求21所述的非暂时性计算机可读存储媒体,其中所述处理单元响应于接收到单个不间断指令而拷贝所述值。
26.根据权利要求25所述的非暂时性计算机可读存储媒体,其中所述指令选自由以下组成的群组:
对换指令,其中所述第三GPR为所述第二GPR,且其中所述第四GPR为所述第一GPR,
重排指令,其中所述多个GPR经任意定位,
集中指令,其中所述第一GPR及所述第二GPR未经连续定位,且其中所述第三GPR及所述第四GPR经连续定位,及
分散指令,其中所述第一GPR及所述第二GPR经连续定位,且其中所述第三GPR及所述第四GPR未经连续定位。
27.根据权利要求21所述的非暂时性计算机可读存储媒体,其中在被执行时,所述一或多个指令致使所述处理单元进行以下操作:
致使所述多个逻辑单元中的中间逻辑单元在所述第一时钟周期之后且在所述第三时钟周期之前,将所述第一值从所述初始管线寄存器拷贝到所述多个管线寄存器中的中间管线寄存器;及
致使所述中间逻辑单元在所述第二时钟周期之后且在所述第四时钟周期之前,将所述第二值从所述初始管线寄存器拷贝到所述中间管线寄存器。
28.一种方法,其包括:
通过编译器模块接收代码;及
响应于通过所述编译器模块确定由所述代码指示的多个操作可被组合到组合移动指令中,产生所述组合移动指令,
其中在由处理单元执行时,所述组合移动指令致使所述处理单元在将多个值从所述多个通用寄存器GPR中的多个源GPR移动到所述多个GPR中的多个目的地GPR时利用多个管线寄存器作为暂时存储器,其中所述多个源GPR中的至少一个GPR被包含在所述多个目的地GPR中,且其中所述多个管线寄存器不同于所述多个GPR。
29.根据权利要求28所述的方法,其中确定由所述代码指示的所述多个操作可被组合到所述组合模式指令中包括:
响应于确定由所述代码指示的所述多个操作包含在所述多个GPR之间移动多个值,确定可将由所述代码指示的所述多个操作组合到所述组合模式指令中。
30.根据权利要求28所述的方法,其中所述代码包括多个指令,且其中所述方法进一步包括:
用所述所产生组合移动指令替换对应于可被组合到所述组合移动指令中的多个操作的所述指令。
CN201580024902.1A 2014-05-12 2015-04-21 利用管线寄存器作为中间存储器的方法、处理单元及计算机可读存储媒体 Expired - Fee Related CN106462391B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/275,047 US9747104B2 (en) 2014-05-12 2014-05-12 Utilizing pipeline registers as intermediate storage
US14/275,047 2014-05-12
PCT/US2015/026850 WO2015175173A1 (en) 2014-05-12 2015-04-21 Utilizing pipeline registers as intermediate storage

Publications (2)

Publication Number Publication Date
CN106462391A true CN106462391A (zh) 2017-02-22
CN106462391B CN106462391B (zh) 2019-07-05

Family

ID=53267556

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580024902.1A Expired - Fee Related CN106462391B (zh) 2014-05-12 2015-04-21 利用管线寄存器作为中间存储器的方法、处理单元及计算机可读存储媒体

Country Status (6)

Country Link
US (1) US9747104B2 (zh)
EP (1) EP3143495B1 (zh)
JP (1) JP6301501B2 (zh)
KR (1) KR101863483B1 (zh)
CN (1) CN106462391B (zh)
WO (1) WO2015175173A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102299008B1 (ko) * 2014-10-16 2021-09-06 삼성전자주식회사 어플리케이션 프로세서와 이를 포함하는 반도체 시스템
US11144367B2 (en) 2019-02-08 2021-10-12 International Business Machines Corporation Write power optimization for hardware employing pipe-based duplicate register files

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145075A (en) * 1998-02-06 2000-11-07 Ip-First, L.L.C. Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
US20030200237A1 (en) * 2002-04-01 2003-10-23 Sony Computer Entertainment Inc. Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline
US20030212880A1 (en) * 2002-05-09 2003-11-13 International Business Machies Corporation Power reduction mechanism for floating point register file reads
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US20050114634A1 (en) * 2003-11-24 2005-05-26 Sun Microsystems, Inc. Internal pipeline architecture for save/restore operation to reduce latency
CN1761940A (zh) * 2003-03-19 2006-04-19 皇家飞利浦电子股份有限公司 具有数据旁路的流水线指令处理器
US20070239971A1 (en) * 2006-04-06 2007-10-11 Ajit Deepak Gupte Partial Register Forwarding for CPUs With Unequal Delay Functional Units
CN103562856A (zh) * 2011-04-01 2014-02-05 英特尔公司 用于数据元素的跨步图案聚集及数据元素的跨步图案分散的系统、装置及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052769A (en) 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6094716A (en) 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
GB2409059B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
WO2013101323A1 (en) 2011-12-30 2013-07-04 Intel Corporation Micro-architecture for eliminating mov operations
US9575754B2 (en) 2012-04-16 2017-02-21 Apple Inc. Zero cycle move

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145075A (en) * 1998-02-06 2000-11-07 Ip-First, L.L.C. Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US20030200237A1 (en) * 2002-04-01 2003-10-23 Sony Computer Entertainment Inc. Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline
US20030212880A1 (en) * 2002-05-09 2003-11-13 International Business Machies Corporation Power reduction mechanism for floating point register file reads
CN1761940A (zh) * 2003-03-19 2006-04-19 皇家飞利浦电子股份有限公司 具有数据旁路的流水线指令处理器
US20050114634A1 (en) * 2003-11-24 2005-05-26 Sun Microsystems, Inc. Internal pipeline architecture for save/restore operation to reduce latency
US20070239971A1 (en) * 2006-04-06 2007-10-11 Ajit Deepak Gupte Partial Register Forwarding for CPUs With Unequal Delay Functional Units
CN103562856A (zh) * 2011-04-01 2014-02-05 英特尔公司 用于数据元素的跨步图案聚集及数据元素的跨步图案分散的系统、装置及方法

Also Published As

Publication number Publication date
EP3143495B1 (en) 2023-08-16
WO2015175173A1 (en) 2015-11-19
JP2017516226A (ja) 2017-06-15
KR20170007742A (ko) 2017-01-20
EP3143495A1 (en) 2017-03-22
US9747104B2 (en) 2017-08-29
CN106462391B (zh) 2019-07-05
EP3143495C0 (en) 2023-08-16
JP6301501B2 (ja) 2018-03-28
US20150324196A1 (en) 2015-11-12
KR101863483B1 (ko) 2018-05-31

Similar Documents

Publication Publication Date Title
US10437541B2 (en) Graphics engine and environment for efficient real time rendering of graphics that are not pre-known
US9454733B1 (en) Training a machine learning model
CN105453045B (zh) 使用动态宽度计算的壁垒同步
CN110546611A (zh) 通过跳过处理操作来减少神经网络处理器中的功耗
US20160364828A1 (en) Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices
CN103348320B (zh) 通用图形处理单元中的计算资源管线化
US20190188141A1 (en) General purpose input/output data capture and neural cache system for autonomous machines
US20160364829A1 (en) Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
CN104160420A (zh) 在图形处理单元上执行图形和非图形应用
WO2017124649A1 (zh) 用于向量运算的数据读写调度器及保留站
WO2017107118A1 (en) Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
CN108369573A (zh) 用于设置多个向量元素的操作的指令和逻辑
US11088907B2 (en) System characterization and configuration distribution for facilitating improved performance at computing devices
US10026142B2 (en) Supporting multi-level nesting of command buffers in graphics command streams at computing devices
US11163567B2 (en) Multivalue reductions using serial initial reductions in multiple register spaces and parallel subsequent reductions in a single register space
CN106462391B (zh) 利用管线寄存器作为中间存储器的方法、处理单元及计算机可读存储媒体
CN108369508A (zh) 使用处理器指令前缀的二进制转换支持
US20170371662A1 (en) Extension of register files for local processing of data in computing environments
US10353591B2 (en) Fused shader programs
CN102682465A (zh) 3d格式转换系统和方法
US9881352B2 (en) Facilitating efficient graphics commands processing for bundled states at computing devices
WO2022140043A1 (en) Condensed command packet for high throughput and low overhead kernel launch
CN108475253A (zh) 用于执行共轭置换指令的处理设备
CN114008584A (zh) 提高了精度的神经处理元件
US20240046543A1 (en) Runtime mechanism to optimize shader execution flow

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: 20190705

Termination date: 20200421