利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令 ...的制作方法
【专利说明】利用具有奇存裔视图、源视图、指令视图以及多个注册I旲板的微处理器体系架构执行指令块的方法
[0001] 本申请要求共同未决的、共同转让的、分配了序列号:61/799,902、名称为“AMETHOD FOR EXECUTING BLOCKS OF INSTRUCT1NS USING A MICROPROCESSOR ARCHITECTUREHAVING A REGISTER VIEW, SOURCE VIEW, INSTRUCT1N VIEW, AND A PLURALITY OF REGISTERTEMPLATES”、由Mohammad A.Abdallah于2013年3月15日提交的美国临时申请的权益,其全部并入本申请。
_2]相关串请交叉引用
[0003]本申请涉及共同未决的、共同转让的序列号:2009/0113170、名称为“APPARATUSAND METHOD FOR PROCESSING AN INSTRUCT1N MATRIX SPECIFYING PARALLEL INDEPENDENTOPERAT1NS”、申请人为Mohammad A.Abdallah于2007年4月12日提交的美国专利申请,其全部并入本申请。
[0004]本申请涉及共同未决的、共同转让的序列号:2010/0161948、名称为“APPARATUSAND METHOD FOR PROCESSING COMPLEX INSTRUCT1N FORMATS IN A MULTITHREADEDARCHITECTURE SUPPORTING VAR1US CONTEXT SWITCH MODES AND VIRTUALIZAT1NSCHEMES”、申请人为Mohammad A.Abdallah于2007年11月14日提交的美国专利申请,其全部并入本申请。
技术领域
[0005]本发明主要涉及数字计算机系统,尤其是涉及选择包括指令序列的指令的系统和方法。
【背景技术】
[0006]处理器需要处理依赖的或者完全独立的多个任务。这种处理器的内部状态通常由在程序执行的每个特定实例中具有不同值的寄存器组成。在程序执行的每个实例中,内部状态图像被称为处理器的体系体系架构状态。
[0007]当将代码执行切换到运行另一个函数(例如,另一个线程、进程或程序),则机器/处理器的状态必须进行保存,以便新的函数能够利用内部寄存器建立其新的状态。一旦新的函数终止,则可以丢弃它的状态,并且恢复以前的上下文状态且重新开始执行。这样的转换过程被称为上下文切换并且通常包括数十个或数百个循环,尤其是利用大量的寄存器(例如,64、128、256)和/或乱序执行的现在体系架构。
[0008]在线程感知硬件体系架构中,对于硬件来说支持有限数量的硬件支持的线程的多个上下文状态是正常的。在这种情况下,对每个支持的线程,硬件复制所有的体系架构状态元素。这消除了执行新线程时上下文切换的需求。然而,这仍然有多个缺陷,即在硬件支持每个附加的线程的面积、功率以及复制所有体系架构状态元素(即寄存器)的复杂性。此夕卜,如果软件线程的数目超过明确支持的硬件线程数目,则仍然必须执行上下文切换。
[0009]由于在需要大量线程的细粒度的基础上需要并行化,这变得普遍。具有双倍的上下文状态硬件存储的硬件线程感知体系架构不利于非线程软件代码并且对线程化的软件仅减少上下文切换的次数。然而,那些线程通常为了粗粒度并行化而建造,并且开始和同步导致了大量软件开销,远离细粒度并行化,例如函数调用和循环并行执行,没有有效的线程开始/自动产生。这种所描述的开销伴随着使用art编译器的状态的这样的代码的自动并行化或者用于不明确/易于并行化/线程化的软件代码的用户并行技术的困难。
【发明内容】
[0010]在一个实施例中,本发明实现为利用具有寄存器视图、源视图、指令视图以及多个寄存器模板的微处理器体系架构执行指令块的方法。该方法包括,利用全局前端接收进来的指令序列;将指令分组以形成指令块;使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;使用寄存器视图数据结构,其中寄存器视图数据结构存储了对应于指令块的目标;使用源视图数据结构,其中源视图数据结构存储了对应于指令块的源;并且使用指令视图数据结构,其中指令视图数据结构存储了对应于指令块的指令。
[0011]前述是个概要并且因此必然包含细节的简单化、归纳化和省略。因此,本领域技术人员要领会,该
【发明内容】
仅仅是说明性的并且不意图以任何方式限制。其他方面,创造性的特征以及本发明的优点,仅由权利要求限定,在下面详细解释的非限定的详细说明中变得显然。
【附图说明】
[0012]本发明以举例的方式进行说明,并且不以限制的方式,随附的附图中的数字及其中相同的引用号涉及相同的元件。
[0013]图1示出了利用寄存器模板将指令分组成块并且跟踪指令间的依赖关系的过程的总体示意图。
[0014]图2示出了根据本发明的一个实施例的,寄存器视图、源视图以及指令视图的总体示意图。
[0015]图3示出了根据本发明的一个实施例的、说明了示范性的寄存器模板以及通过寄存器模板中的信息如何对源视图进行填充的示意图。
[0016]图4示出了说明源视图内依赖广播的第一实施例的示意图。在这个实施例中,每栏包括指令块。
[0017]图5示出了说明源视图内依赖广播的第二实施例的示意图。
[0018]图6示出了根据本发明的一个实施例的、说明了选择准备就绪的指令块用于从提交指针开始的分派以及广播对应的端口分配的示意图。
[0019]图7示出了根据本发明的一个实施例的、用于实现图6中描述的选择器阵列的加法器树结构。
[0020]图8示出了更加详细的选择器阵列加法器树的示范性逻辑。
[0021]图9示出了根据本发明的一个实施例的、用于实现选择器阵列的加法器树的并行实现方式。
[0022]图10示出了根据本发明的一个实施例的、说明如何利用进位保存加法器实现图9中的加法器X的示范性示意图。
[0023]图11示出了根据本发明的一个实施例的、掩膜准备好的位用于从提交指针开始调度以及利用选择器阵列加法器的掩膜实施例。
[0024]图12示出了根据本发明的一个实施例的、如何通过寄存器模板填充寄存器视图条目的总体示意图。
[0025]图13示出了根据本发明的一个实施例的、减小的寄存器视图占用空间的第一实施例。
[0026]图14示出了根据本发明的一个实施例的、减小的寄存器占用空间的第二实施例。
[0027]图15示出了根据本发明的一个实施例的、快照间增量的示范性形式。
[0028]图16示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程示意图。
[0029]图17示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程的另一个示意图。
[0030]图18示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的串行实现方式的硬件的总体示意图。
[0031]图19示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的并行实现方式的硬件的总体示意图。
[0032]图20示出了根据本发明的一个实施例的、用于基于块的指令执行的硬件以及它如何利用源视图、指令视图、寄存器模板以及寄存器视图进行工作的的总体示意图。
[0033]图21示出了根据本发明的一个实施例的、成块体系架构的例子。
[0034]图22示出了根据本发明的一个实施例的、如何根据它们的块号和线程ID分配线程的描述。
[0035]图23示出了根据本发明的一个实施例的,为了管理多线程执行,利用指向物理存储位置的线程指针映射的调度器的实现方式。
[0036]图24示出了根据本发明的一个实施例的、利用基于线程的指针映射的调度器的另一个实现方式。
[0037]图25示出了根据本发明的一个实施例的、线程执行资源的动态的基于日历的分配的示意图。
[0038]图26图解了根据本发明的一个实施例的双分派过程。
[0039]图27图解了根据本发明的一个实施例的双分派暂态乘法累加。
[0040]图28图解了根据本发明的一个实施例的体系架构可见状态的双分派的相乘相加。
[0041]图29示出了根据本发明的一个实施例的、用于在分组的执行单元上执行的指令块的获取和形成过程的总体示意图。
[0042]图30示出了根据本发明的一个实施例的、指令分组的示范性示意图。在图30的实施例中示出了具有第三辅助操作的两个指令。
[0043]图31示出了根据本发明的一个实施例的、指令块堆中的半块对如何映射到执行块单元。
[0044]图32示出了根据本发明的一个实施例的、描述了中间指令块结果存储作为第一级寄存器文件的示意图。
[0045]图33示出了根据本发明的一个实施例的奇数/偶数端口调度器。
[0046]图34示出了图33的更加详细的版本,其中示出了四个执行单元,其从调度器阵列接收结果并且将输出结果写入暂存寄存器文件部分。
[0047]图35示出了根据本发明的一个实施例的、描述了访客标志结构仿真的示意图。
[0048]图36示出了根据本发明的一个实施例的、说明了机器的前端、调度器以及执行单元以及集中式标志寄存器的示意图。
[0049]图37示出了由本发明的实施例实现的集中式标志寄存器仿真过程的示意图。
[0050]图38示出了仿真访客设置中的集中化的标志寄存器表现的过程3800的步骤流程图。
【具体实施方式】
[0051]虽然结合一个实施例描述本发明,但并不意图将本发明限制为此处详述的具体形式。相反地,本发明意图覆盖根据附加的权利要求限定的、可以合理包含在本发明范围内的这样的替代、修改和等同。
[0052]在下面的详细说明中,详细解释了大量的具体细节,例如具体的方法次序、结构、元