CN105190541A - 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法 - Google Patents

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

Info

Publication number
CN105190541A
CN105190541A CN201480024463.XA CN201480024463A CN105190541A CN 105190541 A CN105190541 A CN 105190541A CN 201480024463 A CN201480024463 A CN 201480024463A CN 105190541 A CN105190541 A CN 105190541A
Authority
CN
China
Prior art keywords
instruction
register
block
view data
source
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.)
Pending
Application number
CN201480024463.XA
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Soft Machines 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 Soft Machines Inc filed Critical Soft Machines Inc
Publication of CN105190541A publication Critical patent/CN105190541A/zh
Pending legal-status Critical Current

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/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/30098Register arrangements
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

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

利用具有寄存器视图、源视图、指令视图以及多个寄存器模板的微处理器体系架构执行指令块的方法。该方法包括,利用全局前端接收进来的指令序列;将指令分组以形成指令块;使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;使用寄存器视图数据结构,其中寄存器视图数据结构存储了对应于指令块的目标;使用源视图数据结构,其中源视图数据结构存储了对应于指令块的源;并且使用指令视图数据结构,其中指令视图数据结构存储了对应于指令块的指令。

Description

利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法
本申请要求共同未决的、共同转让的、分配了序列号:61/799,902、名称为“AMETHODFOREXECUTINGBLOCKSOFINSTRUCTIONSUSINGAMICROPROCESSORARCHITECTUREHAVINGAREGISTERVIEW,SOURCEVIEW,INSTRUCTIONVIEW,ANDAPLURALITYOFREGISTERTEMPLATES”、由MohammadA.Abdallah于2013年3月15日提交的美国临时申请的权益,其全部并入本申请。
相关申请交叉引用
本申请涉及共同未决的、共同转让的序列号:2009/0113170、名称为“APPARATUSANDMETHODFORPROCESSINGANINSTRUCTIONMATRIXSPECIFYINGPARALLELINDEPENDENTOPERATIONS”、申请人为MohammadA.Abdallah于2007年4月12日提交的美国专利申请,其全部并入本申请。
本申请涉及共同未决的、共同转让的序列号:2010/0161948、名称为“APPARATUSANDMETHODFORPROCESSINGCOMPLEXINSTRUCTIONFORMATSINAMULTITHREADEDARCHITECTURESUPPORTINGVARIOUSCONTEXTSWITCHMODESANDVIRTUALIZATIONSCHEMES”、申请人为MohammadA.Abdallah于2007年11月14日提交的美国专利申请,其全部并入本申请。
技术领域
本发明主要涉及数字计算机系统,尤其是涉及选择包括指令序列的指令的系统和方法。
背景技术
处理器需要处理依赖的或者完全独立的多个任务。这种处理器的内部状态通常由在程序执行的每个特定实例中具有不同值的寄存器组成。在程序执行的每个实例中,内部状态图像被称为处理器的体系体系架构状态。
当将代码执行切换到运行另一个函数(例如,另一个线程、进程或程序),则机器/处理器的状态必须进行保存,以便新的函数能够利用内部寄存器建立其新的状态。一旦新的函数终止,则可以丢弃它的状态,并且恢复以前的上下文状态且重新开始执行。这样的转换过程被称为上下文切换并且通常包括数十个或数百个循环,尤其是利用大量的寄存器(例如,64、128、256)和/或乱序执行的现在体系架构。
在线程感知硬件体系架构中,对于硬件来说支持有限数量的硬件支持的线程的多个上下文状态是正常的。在这种情况下,对每个支持的线程,硬件复制所有的体系架构状态元素。这消除了执行新线程时上下文切换的需求。然而,这仍然有多个缺陷,即在硬件支持每个附加的线程的面积、功率以及复制所有体系架构状态元素(即寄存器)的复杂性。此外,如果软件线程的数目超过明确支持的硬件线程数目,则仍然必须执行上下文切换。
由于在需要大量线程的细粒度的基础上需要并行化,这变得普遍。具有双倍的上下文状态硬件存储的硬件线程感知体系架构不利于非线程软件代码并且对线程化的软件仅减少上下文切换的次数。然而,那些线程通常为了粗粒度并行化而建造,并且开始和同步导致了大量软件开销,远离细粒度并行化,例如函数调用和循环并行执行,没有有效的线程开始/自动产生。这种所描述的开销伴随着使用art编译器的状态的这样的代码的自动并行化或者用于不明确/易于并行化/线程化的软件代码的用户并行技术的困难。
发明内容
在一个实施例中,本发明实现为利用具有寄存器视图、源视图、指令视图以及多个寄存器模板的微处理器体系架构执行指令块的方法。该方法包括,利用全局前端接收进来的指令序列;将指令分组以形成指令块;使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;使用寄存器视图数据结构,其中寄存器视图数据结构存储了对应于指令块的目标;使用源视图数据结构,其中源视图数据结构存储了对应于指令块的源;并且使用指令视图数据结构,其中指令视图数据结构存储了对应于指令块的指令。
前述是个概要并且因此必然包含细节的简单化、归纳化和省略。因此,本领域技术人员要领会,该发明内容仅仅是说明性的并且不意图以任何方式限制。其他方面,创造性的特征以及本发明的优点,仅由权利要求限定,在下面详细解释的非限定的详细说明中变得显然。
附图说明
本发明以举例的方式进行说明,并且不以限制的方式,随附的附图中的数字及其中相同的引用号涉及相同的元件。
图1示出了利用寄存器模板将指令分组成块并且跟踪指令间的依赖关系的过程的总体示意图。
图2示出了根据本发明的一个实施例的,寄存器视图、源视图以及指令视图的总体示意图。
图3示出了根据本发明的一个实施例的、说明了示范性的寄存器模板以及通过寄存器模板中的信息如何对源视图进行填充的示意图。
图4示出了说明源视图内依赖广播的第一实施例的示意图。在这个实施例中,每栏包括指令块。
图5示出了说明源视图内依赖广播的第二实施例的示意图。
图6示出了根据本发明的一个实施例的、说明了选择准备就绪的指令块用于从提交指针开始的分派以及广播对应的端口分配的示意图。
图7示出了根据本发明的一个实施例的、用于实现图6中描述的选择器阵列的加法器树结构。
图8示出了更加详细的选择器阵列加法器树的示范性逻辑。
图9示出了根据本发明的一个实施例的、用于实现选择器阵列的加法器树的并行实现方式。
图10示出了根据本发明的一个实施例的、说明如何利用进位保存加法器实现图9中的加法器X的示范性示意图。
图11示出了根据本发明的一个实施例的、掩膜准备好的位用于从提交指针开始调度以及利用选择器阵列加法器的掩膜实施例。
图12示出了根据本发明的一个实施例的、如何通过寄存器模板填充寄存器视图条目的总体示意图。
图13示出了根据本发明的一个实施例的、减小的寄存器视图占用空间的第一实施例。
图14示出了根据本发明的一个实施例的、减小的寄存器占用空间的第二实施例。
图15示出了根据本发明的一个实施例的、快照间增量的示范性形式。
图16示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程示意图。
图17示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程的另一个示意图。
图18示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的串行实现方式的硬件的总体示意图。
图19示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的并行实现方式的硬件的总体示意图。
图20示出了根据本发明的一个实施例的、用于基于块的指令执行的硬件以及它如何利用源视图、指令视图、寄存器模板以及寄存器视图进行工作的的总体示意图。
图21示出了根据本发明的一个实施例的、成块体系架构的例子。
图22示出了根据本发明的一个实施例的、如何根据它们的块号和线程ID分配线程的描述。
图23示出了根据本发明的一个实施例的,为了管理多线程执行,利用指向物理存储位置的线程指针映射的调度器的实现方式。
图24示出了根据本发明的一个实施例的、利用基于线程的指针映射的调度器的另一个实现方式。
图25示出了根据本发明的一个实施例的、线程执行资源的动态的基于日历的分配的示意图。
图26图解了根据本发明的一个实施例的双分派过程。
图27图解了根据本发明的一个实施例的双分派暂态乘法累加。
图28图解了根据本发明的一个实施例的体系架构可见状态的双分派的相乘相加。
图29示出了根据本发明的一个实施例的、用于在分组的执行单元上执行的指令块的获取和形成过程的总体示意图。
图30示出了根据本发明的一个实施例的、指令分组的示范性示意图。在图30的实施例中示出了具有第三辅助操作的两个指令。
图31示出了根据本发明的一个实施例的、指令块堆中的半块对如何映射到执行块单元。
图32示出了根据本发明的一个实施例的、描述了中间指令块结果存储作为第一级寄存器文件的示意图。
图33示出了根据本发明的一个实施例的奇数/偶数端口调度器。
图34示出了图33的更加详细的版本,其中示出了四个执行单元,其从调度器阵列接收结果并且将输出结果写入暂存寄存器文件部分。
图35示出了根据本发明的一个实施例的、描述了访客标志结构仿真的示意图。
图36示出了根据本发明的一个实施例的、说明了机器的前端、调度器以及执行单元以及集中式标志寄存器的示意图。
图37示出了由本发明的实施例实现的集中式标志寄存器仿真过程的示意图。
图38示出了仿真访客设置中的集中化的标志寄存器表现的过程3800的步骤流程图。
具体实施方式
虽然结合一个实施例描述本发明,但并不意图将本发明限制为此处详述的具体形式。相反地,本发明意图覆盖根据附加的权利要求限定的、可以合理包含在本发明范围内的这样的替代、修改和等同。
在下面的详细说明中,详细解释了大量的具体细节,例如具体的方法次序、结构、元件以及连接方式。应理解,无论如何,不需要利用这些以及其他具体细节实践本发明的实施例。在其他情况下,为了避免不必要地使本说明难以理解,公知的结构、元素或连接方式被省略或没有特别详细描述。
说明书中涉及到的“一个实施例”或“实施例”意图表示连同实施例描述的特定的特征、结构或特点包括在本发明的至少一个实施例中。短语“在一个实施例中”在说明书中不同位置的表现并不一定全部涉及相同的实施例,也并不是与其他实施例互斥的单独的或可替代的实施例。而且,描述了在一些实施例中展示并且在其他实施例中未展示的多个特征。类似地,描述了一些实施例要求但其他实施例不要求的多个要求。
详细说明的一些部分,其在下面跟随,以程序、步骤、逻辑块、过程以及对计算机内存中的数据位操作的其他符号表现形式展示。这些说明以及表现是数据处理领域技术人员用于将他们的工作内容更加有效地传递给本领域其他技术人员的手段。程序、计算机执行的步骤、逻辑块、过程等,在此处,并且一般被设想为步骤的有条理的顺序或者导向想要的结果的指令。步骤就是要求物理量的物理操作的那些。通常,尽管不是必须的,这些物理量采取计算机可读存储介质的电或磁信号的形式并且能够被存储、转移、组合、比较,并且否则在计算机系统中被操控。主要由于通用性,已经证实有时作为位、值、元件、符号、特点、术语、号码等等提及这些信号。
然而,应该在思维中具有所有这些以及类似的术语都与合适的物理量相关联,并且仅仅是用于这些物理量的便签。除非特别说明,否则如下面的讨论很显然,应领会,遍及本发明,利用术语例如“处理”或“访问”或“写入”或“存储”或“复制”等的讨论涉及计算机系统或类似的电子计算设备的动作或过程,类似的电子计算设备将计算机系统的寄存器以及内存以及其他计算机可读介质中表现为物理(电子)量的数据操纵并转换成类似地表现为计算机系统内存或寄存器或其他这样的信息存储、传输或显示设备中的物理量的其他数据。
图1示出了利用寄存器模板将指令分组成块并且跟踪指令间的依赖关系的过程的总体示意图。
图1示出了具有块头和块正文的指令块。该指令块由一组指令创造。该指令块包括封装该组指令的实体。在微处理器的本实施例中,抽象度被提升到指令块而不是单个指令。处理指令块用于分派而不是单个指令。每个指令块用块号作标记。机器的乱序管理工作因此被大大简化。一个关键特征是找到管理要处理的大量指令的方法,而不大量增加机器的管理开销。
本发明的实施例通过执行指令块、寄存器模板和继承向量实现了这个目标。在图1示出的指令块中,指令块的标题列出并概述了指令块的指令的所有源和目标以及那些源来自何处(例如,来自哪个指令块)。该标题包括更新寄存器模板的目标。包括在标题中的源将由存储在寄存器模板中的块号联系在一起。
乱序处理的指令数目决定了乱序机器的管理复杂程度。更多的乱序指令导致更大的复杂程度。源需要在处理器的乱序调度窗口中与先前指令的目标进行对比。
如图1所示,寄存器模板具有针对每个寄存器的从R0到R63的字段。各指令块将它们各自的块号写入与指令块目标对应的寄存器模板字段。每个指令块从寄存器模板中读取表示它的寄存器源的寄存器字段。当指令块退隐(retire)并将它的目标寄存器内容写入寄存器文件时,它的块号从寄存器模板中擦除。这意味着那些寄存器可以作为来自寄存器文件本身的源读取。
在本实施例中,无论何时分配指令块,寄存器模板都在机器的每个循环进行更新。因为产生了新的模板更新,寄存器模板的先前的快照被存储在阵列(例如,图2中示出的寄存器视图)中,每个指令块一个阵列。该信息被保留,直到对应的块退隐。这允许机器从误预测中恢复并且非常快速地刷新(例如,通过获得最后已知的依赖状态)。
在一个实施例中,在寄存器视图中存储的寄存器模板可以通过仅存储连续快照间的增量(快照间增加的变化)而进行压缩(因此节约存储空间)。用这种方法,机器得到缩小的寄存器视图。进一步的压缩可以通过仅存储具有分支指令的指令块的模板而得到。
如果需要恢复点而不是分支误预测,则可以首先在分支恢复点得到恢复,随后可以脱离分配指令(但不执行它们)而重建状态,直到该机器在恢复点之后完成寻找。
应注意到,在一个实施例中,此处使用的术语“寄存器模板”与在早期提交的共同转让的、由MohammadAbdallah于2012年3月23日提交的专利申请“EXECUTINGINSTRUCTIONSEQUENCECODEBLOCKSBYUSINGVIRTUALCORESINSTANTIATEDBYPARTITIONABLEENGINES”中描述的术语“继承向量”是同义词,其全部并入此处。
图2示出了根据本发明的一个实施例的,寄存器视图、源视图以及指令视图的总体示意图。此图示出了调度器体系架构(例如,具有源视图、指令视图、寄存器视图等)的一个实施例。通过组合或分离一个或多个上述引用的结构实现相同功能的调度器体系架构的其他实现方式是可能的。
图2图解了支持寄存器模板操作和机器状态保持的功能实体。图2的左侧示出了寄存器模板T0到T4,箭头表示从一个寄存器模板/继承向量到另一个寄存器模板/继承的信息的继承。寄存器视图、源视图以及指令视图的每个都包括用于存储关于指令块信息的数据结构。图2也示出了具有块头的示范性的指令块以及指令块如何包括机器的寄存器的源和目标。关于由指令块引用的寄存器的信息被存储在寄存器视图数据结构中。关于由指令块引用的源的信息被存储在源视图数据结构中。关于由指令块引用的指令自身的信息被存储在指令视图数据结构中。寄存器模板/继承向量自身包括存储了由指令块引用的依赖和继承信息的数据结构。
图3示出了根据本发明的一个实施例的、说明了示范性的寄存器模板以及通过寄存器模板中的信息如何对源视图进行填充的示意图。
在本实施例中,应注意到,源视图的目标是确定何时可以分派特定的指令块。当指令块被分派时,它向所有其余指令块广播它的块号。其他指令块(例如,比较)的源的任何匹配使得设置就绪位(例如,或者一些其他类型的指示器)。当设置了所有就绪位(例如,“与”门),准备分派指令块。基于它们依赖的其他指令块的准备就绪分派指令块。
当多个指令块准备好被分派,先于较新的指令块选择最旧的指令块进行分派。例如,在一个实施例中,找到第一电路可以用于基于与提交指针的接近度找到最旧的指令块并且基于与提交指针的相对接近度找到下一个指令块(例如,根据每个指令块的就绪位工作)。
仍然参考图3,在这个例子中,在到达指令块20的检查时创造寄存器模板快照。如上所述,寄存器模板具有每个寄存器从R0到R63的字段。指令块将它们各自的块号写入对应于指令块目标的寄存器模板字段中。每个指令块从寄存器模板中读取表示它的寄存器源的寄存器字段。第一个数字是写入寄存器的指令块并且第二个数字是该指令块的目标数字。
例如,当到达指令块20,它读取寄存器模板的快照并且在寄存器模板中查找它自己的寄存器源,以确定写入它的每个源的最新的指令块,并且根据其目标对之前的寄存器模板快照进行的更新来填充源视图,下一个指令块将用它们自己的目标更新寄存器模板。这在图3的底部左侧示出,在此指令块20填充它的源:源1、源2、源3,一直到源8。
图4示出了说明了源视图内依赖广播的第一实施例的示意图。在此实施例中,每栏包括指令块。当指令块被分派时,它在它的源对块有依赖关系的所有那些块的栏中(例如,通过写0)进行掩膜。当任何其他指令块被分派时,它的块号跨与该指令块有关的确切的栏被广播。应注意到,写入1是默认值,表示那个指令块上没有依赖关系。
当指令块中的所有就绪位准备就绪,该块被分派并且它的块号向所有其余的指令块广播。该块号与存储在其他指令块的源中的所有号码进行比较。如果存在匹配,则设置该源的就绪位。例如,如果在源1上广播的块号等于11,则设置指令块20的源1的就绪位。
图5示出了说明了源视图内依赖广播的第二实施例的示意图。相对于由指令块组织,该实施例由源组织。这由贯穿源视图数据结构的源S1直到S8示出。以类似于上面图4描述的方式,在图5的实施例中,当指令块中的所有就绪位准备就绪,该指令块被分派并且它的块号向所有其余的指令块广播。该块号与存储在其他指令块的源中的所有号码进行比较。如果存在匹配,则设置该源的就绪位。例如,如果在源1上广播的块号等于11,则设置指令块20的源1的就绪位。
图5的实施例还示出了该比较如何仅在提交指针和分配指针间的指令块上进行。所有其他指令块都无效。
图6示出了根据本发明的一个实施例的、说明了选择准备就绪的指令块用于从提交指针开始的分派以及广播对应的端口分配的示意图。源视图数据结构在图6的左侧示出。指令视图数据结构在图6的右侧示出。选择器阵列在源视图和指令视图之间示出。在这个实施例中,选择器阵列通过四个分派端口P1到P4在每个循环中分派四个指令块。
如上所述,用于从提交指针卷绕到分配指针选择指令块用于分派(例如,尝试首先分派较旧的指令块)。选择器阵列用于找到从提交指针开始的最早准备好的四个指令块。可取的是分派最早准备好的指令块。在一个实施例中,选择器阵列可以通过利用加法树结构实现。这将在下面的图7中说明。
图6还示出了选择器阵列如何耦合至穿过指令视图中的条目的四个端口的每一个。在这个实施例中,随着端口使能的端口耦合,使得四个端口中的一个被激活,并且针对该指令视图条目,向下穿过到达分派端口以及到达执行单元上。此外,如上所述,被分派的指令块通过源视图往回广播。用于分派的选择的指令块的块号往回广播(达到4个)。这在图6的更右侧示出。
图7示出了根据本发明的一个实施例的、用于实现图6中描述的选择器阵列的加法器树结构。描述的加法器树实现了选择器阵列功能。加法器树选出最早的四个准备好的指令块并且将它们置于四个可用端口用于分派(例如,读取端口1直到端口4)。不使用仲裁。用于具体地使能具体端口的实际的逻辑在条目1中明确示出。为了清楚,该逻辑没有在其他条目中具体示出。用这种方式,图7示出了直接选择每个特定端口用于指令块分派是如何实现的一个具体实施例。应注意到,然而,可替代地,可以实现使用优先编码器的实施例。
图8更加详细地示出了选择器阵列加法器树的示范性逻辑。在图8的实施例中,该逻辑示出了范围超过位。该范围超过位保证至多选择四个指令块用于分派。如果第五个指令块准备就绪,则如果最早的四个也准备就绪的话,范围超过位将不允许它被分派。应注意到,在顺序实现中,总数位S0到S3都用于使分派端口以及向下个加法器阶段的传递生效。
图9示出了根据本发明的一个实施例的、用于实现选择器阵列的加法器树的并行实现方式。并行实现方式不会将总数从每个加法器转送到下一个。在并行实现方式中,每个加法器利用多输入加法实现方式直接使用它的必要的输入,例如,多输入进位保存加法器树。例如,加法器“X”总计所有之前的输入。为了执行更快的计算时间(例如,单循环),这个并行实现方式是可取的。
图10示出了根据本发明的一个实施例的、说明如何利用进位保存加法器实现图9中的加法器X的示范性示意图。图10示出了在单个循环中可以添加32个输入的结构。该结构利用4×2进位保存加法器组合在一起。
图11示出了根据本发明的一个实施例的掩膜实施例,用于掩膜准备好的位用于从提交指针开始调度以及利用选择器阵列加法器。在这个实现方式中,选择器阵列加法器尝试选择最早的四个准备好的指令块,用于从提交指针潜在地卷绕到分配指针开始分派。在这个实现方式中,使用了多输入并行加法器。此外,在这个实现方式中利用了这些循环缓冲器的源。
图11示出了准备好的位如何与两个掩膜的每个(个别地或单独地)一起进行“与”操作并且并行地用于两个加法器树。利用两个加法器树选择最早的4个指令块并且与其阈值进行比较。“X”标记表示“对于该加法器树从选择器阵列中排除”,因此“X”值为0。另一方面,“Y”标记表示“对于该加法器树包含在选择器阵列中”,因此“Y”值为1。
图12示出了根据本发明的一个实施例的、如何通过寄存器模板填充寄存器视图条目的总体示意图。
如上所述,寄存器视图条目由寄存器模板填充。寄存器视图顺序存储了每个指令块的寄存器模板的快照。当推断失效时(例如,分支误预测),在无效推断点之前寄存器视图具有最新有效的快照。通过读取寄存器视图条目并且将其加载到寄存器模板的底层,机器可以回滚它的状态到最后有效的快照。寄存器视图的每个条目示出所有寄存器继承状态。例如在图12的实施例中,如果指令块F的寄存器视图失效,机器状态可以回滚到较早的最后有效的寄存器模板快照。
图13示出了根据本发明的一个实施例的、减小的寄存器视图占用空间的第一实施例。需要存储寄存器视图条目的内存数量可以通过仅存储包含分支指令的那些寄存器视图模板快照而减少。当出现例外(例如,推断失效、分支误预测等)时,可以根据发生在例外之前的分支指令重建最后有效的快照。为了建立最后有效的快照,从例外之前直到例外处的分支取指。指令被取出但不执行它们。如图13中所示,仅仅那些包括分支指令的快照被保存在减小的寄存器视图中。这大大减少了需要存储寄存器模板快照的内存数量。
图14示出了根据本发明的一个实施例的、减小的寄存器视图占用空间的第二实施例。需要存储寄存器视图条目的内存数量可以通过仅存储快照(例如,每四个快照中的一个)的顺序子集而减少。利用比存储全部连续的快照相对较小数量的内存,可以将连续的快照间的变化存储为原始快照的“变量”。当出现例外(例如,推断失效、分支误预测等)时,可以根据发生在例外之前的原始快照重建最后有效的快照。发生在例外之前的原始快照的“变量”以及连续的快照被用于重建最后有效的快照。最初的起始状态可以累加变量以到达需要的快照状态。
图15示出了根据本发明的一个实施例的、快照间增量的示范性形式。图15示出了原始快照和两个变量。在一个变量中,仅R5和R6是由B3更新的寄存器。其余条目没有变化。在另一个变量中,仅R1和R7是由B2更新的寄存器。其余条目没有变化。
图16示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程示意图。在这个实施例中,图16的左侧示出了两个解复用器并且在图16的顶端是快照寄存器模板。图16示出了由以前的寄存器模板(例如,串行实现方式)创造后来的寄存器模板的示意图。
这个串行实现方式示出了如何根据指令块的分配创造寄存器模板快照。那些快照用于捕获最新的寄存器体系架构状态更新,其用于依赖跟踪(例如,在图1中通过4描述的)以及更新寄存器视图以操纵误预测/例外(例如,图12中通过15描述的)。
通过选择哪个到来的源通过而实施解复用。例如,寄存器R2将在第二输出上解复用到1,而R8将在第七输出上解复用到1等等。
图17示出了根据本发明的一个实施例的、根据指令块的分配创造寄存器模板快照的过程的另一个示意图。图17的实施例还示出了由以前的寄存器模板创造后来的寄存器模板。图17的实施例还示出了寄存器模板块继承的例子。此图示出了寄存器模板如何根据分配的块号进行更新。例如,块Bf更新R2、R8和R10。Bg更新R1和R9。圆点箭头表示该值从以前的快照继承。这个过程一直进行,直到块Bi。因此,例如,由于没有快照更新寄存器R7,它的原始值Bb将一直传送下去。
图18示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的串行实现方式的硬件的总体示意图。解复用器用于控制两个输入多路复用器的串联,其两个块号将传送到下个阶段。它可以或者是来自以前阶段的块号,或者是当前块号。
图19示出了根据本发明的一个实施例的、实现由以前的寄存器模板创造后来的寄存器模板的并行实现方式的硬件的总体示意图。此并行实现方式利用专门的编码的多路复用器控制由以前的寄存器模板创造后来的寄存器模板。
图20示出了根据本发明的一个实施例的、用于基于块的指令执行的硬件以及它如何利用源视图、指令视图、寄存器模板以及寄存器视图进行工作的的总体示意图。
在这个实现方式中,分派器中的分配器、调度器接收机器的前端取来的指令。这些指令用我们早期描述的方法完成指令块形式。如早期描述的,指令块生成寄存器模板并且这些寄存器模板用于填充寄存器视图。从源视图中,源被转移到寄存器文件层,并且用上面描述的方法广播回源视图。指令视图将指令转移到执行单元。指令由执行单元执行,同时指令需要的源来自寄存器文件层。然后这些执行的指令被转移出执行单元并回到寄存器文件层。
图21示出了根据本发明的一个实施例的、成块结构的例子。成块的重要性在于通过利用示出的四个多路复用器器将到每个调度器条目的写入端口数量从4减少到1,而仍然密集封装所有条目,没有形成气泡。
成块的重要性可以通过下面的例子看到(注意到,每个循环中块的分配在顶端位置开始,此案中为B0)。假如在循环1中,三个指令块被分配给调度器条目(例如,三个指令块将占据调度器中的前3个条目)。在下个循环(例如,循环2)中,另两个指令块被分配。为了避免在调度器阵列条目中产生气泡,调度器阵列条目必须建立对四个写入端口的支持。这从能量消耗、时间、面积等来看是昂贵的。在分配给阵列之前使用多路复用器结构,上面的成块结构将所有调度器阵列简化成仅有一个写入端口。在上面的例子中,循环2中的B0将由最后的多路复用器选择,而循环2中的B1将由第一个多路复用器选择(例如,从左到右进行)。
用这种方法,条目块的每个仅需要一个每条目写入端口并且四个每条目读取端口。由于必须实现多路复用器,有开销上的权衡,无论如何,由于可能存在很多条目,因此该开销通过不必实现四个每条目写入端口而被多次弥补。
图21还示出了中间分配缓冲器。如果调度器阵列不能接受所有送到它们的块,则它们可以暂时存储在中间分配缓冲器中。当调度器阵列有空闲空间,该块将从中间分配缓冲器转移到调度器阵列。
图22示出了根据本发明的一个实施例的、如何根据它们的块号和线程ID分配线程的描述。通过上面描述的成块实现方式,块被分配到调度器阵列。每个线程块利用块号在它们之中维持顺序的秩序。来自不同线程的块能够被交叉存取(例如,线程Th1的块和线程Th2的块在调度器阵列中交叉存取)。用这种方法,来自不同线程的块呈现在调度器阵列中。
图23示出了根据本发明的一个实施例的,为了管理多线程执行,利用指向物理存储位置的线程指针映射的调度器的实现方式。在这个实施例中,线程的管理通过线程映射的控制实现。例如,此处的图23示出了线程1映射和线程2映射。该映射跟踪各个线程的块的位置。映射中的条目被分配到属于该线程的块。在这种实现方式中,每个线程具有分配计数器,其为两个线程计数。总的计数不能超过N/2(例如,超过可用空间)。为了在总的条目分配中实现公平,分配计数器具有可调节的阈值。分配计数器可以阻止一个线程利用所有可用空间。
图24示出了根据本发明的一个实施例的、利用基于线程的指针映射的调度器的另一个实现方式。图24示出了提交指针和分配指针之间的关系。如所示,每个线程具有提交指针和分配指针,箭头示出了线程2的真实指针如何卷绕物理存储分配块B1和B2,但它不能分配块B9,直到线程2的提交指针向下移动。这通过线程2的提交指针的位置和删除线示出。图24的右侧示出了当提交指针沿逆时针方向移动时,块的分配和提交指针之间的关系。
图25示出了根据本发明的一个实施例的、线程执行资源的动态基于日历的分配的示意图。基于每个线程的向前进度,可以利用分配计数器动态控制公平。如果两个线程都有实质的向前进度,则两个分配计数器都设置为相同的阈值(例如,9)。然而,如果一个线程的向前进度缓慢,例如遭受了L2高速缓存缺失或这样的事件,则阈值计数器的比例可以根据仍然有实质向前进度的线程进行调节。如果一个线程被搁置或暂停(例如,处于等待或等待OS或IO回应的自旋状态),该比例可以完全调节到另一个线程,除了为暂停的线程预留的单个返回条目以信号告知释放等待状态。
在一个实施例中,过程从50%∶50%的比例开始。根据在块22上的L2高速缓存缺失检测,管线前端推迟任何进一步的取出到管线中或分配到线程2块的调度器中。当线程2块从调度器中退出时,那些条目将对于线程1分配可用,直到在该点处完成线程分配的新的动态比例。例如,离开最近退出的线程2块的3个将返回池中用于分配,以用线程1而不是线程2,使得线程1与线程2的比例为75%∶25%。
应注意到,在管线前端的线程2块的推迟可以要求从管线前端冲刷那些块,如果没有硬件装置对其进行旁路(例如,通过线程1块经过被推迟的线程2块)。
图26图解了根据本发明的一个实施例的双分派过程。多分派一般包括多次分派块(其中具有多个指令),以便不同的指令块能够在每次经过执行单元时执行。一个例子是地址计算指令的分派由消耗结果数据的后续的分派跟随。另一个例子将是浮点操作,其中第一部分作为固定点操作执行并且执行第二部分,以通过执行取整、标志生成/计算、指数调节等来完成操作。块作为单个实体被自动分配、提交并且退回。
多分派的主要益处在于它避免了将多个单独的块分配到机器窗口,因此,使得机器窗口有效增大。更大的机器窗口意味着更多的优化和重新排序的机会。
现在看图26的左下部,描述了指令块。该块不能在单个循环中被分派,因为从高速缓存/内存中加载地址计算和加载返回数据之间存在延迟。该块被第一次分派,它的中间结果作为暂态被保留(它的结果在运行中被传递到第二分派并对于结构状态不可见)。第一分派发送在地址计算以及LA分派中使用的两个元件1和2。第二分派发送元件3和4,其是根据从高速缓存/内存中加载返回数据的加载数据的执行部分。
现在看图26的右下部,描述了浮点相乘累加操作。在这种情况中,其中硬件没有足够的进入源带宽以在单个阶段分派操作,则使用双分派,如相乘累加图中示出的。如所示,第一分派是固定点相乘。如所示,第二分派是浮点加法取整。当这些被分派的指令都执行时,它们有效地执行了浮点相乘/累加。
图27图解了根据本发明的一个实施例的双分派暂态相乘累加。如图27所示,第一分派是整数32位相乘,并且第二分派是整数累积相加。在第一分派和第二分派(相乘的结果)之间通信的状态是暂态并且体系架构上不可见。在一种实现方式中暂态存储可以保留多于一个乘数的结果并且能够给它们加标签,以识别对应的相乘累加对,因此,允许多个相乘累加对混合并以任意方式被分派(例如,交叉存取等)。
注意到,其他指令可以将这个相同的硬件用于它们的实现方式(例如,浮点等)。
图28图解了根据本发明的一个实施例的体系架构可见状态的双分派的相乘相加。第一分派是单精确的相乘,并且第二分派是单精确的相加。在此实现方式中,在第一分派和第二分派(例如,相乘的结果)之间通信的状态信息体系架构上可见,因为此存储是体系架构状态寄存器。
图29示出了根据本发明的一个实施例的、用于在分组的执行单元过程上执行的指令块的获取和形成的总体示意图。本发明的实施例利用通过硬件或动态转换器/JIT获取指令并形成指令块的过程。指令块中的指令被组织,其结果是指令块中较早的指令提供指令块中后来指令的源。这在指令块中由圆点箭头示出。这个特性使得指令块在执行块的堆积的执行单元上有效执行。指令也可以被分组,即使它们可以并行执行,例如,如果它们分享相同的源(未在此图中明确示出)。
在硬件中形成指令块的一个可替代方式是在软件中形成它们(静态地或在运行时),在其中形成指令对、三个一组、四个一组等。
指令分组功能的其他实现方式可以在共同转让的美国专利8,327,115中找到。
图30示出了根据本发明的一个实施例的、指令分组的示范性示意图。在图30的实施例中示出了具有第三辅助操作的两个指令。图31的左侧指令块包括上半块/1槽和下半块/1槽。从顶端下来的垂直箭头表示进入块中的源,而从底端向下的垂直箭头表示回到内存的目标。从图3左侧开始向右侧行进,说明了可能的不同的指令组合。在这种实现方式中,每个半块可以接收三个源并且可以传递两个目标。OP1和OP2是正常操作。辅助的Op是辅助操作,例如逻辑、转移、移动、记号扩展、分支等。将指令块分成两个半块的好处是允许每个半块自己独立地分派或者否则的话基于(或者为了端口利用,或者由于资源约束)依赖方案动态的结合成一个块,因此,能够更好地利用执行时间,与此同时两个半块与一个块对应允许机器转移两个半块的复杂性,以像一个块一样管理(即分配和退回处)。
图31示出了根据本发明的一个实施例的、指令块堆中的半块对如何映射到执行块单元。如在执行块上示出的,每个执行块具有两个槽—槽1和槽2。目标是将块映射到执行单元上,使得第一半块在槽1上执行并且第二半块在槽2上执行。目标是如果每个半块的指令组不依赖于另一个半块,则允许两个半块独立分派。从顶端开始进入执行块的成对的箭头是两个32位字的源。离开执行块向下的成对箭头是两个32位字的目标。图31从左到右,示出了指令的不同的示范性组合,其能够被堆叠到执行块单元上。
图31的顶端概述了半块对如何在整块上下文中或任何半块的上下文中执行。每个s执行块具有两个槽/半块并且半块/执行槽的每一个执行或者单个、一对或三个一组的操作。有四种类型的块执行类型。第一个是并行半块(一旦每个半块自己的源准备好,其允许每个半块独立执行,但是如果两个半块同时准备好,两个半块仍能够作为一个块在一个执行单元上执行)。第二个是原子并行半块(其涉及可以并行执行的半块,因为两个半块间没有依赖关系,但它们被迫作为一个块一起执行,因为在两个半块之间共享的源使得两个半块首选地或必须地在每个执行块可用的源的约束下原子级一起执行)。第三个类型是原子串行半块s(其要求第一半块通过具有或没有中间存储的临时转送将数据转送给第二半块)。第四种类型是顺序半块(如在双分派中),其中第二个半块依赖于第一个半块并且在比第一个靠后的循环中被分派,并且通过为依赖方案跟踪的外部存储转送数据,这类似于双分派情况。
图32示出了根据本发明的一个实施例的、描述了中间指令块结果存储作为第一级寄存器文件的示意图。每组寄存器代表指令块(代表两个半块),其中32位结果以及64位结果都能够通过使用两个32位寄存器得到支持,以支持一个64位寄存器。每块存储假设了虚拟块存储,其意味着来自不同块的两个半块可以写入相同的虚拟块存储中。两个半块的组合的结果存储组成一个虚拟块存储。
图33示出了根据本发明的一个实施例的奇数/偶数端口调度器。在这个实现方式中,结果存储是不对称的。一些结果存储是每半块三个64位结果寄存器,而其他是每半块一个64位结果寄存器,然而,可替代的实现方式可以利用每半块对称的存储,并且此外也可以如图32中描述的利用64位和32位分区。在这些实施例中,和按照每块分配相比存储按照每半块分配。这个实现方式通过使用它们如奇数或偶数减少了分派所需的端口数目。
图34示出了图33的更加详细的版本,其中示出了四个执行单元,其从调度器阵列接收结果并且将输出写入临时寄存器文件部分。端口以偶数以及奇数间隔附接。调度阵列的左侧示出了块号并且右侧示出了半块号。
每个内核具有进入调度阵列的偶数和奇数端口,其中每个端口与奇数或偶数的半块位置相连。在一种实现方式中,偶数端口和与它们对应的半块可以与奇数端口和与它们对应的半块处于不同的内核中。在另一种实现方式中,奇数和偶数端口将在此图示出的多个不同内核间分配。如名称为“EXECUTINGINSTRUCTIONSEQUENCECODEBLOCKSBYUSINGVIRTUALCORESINSTANTIATEDBYPARTITIONABLEENGINES”、由MohammadAbdallah于2012年3月23日提交、序列号为13428440、其在此处全部并入本申请的之前更早提交的普通转让专利申请所描述的,内核可以是物理内核或虚拟内核。
在块的某一类型中,块的一半可以独立于块的另一半被分派。在块的其他类型中,块的两个半块都需要同时被分派到相同的执行块单元。仍然在块的其他类型中,块的两个半块需要顺序分派(第二个半块在第一个半块之后)。
图35示出了根据本发明的一个实施例的、描述了访客标志体系架构仿真的示意图。图35的左侧示出了具有五个标志的集中式标志寄存器。图35的右侧示出了具有分布式标志寄存器的分布式标志体系架构,其中标志在寄存器自身之中分配。
在体系架构仿真期间,对于分布式标志体系架构,必须对集中式访客标志体系架构的行为进行仿真。分布式标志体系架构也可以通过利用与关联于数据寄存器的标志域相对的多个独立标志寄存器实现。例如,数据寄存器可以实现为R0到R15,而独立的标志寄存器可以实现为F0到F3。在这种情况中的那些标志寄存器不直接与数据寄存器关联。
图36示出了根据本发明的一个实施例的、说明了机器的前端、调度器以及执行单元以及集中式标志寄存器的示意图。在此实现方式中,前端基于它们更新访客指令标志的方式对进来的指令进行归类。在一个实施例中,访客指令被归类成4本地指令类型T1、T2、T3和T4。T1-T4是表示每个访客指令类型更新哪些标志域的指令类型。访客指令类型基于它们的类型更新不同的访客指令标志。例如,逻辑访客指令更新T1本地指令。
图37示出了由本发明的实施例实现的集中式标志寄存器仿真过程的示意图。图37中的参与者包括最新更新的类型表、重命名的表扩展、物理寄存器以及分布式标志寄存器。现在图37由图38的流程图描述。
图38示出了在访客设置中仿真集中式标志寄存器表现的过程3800的步骤的流程图。
在步骤3801中,前端/动态转换器(硬件或软件)基于它们更新访客指令标志的方式对进来的指令进行归类。在一个实施例中,访客指令被归类到四个标志体系架构类型T1、T2、T3和T4中。T1-T4是表示每个访客指令类型更新哪些标志域的指令类型。访客指令类型基于它们的类型更新不同的访客指令标志。例如,逻辑访客指令更新T1类型标志,转移访客指令更新T2类型标志,算法访客指令更新T3类型标志以及特殊访客指令更新T4类型标志。应注意,访客指令可以是体系架构指令表示,而本地指令可以在机器内部执行(例如,微码)。替代地,访客指令可以是来自仿真体系架构(例如,x86、java、ARM码等)的指令。
在步骤3802中,那些指令类型更新它们各自的访客标志的顺序记录在最新更新的类型表数据结构中。在一个实施例中,此动作由机器的前端执行。
在步骤3803中,当那些指令类型到达调度器(按顺序的分配/重命名阶段部分)时,调度器分配与体系架构类型对应的隐含的物理目标并且将此分配记录到重命名/映射表数据结构中。
并且在步骤3804中,当随后的访客指令到达调度器中的分配/重命名阶段,并且该指令想要读取访客标志域时,(a)机器判定哪些标志体系架构类型需要被访问以执行读取。(b)如果发现所有需要的标志都在相同的最近更新的标志类型中(例如,如由最近更新的类型表判定),则读取对应的物理寄存器(例如,其映射到最近标志类型)以得到需要的标志。(c)如果发现所有需要的标志不在相同的最近更新的标志类型中,则需要从映射到个别最近更新的标志类型的对应的物理寄存器中读取每个标志。
并且在步骤3805中,每个标志从保存最后更新的最新值的物理寄存器中分别读取,就像被最新更新的标志类型表跟踪一样。
应注意到,如果最新更新类型包括另一个类型,则所有子集类型必须映射到超级集合类型的相同的物理寄存器中。
在退回处,目标标志域和复制的集中式/访客标志体系架构寄存器结合在一起。应注意到,由于本地体系架构利用与单一寄存器集中式标志体系架构相对的分布式标志体系架构的事实而执行复制。
更新某一标志类型的指令的例子:
CF,OF,SF,ZR–算法指令和加载/写入标志指令
SF,ZF和条件CF–逻辑和转移
SF,ZF–移动/加载,EXTR,一些乘法
ZF–POPCNT和STREX[P]
GE–SIMD指令???
读取某些标志的条件/预测的例子:
0000EQEqualZ==1
0001NENotequal,orUnorderedZ==0
0010CSbCarryset,Greaterthanorequal,orUnorderedC==1
0011CCcCarryclear,LessthanC==0
0100MIMinus,negative,LessthanN==1
0101PLPlus,Positiveorzero,Greaterthanorequalto,UnorderedN==00110VSOverflow,UnorderedV==1
0111VCNooverflow,NotunorderedV==0
1000HIUnsignedhigher,Greaterthan,UnorderedC==1andZ==0
1001LSUnsignedlowerorsame,LessthanorequalC==0orZ==1
1010GESignedgreaterthanorequal,GreaterthanorequalN==V
1011LTSignedlessthan,Lessthan,UnorderedN!=V
1100GTSignedgreaterthan,GreaterthanZ==0andN==V
1101LESignedlessthanorequal,Lessthanorequal,UnorderedZ==1orN!=V
1110None(AL),Always(unconditional),Anyflagsettoanyvalue
前面的说明,为了解释的目的,已经参考具体实施例进行了描述。然而,上面说明性的讨论并不意图详尽或限制本发明为公开的精确形式。根据上面的教导,许多改进以及变化是可能的。选择并且描述实施例是为了更好地解释本发明的原理和它的实际应用,以当适于特定用途考虑时,因此使得本领域技术人员更好地利用本发明以及具有不同改进的多个实施例。

Claims (20)

1.一种利用微处理器体系架构来执行指令块的方法,所述微处理器体系架构具有寄存器视图、源视图、指令视图以及多个寄存器模板,包括:
利用全局前端接收进来的指令序列;
将所述指令分组以形成指令块;
使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;
使用寄存器视图数据结构,其中所述寄存器视图数据结构存储了对应于所述指令块的目标;
使用源视图数据结构,其中所述源视图数据结构存储了对应于所述指令块的源;并且
使用指令视图数据结构,其中所述指令视图数据结构存储了对应于指令块的指令。
2.根据权利要求1所述的方法,其中所述寄存器视图数据结构、所述源视图数据结构以及所述指令视图数据结构包括调度器结构。
3.根据权利要求1所述的方法,其中关于由所述块引用的寄存器的信息被存储在所述寄存器视图数据结构中。
4.根据权利要求1所述的方法,其中关于由所述块引用的源的信息存储在所述源视图数据结构中。
5.根据权利要求1所述的方法,其中关于由所述块引用的指令的信息存储在所述指令视图数据结构中。
6.根据权利要求1所述的方法,其中所述寄存器模板包括继承向量,其进一步包括存储依赖关系的数据结构和由所述块引用的继承信息。
7.根据权利要求1所述的方法,其中所述源视图数据结构确定何时分派特定的块。
8.具有计算机可读代码的非暂态计算机可读内存,当所述计算机可读代码由计算机系统执行时,使得计算机系统实现利用具有寄存器视图、源视图、指令视图和多个寄存器模板的微处理器结构执行指令块的方法,包括:
利用全局前端接收进来的指令序列;
将所述指令分组以形成指令块;
使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;
使用寄存器视图数据结构,其中所述寄存器视图数据结构存储了对应于所述指令块的目标;
使用源视图数据结构,其中所述源视图数据结构存储了对应于所述指令块的源;并且
使用指令视图数据结构,其中所述指令视图数据结构存储了对应于指令块的指令。
9.根据权利要求8所述的计算机可读介质,其中所述寄存器视图数据结构、所述源视图数据结构以及所述指令视图数据结构包括调度器结构。
10.根据权利要求8所述的计算机可读介质,其中关于由所述块引用的寄存器的信息被存储在所述寄存器视图数据结构中。
11.根据权利要求8所述的计算机可读介质,其中关于由所述块引用的源的信息存储在所述源视图数据结构中。
12.根据权利要求8所述的计算机可读介质,其中关于由所述块引用的指令的信息存储在所述指令视图数据结构中。
13.根据权利要求8所述的计算机可读介质,其中所述寄存器模板包括继承向量,其进一步包括存储依赖关系的数据结构和由所述指令块引用的继承信息。
14.根据权利要求8所述的计算机可读介质,其中所述源视图数据结构确定何时分派特定的块。
15.一种计算机系统,具有耦合至计算机可读存储介质的处理器,并且执行计算机可读代码,使得所述计算机系统实现具有寄存器视图、源视图、指令视图和多个寄存器模板的体系架构,其中所述体系架构包括:
利用全局前端接收进来的指令序列;
将所述指令分组以形成指令块;
使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系;
使用寄存器视图数据结构,其中所述寄存器视图数据结构存储了对应于所述指令块的目标;
使用源视图数据结构,其中所述源视图数据结构存储了对应于所述指令块的源;并且
使用指令视图数据结构,其中所述指令视图数据结构存储了对应于指令块的指令。
16.根据权利要求15所述的计算机系统,其中所述寄存器视图数据结构、所述源视图数据结构以及所述指令视图数据结构包括调度器结构。
17.根据权利要求15所述的计算机系统,其中关于由所述块引用的寄存器的信息被存储在所述寄存器视图数据结构中。
18.根据权利要求15所述的计算机系统,其中关于由所述块引用的源的信息存储在所述源视图数据结构中。
19.根据权利要求15所述的计算机系统,其中关于由所述块引用的关于指令的信息存储在所述指令视图数据结构中。
20.计算机系统中用于使用寄存器模板执行指令以跟踪指令块之间的相互依赖关系的方法,包括:
利用全局前端接收进来的指令序列;
将所述指令分组以形成指令块;
使用多个寄存器模板,以通过采用对应于所述指令块的块号填充所述寄存器模板来跟踪指令目标和指令源,其中对应于所述指令块的所述块号指示所述指令块之间的相互依赖关系。
CN201480024463.XA 2013-03-15 2014-03-12 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法 Pending CN105190541A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361799902P 2013-03-15 2013-03-15
US61/799,902 2013-03-15
PCT/US2014/024608 WO2014150941A1 (en) 2013-03-15 2014-03-12 A method for executing blocks of instructions using a microprocessor architecture having a register view, source view, instruction view, and a plurality of register templates

Publications (1)

Publication Number Publication Date
CN105190541A true CN105190541A (zh) 2015-12-23

Family

ID=51580860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480024463.XA Pending CN105190541A (zh) 2013-03-15 2014-03-12 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法

Country Status (6)

Country Link
US (2) US20150046683A1 (zh)
EP (1) EP2972794A4 (zh)
KR (1) KR101800948B1 (zh)
CN (1) CN105190541A (zh)
TW (1) TWI522908B (zh)
WO (1) WO2014150941A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
TWI518504B (zh) 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
WO2012135050A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
WO2013077875A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. An accelerated code optimizer for a multiengine microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9886279B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10467103B1 (en) * 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
US20170315812A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor
GB2564144B (en) 2017-07-05 2020-01-08 Advanced Risc Mach Ltd Context data management
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404470A (en) * 1991-11-26 1995-04-04 Matsushita Electric Industrial Co., Ltd. Information processing apparatus for processing instructions by out-of-order execution
US6557095B1 (en) * 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
CN1451115A (zh) * 2000-01-03 2003-10-22 先进微装置公司 能够发送及重新发送附属链接的排程器
CN101627365A (zh) * 2006-11-14 2010-01-13 索夫特机械公司 用于处理使用上下文切换的多线程架构中的指令的装置和方法
CN101916180A (zh) * 2010-08-11 2010-12-15 中国科学院计算技术研究所 Risc处理器中执行寄存器类型指令的方法和其系统
US8145882B1 (en) * 2006-05-25 2012-03-27 Mips Technologies, Inc. Apparatus and method for processing template based user defined instructions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339398A (en) * 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5673408A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for renamable trap-stack
US6108769A (en) * 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US6542984B1 (en) * 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6704860B1 (en) * 2000-07-26 2004-03-09 International Business Machines Corporation Data processing system and method for fetching instruction blocks in response to a detected block sequence
US7757065B1 (en) * 2000-11-09 2010-07-13 Intel Corporation Instruction segment recording scheme
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
CN100485636C (zh) * 2006-04-24 2009-05-06 华为技术有限公司 一种基于模型驱动进行电信级业务开发的调试方法及装置
TWI518504B (zh) * 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
CN103547993B (zh) * 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404470A (en) * 1991-11-26 1995-04-04 Matsushita Electric Industrial Co., Ltd. Information processing apparatus for processing instructions by out-of-order execution
US6557095B1 (en) * 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
CN1451115A (zh) * 2000-01-03 2003-10-22 先进微装置公司 能够发送及重新发送附属链接的排程器
US8145882B1 (en) * 2006-05-25 2012-03-27 Mips Technologies, Inc. Apparatus and method for processing template based user defined instructions
CN101627365A (zh) * 2006-11-14 2010-01-13 索夫特机械公司 用于处理使用上下文切换的多线程架构中的指令的装置和方法
CN101916180A (zh) * 2010-08-11 2010-12-15 中国科学院计算技术研究所 Risc处理器中执行寄存器类型指令的方法和其系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN116302114B (zh) * 2023-02-24 2024-01-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法

Also Published As

Publication number Publication date
US20150046683A1 (en) 2015-02-12
TW201504939A (zh) 2015-02-01
WO2014150941A1 (en) 2014-09-25
EP2972794A4 (en) 2017-05-03
TWI522908B (zh) 2016-02-21
US20150046686A1 (en) 2015-02-12
KR20150132419A (ko) 2015-11-25
KR101800948B1 (ko) 2017-11-23
EP2972794A1 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
CN105190541A (zh) 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法
CN105247484A (zh) 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
CN105210040B (zh) 用于执行分组成块的多线程指令的方法
US10255076B2 (en) Method for performing dual dispatch of blocks and half blocks
US10169045B2 (en) Method for dependency broadcasting through a source organized source view data structure
US10503514B2 (en) Method for implementing a reduced size register view data structure in a microprocessor
TWI522909B (zh) 使用寄存器樣板快照以填充寄存器觀點資料結構的方法
US10146548B2 (en) Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) Method for implementing a reduced size register view data structure in a microprocessor
US9934042B2 (en) Method for dependency broadcasting through a block organized source view data structure

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20170317

Address after: American California

Applicant after: Intel Corporation

Address before: American California

Applicant before: Soft Machines Inc.

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20151223