流水线调度中混叠寄存器的分配的制作方法

文档序号:6534370阅读:208来源:国知局
流水线调度中混叠寄存器的分配的制作方法
【专利摘要】在实施例中,系统包括处理器,其包括一个或多个核和多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息。该存储器范围信息引用存储器内的一个或多个存储器位点。系统还包括寄存器分配部件,用于将所述混叠寄存器中的每个分配给环的对应操作,其中根据旋转调度进行所述分配,并且混叠寄存器中的一个被分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。系统还包括耦合于处理器的存储器。描述其他实施例并且它们被要求保护。
【专利说明】流水线调度中混叠寄存器的分配

【技术领域】
[0001 ] 实施例涉及流水线调度操作。

【背景技术】
[0002]通常由编译器处理的任务是存储器消歧(memory disambiguat1n),其可包括检测非混叠存储器访问,例如访问不同存储器位点的加载或存储。这些操作可调度成为了更好的指令级并行性而无序运行。相比之下,访问相同存储器位点的存储器操作标记为“混叠(aliased) ”,并且无法被无序调度。
[0003]在编译器优化(例如,软件流水线)中通常包括存储器消歧。软件流水线可以通过使连续迭代的执行重叠而为环利用指令级并行性。然而,连续迭代中操作的执行的重叠可以产生混叠。

【专利附图】

【附图说明】
[0004]图1是根据本发明的实施例用于调度混叠寄存器的系统的框图。
[0005]图2A、B、C图示根据本发明的实施例的混叠寄存器分配方案。
[0006]图3是根据本发明的另一个实施例的混叠寄存器分配方案的图示。
[0007]图4是根据本发明的实施例用于调度混叠寄存器的方法的流程图。
[0008]图5是根据本发明的实施例的处理器的框图。
[0009]图6是根据本发明的实施例包括多个核的处理器的实施例的图示。
[0010]图7是根据本发明的实施例的系统的框图。

【具体实施方式】
[0011]为了在运行时执行的优化,硬件支持可用于完成存储器消歧。在本发明的实施例中,硬件支持可包括寄存器文件(例如,旋转寄存器文件),其包括多个存储器访问寄存器(“混叠寄存器”),这些寄存器可应用于例如环等循环码,其包括要为了多个迭代而执行的多个操作。在实施例中,混叠寄存器可应用于环的软件流水线调度来实行存储器消歧并且在运行时发现混叠。
[0012]例如,在调度阶段期间,环内的存储器访问(例如,加载操作或存储操作,在本文是“操作”)可以假设为没有混叠(“数据猜测”),例如可以假设在存储器访问之间没有依赖性(例如,有序关系)。尽管数据猜测实现更多的并行性(例如,计算资源通过操作的无序处理的高效使用),它也可导致错误。例如,如果存储器访问碰巧彼此混叠(例如,存储器访问被引导到重叠的存储器位点)并且如果在执行调度中存储器访问的顺序与它们在原始环中的顺序不同,则数据猜测是错误的,例如数据猜测失败。为了捕捉将导致混叠的该情况,可以对每个存储器访问分配混叠寄存器,其在执行访问时记录访问的地址(例如,被访问存储器的起始地址和范围)的存储器范围。访问的存储器范围可与所有潜在混置访问的混置寄存器比较并且如果存在匹配,则识别混叠,例如数据猜测的失败。这样的失败可通过例如执行恢复代码来处理。在一些实施例中,恢复代码的执行可导致退回到环之前的迭代,和/或对操作重新排序来消除混叠。
[0013]一般存在两种混叠寄存器:静态和旋转。静态混叠寄存器与旋转混叠寄存器使用起来不同,例如在指令中编码如何比较寄存器方面。为了执行与静态混叠寄存器的比较,静态混叠寄存器的寄存器号可被显式编码。与静态寄存器相比之下,典型地不单独比较旋转混叠寄存器。相反,仅对一个寄存器号编码并且比较所有寄存器,从编码寄存器开始直到编号最大的寄存器。该技术可解决编码但可产生假肯定,例如如果未正确地分配寄存器。
[0014]注意对于旋转混叠寄存器文件,比较可以是“单向的”,例如比较可以是针对编号最大的寄存器的“向上检查”,而不是“向下”。可存在基址指针,其指向混叠寄存器文件。在“旋转”中,基址指针上移,并且从原始到基址指针所指向的当前寄存器,清除所有寄存器。
[0015]本发明的实施例在软件流水线中可使用旋转混叠寄存器。在本文,“寄存器”或“混叠寄存器”通常指“旋转混叠寄存器”。
[0016]图1是根据本发明的实施例用于调度混叠寄存器的系统100的框图。该系统100包括处理器110,其耦合于动态随机存取存储器(DRAM) 180。该处理器110可包括多个核112α、112Γ..112η来执行指令。处理器110可包括寄存器分配逻辑114、指令调度逻辑116、旋转寄存器文件118、混叠检测逻辑120和一个或多个高速缓存存储器(其包括高速缓存122)。在实施例中,寄存器分配逻辑114、指令调度逻辑116和混叠检测逻辑120中的一个或多个可以是软件、硬件、固件或其组合。例如,寄存器分配逻辑114可包括要由执行硬件执行的软件或专用固件或专用电路或其组合。指令调度逻辑116可包括软件、硬件、固件或其组合。例如,指令分配逻辑114可包括要由执行硬件执行的软件或专用固件或专用电路或其组合。
[0017]在操作中,指令调度逻辑116可创建操作调度用于环(例如,对于多个N个迭代要迭代执行的限定操作组)的执行。指令调度逻辑116可调度操作(例如,软件流水线)以便实现可用计算资源的高效利用。
[0018]由于软件流水线,由指令调度逻辑产生的执行调度与在环中规定的操作的执行顺序相比可导致不同的执行顺序。例如,两个操作的环(操作a后跟操作b)可由指令调度逻辑116调度使得对于每个迭代执行操作b,在这之后执行操作a,以便高效利用可用计算资源。
[0019]对于环中的多个迭代中的每个,寄存器分配逻辑114可将旋转寄存器文件118中的一组混叠寄存器中的每个混叠寄存器分配给环中的对应操作。在实施例中,旋转寄存器文件118的每个混叠寄存器可不止一次地被分配,例如,可对连续操作分配混叠寄存器,从而旋转通过多个(例如,有限数量的)混叠寄存器(假设没有混叠寄存器同时被分配给两个操作)。
[0020]每个混叠寄存器可用于将存储器访问数据(例如,一个或多个存储器位点的存储器地址范围)存储在高速缓存122中或DRAM 180中,通过环的对应操作来访问该数据。在实施例中,可由混叠检测逻辑120将混叠寄存器中的一个的内容与旋转寄存器文件118的混叠寄存器中的若干其他的内容比较,来确定是否存在混叠,例如在相同时帧是否存在对共同存储器位点的访问(经由例如加载操作或存储操作)。
[0021]图2A、B、C图示根据本发明的实施例的寄存器分配方案。在图2A中,作为示范性环,伪代码环210包括操作a和操作b。操作a和b两者都是存储器访问,例如加载或存储操作(在本文是“操作”)。
[0022]对于N=3,环210执行3个迭代,例如i=0、l、2。注意在由伪代码210描述的环中,在相同迭代中在操作b之前执行操作a,并且在后续迭代中在所有a操作和所有b操作之前也执行操作a。
[0023]在图2B中,描绘对于环的软件流水线调度220。在软件流水线调度220中,在迭代O内将操作a调度成在操作b执行后执行。在迭代I中,操作a调度成在操作b执行后执行。在迭代2中,操作a调度成在操作b执行后执行。如与环210相比,操作的重新排序可引起混叠,其可通过使用运行时混叠监视来检测。可分配混叠寄存器来实现运行时混叠监视。
[0024]在图2C中,混叠寄存器分配方案230代表根据本发明的实施例的技术方案。X轴232指示时间并且Y轴234指示与对应混叠寄存器关联的寄存器号。条242-250代表操作的“寿命时间”。第一操作的寿命时间可限定为这样的时期,其以第一操作(“生产者操作”)的执行开始并且在执行第二操作时结束,该第二操作可在完成第二操作之前与第一操作混叠。每个寿命时间用对应的生产者操作来标记。例如,寿命时间244在时间t=l处开始(在该时间处开始执行操作b),并且在t=5处结束,其是结束操作a的执行时的时间(例如,迭代O中指令b具有关联的寿命时间244)。
[0025]分配方案230在每个迭代内对环的每个操作分配混叠寄存器(对于N=3,迭代i=0、1、2)。对于环迭代i,分别对a和b的寿命时间分配寄存器2*i和2*i+l。
[0026]例如,在迭代236 (i=0,迭代O)中,在时间轴232上的时间=4处,操作a开始执行。要存储在混叠寄存器O中的操作a的存储器访问地址范围可与编号较高的混叠寄存器中的每个的存储的访问范围比较:从寄存器I到与主动操作关联的编号最大的寄存器,例如寄存器I和3,将这些寄存器在第一迭代236和第二迭代238中分配给操作b。(寄存器2在迭代238中分配给操作a,其要在迭代236中结束操作a的寿命时间242后执行,并且因此未被考虑)。采用该方式,混叠可以通过存储在第一分配混叠寄存器中的存储器访问范围与存储在后续分配的混叠寄存器中的存储的存储器访问范围的比较而动态捕捉。
[0027]注意在时间t=5处,迭代236 (“迭代O”)的寿命时间242和244已经到期,并且因此在t=5处开始,将不进行对于第一迭代236的寿命时间242和244的分配寄存器的内容的额外比较。因此,寄存器O和I可在迭代240 (“迭代2”)中重用,该迭代240在t=5处开始。
[0028]在混叠寄存器分配方案230的示例中,由于例如对于环210的存储器位点的重叠使用,一组四个旋转寄存器(编号为0-3)足以检测混叠实例。如根据流水线调度220所执行的,环210具有迭代间隔(224,以及226) Λ t=2,其是连续迭代的起始之间的时间间隔。寄存器分配方案230中的迭代间隔(260,以及262)也是Λ t=2。
[0029]可以分配混叠寄存器使得总共4个旋转寄存器足以实施比较来检测混叠。对于包括具有更复杂软件流水线方案的超过两个操作的环,可需要更大的旋转寄存器组来检测混叠的每个实例。对于任何N值,有限集合的混叠寄存器(小于N)可在旋转基础上分配,例如在第一混叠寄存器处开始并且继续通过编号最大的混叠寄存器并且循环重复来实现混叠的检测。
[0030]图3是根据本发明的另一个实施例的寄存器分配方案300的图示。寄存器分配300旨在减少混叠寄存器的数量而不改变软件流水线调度。
[0031]时间轴302可度量每个操作a和b的寿命时间。寄存器轴304可指示分配哪个混叠寄存器来存储对于每个操作的对应存储器访问范围(例如,在例如图1的DRAM 180等存储器内的地址范围)。例如,在迭代306 (第O个迭代)中,寄存器O存储与操作a (其具有寿命时间312)关联的存储器访问范围,并且寄存器I存储与操作b (其具有寿命时间314)关联的存储器访问范围。操作a (如在图2的伪代码210中示出的)预计在操作b之前出现。
[0032]为了确保在第一迭代的操作a与b之间不存在混叠,在图3的方案300中,操作b的寿命时间314延伸到操作a的寿命时间312的末端并且混叠寄存器I对于寿命时间314分配给操作b。在寄存器分配300中,迭代中操作a的寿命时间在相同迭代和下一个迭代中在操作b的寿命时间之上,并且对于混叠的检查包括从混叠寄存器O到混叠寄存器I (按旋转混叠寄存器的数字顺序“向上”)。此外,因为迭代306 (“迭代O”)中操作a的寿命时间312在迭代308 (“迭代I”)中操作b的寿命时间318期间发生,寄存器O的内容可与寄存器2的内容比较来确定在寿命时间312期间的操作a与寿命时间318期间的操作b之间是否存在混叠。
[0033]注意寿命时间314在t=5处结束。查看迭代308 (“迭代1”),因为寿命时间314结束并且超过寿命时间314不需要寄存器1,可以看到混叠寄存器I可以用于存储迭代308中所包括的具有寿命时间316的操作a的关联存储器访问范围。虚线324和325指示迭代308 (迭代I)的边界,该迭代308包括具有寿命时间318和分配的寄存器2的操作b的执行,以及具有寿命时间316和分配的寄存器I的操作a的执行。
[0034]从而,可以循环分配寄存器,例如寄存器I可用于在寿命时间314(例如,时间间隔Δ t=l — 5)期间存储迭代306中的操作b的存储器访问范围,并且寄存器I还可在迭代308中用于存储对于在寿命时间316 (例如,时间间隔Λ t=6 — 7)期间的操作a的存储器访问范围。
[0035]迭代310 (“迭代2”)被虚线326和328界定,并且包括使用寄存器O存储操作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中,可循环使用寄存器O、1、2的组,例如寄存器O在寿命时间312 ( Δ t=4 - 5)期间在迭代306 (“迭代O”)中使用并且再次在寿命时间322 ( At=5 — 9)期间在迭代310 (“迭代2”)中使用。
[0036]对于环的软件流水线调度使用混叠寄存器的旋转分配可以视为寄存器分配问题到循环调度问题的变换。每个依赖性(基于操作的执行顺序的操作的关系)可视为具有依赖距离,例如依赖操作之间的迭代次数。例如,在图2和3中,存在两个依赖性:
I)具有距离(例如,迭代之间的距离)零(例如,相同迭代)的a — b,其意指要对相同迭代中操作a的寿命时间分配相同或比操作b的寿命时间编号要小的寄存器。
[0037]2)具有距离一(相邻迭代)的a — b,其意指要对迭代中操作a的寿命时间分配相同或比相邻迭代中操作b的寿命时间编号要小的寄存器,使得旋转混叠寄存器将按旋转寄存器的数字“向上”顺序来检查。
[0038]在本发明的实施例中,基于依赖图,“对于寿命时间的软件流水线调度”可以通过将寿命时间视为操作而创建,并且软件流水线算法可以应用于调度寿命时间。
[0039]可以制定调度方法,从而将寄存器分配问题制定为将寿命时间“调度”到寄存器内。例如,让a(i)成为环迭代i中的操作a,并且让r (a, i)成为由调度分配给它的寄存器。
[0040]调度遵从下列约束:
(I)模约束:对于所有i,r (a, i)= r (a, 0)+i*C。在这里C是要由调度器确定的常数。即,操作的寿命时间从调度中的寄存器方面来看在恒定时期中出现。例如,在图2的框230中,操作a的寿命时间在恒定时期C=2 (在寄存器O和2中)中出现;在图3中,操作a的寿命时间在恒定时期C=I (在寄存器O和I中)中出现。
[0041](2)依赖约束:假设a(i)和b(i+d)(其中d彡O)可混叠,并且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的距离和O延迟(从寄存器方面来看))来模型化。
[0042](3)资源约束:如果两个操作的寿命时间在时间上重叠,无法对它们分配相同的寄存器。
[0043]传统的软件流水线具有两个维度:资源和时间。它在遵从所有依赖和资源约束的情况下以恒定周期(初始间隔,“II”)将操作调度在适当时间。在本文呈现的寄存器分配中,寄存器可采用与“时间”相同的方式来对待,时间可视为“资源”,寿命时间可视为“操作”,并且混叠检查视为“依赖”。
[0044]根据本发明的实施例,在操作上,可考虑下列考量来达成调度:
1.依赖建立。
[0045]具有距离d (a与b之间的迭代次数)的依赖a — b根据上文的依赖约束添加到依赖图,d=0的时候除外,但a在相同迭代中按原始执行顺序在b之后。
[0046]此外,可以添加下列依赖来避免假肯定,只要它在依赖图中未完成局部循环即可,其中局部循环由距离全部是O的依赖组成:假设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的距离和延迟为I的依赖a — b而进行。
[0047]假肯定可以通过添加下列种类的依赖而进一步最小化,只要它们在依赖图中未完成局部循环即可:对于来自相同迭代的操作a和b,可以存在a从不检查b的情况。可以添加具有等于O的距离和延迟为I的依赖b — a。
[0048]2.循环调度 (I)仅基于局部依赖来调度寿命时间。即,仅考虑距离是O的依赖并且忽略所有其他。这产生对于单环迭代中的寿命时间的调度。
[0049]可以采用各种策略来对要调度的寿命时间定优先级。在实施例中,可采用叫作“首先适应(first-fit)”的简单调度策略:如果超过一个寿命时间准备被调度,用最早起始时间对这一个定优先级。
[0050]假设每个环迭代的寿命时间具有相同调度。考虑忽略的依赖性的情况下,使两个连续环迭代的寿命时间的调度重叠。这产生更紧凑的调度,其可以在迭代之间重用寄存器。该局部调度和压缩方法连同首先适应策略可有效地减少假肯定。
[0051]3.处理未添加的依赖以在依赖建立(上文)中避免循环形成。对于省略的依赖a — b中的每个,检查来确定它是否被调度遵从。如果否的话,使b移到静态混叠寄存器。
[0052]4.寄存器分配和旋转。寄存器分配可以采取平坦时间-空间图,其具有无限数量的寄存器。将图中的寄存器号映射到旋转寄存器文件中的那些。旋转指令也可以每II个循环插入环的软件流水线调度内,其可以每II个循环“清除” C数量的死寿命时间。
[0053]图4是根据本发明的实施例用于分配混叠寄存器的方法的流程图400。在框402处,可在寿命时间之间建立依赖。继续到框404,执行循环调度,其包括根据建立的依赖和资源约束来调度寿命时间到寄存器。前进到框406,可处理在框402中未考虑的依赖,例如通过使用静态混叠寄存器。前往框408,可对环的操作分配多个混叠寄存器,例如,可在每个迭代中对环的每个操作分配混叠寄存器。可循环分配混叠寄存器,其中每个寄存器对于相应操作的寿命时间而分配,并且每个寄存器可存储由相应操作访问的存储器地址的指示。在一些实施例中,分配给第一迭代中的第一操作的至少一个寄存器可被在第一操作的关联寿命时间已经到期后开始的连续迭代中的另一个操作重用。从而,两个连续环迭代的寿命时间可导致紧凑的调度,其可重用迭代之间的寄存器。继续到框410,旋转清除指令可添加到调度,被执行以便清除(例如,擦除)与结束的寿命时间关联的混叠寄存器。
[0054]现在参考图5,示出根据本发明的实施例的处理器的框图。如在图5中示出的,处理器500可以是多核处理器,其包括核域510中的多个核510a_510n。这些核中的一个或多个可包括指令调度逻辑、混叠寄存器(例如,旋转寄存器文件)和寄存器分配逻辑,用于根据本发明的实施例对环的操作分配混叠寄存器。
[0055]核可经由互连515而耦合于系统代理或非核520,其包括各种部件。如看到的,非核520可包括共享高速缓存530,其可以是最后级别的高速缓存并且包括高速缓存控制器532。另外,非核可包括集成存储器控制器540和各种接口 550。
[0056]进一步参考图5,处理器500可与系统存储器560通信,例如经由存储器总线。另夕卜,通过接口 550,可以连接到各种片外部件,例如外围装置、大容量存储等。尽管在图5的实施例中用该特定实现示出,本发明的范围在该方面不受限制。
[0057]参考图6,图示包括多个核的处理器的实施例。处理器600包括任何处理器或处理装置,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协同处理器、片上系统(SOC)或执行代码的其他装置。在一个实施例中,处理器600包括至少两个核-核601和602,其可包括不对称核或对称核(图示的实施例)。然而,处理器600可包括任何数量的处理元件,其可以是对称或不对称的。
[0058]在一个实施例中,处理元件指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、过程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持对于处理器的状态(例如执行状态或架构状态)的任何其他元件。也就是说,在一个实施例中,处理元件指能够独立地与代码(例如软件线程、操作系统、应用或其他代码)关联的任何硬件。物理处理器典型地指集成电路,其潜在地包括任何数量的其他处理元件,例如核或硬件线程。
[0059]核通常指定位在能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。与核相比之下,硬件线程典型地指定位在能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,在共享某些资源并且其他专用于架构状态时,硬件线程和核的术语之间的界线重叠。然而通常,核和硬件线程由操作系统视为个体逻辑处理器,其中操作系统能够独立调度每个逻辑处理器上的操作。
[0060]物理处理器600 (如在图6中图示)包括两个核,核601和602。在这里,核601和602视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核601包括无序处理器核,而核602包括有序处理器核。然而,核601和602可独立地从任何类型的核选择,例如本地核、软件管理核、适于执行本地指令集架构(ISA)的核、适于执行转换ISA的核、联合设计的核或其他已知核。再进一步论述,因为核602中的单元采用相似方式操作,在核601中图示的功能单元在下文进一步详细描述。
[0061]如描绘的,核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的部分等其他资源潜在地完全共享。
[0062]处理器600通常包括其他资源,其可完全被共享、通过分区而共享或被处理元件专用/专用于处理元件。在图6中,图示具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意处理器可包括或省略这些功能单元中的任何单元,以及包括未描绘的任何其他已知的功能单元、逻辑或固件。如图示的,核601包括简化的代表性无序(000)处理器核。但在不同的实施例中可利用有序处理器。000核包括用于预测要执行/采取的分支的分支目标缓冲器620和用于存储对于指令的地址转换条目的指令转换缓冲器(1-TLB)620。
[0063]核601进一步包括解码模块625,其耦合于提取单元620来对提取的元素解码。在一个实施例中,提取逻辑包括分别与线程槽601a、601b关联的个体定序器。核601通常与第一 ISA关联,该第一 ISA限定/规定在处理器600上可执行的指令。是第一 ISA的部分的机器代码指令通常包括指令(称为操作码)的一部分,其引用/规定要执行的指令或操作。解码逻辑625包括电路,其从它们的操作码识别这些指令并且在流水线上传递解码的指令用于处理,如由第一 ISA限定的。例如,在一个实施例中,解码器625包括这样的逻辑,其设计成或适于识别特定指令,例如事务指令。由于由解码器625识别,架构或核601采取特定、预定义动作来执行与合适的指令关联的任务。重要地是注意本文描述的任务、块、操作和方法中的任一个可响应于单个或多个指令而执行,这些指令中的一些可以是新的或旧的指令。
[0064]在一个示例中,分配器和重命名块630包括用于保留资源(例如寄存器文件)来存储指令处理结果的分配器。然而,线程601a和601b潜在地能够无序执行,其中分配器和重命名块630还保留其他资源(例如重排序缓冲器)来跟踪指令结果。单元630还可包括寄存器重命名器,用于将程序/指令参考寄存器重命名为处理器600内部的其他寄存器。重排序器/引退单元635包括例如上文提及的重排序缓冲器、加载缓冲器和存储缓冲器等部件,用于支持无序执行和稍后无序执行的指令的有序引退。
[0065]在一个实施例中,调度器和执行单元块640包括调度器单元,用于调度执行单元上的指令/操作。例如,调度器单元可根据流水线调度来调度环的操作。还包括与执行单元关联的寄存器文件来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
[0066]核601和602中的一个或二者可包括对应的混叠寄存器文件(642或646),和对应的寄存器分配逻辑(644或648),用于根据本发明的实施例对环中的多个操作中的每个分配对应混叠寄存器文件(642或646)的混叠寄存器。混叠寄存器可用于根据本发明的实施例来识别混叠。
[0067]较低级数据高速缓存和数据转换缓冲器(D_TLB)651耦合于执行单元640。D-TLB651存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分成多个虚拟页面。
[0068]在这里,核601和602共享对更高级或更远高速缓存610的访问,该更高级或更远高速缓存610高速缓存最近提取的元素。注意更高级或更远指的是增加或更远离执行单元的高速缓存级别。在一个实施例中,更高级高速缓存610是最后级别的数据高速缓存-在处理器600上存储器等级结构中最后的高速缓存-例如第二或第三级数据高速缓存。然而,更高级高速缓存610不这样受限制,因为它可与指令高速缓存关联或包括指令高速缓存。跟踪高速缓存-指令高速缓存类型-相反可在解码器625后耦合来存储最近解码的痕迹(trace)ο
[0069]在描绘的配置中,处理器600还包括总线接口模块605。历史上,控制器670已经包括在处理器600外部的计算系统中。在该情形中,总线接口 605与处理器600外部的装置通信,例如系统存储器675、芯片集(通常包括用于连接到存储器675的存储器控制器中枢,和连接外围装置的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。并且在该情形中,总线605可包括任何已知互连,例如多点总线、点到点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差动总线和GTL总线。
[0070]存储器675可专用于处理器600或与系统中的其他装置共享。存储器675类型的共同示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知存储装置。注意装置680可包括耦合于存储器控制器中枢的图形加速器、处理器或卡、耦合于I/O控制器中枢的数据存储、无线收发器、闪存装置、音频控制器、网络控制器或其他已知装置。
[0071]然而,注意在描绘的实施例中,控制器670图示为处理器600的部分。近来,因为更多的逻辑和装置在单个芯片(die)(例如S0C)上集成,这些装置中的每个可包含在处理器600上。例如,在一个实施例中,存储器控制器中枢670在与处理器600相同的封装和/或芯片上。在这里,核的一部分(核上部分)包括一个或多个控制器670,用于与例如存储器675或图形装置680等其他装置接口。包括用于与这样的装置接口的互连和控制器的配置通常称为核上(或非核配置)。作为示例,总线接口 605包括环形互连,其具有用于与存储器675接口的存储器控制器和用于与图形装置680接口的图形控制器。再者,在SOC环境中,甚至更多的装置(例如网络接口、协同处理器、存储器675、图形装置680和任何其他已知计算机装置/接口)可在单个芯片或集成电路上集成来提供具有高功能性和低功耗的小形状因子。
[0072]实施例可在许多不同的系统类型中实现。现在参考图7,示出根据本发明的实施例的系统的框图。如在图7中示出的,多处理器系统700是点到点互连系统,并且包括经由点到点互连750而耦合的第一处理器770和第二处理器780。如在图7中示出的,处理器770和780中的每个可以是多核处理器,其包括第一和第二处理器核(即,处理器核774a和774b以及处理器核784a和784b),但潜在地在处理器中可存在多得多的核。
[0073]仍参考图7,第一处理器770进一步包括存储器控制器中枢(MCH) 722和点到点(P-P)接口 776和778。相似地,第二处理器780包括MCH 782和P-P接口 786和788。如在图7中示出的,MCH 722和782使处理器耦合于相应的存储器,即存储器732和存储器734,其可以是本地附连到相应处理器的系统存储器(例如,DRAM)的部分。根据本发明的实施例,处理器770和780中的每个可包括寄存器文件(未示出)中的混叠寄存器和寄存器分配逻辑(未示出),用于对环的多个存储器访问操作中的每个分配混叠寄存器。根据本发明的实施例,混叠寄存器可用于检测可由于环的操作的流水线调度而出现的混叠。
[0074]第一处理器770和第二处理器780可分别经由P_P互连762和754而耦合于芯片集790。如在图7中示出的,芯片集790包括P-P接口 794和798。
[0075]此外,芯片集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
[0076]下列示例关于另外的实施例。
[0077]在第一示例中,系统包括处理器,其包括一个或多个核。处理器还包括寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息。该存储器范围信息引用存储器内的一个或多个存储器位点。处理器还包括寄存器分配逻辑,用于将混叠寄存器中的每个分配给环的对应操作。可根据旋转调度进行分配并且将混叠寄存器中的至少一个分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。系统还包括耦合于处理器的存储器。可选地,处理器进一步包括指令调度逻辑,用于根据流水线调度来调度环的操作,其中环的至少一个操作要根据与环的操作的顺序不同的执行调度来执行。可选地,一个或多个核中的一个可执行存储在第一混叠寄存器中的数据与存储在混叠寄存器中的至少一个其他中的数据的比较来确定是否存在混叠。可选地,第一混叠寄存器可持续第一寿命时间地分配给第一操作并且第一混叠寄存器可持续第二寿命时间地分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间在环的第一迭代内并且第二寿命时间在环的第二迭代内,该第二迭代是依次挨着第一迭代的迭代。可选地,寄存器分配逻辑可执行旋转清除指令来擦除关联寿命时间到期的每个混叠寄存器的内容。
[0078]在第二示例中,至少一个计算机可读介质包括指令,其在被执行时使系统能够根据对于环的多个迭代的旋转序列相继将旋转寄存器文件的多个混叠寄存器中的每个分配给环的对应操作,其中每个混叠寄存器存储由对应操作访问的一个或多个存储器位点的指示并且混叠寄存器中的一个被分配给环的第一迭代中的第一操作和环的后续迭代中的第二操作。至少一个计算机可读介质还包括指令,用于通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。第一混叠寄存器可对于第一寿命时间分配给第一操作并且第一混叠寄存器对于第二寿命时间分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间和第二寿命时间是环中的依次相邻迭代。可选地,第一寿命时间和第二寿命时间在环的非相邻迭代中。可选地,至少一个计算机可读介质包括额外指令,其在被执行时使系统能够对于操作以及基于排序关系对于相同或不同迭代内的另一个操作分配寿命时间并且对于寿命时间的持续时间对操作分配对应混叠寄存器。可选地,至少一个计算机可读介质进一步包括指令,其使系统能够在持续时间到期时对另一个迭代中的另一个操作重新分配对应混叠寄存器。可选地,至少一个计算机可读介质进一步包括指令,其使系统能够响应于排序关系的存在来检查混叠,其中该排序关系响应于以下而被指示:根据流水线调度,调度的环的第一操作在环的第二操作之后执行;以及环中环的第一操作在环的第二操作之前可执行这一指示。
[0079]在第三示例中,方法包括根据对于环的多个迭代的旋转序列相继将寄存器文件的多个混叠寄存器中的每个分配给环的对应操作,包括对环的第一迭代中的第一操作和环的后续迭代中的第二操作分配混叠寄存器中的一个,其中每个混叠寄存器存储由对应操作访问的存储器位点的指示。方法还包括通过比较分配的混叠寄存器中的至少一个的内容与一个或多个其他分配的混叠寄存器的内容来确定是否存在混叠条件。可选地,方法包括将第一混叠寄存器对于第一寿命时间分配给第一操作以及将第一混叠寄存器对于第二寿命时间分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间和第二寿命时间是环中的依次相邻迭代。可选地,方法包括对于第一寿命时间将第一混叠寄存器分配给环的第一迭代中的第二操作以及对于第二寿命时间将第一混叠寄存器分配给环的第二迭代的第一操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,方法包括将对于操作分配寿命时间以及基于排序关系分配寿命时间给相同迭代或不同迭代内的另一个操作,以及对于该寿命时间的持续时间将对应混叠寄存器分配给操作。可选地,方法包括在该持续时间到期时对另一个迭代中的另一个操作重新分配对应混叠寄存器。可选地,方法包括通过比较分配给环的第一迭代的第一混叠寄存器的内容与对于与第二操作关联的第二寿命时间分配给第二操作的第二混叠寄存器的内容来确定在环的第一迭代中是否存在混叠,其中第二寿命时间由第一操作的第一调度执行时间相对于第二操作的第二调度执行时间而确定。可选地,方法包括响应于排序关系的存在来检查混叠,其中该排序关系响应于以下而指示:根据流水线调度,调度的环的第一操作在环的第二操作之后执行;以及在环中该环的第一操作在环的第二操作之前可执行这一指示。
[0080]在第四示例中,设备配置成执行第三示例的方法,其包括选项中的一个或多个。
[0081]在第五示例中,处理器包括:一个或多个核;寄存器文件,其包括多个混叠寄存器,用于存储与环的多个操作关联的存储器范围信息,其中该存储器范围信息参考存储器内的一个或多个存储器位点;和寄存器分配逻辑,用于对环的对应操作分配混叠寄存器中的每个。可根据旋转调度进行分配,其中对环的第一迭代中的第一操作和环的后续迭代中的第二操作分配混叠寄存器中的至少一个。系统还包括耦合于处理器的存储器。可选地,处理器进一步包括指令调度逻辑,用于根据流水线调度来调度环的操作,其中环的至少一个操作要根据与环的操作的顺序不同的执行调度来执行。可选地,一个或多个核中的一个执行存储在第一混叠寄存器中的数据与存储在混叠寄存器中的至少一个其他中的数据的比较来确定是否存在混叠。可选地,第一混叠寄存器对于第一寿命时间被分配给第一操作并且第一混叠寄存器对于第二寿命时间被分配给第二操作,其中第一寿命时间和第二寿命时间是非重叠时期。可选地,第一寿命时间在环的第一迭代内并且第二寿命时间在环的第二迭代内,该第二迭代是依次挨着第一迭代的迭代。可选地,寄存器分配逻辑进一步执行旋转清除指令来擦除关联寿命时间到期的每个混叠寄存器的内容。
[0082]实施例可在许多不同类型的系统中使用。例如,在一个实施例中,通信装置可以设置成执行本文描述的各种方法和技术。当然,本发明的范围不限于通信装置,而相反其他实施例可以针对用于处理指令的其他类型的设备,或包括指令的一个或多个机器可读介质,这些指令响应于在计算装置上执行而促使该装置实施本文描述的方法和技术中的一个或多个。
[0083]实施例可在代码中实现并且可存储在非暂时性存储介质上,该非暂时性存储介质具有存储在其上的指令,其可以用于对系统编程来执行指令。存储介质可包括但不限于:任何类型的盘,这些盘包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(⑶-ROM)、压缩盘可重写(⑶-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPR0M)、闪速存储器、电可擦除可编程只读存储器(EEPROM);磁或光卡或适合于存储电子指令的任何其他类型的介质。
[0084]尽管已经关于有限数量的实施例描述本发明,本领域内技术人员将意识到从其处的许多修改和改动。规定附上的权利要求涵盖所有这样的修改和改动,它们落入本发明的真正精神和范围内。
【权利要求】
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所述的处理器,其进一步包括指令调度逻辑,用于根据流水线调度来调度所述环的操作,其中所述环的至少一个操作根据与所述环的操作的顺序不同的执行调度来执行。
【文档编号】G06F9/38GK104412233SQ201380033509
【公开日】2015年3月11日 申请日期:2013年5月30日 优先权日:2013年5月30日
【发明者】H.荣, C.王, H.朴, Y.吴 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1