用于实施锁定操作的系统及方法.pdf

上传人:Y94****206 文档编号:1282922 上传时间:2018-04-12 格式:PDF 页数:18 大小:569.89KB
返回 下载 相关 举报
摘要
申请专利号:

CN200880121958.9

申请日:

2008.12.03

公开号:

CN101971140A

公开日:

2011.02.09

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 9/38申请公布日:20110209|||实质审查的生效IPC(主分类):G06F 9/38申请日:20081203|||公开

IPC分类号:

G06F9/38

主分类号:

G06F9/38

申请人:

先进微装置公司

发明人:

M·J·埃泰尔

地址:

美国加利福尼亚州

优先权:

2007.12.20 US 11/960,961

专利代理机构:

北京戈程知识产权代理有限公司 11314

代理人:

程伟;王锦阳

PDF下载: PDF下载
内容摘要

本发明提出一种机构,用来在处理单元中实施锁定操作。调度单元调度包含锁定指令与多个非锁定指令的数个指令。在该锁定指令之前及之后,可调度一个或多个非锁定指令。执行单元执行包含锁定与非锁定指令的多个指令。引退单元在锁定指令执行后,引退该锁定指令。在引退锁定指令的期间,处理单元开始实施先前所取得的由锁定指令所存取的高速缓存线的独占所有权。再者,处理单元延迟于锁定指令之后调度的一个或多个非锁定指令的引退,直到该锁定指令完成写回操作为止。在锁定指令引退后的某个时间点,写回单元实施该锁定指令相关的写回操作。

权利要求书

1: 一种在计算机系统的处理单元中用于实施锁定操作的方法, 该方法包括 : 调度多个指令, 该多个指令包含锁定指令与多个非锁定指令, 其中在该锁定指令之前 调度一个或多个该非锁定指令, 且在该锁定指令之后调度一个或多个该非锁定指令 ; 执行包含该非锁定指令与该锁定指令的该多个指令 ; 执行该锁定指令后, 引退该锁定指令 ; 引退该锁定指令后, 实施与该锁定指令相关的写回操作 ; 延迟在该锁定指令之后调度的一个或多个非锁定指令的引退, 直到和该锁定指令相关 的写回操作之后。
2: 如权利要求 1 所述的方法, 还包括在执行该锁定指令的期间, 取得由该锁定指令所 存取的高速缓存线的独占所有权, 并且在引退该锁定指令的期间, 实施先前取得的高速缓 存线的独占所有权, 其中该高速缓存线的独占所有权的实施一直维持到与该锁定指令相关 的写回操作完成为止。
3: 如权利要求 2 所述的方法, 还包括如果在由锁定指令所存取的高速缓存线的独占所 有权被实施之前, 该所有权已被释放给该计算机系统中的其他处理单元, 则重新开始处理 该锁定指令 ; 其中重新开始处理该锁定指令包含在执行该锁定指令期间, 取得并实施由该 锁定指令所存取的高速缓存线的独占所有权。
4: 如权利要求 1 所述的方法, 还包括在引退该锁定指令之前, 引退该一个或多个于该 锁定指令之前调度的非锁定指令。
5: 一种处理单元, 包括 : 调度单元, 被组构成调度多个指令, 而该多个指令包含锁定指令与多个非锁定指令, 其 中在该锁定指令之前调度一个或多个该非锁定指令, 且在该锁定指令之后调度一个或多个 该非锁定指令 ; 执行单元, 被组构成执行该包含该非锁定指令与该锁定指令的该多个指令 ; 引退单元, 被组构成在执行完该锁定指令之后, 引退该锁定指令 ; 写回单元, 被组构成在引退该锁定指令后, 实施与该锁定指令相关的写回操作 ; 其中该处理单元被组构成, 延迟在该锁定指令之后调度的一个或多个非锁定指令的引 退, 直到和该锁定指令相关的写回操作之后。
6: 如权利要求 5 所述的处理单元, 其中该执行单元被组构成在执行该锁定指令的同 时, 执行在该锁定指令之前及之后调度的非锁定指令。
7: 如权利要求 5 所述的处理单元, 其中该处理单元被组构成在处理该锁定指令的同 时, 处理在该锁定指令之前调度的一个或多个非锁定指令。
8: 如权利要求 5 所述的处理单元, 其中该执行单元被组构成在执行该锁定指令时不考 虑该非锁定指令的处理阶段。
9: 如权利要求 5 所述的处理单元, 其中在执行该锁定指令的期间, 该处理单元被组构 成取得由该锁定指令所存取的高速缓存线的独占所有权, 并且在引退该锁定指令的期间, 该处理单元被组构成开始实施先前取得的高速缓存线的独占所有权, 其中该处理单元被组 构成直到与该锁定指令相关的写回操作完成为止, 一直维持实施该高速缓存线的独占所有 权。
10: 如权利要求 9 所述的处理单元, 其中如果在该处理单元实施由锁定指令所存取的 2 高速缓存线的独占所有权之前, 该所有权已被释放给相应的计算机系统中的其他处理单 元, 则该处理单元被组构成重新开始处理该锁定指令, 其中, 在重新开始处理该锁定指令以 后, 该处理单元被组构成在执行锁定指令期间取得并开始实施由该锁定指令所存取的高速 缓存线的独占所有权。

说明书


用于实施锁定操作的系统及方法

    技术领域 本发明系有关微处理器架构, 尤有关一种实施经锁定之操作 (locked operation, 以下亦简称 “锁定操作” ) 的机构。
     背景技术 x86 指 令 集 提 供 了 数 种 用 于 实 施 锁 定 操 作 的 指 令。 经 锁 定 指 令 (locked instruction, 以下亦称 “锁定指令” ) 是自动操作的, 也就是说, 在相关存储器位置的读与 写之间的阶段, 经锁定指令能确保不会有别的处理器 ( 或其它能存取系统存储器的主体 (agent)) 会改变该存储器位置的内容。锁定操作通常会被软件使用, 以在多处理器系统中 同步化对于共享之数据结构进行读取与更新的多个实体 (entities)。
     在各种处理器架构里, 锁定指令于处理器管线 (pipeline) 之调度 (dispatch) 阶 段通常会延迟 (stall) 至所有年长 (older) 的指令已引退 (retired) 并且相关的存储器 写回 (writeback) 操作已实施为止。在每个年长指令的写回操作已完成之后, 便调度锁定 指令。此时, 比锁定指令还要年轻 (younger) 的指令也可以开始调度。在执行锁定指令以 前, 处理器通常会取得并开始实施该锁定指令将要存取的存储器位置的高速缓存线 (cache line) 的独占所有权 (exclusive ownership)。在锁定指令开始执行后, 直到完成与该锁定 指令相关的写回操作之前, 别的处理器都不允许读取或写入该高速缓存线。至于比锁定指 令年轻、 并且和其存取不同存储器位置或是根本不会存取存储器的指令, 通常会被允许同 时执行而不会受到限制。
     在此类系统中, 由于锁定指令与所有更年轻的指令都会在调度阶段被延迟直到年 长的操作完成为止, 故处理器在相等于从调度直到结束延迟的事件 ( 即年长指令的写回操 作 ) 发生之前之管线长度的期间通常都无法有效运作。延迟这些指令的调度与执行将大大 影响处理器的性能。
     发明内容
     本发明揭露了在计算机系统的处理单元中用于实施锁定操作的方法及装置的多 项实施例。处理单元包含调度单元、 执行单元、 引退单元以及写回单元。在操作期间调度单 元会调度多个指令, 其包含锁定指令与多个非锁定指令。 在锁定指令之前或是之后, 都可以 调度一个或多个非锁定指令。
     由执行单元执行的多个指令, 包含锁定指令与非锁定指令。实施例的执行单元在 执行锁定指令时, 同时也会执行在该锁定指令之前或之后调度的非锁定指令。引退单元在 执行完锁定指令后, 会引退该锁定指令。 在引退锁定指令的期间, 处理单元会开始实施先前 锁定指令存取的高速缓存线的独占所有权。而在锁定指令相关的写回操作完成之前, 处理 单元会一直保有该高速缓存线的独占所有权。再者, 处理单元会延迟于锁定指令之后调度 的一个或多个非锁定指令的引退, 直到该锁定指令完成以后。在锁定指令引退后的某个时 间点, 写回单元会实施相关于该锁定指令的写回操作。附图说明 图 1 是根据实施例之范例处理器核心的多种处理构件的方块图 ;
     图 2 是根据实施例, 在一系列指令执行的时候用来说明关键事件的时序图 ;
     图 3 的流程图是根据实施例, 说明用于实施锁定操作的方法 ;
     图 4 的流程图是根据实施例, 说明用于实施锁定操作的另一种方法 ;
     图 5 的方块图是一种处理器核心的实施例 ; 以及
     图 6 的的方块图是一种多核心处理器的实施例。
     由于本发明可具有各式各样的改造与形式, 所附图式中的特定实施例仅作为说明 使用, 并于此详述之。然而应了解的是附图及其详细说明并非打算用来将本发明限制在所 揭露的特定形式, 相反地, 本发明是要涵盖所有定义于所附申请专利范围内、 符合本发明之 精神与范围的所有改造、 均等物以及其它作法。
     具体实施方式
     图 1 是根据实施例之某范例处理器核心 100 的各种处理构件的方块图。 如图所示, 处理器核心 100 可包含指令高速缓存 110、 取码 (fetch) 单元 120、 指令译码单元 (DEC)140、 调度单元 150、 执行单元 160、 加载 (load) 监测单元 165、 引退单元 170、 写回单元 180 以及 核心接口单元 190。
     在操作期间, 取码单元 120 从处理器核心 100 内部、 像是 L1 高速缓存的指令高速 缓存 110 处取出指令。取码单元 120 将取出的指令提供给 DEC 140。DEC 140 译码指令后 将其储存在缓冲区内, 直到该译码后的指令准备好调度给执行单元 160 为止。 DEC 140 将于 描述图 5 时再进一步说明。
     调 度 单 元 150 将 指 令 提 供 给 执 行 单 元 160 来 执 行。 在 某 特 定 实 施 例 中, 调 度 单 元 150 可 依 照 程 序 的 顺 序 调 度 指 令 给 执 行 单 元 160 以 有 序 (in-order) 或 无 序 (out-of-order) 地等待执行。 执行单元 160 执行指令的方式是藉由实施加载操作而从存储 器中取得所需的数据, 使用取得的数据加以计算, 并将结果储存至终将写回系统存储器阶 层 (memoryhierarchy) 例如位于处理器核心 100 之内的 L2 高速缓存 ( 见图 5)、 L3 高速缓 存或是系统存储器 ( 图 6) 之未决储存 (pending stores) 的内部储存队列 (store queue)。 执行单元 160 将于描述图 5 时再进一步说明。
     在执行单元 160 对于某指令实施加载操作之后, 加载监测单元 165 会持续监测由 该加载指令所存取的存储器内容, 直到该加载引退为止。如果由该加载所存取的存储器位 置的数据被改变了, 像是在多处理器系统中有别的处理器对同一存储器位置进行储存操 作, 加载监测单元 165 便能侦测此类事件并且让处理器摒弃 (discard) 该数据而重新执行 加载操作。
     在执行单元 160 完成执行操作之后, 引退单元 170 便引退该指令。在引退之前, 处 理器核心 100 可能会在任何时刻摒弃并重新启动该指令。然而一旦引退之后, 处理器核心 100 一定会更新由该指令所特定之缓存器与存储器。在引退之后的某个时间点, 写回单元 180 会实施写回操作以泄流内部的储存队列, 并且利用核心接口单元 190 将执行的结果写 入系统存储器阶层。系统中其它的处理器要在写回阶段之后才能看见该结果。在各种不同的实施例中, 处理器核心 100 可能会包括在各种类型的计算或处理系 统内, 像是工作站、 个人计算机 (PC)、 刀锋服务器 (serverblade)、 可携式的计算装置、 游乐 器、 系统单芯片 (system-on-a-chip, SoC)、 电视系统、 音响系统等等。例如某实施例的处理 器核心 100 被包含在连接到计算系统的电路板或主机板的处理器内。 如上述并参考图 5, 处 理器核心 100 可被组构以实作 x86 指令集架构 (ISA) 的一种版本。然而应注意的是在其它 实施例中核心 100 可以实作不同的 ISA 或是多个 ISA 的组合。在一些实施例中, 处理器核 心 100 会是包含在计算系统处理器内多个核心的其中之一, 并将于下文中参考图 6 时再进 一步说明。
     应注意的是图 1 描述的构件只是作为说明使用, 而非用来限制本发明在某组特定 的构件或是组构。举例来说, 在不同的实施例内所描述的一个或多个构件可以视需要被省 略、 组合、 修改或是再添加额外的构件。例如, 在一些实施例中, 调度单元 150 可以实体上位 于 DEC 140 内, 而引退单元 170 以及写回单元 180 则可能实体上位于执行单元 160 或是一 群 (a cluster) 执行构件 ( 像是图 5 的群 550a 至 550b) 之内。
     图 2 是根据一实施例之一系列指令在执行时期之关键事件的时序图, 其中该一系 列指令包含非锁定的加载指令 (L)、 非锁定的储存指令 (S), 以及经锁定指令 (X)。 在图 2 中 逻辑上的执行顺序是由上到下, 而时间则是从左向右方进展。另外该一系列指令执行时期 的关键事件以下列大写字母来表示 : D 代表开始调度阶段、 E 代表开始执行阶段、 R 代表开始 引退阶段, 而 W 则代表开始写回阶段。再者小写的 r 代表指令之引退被延迟的一段期间, 而 等号=则代表处理器核心 100 实施 (enforce) 先前所获得之由锁定指令所存取的高速缓存 线的独占所有权的一段期间。 图 3 的流程图是根据一实施例来说明实施锁定操作的方法。应注意的是不同实施 例的一些步骤可能会采用和图中不同的顺序来同时实施, 或是被省略掉, 也能视需要实施 额外的步骤。
     将图 1 至图 3 综合来看, 在操作期间于取码并译码之后, 会有多个指令被调度并准 备执行 ( 方块 310)。所调度的指令可包含锁定指令与多个非锁定指令。如图 2 的说明, 一 个或多个非锁定指令可调度在锁定指令之前以及之后。 该多个指令可按照程序的顺序来调 度执行, 而该锁定指令可以在程序顺序中的前一个指令之后立刻就被调度。 换言之, 与一些 处理器架构不同的地方是锁定指令在调度阶段并不会被延迟, 并且指令可以被同时或是实 质上平行地调度。
     对于在处理器管线的调度阶段将锁定指令予以延迟直到所有年长的指令引退并 且相关的存储器写回操作也已经实施为止的处理器架构而言, 该锁定指令以及所有较年轻 的指令通常在像是图 2 中从 A 至 B 点的时间内会被延迟。然而在图 1 至图 3 中描述的机构 在调度阶段却不会延迟指令。藉由在处理器管线的调度阶段不要延迟指令的方式, 便能减 少为了延迟指令而花费的时间, 进而改善效能。
     在调度阶段之后, 执行单元 160 会执行多个指令 ( 方块 320)。执行单元 160 会将 该锁定指令与在其之前或是之后调度的非锁定指令以同时或是实质上平行的方式来执行。 具体而言, 在执行过程中执行单元 160 会实施加载操作以便从存储器取得所需要的数据, 使用取得的数据加以计算, 并将结果储存在未决储存的内部储存队列中, 并在之后写入系 统的存储器阶层。 在各种不同的实作中, 由于在调度阶段并不会延迟锁定指令, 故锁定指令
     执行时不考虑处理阶段或是非锁定指令的状态。
     在执行锁定指令时, 处理器核心 100 可取得由该锁定指令所存取的高速缓存线的 独占所有权 ( 方块 330), 直到与该锁定指令相关的写回操作完成为止。
     引退单元 170 在执行单元 160 执行完锁定指令后, 便引退该锁定指令 ( 方块 340)。 而在引退之前, 处理器核心 100 可在任意时间摒弃并重新执行该指令。然而一旦引退之后, 处理器核心 100 会确认被该锁定指令所指定之缓存器与存储器一定会被更新。
     在各种不同的实作中, 引退单元 170 会按照程序的顺序来引退多个指令。因此在 锁定指令之前调度的一个或多个非锁定指令, 可能会在该锁定指令引退之前就先被引退。
     如图 2 所示, 处理器核心 100 在引退锁定指令的期间会开始实施先前所获得之由 该锁定指令所存取的高速缓存线的独占所有权 ( 方块 350)。 也就是说当处理器核心 100 开 始实施该高速缓存线的独占所有权时, 会拒绝释出所有权给其它尝试读写该高速缓存线的 处理器 ( 或别的实体 )。 但是在引退之前, 即使处理器核心 100 已经在执行时取得了高速缓 存线的独占所有权, 还是有可能释出该所有权给其它请求的处理器。然而如果处理器核心 100 在引退之前便释出了高速缓存线的所有权, 便可能会需要重新开始该锁定指令之处理。 如图 2 所示, 从引退开始, 该高速缓存线的独占所有权便会被一直实施, 直到完成与该锁定 指令相关的写回操作为止。 再者, 如图 2 所示, 处理器核心 100 在与该锁定指令相关的写回操作完成之前, 可 能会将一个或多个在该锁定指令之后调度的非锁定指令之引退予以延迟 ( 方块 360)。换 言之, 如果一个或多个于该锁定指令之后调度的非锁定指令被执行单元 160 执行完毕, 处 理器核心 100 会延迟这些指令的引退, 直到写回单元 180 完成实施该锁定指令的写回操作。 在图 2 的特定范例中, 加载的指令 (L4) 从 B 点至 C 点的时间区间里是被延迟的。应注意的 是此例中从 B 点至 C 点的时间区间会比从 A 点至 B 点的时间区间要短很多。
     藉由将比锁定指令还要年轻的指令延后其引退到写回之后, 可让加载监测单元 165 监测较年轻的指令所能看见的结果, 以确保较年轻的指令不会观察到存储器系统在该 锁定指令的写回操作之前例如因别的处理器之活动而可能产生之进展过程中的过渡状态。
     如前所述, 在图 1 至图 3 的实施例中所描述的机构, 于执行指令时其中一项和其它 处理器架构的不同点在于, 比锁定操作要年轻的指令是在引退阶段被延迟, 而不是在调度 阶段延迟该锁定指令以及较其年轻的指令。
     对于在调度阶段才延迟锁定指令以及所有较其年轻的指令以等待年长的操作完 成之处理器架构而言, 处理器在相等于从调度至结束延迟事件 ( 也就是年长指令之写回操 作 ) 的管线长度之期间, 通常都无法有效运作 ( 像是执行额外的指令 )。 因此在结束延迟的 事件之后, 处理器才能继续实施有用的工作。然而如此执行的速度通常比不上从未发生延 迟的速度, 故处理器一般都无法补偿因为延迟造成的效能损失。这样会严重影响处理器的 效能。
     在图 1 至图 3 的实施例中因为较年轻的指令是在引退阶段被延迟, 只要系统尚未 用尽可分配的资源 ( 如换名 (rename) 缓存器、 加载或储存缓冲槽 (buffer slot)、 重新排序 缓冲槽等 ), 处理器核心 100 便会继续调度并执行有效的指令。在此类实施例中, 当结束延 迟的时候, 即使尚有多种指令在等待引退, 处理器核心 100 仍会以超过一般执行频宽的最 大引退频宽来一口气引退这些指令。 此外从引退到写回的管线长度会实质上小于从调度到
     写回的管线长度。 此技术利用可分配资源的可用性以及高引退频宽来避免在实际的指令调 度与执行时带来的延迟。
     在锁定指令引退后的某个时间点, 写回单元 180 便实施该锁定指令的写回操作以 泄流内部储存队列, 并经由核心接口单元 190 将执行结果写到系统存储器阶层 ( 方块 370)。 在写回的阶段之后, 锁定指令的结果便可被系统中之别的处理器看见, 同时释放掉高速缓 存线的独占所有权。
     不同实施例的写回单元 180 可依照程序的顺序来实施多个指令的写回操作。因此 在锁定操作之前调度的一个或多个非锁定指令, 可能会在实施与锁定指令相关的写回操作 之前就先行实施。
     由于锁定指令并没有在调度阶段被延迟, 故与锁定指令相关的调度、 执行、 引退以 及写回操作会和在其之前便调度的一个或多个非锁定指令相关的调度、 执行、 引退以及写 回操作同时或是实质上平行实施。 换言之, 与锁定指令相关之多个阶段的执行, 并没有根据 非锁定指令的进行阶段或是执行状态而延迟。
     在图 1 至图 3 的实施例中描述的机构, 于执行指令时另一项和其它处理器架构的 不同点在于高速缓存线之独占所有权的实施是发生在引退阶段到写回阶段, 而非从执行阶 段到写回阶段。在实施例中, 因为处理器核心 100 并不是从执行到引退阶段实施高速缓存 线的独占所有权, 故在这段期间高速缓存线仍可供其它发出请求的处理器使用。 在处理锁定指令时, 加载监测单元 165 会监测别的处理器尝试取得相相应的高速 缓存线的存取。如果有处理器在处理器核心 100 实施高速缓存线之独占所有权之前 ( 即在 引退之前 ) 便成功地取得高速缓存线的存取, 加载监测单元 165 在侦测到所有权的释放后 会使处理器核心 100 放弃已执行一部份的锁定指令, 然后重新开始处理该锁定指令。加载 监测单元 165 的监测功能可以帮助确保锁定操作的单元性 (atomicity)。
     如上所述, 如果释放高速缓存线之独占所有权给其它发出请求的处理器使用, 则 处理器核心 100 会重新开始处理该锁定指令。在一些实施例中, 为了避免这种情形一再发 生导致锁定指令的处理陷入循环, 当高速缓存线转移给其它发出请求的处理器时, 虽然也 会重新处理该锁定指令, 但是在执行阶段却会同时取得并实施高速缓存线的独占所有权。 因为处理器核心 100 变成从执行阶段到写回阶段实施高速缓存线的独占所有权, 故高速缓 存线在此时段内将不会被释放给别的处理器请求, 而能完成锁定指令的处理而没有循环处 理的问题, 以确保过程能继续向前进行。
     一些实施例中, 被调度的多个指令可包含一个或多个在第一个锁定指令之后调度 的其它锁定指令。此类实施例里这些其它的锁定指令也会被调度并执行, 但是在系列中之 第二个锁定指令的引退可能会延迟到与第一个锁定指令相关的写回操作完成之后。换言 之, 如将于下文中图 4 进一步说明者, 已经被调度并且执行的锁定指令可能会在引退阶段 被延迟, 直到所有年长的锁定指令都完成写回阶段为止。
     图 4 是根据实施例来说明实施锁定操作方法的另一个流程图。应注意的是不同实 施例的一些步骤可能会采用和图中不同的顺序来同时实施, 或是被省略掉, 也能视需要实 施额外的步骤。
     将图 1 至图 4 综合来看, 在操作期间于取码、 译码之后, 会有多个指令被调度并执 行 ( 方块 410)。被调度的指令包含非锁定指令、 第一锁定指令与第二锁定指令。第一锁定
     指令是在第二锁定指令之前调度的。调度阶段后, 执行单元 160 便执行该多个指令 ( 方块 420)。执行单元 160 可能会将第一与第二锁定指令同时或是实质上平行地与非锁定指令一 起执行。在锁定指令的执行期间, 处理器核心 100 会取得由第一与第二锁定指令存取的高 速缓存线的独占所有权, 并保有该高速缓存线的独占所有权直到相对应的写回操作完成为 止。
     在执行单元 160 执行第一锁定指令之后, 引退单元 170 便引退该第一锁定指令 ( 方块 430)。另外在第一锁定指令的引退期间, 处理器核心 100 会开始实施先前第一锁定 指令取得的高速缓存线存取的独占所有权 ( 方块 440)。也就是说, 当处理器核心 100 开始 实施高速缓存线的独占所有权时, 处理器核心 100 便拒绝将高速缓存线的所有权释放给其 它尝试读写此高速缓存线的处理器 ( 或别的实体 )。
     再者, 于第一锁定指令相关的写回操作完成之前, 处理器核心 100 会延迟在第一 锁定指令之后调度的第二锁定指令与非锁定指令的引退 ( 方块 450)。具体而言, 于第一锁 定指令相关的写回操作完成之前, 第二锁定指令与在第一锁定指令之后但是第二锁定指令 之前调度的非锁定指令都会被延迟。 而在第二锁定指令之后调度的非锁定指令则会被延迟 直到与第二锁定指令相关的写回操作完成以后为止。 应注意的是同样的技术也可施行在其 它锁定与非锁定指令上。
     在第一锁定指令引退后的某个时间点, 写回单元 180 便实施该第一锁定指令的写 回操作以泄流内部储存队列, 并经由核心接口单元 190 将执行结果写到系统存储器阶层 ( 方块 460)。在写回的阶段之后, 第一锁定指令的结果便可被系统中别的处理器看见, 同时 释放掉高速缓存线的独占所有权。完成第一锁定指令的写回阶段之后, 便引退第二锁定指 令 ( 方块 470)。在第二锁定指令的引退期间, 处理器核心 100 会开始实施先前第二锁定指 令取得的存取高速缓存线的独占所有权 ( 方块 480) ; 然后在第二锁定指令引退之后的某个 时间点实施第二锁定指令的写回操作 ( 方块 490)。
     图 5 是处理器核心 100 实施例的方块图。大致说来, 核心 100 会被组构成执行储 存在系统存储器中的指令, 而该系统存储器则是直接或间接地连接到核心 100。 此类指令是 依照特定的指令集架构 (ISA) 所定义的。例如核心 100 可被组构成实作 x86ISA 的一种版 本, 但是其它实施例的核心 100 则可以实作不同的 ISA 或是多个 ISA 的组合。
     本示范实施例的核心 100 包含指令高速缓存 (instruction cache, IC)510, 其系 连接到并提供指令给指令取码单元 (instruction fetch unit, IFU)520。IFU 520 则连接 到分支预测单元 (branch prediction unit, BPU)530 与指令译码单元 (DEC)540。DEC 540 则连接并提供操作至多个整数执行群 550a 至 550b 以及浮点运算单元 (floating point unit, FPU)560。群 550a 与 550b 的每一个都包含各自的群排程器 552a 与 552b, 该群排程器 又会连接到各自的多个整数执行单元 554a 与 554b。 群 550a 与 550b 也会包含各自的数据高 速缓存 556a 与 556b, 该数据高速缓存会连接到并提供数据给执行单元 554a 与 554b。在此 示范实施例中, 数据高速缓存 556a 与 556b 也提供数据给 FPU 560 的浮点执行单元 564, 而 浮点执行单元 564 则是连接到并接收来自 FP 排程器 562 的操作。此外数据高速缓存 556a 与 556b 以及指令高速缓存 510 可连接到核心接口单元 570, 该核心接口单元 570 又会连 接到联合 L2 高速缓存 580, 以及连接到核心 100 外部的系统接口单元 (system interface unit, SIU), 其显示在图 6 并于之后说明。应注意的是虽然图 5 显示多种单元之间的指令和数据的流程路径, 但是还是有可能存在未于图上具体显示的其它指令和数据的路径或方 向。尚须注意的是图 5 所描述的构件也能同样用来实作出上述参照到图 1 至图 4 的机构, 以执行包含锁定指令的指令。
     如同下文将详细说明者, 可将核心 100 组构成用来进行多线执行 (multithreaded execution), 其中, 来自不同执行绪 (thread) 的指令可以同时被执行。在一实施例中, 群 550a 与 550b 之各者可专门执行相关于个别的一或两个执行绪的指令, 而 FPU 560 与上游指 令的取码、 译码逻辑在各线之间则是共享的。 在别的实施例中, 也可考虑设置不同数目的群 550 与 FPU 560, 以及支持不同数目的执行绪以用于同时执行。
     指令高速缓存 510 被组构成在指令被取出、 译码及交付执行前便先将指令储 存起来。在各种不同实施例中, 指令高速缓存 510 可组构成某特定大小的直接映像式 (direct-mapped)、 集合关连式 (set-associative) 或是完全关连式 (fully-associative) 的高速缓存, 像是 8-way、 64KB 的高速缓存。指令高速缓存 510 可为实体寻址 (physically addressed)、 虚拟寻址 (virtually addressed), 或是两者的组合 ( 例如虚拟的索引位 (index bits) 与实体的卷标位 (tag bits))。在一些实施例中, 指令高速缓存 510 也包含 转译后备缓冲区 (translation lookaside buffer, TLB) 的逻辑电路, 其系被组构作为指令 取码位置之虚拟对映实体的转译高速缓存, 而 TLB 与转译的逻辑电路也可包含在核心 100 的其它地方。 对于指令高速缓存 510 的指令取码存取是由 IFU 520 来协调。例如 IFU 520 会 追踪目前多种执行线的程序计数器 (program counter) 状态, 并向指令高速缓存 510 发出 取码命令以取回其它要执行的指令。如果高速缓存未中 (cache miss), 则由指令高速缓存 510 或是 IFU 520 来协调从 L2 高速缓存 580 取回指令数据。一些实施例中的 IFU 520 也 会协调自其它的存储器阶层中事先预取 (prefetch) 其会用到的指令, 以降低存储器延迟 (memory latency) 的影响。举例来说, 成功的指令预取可增加所需要的指令存在于指令高 速缓存 510 的可能性, 故可避免发生在多层存储器阶层间由于高速缓存未中造成的延迟影 响。
     各种类型的分支 ( 例如有条件或无条件的跳越 (jump)、 呼叫 / 转回的指令等 ) 会 改变特定执行绪之执行的流程。分支预测单元 530 通常被组构成预测 IFU 520 将会使用的 取码地址。在一些实施例中, BPU 530 包含分支目的缓冲区 (branch target buffer, BTB), 其被组构成储存关于指令流可能分支的多种信息。举例来说, BTB 被组构成储存分支类型 的相关信息 ( 像是静态、 条件式、 直接、 间接等 )、 预测的目的地址、 该目的包含之指令高速 缓存 510 的预测方式, 或是任何其它适当的分支信息。在一些实施例中, BPU 530 包含多个 以类似高速缓存阶层形式来安排的 BTB。此外, 在一些实施例中, BPU 530 包含一或多种不 同的预测器 ( 像是局部、 全域或混合式预测器 ), 其被组构成预测有条件分支的结果。在某 实施例中, IFU 520 与 BPU 530 的执行管线会被断开, 使得分支预测能 “跑在指令取码的前 面” , 而让多个未来的取码地址能在 IFU 520 准备好执行之前便已经放在队列里了。在多线 操作期间也可考虑将预测以及取回管线组构成在不同的执行绪上同时操作。
     IFU 520 被组构成产生指令字节的系列来作为取码的结果, 亦可称为取码字组 (fetch packets)。例如一个取码字组长度可为 32 个字节或是其它适合的长度。在一些实 施例中, 特别是实作变动长度指令的 ISA, 于某特定的取码字组之内会有不同数目的有效指
     令, 对齐在字组任意的边界上 ; 另有一些情形是指令会跨越不同的取码字组。 一般说来, DEC 540 会被组构成辨识位于取码字组之内的指令边界、 译码或是转换指令成为可适合群 550 或 FPU 560 执行的操作、 以及调度此类操作的执行。
     在一实施例中, DEC 540 会先决定从一个或多个取码字组中所抽选出之给定之字 节窗口 (window) 内之可能指令的长度。例如对于 x86 兼容的 ISA 而言, DEC 540 可辨识特 定取码字组内每个字节起头处的前置码 (prefix)、 运算码 (opcode)、 mod/rm 与 SIB 字节的 有效系列。在一实施例中, DEC 540 内部之选取逻辑 (pick logic) 可组构成辨识窗口中高 达四个有效的指令边界。在一实施例中, 多个取码字组与可辨识出指令边界的多个指令指 针 (instruction pointer) 群可被置放于 DEC 540 的队列中, 使得译码过程能与取码分离, 而让 IFU 520 在译码前得以趁机先取码。
     之后指令会从取码字组的储存器导向到 DEC 540 内其中一个指令译码器。在一实 施例中, DEC 540 会被组构成于每个执行周期调度达四个指令, 也可相对应的提供四个独立 的指令译码器, 至于别种设置也是可能并可以考虑的。在一实施例中, 核心 100 可支持微码 化 (microcoded) 的指令, 并且每一个指令译码器会被组构成判断给定的指令是否已被微 码化。如果是的话便启动微码引擎的操作, 将该指令转换成一系列操作 ; 若不然, 则指令译 码器会将该指令转换成适合群 550 或 FPU 560 执行的一项操作 ( 在一些实施例中也可能是 多项操作 )。所得到的操作也称作微操作 (micro-operation)、 micro-op 或是 uop, 并且会 储存在一个或多个等待调度执行的队列中。在一些实施例中, 微码操作与非微码操作 ( 或 称为 “快速路径 (fastpath)” ) 可储存在不同的队列里。 为了组装出调度部分 (dispatch parcel), DEC 540 内的调度逻辑被组构成检验队 列中等待调度操作的状态、 执行资源的状态以及调度的规则, 举例来说, DEC 540 会考虑经 队列存放之用于调度之操作的可用性、 在群 550 与 / 或 FPU 560 中位于队列内等待执行的 操作数量、 以及施加于待调度操作的资源限制。在一实施例中, DEC 540 在特定的执行周期 内会被组构成调度达四个操作的部分 (parcel)。
     在一实施例中, DEC 540 可被组构成在特定的执行周期内针对一条执行绪来译码 并调度操作。然而应注意的是 IFU 520 与 DEC 540 并不需要同时在同一条执行绪上操作。 在指令取码和译码其间可考虑多种执行绪切换的策略。例如 IFU 520 与 DEC 540 可被组构 成以循环 (round-robin) 的方式于每 N 个周期 ( 其中 N 可小到 1) 才选择另一条不同的执 行绪。 另一种作法为, 由像是队列占有状态的动态条件来调整执行绪切换的方式。 例如 DEC 540 内若某特定执行绪之译码操作的队列或是某特定群 550 之队列中的已调度操作的深度 低于门坎值的话, 便切换译码处理至该执行绪, 直到其它执行绪位于队列中的操作快做完 为止。在一些实施例中, 核心 100 可支持多种不同的执行绪切换策略, 可经由软件或是在制 造过程中 ( 像是作为制造屏蔽 (fabrication mask) 的一个选项 ) 选择其中一个使用。
     大致说来, 群 550 被组构成实作整数的算术与逻辑操作, 以及实施加载 / 储存操 作。在一实施例中, 群 550a 与 550b 可各自专供个别执行绪的执行操作使用, 使得当核心 100 被组构成在单执行绪模式操作时, 操作只会被调度给群 550 的其中之一。 每个群 550 包 含自己的排程器 552, 用来管理先前调度至该群之操作的交付执行。 群 550 复包含自己的整 数实体缓存器档案的副本, 以及自己的完成逻辑 (completionlogic, 像是重排序缓冲区或 其它用来管理操作完成及引退的结构 )。
     在每个群 550 之内, 执行单元 554 可支持多种不同型式操作的同时执行。例如 在一实施例中, 执行单元 554 对于每个群支持两个同时的加载 / 储存地址产生 (address generation, AGU) 操作以及两个同时的算术 / 逻辑 (ALU) 操作, 总共四个同时的整数操作。 执行单元 554 可支持像是整数乘除的额外操作, 但是在各种不同的实施例中, 群 550 可能会 对于此类使用其它 ALU/AGU 的额外操作实施通量 (throughput) 与同时处理的排程限制。 此 外, 每个群 550 具有自己的数据高速缓存, 如同指令高速缓存 510 一般, 可使用任意一种高 速缓存的构造来实作。应注意的是数据高速缓存 556 可能会和指令高速缓存 510 具有不同 的高速缓存构造。
     在示范实施例中, FPU 560 不同于群 550, 系被组构成执行来自不同执行绪的浮点 数操作, 在一些实例中还会以同时的方式来执行。FPU560 包含 FP 排程器 562, 就像群排程 器 552 一般, 会被组构成在 FP 执行单元 564 内接收操作、 排入队列并交付执行。FPU 560 也 包含浮点数的实体缓存器档案, 用来管理浮点数的操作数。FP 执行单元 564 可实作多种不 同型式的浮点数操作, 像是加法、 乘法、 除法、 乘法累计 (multiply-accumulate), 以及其它 由该 ISA 定义的浮点数、 多媒体或别的操作。不同实施例的 FPU 560 可支持特定不同型式 之浮点数操作的同时执行, 以及不同程度的精确度 ( 例如 64 位的操作数、 128 位的操作数 等 )。如图所示, 虽然 FPU 560 不包含数据高速缓存, 但是却能存取包含在群 550 中的数据 高速缓存 556。在一些实施例中, FPU 560 被组构成执行浮点数的加载与储存的指令, 而在 别的实施例中, 则是由群 550 代替 FPU 560 来执行这些指令。
     指令高速缓存 510 与数据高速缓存 556 被组构成经由核心接口单元 570 来存取 L2 高速缓存 580。在一实施例中, CIU 570 在核心 100 与系统内别的核心 101 及外部的系统存 储器、 接口设备等之间提供一种通用的接口。在一实施例中, L2 高速缓存 580 可采用任意 适合的高速缓存构造来设置成统一的高速缓存。通常 L2 高速缓存 580 在容量上会比第一 层的指令与数据高速缓存要大很多。
     在一些实施例中, 核心 100 可支持操作的无序执行, 包含加载与储存的操作。也就 是说, 在群 550 与 FPU 560 内操作执行的顺序可能会和在该操作相应的原始程序中的指令 顺序不同。此种宽松的执行顺序可帮助执行资源更有效率的排程, 如此便能增进整体的执 行效能。
     再者, 核心 100 可实作多种控制与数据的推测 (speculation) 技术。如上述为了 预测某执行绪将进行之执行控制的流程方向, 核心 100 会实作多种分支预测及推测预取的 技术。此种控制推测技术在确实知道指令是否可用、 或是推测是否错误 ( 像是由分支预测 错误造成 ) 之前, 会大致上试着提供一种前后一致的指令流程。如果控制的推测错误, 核心 100 便摒弃该项推测错误之路径的操作与数据, 并将执行控制重新导向到正确的路径上。 例 如, 在一实施例中, 群 550 被组构成执行条件式分支的指令, 并且判断该分支的结果是否与 预测的结果一致。如果猜错了, 群 550 便重新导向 IFU 520 沿着正确的路径开始取码。
     分开来说, 核心 100 可实作多种数据推测的技术, 尝试在真正知道该数据值是否 正确之前, 先提供某数据值供未来执行使用。例如在集合式高速缓存内如果有任何高速缓 存命中的话, 在确实知道该命中的数据是来自哪一条路 (way) 之前, 集合式高速缓存内可 能已经具有来自多条路的可用数据。在一实施例中, 核心 100 可被组构成以数据推测的型 式于指令高速缓存 510、 数据高速缓存 556 与 / 或 L2 高速缓存 580 之中实施路之预测, 以便在路的命中或未中之前便尝试提供高速缓存的结果。如果数据的推测不正确, 与该错误推 测数据相关的操作便会被 “回放 (replay)” 或是重新提交以再次执行。举例来说, 对于预测 错误的路其加载操作便会被回放。当再次执行时, 该加载操作可根据先前推测错误的结果 来再次进行推测 ( 像是如前次的判断一样, 利用正确的路来推测 ), 或是不进行数据的推测 ( 例如在结果产生以前先往下进行, 直到路命中 / 未中的检查完成为止 ) 便直接执行, 端视 实施例而定。在各种不同的实施例中, 核心 100 可实作多种数据推测的其它型式, 像是地址 预测、 基于地址或地址操作数类型之加载 / 储存的相关性侦测、 推测之储存至加载结果的 转送 (store-to-load result forwarding)、 数据一致性的推测, 或是其它适合的技术、 或 这些技术的组合。
     在多种实施例中, 处理器的实作包含将多个核心 100 的实例与其它结构制作成单 一集成电路中的一部份。图 6 是此类处理器的一项实施例。如图所示, 处理器 600 包含四 个核心的实例 100a 至 100d, 其中每一个可采用上述方式来组构。在此示范实施例中, 每 个核心 100 可经由系统接口单元 (system interface unit, SIU)610 连接到 L3 高速缓存 620 以及存储器控制器 / 周边接口单元 (memory controller/peripheralinterface unit, MCU)630。在一实施例中, L3 高速缓存 620 可组构为一种统一的高速缓存, 并可采用任意适 合的构造来实作, 其中, 该高速缓存系在核心 100 之 L2 高速缓存 580 与相对较慢的系统存 储器 640 之间作为中介的高速缓存。
     MCU 630 被组构成将处理器 600 直接与系统存储器 640 相介接。例如 MCU 630 可 产生能支持一或多种不同型式随机存取存储器 (RAM) 所需的讯号, 像是双信道同步动态随 机存取存储器 (Dual Data RateSynchronous Dynamic RAM, DDR SDRAM)、 DDR-2 SDRAM、 全 缓冲之双重内崁式存储器模块 (Fully Buffered Dual Inline Memory Modules, FB-DIMM), 或是其它可用来实作系统存储器 640 的适合存储器。系统存储器 640 被组构成储存将在处 理器 600 中多种核心 100 上操作的指令与数据, 而系统存储器 640 的内容则可被高速缓存 在上述的多种高速缓存中。
     再者, MCU 630 可支持其它种类的对处理器 600 之接口。举例来说, MCU 630 可 实作独占的图形处理器接口, 像是绘图加速埠 (Accelerated/Advanced Graphics Port, AGP) 接口的一个版本, 可用来将处理器 600 连接到图形处理的子系统, 该子系统包含单独 的图形处理器、 图形存储器与或 / 别的构件。MCU 630 也能实作一或多种周边接口, 像是 PCI-Express 总线标准的一个版本, 透过此接口处理器 600 便能连接至像是储存、 图形、 网 络装置等等的外围设备。在一些实施例中, 位于处理器 600 之外的次要总线桥接器 ( 像是 “南桥” ) 可经由其它型式的总线或内部连接器来连接处理器 600 至别的周边装置。应注意 的是虽然存储器控制器与周边接口的功能在图上绘制成经由 MCU630 而和处理器 600 整合 在一起, 但是在别的实施例这些功能可经由传统的 “北桥” 设置而实作于处理器 600 之外。 例如 MCU 630 的多项功能可经由独立的芯片组来实作, 而不必整合进处理器 600。
     尽管以上已相当详细地说明了实施例, 对于娴熟此技术者而言, 一旦完全了解上 述的揭露内容, 便能明白对其进行多种变化与修改会是很容易的。因此下面的申请专利范 围是打算解释成包含所有此类的变化与修改。
     产业利用性
     本发明一般可应用于微处理器架构。

用于实施锁定操作的系统及方法.pdf_第1页
第1页 / 共18页
用于实施锁定操作的系统及方法.pdf_第2页
第2页 / 共18页
用于实施锁定操作的系统及方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《用于实施锁定操作的系统及方法.pdf》由会员分享,可在线阅读,更多相关《用于实施锁定操作的系统及方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101971140A43申请公布日20110209CN101971140ACN101971140A21申请号200880121958922申请日2008120311/960,96120071220USG06F9/3820060171申请人先进微装置公司地址美国加利福尼亚州72发明人MJ埃泰尔74专利代理机构北京戈程知识产权代理有限公司11314代理人程伟王锦阳54发明名称用于实施锁定操作的系统及方法57摘要本发明提出一种机构,用来在处理单元中实施锁定操作。调度单元调度包含锁定指令与多个非锁定指令的数个指令。在该锁定指令之前及之后,可调度一个或多个非锁定指令。执行单元执行包含锁。

2、定与非锁定指令的多个指令。引退单元在锁定指令执行后,引退该锁定指令。在引退锁定指令的期间,处理单元开始实施先前所取得的由锁定指令所存取的高速缓存线的独占所有权。再者,处理单元延迟于锁定指令之后调度的一个或多个非锁定指令的引退,直到该锁定指令完成写回操作为止。在锁定指令引退后的某个时间点,写回单元实施该锁定指令相关的写回操作。30优先权数据85PCT申请进入国家阶段日2010062186PCT申请的申请数据PCT/US2008/0133152008120387PCT申请的公布数据WO2009/082430EN2009070251INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书。

3、2页说明书10页附图5页CN101971140A1/2页21一种在计算机系统的处理单元中用于实施锁定操作的方法,该方法包括调度多个指令,该多个指令包含锁定指令与多个非锁定指令,其中在该锁定指令之前调度一个或多个该非锁定指令,且在该锁定指令之后调度一个或多个该非锁定指令;执行包含该非锁定指令与该锁定指令的该多个指令;执行该锁定指令后,引退该锁定指令;引退该锁定指令后,实施与该锁定指令相关的写回操作;延迟在该锁定指令之后调度的一个或多个非锁定指令的引退,直到和该锁定指令相关的写回操作之后。2如权利要求1所述的方法,还包括在执行该锁定指令的期间,取得由该锁定指令所存取的高速缓存线的独占所有权,并且在。

4、引退该锁定指令的期间,实施先前取得的高速缓存线的独占所有权,其中该高速缓存线的独占所有权的实施一直维持到与该锁定指令相关的写回操作完成为止。3如权利要求2所述的方法,还包括如果在由锁定指令所存取的高速缓存线的独占所有权被实施之前,该所有权已被释放给该计算机系统中的其他处理单元,则重新开始处理该锁定指令;其中重新开始处理该锁定指令包含在执行该锁定指令期间,取得并实施由该锁定指令所存取的高速缓存线的独占所有权。4如权利要求1所述的方法,还包括在引退该锁定指令之前,引退该一个或多个于该锁定指令之前调度的非锁定指令。5一种处理单元,包括调度单元,被组构成调度多个指令,而该多个指令包含锁定指令与多个非锁。

5、定指令,其中在该锁定指令之前调度一个或多个该非锁定指令,且在该锁定指令之后调度一个或多个该非锁定指令;执行单元,被组构成执行该包含该非锁定指令与该锁定指令的该多个指令;引退单元,被组构成在执行完该锁定指令之后,引退该锁定指令;写回单元,被组构成在引退该锁定指令后,实施与该锁定指令相关的写回操作;其中该处理单元被组构成,延迟在该锁定指令之后调度的一个或多个非锁定指令的引退,直到和该锁定指令相关的写回操作之后。6如权利要求5所述的处理单元,其中该执行单元被组构成在执行该锁定指令的同时,执行在该锁定指令之前及之后调度的非锁定指令。7如权利要求5所述的处理单元,其中该处理单元被组构成在处理该锁定指令的。

6、同时,处理在该锁定指令之前调度的一个或多个非锁定指令。8如权利要求5所述的处理单元,其中该执行单元被组构成在执行该锁定指令时不考虑该非锁定指令的处理阶段。9如权利要求5所述的处理单元,其中在执行该锁定指令的期间,该处理单元被组构成取得由该锁定指令所存取的高速缓存线的独占所有权,并且在引退该锁定指令的期间,该处理单元被组构成开始实施先前取得的高速缓存线的独占所有权,其中该处理单元被组构成直到与该锁定指令相关的写回操作完成为止,一直维持实施该高速缓存线的独占所有权。10如权利要求9所述的处理单元,其中如果在该处理单元实施由锁定指令所存取的权利要求书CN101971140A2/2页3高速缓存线的独占。

7、所有权之前,该所有权已被释放给相应的计算机系统中的其他处理单元,则该处理单元被组构成重新开始处理该锁定指令,其中,在重新开始处理该锁定指令以后,该处理单元被组构成在执行锁定指令期间取得并开始实施由该锁定指令所存取的高速缓存线的独占所有权。权利要求书CN101971140A1/10页4用于实施锁定操作的系统及方法技术领域0001本发明系有关微处理器架构,尤有关一种实施经锁定之操作LOCKEDOPERATION,以下亦简称“锁定操作”的机构。背景技术0002X86指令集提供了数种用于实施锁定操作的指令。经锁定指令LOCKEDINSTRUCTION,以下亦称“锁定指令”是自动操作的,也就是说,在相关。

8、存储器位置的读与写之间的阶段,经锁定指令能确保不会有别的处理器或其它能存取系统存储器的主体AGENT会改变该存储器位置的内容。锁定操作通常会被软件使用,以在多处理器系统中同步化对于共享之数据结构进行读取与更新的多个实体ENTITIES。0003在各种处理器架构里,锁定指令于处理器管线PIPELINE之调度DISPATCH阶段通常会延迟STALL至所有年长OLDER的指令已引退RETIRED并且相关的存储器写回WRITEBACK操作已实施为止。在每个年长指令的写回操作已完成之后,便调度锁定指令。此时,比锁定指令还要年轻YOUNGER的指令也可以开始调度。在执行锁定指令以前,处理器通常会取得并开始。

9、实施该锁定指令将要存取的存储器位置的高速缓存线CACHELINE的独占所有权EXCLUSIVEOWNERSHIP。在锁定指令开始执行后,直到完成与该锁定指令相关的写回操作之前,别的处理器都不允许读取或写入该高速缓存线。至于比锁定指令年轻、并且和其存取不同存储器位置或是根本不会存取存储器的指令,通常会被允许同时执行而不会受到限制。0004在此类系统中,由于锁定指令与所有更年轻的指令都会在调度阶段被延迟直到年长的操作完成为止,故处理器在相等于从调度直到结束延迟的事件即年长指令的写回操作发生之前之管线长度的期间通常都无法有效运作。延迟这些指令的调度与执行将大大影响处理器的性能。发明内容0005本发明。

10、揭露了在计算机系统的处理单元中用于实施锁定操作的方法及装置的多项实施例。处理单元包含调度单元、执行单元、引退单元以及写回单元。在操作期间调度单元会调度多个指令,其包含锁定指令与多个非锁定指令。在锁定指令之前或是之后,都可以调度一个或多个非锁定指令。0006由执行单元执行的多个指令,包含锁定指令与非锁定指令。实施例的执行单元在执行锁定指令时,同时也会执行在该锁定指令之前或之后调度的非锁定指令。引退单元在执行完锁定指令后,会引退该锁定指令。在引退锁定指令的期间,处理单元会开始实施先前锁定指令存取的高速缓存线的独占所有权。而在锁定指令相关的写回操作完成之前,处理单元会一直保有该高速缓存线的独占所有权。

11、。再者,处理单元会延迟于锁定指令之后调度的一个或多个非锁定指令的引退,直到该锁定指令完成以后。在锁定指令引退后的某个时间点,写回单元会实施相关于该锁定指令的写回操作。说明书CN101971140A2/10页5附图说明0007图1是根据实施例之范例处理器核心的多种处理构件的方块图;0008图2是根据实施例,在一系列指令执行的时候用来说明关键事件的时序图;0009图3的流程图是根据实施例,说明用于实施锁定操作的方法;0010图4的流程图是根据实施例,说明用于实施锁定操作的另一种方法;0011图5的方块图是一种处理器核心的实施例;以及0012图6的的方块图是一种多核心处理器的实施例。0013由于本发。

12、明可具有各式各样的改造与形式,所附图式中的特定实施例仅作为说明使用,并于此详述之。然而应了解的是附图及其详细说明并非打算用来将本发明限制在所揭露的特定形式,相反地,本发明是要涵盖所有定义于所附申请专利范围内、符合本发明之精神与范围的所有改造、均等物以及其它作法。具体实施方式0014图1是根据实施例之某范例处理器核心100的各种处理构件的方块图。如图所示,处理器核心100可包含指令高速缓存110、取码FETCH单元120、指令译码单元DEC140、调度单元150、执行单元160、加载LOAD监测单元165、引退单元170、写回单元180以及核心接口单元190。0015在操作期间,取码单元120从。

13、处理器核心100内部、像是L1高速缓存的指令高速缓存110处取出指令。取码单元120将取出的指令提供给DEC140。DEC140译码指令后将其储存在缓冲区内,直到该译码后的指令准备好调度给执行单元160为止。DEC140将于描述图5时再进一步说明。0016调度单元150将指令提供给执行单元160来执行。在某特定实施例中,调度单元150可依照程序的顺序调度指令给执行单元160以有序INORDER或无序OUTOFORDER地等待执行。执行单元160执行指令的方式是藉由实施加载操作而从存储器中取得所需的数据,使用取得的数据加以计算,并将结果储存至终将写回系统存储器阶层MEMORYHIERARCHY例。

14、如位于处理器核心100之内的L2高速缓存见图5、L3高速缓存或是系统存储器图6之未决储存PENDINGSTORES的内部储存队列STOREQUEUE。执行单元160将于描述图5时再进一步说明。0017在执行单元160对于某指令实施加载操作之后,加载监测单元165会持续监测由该加载指令所存取的存储器内容,直到该加载引退为止。如果由该加载所存取的存储器位置的数据被改变了,像是在多处理器系统中有别的处理器对同一存储器位置进行储存操作,加载监测单元165便能侦测此类事件并且让处理器摒弃DISCARD该数据而重新执行加载操作。0018在执行单元160完成执行操作之后,引退单元170便引退该指令。在引退之。

15、前,处理器核心100可能会在任何时刻摒弃并重新启动该指令。然而一旦引退之后,处理器核心100一定会更新由该指令所特定之缓存器与存储器。在引退之后的某个时间点,写回单元180会实施写回操作以泄流内部的储存队列,并且利用核心接口单元190将执行的结果写入系统存储器阶层。系统中其它的处理器要在写回阶段之后才能看见该结果。说明书CN101971140A3/10页60019在各种不同的实施例中,处理器核心100可能会包括在各种类型的计算或处理系统内,像是工作站、个人计算机PC、刀锋服务器SERVERBLADE、可携式的计算装置、游乐器、系统单芯片SYSTEMONACHIP,SOC、电视系统、音响系统等等。

16、。例如某实施例的处理器核心100被包含在连接到计算系统的电路板或主机板的处理器内。如上述并参考图5,处理器核心100可被组构以实作X86指令集架构ISA的一种版本。然而应注意的是在其它实施例中核心100可以实作不同的ISA或是多个ISA的组合。在一些实施例中,处理器核心100会是包含在计算系统处理器内多个核心的其中之一,并将于下文中参考图6时再进一步说明。0020应注意的是图1描述的构件只是作为说明使用,而非用来限制本发明在某组特定的构件或是组构。举例来说,在不同的实施例内所描述的一个或多个构件可以视需要被省略、组合、修改或是再添加额外的构件。例如,在一些实施例中,调度单元150可以实体上位于。

17、DEC140内,而引退单元170以及写回单元180则可能实体上位于执行单元160或是一群ACLUSTER执行构件像是图5的群550A至550B之内。0021图2是根据一实施例之一系列指令在执行时期之关键事件的时序图,其中该一系列指令包含非锁定的加载指令L、非锁定的储存指令S,以及经锁定指令X。在图2中逻辑上的执行顺序是由上到下,而时间则是从左向右方进展。另外该一系列指令执行时期的关键事件以下列大写字母来表示D代表开始调度阶段、E代表开始执行阶段、R代表开始引退阶段,而W则代表开始写回阶段。再者小写的R代表指令之引退被延迟的一段期间,而等号则代表处理器核心100实施ENFORCE先前所获得之由锁。

18、定指令所存取的高速缓存线的独占所有权的一段期间。0022图3的流程图是根据一实施例来说明实施锁定操作的方法。应注意的是不同实施例的一些步骤可能会采用和图中不同的顺序来同时实施,或是被省略掉,也能视需要实施额外的步骤。0023将图1至图3综合来看,在操作期间于取码并译码之后,会有多个指令被调度并准备执行方块310。所调度的指令可包含锁定指令与多个非锁定指令。如图2的说明,一个或多个非锁定指令可调度在锁定指令之前以及之后。该多个指令可按照程序的顺序来调度执行,而该锁定指令可以在程序顺序中的前一个指令之后立刻就被调度。换言之,与一些处理器架构不同的地方是锁定指令在调度阶段并不会被延迟,并且指令可以被。

19、同时或是实质上平行地调度。0024对于在处理器管线的调度阶段将锁定指令予以延迟直到所有年长的指令引退并且相关的存储器写回操作也已经实施为止的处理器架构而言,该锁定指令以及所有较年轻的指令通常在像是图2中从A至B点的时间内会被延迟。然而在图1至图3中描述的机构在调度阶段却不会延迟指令。藉由在处理器管线的调度阶段不要延迟指令的方式,便能减少为了延迟指令而花费的时间,进而改善效能。0025在调度阶段之后,执行单元160会执行多个指令方块320。执行单元160会将该锁定指令与在其之前或是之后调度的非锁定指令以同时或是实质上平行的方式来执行。具体而言,在执行过程中执行单元160会实施加载操作以便从存储器。

20、取得所需要的数据,使用取得的数据加以计算,并将结果储存在未决储存的内部储存队列中,并在之后写入系统的存储器阶层。在各种不同的实作中,由于在调度阶段并不会延迟锁定指令,故锁定指令说明书CN101971140A4/10页7执行时不考虑处理阶段或是非锁定指令的状态。0026在执行锁定指令时,处理器核心100可取得由该锁定指令所存取的高速缓存线的独占所有权方块330,直到与该锁定指令相关的写回操作完成为止。0027引退单元170在执行单元160执行完锁定指令后,便引退该锁定指令方块340。而在引退之前,处理器核心100可在任意时间摒弃并重新执行该指令。然而一旦引退之后,处理器核心100会确认被该锁定指。

21、令所指定之缓存器与存储器一定会被更新。0028在各种不同的实作中,引退单元170会按照程序的顺序来引退多个指令。因此在锁定指令之前调度的一个或多个非锁定指令,可能会在该锁定指令引退之前就先被引退。0029如图2所示,处理器核心100在引退锁定指令的期间会开始实施先前所获得之由该锁定指令所存取的高速缓存线的独占所有权方块350。也就是说当处理器核心100开始实施该高速缓存线的独占所有权时,会拒绝释出所有权给其它尝试读写该高速缓存线的处理器或别的实体。但是在引退之前,即使处理器核心100已经在执行时取得了高速缓存线的独占所有权,还是有可能释出该所有权给其它请求的处理器。然而如果处理器核心100在引。

22、退之前便释出了高速缓存线的所有权,便可能会需要重新开始该锁定指令之处理。如图2所示,从引退开始,该高速缓存线的独占所有权便会被一直实施,直到完成与该锁定指令相关的写回操作为止。0030再者,如图2所示,处理器核心100在与该锁定指令相关的写回操作完成之前,可能会将一个或多个在该锁定指令之后调度的非锁定指令之引退予以延迟方块360。换言之,如果一个或多个于该锁定指令之后调度的非锁定指令被执行单元160执行完毕,处理器核心100会延迟这些指令的引退,直到写回单元180完成实施该锁定指令的写回操作。在图2的特定范例中,加载的指令L4从B点至C点的时间区间里是被延迟的。应注意的是此例中从B点至C点的时。

23、间区间会比从A点至B点的时间区间要短很多。0031藉由将比锁定指令还要年轻的指令延后其引退到写回之后,可让加载监测单元165监测较年轻的指令所能看见的结果,以确保较年轻的指令不会观察到存储器系统在该锁定指令的写回操作之前例如因别的处理器之活动而可能产生之进展过程中的过渡状态。0032如前所述,在图1至图3的实施例中所描述的机构,于执行指令时其中一项和其它处理器架构的不同点在于,比锁定操作要年轻的指令是在引退阶段被延迟,而不是在调度阶段延迟该锁定指令以及较其年轻的指令。0033对于在调度阶段才延迟锁定指令以及所有较其年轻的指令以等待年长的操作完成之处理器架构而言,处理器在相等于从调度至结束延迟事。

24、件也就是年长指令之写回操作的管线长度之期间,通常都无法有效运作像是执行额外的指令。因此在结束延迟的事件之后,处理器才能继续实施有用的工作。然而如此执行的速度通常比不上从未发生延迟的速度,故处理器一般都无法补偿因为延迟造成的效能损失。这样会严重影响处理器的效能。0034在图1至图3的实施例中因为较年轻的指令是在引退阶段被延迟,只要系统尚未用尽可分配的资源如换名RENAME缓存器、加载或储存缓冲槽BUFFERSLOT、重新排序缓冲槽等,处理器核心100便会继续调度并执行有效的指令。在此类实施例中,当结束延迟的时候,即使尚有多种指令在等待引退,处理器核心100仍会以超过一般执行频宽的最大引退频宽来一。

25、口气引退这些指令。此外从引退到写回的管线长度会实质上小于从调度到说明书CN101971140A5/10页8写回的管线长度。此技术利用可分配资源的可用性以及高引退频宽来避免在实际的指令调度与执行时带来的延迟。0035在锁定指令引退后的某个时间点,写回单元180便实施该锁定指令的写回操作以泄流内部储存队列,并经由核心接口单元190将执行结果写到系统存储器阶层方块370。在写回的阶段之后,锁定指令的结果便可被系统中之别的处理器看见,同时释放掉高速缓存线的独占所有权。0036不同实施例的写回单元180可依照程序的顺序来实施多个指令的写回操作。因此在锁定操作之前调度的一个或多个非锁定指令,可能会在实施与。

26、锁定指令相关的写回操作之前就先行实施。0037由于锁定指令并没有在调度阶段被延迟,故与锁定指令相关的调度、执行、引退以及写回操作会和在其之前便调度的一个或多个非锁定指令相关的调度、执行、引退以及写回操作同时或是实质上平行实施。换言之,与锁定指令相关之多个阶段的执行,并没有根据非锁定指令的进行阶段或是执行状态而延迟。0038在图1至图3的实施例中描述的机构,于执行指令时另一项和其它处理器架构的不同点在于高速缓存线之独占所有权的实施是发生在引退阶段到写回阶段,而非从执行阶段到写回阶段。在实施例中,因为处理器核心100并不是从执行到引退阶段实施高速缓存线的独占所有权,故在这段期间高速缓存线仍可供其它。

27、发出请求的处理器使用。0039在处理锁定指令时,加载监测单元165会监测别的处理器尝试取得相相应的高速缓存线的存取。如果有处理器在处理器核心100实施高速缓存线之独占所有权之前即在引退之前便成功地取得高速缓存线的存取,加载监测单元165在侦测到所有权的释放后会使处理器核心100放弃已执行一部份的锁定指令,然后重新开始处理该锁定指令。加载监测单元165的监测功能可以帮助确保锁定操作的单元性ATOMICITY。0040如上所述,如果释放高速缓存线之独占所有权给其它发出请求的处理器使用,则处理器核心100会重新开始处理该锁定指令。在一些实施例中,为了避免这种情形一再发生导致锁定指令的处理陷入循环,当。

28、高速缓存线转移给其它发出请求的处理器时,虽然也会重新处理该锁定指令,但是在执行阶段却会同时取得并实施高速缓存线的独占所有权。因为处理器核心100变成从执行阶段到写回阶段实施高速缓存线的独占所有权,故高速缓存线在此时段内将不会被释放给别的处理器请求,而能完成锁定指令的处理而没有循环处理的问题,以确保过程能继续向前进行。0041一些实施例中,被调度的多个指令可包含一个或多个在第一个锁定指令之后调度的其它锁定指令。此类实施例里这些其它的锁定指令也会被调度并执行,但是在系列中之第二个锁定指令的引退可能会延迟到与第一个锁定指令相关的写回操作完成之后。换言之,如将于下文中图4进一步说明者,已经被调度并且执。

29、行的锁定指令可能会在引退阶段被延迟,直到所有年长的锁定指令都完成写回阶段为止。0042图4是根据实施例来说明实施锁定操作方法的另一个流程图。应注意的是不同实施例的一些步骤可能会采用和图中不同的顺序来同时实施,或是被省略掉,也能视需要实施额外的步骤。0043将图1至图4综合来看,在操作期间于取码、译码之后,会有多个指令被调度并执行方块410。被调度的指令包含非锁定指令、第一锁定指令与第二锁定指令。第一锁定说明书CN101971140A6/10页9指令是在第二锁定指令之前调度的。调度阶段后,执行单元160便执行该多个指令方块420。执行单元160可能会将第一与第二锁定指令同时或是实质上平行地与非锁。

30、定指令一起执行。在锁定指令的执行期间,处理器核心100会取得由第一与第二锁定指令存取的高速缓存线的独占所有权,并保有该高速缓存线的独占所有权直到相对应的写回操作完成为止。0044在执行单元160执行第一锁定指令之后,引退单元170便引退该第一锁定指令方块430。另外在第一锁定指令的引退期间,处理器核心100会开始实施先前第一锁定指令取得的高速缓存线存取的独占所有权方块440。也就是说,当处理器核心100开始实施高速缓存线的独占所有权时,处理器核心100便拒绝将高速缓存线的所有权释放给其它尝试读写此高速缓存线的处理器或别的实体。0045再者,于第一锁定指令相关的写回操作完成之前,处理器核心100。

31、会延迟在第一锁定指令之后调度的第二锁定指令与非锁定指令的引退方块450。具体而言,于第一锁定指令相关的写回操作完成之前,第二锁定指令与在第一锁定指令之后但是第二锁定指令之前调度的非锁定指令都会被延迟。而在第二锁定指令之后调度的非锁定指令则会被延迟直到与第二锁定指令相关的写回操作完成以后为止。应注意的是同样的技术也可施行在其它锁定与非锁定指令上。0046在第一锁定指令引退后的某个时间点,写回单元180便实施该第一锁定指令的写回操作以泄流内部储存队列,并经由核心接口单元190将执行结果写到系统存储器阶层方块460。在写回的阶段之后,第一锁定指令的结果便可被系统中别的处理器看见,同时释放掉高速缓存线。

32、的独占所有权。完成第一锁定指令的写回阶段之后,便引退第二锁定指令方块470。在第二锁定指令的引退期间,处理器核心100会开始实施先前第二锁定指令取得的存取高速缓存线的独占所有权方块480;然后在第二锁定指令引退之后的某个时间点实施第二锁定指令的写回操作方块490。0047图5是处理器核心100实施例的方块图。大致说来,核心100会被组构成执行储存在系统存储器中的指令,而该系统存储器则是直接或间接地连接到核心100。此类指令是依照特定的指令集架构ISA所定义的。例如核心100可被组构成实作X86ISA的一种版本,但是其它实施例的核心100则可以实作不同的ISA或是多个ISA的组合。0048本示范。

33、实施例的核心100包含指令高速缓存INSTRUCTIONCACHE,IC510,其系连接到并提供指令给指令取码单元INSTRUCTIONFETCHUNIT,IFU520。IFU520则连接到分支预测单元BRANCHPREDICTIONUNIT,BPU530与指令译码单元DEC540。DEC540则连接并提供操作至多个整数执行群550A至550B以及浮点运算单元FLOATINGPOINTUNIT,FPU560。群550A与550B的每一个都包含各自的群排程器552A与552B,该群排程器又会连接到各自的多个整数执行单元554A与554B。群550A与550B也会包含各自的数据高速缓存556A与5。

34、56B,该数据高速缓存会连接到并提供数据给执行单元554A与554B。在此示范实施例中,数据高速缓存556A与556B也提供数据给FPU560的浮点执行单元564,而浮点执行单元564则是连接到并接收来自FP排程器562的操作。此外数据高速缓存556A与556B以及指令高速缓存510可连接到核心接口单元570,该核心接口单元570又会连接到联合L2高速缓存580,以及连接到核心100外部的系统接口单元SYSTEMINTERFACEUNIT,SIU,其显示在图6并于之后说明。应注意的是虽然图5显示多种单元之间的指令说明书CN101971140A7/10页10和数据的流程路径,但是还是有可能存在未。

35、于图上具体显示的其它指令和数据的路径或方向。尚须注意的是图5所描述的构件也能同样用来实作出上述参照到图1至图4的机构,以执行包含锁定指令的指令。0049如同下文将详细说明者,可将核心100组构成用来进行多线执行MULTITHREADEDEXECUTION,其中,来自不同执行绪THREAD的指令可以同时被执行。在一实施例中,群550A与550B之各者可专门执行相关于个别的一或两个执行绪的指令,而FPU560与上游指令的取码、译码逻辑在各线之间则是共享的。在别的实施例中,也可考虑设置不同数目的群550与FPU560,以及支持不同数目的执行绪以用于同时执行。0050指令高速缓存510被组构成在指令被。

36、取出、译码及交付执行前便先将指令储存起来。在各种不同实施例中,指令高速缓存510可组构成某特定大小的直接映像式DIRECTMAPPED、集合关连式SETASSOCIATIVE或是完全关连式FULLYASSOCIATIVE的高速缓存,像是8WAY、64KB的高速缓存。指令高速缓存510可为实体寻址PHYSICALLYADDRESSED、虚拟寻址VIRTUALLYADDRESSED,或是两者的组合例如虚拟的索引位INDEXBITS与实体的卷标位TAGBITS。在一些实施例中,指令高速缓存510也包含转译后备缓冲区TRANSLATIONLOOKASIDEBUFFER,TLB的逻辑电路,其系被组构作为。

37、指令取码位置之虚拟对映实体的转译高速缓存,而TLB与转译的逻辑电路也可包含在核心100的其它地方。0051对于指令高速缓存510的指令取码存取是由IFU520来协调。例如IFU520会追踪目前多种执行线的程序计数器PROGRAMCOUNTER状态,并向指令高速缓存510发出取码命令以取回其它要执行的指令。如果高速缓存未中CACHEMISS,则由指令高速缓存510或是IFU520来协调从L2高速缓存580取回指令数据。一些实施例中的IFU520也会协调自其它的存储器阶层中事先预取PREFETCH其会用到的指令,以降低存储器延迟MEMORYLATENCY的影响。举例来说,成功的指令预取可增加所需要。

38、的指令存在于指令高速缓存510的可能性,故可避免发生在多层存储器阶层间由于高速缓存未中造成的延迟影响。0052各种类型的分支例如有条件或无条件的跳越JUMP、呼叫/转回的指令等会改变特定执行绪之执行的流程。分支预测单元530通常被组构成预测IFU520将会使用的取码地址。在一些实施例中,BPU530包含分支目的缓冲区BRANCHTARGETBUFFER,BTB,其被组构成储存关于指令流可能分支的多种信息。举例来说,BTB被组构成储存分支类型的相关信息像是静态、条件式、直接、间接等、预测的目的地址、该目的包含之指令高速缓存510的预测方式,或是任何其它适当的分支信息。在一些实施例中,BPU530。

39、包含多个以类似高速缓存阶层形式来安排的BTB。此外,在一些实施例中,BPU530包含一或多种不同的预测器像是局部、全域或混合式预测器,其被组构成预测有条件分支的结果。在某实施例中,IFU520与BPU530的执行管线会被断开,使得分支预测能“跑在指令取码的前面”,而让多个未来的取码地址能在IFU520准备好执行之前便已经放在队列里了。在多线操作期间也可考虑将预测以及取回管线组构成在不同的执行绪上同时操作。0053IFU520被组构成产生指令字节的系列来作为取码的结果,亦可称为取码字组FETCHPACKETS。例如一个取码字组长度可为32个字节或是其它适合的长度。在一些实施例中,特别是实作变动长。

40、度指令的ISA,于某特定的取码字组之内会有不同数目的有效指说明书CN101971140A8/10页11令,对齐在字组任意的边界上;另有一些情形是指令会跨越不同的取码字组。一般说来,DEC540会被组构成辨识位于取码字组之内的指令边界、译码或是转换指令成为可适合群550或FPU560执行的操作、以及调度此类操作的执行。0054在一实施例中,DEC540会先决定从一个或多个取码字组中所抽选出之给定之字节窗口WINDOW内之可能指令的长度。例如对于X86兼容的ISA而言,DEC540可辨识特定取码字组内每个字节起头处的前置码PREFIX、运算码OPCODE、MOD/RM与SIB字节的有效系列。在一实。

41、施例中,DEC540内部之选取逻辑PICKLOGIC可组构成辨识窗口中高达四个有效的指令边界。在一实施例中,多个取码字组与可辨识出指令边界的多个指令指针INSTRUCTIONPOINTER群可被置放于DEC540的队列中,使得译码过程能与取码分离,而让IFU520在译码前得以趁机先取码。0055之后指令会从取码字组的储存器导向到DEC540内其中一个指令译码器。在一实施例中,DEC540会被组构成于每个执行周期调度达四个指令,也可相对应的提供四个独立的指令译码器,至于别种设置也是可能并可以考虑的。在一实施例中,核心100可支持微码化MICROCODED的指令,并且每一个指令译码器会被组构成判断。

42、给定的指令是否已被微码化。如果是的话便启动微码引擎的操作,将该指令转换成一系列操作;若不然,则指令译码器会将该指令转换成适合群550或FPU560执行的一项操作在一些实施例中也可能是多项操作。所得到的操作也称作微操作MICROOPERATION、MICROOP或是UOP,并且会储存在一个或多个等待调度执行的队列中。在一些实施例中,微码操作与非微码操作或称为“快速路径FASTPATH”可储存在不同的队列里。0056为了组装出调度部分DISPATCHPARCEL,DEC540内的调度逻辑被组构成检验队列中等待调度操作的状态、执行资源的状态以及调度的规则,举例来说,DEC540会考虑经队列存放之用于。

43、调度之操作的可用性、在群550与/或FPU560中位于队列内等待执行的操作数量、以及施加于待调度操作的资源限制。在一实施例中,DEC540在特定的执行周期内会被组构成调度达四个操作的部分PARCEL。0057在一实施例中,DEC540可被组构成在特定的执行周期内针对一条执行绪来译码并调度操作。然而应注意的是IFU520与DEC540并不需要同时在同一条执行绪上操作。在指令取码和译码其间可考虑多种执行绪切换的策略。例如IFU520与DEC540可被组构成以循环ROUNDROBIN的方式于每N个周期其中N可小到1才选择另一条不同的执行绪。另一种作法为,由像是队列占有状态的动态条件来调整执行绪切换的。

44、方式。例如DEC540内若某特定执行绪之译码操作的队列或是某特定群550之队列中的已调度操作的深度低于门坎值的话,便切换译码处理至该执行绪,直到其它执行绪位于队列中的操作快做完为止。在一些实施例中,核心100可支持多种不同的执行绪切换策略,可经由软件或是在制造过程中像是作为制造屏蔽FABRICATIONMASK的一个选项选择其中一个使用。0058大致说来,群550被组构成实作整数的算术与逻辑操作,以及实施加载/储存操作。在一实施例中,群550A与550B可各自专供个别执行绪的执行操作使用,使得当核心100被组构成在单执行绪模式操作时,操作只会被调度给群550的其中之一。每个群550包含自己的排。

45、程器552,用来管理先前调度至该群之操作的交付执行。群550复包含自己的整数实体缓存器档案的副本,以及自己的完成逻辑COMPLETIONLOGIC,像是重排序缓冲区或其它用来管理操作完成及引退的结构。说明书CN101971140A9/10页120059在每个群550之内,执行单元554可支持多种不同型式操作的同时执行。例如在一实施例中,执行单元554对于每个群支持两个同时的加载/储存地址产生ADDRESSGENERATION,AGU操作以及两个同时的算术/逻辑ALU操作,总共四个同时的整数操作。执行单元554可支持像是整数乘除的额外操作,但是在各种不同的实施例中,群550可能会对于此类使用其它。

46、ALU/AGU的额外操作实施通量THROUGHPUT与同时处理的排程限制。此外,每个群550具有自己的数据高速缓存,如同指令高速缓存510一般,可使用任意一种高速缓存的构造来实作。应注意的是数据高速缓存556可能会和指令高速缓存510具有不同的高速缓存构造。0060在示范实施例中,FPU560不同于群550,系被组构成执行来自不同执行绪的浮点数操作,在一些实例中还会以同时的方式来执行。FPU560包含FP排程器562,就像群排程器552一般,会被组构成在FP执行单元564内接收操作、排入队列并交付执行。FPU560也包含浮点数的实体缓存器档案,用来管理浮点数的操作数。FP执行单元564可实作多。

47、种不同型式的浮点数操作,像是加法、乘法、除法、乘法累计MULTIPLYACCUMULATE,以及其它由该ISA定义的浮点数、多媒体或别的操作。不同实施例的FPU560可支持特定不同型式之浮点数操作的同时执行,以及不同程度的精确度例如64位的操作数、128位的操作数等。如图所示,虽然FPU560不包含数据高速缓存,但是却能存取包含在群550中的数据高速缓存556。在一些实施例中,FPU560被组构成执行浮点数的加载与储存的指令,而在别的实施例中,则是由群550代替FPU560来执行这些指令。0061指令高速缓存510与数据高速缓存556被组构成经由核心接口单元570来存取L2高速缓存580。在一。

48、实施例中,CIU570在核心100与系统内别的核心101及外部的系统存储器、接口设备等之间提供一种通用的接口。在一实施例中,L2高速缓存580可采用任意适合的高速缓存构造来设置成统一的高速缓存。通常L2高速缓存580在容量上会比第一层的指令与数据高速缓存要大很多。0062在一些实施例中,核心100可支持操作的无序执行,包含加载与储存的操作。也就是说,在群550与FPU560内操作执行的顺序可能会和在该操作相应的原始程序中的指令顺序不同。此种宽松的执行顺序可帮助执行资源更有效率的排程,如此便能增进整体的执行效能。0063再者,核心100可实作多种控制与数据的推测SPECULATION技术。如上述。

49、为了预测某执行绪将进行之执行控制的流程方向,核心100会实作多种分支预测及推测预取的技术。此种控制推测技术在确实知道指令是否可用、或是推测是否错误像是由分支预测错误造成之前,会大致上试着提供一种前后一致的指令流程。如果控制的推测错误,核心100便摒弃该项推测错误之路径的操作与数据,并将执行控制重新导向到正确的路径上。例如,在一实施例中,群550被组构成执行条件式分支的指令,并且判断该分支的结果是否与预测的结果一致。如果猜错了,群550便重新导向IFU520沿着正确的路径开始取码。0064分开来说,核心100可实作多种数据推测的技术,尝试在真正知道该数据值是否正确之前,先提供某数据值供未来执行使用。例如在集合式高速缓存内如果有任何高速缓存命中的话,在确实知道该命中的数据是来自哪一条路WAY之前,集合式高速缓存内可能已经具有来自多条路的可用数据。在一实施例中,核心100可被组构成以数据推测的型式于指令高速缓存510、数据高速缓存556与/或L2高速缓存580之中实施路之预测,以便说明书CN101971140A10/10页13在路的命中或未中之前便尝试提供高速缓存的结果。如果数据的推测不正确,与该错误推测数据相关的操作便会被“回放REPLAY”或是重新提交以再次执行。举例来说,对于预测错误的路其加载操作便会被回放。当再次执行时,该加载操作可根据先前推测错误的结果来再次进行推测像是如前次。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1