《具有多个子寄存器文件的寄存器文件.pdf》由会员分享,可在线阅读,更多相关《具有多个子寄存器文件的寄存器文件.pdf(35页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103970505 A (43)申请公布日 2014.08.06 C N 1 0 3 9 7 0 5 0 5 A (21)申请号 201410033696.8 (22)申请日 2014.01.24 1301285.1 2013.01.24 GB G06F 9/30(2006.01) G06F 9/38(2006.01) (71)申请人想象力科技有限公司 地址英国赫特福德郡 (72)发明人 H杰克逊 (74)专利代理机构永新专利商标代理有限公司 72002 代理人王英 张立达 (54) 发明名称 具有多个子寄存器文件的寄存器文件 (57) 摘要 本发明公开了用于在乱序处。
2、理器中使用的被 划分为多个子寄存器文件的寄存器文件。所述寄 存器文件还具有多个缓冲器,每一个缓冲器与所 述子寄存器文件中的一个相关联。每一个缓冲器 接收并存储目的地为相关联的子寄存器文件的写 入操作,所述写入操作随后被发布到所述子寄存 器文件。具体地说,在每一个时钟周期,确定在所 述缓冲器中是否存在还没有被发布到所述相关联 的子寄存器文件的至少一个写入操作。如果在所 述缓冲器中存在还没有被发布到所述相关联的子 寄存器文件的至少一个写入操作,则将未发布的 写入操作中的一个发布到所述相关联的子寄存器 文件。每一个子寄存器文件也可以具有仲裁逻辑 单元,所述仲裁逻辑单元通过优先考虑读取操作 来解决想要。
3、在相同的时钟周期中访问所述相关联 的子寄存器文件的读取和写入操作之间的冲突, 除非相冲突的写入操作已经到达呈交时间。 (30)优先权数据 (51)Int.Cl. 权利要求书4页 说明书20页 附图10页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书20页 附图10页 (10)申请公布号 CN 103970505 A CN 103970505 A 1/4页 2 1.一种用于在乱序处理器(100,600)中使用的寄存器文件(102,630),所述寄存器文 件包括: 多个子寄存器文件(202-212,702-712),每一个子寄存器文件(202-212,702-。
4、712)包 括至少一个物理寄存器;以及 多个缓冲器(214-224,714-736),每一个缓冲器(214-224,714-736)与子寄存器文件 (202-212,702-712)相关联并且布置为: 接收目的地为相关联的子寄存器文件(202-212,702-712)的写入操作; 将每一个接收到的写入操作存储在所述缓冲器中; 接收对于存储在所述缓冲器(214-224,714-736)中的每一个写入操作的写入值; 将每一个接收到的写入值存储在所述缓冲器中; 对存储对于特定的写入操作的写入值做出响应,将所述特定的写入操作识别为等待写 入操作; 在每一个时钟周期,确定在所述缓冲器(214-224,7。
5、14-736)中是否存在至少一个等待 写入操作;并且 对确定在所述缓冲器(214-224,714-736)中存在至少一个等待写入操作做出响应,选 择所述等待写入操作中的一个并且将选择的写入操作发布到所述相关联的子寄存器文件 (202-212,702-712)。 2.如权利要求1所述的寄存器文件(102,630),进一步包括多个仲裁逻辑单元(304, 804),每一个仲裁逻辑单元(304,804)与子寄存器文件(202-212,702-712)相关联并且布 置为: 接收被发布到所述相关联的子寄存器文件(202-212,702-712)的写入和读取操作;并 且 通过优先处理读取操作来解决在相同的时。
6、钟周期中被发布到所述相关联的子寄存器 文件(202-212,702-712)的读取和写入操作之间的冲突,除非相冲突的写入操作将被重写。 3.如权利要求1所述的寄存器文件(102,630),进一步包括多个仲裁逻辑单元(304, 804),每一个仲裁逻辑单元(304,804)与子寄存器文件(202-212,702-712)相关联并且布 置为: 接收被发布到所述相关联的子寄存器文件(202-212,702-712)的写入和读取操作;并 且 通过优先处理读取操作来解决在相同的时钟周期中被发布到所述相关联的子寄存器 文件(202-212,702-712)的读取和写入操作之间的冲突,除非相冲突的写入操作已。
7、经到达 呈交时间。 4.如权利要求1所述的寄存器文件(102,630),进一步包括至少一个读取逻辑单元 (302、802),每一个读取逻辑单元与至少一个子寄存器文件(202-212,702-712)相关联并且 布置为: 接收对于每一个相关联的子寄存器文件(202-212,702-712)的读取操作;并且 将每一个读取操作发布到适当的子寄存器文件(202-212,702-712)以及与所述适当的 子寄存器文件(202-212,702-712)相关联的至少一个缓冲器(214-224,714-736)。 5.如权利要求4所述的寄存器文件(102,630),其中,每一个读取逻辑单元(302,802) 。
8、权 利 要 求 书CN 103970505 A 2/4页 3 布置为仅对确定被发布到与所述适当的子寄存器文件(202-212,702-712)相关联的所述至 少一个缓冲器(214-224,714-736)的所述读取操作不产生匹配做出响应来将所述读取操作 发布到所述适当的子寄存器文件(202-212,702-712)。 6.如权利要求4所述的寄存器文件(102,630),其中,每一个读取逻辑单元(302,802) 布置为在相同的时钟周期中将所述读取操作发布到所述适当的子寄存器文件(202-212, 702-712)以及与所述适当的子寄存器文件(202-212,702-712)相关联的所述至少一个。
9、缓冲 器(214-224,714-736)。 7.如权利要求1所述的寄存器文件(102,630),其中,所述子寄存器文件(202-212, 702-712)的数量等于在单个时钟周期中能够由所述乱序处理器(100,600)呈交的指令的数 量。 8.如权利要求1所述的寄存器文件(102,630),其中,所述子寄存器文件(202-212, 702-712)中的每一个被实现在随机存取存储器中。 9.如权利要求1所述的寄存器文件(102,630),其中,所述写入操作按照程序顺序被存 储在所述多个缓冲器(214-224,714-736)中。 10.如权利要求1所述的寄存器文件(102,630),其中,所述。
10、多个缓冲器(214-224, 714-736)中的每一个是环形缓冲器。 11.如权利要求1所述的寄存器文件(102),其中,存储在缓冲器(214-224)中的每一个 写入操作最晚在呈交时间被发布到所述相关联的子寄存器文件(202-212)。 12.如权利要求3所述的寄存器文件(630),其中,所述乱序处理器(600)是多线程处理 器,并且每一个子寄存器文件(702-712)与多个缓冲器(714-736)相关联,每一个相关联的 缓冲器(714-736)布置为从多个线程(602、604)中的一个接收并存储写入操作。 13.如权利要求12所述的寄存器文件(630),其中,每一个仲裁逻辑单元(804)。
11、布置为 通过优先处理读取操作来解决在相同的时钟周期中被发布到所述相关联的子寄存器文件 (702-712)的读取和写入操作之间的冲突,除非相冲突的写入操作已经到达呈交时间或它 的呈交时间已经过去。 14.如权利要求13所述的寄存器文件(630),其中,每一个仲裁逻辑单元(804)布置 为: 确定对于在特定的时钟周期中被发布到所述相关联的子寄存器文件(702-712)的至少 一个写入操作的呈交时间是否已经过去; 对确定对于被发布到所述相关联的子寄存器文件的至少一个写入操作的呈交时间已 经过去做出响应,选择其呈交时间已经过去的所述写入操作中的一个并且在所述特定的时 钟周期期间将选择的写入操作提交到所。
12、述相关联的子寄存器文件(702-712); 对确定对于在所述特定的时钟周期中被发布到所述相关联的子寄存器文件(702 -712) 的至少一个写入操作的呈交时间还没有过去做出响应,确定是否是对于被发布到所述相关 联的子寄存器文件(702-712)的至少一个写入操作的呈交时间; 对确定不是对于被发布到所述相关联的子寄存器文件的至少一个写入操作的呈交时 间做出响应,将任何读取操作提交到所述相关联的子寄存器文件;并且 对确定是对于被发布到所述相关联的子寄存器文件的至少一个写入操作的呈交时间 做出响应,选择已经到达呈交时间的所述写入操作中的一个,并且将选择的写入操作提交 权 利 要 求 书CN 1039。
13、70505 A 3/4页 4 到所述相关联的子寄存器文件(702-712)。 15.如权利要求3所述的寄存器文件(102,630),其中,以从所述乱序处理器(100,600) 的至少一个呈交级(114,622,624)接收到的信息为基础来确定对于特定的写入操作的呈交 时间。 16.一种乱序处理器(100,600),包括: 寄存器文件(102,630),所述寄存器文件包括: 多个子寄存器文件,每一个子寄存器文件包括至少一个物理寄存器;和 多个缓冲器,每一个缓冲器与子寄存器文件相关联并且布置为: 接收目的地为相关联的子寄存器文件的写入操作; 将每一个接收到的写入操作存储在所述缓冲器中; 接收对于存。
14、储在所述缓冲器中的每一个写入操作的写入值; 将每一个接收到的写入值存储在所述缓冲器中; 对存储对于特定的写入操作的写入值做出响应,将所述特定的写入操作识别为等待写 入操作; 在每一个时钟周期,确定在所述缓冲器中是否存在至少一个等待写入操作;并且 对确定在所述缓冲器中存在至少一个等待写入操作做出响应,选择所述等待写入操作 中的一个并且将选择的写入操作发布到所述相关联的子寄存器文件;以及 解码和重命名级(106,610,612),所述解码和重命名级(106,610,612)布置为: 接收取出的指令; 对于在所述取出的指令的写入操作中提到的任何架构寄存器分派子寄存器文件 (202-212,702-7。
15、12)以及来自分派的子寄存器文件(202-212,702-712)的物理寄存器;并 且 使用分派的子寄存器文件(202-212,702-712)的指示符和分派的物理寄存器的指示符 来重命名所述架构寄存器。 17.如权利要求16所述的乱序处理器(100,600),其中,所述子寄存器文件(202-212, 702-712)在循环的基础上被分派到架构寄存器。 18.如权利要求16所述的乱序处理器(100,600),其中,子寄存器文件(202-212, 702-712)和物理寄存器到架构寄存器的分派被存储在寄存器重命名映射(108,614,616) 中。 19.如权利要求18所述的乱序处理器(100,。
16、600),其中,所述解码和重命名级(106, 610,612)进一步布置为: 使用在所述寄存器重命名映射(108,614,616)中指定的分派的子寄存器文件 (202-212,702-712)的指示符和分派的物理寄存器的指示符来重命名在所述取出的指令的 读取操作中提到的任意架构寄存器。 20.一种读取和写入乱序处理器(100,600)的寄存器文件(102,630)的方法,所述 寄存器文件(102,630)包括多个子寄存器文件(202-212,702-712),每一个子寄存器文件 (202-212,702-712)包括至少一个物理寄存器,所述方法包括: 在多个缓冲器(214-224,714-73。
17、6)中的一个处接收目的地为相关联的子寄存器文件 (202-212,702-712)的写入操作; 权 利 要 求 书CN 103970505 A 4/4页 5 将接收到的写入操作存储在所述缓冲器(214-224,714-736)中; 在所述缓冲器(214-224,714-736)处接收对于所述写入操作的写入值; 在所述缓冲器(214-224、714-736)中与所述写入操作相关联地存储接收到的写入值; 对将接收到的写入值存储在所述缓冲器中做出响应,将所述写入操作识别为等待写入 操作; 在每一个时钟周期,确定在所述缓冲器中是否存在至少一个等待写入操作;并且 对确定在所述缓冲器中存在至少一个等待写入。
18、操作做出响应,选择所述等待写入操作 中的一个并且将选择的写入操作发布到相关联的子寄存器文件。 权 利 要 求 书CN 103970505 A 1/20页 6 具有多个子寄存器文件的寄存器文件 背景技术 0001 在现代超标量处理器中,存在大量管线,这些管线都试图从共享寄存器文件进行 读取并写入到共享寄存器文件。然而,在不降低时钟速度的情况下,难于实现具有大量的读 取和写入端口的共享寄存器文件。 0002 解决这一问题的一种方法是实现寄存器文件高速缓存。这使用多个高速缓存(与 系统中的存储器高速缓存无关)来减小共享寄存器文件上的带宽。在这样的系统中,可以使 用写回高速缓存系统来降低到寄存器的写入。
19、的数量,因为物理寄存器在退役时可以从高速 缓存移除。然而,这些系统要求某种形式的管理来在高速缓存之间迁移当前没有驻留在共 享寄存器文件中的数据。 0003 下面描述的实施例不局限于解决已知处理器的任何或所有缺点的实现。 发明内容 0004 提供这一发明内容部分以便引入下面在具体实施方式中进一步描述的简化形式 的概念的选择。这一发明内容部分并不意在识别请求保护的主题的关键特征或本质特征, 也不意在在确定请求保护的主题的范围时用作辅助。 0005 本文描述了用于乱序处理器的被划分为多个子寄存器文件的寄存器文件。这些寄 存器文件还具有多个缓冲器,每一个缓冲器与子寄存器文件中的一个相关联。每一个缓冲 。
20、器接收并存储目的地为相关联的子寄存器文件的写入操作,随后将该写入操作发布到所述 子寄存器文件。具体地说,在每一个调度周期(例如,时钟周期),确定在所述缓冲器中是否 存在还没有被发布到相关联的子寄存器文件的至少一个写入操作。如果存在,则将未发布 的写入操作中的一个发布到相关联的子寄存器文件。每一个子寄存器文件也可以具有仲裁 逻辑单元,所述仲裁逻辑单元通过优先考虑读取操作来解决想要在相同的调度周期(例如, 时钟周期)中访问相关联的子寄存器文件的读取和写入操作之间的冲突,除非相冲突的写 入操作已经到达呈交时间。 0006 第一方面提供一种用于乱序处理器的寄存器文件,所述寄存器文件包括:多个子 寄存器。
21、文件,每一个子寄存器文件包括至少一个物理寄存器;以及多个缓冲器,每一个缓冲 器与子寄存器文件相关联并且配置为:接收并存储目的地为相关联的子寄存器文件的写入 操作;接收并存储对于存储在子寄存器文件中的每一个写入操作的写入值,一旦接收到了 对于特定的写入操作的写入值,该写入操作就变为等待写入操作;在每一个时钟周期,确定 在缓冲器中是否存在至少一个等待写入操作;并且如果在缓冲器中存在至少一个等待写 入操作,则选择等待写入操作中的一个并且将选择的写入操作发布到相关联的子寄存器文 件。 0007 第二方面提供一种乱序处理器,包括:根据第一方面的寄存器文件;以及解码和 重命名级,所述解码和重命名级配置为:。
22、接收取出的指令;对于在取出的指令的写入操作 中提到的任何架构寄存器分派子寄存器文件和分派的子寄存器文件的物理寄存器;并且使 用分派的子寄存器文件的指示符和分派的物理寄存器的指示符来重命名该架构寄存器。 说 明 书CN 103970505 A 2/20页 7 0008 第三方面提供一种读取和写入乱序处理器的寄存器文件的方法,所述寄存器文件 包括多个子寄存器文件,每一个子寄存器文件包括至少一个物理寄存器,所述方法包括:在 多个缓冲器中的一个处接收目的地为相关联的子寄存器文件的写入操作;将接收的写入操 作存储在所述缓冲器中;在所述缓冲器处接收对于所述写入操作的写入值;将接入的写入 值存储在与所述写入。
23、操作相关联的缓冲器中,使所述写入操作变为等待写入操作;在每一 个时钟周期,确定在所述缓冲器中是否存在任何等待写入操作;并且如果在所述缓冲器中 存在至少一个等待写入操作,则选择所述等待写入操作中的一个并且将其发布到所述相关 联的子寄存器文件。 0009 本文描述的方法可以由配置有存储在有形存储介质上的机器可读形式的软件的 计算机执行,例如,以包括计算机可读程序代码的计算机程序的形式,所述计算机程序代码 用于配置计算机来执行所述方法的组成部分,或者以包括计算机程序代码模块的计算机程 序的形式,所述计算机程序代码模块适合于当在计算机上运行程序时执行本文描述的任何 方法的所有步骤,并且其中所述计算机程。
24、序可以体现在计算机可读存储介质上。有形(或非 暂态)存储介质的示例包括磁盘、指状驱动、存储卡等等,且不包括传播的信号。软件可以适 合于在并行处理器或串行处理器上执行,以使得可以按照任何适当的顺序或同时执行所述 方法步骤。 0010 本文描述的硬件部件可以由非暂态计算机可读存储介质生成,所述非暂态计算机 可读存储介质具有编码在其上的计算机可读程序代码。 0011 这承认固件和软件可以被单独使用并且是有价值的。意在包括在“无效(dumb)” 或标准硬件上运行或控制该“无效”或标准硬件的软件以便执行期望的功能。还意在包括 “描述”或定义硬件的配置的软件,例如,用于设计硅芯片或用于配置通用可编程芯片的。
25、HDL (硬件描述语言)软件,以便执行期望的功能。 0012 可以对优选特征进行适当组合,这对于本领域的普通技术人员来说将变得显而易 见,并且可以将优选特征与本发明的任何方面进行组合。 附图说明 0013 将通过示例的方式参照下面的附图来描述本发明的实施例,在附图中: 0014 图1是示例单线程乱序处理器的示意图; 0015 图2是图1的示例寄存器文件的示意图; 0016 图3是用于控制到图2的子寄存器文件的读取/写入访问的示例逻辑单元的示意 图; 0017 图4是用于写入图2的寄存器文件并从图2的寄存器文件读取的示例方法的流程 图; 0018 图5是用于解决在相同的时钟周期中发布到图2的寄存。
26、器文件的相同子寄存器文 件的读取和写入操作之间的冲突的示例方法的流程图; 0019 图6是示例多线程乱序处理器的示意图; 0020 图7是图6的示例寄存器文件的示意图; 0021 图8是用于控制到图7的子寄存器文件的读取/写入访问的示例逻辑单元的示意 图; 说 明 书CN 103970505 A 3/20页 8 0022 图9是用于解决在相同的时钟周期中发布到图7的寄存器文件的相同子寄存器文 件的读取和写入操作之间的冲突的第一示例方法的流程图;以及 0023 图10是用于解决在相同的时钟周期中发布到图7的寄存器文件的相同子寄存器 文件的读取和写入操作之间的冲突的第二示例方法的流程图。 0024。
27、 在整个附图中使用共同的附图标记来指示类似的特征。 具体实施方式 0025 下面仅通过示例的方式来描述本发明的实施例。这些示例代表申请人当前已知的 实施本发明的最佳方式,尽管它们不是能够实现本发明的唯一方式。该实施方式阐述了该 示例的功能以及用于构建和操作该示例的步骤的序列。然而,可以通过不同的示例来实现 相同或等效的功能和序列。 0026 本文描述的实施例涉及用于减少到在乱序处理器中使用的共享寄存器文件的读 取和写入端口的数量的技术。具体地说,在本文描述的实施例中,将寄存器文件划分为多个 较小的分立子寄存器文件,每一个子寄存器文件具有其自己的缓冲器。每一个子寄存器文 件包括寄存器文件的物理寄。
28、存器的一部分。在重命名级期间,每一个架构寄存器被分派特 定的子寄存器文件和该子寄存器文件内的物理寄存器。然后在相对应的缓冲器中收集到每 一个子寄存器文件的写入并且使该写入缓缓流出到所述子寄存器文件中。 0027 现在参照图1,说明了单线程乱序处理器100,其中,共享寄存器文件102被划分为 多个较小的分立子寄存器文件,每一个子寄存器文件具有其自己的缓冲器。每一个子寄存 器文件包括所述寄存器文件的物理寄存器的一部分。在图1所示的示例中,寄存器文件102 被划分为六个子寄存器文件A、B、C、D、E和F,然而,对于本领域中的普通技术人员显而易见 的是,寄存器文件102可以具有更多或更少的子寄存器文件。
29、。将参照图2更加详细地描述 示例寄存器文件102。 0028 尽管图1的处理器100包括单个共享寄存器文件102,但是在其它示例中,所述处 理器可以包括多个共享寄存器文件(例如,用于浮点架构寄存器的共享寄存器文件和用于 整数架构寄存器的共享寄存器文件)。在这些示例中,可以按照与图1的共享寄存器文件 102类似的方式来配置一个或多个共享寄存器文件。 0029 处理器100包括配置为从由程序计数器(PC)指示的程序(按照程序顺序)取出指 令的取出级104以及布置为解释所述指令并执行寄存器重命名的解码和重命名级106。每 一个指令可以包括寄存器写入操作;一个或多个寄存器读取操作;和/或算术或逻辑操作。
30、。 寄存器写入操作写入到目的地寄存器,并且寄存器读取操作从源寄存器进行读取。在解码 和重命名级期间,在指令中提到的每一个架构寄存器(例如每一个源寄存器和目的地寄存 器)被使用物理寄存器代替(或重命名)。 0030 对于写入操作,每一个架构寄存器(例如,目的地寄存器)被分配/分派特定的子寄 存器文件和在该子寄存器文件内的物理寄存器。在一些情况下,子寄存器文件在循环的基 础(例如A、B、C、D、E、F、A、B、C、D、E、F、A等等)上被分配到架构寄存器。在一些情况下, 每一个指令被分配/分派特定的子寄存器文件,而与该指令是否包括写入操作无关。在指 令不包括写入操作的情况下,分配被忽略。在其它情况。
31、下,仅包括写入操作的指令被分配/ 分派特定的子寄存器文件。 说 明 书CN 103970505 A 4/20页 9 0031 可以将任何分配存储在寄存器重命名映射108中,该寄存器重命名映射108是表 示每一个架构寄存器与最近被分配的子寄存器文件和物理寄存器之间的映射的数据结构。 然后,对于读取操作,对于特定的架构寄存器(例如,源寄存器)的正确的物理寄存器可以根 据寄存器重命名映射108来确定。 0032 在图1的示例中,寄存器重命名映射108包括由架构寄存器标识符索引的指示子 寄存器文件和物理寄存器标识符的四个条目。例如,架构寄存器0当前映射到子寄存器文 件A、物理寄存器6;架构寄存器1当前。
32、映射到子寄存器文件F、物理寄存器5;架构寄存器2 当前映射到子寄存器文件C、物理寄存器1;并且架构寄存器3当前映射到子寄存器文件A、 物理寄存器3。 0033 当指令经过解码和重命名级106传递时,该指令被插入重排序缓冲器110(ROB) 中,并且该指令内的任何写入操作被存储在与适当的子寄存器文件相关联的寄存器文件 102的缓冲器中。此时,写入操作不准备被发布到适当的子寄存器文件,因为要被写入的数 据是未知的。 0034 重排序缓冲器110是使指令能够被乱序地执行但被有序地呈交的缓冲器。重排序 缓冲器110保持按照程序顺序插入在其中的指令,但是ROB内的指令可以由多个乱序管线 112乱序地执行。
33、。 0035 在一些示例中,重排序缓冲器110可以被形成为具有指向ROB110中的最老指令的 头部和指向ROB110中的最年轻指令的尾部的环形缓冲器。换句话说,指令从ROB110的头 部输出,并且该头部被递增到ROB中的下一个指令。存储在重排序缓冲器110中的指令可 以通过ROB ID进行索引,该ROB ID指定指令在重排序缓冲器中的顺序。 0036 乱序管线112一般分别访问共享寄存器文件102以便执行到物理寄存器的读取和 /或写入。当乱序管线希望执行写入操作时,将待写入的值由乱序管线112提供到寄存器文 件102。然后将待写入的值连同相对应的写入操作一起存储在适当的寄存器文件102中。 一。
34、旦写入值被接收并存储在缓冲器中用于特定的写入操作,该写入操作就准备被发布到适 当的子寄存器文件。每一个缓冲器中的准备写入操作然后缓缓流出到相关联的子寄存器文 件。 0037 一旦被执行,将指令按照程序顺序从重排序缓冲器110输出到呈交级114。呈交级 114将指令的结果呈交到寄存器/存储器。呈交级114每时钟周期呈交N个指令,其中N以 处理器100的配置为基础。例如,四路超标量处理器可以每时钟周期呈交四个指令。在另 一示例中,三路双线程处理器可以每时钟周期呈交六个指令。 0038 处理器100还可以包括分支预测器116,该分支预测器116配置为预测在诸如分支 指令的被已知引起可能的流改变的指令。
35、的情况下程序流将采取哪个方向。分支预测是有用 的,因为它使指令能够在分支指令的结果是已知的之前由处理器100推测地执行。分支预 测器116能够接收来自取出级104以及解码和重命名级106的与新指令有关的输入,以及 来自乱序管线112和呈交级114的输入。 0039 当分支预测器116精确地预测程序流时,这改善了处理器的性能。然而,如果分支 预测器116没有正确地预测分支方向,则发生误预测,这需要在程序能够继续之前对该误 预测进行校正。为了校正误预测,丢弃被发送到ROB110的推测性指令,并且取出级104开 始从正确的程序分支取出指令。 说 明 书CN 103970505 A 5/20页 10 。
36、0040 现在参照图2,说明了图1的示例寄存器文件102。寄存器文件102被划分为多个 较小的分立子寄存器文件202-212。图2的示例寄存器文件102被划分为六个子寄存器文 件202-212;然而,对于本领域中的普通技术人员来说显而易见的是,寄存器文件可以具有 更多或更少的子寄存器文件。 0041 在一些情况下,子寄存器文件202-212的数量等于每时钟周期能够由呈交级114 呈交的指令的数量。例如,每时钟周期可以发布四个指令的四路超标量处理器可以具有被 划分为四个子寄存器文件的寄存器文件。类似地,每时钟周期可以发布六个指令的三路双 线程处理器可以具有被划分为六个子寄存器文件的寄存器文件。 。
37、0042 寄存器文件102还包括用于每一个子寄存器文件202-212的一个缓冲器214-224。 将到特定的子寄存器文件202-212的任何写入操作存储在相对应的缓冲器214-224中并且 在稍后的时间写入到子寄存器文件202-212。每一个缓冲器214-224包括用于存储写入操 作的诸如硬件寄存器(例如,触发器)的部件或部件的集合(未示出),以及用于从该部件或 该部件的集合取回写入操作的逻辑单元(未示出)。 0043 在一些情况下,每一个缓冲器214-224具有与图1的ROB110类似的结构。具体地 说,每一个缓冲器214-224可以被实现为具有头部和尾部的环形缓冲器。 0044 在一些情况。
38、下,缓冲器214-224的尺寸的和可以等于ROB110的尺寸。这允许缓冲 器214-224保持任何数量的显著的写入操作,确保缓冲器214-224不溢出。ROB110的尺寸 可以被相等地划分,以使得每一个缓冲器具有相同的尺寸。在其它情况下,缓冲器214-224 的累积尺寸可以大于ROB110的尺寸。 0045 在一些情况下,将写入操作按照该写入操作被接收的顺序存储在缓冲器214-224 中。因为写入操作一般按照程序顺序由解码和重命名级106提供到缓冲器214-224,因此可 以将写入操作按照程序顺序存储在缓冲器214-224中。 0046 在其它情况下,将写入操作按照由与该写入操作相关联的ID指。
39、定的顺序存储在 缓冲器214-224中。例如,可以将写入操作提供到具有相关联的指令的ROB ID的寄存器文 件,这允许将写入操作按照与ROB110中的相关联的指令相同的顺序(例如,按照程序顺序) 放置在缓冲器中。 0047 在存在六个子寄存器文件202-212并且将子寄存器文件202-212在循环的基础上 分派到每一个指令的情况下,将与ROB110中的每第六个指令相关联的写入操作存储在缓 冲器A中。例如,如果将指令放置在ROB110的位置0中,则可以将相对应的写入操作放置 在例如缓冲器A214的位置0中。然后,可以将与ROB110的位置1到5中的指令相对应的 写入操作分别放置在缓冲器B到F21。
40、6-224的位置0中。然后可以将与ROB110的位置6到 11中的指令相对应的写入操作分别放置在缓冲器A到F214-224的位置1中。 0048 因此,可以通过对接收的ID(例如,ROB ID)执行模X操作来确定用于写入操作的 特定缓冲器,其中X是子寄存器文件202-212的数量。在图2所示的示例中,存在六个子寄 存器文件,因而可以对接收的ID(例如ROB ID)执行模6操作以便确定用于存储写入操作 的特定缓冲器。可以然后对该ID(例如ROB ID)执行整数除操作以便确定缓冲器中用于写 入操作的位置或空位。如本领域中的普通技术人员已知的,整数除操作使数字的整数部分 除以一个数字而没有余数。例如。
41、,可以将具有ID为9的写入操作放在缓冲器D(9模6=3) 中的空位1(9整数除6=1)中。 说 明 书CN 103970505 A 10 6/20页 11 0049 由于模和整数除操作是硬件密集的,因此如果X是二的幂,则可以通过从接收的 ID(例如ROB ID)丢掉Y个位来确定缓冲器中用于写入操作的位置或空位,其中Y是log(X) 除以log(2)。在X不是二的幂的情况下,硬件查找表可以用于根据ID(例如ROB ID)来确 定位置(例如,缓冲器索引)。 0050 按照程序顺序将写入操作存储在缓冲器中允许由缓冲器214-224按照任何顺序 接收要被写入到寄存器的值并且按照程序顺序将该值放置在缓冲。
42、器中。一旦按照程序 顺序组织了写入操作,就能够容易地将它们按照程序顺序发布到相关联的子寄存器文件 202-212。 0051 在一些情况下,将缓冲器214-224中的每一个写入操作最迟在呈交时间发布到相 对应的子寄存器文件202-212。这是期望的,因为在这一时间之后,存在缓冲器中的数据会 由随后的写入操作重写的机会。在其它情况下,可以允许在呈交时间之后将写入操作发布 到相对应的子寄存器文件202-212。 0052 由于在每一个时钟周期中存在呈交的N条指令,因此在最坏的情况情景下,所有N 个呈交的指令将在最后一个时钟周期(例如,指令的呈交时间)中被写入到寄存器。期望具 有与在相同的时钟周期(。
43、例如,呈交周期)中被写入到相对应的子寄存器文件202-212的呈 交的指令相关联的所有N个写入操作,以使得在缓冲器中与这些写入操作有关的数据不会 在下一个时钟周期中被随后重写。 0053 在寄存器文件102被划分为个子寄存器文件202-212(例如,如图2所示)并且 子寄存器文件202-212在循环的基础上按照程序顺序被分配到指令的情况下,呈交的指令 中的每一个将被写入到不同的子寄存器文件,因而允许在相同的时钟周期中将所有N个写 入操作发布到其相对应的子寄存器文件202-212。在子寄存器文件202-212的数量小于N 的情况下,处理器100可以配置为当与呈交的指令相关联的所有写入操作不能够在。
44、相同的 周期中被写入到子寄存器文件202-212时停止特定的呈交。 0054 在一些情况(例如,如图2所示)下,每一个子寄存器文件202-212仅具有一个读取 /写入端口。在这些情况下,每一个子寄存器文件可以在随机存取存储器(RAM)而不是触发 器中实现,这对于大寄存器文件节省了面积和功率。在其它情况下,一个或多个子寄存器文 件202-212可以具有多个输入端口。 0055 现在参照图3,说明了用于控制到子寄存器文件202的访问(读取和写入)的示例 逻辑单元(读取逻辑单元302和仲裁逻辑单元304)。 0056 尽管图3示出了用于单个子寄存器文件202的逻辑单元302和304,但是对于本 领域。
45、中的普通技术人员显而易见的是,类似的逻辑单元可以用于控制到每一个其它子寄存 器文件的访问。在一些情况下,可以存在控制读取所有子寄存器文件的单个读取逻辑单元 302。 0057 缓冲器214在派送端口226上从解码和重命名级106接收对于子寄存器文件202 的写入操作,并且将接收的写入操作存储在缓冲器214中。从解码和重命名级106接收到 的每一个写入操作一般指定将被写入的寄存器(例如,寄存器号),但是不指定将被写入到 寄存器的数据。 0058 在一些情况中,将写入操作按照它们被接收的顺序存储在缓冲器214中。由于解 码和重命名级106一般按照程序顺序提供写入操作,因此可以将写入操作按照程序顺序。
46、存 说 明 书CN 103970505 A 11 7/20页 12 储在缓冲器214中。 0059 在其它情况中,将写入操作按照以与每一个写入操作相关联的ID为基础的特定 顺序(例如,程序顺序)存储在缓冲器214中。在一些情况下,所述ID是相对应的指令的ROB ID,以使得将写入操作按照与ROB110中的相对应的指令相同的顺序(例如,程序顺序)放置 在缓冲器214中。例如,如上所述,如果将指令存储在主ROB110中的索引或位置0处,则该 ID可以指示要将写入操作存储在缓冲器214中的索引或位置0处。 0060 缓冲器214还在写入端口228上从乱序管线112接收对于存储在缓冲器214中的 每一。
47、个写入操作的写入值,并且将接收到的写入值存储在缓冲器214中。使用提供有写入 值的ID将每一个写入值匹配到缓冲器214中其相对应的写入操作。在一些情况下,所述ID 是相关联的指令的ROB ID。在其它情况下,所述ID是寄存器号。一旦将对于特定的写入操 作的写入值存储在缓冲器214中,该特定的写入操作就变为等待写入操作,因为它正在等 待被发布到相对应的子寄存器文件/由该相对应的子寄存器文件完成。一旦等待写入操作 被发布到相对应的子寄存器文件/由该相对应的子寄存器文件完成,它就变为发布的或完 成的写入操作。 0061 在每一个调度周期,缓冲器214确定在缓冲器214中是否存在任何等待写入操作。 术。
48、语“调度周期”在本文中用于指代操作(即,读取和/或写入操作)被递交到子寄存器文件 的时间。在一些情况下,存在每时钟周期的调度周期。然而,在其它情况下,调度周期可以比 每时钟周期出现得更经常或更不经常。如果在缓冲器214中存在至少一个等待写入操作, 则缓冲器214选择等待写入操作中的一个并且将它发布到相对应的子寄存器文件202。在 一些情况下,将写入操作发布到相对应的子寄存器文件可以包括向复用器306发送选择的 写入操作。在其它情况下,向相对应的子寄存器文件发布写入操作可以包括将选择的写入 操作直接发送到子寄存器文件202。 0062 在一些情况下,缓冲器214配置为选择缓冲器214中的最老等待。
49、写入操作。在其 它情况下,缓冲器214可以配置为使用其它准则来选择缓冲器214中的等待写入操作中的 一个。 0063 读取逻辑单元302负责控制子寄存器文件202的读取。由于当执行读取时子寄存 器文件202可能不包括最近的更新(例如,在缓冲器214中可能存在还没有被写入到子寄存 器文件202的写入操作),因此当读取逻辑单元302在读取端口308上接收到对于子寄存器 文件202的读取操作时,读取逻辑单元302可以将该读取操作发布到缓冲器214和子寄存 器文件202二者。在一些情况下,将读取操作发布到子寄存器文件202可以包括将读取操 作发送到复用器306。在其它情况下,将读取操作发布到子寄存器文件可以包括将读取操作 直接发送到子寄存器文件202。 0064 当缓冲器214从读取逻辑单元302接收读取操作时,它在缓冲器214中搜索与读 取操作相匹配(例如,与在读取操作中指定的寄存器有关)的写入操作。如果缓冲器214发 现匹配并且该匹配是等待写入操作或完成的写入操作(例如,接收了对于写入操作的写入 值),则缓冲器214向读取逻辑单。