利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令...的制作方法_4

文档序号:9438871阅读:来源:国知局
线程I分配可用,直到在该点处完成线程分配的新的动态比例。例如,离开最近退出的线程2块的3个将返回池中用于分配,以用线程I而不是线程2,使得线程I与线程2的比例为75%: 25%。
[0107]应注意到,在管线前端的线程2块的推迟可以要求从管线前端冲刷那些块,如果没有硬件装置对其进行旁路(例如,通过线程I块经过被推迟的线程2块)。
[0108]图26图解了根据本发明的一个实施例的双分派过程。多分派一般包括多次分派块(其中具有多个指令),以便不同的指令块能够在每次经过执行单元时执行。一个例子是地址计算指令的分派由消耗结果数据的后续的分派跟随。另一个例子将是浮点操作,其中第一部分作为固定点操作执行并且执行第二部分,以通过执行取整、标志生成/计算、指数调节等来完成操作。块作为单个实体被自动分配、提交并且退回。
[0109]多分派的主要益处在于它避免了将多个单独的块分配到机器窗口,因此,使得机器窗口有效增大。更大的机器窗口意味着更多的优化和重新排序的机会。
[0110]现在看图26的左下部,描述了指令块。该块不能在单个循环中被分派,因为从高速缓存/内存中加载地址计算和加载返回数据之间存在延迟。该块被第一次分派,它的中间结果作为暂态被保留(它的结果在运行中被传递到第二分派并对于结构状态不可见)。第一分派发送在地址计算以及LA分派中使用的两个元件I和2。第二分派发送元件3和4,其是根据从高速缓存/内存中加载返回数据的加载数据的执行部分。
[0111]现在看图26的右下部,描述了浮点相乘累加操作。在这种情况中,其中硬件没有足够的进入源带宽以在单个阶段分派操作,则使用双分派,如相乘累加图中示出的。如所示,第一分派是固定点相乘。如所示,第二分派是浮点加法取整。当这些被分派的指令都执行时,它们有效地执行了浮点相乘/累加。
[0112]图27图解了根据本发明的一个实施例的双分派暂态相乘累加。如图27所示,第一分派是整数32位相乘,并且第二分派是整数累积相加。在第一分派和第二分派(相乘的结果)之间通信的状态是暂态并且体系架构上不可见。在一种实现方式中暂态存储可以保留多于一个乘数的结果并且能够给它们加标签,以识别对应的相乘累加对,因此,允许多个相乘累加对混合并以任意方式被分派(例如,交叉存取等)。
[0113]注意到,其他指令可以将这个相同的硬件用于它们的实现方式(例如,浮点等)。
[0114]图28图解了根据本发明的一个实施例的体系架构可见状态的双分派的相乘相加。第一分派是单精确的相乘,并且第二分派是单精确的相加。在此实现方式中,在第一分派和第二分派(例如,相乘的结果)之间通信的状态信息体系架构上可见,因为此存储是体系架构状态寄存器。
[0115]图29示出了根据本发明的一个实施例的、用于在分组的执行单元过程上执行的指令块的获取和形成的总体示意图。本发明的实施例利用通过硬件或动态转换器/JIT获取指令并形成指令块的过程。指令块中的指令被组织,其结果是指令块中较早的指令提供指令块中后来指令的源。这在指令块中由圆点箭头示出。这个特性使得指令块在执行块的堆积的执行单元上有效执行。指令也可以被分组,即使它们可以并行执行,例如,如果它们分享相同的源(未在此图中明确示出)。
[0116]在硬件中形成指令块的一个可替代方式是在软件中形成它们(静态地或在运行时),在其中形成指令对、三个一组、四个一组等。
[0117]指令分组功能的其他实现方式可以在共同转让的美国专利8,327,115中找到。
[0118]图30示出了根据本发明的一个实施例的、指令分组的示范性示意图。在图30的实施例中示出了具有第三辅助操作的两个指令。图31的左侧指令块包括上半块/I槽和下半块/I槽。从顶端下来的垂直箭头表示进入块中的源,而从底端向下的垂直箭头表示回到内存的目标。从图3左侧开始向右侧行进,说明了可能的不同的指令组合。在这种实现方式中,每个半块可以接收三个源并且可以传递两个目标。OPl和0P2是正常操作。辅助的Op是辅助操作,例如逻辑、转移、移动、记号扩展、分支等。将指令块分成两个半块的好处是允许每个半块自己独立地分派或者否则的话基于(或者为了端口利用,或者由于资源约束)依赖方案动态的结合成一个块,因此,能够更好地利用执行时间,与此同时两个半块与一个块对应允许机器转移两个半块的复杂性,以像一个块一样管理(即分配和退回处)。
[0119]图31示出了根据本发明的一个实施例的、指令块堆中的半块对如何映射到执行块单元。如在执行块上示出的,每个执行块具有两个槽一槽I和槽2。目标是将块映射到执行单元上,使得第一半块在槽I上执行并且第二半块在槽2上执行。目标是如果每个半块的指令组不依赖于另一个半块,则允许两个半块独立分派。从顶端开始进入执行块的成对的箭头是两个32位字的源。离开执行块向下的成对箭头是两个32位字的目标。图31从左到右,示出了指令的不同的示范性组合,其能够被堆叠到执行块单元上。
[0120]图31的顶端概述了半块对如何在整块上下文中或任何半块的上下文中执行。每个S执行块具有两个槽/半块并且半块/执行槽的每一个执行或者单个、一对或三个一组的操作。有四种类型的块执行类型。第一个是并行半块(一旦每个半块自己的源准备好,其允许每个半块独立执行,但是如果两个半块同时准备好,两个半块仍能够作为一个块在一个执行单元上执行)。第二个是原子并行半块(其涉及可以并行执行的半块,因为两个半块间没有依赖关系,但它们被迫作为一个块一起执行,因为在两个半块之间共享的源使得两个半块首选地或必须地在每个执行块可用的源的约束下原子级一起执行)。第三个类型是原子串行半块S(其要求第一半块通过具有或没有中间存储的临时转送将数据转送给第二半块)。第四种类型是顺序半块(如在双分派中),其中第二个半块依赖于第一个半块并且在比第一个靠后的循环中被分派,并且通过为依赖方案跟踪的外部存储转送数据,这类似于双分派情况。
[0121]图32示出了根据本发明的一个实施例的、描述了中间指令块结果存储作为第一级寄存器文件的示意图。每组寄存器代表指令块(代表两个半块),其中32位结果以及64位结果都能够通过使用两个32位寄存器得到支持,以支持一个64位寄存器。每块存储假设了虚拟块存储,其意味着来自不同块的两个半块可以写入相同的虚拟块存储中。两个半块的组合的结果存储组成一个虚拟块存储。
[0122]图33示出了根据本发明的一个实施例的奇数/偶数端口调度器。在这个实现方式中,结果存储是不对称的。一些结果存储是每半块三个64位结果寄存器,而其他是每半块一个64位结果寄存器,然而,可替代的实现方式可以利用每半块对称的存储,并且此外也可以如图32中描述的利用64位和32位分区。在这些实施例中,和按照每块分配相比存储按照每半块分配。这个实现方式通过使用它们如奇数或偶数减少了分派所需的端口数目。
[0123]图34示出了图33的更加详细的版本,其中示出了四个执行单元,其从调度器阵列接收结果并且将输出写入临时寄存器文件部分。端口以偶数以及奇数间隔附接。调度阵列的左侧示出了块号并且右侧示出了半块号。
[0124]每个内核具有进入调度阵列的偶数和奇数端口,其中每个端口与奇数或偶数的半块位置相连。在一种实现方式中,偶数端口和与它们对应的半块可以与奇数端口和与它们对应的半块处于不同的内核中。在另一种实现方式中,奇数和偶数端口将在此图示出的多个不同内核间分配。如名称为“executing instruct1n sequence code blocks by using
VIRTUAL CORES INSTANTIATED BY PARTIT1NABLE ENGINES”、由 Mohammad Abdallah 于2012年3月23日提交、序列号为13428440、其在此处全部并入本申请的之前更早提交的普通转让专利申请所描述的,内核可以是物理内核或虚拟内核。
[0125]在块的某一类型中,块的一半可以独立于块的另一半被分派。在块的其他类型中,块的两个半块都需要同时被分派到相同的执行块单元。仍然在块的其他类型中,块的两个半块需要顺序分派(第二个半块在第一个半块之后)。
[0126]图35示出了根据本发明的一个实施例的、描述了访客标志体系架构仿真的示意图。图35的左侧示出了具有五个标志的集中式标志寄存器。图35的右侧示出了具有分布式标志寄存器的分布式标志体系架构,其中标志在寄存器自身之中分配。
[0127]在体系架构仿真期间,对于分布式标志体系架构,必须对集中式访客标志体系架构的行为进行仿真。分布式标志体系架构也可以通过利用与关联于数据寄存器的标志域相对的多个独立标志寄存器实现。例如,数据寄存器可以实现为RO到R15,而独立的标志寄存器可以实现为H)到F3。在这种情况中的那些标志寄存器不直接与数据寄存器关联。
[0128]图36示出了根据本发明的一个实施例的、说明了机器的前端、调度器以及执行单元以及集中式标志寄存器的示意图。在此实现方式中,前端基于它们更新访客指令标志的方式对进来的指令进行归类。在一个实施例中,访客指令被归类成4本地指令类型T1、T2、Τ3和Τ4。Τ1-Τ4是表示每个访客指令类型更新哪些标志域的指令类型。访客指令类型基于它们的类型更新不同的访客指令标志。例如,逻辑访客指令更新Tl本地指令。
[0129]图37示出了由本发明的实施例实现的集中式标志寄存器仿真过程的示意图。图37中的参与者包括最新更新的类型表、重命名的表扩展、物理寄存器以及分布式标志寄存器。现在图37由图38的流程图描述。
[0130]图38示出了在访客设置中仿真集中式标志寄存器表现的过程3800的步骤的流程图。
[0131]在步骤3801中,前端/动态转换器(硬件或软件)基于它们更新访客指令标志的方式对进来的指令进行归类。在一个实施例中,访客指令被归类到四个标志体系架构类型Τ1、Τ2、Τ3和Τ4中。Τ1-Τ4是表示每个访客指令类型更新哪些标志域的指令类型。访客指令类型基于它们的类型更新不同的访客指令标志。例如,逻辑访客指令更新Tl类型标志,转移访客指令更新Τ2类型标志,算法访客指令更新Τ3类型标志以及特殊访客指令更新Τ4类型标志。应注意,访客指令可以是体系架构指令表示,而本地指令可以在机器内部执行(例如,微码)。替代地,访客指令可以是来自仿真体系架构(例如,x86、java、ARM码等)的指令。
[0132]在步骤3802中,
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1