首页> 中国专利> 用于针对非对称执行单元高效调度的方法和装置

用于针对非对称执行单元高效调度的方法和装置

摘要

公开了用于实施乱序微处理器管线中的指令调度的方法。所述方法包括,选择指令的第一集合以从调度器分派到执行模块,其中所述执行模块包括两种类型的执行单元。第一类型执行单元执行第一类型指令和第二类型指令两者并且其中第二类型执行单元仅执行第二类型指令。接下来,方法包括,选择指令的第二集合以进行分派,所述第二集合是第一集合的子集并且仅包括第二类型指令。接下来,方法包括:确定指令的第三集合,所述第三集合包括没有选中作为第二集合的一部分的指令。最后,方法包括,分派第二集合用于使用第二类型执行单元执行,并且分派第三集合用于使用第一类型执行单元执行。

著录项

  • 公开/公告号CN105122211A

    专利类型发明专利

  • 公开/公告日2015-12-02

    原文格式PDF

  • 申请/专利权人 索夫特机械公司;

    申请/专利号CN201480021706.4

  • 发明设计人 尼尔森·N·陈;

    申请日2014-03-14

  • 分类号G06F9/46;

  • 代理机构北京市磐华律师事务所;

  • 代理人董巍

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 12:26:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-12

    授权

    授权

  • 2017-04-12

    专利申请权的转移 IPC(主分类):G06F9/46 登记生效日:20170321 变更前: 变更后: 申请日:20140314

    专利申请权、专利权的转移

  • 2015-12-30

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20140314

    实质审查的生效

  • 2015-12-02

    公开

    公开

说明书

相关申请的交叉引用

本申请是于2013年3月15日提交的、题为“METHODAND APPARATUSFOREFFICIENTSCHEDULINGFORASYMMETRICAL EXECUTIONUNITS”的、第NO.61/799,062号临时专利申请的转换,并 要求其优先权和权益,其通过引用整体合并于本文中。

技术领域

根据本发明的实施例一般地涉及微处理器体系架构,并且更具体地, 涉及用于乱序微处理器的体系架构。

背景技术

在乱序(OOO)微处理器中,允许指令不按照它们的程序顺序来发布 和执行。OOO微处理器的调度器乱序选择和分派准备好的指令到执行单 元。某些微处理器架构具有两种类型指令,A类型和E类型。A类型指令 的示例是诸如加法和减法的整数运算,而E类型指令的示例是诸如浮点加 法、浮点减法和浮点乘法的浮点运算。然而,应该注意,A类型和E类型 指令都不仅限于上述示例。

然而,支持两种类型的指令的常规体系架构并没有可以支持两种类型 的指令的执行单元。例如,常规处理器一般会有用于执行A类型指令的独 有的执行单元,和用于执行E类型指令的独有的执行单元,其中两种类型 的执行单元彼此相互排斥。

考虑到非统一的指令类型和非对称执行单元,在这样的体系架构中的 调度器的目标一般是优化分派吞吐量。此外,调度器的另一个目标是优先 于较新的指令先考虑较早的指令。以及最终,最后的目标在于在实施调度 过程中保持有竞争力的延迟。

常规体系架构由于没有成功达成上述目标而因此有局限。例如,如上 所述,常规架构可以采用选择A类型的指令仅在A类型执行单元中执行, 并且挑选E类型指令仅在E类型执行单元中执行的原生策略。这允许为了 更佳的延迟而并行实施执行,但是如果对于特定的执行单元类型没有足够 的指令块,那么将导致没有使用的执行单元端口以及较小的整体分派吞吐 量。

例如,在具有4个A类型执行单元和4个E类型执行单元的体系架构 中存在5个A类型指令和3个E类型指令,那么至少1个E类型执行单元 将空闲,因为A类型指令不能在E类型执行单元上执行。该方案的另一个 问题在于其仅在单个分类(A或E)中是时间(age)优化的而没有针对整 个时间优先顺序进行优化。在以上示例中,举例来说,只有7个指令将被 分派。第5个A类型指令将不得不等待下一个周期。因此,常规体系架构 是有局限的,并未设计为达到调度器的上述所有期望的目的。

发明内容

相应地,需要其中执行单元可以执行多种类型指令的方法和装置,例 如A类型和E类型指令。此外,需要用于针对非对称执行单元更高效的调 度的方法和装置,其优化分派吞吐量、优先于较新的指令先考虑较早的指 令,并且维持有竞争力的延迟。

本发明的实施例支持非对称执行单元类型:A类型和E类型,其中A 类型执行单元只支持A类型指令,但是E类型执行单元可以支持A和E 类型指令。相应,A类型指令可以在A和E单元中执行,但是E类型指令 只能在E单元中执行。相应,A类型执行单元可以是E类型执行单元的子 集。

在一个实施例中,为了实施针对非对称执行单元的调度,调度器首先 填充A执行单元端口,并且随后采用没有由A执行单元选中的所有其他指 令块来填充E执行单元端口。在一个实施例中,调度器包括“发现-8”和 “发现-4”逻辑电路。发现-8电路针对满足选择标准的第一8个最早指令 搜索调度器中的分派范围。同时,发现-4电路与发现-8电路一起并行采用, 用于搜索第一4个最早A类型指令块。发现-4电路的结果用于调度A类型 执行单元。没有由发现-4选中的剩余的指令,最早的4个随后被调度用于 E类型执行单元。例如,如果发现-8电路选择3个A类型和5个E类型指 令并且发现-4电路挑选3个A类型指令(同样的3个A类型指令也由发现 -8逻辑所选择),那么3个A类型指令被调度用于A端口,而剩余5个E 类型指令中的最早的4个可以被调度用于E端口。然而,本发明不限于该 实施例。如果例如调度器在一个周期可以分派16个指令,那么将并行采用 “发现-16”和“发现-8”电路等等。

相应,本发明的实施例具有高的分派效率的优点,因为其尝试填充A 类型端口和E类型端口两者。此外,本发明的实施例具有在两种类型的块 之间的较好的整体时间优先顺序。最后,因为并行采用发现-8电路和发现 -4电路两者,所以本发明的实施例在实施调度过程中还维持有竞争力的延 迟。

在一个实施例中,公开了用于实施乱序微处理器管线中的指令调度的 方法。所述方法包括,选择指令的第一集合以从调度器分派,其中调度器 能够操作为分派两种类型的指令,并且其中所述执行模块包括两种类型的 执行单元。第一类型执行单元执行第一类型指令和第二类型指令两者并且 其中第二类型执行单元仅执行第二类型指令。方法还包括,选择指令的第 二集合以进行分派,其中第二集合是第一集合的子集,并且其中第二集合 仅包括第二类型指令。接下来方法包括:确定指令的第三集合,其中第三 集合包括没有选中作为第二集合的一部分的指令。最后方法包括,分派第 二集合用于使用第二类型执行单元执行,并且进一步分派第三集合用于使 用第一类型执行单元执行。

在另一个实施例中,公开了配置为实施用于调度乱序微处理器管线中 的指令的方法的处理器单元。所述方法包括,选择指令的第一集合以从调 度器分派,其中调度器能够操作为分派两种类型的指令,并且其中所述执 行模块包括两种类型的执行单元。第一类型执行单元执行第一类型指令和 第二类型指令两者并且其中第二类型执行单元仅执行第二类型指令。方法 还包括,选择指令的第二集合以进行分派,其中第二集合是第一集合的子 集,并且其中第二集合仅包括第二类型指令。接下来方法包括:确定指令 的第三集合,其中第三集合包括没有选中作为第二集合的一部分的指令。 最后方法包括,分派第二集合用于使用第二类型执行单元执行,并且进一 步分派第三集合用于使用第一类型执行单元执行。

在不同的实施例中,公开了配置为实施用于调度乱序微处理器管线中 的指令的方法的装置。所述装置包括:存储器、处理器,其通信地耦连到 所述存储器,其中所述处理器配置为乱序处理指令。并且进一步其中所述 处理器配置为:(a)选择指令的第一集合以从调度器分派到执行模块,其 中调度器能够操作为分派两种类型的指令,其中执行模块包括两种类型的 执行单元,其中第一类型执行单元执行第一类型指令和第二类型指令两者 并且其中第二类型执行单元仅执行第二类型指令;(b)选择指令的第二集 合以从调度器进行分派,其中第二集合是第一集合的子集,并且其中第二 集合仅包括第二类型指令;(c)确定指令的第三集合,其中指令的第三集 合是指令的第一集合的子集,并且其中第三集合包括没有选中作为第二集 合的一部分的指令;并且(d)分派指令的第二集合到所述执行模块,以用 于使用第二类型执行单元执行,并且进一步分派指令的第三集合到执行模 块,以用于使用第一类型执行单元执行。

接下来与附图一起的详细描述将提供对本发明性质和优点的更好理 解。

附图说明

本发明的实施例在附图中以示例的方式示出,但并非以限制的方式, 在附图中相似的参考标号指代相似的元件。

图1是根据本发明的实施例的示例性计算机系统。

图2示出了可以选择非统一指令用于非对称执行单元的方式的示例。

图3是根据本发明的一个实施例的、本发明的实施例可以在其上实现 的用于乱序微处理器的管线的示例性框图。

图4是示出了根据本发明实施例的、调度指令用于非对称执行单元的 方案的框图。

图5是示出了根据本发明实施例的、采用每周期分派8个指令的调度 器来调度指令用于非对称执行单元的方案的表。

图6描绘了根据本发明实施例的、用于乱序微体系架构中的指令调度 的示例性计算机控制的过程。

具体实施方式

现在将详细参考本发明的各实施例,其示例在附图中示出。虽然本发 明将结合这些实施例进行描述,但是应该理解它们并非旨在将本发明限定 于这些实施例。相反,本发明旨在覆盖可以包括在如随附权利要求所限定 的本发明的精神和范围内的替换、修改和等同物。此外,在本发明的实施 例的以下详细描述中,阐述了许多具体细节以提供对本发明的透彻理解。 然而本领域普通技术人员将认识到本发明可以没有这些具体细节而实施。 在其他实例中,没有详细描述公知的方法、步骤、组件和电路,以免对本 发明的实施例的各方面造成不必要的混淆。

符号和术语:

接下来的部分详细描述以过程、逻辑块、处理以及对计算机存储器内 数据比特进行操作其他象征性表示来呈现。这些描述和表示是由数据处理 领域技术人员所使用的手段,以向本领域的其他技术人员最有效地传达他 们工作的实质。在本申请中,过程、逻辑块、处理等等,被设想为得出期 望结果的步骤或指令的自洽序列。步骤利用物理量的物理操纵。通常,尽 管不是必要地,这些量采用能在计算机系统中被存储、转移、组合、对比 和另外操纵的电或磁信号的形式。已经证明,主要是出于共同使用的原因, 将这些信号称为事务处理、比特、值、元素、符号、字符、样本、像素等 等有时是方便的。

然而,要牢记的是,所有的这些和类似的术语都要与适当的物理量相 关联,且仅仅是应用于这些量的便捷标签。除非特别声明,否则在下面的 论述中很明显,应意识到贯穿本公开,利用术语诸如“选择”、“分派”、“确 定”、“存储”、“派送”、“确定”、“验证”等等的讨论,指的是计算机系 统的动作与过程(如图6的流程图600)或类似的电子计算设备或处理器 (如图1的系统110)。计算机系统或类似的电子计算设备对计算机系统存 储器、寄存器或其他这类信息存储、传输或显示设备内以物理(电子)量 表示的数据进行操纵和转换。

本文描述的实施例可一般围绕着驻留在某一形式的计算机可读存储介 质上的计算机可执行指令加以讨论,诸如由一台或多台计算机或其他设备 执行的程序模块。以示例的方式但非限制,计算机可读存储介质可以包括 非暂时性计算机可读存储介质和通信介质;非暂时性计算机可读介质包括 除了暂时性传播信号之外所有的计算机可读介质。通常,程序模块包括例 程、程序、对象、部件、数据结构等等,其执行特定任务或实现特定的抽 象数据类型。程序模块的功能可以在各种实施例中按照期望加以组合或分 配。

计算机存储介质包括易失性和非易失性、可移动的和不可移动的以任 何方法或技术实现的介质,用于存储信息诸如计算机可读指令、数据结构、 程序模块或其他数据。计算机存储介质包括但不限于,随机存取存储器 (RAM)、只读存储器(ROM)、电可擦可编程ROM(EEPROM)、闪速 存储器或其他存储器技术、压缩光盘ROM(CD-ROM)、数字多用盘(DVD) 或其他光学存储、盒式磁带、磁带、磁盘存储或其他磁性存储设备、或任 何其他可用来存储期望信息并可访问以重新得到这些信息的介质。

通信介质可体现计算机可执行指令、数据结构及程序模块,并包括任 何信息递送介质。以示例的方式但非限制,通信介质包括有线介质诸如有 线网络或直接有线连接,以及无线介质诸如声频、射频(RF)、红外线及 其他无线介质。以上的任意组合也可包括在计算机可读介质范围内。

图1是能够结合本公开的实施例的处理器114的计算系统110的示例 的框图。计算系统110宽泛地代表任何能执行计算机可读指令的单处理器 或多处理器计算设备或能够执行计算机可读指令的系统。计算系统110的 示例包括但不限于,工作站、膝上型计算机、客户端侧终端、服务器、分 布式计算系统、手持设备或任何其他计算系统或设备。在其最基本的配置 中,计算系统110可以包括至少一个本发明的实施例的处理器114和系统 存储器116。

处理器114包含本发明的实施例,并且通常代表任何类型或形式的、 能处理数据或解释并执行指令的处理单元。在某些实施例中,处理器114 可以从软件应用或模块接收指令。这些指令可以使处理器114实施一个或 多个本文描述和/或示出的示范性实施例的功能。在一个实施例中,处理器 114可以是乱序微处理器。在不同的实施例中,处理器114可以是超标量 处理器。在另一个实施例中,处理器114可以包括并行运行的多处理器。

系统存储器116通常代表任何类型或形式的、能存储数据和/或其他计 算机可读指令的易失性或非易失性存储设备或介质。系统存储器116的示 例包括但不限于,RAM、ROM、闪速存储器或任何其他适合的存储器设备。 虽然不加以要求,但在某些实施例中计算系统110可以包括易失性存储器 单元(诸如,系统存储器116)和非易失性存储设备(诸如,主存储设备 132)这两者。

计算系统110除处理器114和系统存储器116外还可以包括一个或多 个部件或元件。例如,在图1的实施例中,计算系统110包括存储器控制 器118、输入/输出(I/O)控制器120以及通信接口122,它们每个都可以 经由通信基础设施112互相连接。通信基础设施112通常代表任何类型或 形式的、能促进计算设备中一个或多个组件之间通信的基础设施。通信基 础设施112的示例包括但不限于,通信总线(诸如工业标准架构(ISA)、 外围部件互连(PCI)、PCIExpress(PCIe)或类似总线)和网络。

存储器控制器118通常代表任何类型或形式的、能处理存储器或数据 或者能控制计算系统110的一个或多个组件间通信的设备。举例来说,存 储器控制器118可以经由通信基础设施112来控制处理器114、系统存储 器116及I/O控制器120之间的通信。

I/O控制器120通常代表任何类型或形式的、能协调和/或控制计算设 备的输入输出功能的模块。举例来说,I/O控制器120可以控制或促进计 算系统110的一个或多个元件之间的数据的转移,诸如处理器114、系统 存储器116、通信接口122、显示适配器126、输入接口130以及存储接口 134。

通信接口122宽泛地代表任何类型或形式的、能促进示范性计算系统 110和一个或多个附加设备之间通信的通信设备或适配器。举例来说,通 信接口122可以促进计算系统110和包括附加计算系统的私人或公共网络 之间的通信。通信接口122的示例包括但不限于,有线网络接口(诸如网 络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器以及任何 其他适合的接口。在一个实施例中,通信接口122经由至诸如因特网的网 络的直接链路提供了到远程服务器的直接连接。通信接口122也可以通过 任何其他适合的连接来间接提供这种连接。

通信接口122也可以代表主机适配器,配置为经由外部总线或通信信 道来促进计算系统110与一个或多个附加网络或存储设备之间的通信。主 机适配器的示例包括但不限于,小型计算机系统接口(SCSI)主机适配器、 通用串行总线(USB)主机适配器、IEEE(电气与电子工程师协会)1394 主机适配器、串行高级技术附件(SATA)和外部SATA(eSATA)主机适 配器、高级技术附件(ATA)和并行ATA(PATA)主机适配器、光纤信道 接口适配器、以太网适配器等等。通信接口122也可以允许计算系统110 参与分布式或远程计算。例如,通信接口122可以从远程设备接收指令, 或向远程设备发送指令用于执行。

如图1所示,计算系统110还可以包括至少一个经由显示适配器126 耦合到通信基础设施112的显示设备124。显示设备124通常代表任何类 型或形式的、能视觉显示由显示适配器126所转发的信息的设备。类似地, 显示适配器126通常代表任何类型或形式的、配置为转发图形、文本和其 他数据用于在显示设备124上显示的设备。

如图1所示,计算系统110也可包括至少一个经由输入接口130耦合 到通信基础设施112的输入设备128。输入设备128通常代表任何类型或 形式的、能向计算系统110提供计算机生成或人工生成的输入的输入设备。 输入设备128的示例包括但不限于,键盘、定点设备、语音识别设备、或 任何其他输入设备。

如图1所示,计算系统110也可包括主存储设备132和经由存储接口 134耦合到通信基础设施112的可选备用存储设备133。存储设备132和 133通常代表任何类型或形式的、能存储数据和/或其他计算机可读指令的 存储设备或介质。举例来说,存储设备132和133可以是磁盘驱动器(例 如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪盘驱 动器等等。存储接口134通常代表任何类型或形式的、用来在存储设备132 和133与计算系统110的其他组件之间转移数据的接口或设备。

在一个示例中,数据库140可存储在主存储设备132内。数据库140 可代表单个数据库或计算设备的一部分,或者它可代表多个数据库或计算 设备。举例来说,数据库140可代表(存储于)计算系统110的一部分。 可替代地,数据库140可代表(存储于)一个或多个能被诸如计算系统110 的计算设备所访问的物理上分离的设备。

继续参考图1,存储设备132和133可配置为,对配置为存储计算机软 件、数据或其他计算机可读信息的可移动存储单元进行读取和/或写入。适 合的可移动存储单元的示例包括但不限于,软盘、盒式磁带、光盘、闪速 存储器设备等等。存储设备132和133还可包括其他类似结构或设备,以 允许计算机软件、数据或其他计算机可读指令载入计算系统110。举例来 说,存储设备132和133可配置为读取和写入软件、数据或其他计算机可 读信息。存储设备132和133还可以是计算系统110的一部分,或可以是 通过其他接口系统访问的单独设备。

许多其他设备或子系统可连接至计算系统110。相反,无需具备图1 示出的所有部件和设备来施行本文所述的实施例。上文涉及的设备和子系 统还可以不同于图1所示的方式互相连接。计算系统110还可采用任意数 量的软件、固件和/或硬件配置。举例来说,本文公开的示范性实施例可在 计算机可读介质上编码为计算机程序(也称作计算机软件、软件应用、计 算机可读指令或计算机控制逻辑)。

包含计算机程序的计算机可读介质可载入计算系统110。存储于计算机 可读介质上的全部或部分计算机程序随后可存储于系统存储器116和/或存 储设备132和133的各部分中。当由处理器114执行时,载入计算系统110 中的计算机程序可使处理器114实施和/或作为实施本文描述和/或示出的 示范性实施例的功能的手段。附加地或替代地,本文描述和/或示出的示范 性实施例可在固件和/或硬件中实现。

用于针对非对称执行单元高效调度的方法和装置

本发明的实施例提供其中执行单元可以执行多种类型的指令的方法和 装置,例如,A类型和E类型二者的指令。另外,本发明的实施例提供针 对非对称执行单元的更高效的调度,其优化分派吞吐量、优先于较新的指 令块先考虑较早的指令块、以及维持有竞争力的延迟。

本发明的实施例支持非对称执行单元类型A和E,其中A类型执行单 元可以仅支持A类型指令,但E类型执行单元可以支持A类型和E类型 指令。相应,A类型指令可以在A和E单元中执行,但E类型指令只能在 E单元中执行。A类型执行单元因此可以认为是E类型执行单元的子集。

在一个实施例中,调度器首先填充A执行单元端口,并且随后采用没 有由A执行单元选中的所有其他指令块来填充E执行单元端口。在一个实 施例中,调度器包括“发现-8”和“发现-4”逻辑电路。发现-8电路针对 满足选择标准的第一8个最早指令搜索调度器中的分派范围。同时,发现 -4电路与发现-8电路一起并行采用,用于搜索第一4个最早A类型指令块。 发现-4电路的结果被用于调度A类型执行单元。没有由发现-4选中的剩余 的指令,最早的4个随后被调度用于E类型执行单元。例如,如果发现-8 电路选择3个A类型和5个E类型指令,并且发现-4电路挑选3个A类 型指令(也由发现-8逻辑所选择),那么3个A类型指令被调度用于A端 口,而剩余5个E类型指令中的最早的4个被调度用于E端口。然而,本 发明不限于该实施例。如果例如调度器在一个周期可以分派16个指令,那 么将并行采用“发现-16”和“发现-8”电路等等。

相应,本发明的实施例具有高的分派效率的优点,因为其尝试填充A 类型端口和E类型端口两者。此外,本发明的实施例具有在两种类型的块 之间的较好的整体时间优先顺序。最后,因为并行采用发现-8电路和发现 -4电路两者,所以本发明的实施例在实施调度过程中还维持有竞争力的延 迟。

图2示出了可以选择非统一指令用于非对称执行单元的方式的示例。A 类型指令可以在A单元和E单元两者中执行,而E指令只能在E单元中执 行。因此,如上所述,A类型执行单元可以认为是E类型执行单元的子集。 图2示出了非统一指令如何被选择用于非对称执行单元的示例。指令272、 276、278、284和286是A类型指令,而指令274、280和282是E类型 指令。调度器280分派指令到非对称执行单元,其中执行单元252、254、 256和258是A类型执行单元,而260、262、264和266是E类型执行单 元。调度器包含5个A类型指令和3个E类型指令。所有E类型指令只在 E类型执行单元中执行,而A类型指令被分派到A类型和E类型执行单元。 例如,如图2所示,A类型指令的指令284在A类型单元的执行单元258 中执行,而同样是A类型指令的指令286在E类型执行单元的执行单元 266中执行。

如上所述,A类型指令的示例是诸如加法和减法运算的整数运算,而E 类型指令的示例是诸如浮点加法、浮点减法和浮点乘法的浮点运算。因此, 根据发明实施例,可以稍微改变E类型执行单元来支持A类型指令。这样 做使得E类型执行单元逻辑上稍微更复杂,但是付出的损失最小并且在灵 活性和延迟方面所获得的益处更胜一筹。

图3是根据本发明的一个实施例的、本发明的实施例可以在其上实现 的用于乱序微处理器的管线的示例性框图。

如图3所示,在获取段302处获取指令并将其放置在获取段302中的 指令获取队列(IFQ)(未示出)中。这些指令引用存储在寄存器文件310 中的体系构架寄存器。在指令从获取单元302分派之后,指令由解码模块 304解码并放置在ROB308和发布队列306(IQ)中。在本发明的一个实 施例中,调度器模块372包括ROB308和IQ306。随着使用调度器模块 372将指令乱序发布出IQ306,指令由执行模块312执行。

如上所讨论,在本发明的一个实施例中,执行模块312包括非对称执 行单元A和E,其中A类型执行单元仅支持A类型指令,但是E类型执 行单元可以支持A类型和E类型指令。因此,A类型指令可以在A单元和 E单元两者中执行,而E指令只能在E单元中执行。相应,A类型执行单 元可以是E类型执行单元的子集。

在一个实施例中,写回模块314可以将来自这些指令的结果值首先写 回到ROB308中的临时寄存器。ROB308跟踪指令进入管线的程序顺序, 并且针对这些执行中的每一个,ROB在物理寄存器文件380中维护临时寄 存器存储。在本发明的一个实施例中,物理寄存器文件随着指令从调度器 分派而被动态地分配。因为物理寄存器文件随着指令从调度器分派而被分 配,它没有按照时间顺序。物理寄存器文件无序地存储条目并且等待它们 按顺序退隐(retire)到体系架构寄存器文件310。

当ROB中的最早的指令产生有效结果时,那些指令可以安全提交。换 言之,由于不存在可能产生可以取消那些指令的效果的错误预测或者异常 的更早的指令,因此那些指令的结果可以是永久性的。当指令已经被提交 时,ROB308将针对那些指令移动临时寄存器中的对应的值到体系架构寄 存器文件310。因此,通过ROB308的按顺序提交过程,寄存器文件310 中的结果是永久性且体系架构上可视的。

从IQ306乱序发布的指令还可以包括加载和存储。当加载和存储从IQ 306乱序发布时,在那些指令可以被提交前需要解决它们之间的存储器依 赖关系。相应,加载和存储指令在加载存储队列(LSQ)316中进行存储 而它们之间的依赖关系在它们的结果值可以提交到存储器318之前依靠 ROB308的帮助得以解决。

图4是示出了根据本发明实施例的、调度指令用于非对称执行单元的 方案的框图。

存在调度指令用于非对称执行单元的数种方式。如上讨论,方式之一 是挑选A类型指令用于A类型执行单元以及E类型指令用于E类型执行 单元。先前已经讨论过这种类型的原生调度方案的缺点。

调度指令的另一种方式将会首先选择E类型指令填充E类型执行单元, 并且如果没有足够的E类型指令块,那么选择更多的A类型指令块填充E 单元并且随后填充A单元。该方案的问题首先在于两个步骤过程必须以串 行的方式实施,这意味着没有延迟友好性。其次,该过程没有整体的时间 优先顺序。例如,在某些情况下,该过程会先于较早的A指令挑选较新的 E指令填充E执行单元。

最后,调度指令的第三中方式将会(a)首先填充A执行端口,随后, (b)采用没有由先前步骤挑选的所有其他指令块来填充E端口。换言之, 该过程将优先考虑第一A类型指令块,例如,在每周期分派8个指令并且 包括4个A类型的执行单元的调度器中,将会优先考虑第一4个A类型指 令块。由于E类型执行单元可以采用A或者E类型的指令,因此在尝试填 充A类型执行单元之后填充E类型执行单元。

该过程具备高效率,因为它会尝试填充两种类型的执行端口,A类型 和E类型。其很好的根据两种类型的块之间的整体时间优先顺序来实施。 虽然,它可能呈现为当A类型块比E类型块更新时它给A类型块太多的优 先,然而情况不是这样的。例如在每周期可以分派8个指令并且包括4个 A类型执行单元和4个E类型执行单元的调度器中,最多只可以选择4个 E类型指令块。结果是,第5个E类型指令块或者其他E类型指令块是否 具有比A类型块更早的时间并无关系。根本不能挑选它们。换言之,在给 定周期中只有4个E类型的指令可以被挑选,如果该过程首先填充A执行 端口,那么并不影响整体时间优先顺序。

为了最大化分派机会,本发明的实施例因此配置为根据以上详述的第 三种方式首先调度A端口然后是E端口。然而,该过程的一个缺点是由于 两步骤实现带来的不具定时友好性。这是一个问题,因为在较高性能的处 理器中分派搜索逻辑是延迟决定性的。为了解决该问题,本发明的实施例 并行化过程中的某些步骤,如下讨论的。

图4是示出了根据本发明实施例的、调度指令用于非对称执行单元的 方案的框图。为了并行化以上讨论的过程,在调度器472中发现-4逻辑结 构406配置为与发现-8逻辑404并行。发现-8逻辑是可操作为选择满足选 择标准的、将被分派的第一8个最早指令的结构。发现-4逻辑结构可操作 为选择满足选择标准的、将被分派的第一4个最早指令。

发现-8结构404贯穿调度器中的分派范围搜索8个候选者。所使用的 标准是指令候选者的准备好比特。如果准备好比特被设置,那么指令准备 好被分派。掩码出去E类型指令,发现-4结构406贯穿分派范围搜索4个 A类型块。这采用发现-8操作来并行实施。除了仅搜索A类型指令块的附 加标准外,发现-4逻辑与发现-8逻辑类似。发现-8和发现-4逻辑两者搜索 分派范围内的最高优先级的块。在一个实施例中,逻辑结构使用指令的重 排序缓冲器ID(ROBID)来确定优先级。在另一个实施例中,可以指派 索引号给调度器中的每个条目,其也可以用于确定优先级。

将来自发现-4模块406的结果传送到执行模块474中的A类型执行单 元410,其中所述来自发现-4模块406的结果掩码出E类型指令并且仅选 择A类型指令。换言之,发现-4模块406掩码出E类型指令并且贯穿分派 范围搜索4个A类型块。同时,发现-8模块404与发现-4模块406并行选 择最早的8个指令,包括A类型和E类型。来自发现-4结构406的结果随 后由发现-8模块404使用以分派没有由发现-4结构406选中的最早的剩余 指令到E类型执行单元408。换句话说,由发现-4结构406所选中的指令 被从由发现-8模块404所选中的指令中掩码出,并且最早的4个剩余指令 被分派到E类型执行单元408。该过程的有效效应是优先于E类型块先考 虑较早的A类型块。

例如,发现-8模块404可以选择确定是最高优先级指令的5个A类型 指令和3个E类型指令。发现-4模块406在该实例中将挑选5个A类型指 令中最早的4个来分派到A类型执行单元410。这4个最早的A指令随后 将从由发现-8模块404选择的指令集合中掩码出。剩余的3个E类型指令 和1个最新的A类型指令将随后分派给E类型执行单元408。

通过另一个示例的方式,发现-8模块404可以选择确定是最高优先级 指令的3个A类型指令和5个E类型指令。发现-4模块406在该实例中将 挑选3个A类型指令以分派到A类型执行单元410。这3个A指令随后将 从由发现-8模块404选择的指令集合中掩码出。剩余的5个由发现-8模块 404所选择的E类型指令,最早的4个E类型指令将被选择以分派给E类 型执行单元408。

在一个实施例中,用来划分调度器中的指令优先顺序的索引号或者 ROBID也用来计算用于在执行模块474中执行指令的执行单元的端口号。

结合发现-8模块使用发现-4模块的并行化操作节省了大量时间。如上 所述,在高性能处理器中,基本分派搜索逻辑是延迟决定性的。例如,如 果填充A执行端口之后填充E执行端口是串行化的,那么每个操作可能占 用1ns,导致占用2ns的分派搜索逻辑。通过将例如可能占用1.2ns的发现 -8操作和可能占用1ns的发现-4操作并行化,本发明的实施例可以在每个 周期的分派期间节省0.8ns,这从处理器设计的角度看是非常重要的。此外, 与发现-4或者发现-8操作自己的延迟相比较,从发现-8结构的结果分离发 现-4结构的结果的掩码操作占用的时间量是不显著的。

图5是示出了根据本发明实施例的、采用每周期分派8个指令的调度 器来调度指令用于非对称执行单元的方案的表。如上所述,虽然示例是基 于每个周期选择和分派8个指令的调度器,本发明的实施例可以是易于扩 展以适应调度器分派多于8个或少于8个指令的要求。

基于其ROBID或者维持为对指令排序或者按优先顺序排序指令的任 何另一个索引号,指令572至599被按照优先级排序。发现-8模块搜索设 置了其准备好比特的8个最高优先级(或最早)指令。相应的,发现-8模 块选择指令572、574、576、578、580、588、590和592,如在图5的表 中分别由计数值0到7指示的。具有未断言的其准备好比特的指令例如 582、584和586被忽略。此外,在最高优先级8之外的指令例如指令594、 596、598和599被忽略。

如上所述,发现-4逻辑贯穿分派范围搜索A类型块并且如果发现超过 4个则使计数饱和。如在图5的表中第3栏所示,在选择了第一4个A类 型指令572、574、580和590之后,发现-4模块饱和并且不能选择最后的 A类型指令592,其也由发现-8模块选择。如上解释,传送第5个A类型 指令用于在E类型执行单元408中进行调度。

如在图5的表中第4栏所示,针对发现-4逻辑模块采用用于A类型指 令的掩码使得能够选择A类型指令。该掩码使得发现-4模块能够选择在发 现-8计数0到7范围(如第2栏中所示)内的四个A类型指令(572、574、 580和590)。

此外,如第5栏所示,掩码用于E类型指令——该掩码还挑选没有由 发现-4模块选中的A类型指令。该掩码由发现-8模块采用以确定应该分派 到E执行单元的指令。相应,由该掩码掩码出的指令是0到7计数范围内 的3个E类型指令576、578、588以及单个A类型指令592,所述A类型 指令592由于发现-4模块已经饱和而没有由其选中。

图6描绘了根据本发明实施例的、用于乱序微体系架构中的指令调度 的示例性计算机控制的过程。虽然顺序表示和描述流程图中各步骤,普通 技术人员应该理解一些或所有步骤都可以按不同顺序执行,并且一些或者 所有步骤可以并行执行。此外,在本发明的一个或多个实施例中,以下所 描述的一个或多个步骤可以省略、重复和/或以不同的顺序实现。相应,图 6中步骤的布置不应解释为对发明的方面进行限制。此外,对于参照本文 所提供的教导的相关领域的技术人员来说显而易见的是,其他功能流程也 在本发明的范围与精神内。流程600可以继续参考上述示例性实施例来描 述,虽然方法不限于这实施例。

在步骤602,选择指令的第一集合以从调度器472分派到执行模块474。 在一个实施例中,发现-8结构404可以选择达8个高优先级指令每次从调 度器进行分派。如上所述,调度器可以操作为分派两种类型的指令,A类 型和E类型。执行模块也包括两种类型的执行单元,其中A类型执行单元 可以仅执行A类型指令,而E类型执行单元可以执行A类型指令和E类 型指令。

在步骤604,另一个发现和选择模块例如发现-4模块406可以配置为 选择指令的第二集合以从调度器进行分派。指令的第二集合是指令的第一 集合的子集,例如,发现-4模块选择4个指令,其是由发现-8模块选择的 8个指令的子集。然而,第二子集仅包括一种类型的指令,例如A类型的 指令。

在步骤606,确定指令的第三集合,其包括没有由指令的第二集合选中 的、指令的第一集合中的指令。

在步骤608,分派指令的第二集合用于使用第二类型执行单元执行。例 如,发现-4结构分派A类型指令用于在A类型执行单元中执行。以及,最 后在步骤610,分派指令的第三集合到执行模块用于在第一类型执行单元 中执行。例如,发现-8模块分派没有由发现-4模块挑选的指令用于在E类 型执行单元中执行。

虽然前述公开阐述了使用特定框图、流程图和示例的各种实施例,每 个框图部件、流程图步骤、操作和/或本文描述和/或示出的组件均可单独地 和/或共同地,通过使用各种不同的硬件、软件或固件(或其任意组合)配 置来实现。另外,对包含在其他部件内的部件的任何公开均应视为示例, 因为可实现许多其他体系架构来达到相同的功能。

本文描述和/或示出的工艺参数和步骤序列仅以示例方式给出。举例来 说,虽然本文示出和/或描述的步骤可能以特定的顺序显示或论述,但这些 步骤不是必须按所示出或论述的顺序来实施。本文描述和/或示出的各种示 范性方法也可以省略一个或多个本文描述或示出的步骤,或包括附加步骤 作为那些所公开步骤的补充。

虽然本文已围绕全功能计算系统描述和/或示出了各种实施例,但这些 示范性实施例中的一个或多个可分配为各种各样的形式的程序产品,而与 用来实际执行分配的计算机可读介质的特定类型无关。本文公开的实施例 也可以使用实施某些任务的软件模块来实现。这些软件模块可包括脚本、 批处理或其他可被存储在计算机可读存储介质上或计算系统内的可执行文 件。这些软件模块可以配置计算系统来实施一个或多个本文公开的示范性 实施例。

前述的描述,出于解释的目的,已参考特定实施例进行了描述。然而, 上述说明性的论述不旨在穷举或将本发明限制在所公开的明确形式上。鉴 于以上教导,许多修改和变形是可能的。实施例被选择和描述以最好地解 释本发明的原理及其实际应用,从而使其他的本领域技术人员采用各种适 用于特定预期用途的修改来最好地利用本发明和各种实施例。

根据本发明的实施例因此被描述。虽然本公开已在特定实施例中加以 描述,但应理解本发明不应被解释为限于这些实施例,而应根据以下的权 利要求来进行解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号