CN104412233A - 流水线调度中混叠寄存器的分配 - Google Patents

流水线调度中混叠寄存器的分配 Download PDF

Info

Publication number
CN104412233A
CN104412233A CN201380033509.XA CN201380033509A CN104412233A CN 104412233 A CN104412233 A CN 104412233A CN 201380033509 A CN201380033509 A CN 201380033509A CN 104412233 A CN104412233 A CN 104412233A
Authority
CN
China
Prior art keywords
register
aliasing
life time
ring
iteration
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
CN201380033509.XA
Other languages
English (en)
Other versions
CN104412233B (zh
Inventor
H.荣
C.王
H.朴
Y.吴
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104412233A publication Critical patent/CN104412233A/zh
Application granted granted Critical
Publication of CN104412233B publication Critical patent/CN104412233B/zh
Active 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • 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
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

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

Abstract

在实施例中,系统包括处理器,其包括一个或多个核和多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息。该存储器范围信息引用存储器内的一个或多个存储器位点。系统还包括寄存器分配部件,用于将所述混叠寄存器中的每个分配给环的对应操作,其中根据旋转调度进行所述分配,并且混叠寄存器中的一个被分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。系统还包括耦合于处理器的存储器。描述其他实施例并且它们被要求保护。

Description

流水线调度中混叠寄存器的分配
技术领域
实施例涉及流水线调度操作。 
背景技术
通常由编译器处理的任务是存储器消歧(memory disambiguation),其可包括检测非混叠存储器访问,例如访问不同存储器位点的加载或存储。这些操作可调度成为了更好的指令级并行性而无序运行。相比之下,访问相同存储器位点的存储器操作标记为“混叠(aliased)”,并且无法被无序调度。 
在编译器优化(例如,软件流水线)中通常包括存储器消歧。软件流水线可以通过使连续迭代的执行重叠而为环利用指令级并行性。然而,连续迭代中操作的执行的重叠可以产生混叠。 
附图说明
图1是根据本发明的实施例用于调度混叠寄存器的系统的框图。 
图2A、B、C图示根据本发明的实施例的混叠寄存器分配方案。 
图3是根据本发明的另一个实施例的混叠寄存器分配方案的图示。 
图4是根据本发明的实施例用于调度混叠寄存器的方法的流程图。 
图5是根据本发明的实施例的处理器的框图。 
图6是根据本发明的实施例包括多个核的处理器的实施例的图示。 
图7是根据本发明的实施例的系统的框图。 
具体实施方式
为了在运行时执行的优化,硬件支持可用于完成存储器消歧。在本发明的实施例中,硬件支持可包括寄存器文件(例如,旋转寄存器文件),其包括多个存储器访问寄存器(“混叠寄存器”),这些寄存器可应用于例如环等循环码,其包括要为了多个迭代而执行的多个操作。在实施例中,混叠寄存器可应用于环的软件流水线调度来实行存储器消歧并且在运行时发现混叠。 
例如,在调度阶段期间,环内的存储器访问(例如,加载操作或存储操作,在本文是“操作”)可以假设为没有混叠(“数据猜测”),例如可以假设在存储器访问之间没有依赖性(例如,有序关系)。尽管数据猜测实现更多的并行性(例如,计算资源通过操作的无序处理的高效使用),它也可导致错误。例如,如果存储器访问碰巧彼此混叠(例如,存储器访问被引导到重叠的存储器位点)并且如果在执行调度中存储器访问的顺序与它们在原始环中的顺序不同,则数据猜测是错误的,例如数据猜测失败。为了捕捉将导致混叠的该情况,可以对每个存储器访问分配混叠寄存器,其在执行访问时记录访问的地址(例如,被访问存储器的起始地址和范围)的存储器范围。访问的存储器范围可与所有潜在混叠访问的混叠寄存器比较并且如果存在匹配,则识别混叠,例如数据猜测的失败。这样的失败可通过例如执行恢复代码来处理。在一些实施例中,恢复代码的执行可导致退回到环之前的迭代,和/或对操作重新排序来消除混叠。 
一般存在两种混叠寄存器:静态和旋转。静态混叠寄存器与旋转混叠寄存器使用起来不同,例如在指令中编码如何比较寄存器方面。为了执行与静态混叠寄存器的比较,静态混叠寄存器的寄存器号可被显式编码。与静态寄存器相比之下,典型地不单独比较旋转混叠寄存器。相反,仅对一个寄存器号编码并且比较所有寄存器,从编码寄存器开始直到编号最大的寄存器。该技术可解决编码但可产生假肯定,例如如果未正确地分配寄存器。 
注意对于旋转混叠寄存器文件,比较可以是“单向的”,例如比较可以是针对编号最大的寄存器的“向上检查”,而不是“向下”。可存在基址指针,其指向混叠寄存器文件。在“旋转”中,基址指针上移,并且从原始到基址指针所指向的当前寄存器,清除所有寄存器。 
本发明的实施例在软件流水线中可使用旋转混叠寄存器。在本文,“寄存器”或“混叠寄存器”通常指“旋转混叠寄存器”。 
图1是根据本发明的实施例用于调度混叠寄存器的系统100的框图。该系统100包括处理器110,其耦合于动态随机存取存储器(DRAM)180。该处理器110可包括多个核1120、1121…112n来执行指令。处理器110可包括寄存器分配逻辑114、指令调度逻辑116、旋转寄存器文件118、混叠检测逻辑120和一个或多个高速缓存存储器(其包括高速缓存122)。在实施例中,寄存器分配逻辑114、指令调度逻辑116和混叠检测逻辑120中的一个或多个可以是软件、硬件、固件或其组合。例如,寄存器分配逻辑114可包括要由执行硬件执行的软件或专用固件或专用电路或其组合。指令调度逻辑116可包括软件、硬件、固件或其组合。例如,指令分配逻辑114可包括要由执行硬件执行的软件或专用固件或专用电路或其组合。 
在操作中,指令调度逻辑116可创建操作调度用于环(例如,对于多个N个迭代要迭代执行的限定操作组)的执行。指令调度逻辑116可调度操作(例如,软件流水线)以便实现可用计算资源的高效利用。 
由于软件流水线,由指令调度逻辑产生的执行调度与在环中规定的操作的执行顺序相比可导致不同的执行顺序。例如,两个操作的环(操作a后跟操作b)可由指令调度逻辑116调度使得对于每个迭代执行操作b,在这之后执行操作a,以便高效利用可用计算资源。 
对于环中的多个迭代中的每个,寄存器分配逻辑114可将旋转寄存器文件118中的一组混叠寄存器中的每个混叠寄存器分配给环中的对应操作。在实施例中,旋转寄存器文件118的每个混叠寄存器可不止一次地被分配,例如,可对连续操作分配混叠寄存器,从而旋转通过多个(例如,有限数量的)混叠寄存器(假设没有混叠寄存器同时被分配给两个操作)。 
每个混叠寄存器可用于将存储器访问数据(例如,一个或多个存储器位点的存储器地址范围)存储在高速缓存122中或DRAM 180中,通过环的对应操作来访问该数据。在实施例中,可由混叠检测逻辑120将混叠寄存器中的一个的内容与旋转寄存器文件118的混叠寄存器中的若干其他的内容比较,来确定是否存在混叠,例如在相同时帧是否存在对共同存储器位点的访问(经由例如加载操作或存储操作)。 
图2A、B、C图示根据本发明的实施例的寄存器分配方案。在图2A中,作为示范性环,伪代码环210包括操作a和操作b。操作a和b两者都是存储器访问,例如加载或存储操作(在本文是“操作”)。 
对于N=3,环210执行3个迭代,例如i=0、1、2。注意在由伪代码210描述的环中,在相同迭代中在操作b之前执行操作a,并且在后续迭代中在所有a操作和所有b操作之前也执行操作a。 
在图2B中,描绘对于环的软件流水线调度220。在软件流水线调度220中,在迭代0内将操作a调度成在操作b执行后执行。在迭代1中,操作a调度成在操作b执行后执行。在迭代2中,操作a调度成在操作b执行后执行。如与环210相比,操作的重新排序可引起混叠,其可通过使用运行时混叠监视来检测。可分配混叠寄存器来实现运行时混叠监视。 
在图2C中,混叠寄存器分配方案230代表根据本发明的实施例的技术方案。X轴232指示时间并且Y轴234指示与对应混叠寄存器关联的寄存器号。条242-250代表操作的“寿命时间”。第一操作的寿命时间可限定为这样的时期,其以第一操作(“生产者操作”)的执行开始并且在执行第二操作时结束,该第二操作可在完成第二操作之前与第一操作混叠。每个寿命时间用对应的生产者操作来标记。例如,寿命时间244在时间t=1处开始(在该时间处开始执行操作b),并且在t=5处结束,其是结束操作a的执行时的时间(例如,迭代0中指令b具有关联的寿命时间244)。 
分配方案230在每个迭代内对环的每个操作分配混叠寄存器(对于N=3,迭代i=0、1、2)。对于环迭代i,分别对a和b的寿命时间分配寄存器2*i和2*i+1。 
例如,在迭代236(i=0,迭代0)中,在时间轴232上的时间=4处,操作a开始执行。要存储在混叠寄存器0中的操作a的存储器访问地址范围可与编号较高的混叠寄存器中的每个的存储的访问范围比较:从寄存器1到与主动操作关联的编号最大的寄存器,例如寄存器1和3,将这些寄存器在第一迭代236和第二迭代238中分配给操作b。(寄存器2在迭代238中分配给操作a,其要在迭代236中结束操作a的寿命时间242后执行,并且因此未被考虑)。采用该方式,混叠可以通过存储在第一分配混叠寄存器中的存储器访问范围与存储在后续分配的混叠寄存器中的存储的存储器访问范围的比较而动态捕捉。 
注意在时间t=5处,迭代236(“迭代0”)的寿命时间242和244已经到期,并且因此在t=5处开始,将不进行对于第一迭代236的寿命时间242和244的分配寄存器的内容的额外比较。因此,寄存器0和1可在迭代240(“迭代2”)中重用,该迭代240在t=5处开始。 
在混叠寄存器分配方案230的示例中,由于例如对于环210的存储器位点的重叠使用,一组四个旋转寄存器(编号为0-3)足以检测混叠实例。如根据流水线调度220所执行的,环210具有迭代间隔(224,以及226)Δt=2,其是连续迭代的起始之间的时间间隔。寄存器分配方案230中的迭代间隔(260,以及262)也是Δt=2。 
可以分配混叠寄存器使得总共4个旋转寄存器足以实施比较来检测混叠。对于包括具有更复杂软件流水线方案的超过两个操作的环,可需要更大的旋转寄存器组来检测混叠的每个实例。对于任何N值,有限集合的混叠寄存器(小于N)可在旋转基础上分配,例如在第一混叠寄存器处开始并且继续通过编号最大的混叠寄存器并且循环重复来实现混叠的检测。 
图3是根据本发明的另一个实施例的寄存器分配方案300的图示。寄存器分配300旨在减少混叠寄存器的数量而不改变软件流水线调度。 
时间轴302可度量每个操作a和b的寿命时间。寄存器轴304可指示分配哪个混叠寄存器来存储对于每个操作的对应存储器访问范围(例如,在例如图1的DRAM 180等存储器内的地址范围)。例如,在迭代306(第0个迭代)中,寄存器0存储与操作a(其具有寿命时间312)关联的存储器访问范围,并且寄存器1存储与操作b(其具有寿命时间314)关联的存储器访问范围。操作a(如在图2的伪代码210中示出的)预计在操作b之前出现。 
为了确保在第一迭代的操作a与b之间不存在混叠,在图3的方案300中,操作b的寿命时间314延伸到操作a的寿命时间312的末端并且混叠寄存器1对于寿命时间314分配给操作b。在寄存器分配300中,迭代中操作a的寿命时间在相同迭代和下一个迭代中在操作b的寿命时间之上,并且对于混叠的检查包括从混叠寄存器0到混叠寄存器1(按旋转混叠寄存器的数字顺序“向上”)。此外,因为迭代306(“迭代0”)中操作a的寿命时间312在迭代308(“迭代1”)中操作b的寿命时间318期间发生,寄存器0的内容可与寄存器2的内容比较来确定在寿命时间312期间的操作a与寿命时间318期间的操作b之间是否存在混叠。 
注意寿命时间314在t=5处结束。查看迭代308(“迭代1”),因为寿命时间314结束并且超过寿命时间314不需要寄存器1,可以看到混叠寄存器1可以用于存储迭代308中所包括的具有寿命时间316的操作a的关联存储器访问范围。虚线324和325指示迭代308(迭代1)的边界,该迭代308包括具有寿命时间318和分配的寄存器2的操作b的执行,以及具有寿命时间316和分配的寄存器1的操作a的执行。 
从而,可以循环分配寄存器,例如寄存器1可用于在寿命时间314(例如,时间间隔Δt=1→5)期间存储迭代306中的操作b的存储器访问范围,并且寄存器1还可在迭代308中用于存储对于在寿命时间316(例如,时间间隔Δt=6→7)期间的操作a的存储器访问范围。 
迭代310(“迭代2”)被虚线326和328界定,并且包括使用寄存器0存储操作b的存储器访问范围来执行具有寿命时间322(Δt=5→9)的操作b,和使用寄存器2存储迭代310的操作a的存储器访问范围来执行具有寿命时间320(Δt=8→9)的操作a,因为寿命时间318在t=7处到期,这释放寄存器2用于在迭代310中重用。从而,寄存器2在连续迭代中重用(“寄存器重用”),例如在操作b的寿命时间318期间在迭代308中,以及也在操作a的寿命时间320期间在迭代310中。连续迭代中该寄存器重用技术可以导致用于在环(例如,图2的环210)的执行期间检测混叠的寄存器的总数量减少。此外,在寄存器分配300中,可循环使用寄存器0、1、2的组,例如寄存器0在寿命时间312(Δt=4→5)期间在迭代306(“迭代0”)中使用并且再次在寿命时间322(Δt=5→9)期间在迭代310(“迭代2”)中使用。 
对于环的软件流水线调度使用混叠寄存器的旋转分配可以视为寄存器分配问题到循环调度问题的变换。每个依赖性(基于操作的执行顺序的操作的关系)可视为具有依赖距离,例如依赖操作之间的迭代次数。例如,在图2和3中,存在两个依赖性: 
1)具有距离(例如,迭代之间的距离)零(例如,相同迭代)的a→b,其意指要对相同迭代中操作a的寿命时间分配相同或比操作b的寿命时间编号要小的寄存器。
2)具有距离一(相邻迭代)的a→b,其意指要对迭代中操作a的寿命时间分配相同或比相邻迭代中操作b的寿命时间编号要小的寄存器,使得旋转混叠寄存器将按旋转寄存器的数字“向上”顺序来检查。 
在本发明的实施例中,基于依赖图,“对于寿命时间的软件流水线调度”可以通过将寿命时间视为操作而创建,并且软件流水线算法可以应用于调度寿命时间。 
可以制定调度方法,从而将寄存器分配问题制定为将寿命时间“调度”到寄存器内。例如,让a(i)成为环迭代i中的操作a,并且让r (a, i)成为由调度分配给它的寄存器。 
调度遵从下列约束: 
(1)模约束:对于所有i,r (a, i)= r (a, 0)+i*C。在这里C是要由调度器确定的常数。即,操作的寿命时间从调度中的寄存器方面来看在恒定时期中出现。例如,在图2的框230中,操作a的寿命时间在恒定时期C=2(在寄存器0和2中)中出现;在图3中,操作a的寿命时间在恒定时期C=1(在寄存器0和1中)中出现。
(2)依赖约束:假设a(i)和b(i+d)(其中d≥0)可混叠,并且a(i)按原始执行顺序在b(i+d)之前,但它们在环的软件流水线调度中重新排序。为了确保在运行时期间捕捉任何混叠,我们让r (a, i) ≤ r (b, i+d)(对于所有i)。即,要对a(i)分配与b(i+d)相同的寄存器,或对a(i)分配编号较小的寄存器以便使得a(i)的存储器地址范围与b(i+d)的存储器地址范围相比较。这是因为旋转寄存器文件的单向比较特征。该约束可以通过依赖a→b(具有等于d的距离和0延迟(从寄存器方面来看))来模型化。 
(3)资源约束:如果两个操作的寿命时间在时间上重叠,无法对它们分配相同的寄存器。 
传统的软件流水线具有两个维度:资源和时间。它在遵从所有依赖和资源约束的情况下以恒定周期(初始间隔,“II”)将操作调度在适当时间。在本文呈现的寄存器分配中,寄存器可采用与“时间”相同的方式来对待,时间可视为“资源”,寿命时间可视为“操作”,并且混叠检查视为“依赖”。 
根据本发明的实施例,在操作上,可考虑下列考量来达成调度: 
1. 依赖建立。
具有距离d(a与b之间的迭代次数)的依赖a→b根据上文的依赖约束添加到依赖图,d=0的时候除外,但a在相同迭代中按原始执行顺序在b之后。 
此外,可以添加下列依赖来避免假肯定,只要它在依赖图中未完成局部循环即可,其中局部循环由距离全部是0的依赖组成:假设a(i)和b(i+d)(其中d≥0)可混叠,并且a(i)按原始执行顺序在b(i+d)之前并且在环的软件流水线调度中也是如此。在该情况下,当b(i+d)执行时,它应完全没有对于混叠来检查a(i)。这可以通过确保对b(i+d)分配比a(i)编号更大的寄存器而实行。即,对于所有i,r (a, i) < r (b, i+d)。这可以通过添加具有等于d的距离和延迟为1的依赖a→b而进行。 
假肯定可以通过添加下列种类的依赖而进一步最小化,只要它们在依赖图中未完成局部循环即可:对于来自相同迭代的操作a和b,可以存在a从不检查b的情况。可以添加具有等于0的距离和延迟为1的依赖b→a。 
2. 循环调度 
(1)仅基于局部依赖来调度寿命时间。即,仅考虑距离是0的依赖并且忽略所有其他。这产生对于单环迭代中的寿命时间的调度。
可以采用各种策略来对要调度的寿命时间定优先级。在实施例中,可采用叫作“首先适应(first-fit)”的简单调度策略:如果超过一个寿命时间准备被调度,用最早起始时间对这一个定优先级。 
假设每个环迭代的寿命时间具有相同调度。考虑忽略的依赖性的情况下,使两个连续环迭代的寿命时间的调度重叠。这产生更紧凑的调度,其可以在迭代之间重用寄存器。该局部调度和压缩方法连同首先适应策略可有效地减少假肯定。 
3. 处理未添加的依赖以在依赖建立(上文)中避免循环形成。对于省略的依赖a→b中的每个,检查来确定它是否被调度遵从。如果否的话,使b移到静态混叠寄存器。 
4. 寄存器分配和旋转。寄存器分配可以采取平坦时间-空间图,其具有无限数量的寄存器。将图中的寄存器号映射到旋转寄存器文件中的那些。旋转指令也可以每II个循环插入环的软件流水线调度内,其可以每II个循环“清除”C数量的死寿命时间。 
图4是根据本发明的实施例用于分配混叠寄存器的方法的流程图400。在框402处,可在寿命时间之间建立依赖。继续到框404,执行循环调度,其包括根据建立的依赖和资源约束来调度寿命时间到寄存器。前进到框406,可处理在框402中未考虑的依赖,例如通过使用静态混叠寄存器。前往框408,可对环的操作分配多个混叠寄存器,例如,可在每个迭代中对环的每个操作分配混叠寄存器。可循环分配混叠寄存器,其中每个寄存器对于相应操作的寿命时间而分配,并且每个寄存器可存储由相应操作访问的存储器地址的指示。在一些实施例中,分配给第一迭代中的第一操作的至少一个寄存器可被在第一操作的关联寿命时间已经到期后开始的连续迭代中的另一个操作重用。从而,两个连续环迭代的寿命时间可导致紧凑的调度,其可重用迭代之间的寄存器。继续到框410,旋转清除指令可添加到调度,被执行以便清除(例如,擦除)与结束的寿命时间关联的混叠寄存器。 
现在参考图5,示出根据本发明的实施例的处理器的框图。如在图5中示出的,处理器500可以是多核处理器,其包括核域510中的多个核510a-510n。这些核中的一个或多个可包括指令调度逻辑、混叠寄存器(例如,旋转寄存器文件)和寄存器分配逻辑,用于根据本发明的实施例对环的操作分配混叠寄存器。 
核可经由互连515而耦合于系统代理或非核520,其包括各种部件。如看到的,非核520可包括共享高速缓存530,其可以是最后级别的高速缓存并且包括高速缓存控制器532。另外,非核可包括集成存储器控制器540和各种接口550。 
进一步参考图5,处理器500可与系统存储器560通信,例如经由存储器总线。另外,通过接口550,可以连接到各种片外部件,例如外围装置、大容量存储等。尽管在图5的实施例中用该特定实现示出,本发明的范围在该方面不受限制。 
参考图6,图示包括多个核的处理器的实施例。处理器600包括任何处理器或处理装置,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协同处理器、片上系统(SOC)或执行代码的其他装置。在一个实施例中,处理器600包括至少两个核-核601和602,其可包括不对称核或对称核(图示的实施例)。然而,处理器600可包括任何数量的处理元件,其可以是对称或不对称的。 
在一个实施例中,处理元件指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、过程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持对于处理器的状态(例如执行状态或架构状态)的任何其他元件。也就是说,在一个实施例中,处理元件指能够独立地与代码(例如软件线程、操作系统、应用或其他代码)关联的任何硬件。物理处理器典型地指集成电路,其潜在地包括任何数量的其他处理元件,例如核或硬件线程。 
核通常指定位在能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。与核相比之下,硬件线程典型地指定位在能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,在共享某些资源并且其他专用于架构状态时,硬件线程和核的术语之间的界线重叠。然而通常,核和硬件线程由操作系统视为个体逻辑处理器,其中操作系统能够独立调度每个逻辑处理器上的操作。 
物理处理器600(如在图6中图示)包括两个核,核601和602。在这里,核601和602视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核601包括无序处理器核,而核602包括有序处理器核。然而,核601和602可独立地从任何类型的核选择,例如本地核、软件管理核、适于执行本地指令集架构(ISA)的核、适于执行转换ISA的核、联合设计的核或其他已知核。再进一步论述,因为核602中的单元采用相似方式操作,在核601中图示的功能单元在下文进一步详细描述。 
如描绘的,核601包括两个硬件线程601a和601b,其也可称为硬件线程槽601a和601b。因此,在一个实施例中,软件实体(例如操作系统)潜在地将处理器600视为四个独立处理器,即能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上文提到的,第一线程与架构状态寄存器601a关联,第二线程与架构状态寄存器601b关联,第三线程可与架构状态寄存器602a关联,并且第四线程可与架构状态寄存器602b关联。在这里,架构状态寄存器(601a、601b、602a和602b)中的每个可称为处理元件、线程槽或线程单元,如上文描述的。如图示的,架构状态寄存器601a在架构状态寄存器601b中复制,因此个体架构状态/上下文能够被存储以用于逻辑处理器601a和逻辑处理器601b。在核601中,其他较小的资源(例如指令指针)以及分配器和重命名块630中的重命名逻辑也可对于线程601a和601b复制。例如重排序器/引退单元635中的重排序缓冲器、ILTB 620、加载/存储缓冲器和队列等一些资源可通过分区而共享。例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 615、执行单元640和无序单元635的部分等其他资源潜在地完全共享。 
处理器600通常包括其他资源,其可完全被共享、通过分区而共享或被处理元件专用/专用于处理元件。在图6中,图示具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意处理器可包括或省略这些功能单元中的任何单元,以及包括未描绘的任何其他已知的功能单元、逻辑或固件。如图示的,核601包括简化的代表性无序(OOO)处理器核。但在不同的实施例中可利用有序处理器。OOO核包括用于预测要执行/采取的分支的分支目标缓冲器620和用于存储对于指令的地址转换条目的指令转换缓冲器(I-TLB)620。 
核601进一步包括解码模块625,其耦合于提取单元620来对提取的元素解码。在一个实施例中,提取逻辑包括分别与线程槽601a、601b关联的个体定序器。核601通常与第一ISA关联,该第一ISA限定/规定在处理器600上可执行的指令。是第一ISA的部分的机器代码指令通常包括指令(称为操作码)的一部分,其引用/规定要执行的指令或操作。解码逻辑625包括电路,其从它们的操作码识别这些指令并且在流水线上传递解码的指令用于处理,如由第一ISA限定的。例如,在一个实施例中,解码器625包括这样的逻辑,其设计成或适于识别特定指令,例如事务指令。由于由解码器625识别,架构或核601采取特定、预定义动作来执行与合适的指令关联的任务。重要地是注意本文描述的任务、块、操作和方法中的任一个可响应于单个或多个指令而执行,这些指令中的一些可以是新的或旧的指令。 
在一个示例中,分配器和重命名块630包括用于保留资源(例如寄存器文件)来存储指令处理结果的分配器。然而,线程601a和601b潜在地能够无序执行,其中分配器和重命名块630还保留其他资源(例如重排序缓冲器)来跟踪指令结果。单元630还可包括寄存器重命名器,用于将程序/指令参考寄存器重命名为处理器600内部的其他寄存器。重排序器/引退单元635包括例如上文提及的重排序缓冲器、加载缓冲器和存储缓冲器等部件,用于支持无序执行和稍后无序执行的指令的有序引退。 
在一个实施例中,调度器和执行单元块640包括调度器单元,用于调度执行单元上的指令/操作。例如,调度器单元可根据流水线调度来调度环的操作。还包括与执行单元关联的寄存器文件来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。 
核601和602中的一个或二者可包括对应的混叠寄存器文件(642或646),和对应的寄存器分配逻辑(644或648),用于根据本发明的实施例对环中的多个操作中的每个分配对应混叠寄存器文件(642或646)的混叠寄存器。混叠寄存器可用于根据本发明的实施例来识别混叠。 
较低级数据高速缓存和数据转换缓冲器(D-TLB)651耦合于执行单元640。D-TLB 651存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分成多个虚拟页面。 
在这里,核601和602共享对更高级或更远高速缓存610的访问,该更高级或更远高速缓存610高速缓存最近提取的元素。注意更高级或更远指的是增加或更远离执行单元的高速缓存级别。在一个实施例中,更高级高速缓存610是最后级别的数据高速缓存-在处理器600上存储器等级结构中最后的高速缓存-例如第二或第三级数据高速缓存。然而,更高级高速缓存610不这样受限制,因为它可与指令高速缓存关联或包括指令高速缓存。跟踪高速缓存-指令高速缓存类型-相反可在解码器625后耦合来存储最近解码的痕迹(trace)。 
在描绘的配置中,处理器600还包括总线接口模块605。历史上,控制器670已经包括在处理器600外部的计算系统中。在该情形中,总线接口605与处理器600外部的装置通信,例如系统存储器675、芯片集(通常包括用于连接到存储器675的存储器控制器中枢,和连接外围装置的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。并且在该情形中,总线605可包括任何已知互连,例如多点总线、点到点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差动总线和GTL总线。 
存储器675可专用于处理器600或与系统中的其他装置共享。存储器675类型的共同示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知存储装置。注意装置680可包括耦合于存储器控制器中枢的图形加速器、处理器或卡、耦合于I/O控制器中枢的数据存储、无线收发器、闪存装置、音频控制器、网络控制器或其他已知装置。 
然而,注意在描绘的实施例中,控制器670图示为处理器600的部分。近来,因为更多的逻辑和装置在单个芯片(die)(例如SOC)上集成,这些装置中的每个可包含在处理器600上。例如,在一个实施例中,存储器控制器中枢670在与处理器600相同的封装和/或芯片上。在这里,核的一部分(核上部分)包括一个或多个控制器670,用于与例如存储器675或图形装置680等其他装置接口。包括用于与这样的装置接口的互连和控制器的配置通常称为核上(或非核配置)。作为示例,总线接口605包括环形互连,其具有用于与存储器675接口的存储器控制器和用于与图形装置680接口的图形控制器。再者,在SOC环境中,甚至更多的装置(例如网络接口、协同处理器、存储器675、图形装置680和任何其他已知计算机装置/接口)可在单个芯片或集成电路上集成来提供具有高功能性和低功耗的小形状因子。 
实施例可在许多不同的系统类型中实现。现在参考图7,示出根据本发明的实施例的系统的框图。如在图7中示出的,多处理器系统700是点到点互连系统,并且包括经由点到点互连750而耦合的第一处理器770和第二处理器780。如在图7中示出的,处理器770和780中的每个可以是多核处理器,其包括第一和第二处理器核(即,处理器核774a和774b以及处理器核784a和784b),但潜在地在处理器中可存在多得多的核。 
仍参考图7,第一处理器770进一步包括存储器控制器中枢(MCH)722和点到点(P-P)接口776和778。相似地,第二处理器780包括MCH 782和P-P接口786和788。如在图7中示出的,MCH 722和782使处理器耦合于相应的存储器,即存储器732和存储器734,其可以是本地附连到相应处理器的系统存储器(例如,DRAM)的部分。根据本发明的实施例,处理器770和780中的每个可包括寄存器文件(未示出)中的混叠寄存器和寄存器分配逻辑(未示出),用于对环的多个存储器访问操作中的每个分配混叠寄存器。根据本发明的实施例,混叠寄存器可用于检测可由于环的操作的流水线调度而出现的混叠。 
第一处理器770和第二处理器780可分别经由P-P互连762和754而耦合于芯片集790。如在图7中示出的,芯片集790包括P-P接口794和798。 
此外,芯片集790包括接口792,用于通过P-P互连739而使芯片集790与高性能图形引擎738耦合。进而,芯片集790可经由接口796耦合于第一总线716。如在图7中示出的,各种输入/输出(I/O)装置714可连同总线桥718一起耦合于第一总线716,该总线桥718使第一总线716耦合于第二总线720。各种装置可耦合于第二总线720,这些装置包括例如键盘/鼠标722、通信装置726和例如盘驱动器或其他大容量存储装置等数据存储单元728,其在一个实施例中可包括代码730。此外,音频I/O 724可耦合于第二总线720。实施例可以并入其他类型的系统内,其包括例如智能蜂窝电话、Ultrabook 
下列示例关于另外的实施例。 
在第一示例中,系统包括处理器,其包括一个或多个核。处理器还包括寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息。该存储器范围信息引用存储器内的一个或多个存储器位点。处理器还包括寄存器分配逻辑,用于将混叠寄存器中的每个分配给环的对应操作。可根据旋转调度进行分配并且将混叠寄存器中的至少一个分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。系统还包括耦合于处理器的存储器。可选地,处理器进一步包括指令调度逻辑,用于根据流水线调度来调度环的操作,其中环的至少一个操作要根据与环的操作的顺序不同的执行调度来执行。可选地,一个或多个核中的一个可执行存储在第一混叠寄存器中的数据与存储在混叠寄存器中的至少一个其他中的数据的比较来确定是否存在混叠。可选地,第一混叠寄存器可持续第一寿命时间地分配给第一操作并且第一混叠寄存器可持续第二寿命时间地分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间在环的第一迭代内并且第二寿命时间在环的第二迭代内,该第二迭代是依次挨着第一迭代的迭代。可选地,寄存器分配逻辑可执行旋转清除指令来擦除关联寿命时间到期的每个混叠寄存器的内容。 
在第二示例中,至少一个计算机可读介质包括指令,其在被执行时使系统能够根据对于环的多个迭代的旋转序列相继将旋转寄存器文件的多个混叠寄存器中的每个分配给环的对应操作,其中每个混叠寄存器存储由对应操作访问的一个或多个存储器位点的指示并且混叠寄存器中的一个被分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。至少一个计算机可读介质还包括指令,用于通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。第一混叠寄存器可对于第一寿命时间分配给第一操作并且第一混叠寄存器对于第二寿命时间分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间和第二寿命时间是环中的依次相邻迭代。可选地,第一寿命时间和第二寿命时间在环的非相邻迭代中。可选地,至少一个计算机可读介质包括额外指令,其在被执行时使系统能够对于操作以及基于排序关系对于相同或不同迭代内的另一个操作分配寿命时间并且对于寿命时间的持续时间对操作分配对应混叠寄存器。可选地,至少一个计算机可读介质进一步包括指令,其使系统能够在持续时间到期时对另一个迭代中的另一个操作重新分配对应混叠寄存器。可选地,至少一个计算机可读介质进一步包括指令,其使系统能够响应于排序关系的存在来检查混叠,其中该排序关系响应于以下而被指示:根据流水线调度,调度的环的第一操作在环的第二操作之后执行;以及环中环的第一操作在环的第二操作之前可执行这一指示。 
在第三示例中,方法包括根据对于环的多个迭代的旋转序列相继将寄存器文件的多个混叠寄存器中的每个分配给环的对应操作,包括对环的第一迭代中的第一操作和环的后续迭代中的第二操作分配混叠寄存器中的一个,其中每个混叠寄存器存储由对应操作访问的存储器位点的指示。方法还包括通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。可选地,方法包括将第一混叠寄存器对于第一寿命时间分配给第一操作以及将第一混叠寄存器对于第二寿命时间分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间和第二寿命时间是环中的依次相邻迭代。可选地,方法包括对于第一寿命时间将第一混叠寄存器分配给环的第一迭代中的第二操作以及对于第二寿命时间将第一混叠寄存器分配给环的第二迭代的第一操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,方法包括将对于操作分配寿命时间以及基于排序关系分配寿命时间给相同迭代或不同迭代内的另一个操作,以及对于该寿命时间的持续时间将对应混叠寄存器分配给操作。可选地,方法包括在该持续时间到期时对另一个迭代中的另一个操作重新分配对应混叠寄存器。可选地,方法包括通过比较分配给环的第一迭代的第一混叠寄存器的内容与对于与第二操作关联的第二寿命时间分配给第二操作的第二混叠寄存器的内容来确定在环的第一迭代中是否存在混叠,其中第二寿命时间由第一操作的第一调度执行时间相对于第二操作的第二调度执行时间而确定。可选地,方法包括响应于排序关系的存在来检查混叠,其中该排序关系响应于以下而指示:根据流水线调度,调度的环的第一操作在环的第二操作之后执行;以及在环中该环的第一操作在环的第二操作之前可执行这一指示。 
在第四示例中,设备配置成执行第三示例的方法,其包括选项中的一个或多个。 
在第五示例中,处理器包括:一个或多个核;寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息,其中该存储器范围信息参考存储器内的一个或多个存储器位点;和寄存器分配逻辑,用于对环的对应操作分配混叠寄存器中的每个。可根据旋转调度进行分配,其中对环的第一迭代中的第一操作和环的后续迭代中的第二操作分配混叠寄存器中的至少一个。系统还包括耦合于处理器的存储器。可选地,处理器进一步包括指令调度逻辑,用于根据流水线调度来调度环的操作,其中环的至少一个操作要根据与环的操作的顺序不同的执行调度来执行。可选地,一个或多个核中的一个执行存储在第一混叠寄存器中的数据与存储在混叠寄存器中的至少一个其他中的数据的比较来确定是否存在混叠。可选地,第一混叠寄存器对于第一寿命时间被分配给第一操作并且第一混叠寄存器对于第二寿命时间被分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间在环的第一迭代内并且第二寿命时间在环的第二迭代内,该第二迭代是依次挨着第一迭代的迭代。可选地,寄存器分配逻辑进一步执行旋转清除指令来擦除关联寿命时间到期的每个混叠寄存器的内容。 
实施例可在许多不同类型的系统中使用。例如,在一个实施例中,通信装置可以设置成执行本文描述的各种方法和技术。当然,本发明的范围不限于通信装置,而相反其他实施例可以针对用于处理指令的其他类型的设备,或包括指令的一个或多个机器可读介质,这些指令响应于在计算装置上执行而促使该装置实施本文描述的方法和技术中的一个或多个。 
实施例可在代码中实现并且可存储在非暂时性存储介质上,该非暂时性存储介质具有存储在其上的指令,其可以用于对系统编程来执行指令。存储介质可包括但不限于:任何类型的盘,这些盘包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM);磁或光卡或适合于存储电子指令的任何其他类型的介质。 
尽管已经关于有限数量的实施例描述本发明,本领域内技术人员将意识到从其处的许多修改和改动。规定附上的权利要求涵盖所有这样的修改和改动,它们落入本发明的真正精神和范围内。 

Claims (25)

1.一种系统,其包括:
处理器,其包括:
一个或多个核;
寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息,其中所述存储器范围信息引用存储器内的一个或多个存储器位点;以及
寄存器分配部件,用于将所述混叠寄存器中的每个分配给所述环的对应操作,其中根据旋转调度进行分配,其中将所述混叠寄存器中的至少一个分配给所述环的第一迭代中的第一操作和所述环的后续迭代中的第二操作;
所述存储器,其耦合于所述处理器。
2.如权利要求1所述的系统,其中所述处理器进一步包括指令调度部件,用于根据流水线调度来调度所述环的操作,其中所述环的至少一个操作根据与所述环的操作的顺序不同的执行调度来执行。
3.如权利要求1所述的系统,其中所述一个或多个核中的一个执行存储在第一混叠寄存器中的数据与存储在所述混叠寄存器中的至少一个其他中的数据的比较来确定是否存在混叠。
4.如权利要求1所述的系统,其中第一混叠寄存器对于第一寿命时间被分配给第一操作并且所述第一混叠寄存器对于第二寿命时间被分配给第二操作,其中所述第一寿命时间和所述第二寿命时间是非重叠时期。
5.如权利要求4所述的系统,其中所述第一寿命时间在所述环的第一迭代内并且所述第二寿命时间在所述环的第二迭代内,所述第二迭代是依次挨着所述第一迭代的迭代。
6.如权利要求1-5中任一项所述的系统,其中所述寄存器分配部件用于执行旋转清除指令来擦除关联寿命时间到期的每个混叠寄存器的内容。
7.至少一个计算机可读介质,其包括指令,所述指令在被执行时
使系统能够:
根据对于环的多个迭代的旋转序列相继将旋转寄存器文件的多个混叠寄存器中的每个分配给所述环的对应操作,其中每个混叠寄存器存储由对应操作访问的一个或多个存储器位点的指示并且所述混叠寄存器中的一个被分配给所述环的第一迭代中的第一操作和所述环的后续迭代中的第二操作;以及
通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。
8.如权利要求7所述的计算机可读介质,其中第一混叠寄存器对于第一寿命时间被分配给第一操作并且所述第一混叠寄存器对于第二寿命时间被分配给第二操作,其中所述第一寿命时间和所述第二寿命时间是非重叠时期。
9.如权利要求8所述的计算机可读介质,其中所述第一寿命时间和所述第二寿命时间是所述环的依次相邻迭代。
10.如权利要求8所述的计算机可读介质,其中所述第一寿命时间和所述第二寿命时间在所述环的非相邻迭代中。
11.如权利要求7所述的计算机可读介质,其进一步包括指令,所述指令使所述系统能够:
对于操作以及基于排序关系对于相同或不同迭代内的另一个操作分配寿命时间;以及
对于所述寿命时间的持续时间,对所述操作分配对应混叠寄存器。
12.如权利要求11所述的计算机可读介质,其进一步包括指令,所述指令使所述系统能够在所述持续时间到期时将所述对应混叠寄存器重新分配给另一个迭代中的另一个操作。
13.如权利要求7-12中任一项所述的计算机可读介质,其进一步包括指令,所述指令使所述系统能够响应于排序关系的存在来检查混叠,其中所述排序关系响应于以下而被指示:
根据流水线调度,调度的环的第一操作在所述环的第二操作之后执行;以及
所述环中,所述环的第一操作在所述环的第二操作之前可执行这一指示。
14.一种方法,其包括:
根据所述环的多个迭代的旋转序列,相继将寄存器文件的多个混叠寄存器中的每个分配给所述环的对应操作,包括将混叠寄存器中的一个分配给所述环的第一迭代中的第一操作和所述环的后续迭代中的第二操作,其中每个混叠寄存器存储由对应操作访问的存储器位点的指示;以及
通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。
15.如权利要求14所述的方法,其进一步包括对于第一寿命时间将第一混叠寄存器分配给第一操作以及对于第二寿命时间将所述第一混叠寄存器分配给第二操作,其中所述第一寿命时间和所述第二寿命时间是非重叠时期。
16.如权利要求15所述的方法,其中所述第一寿命时间和所述第二寿命时间是所述环中的依次相邻迭代。
17.如权利要求15所述的方法,其进一步包括对于第一寿命时间将第一混叠寄存器分配给所述环的第一迭代中的第二操作以及对于第二寿命时间将所述第一混叠寄存器分配给所述环的第二迭代的第一操作,其中所述第一寿命时间和所述第二寿命时间是非重叠时期。
18.如权利要求14所述的方法,其进一步包括对于操作以及基于排序关系对于相同迭代或不同迭代内的另一个操作分配寿命时间,以及对于所述寿命时间的持续时间将对应混叠寄存器分配给所述操作。
19.如权利要求18所述的方法,其进一步包括在所述持续时间到期时重新分配所述对应混叠寄存器给另一个迭代中的另一个操作。
20.如权利要求14所述的方法,其进一步包括通过比较分配给所述环的第一操作的第一混叠寄存器的内容与对于与所述第二操作关联的第二寿命时间分配给所述第二操作的第二混叠寄存器的内容来确定在所述环的第一迭代中是否存在混叠,其中所述第二寿命时间由所述第一操作的第一调度执行时间相对于所述第二操作的第二调度执行时间而确定。
21.如权利要求14所述的方法,其进一步包括响应于排序关系的存在来检查混叠,其中所述排序关系响应于以下而被指示:
根据流水线调度,调度的环的第一操作在所述环的第二操作之后执行;以及
所述环中,所述环的第一操作在所述环的第二操作之前可执行这一指示。
22.一种设备,其包括用于执行如权利要求14-21中任一项所述的方法的部件。
23.一种设备,其配置成执行如权利要求14-21中任一项所述的方法。
24.一种处理器,其包括:
一个或多个核;
寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息,其中所述存储器范围信息引用存储器内的一个或多个存储器位点;
寄存器分配逻辑,用于将所述混叠寄存器中的每个分配给所述环的对应操作,其中根据旋转调度进行所述分配,其中将所述混叠寄存器中的至少一个分配给所述环的第一迭代中的第一操作和所述环的后续迭代中的第二操作;
所述存储器耦合于所述处理器。
25.如权利要求24所述的处理器,其进一步包括指令调度逻辑,用于根据流水线调度来调度所述环的操作,其中所述环的至少一个操作根据与所述环的操作的顺序不同的执行调度来执行。
CN201380033509.XA 2013-05-30 2013-05-30 流水线调度中混叠寄存器的分配 Active CN104412233B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/043224 WO2014193375A1 (en) 2013-05-30 2013-05-30 Allocation of alias registers in a pipelined schedule

Publications (2)

Publication Number Publication Date
CN104412233A true CN104412233A (zh) 2015-03-11
CN104412233B CN104412233B (zh) 2019-05-14

Family

ID=51989239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380033509.XA Active CN104412233B (zh) 2013-05-30 2013-05-30 流水线调度中混叠寄存器的分配

Country Status (7)

Country Link
US (1) US9495168B2 (zh)
EP (1) EP2875427B1 (zh)
JP (1) JP6008265B2 (zh)
KR (1) KR101752042B1 (zh)
CN (1) CN104412233B (zh)
AU (1) AU2013387185B2 (zh)
WO (1) WO2014193375A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038002A (zh) * 2017-12-15 2018-05-15 天津津航计算技术研究所 一种嵌入式软件内存管理方法
CN108132842A (zh) * 2017-12-15 2018-06-08 天津津航计算技术研究所 一种嵌入式软件内存管理系统
CN113867274A (zh) * 2020-06-30 2021-12-31 株式会社安川电机 工程设备、工程方法和信息存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6117432B2 (ja) * 2013-05-30 2017-04-19 インテル コーポレイション パイプラインソフトウェアの動的な最適化
US20170192789A1 (en) * 2015-12-30 2017-07-06 Rama Kishnan V. Malladi Systems, Methods, and Apparatuses for Improving Vector Throughput
US10169009B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs
US10169010B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
US10228921B2 (en) * 2016-06-01 2019-03-12 International Business Machines Corporation Compiler that performs register promotion optimizations in regions of code where memory aliasing may occur
US9934009B2 (en) * 2016-06-01 2018-04-03 International Business Machines Corporation Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur
US10798053B2 (en) * 2017-12-30 2020-10-06 Intel Corporation Alias-based time-limited lease addressing for internet of things devices
US11435987B2 (en) * 2019-12-24 2022-09-06 Advanced Micro Devices, Inc Optimizing runtime alias checks

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1308274A (zh) * 2000-02-08 2001-08-15 斯罗扬有限公司 在处理器中传送指令结果及处理器的编译方法
JP2002024011A (ja) * 2000-06-13 2002-01-25 Siroyan Ltd プロセッサにおける命令の叙述された実行
US7634635B1 (en) * 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
CN102369512A (zh) * 2009-04-16 2012-03-07 飞思卡尔半导体公司 数据处理系统中具有窥探能力的存储器测试
US20120260072A1 (en) * 2011-04-07 2012-10-11 Cheng Wang Register allocation in rotation based alias protection register
WO2013048379A1 (en) * 2011-09-27 2013-04-04 Intel Corporation Expediting execution time memory aliasing checking

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
WO1998006039A1 (en) 1996-08-07 1998-02-12 Sun Microsystems, Inc. Disambiguation memory circuit and operating method
US5958048A (en) * 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
KR100273759B1 (ko) 1997-12-26 2000-12-15 윤종용 제어 레지스터를 가지는 특정 용도 전용 하드웨어를 위한제어값 라이트회로
US6954927B2 (en) * 1999-02-17 2005-10-11 Elbrus International Hardware supported software pipelined loop prologue optimization
US6880154B2 (en) * 2001-06-29 2005-04-12 Intel Corporation Alias-free test for dynamic array structures
US20030154363A1 (en) * 2002-02-11 2003-08-14 Soltis Donald C. Stacked register aliasing in data hazard detection to reduce circuit
US20030237080A1 (en) * 2002-06-19 2003-12-25 Carol Thompson System and method for improved register allocation in an optimizing compiler
US20040025153A1 (en) * 2002-07-30 2004-02-05 Johnson Teresa L. System and method for software pipelining loops with multiple control flow paths

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7634635B1 (en) * 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
CN1308274A (zh) * 2000-02-08 2001-08-15 斯罗扬有限公司 在处理器中传送指令结果及处理器的编译方法
JP2002024011A (ja) * 2000-06-13 2002-01-25 Siroyan Ltd プロセッサにおける命令の叙述された実行
CN102369512A (zh) * 2009-04-16 2012-03-07 飞思卡尔半导体公司 数据处理系统中具有窥探能力的存储器测试
US20120260072A1 (en) * 2011-04-07 2012-10-11 Cheng Wang Register allocation in rotation based alias protection register
WO2013048379A1 (en) * 2011-09-27 2013-04-04 Intel Corporation Expediting execution time memory aliasing checking

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038002A (zh) * 2017-12-15 2018-05-15 天津津航计算技术研究所 一种嵌入式软件内存管理方法
CN108132842A (zh) * 2017-12-15 2018-06-08 天津津航计算技术研究所 一种嵌入式软件内存管理系统
CN108038002B (zh) * 2017-12-15 2021-11-02 天津津航计算技术研究所 一种嵌入式软件内存管理方法
CN108132842B (zh) * 2017-12-15 2021-11-02 天津津航计算技术研究所 一种嵌入式软件内存管理系统
CN113867274A (zh) * 2020-06-30 2021-12-31 株式会社安川电机 工程设备、工程方法和信息存储介质

Also Published As

Publication number Publication date
EP2875427B1 (en) 2020-08-26
US9495168B2 (en) 2016-11-15
KR101752042B1 (ko) 2017-06-28
CN104412233B (zh) 2019-05-14
EP2875427A4 (en) 2016-07-13
AU2013387185B2 (en) 2016-08-04
WO2014193375A1 (en) 2014-12-04
JP2015520905A (ja) 2015-07-23
AU2013387185A1 (en) 2014-12-18
KR20150016599A (ko) 2015-02-12
JP6008265B2 (ja) 2016-10-19
EP2875427A1 (en) 2015-05-27
US20150039861A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
CN104412233A (zh) 流水线调度中混叠寄存器的分配
TWI516908B (zh) 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統
CN106575218B (zh) 持久性存储屏障处理器、方法、系统和指令
US9619301B2 (en) Multi-core memory model and speculative mode processor management
CN1320452C (zh) 用于支持数据推测式执行的微处理器与方法
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US8438568B2 (en) Speculative thread execution with hardware transactional memory
US8689221B2 (en) Speculative thread execution and asynchronous conflict events
CN102652309B (zh) 处理资源管理的计算机实现的方法
CN114003288A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
CN107810477A (zh) 解码的指令的重复使用
CN106293894B (zh) 执行事务性功率管理的硬件设备和方法
CN1945525A (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
EP2542973A1 (en) Gpu support for garbage collection
JP2017509083A (ja) バイナリトランザクションベースのプロセッサによるロックエリジョン
US20160147516A1 (en) Execution of complex recursive algorithms
US20140095814A1 (en) Memory Renaming Mechanism in Microarchitecture
US20200225883A1 (en) Parallel key value based multithread machine learning leveraging kv-ssds
CN111095203A (zh) 实时寄存器值的集群间通信
CN1928837A (zh) 使用状态跟踪来检测计算机系统中的错误的方法和系统
US20140115215A1 (en) Tiered locking of resources
CN111352757A (zh) 检测未初始化存储器读取的设备、系统和方法
US11579801B2 (en) Write ordering in SSDs
US20220147359A1 (en) Assignment of microprocessor register tags at issue time

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