微处理器及其执行的方法.pdf

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

CN201010194974.X

申请日:

2010.06.01

公开号:

CN101984403A

公开日:

2011.03.09

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/38申请日:20100601|||公开

IPC分类号:

G06F9/38; G06F12/08

主分类号:

G06F9/38

申请人:

威盛电子股份有限公司

发明人:

G·葛兰·亨利; 罗德尼 E·虎克; 柯林·艾迪

地址:

中国台湾台北县

优先权:

2009.06.01 US 61/182,799; 2010.05.17 US 12/781,337

专利代理机构:

北京市柳沈律师事务所 11105

代理人:

钱大勇

PDF下载: PDF下载
内容摘要

一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。

权利要求书

1: 一种微处理器, 包括 : 一高速缓存 ; 一指令组, 包括一第一预取指令与一第二预取指令, 该第一预取指令与该第二预取指 令中每一者用来命令该微处理器自一系统存储器预取一数据快取列至该高速缓存 ; 以及 一存储器子系统, 用来执行该第一预取指令与该第二预取指令, 其中, 对于该第一预取指令, 该存储器子系统根据一第一既定情况组而放弃自该系统 存储器预取该数据快取列至该高速缓存 ; 其中, 对于该第二预取指令, 该存储器子系统根据该第一既定情况组来完成自该系统 存储器预取该数据快取列至该高速缓存。
2: 根据权利要求 1 所述的微处理器, 其中, 该指令组为一微架构指令组。
3: 根据权利要求 1 所述的微处理器, 根据该第一既定情况组, 该存储器子系统通过重 新执行该第二预取指令来完成自系统存储器预取该数据快取列至该高速缓存。
4: 根据权利要求 1 所述的微处理器, 其中该第一既定情况组包括以下其中一者 : 该微处理器的一填充队列被填满, 该填充队列具有一既定数量的储存元件, 用以接收 来自该系统存储器的多个快取列 ; 一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地 址与该微处理器内待处理中较旧的一储存操作之间 ; 一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地 址与该微处理器内的待处理中的一监测操作之间 ; 该第一预取指令与该第二预取指令晚于一序列指令 ; 以及 该第一预取指令与该第二预取指令所指定的该数据快取列的地址未命中该微处理器 的一转译后备缓冲器。
5: 根据权利要求 1 所述的微处理器, 其中对于该第一预取指令, 该存储器子系统根据 一第二既定情况组而放弃自系统存储器预取该数据快取列至该高速缓存, 以及对于该第二 预取指令, 该存储器子系统根据该第二既定情况组引发一例外处理程序。
6: 根据权利要求 5 所述的微处理器, 其中该第二既定情况组包括以下其中一者 : 该第一预取指令与该第二预取指令所寻址的一存储器页面的存储器特性为不可快取 ; 以及 该第一预取指令与该第二预取指令所指定的该数据快取列的一地址未命中该微处理 器的一转译后备缓冲器。
7: 根据权利要求 6 所述的微处理器, 其中该存储器子系统执行一页面页表查找, 以获 得该第二预取指令所指定的该数据快取列的该地址的一虚拟至物理地址转换。
8: 根据权利要求 5 所述的微处理器, 还包括 : 一微码单元, 包括一例外处理例程, 用来处理该例外处理程序且传达给该微处理器的 一重复数据串搬移微码 ; 其中, 该重复数据串搬移微码实现该为微处理器的指令组架构的一重复数据串搬移巨 指令。
9: 一种微处理器, 包括 : 一高速缓存 ; 2 一微码单元, 包含一微码, 该微码用来实现一架构性重复数据串搬移巨指令, 其中, 该 微码包括多个保证预取 - 加载 - 储存指令组的序列 ; 以及 一存储器子系统, 用来执行该多个保证预取 - 加载 - 储存指令组, 在一既定情况组存在 且当该存储器子系统将多个非保证预取指令仅视为暗示时, 用来预取该多个保证预取指令 所指定的多个快取列至该高速缓存。
10: 根据权利要求 9 所述的微处理器, 其中该微码包括在该多个保证预取 - 加载 - 储存 指令组的序列之前的一或多个由该存储器子系统所执行的初始保证预取指令, 并在该存储 器子系统遭遇到该多个保证预取 - 加载 - 储存指令组的序列中的加载指令之前, 使得该一 或多个初始保证预取指令读取指定的快取列被预取至该高速缓存。
11: 一种微处理器, 包括 : 一高速缓存 ; 一微码单元, 包含一微码, 该微码用以实现一架构性重复数据串搬移巨指令, 该微码包 括多个加载指令与储存指令, 以将数据串由一来源存储器位置搬移至一目标存储器位置, 且该微码还包括在该多个加载指令之前的多个预取指令, 以增加该多个加载指令被处理之 前, 多个快取列出现在该高速缓存的可能性 ; 以及 一存储器子系统, 用来执行该多个预取指令、 加载指令、 与储存指令, 其中该存储器子 系统用来检测该多个预取指令的一者所指示的一存储器地址未命中该微处理器的一转译 后备缓冲器, 当该存储器位置未命中该转译后备缓冲器时, 该存储器子系统通知该微码单 元。
12: 根据权利要求 11 所述的微处理器, 其中该微处理器根据上述检测的情况来清除晚 于该多个预取指令的一者的每一该加载指令与该储存指令。
13: 根据权利要求 12 所述的微处理器, 其中, 在清除后, 于剩余的该多个加载指令之 前, 该微码单元重新开始执行剩余的该多个预取指令, 以增加剩余的该多个快取列在被剩 余的该多个加载指令处理前出现在该高速缓存的可能性。
14: 根据权利要求 11 所述的微处理器, 其中, 该存储器子系统用来检测该多个预取指 令的一者正指示具有非可缓存特性的一存储器区域的一存储器地址的一情况, 且相应地导 致该微码单元被通知该情况, 以及该微码用来相应地搬移数据串的剩余部分而不需使用该 多个预取指令。
15: 一种由一微处理器所执行的方法, 该微处理器包括一高速缓存以及一指令组, 且该 指令组具有多个第一预取指令与第二预取指令, 该方法包括 : 当执行该第一预取指令时, 检测一预设情况组中的一者或多个的存在, 其中, 该第一预 取指令命令该微处理器自一系统存储器预取一第一数据快取列至该高速缓存 ; 相应于当执行该第一预取指令时检测该预设情况组中的一者或多个的存在的步骤, 放 弃自该系统存储器预取该第一数据快取列至该高速缓存 ; 当执行该第二预取指令时, 检测该预设情况组中的一者或多个的存在, 其中, 该第二预 取指令命令该微处理器自该系统存储器预取一第二数据快取列至该高速缓存 ; 以及 相应于执行该第二预取指令时检测该预设情况组中的一者或多个的存在的步骤, 完成 自该系统存储器预取该第二数据快取列至该高速缓存。
16: 一种由一微处理器所执行的方法, 该微处理器包括一高速缓存, 该方法包括 : 3 对一架构性重复数据串搬移指令进行解码 ; 以及 相应于对该架构性重复数据串搬移指令进行解码的步骤, 执行多个保证预取 - 加 载 - 储存指令组的序列 ; 其中, 执行该多个保证预取 - 加载 - 储存指令组的序列的步骤包括甚至在一既定情况 组存在时且当该存储器子系统将多个非保证预取指令仅视为暗示时, 预取由该多个保证预 取 - 加载 - 储存指令组的序列所指定的该高速缓存的多个快取列。
17: 一种由一微处理器所执行的方法, 该微处理器包括一高速缓存, 该方法包括 : 对一架构性重复数据串搬移指令进行解码 ; 相应于对该架构性重复数据串搬移指令进行解码的步骤, 执行多个加载指令与储存指 令, 以将数据串由一来源存储器位置搬移至一目标存储器位置 ; 在执行该多个加载指令之前, 执行多个预取指令, 以增加多个快取列在被该多个加载 指令处理前出现在该高速缓存的可能性 ; 以及 检测该多个预取指令的一者正指示出一存储器地址于该微处理器的一转译后备缓冲 器中未命中的一情况, 且相应地导致一微码单元被通知该转译后备缓冲器的未命中。
18: 根据权利要求 17 所述的由微处理器所执行的方法, 还包括 : 根据上述检测的步骤, 清除晚于该多个预取指令的一者的每一该加载指令与该储存指 令; 以及 在上述清除的步骤后, 于剩余的该多个加载指令之前, 重新开始执行剩余的该多个预 取指令, 以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存 的可能性。

说明书


微处理器及其执行的方法

    技术领域 本发明是有关于微处理器的数据预取 (data prefetching), 特别是有关于微处理 器的指令预取。
     背景技术 重复数据串搬移 (REP MOVS) 巨指令是 x86 指令集架构中常被频繁执行的巨指令。 此巨指令命令微处理器将数据串由存储器内的来源位置搬移至存储器内的目标位置。此 指令可以微码 (microcode) 来实现。假使被搬移的字节的数量相对地较大, 则微码可以利 用 “快速数据串搬移 (fast string move)” 的微码例程 (routine) 来实现该巨指令。此快 速数据串搬移微码例程执行多个加载 - 储存 (load-store) 微操作 (micro-op) 组 (pairs) 的序列。快速数据串搬移微码例程试图执行大量的加载与储存微操作 ( 例如 16 字节 ), 这 是因为加载与储存微操作的效率较高, 换言之, 载入与储存微操作可处理的数据量大于 REP MOVS[B/W/D/Q]( 即字节 / 字组 / 双字组 / 四字组 ) 所指定的每一数据单位。
     然而, 由于加载微操作所指定的系统存储器快取列读取具有较长的延迟, 因此加 载微操作通常会未命中高速缓存而导致 REP MOVS 巨指令相对变慢。
     发明内容 本发明提供一种微处理器, 包括高速缓存、 指令组以及存储器子系统。 指令组包括 第一预取指令与第二预取指令, 第一预取指令与第二预取指令中每一者用来命令微处理器 自系统存储器预取数据快取列至高速缓存。 存储器子系统用来执行第一预取指令与第二预 取指令。对于第一预取指令, 存储器子系统根据既定情况组而放弃自系统存储器预取数据 快取列至高速缓存。对于第二预取指令, 存储器子系统根据既定情况组来完成自系统存储 器预取数据快取列至高速缓存。
     本发明还提供一种微处理器, 包括高速缓存及微码单元。 微码单元包含一微码, 该 微码用来实现一架构性重复数据串搬移指令。该微码包括多个保证预取 - 加载 - 储存指令 组的序列。 微处理器还包括存储器子系统, 用来执行保证预取、 加载、 及储存指令, 甚至在既 定情况组存在且当存储器子系统将非保证预取指令仅视为暗示时, 用来将保证预取指令所 指定的快取列的数据预取至高速缓存。
     本发明又提供一种微处理器, 包括高速缓存及微码单元。 微码单元包含一微码, 该 微码用来实现一架构性重复数据串搬移指令, 且微码包括多个加载指令与储存指令, 用以 将数据串由来源存储器位置搬移至目标存储器位置。微码还包括多个预取指令, 这些预取 指令远远领先加载指令, 以增加快取列在被加载指令存取前出现在该高速缓存的可能性。 微处理器还包括存储器子系统, 用来执行预取、 加载、 与储存指令。存储器子系统用来检测 预取指令之中的一者所指示的存储器地址于微处理器的转译后备缓冲器中未命中的情况, 且相应地通知微码单元该转译后备缓冲器的未命中。
     本发明也提供一种由微处理器所执行的方法。微处理器包括高速缓存以及指令
     组, 且指令组具有多个第一预取指令与第二预取指令。 该方法包括当执行第一预取指令时, 检测预设情况组中之中的一者或多个是否存在。 第一预取指令命令该微处理器自系统存储 器预取第一数据快取列至高速缓存。该方法也包括当执行第一预取指令时, 检测到预设情 况组中的一者或多个存在时, 放弃自系统存储器预取第一数据快取列至高速缓存的步骤。 该方法也包括当执行第二预取指令时, 检测预设情况组中之中的一者或多个是否存在。第 二预取指令命令微处理器自系统存储器预取第二数据快取列至高速缓存。 该方法还包括当 执行第二预取指令时, 检测到预设情况组中的一者或多个存在时, 完成自系统存储器预取 第二数据快取列至高速缓存的步骤。
     本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包 括解码架构性重复数据串搬移指令。该方法也包括相应于对架构性重复数据串搬移指令 进行解码的步骤, 执行多个保证预取 - 加载 - 储存指令组的序列。执行该等保证预取 - 加 载 - 储存指令组的序列的步骤包括甚至在既定情况组存在时且当存储器子系统将多个非 保证预取指令仅视为暗示时, 预取由该等保证预取 - 加载 - 储存指令组的序列所指定的高 速缓存的多个快取列。
     本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包 括对架构性重复数据串搬移指令进行解码。 该方法也包括相应于对架构性重复数据串搬移 指令进行解码的步骤, 执行多个加载指令与储存指令, 以将数据串由来源存储器位置搬移 至目标存储器位置。 该方法也包括在执行加载指令之前, 执行多个预取指令, 以增加多个快 取列在被加载指令处理前出现在高速缓存的可能性。 该方法还包括检测预取指令的一者正 指示出一存储器地址于微处理器的转译后备缓冲器中未命中的情况, 且相应地导致微码单 元被通知转译后备缓冲器的未命中。 附图说明 图 1 绘示本发明一实施例的微处理器的方块图 ;
     图 2 的窗体示意图 1 的存储器子系统在不同情况下执行保证预取微指令时, 存储 器子系统所执行的操作 ;
     图 3 示意图 1 的微处理器的快速数据串搬移微码一实施例的部分序列 ; 以及
     图 4 示意图 1 的微处理器的操作流程图。
     [ 主要元件标号说明 ]
     100 ~微处理器 ; 102 ~指令高速缓存 ;
     104 ~指令转译器 ; 106 ~ RAT ;
     108 ~保留站 ; 114 ~引退单元 ;
     112 ~多个执行单元与存储器子系统 ;
     116 ~重排序缓冲器 (ROB) ;
     118 ~微码单元 ; 122 ~填充队列 ;
     124 ~数据高速缓存 ;
     126 ~总线接口单元 (BIU) ;
     128 ~控制逻辑单元 ; 132 ~重复数据串搬移巨指令 ;
     134、 136 ~微指令 ;
     135 ~处理器总线 ; 138 ~一般目的缓存器 (GPR) ; 142 ~快速数据串搬移微码 ; 144 ~转译后备缓冲器 (TLB) ; 402、 404、 406、 408、 412、 414、 416、 418 ~方法步骤。具体实施方式
     为使本发明的上述目的、 特征和优点能更明显易懂, 下文特举一较佳实施例, 并配 合所附图式, 作详细说明如下。
     发明人认为假使能以某种方式使加载操作命中 (hit) 图 1 的数据高速缓存 124, 则图 1 的微处理器 100 可更快速地执行数据串搬移。发明人试图通过隐藏与加载操作相 关的存储器存取延迟来达到快速数据串搬移。而隐藏的方式是在微码中加入预取微指令, 此预取微指令可在加载操作之前先预取数据串中即将会需要的部分至数据高速缓存 124。 然而, 发明人注意到存储器子系统把一般预取操作仅视为暗示 (hint)。也就是说, 在某 些情况下存储器子系统会放弃预取快取列至数据高速缓存 124。例如, 当图 1 的填充队列 (fillqueue)122 被填满时 ( 即填充队列 122 的所有项目 (entries) 现在都被配置 )、 需要 执行页表查找 (tablewalk)、 遭遇序列 (serialize) 执行的情况 ( 例如预取操作位于一序列 指令之后, 例如锁定操作 )、 或是预取的地址与储存操作或监测 (snoop) 操作的地址发生冲 突 (address-collision)。 当这些情况其中一者发生时, 指定的快取列不会被预取至高速缓 存, 这通常导致了加载操作开始未命中于高速缓存, 进而使数据串搬移再次变慢。 在了解到微处理器 100 十分需要将数据预取至数据高速缓存 124, 发明人将一保 证预取 (guaranteed prefetch, gprefetch) 微指令加入图 1 的快速数据串搬移微码 142 所能使用的微指令组。保证预取微指令与一般预取微指令的相异之处在于, 只要指令架构 允许, 在几乎任何情况下, 保证预取微指令都能保证特定快取列会被撷取至数据高速缓存 124。
     图 2 的窗体列出在不同情况下执行一保证预取微指令时, 存储器子系统 112 所执 行的操作。
     (1) 假使保证预取微指令正预取的存储器页面 (page) 的存储器特性为不可快取 (uncacheable), 由于指令架构不允许预取不可快取的存储器页面, 因此存储器子系统 112 不会预取快取列, 但是相对地会致使保证预取微指令产生例外处理程序 (exception), 让微 码单元 118 可以一般方式来执行数据串搬移, 也就是非预取的方式。
     (2) 假使填充队列 122 被填满时, 存储器子系统 112 将使保证预取微指令被重新执 行 (replay), 直到填充队列 122 的一项目可被成功地配置。
     (3) 假使保证预取微指令与储存操作或监测操作发生冲突 ( 例如存取同一地址 ) 时, 存储器子系统 112 将使保证预取微指令被重新执行, 直到不再有冲突发生。
     (4) 假使存储器子系统 112 遭遇一序列执行的情况, 其将重新执行保证预取微指 令。
     (5) 假 使 保 证 预 取 微 指 令 的 虚 拟 地 址 未 命 中 于 图 1 的 转 译 后 备 缓 冲 器 (Translation Lookaside Buffer, TLB)144 中, 存储器子系统 112 不会预取快取列, 且将使
     保证预取微指令产生一个例外处理程序。通过产生由微码单元 118 所处理的例外处理程 序, 存储器子系统 112 致使存储器子系统 112 执行页表查找, 之后再使快速数据串搬移微 码重新加载执行 (re-prime thepump)。否则的话, 尤其是如果 TLB 144 的未命中是发生在 之保证预取 - 加载 - 储存微指令组 (gprefetch-load-store triplets) 的循环主体 (loop body) 时 ( 参阅图 3 与下文讨论 ), 与保证预取微指令相关的存储器存取延迟可能无法被隐 藏, 使得对应的加载微指令将未命中高速缓存。 然而, 此例外处理程序会导致管线中较晚于 保证预取微指令的任何微指令被清除 (flushed), 包括保证预取 - 加载 - 储存微指令组在 内。一般来说, 在下列情况之下, 快速数据搬移微码不需要重新执行, 例如填充队列 122 为 填满的、 与储存指令 / 监测指令发生冲突、 或是在序列执行的情况下。因此, 在这些情况下 存储器子系统 112 不会产生例外处理程序, 而是重新执行保证预取微指令。在其它实施例 中, 当保证预取微指令的虚拟地址未命中 TLB 144 时, 存储器子系统 112 执行页表查找并重 新执行保证预取微指令。
     如图 3 所示, 为了在加载微指令执行之前将数据预取至数据高速缓存 124 内, 快速 数据串搬移微码 142 经改良加入一保证预取微指令至加载 - 储存微指令组, 以建立保证预 取 - 加载 - 储存微指令组。 由于保证预取微指令通常会有相对较长的系统存储器存取延迟, 因此快速数据串搬移微码 142 在开始保证预取 - 加载 - 储存微指令组之前, 还包含了一些 额外的初始保证预取微指令使系统存储器存取延迟可减少 ( 在图 3 的实施例中为 5 个保证 预取微指令 )。快速数据串搬移微码 142 的程序设计应试图把这些初始保证预取微指令放 置在时间上充分领先于保证预取 - 加载 - 储存微指令组的循环主体的位置, 使得初始保证 预取微指令所指定的快取列的数据, 在加载操作进入存储器子系统之前就已经预取至数据 高速缓存 124, 进而使加载操作可命中于数据高速缓存 124。也就是说, 快速数据串搬移微 码 142 的程序设计应试图在初始保证预取微指令与保证预取 - 加载 - 储存微指令组循环主 体之间放置足够的其它指令, 使得在加载操作到达时, 初始保证预取微指令所预取的快取 列已位于数据高速缓存 124 内。因此, 在循环的尾端 (end), 快速数据串搬移微码 142 包括 与初始保证预取微指令数量对应的加载 - 储存微指令组 ( 不包括保证预取微指令 )( 例如 5 组加载 - 储存微指令组 ), 以与预先执行的初始保证预取微指令同步 (sync up)。在一实施 例中, 一快取列为 64 字节, 且每一加载 / 储存操作是 16 字节。因此, 虽然图 3 的范例的微 码序列有 5 组加载 - 储存微指令组, 但是实际上共有 5 组 64 字节的加载 - 储存微指令组, 意 即有 5 组微指令组, 且每一组为 4 个 16 字节的加载 - 储存微指令组。 对于效能来说, 保证预 取微指令必须位在加载操作之前, 并且必须将指定的快取列读入数据高速缓存 124, 使加载 操作可命中数据高速缓存 124, 这点是很重要的。 这就是为什么保证预取微指令必须保证其 完成度, 甚至在需要时重新执行, 或者至少要引发例外处理程序使快速数据串搬移微码 142 有机会重新执行快速数据串搬移 ( 例如在未命中 TLB 144 的情况下 ) 是如此重要。这也 是为什么一般预取微指令在操作上有所不足, 因为一般预取微指令仅被视为暗示。在一实 施例中, 每一保证预取、 载入、 与储存操作都会更新各自的地址, 分别是 prefetch_address、 load_address、 及 store_address。
     现在参阅图 1, 其示意本发明一实施例的微处理器 100 的方块图。 微处理器 100 是 一个管线微处理器 (pipelined microprocessor), 包括指令高速缓存 102。指令高速缓存 102 用以快取多个程序指令, 在此处也称为巨指令 (macroinstructions)132。指令高速缓存 102 提供巨指令 132 至指令转译器 104。指令转译器 104 对每一巨指令 132 进行解码, 且 将大部分的巨指令 132 转译为一或多个微指令 134。转译后的微指令 134 可包括一般预取 (normalprefetch) 微指令等等。 此外, 在一实施例中, 微处理器 100 的指令组架构包括重复 数据串搬移巨指令 132, 其可包括在使用者程序内, 细节将于后文描述。指令转译器 104 用 以识别哪些巨指令 132 会被实现于存放于微处理器 100 的微码单元 118 的微码 142。当指 令转译器 104 遇到实现于微码 142 的巨指令 132 时, 指令转译器 104 将转移控制权至微码单 元 118 的微序列发生器 (microsequencer)( 未显示 ), 其中该微序列发生器自微码单元 118 的微码存储器 ( 未显示 ) 内撷取微码 142 的多个微指令 136, 并分派 (dispatch) 这些微指 令 136 以供执行。值得一提的是, 微码 142 包括用以实现重复数据串搬移巨指令 132 的程 序码 ( 此处称为快速数据串搬移微码 142), 例如 x86 架构的 REP MOVS 巨指令。此重复数据 串搬移巨指令 132 使用到保证预取微指令。微指令 136 可包括加载、 储存、 以及保证预取微 指令等等。
     一缓存器别名表 (register alias table, RAT)106 接收来自指令转译器 104 的转 译后微指令 134 以及来自微码单元 118 的快速数据串搬移微码 142 中的微指令 136, 且 RAT 106 产生微指令 134 和 136 的相依性 (dependencies)。在一实施例中, 微处理器 100 是一 个非循序 (out-of-order) 执行的微处理器, 且 RAT 106 是微处理器 100 管线中按程序顺序 接收微指令的最后管线部分。 RAT 106 整合 (incorporate) 微指令的程序顺序, 而该程序顺 序被重排序缓冲器 (reorder buffer, ROB)116 用以根据程序顺序来引退微指令 134 和 136。 RAT 106 在分派微指令 134 和 136 给保留站 (reservation station)108 之前, 会先依照程 序顺序在 ROB 116 内配置一项目给每一个微指令 134 和 136。ROB116 耦接至 RAT 106、 保留 站 108、 多个执行单元与存储器子系统 112、 以及引退单元 114。
     保留站 108 接收来自 RAT 106 的微指令 134 和 136, 并根据 RAT 106 所产生的相依 性信息判断微指令 134 和 136 的来源操作数是否为可用 (available), 且多个执行单元 112 也可用时, 保留站 108 将微指令 134 和 136 发布至多个执行单元 112。微处理器 100 也包括 多个一般目的缓存器 (general purpose register, GPR)138, 其被微指令 134 和 136 所使 用, 作为快速数据串搬移微码 142 所搬移的数据串的中间储存位置 (intermediatestorage locations)。引退单元 114 按照微指令 134 和 136 在 ROB 116 内的程序顺序来引退微指令 134 和 136。值得一提的是, 引退单元 114 会检查在 ROB 116 内最旧的指令的项目的多个旗 标, 以判断微指令 134 和 136 是否需要被重新执行, 或判断是否需要引发例外处理程序。
     存 储 器 子 系 统 112 包 括 转 译 后 备 缓 冲 器 (Translation LookasideBuffer, TLB)144、 数据高速缓存 124、 填充队列 122、 总线接口单元 (businterface unit, BIU)126、 以及控制逻辑单元 128, 其中, 控制逻辑单元 128 耦接于 TLB 144、 数据高速缓存 124、 填充队 列 122、 以及 BIU 126。BIU 126 将微处理器 100 介接至一处理器总线, 该处理器总线耦接 至微处理器 100 所在 (reside) 的计算机系统的系统存储器 ( 未显示 )。系统存储器储存 重复数据串搬移巨指令 132 所要搬移的数据串, 此数据串是由一来源地址搬移至重复数据 串搬移巨指令 132 所指定的目标地址。TLB 144 提供存储器页面的虚拟至物理地址转换的 快取。数据高速缓存 124 提供自系统存储器所读取的数据的快取, 例如重复搬移数据串巨 指令 132 的数据串。填充队列 122 具有一定数量的快取列缓冲器, 每一快取列缓冲器可由 存储器子系统 112 来分别配置, 以接收 BIU 126 自系统存储器读出的快取列, 例如由保证预取微指令所预取的一快取列的数据串, 该数据串为重复搬移数据串巨指令 132 所指定的。 由于保证预取微指令不会将数据加载至微处理器 100 的架构缓存器, 因此最好由存储器子 系统 112 来完成保证预取微指令, 并接着释放出存储器子系统 112 的资源。一旦存储器子 系统 112 确定任何会防止其预取由保证预取微指令所指定的快取列的情况存在时, 可配置 填充队列 122 的一个快取列缓冲器给该快取列。此外, 当此保证预取微指令成为微处理器 100 中最旧的指令时, 引退单元 114 会立刻引退此保证预取微指令, 以利有效地释放先前配 置给该保证预取微指令的 ROB 116 项目。
     存储器子系统 112 可执行保证预取微指令、 一般预取微指令、 加载微指令、 以及储 存微指令等等。在某些情况下, 如图 2 的窗体所示, 存储器子系统 112 可能想要致使微处理 器 100 重新执行某个微指令 ( 例如一保证预取微指令 ), 或者致使微处理器 100 引发例外 处理程序来响应某一微指令。为了完成重新执行, 存储器子系统 112 对保证预取微指令所 对应的 ROB 116 项目设定一重新执行旗标, 以示意此保证预取微指令必须重新执行。接着, 当此保证预取微指令准备引退时 ( 例如此保证预取微指令为 ROB 116 中最旧的指令 ), ROB 116 重新执行保证预取微指令, 并且将晚于此微指令的所有微指令返回至保留站 108, 使得 其来源操作数被重新撷取, 并重新发布被返回的微指令至执行单元与存储器子系统 112 来 执行。 为了完成例外处理程序, 存储器子系统 112 对保证预取微指令所对应的 ROB 116 项目 设定一例外旗标, 以示意此保证预取微指令引发例外状况 (exception condition)。接着, 当保证预取微指令准备引退时, ROB 116 引发一例外处理程序, 由微码单元 118 中的例外处 理管理程序 (exception handler) 执行, 以将例外状况传达给快速数据串搬移微码 142。
     现在参阅图 4, 其示意图 1 的微处理器 100 的操作流程的一实施例。 流程开始于步骤 402。 在步骤 402 中, 存储器子系统 112 正执行一预取微指令 ( 可以是保证预取微指令 或是一般预取微指令 ), 且遭遇一状况, 例如图 2 的窗体所表示的情况, 存储器子系统 112 无 法将指定的快取列撷取到数据高速缓存 124。流程前进至步骤 404。
     在步骤 404 中, 存储器子系统 112 判断该预取微指令的类型。 如果此预取微指令是 保证预取微指令, 流程前进至判断步骤 408 ; 反之, 如果此预取微指令是一般预取微指令, 流程则前进至步骤 406。
     在步骤 406 中, 存储器子系统 112 压制 (squash) 此一般预取微指令。也就是说, 存储器子系统 112 不会在处理器总线 135 上产生数据传输 (transaction) 以读取一般预取 微指令所指定的快取列, 并允许此一般预取微指令可正常地引退。 换句话说, 存储器子系统 112 将此一般预取微指令视为一暗示, 并且在此状况下把它当作无操作 (no-op) 微指令来 执行。于一实施例中, 在一般预取微指令所指定的快取列位置未命中 TLB 144 的情况下, 存 储器子系统 112 会执行页表查找, 并接着重新执行此一般预取微指令, 而不是压制它。一般 预取微指令的流程结束于步骤 406。
     如果此预取微指令为保证预取微指令, 在判断步骤 408 中, 存储器子系统 112 判断 步骤 402 所遭遇到的情况是否为, 保证预取微指令所指定的地址落在具有不可快取特性的 存储器区域内。如果是的话, 流程前进至步骤 412 ; 反之, 流程前进至判断步骤 414。
     在步骤 412 中, 存储器子系统 112 放弃预取该快取列, 并对此保证预取微指令所对 应的 ROB 116 项目设定例外旗标, 使得此保证预取微指令接续引发例外处理程序。如此一
     来会使得快速数据串搬移微码 142 藉助于程序码的非预取版本来实现重复数据串搬移巨 指令 132。在此应注意, 在步骤 412 与 416 中通过对 ROB 116 的项目设定例外旗标所引发 的例外处理程序并非架构性例外处理程序 (architectural exception), 而是微处理器 100 的内部微例外处理程序 (micro-exception)。也就是说, 在内部微例外处理程序的情况下, 快速数据串搬移微码 142 不会将控制权转移至系统软件。例外处理程序的流程结束于步骤 412。
     在步骤 414 中, 存储器子系统 112 判断在步骤 402 中所遭遇到的情况是否为保证 预取微指令所指定的地址未命中 TLB 114。 如果是的话, 流程前进至步骤 416 ; 反之, 流程前 进至步骤 418。
     若保证预取微指令所指定的地址未命中 TLB 114, 在步骤 416 中, 存储器子系统 112 放弃预取该快取列, 并对此保证预取微指令所对应的 ROB 116 项目设定例外旗标, 使得 此保证预取微指令接续引发例外处理程序。此例外处理程序导致微处理器 100 管线中较晚 于此保证预取微指令的任何微指令 136 被清除, 包括图 3 的保证预取 - 加载 - 储存微指令 组。接着, 快速数据串搬移微码 142 执行一微指令以引发页表查找的执行, 藉此获得存储器 页面的虚拟至物理地址转换, 此存储器页面包含保证预取微指令所指定的快取列地址。此 外, 图 3 的快速数据串搬移微码 142 会回复执行 (resume), 重新加载微指令并利用保证预取 微指令来执行快速数据串搬移。在本发明另一实施例中, 当发生未命中 TLB 时, 存储器子系 统 112 会执行页表查找, 并接着以类似步骤 418 所叙述的方式来重新执行保证预取微指令, 而不是致使存储器子系统 112 产生例外处理程序。未命中 TLB 的流程结束于步骤 416。 如果保证预取微指令所指定的地址命中 TLB 114, 在步骤 418 中, 存储器子系统 112 对保证预取微指令所对应的 ROB 116 项目设定重新执行旗标, 使得保证预取微指令可 接续被重新执行。在许多情况中, 当保证预取微指令被重新执行时, 状况可被排除 ( 即填充 队列 122 的项目为可用的、 地址冲突不再存在、 或是序列指令被引退 ), 使得存储器子系统 112 可立即重新执行保证预取微指令, 当对应的加载微指令到达存储器子系统 112 时, 快取 列的数据已实时放入数据高速缓存 124。命中 TLB 的流程结束于步骤 418。
     在一实施例中, 可考虑将一保证预取指令加入至微处理器 100 的指令组架构内, 以供使用者程序使用, 如同快速数据串搬移微码 142 所使用的保证预取微指令。
     将保证预取微指令加入微指令组的优点在于, 由于当加载微指令执行时, 所搬移 的数据较可能命中于数据高速缓存 124, 因此微码单元 118 可较快速地执行 REP MOVE 指令。
     本发明的不同实施例已于本文叙述, 但本领域技术人员应能了解这些实施例仅 作为范例, 而非限定于此。本领域技术人员可在不脱离本发明的精神的情况下, 对形式与 细节上做不同的变化。例如, 软件可致能本发明实施例所述的装置与方法的功能、 组建 (fabrication)、 塑造 (modeling)、 模拟、 描述 (description)、 以及 / 或测试。可透过一般 程序语言 (C、 C++)、 硬件描述语言 (Hardware Description Languages, HDL)( 包括 Verilog HDL、 VHDL 等等 )、 或其它可利用的程序语言来完成。此软件可配置在任何已知的计算机可 使用媒介, 例如半导体、 磁盘、 或光盘 ( 例如 CD-ROM、 DVD-ROM 等等 )。本发明所述的装置与 方法实施例可被包括于半导体智能财产核心, 例如微处理器核心 ( 以 HDL 来实现 ), 并转换 成集成电路产品的硬件。此外, 本发明所述的装置与方法可实现为硬件与软件的结合。因 此, 本发明不应局限于所揭露的实施例, 而是依所附的权利要求范围与等同实施所界定。 特
     别是, 本发明可实施在使用于一般用途计算机中的微处理器装置内。 最后, 本发明虽以较佳 实施例揭露如上, 然其并非用以限定本发明的范围, 任何所属技术领域中具有通常知识者, 在不脱离本发明的精神和范围内, 当可做些许的更动与润饰, 因此本发明的保护范围当视 所附的权利要求范围所界定者为准。

微处理器及其执行的方法.pdf_第1页
第1页 / 共16页
微处理器及其执行的方法.pdf_第2页
第2页 / 共16页
微处理器及其执行的方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《微处理器及其执行的方法.pdf》由会员分享,可在线阅读,更多相关《微处理器及其执行的方法.pdf(16页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101984403A43申请公布日20110309CN101984403ACN101984403A21申请号201010194974X22申请日2010060161/182,79920090601US12/781,33720100517USG06F9/38200601G06F12/0820060171申请人威盛电子股份有限公司地址中国台湾台北县72发明人G葛兰亨利罗德尼E虎克柯林艾迪74专利代理机构北京市柳沈律师事务所11105代理人钱大勇54发明名称微处理器及其执行的方法57摘要一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预。

2、取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书8页附图4页CN101984406A1/3页21一种微处理器,包括一高速缓存;一指令组,包括一第一预取指令与一第二预取指令,该第一预取指令与该第二预取指令中每一者用来命令该微处理器自一系统存储器预取。

3、一数据快取列至该高速缓存;以及一存储器子系统,用来执行该第一预取指令与该第二预取指令,其中,对于该第一预取指令,该存储器子系统根据一第一既定情况组而放弃自该系统存储器预取该数据快取列至该高速缓存;其中,对于该第二预取指令,该存储器子系统根据该第一既定情况组来完成自该系统存储器预取该数据快取列至该高速缓存。2根据权利要求1所述的微处理器,其中,该指令组为一微架构指令组。3根据权利要求1所述的微处理器,根据该第一既定情况组,该存储器子系统通过重新执行该第二预取指令来完成自系统存储器预取该数据快取列至该高速缓存。4根据权利要求1所述的微处理器,其中该第一既定情况组包括以下其中一者该微处理器的一填充队。

4、列被填满,该填充队列具有一既定数量的储存元件,用以接收来自该系统存储器的多个快取列;一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地址与该微处理器内待处理中较旧的一储存操作之间;一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地址与该微处理器内的待处理中的一监测操作之间;该第一预取指令与该第二预取指令晚于一序列指令;以及该第一预取指令与该第二预取指令所指定的该数据快取列的地址未命中该微处理器的一转译后备缓冲器。5根据权利要求1所述的微处理器,其中对于该第一预取指令,该存储器子系统根据一第二既定情况组而放弃自系统存储器预取该数据快取列至该高速缓存,以。

5、及对于该第二预取指令,该存储器子系统根据该第二既定情况组引发一例外处理程序。6根据权利要求5所述的微处理器,其中该第二既定情况组包括以下其中一者该第一预取指令与该第二预取指令所寻址的一存储器页面的存储器特性为不可快取;以及该第一预取指令与该第二预取指令所指定的该数据快取列的一地址未命中该微处理器的一转译后备缓冲器。7根据权利要求6所述的微处理器,其中该存储器子系统执行一页面页表查找,以获得该第二预取指令所指定的该数据快取列的该地址的一虚拟至物理地址转换。8根据权利要求5所述的微处理器,还包括一微码单元,包括一例外处理例程,用来处理该例外处理程序且传达给该微处理器的一重复数据串搬移微码;其中,该。

6、重复数据串搬移微码实现该为微处理器的指令组架构的一重复数据串搬移巨指令。9一种微处理器,包括一高速缓存;权利要求书CN101984403ACN101984406A2/3页3一微码单元,包含一微码,该微码用来实现一架构性重复数据串搬移巨指令,其中,该微码包括多个保证预取加载储存指令组的序列;以及一存储器子系统,用来执行该多个保证预取加载储存指令组,在一既定情况组存在且当该存储器子系统将多个非保证预取指令仅视为暗示时,用来预取该多个保证预取指令所指定的多个快取列至该高速缓存。10根据权利要求9所述的微处理器,其中该微码包括在该多个保证预取加载储存指令组的序列之前的一或多个由该存储器子系统所执行的初。

7、始保证预取指令,并在该存储器子系统遭遇到该多个保证预取加载储存指令组的序列中的加载指令之前,使得该一或多个初始保证预取指令读取指定的快取列被预取至该高速缓存。11一种微处理器,包括一高速缓存;一微码单元,包含一微码,该微码用以实现一架构性重复数据串搬移巨指令,该微码包括多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置,且该微码还包括在该多个加载指令之前的多个预取指令,以增加该多个加载指令被处理之前,多个快取列出现在该高速缓存的可能性;以及一存储器子系统,用来执行该多个预取指令、加载指令、与储存指令,其中该存储器子系统用来检测该多个预取指令的一者所指示的一存储器地址未命。

8、中该微处理器的一转译后备缓冲器,当该存储器位置未命中该转译后备缓冲器时,该存储器子系统通知该微码单元。12根据权利要求11所述的微处理器,其中该微处理器根据上述检测的情况来清除晚于该多个预取指令的一者的每一该加载指令与该储存指令。13根据权利要求12所述的微处理器,其中,在清除后,于剩余的该多个加载指令之前,该微码单元重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。14根据权利要求11所述的微处理器,其中,该存储器子系统用来检测该多个预取指令的一者正指示具有非可缓存特性的一存储器区域的一存储器地址的一情况,且相应地导致该微码单元。

9、被通知该情况,以及该微码用来相应地搬移数据串的剩余部分而不需使用该多个预取指令。15一种由一微处理器所执行的方法,该微处理器包括一高速缓存以及一指令组,且该指令组具有多个第一预取指令与第二预取指令,该方法包括当执行该第一预取指令时,检测一预设情况组中的一者或多个的存在,其中,该第一预取指令命令该微处理器自一系统存储器预取一第一数据快取列至该高速缓存;相应于当执行该第一预取指令时检测该预设情况组中的一者或多个的存在的步骤,放弃自该系统存储器预取该第一数据快取列至该高速缓存;当执行该第二预取指令时,检测该预设情况组中的一者或多个的存在,其中,该第二预取指令命令该微处理器自该系统存储器预取一第二数据。

10、快取列至该高速缓存;以及相应于执行该第二预取指令时检测该预设情况组中的一者或多个的存在的步骤,完成自该系统存储器预取该第二数据快取列至该高速缓存。16一种由一微处理器所执行的方法,该微处理器包括一高速缓存,该方法包括权利要求书CN101984403ACN101984406A3/3页4对一架构性重复数据串搬移指令进行解码;以及相应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个保证预取加载储存指令组的序列;其中,执行该多个保证预取加载储存指令组的序列的步骤包括甚至在一既定情况组存在时且当该存储器子系统将多个非保证预取指令仅视为暗示时,预取由该多个保证预取加载储存指令组的序列所指定的该高速缓。

11、存的多个快取列。17一种由一微处理器所执行的方法,该微处理器包括一高速缓存,该方法包括对一架构性重复数据串搬移指令进行解码;相应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置;在执行该多个加载指令之前,执行多个预取指令,以增加多个快取列在被该多个加载指令处理前出现在该高速缓存的可能性;以及检测该多个预取指令的一者正指示出一存储器地址于该微处理器的一转译后备缓冲器中未命中的一情况,且相应地导致一微码单元被通知该转译后备缓冲器的未命中。18根据权利要求17所述的由微处理器所执行的方法,还包括根据上述检测的步骤,清除晚于该。

12、多个预取指令的一者的每一该加载指令与该储存指令;以及在上述清除的步骤后,于剩余的该多个加载指令之前,重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。权利要求书CN101984403ACN101984406A1/8页5微处理器及其执行的方法技术领域0001本发明是有关于微处理器的数据预取DATAPREFETCHING,特别是有关于微处理器的指令预取。背景技术0002重复数据串搬移REPMOVS巨指令是X86指令集架构中常被频繁执行的巨指令。此巨指令命令微处理器将数据串由存储器内的来源位置搬移至存储器内的目标位置。此指令可以微码MI。

13、CROCODE来实现。假使被搬移的字节的数量相对地较大,则微码可以利用“快速数据串搬移FASTSTRINGMOVE”的微码例程ROUTINE来实现该巨指令。此快速数据串搬移微码例程执行多个加载储存LOADSTORE微操作MICROOP组PAIRS的序列。快速数据串搬移微码例程试图执行大量的加载与储存微操作例如16字节,这是因为加载与储存微操作的效率较高,换言之,载入与储存微操作可处理的数据量大于REPMOVSB/W/D/Q即字节/字组/双字组/四字组所指定的每一数据单位。0003然而,由于加载微操作所指定的系统存储器快取列读取具有较长的延迟,因此加载微操作通常会未命中高速缓存而导致REPMOV。

14、S巨指令相对变慢。发明内容0004本发明提供一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。0005本发明还提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令。该微码包括多个保证预取加载储存指令。

15、组的序列。微处理器还包括存储器子系统,用来执行保证预取、加载、及储存指令,甚至在既定情况组存在且当存储器子系统将非保证预取指令仅视为暗示时,用来将保证预取指令所指定的快取列的数据预取至高速缓存。0006本发明又提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令,且微码包括多个加载指令与储存指令,用以将数据串由来源存储器位置搬移至目标存储器位置。微码还包括多个预取指令,这些预取指令远远领先加载指令,以增加快取列在被加载指令存取前出现在该高速缓存的可能性。微处理器还包括存储器子系统,用来执行预取、加载、与储存指令。存储器子系统用来检测预取指令之中。

16、的一者所指示的存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地通知微码单元该转译后备缓冲器的未命中。0007本发明也提供一种由微处理器所执行的方法。微处理器包括高速缓存以及指令说明书CN101984403ACN101984406A2/8页6组,且指令组具有多个第一预取指令与第二预取指令。该方法包括当执行第一预取指令时,检测预设情况组中之中的一者或多个是否存在。第一预取指令命令该微处理器自系统存储器预取第一数据快取列至高速缓存。该方法也包括当执行第一预取指令时,检测到预设情况组中的一者或多个存在时,放弃自系统存储器预取第一数据快取列至高速缓存的步骤。该方法也包括当执行第二预取指令时,。

17、检测预设情况组中之中的一者或多个是否存在。第二预取指令命令微处理器自系统存储器预取第二数据快取列至高速缓存。该方法还包括当执行第二预取指令时,检测到预设情况组中的一者或多个存在时,完成自系统存储器预取第二数据快取列至高速缓存的步骤。0008本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括解码架构性重复数据串搬移指令。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个保证预取加载储存指令组的序列。执行该等保证预取加载储存指令组的序列的步骤包括甚至在既定情况组存在时且当存储器子系统将多个非保证预取指令仅视为暗示时,预取由该等保证预取加载储存指令组的序列所指。

18、定的高速缓存的多个快取列。0009本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括对架构性重复数据串搬移指令进行解码。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由来源存储器位置搬移至目标存储器位置。该方法也包括在执行加载指令之前,执行多个预取指令,以增加多个快取列在被加载指令处理前出现在高速缓存的可能性。该方法还包括检测预取指令的一者正指示出一存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地导致微码单元被通知转译后备缓冲器的未命中。附图说明0010图1绘示本发明一实施例的微处理器的方块图;0011图2的。

19、窗体示意图1的存储器子系统在不同情况下执行保证预取微指令时,存储器子系统所执行的操作;0012图3示意图1的微处理器的快速数据串搬移微码一实施例的部分序列;以及0013图4示意图1的微处理器的操作流程图。0014主要元件标号说明0015100微处理器;102指令高速缓存;0016104指令转译器;106RAT;0017108保留站;114引退单元;0018112多个执行单元与存储器子系统;0019116重排序缓冲器ROB;0020118微码单元;122填充队列;0021124数据高速缓存;0022126总线接口单元BIU;0023128控制逻辑单元;132重复数据串搬移巨指令;0024134、。

20、136微指令;说明书CN101984403ACN101984406A3/8页70025135处理器总线;0026138一般目的缓存器GPR;0027142快速数据串搬移微码;0028144转译后备缓冲器TLB;0029402、404、406、408、412、414、416、418方法步骤。具体实施方式0030为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并配合所附图式,作详细说明如下。0031发明人认为假使能以某种方式使加载操作命中HIT图1的数据高速缓存124,则图1的微处理器100可更快速地执行数据串搬移。发明人试图通过隐藏与加载操作相关的存储器存取延迟来达到快速数据。

21、串搬移。而隐藏的方式是在微码中加入预取微指令,此预取微指令可在加载操作之前先预取数据串中即将会需要的部分至数据高速缓存124。然而,发明人注意到存储器子系统把一般预取操作仅视为暗示HINT。也就是说,在某些情况下存储器子系统会放弃预取快取列至数据高速缓存124。例如,当图1的填充队列FILLQUEUE122被填满时即填充队列122的所有项目ENTRIES现在都被配置、需要执行页表查找TABLEWALK、遭遇序列SERIALIZE执行的情况例如预取操作位于一序列指令之后,例如锁定操作、或是预取的地址与储存操作或监测SNOOP操作的地址发生冲突ADDRESSCOLLISION。当这些情况其中一者发。

22、生时,指定的快取列不会被预取至高速缓存,这通常导致了加载操作开始未命中于高速缓存,进而使数据串搬移再次变慢。0032在了解到微处理器100十分需要将数据预取至数据高速缓存124,发明人将一保证预取GUARANTEEDPREFETCH,GPREFETCH微指令加入图1的快速数据串搬移微码142所能使用的微指令组。保证预取微指令与一般预取微指令的相异之处在于,只要指令架构允许,在几乎任何情况下,保证预取微指令都能保证特定快取列会被撷取至数据高速缓存124。0033图2的窗体列出在不同情况下执行一保证预取微指令时,存储器子系统112所执行的操作。00341假使保证预取微指令正预取的存储器页面PAGE。

23、的存储器特性为不可快取UNCACHEABLE,由于指令架构不允许预取不可快取的存储器页面,因此存储器子系统112不会预取快取列,但是相对地会致使保证预取微指令产生例外处理程序EXCEPTION,让微码单元118可以一般方式来执行数据串搬移,也就是非预取的方式。00352假使填充队列122被填满时,存储器子系统112将使保证预取微指令被重新执行REPLAY,直到填充队列122的一项目可被成功地配置。00363假使保证预取微指令与储存操作或监测操作发生冲突例如存取同一地址时,存储器子系统112将使保证预取微指令被重新执行,直到不再有冲突发生。00374假使存储器子系统112遭遇一序列执行的情况,其。

24、将重新执行保证预取微指令。00385假使保证预取微指令的虚拟地址未命中于图1的转译后备缓冲器TRANSLATIONLOOKASIDEBUFFER,TLB144中,存储器子系统112不会预取快取列,且将使说明书CN101984403ACN101984406A4/8页8保证预取微指令产生一个例外处理程序。通过产生由微码单元118所处理的例外处理程序,存储器子系统112致使存储器子系统112执行页表查找,之后再使快速数据串搬移微码重新加载执行REPRIMETHEPUMP。否则的话,尤其是如果TLB144的未命中是发生在之保证预取加载储存微指令组GPREFETCHLOADSTORETRIPLETS的循。

25、环主体LOOPBODY时参阅图3与下文讨论,与保证预取微指令相关的存储器存取延迟可能无法被隐藏,使得对应的加载微指令将未命中高速缓存。然而,此例外处理程序会导致管线中较晚于保证预取微指令的任何微指令被清除FLUSHED,包括保证预取加载储存微指令组在内。一般来说,在下列情况之下,快速数据搬移微码不需要重新执行,例如填充队列122为填满的、与储存指令/监测指令发生冲突、或是在序列执行的情况下。因此,在这些情况下存储器子系统112不会产生例外处理程序,而是重新执行保证预取微指令。在其它实施例中,当保证预取微指令的虚拟地址未命中TLB144时,存储器子系统112执行页表查找并重新执行保证预取微指令。。

26、0039如图3所示,为了在加载微指令执行之前将数据预取至数据高速缓存124内,快速数据串搬移微码142经改良加入一保证预取微指令至加载储存微指令组,以建立保证预取加载储存微指令组。由于保证预取微指令通常会有相对较长的系统存储器存取延迟,因此快速数据串搬移微码142在开始保证预取加载储存微指令组之前,还包含了一些额外的初始保证预取微指令使系统存储器存取延迟可减少在图3的实施例中为5个保证预取微指令。快速数据串搬移微码142的程序设计应试图把这些初始保证预取微指令放置在时间上充分领先于保证预取加载储存微指令组的循环主体的位置,使得初始保证预取微指令所指定的快取列的数据,在加载操作进入存储器子系统之。

27、前就已经预取至数据高速缓存124,进而使加载操作可命中于数据高速缓存124。也就是说,快速数据串搬移微码142的程序设计应试图在初始保证预取微指令与保证预取加载储存微指令组循环主体之间放置足够的其它指令,使得在加载操作到达时,初始保证预取微指令所预取的快取列已位于数据高速缓存124内。因此,在循环的尾端END,快速数据串搬移微码142包括与初始保证预取微指令数量对应的加载储存微指令组不包括保证预取微指令例如5组加载储存微指令组,以与预先执行的初始保证预取微指令同步SYNCUP。在一实施例中,一快取列为64字节,且每一加载/储存操作是16字节。因此,虽然图3的范例的微码序列有5组加载储存微指令组。

28、,但是实际上共有5组64字节的加载储存微指令组,意即有5组微指令组,且每一组为4个16字节的加载储存微指令组。对于效能来说,保证预取微指令必须位在加载操作之前,并且必须将指定的快取列读入数据高速缓存124,使加载操作可命中数据高速缓存124,这点是很重要的。这就是为什么保证预取微指令必须保证其完成度,甚至在需要时重新执行,或者至少要引发例外处理程序使快速数据串搬移微码142有机会重新执行快速数据串搬移例如在未命中TLB144的情况下是如此重要。这也是为什么一般预取微指令在操作上有所不足,因为一般预取微指令仅被视为暗示。在一实施例中,每一保证预取、载入、与储存操作都会更新各自的地址,分别是PRE。

29、FETCH_ADDRESS、LOAD_ADDRESS、及STORE_ADDRESS。0040现在参阅图1,其示意本发明一实施例的微处理器100的方块图。微处理器100是一个管线微处理器PIPELINEDMICROPROCESSOR,包括指令高速缓存102。指令高速缓存102用以快取多个程序指令,在此处也称为巨指令MACROINSTRUCTIONS132。指令高速缓说明书CN101984403ACN101984406A5/8页9存102提供巨指令132至指令转译器104。指令转译器104对每一巨指令132进行解码,且将大部分的巨指令132转译为一或多个微指令134。转译后的微指令134可包括一般。

30、预取NORMALPREFETCH微指令等等。此外,在一实施例中,微处理器100的指令组架构包括重复数据串搬移巨指令132,其可包括在使用者程序内,细节将于后文描述。指令转译器104用以识别哪些巨指令132会被实现于存放于微处理器100的微码单元118的微码142。当指令转译器104遇到实现于微码142的巨指令132时,指令转译器104将转移控制权至微码单元118的微序列发生器MICROSEQUENCER未显示,其中该微序列发生器自微码单元118的微码存储器未显示内撷取微码142的多个微指令136,并分派DISPATCH这些微指令136以供执行。值得一提的是,微码142包括用以实现重复数据串搬移。

31、巨指令132的程序码此处称为快速数据串搬移微码142,例如X86架构的REPMOVS巨指令。此重复数据串搬移巨指令132使用到保证预取微指令。微指令136可包括加载、储存、以及保证预取微指令等等。0041一缓存器别名表REGISTERALIASTABLE,RAT106接收来自指令转译器104的转译后微指令134以及来自微码单元118的快速数据串搬移微码142中的微指令136,且RAT106产生微指令134和136的相依性DEPENDENCIES。在一实施例中,微处理器100是一个非循序OUTOFORDER执行的微处理器,且RAT106是微处理器100管线中按程序顺序接收微指令的最后管线部分。R。

32、AT106整合INCORPORATE微指令的程序顺序,而该程序顺序被重排序缓冲器REORDERBUFFER,ROB116用以根据程序顺序来引退微指令134和136。RAT106在分派微指令134和136给保留站RESERVATIONSTATION108之前,会先依照程序顺序在ROB116内配置一项目给每一个微指令134和136。ROB116耦接至RAT106、保留站108、多个执行单元与存储器子系统112、以及引退单元114。0042保留站108接收来自RAT106的微指令134和136,并根据RAT106所产生的相依性信息判断微指令134和136的来源操作数是否为可用AVAILABLE,且多。

33、个执行单元112也可用时,保留站108将微指令134和136发布至多个执行单元112。微处理器100也包括多个一般目的缓存器GENERALPURPOSEREGISTER,GPR138,其被微指令134和136所使用,作为快速数据串搬移微码142所搬移的数据串的中间储存位置INTERMEDIATESTORAGELOCATIONS。引退单元114按照微指令134和136在ROB116内的程序顺序来引退微指令134和136。值得一提的是,引退单元114会检查在ROB116内最旧的指令的项目的多个旗标,以判断微指令134和136是否需要被重新执行,或判断是否需要引发例外处理程序。0043存储器子系统1。

34、12包括转译后备缓冲器TRANSLATIONLOOKASIDEBUFFER,TLB144、数据高速缓存124、填充队列122、总线接口单元BUSINTERFACEUNIT,BIU126、以及控制逻辑单元128,其中,控制逻辑单元128耦接于TLB144、数据高速缓存124、填充队列122、以及BIU126。BIU126将微处理器100介接至一处理器总线,该处理器总线耦接至微处理器100所在RESIDE的计算机系统的系统存储器未显示。系统存储器储存重复数据串搬移巨指令132所要搬移的数据串,此数据串是由一来源地址搬移至重复数据串搬移巨指令132所指定的目标地址。TLB144提供存储器页面的虚拟至。

35、物理地址转换的快取。数据高速缓存124提供自系统存储器所读取的数据的快取,例如重复搬移数据串巨指令132的数据串。填充队列122具有一定数量的快取列缓冲器,每一快取列缓冲器可由存储器子系统112来分别配置,以接收BIU126自系统存储器读出的快取列,例如由保证预说明书CN101984403ACN101984406A6/8页10取微指令所预取的一快取列的数据串,该数据串为重复搬移数据串巨指令132所指定的。由于保证预取微指令不会将数据加载至微处理器100的架构缓存器,因此最好由存储器子系统112来完成保证预取微指令,并接着释放出存储器子系统112的资源。一旦存储器子系统112确定任何会防止其预取。

36、由保证预取微指令所指定的快取列的情况存在时,可配置填充队列122的一个快取列缓冲器给该快取列。此外,当此保证预取微指令成为微处理器100中最旧的指令时,引退单元114会立刻引退此保证预取微指令,以利有效地释放先前配置给该保证预取微指令的ROB116项目。0044存储器子系统112可执行保证预取微指令、一般预取微指令、加载微指令、以及储存微指令等等。在某些情况下,如图2的窗体所示,存储器子系统112可能想要致使微处理器100重新执行某个微指令例如一保证预取微指令,或者致使微处理器100引发例外处理程序来响应某一微指令。为了完成重新执行,存储器子系统112对保证预取微指令所对应的ROB116项目设。

37、定一重新执行旗标,以示意此保证预取微指令必须重新执行。接着,当此保证预取微指令准备引退时例如此保证预取微指令为ROB116中最旧的指令,ROB116重新执行保证预取微指令,并且将晚于此微指令的所有微指令返回至保留站108,使得其来源操作数被重新撷取,并重新发布被返回的微指令至执行单元与存储器子系统112来执行。为了完成例外处理程序,存储器子系统112对保证预取微指令所对应的ROB116项目设定一例外旗标,以示意此保证预取微指令引发例外状况EXCEPTIONCONDITION。接着,当保证预取微指令准备引退时,ROB116引发一例外处理程序,由微码单元118中的例外处理管理程序EXCEPTION。

38、HANDLER执行,以将例外状况传达给快速数据串搬移微码142。0045现在参阅图4,其示意图1的微处理器100的操作流程的一实施例。流程开始于步骤402。0046在步骤402中,存储器子系统112正执行一预取微指令可以是保证预取微指令或是一般预取微指令,且遭遇一状况,例如图2的窗体所表示的情况,存储器子系统112无法将指定的快取列撷取到数据高速缓存124。流程前进至步骤404。0047在步骤404中,存储器子系统112判断该预取微指令的类型。如果此预取微指令是保证预取微指令,流程前进至判断步骤408;反之,如果此预取微指令是一般预取微指令,流程则前进至步骤406。0048在步骤406中,存储。

39、器子系统112压制SQUASH此一般预取微指令。也就是说,存储器子系统112不会在处理器总线135上产生数据传输TRANSACTION以读取一般预取微指令所指定的快取列,并允许此一般预取微指令可正常地引退。换句话说,存储器子系统112将此一般预取微指令视为一暗示,并且在此状况下把它当作无操作NOOP微指令来执行。于一实施例中,在一般预取微指令所指定的快取列位置未命中TLB144的情况下,存储器子系统112会执行页表查找,并接着重新执行此一般预取微指令,而不是压制它。一般预取微指令的流程结束于步骤406。0049如果此预取微指令为保证预取微指令,在判断步骤408中,存储器子系统112判断步骤40。

40、2所遭遇到的情况是否为,保证预取微指令所指定的地址落在具有不可快取特性的存储器区域内。如果是的话,流程前进至步骤412;反之,流程前进至判断步骤414。0050在步骤412中,存储器子系统112放弃预取该快取列,并对此保证预取微指令所对应的ROB116项目设定例外旗标,使得此保证预取微指令接续引发例外处理程序。如此一说明书CN101984403ACN101984406A7/8页11来会使得快速数据串搬移微码142藉助于程序码的非预取版本来实现重复数据串搬移巨指令132。在此应注意,在步骤412与416中通过对ROB116的项目设定例外旗标所引发的例外处理程序并非架构性例外处理程序ARCHITE。

41、CTURALEXCEPTION,而是微处理器100的内部微例外处理程序MICROEXCEPTION。也就是说,在内部微例外处理程序的情况下,快速数据串搬移微码142不会将控制权转移至系统软件。例外处理程序的流程结束于步骤412。0051在步骤414中,存储器子系统112判断在步骤402中所遭遇到的情况是否为保证预取微指令所指定的地址未命中TLB114。如果是的话,流程前进至步骤416;反之,流程前进至步骤418。0052若保证预取微指令所指定的地址未命中TLB114,在步骤416中,存储器子系统112放弃预取该快取列,并对此保证预取微指令所对应的ROB116项目设定例外旗标,使得此保证预取微指。

42、令接续引发例外处理程序。此例外处理程序导致微处理器100管线中较晚于此保证预取微指令的任何微指令136被清除,包括图3的保证预取加载储存微指令组。接着,快速数据串搬移微码142执行一微指令以引发页表查找的执行,藉此获得存储器页面的虚拟至物理地址转换,此存储器页面包含保证预取微指令所指定的快取列地址。此外,图3的快速数据串搬移微码142会回复执行RESUME,重新加载微指令并利用保证预取微指令来执行快速数据串搬移。在本发明另一实施例中,当发生未命中TLB时,存储器子系统112会执行页表查找,并接着以类似步骤418所叙述的方式来重新执行保证预取微指令,而不是致使存储器子系统112产生例外处理程序。。

43、未命中TLB的流程结束于步骤416。0053如果保证预取微指令所指定的地址命中TLB114,在步骤418中,存储器子系统112对保证预取微指令所对应的ROB116项目设定重新执行旗标,使得保证预取微指令可接续被重新执行。在许多情况中,当保证预取微指令被重新执行时,状况可被排除即填充队列122的项目为可用的、地址冲突不再存在、或是序列指令被引退,使得存储器子系统112可立即重新执行保证预取微指令,当对应的加载微指令到达存储器子系统112时,快取列的数据已实时放入数据高速缓存124。命中TLB的流程结束于步骤418。0054在一实施例中,可考虑将一保证预取指令加入至微处理器100的指令组架构内,以。

44、供使用者程序使用,如同快速数据串搬移微码142所使用的保证预取微指令。0055将保证预取微指令加入微指令组的优点在于,由于当加载微指令执行时,所搬移的数据较可能命中于数据高速缓存124,因此微码单元118可较快速地执行REPMOVE指令。0056本发明的不同实施例已于本文叙述,但本领域技术人员应能了解这些实施例仅作为范例,而非限定于此。本领域技术人员可在不脱离本发明的精神的情况下,对形式与细节上做不同的变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建FABRICATION、塑造MODELING、模拟、描述DESCRIPTION、以及/或测试。可透过一般程序语言C、C、硬件描述语言。

45、HARDWAREDESCRIPTIONLANGUAGES,HDL包括VERILOGHDL、VHDL等等、或其它可利用的程序语言来完成。此软件可配置在任何已知的计算机可使用媒介,例如半导体、磁盘、或光盘例如CDROM、DVDROM等等。本发明所述的装置与方法实施例可被包括于半导体智能财产核心,例如微处理器核心以HDL来实现,并转换成集成电路产品的硬件。此外,本发明所述的装置与方法可实现为硬件与软件的结合。因此,本发明不应局限于所揭露的实施例,而是依所附的权利要求范围与等同实施所界定。特说明书CN101984403ACN101984406A8/8页12别是,本发明可实施在使用于一般用途计算机中的微处理器装置内。最后,本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。说明书CN101984403ACN101984406A1/4页13图1说明书附图CN101984403ACN101984406A2/4页14图2说明书附图CN101984403ACN101984406A3/4页15图3说明书附图CN101984403ACN101984406A4/4页16图4说明书附图CN101984403A。

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

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


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