《运行时间检测报告.pdf》由会员分享,可在线阅读,更多相关《运行时间检测报告.pdf(52页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201380014669.X (22)申请日 2013.02.28 13/422,552 2012.03.16 US G06F 11/34(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约阿芒克 (72)发明人 M.S. 法雷尔 小查尔斯 .W. 盖尼 M.M. 米特兰 岑中龙 B.L. 史密斯 (74)专利代理机构 北京市柳沈律师事务所 11105 代理人 邸万奎 (54) 发明名称 运行时间检测报告 (57) 摘要 本发明的实施例涉及运行时间检测报告。由 处理器执行指令流。由该处理器捕获该执行中的 指令流的运行时间检。
2、测信息。基于该捕获的运行 时间检测信息来创建运行时间检测记录。检测在 该处理器上的该执行中指令流的运行时间检测样 本点。将报告群组存储在运行时间检测程序缓冲 器中。该存储是基于该检测, 并且该存储包括 : 确 定该运行时间检测程序缓冲器的当前地址, 该确 定基于指令可存取的运行时间检测控制 ; 并且基 于该运行时间检测程序缓冲器的原始地址和该当 前地址而将该报告群组存储至该运行时间检测程 序缓冲器中, 该报告群组包括该创建的运行时间 检测记录。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.09.16 (86)PCT国际申请的申请数据 PCT/JP2013/001224 。
3、2013.02.28 (87)PCT国际申请的公布数据 WO2013/136700 EN 2013.09.19 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书27页 附图22页 (10)申请公布号 CN 104380264 A (43)申请公布日 2015.02.25 CN 104380264 A 1/2 页 2 1. 一种用于运行时间检测报告的计算机程序产品, 该计算机程序产品包含 : 有形存储介质, 其可由处理电路读取, 并且存储供该处理电路执行以用于执行包含以 下操作的方法的指令 : 由处理器执行指令流 ; 由该处理器捕获该执行。
4、中的指令流的运行时间检测信息 ; 基于该捕获的运行时间检测信息, 创建运行时间检测记录 ; 检测在该处理器上的该执行中指令流的运行时间检测样本点 ; 以及 将报告群组存储在运行时间检测程序缓冲器中, 该存储基于检测运行时间检测样本 点, 该存储包含 : 确定该运行时间检测程序缓冲器的当前地址, 该确定基于指令可存取的运行时间检测 控制 ; 以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中, 该报告群组包含该创建的运行时间检测记录。 2. 如权利要求 1 的计算机程序产品, 其中该报告群组包括由该运行时间检测控制指定 的预定数目个运行时间检。
5、测记录。 3. 如权利要求 1 的计算机程序产品, 其中该方法进一步包含在监督状态中执行程序以 在该运行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检 测程序缓冲器的该当前地址中的任一个。 4.如权利要求3的计算机程序产品, 其中该程序包括载入运行时间检测控制(LRIC)指 令及修改运行时间检测控制 (MRIC) 指令中的一个。 5. 如权利要求 1 的计算机程序产品, 其中该方法进一步包含在问题状态中执行程序以 在该运行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址, 其中该程序包括 修改运行时间检测控制 (MRIC) 指令。 6. 如权利要求 1 的计算机程序。
6、产品, 其中该运行时间检测控制指定该运行时间检测程 序缓冲器中的每一报告群组中的记录的数目。 7. 如权利要求 1 的计算机程序产品, 其中该运行时间检测程序缓冲器位于可由应用程 序存取的地址空间中。 8. 一种用于运行时间检测报告的计算机实施方法, 该方法包含 : 由处理器执行指令流 ; 由该处理器捕获该执行中的指令流的运行时间检测信息 ; 基于该捕获的运行时间检测信息, 创建运行时间检测记录 ; 检测在该处理器上的该执行中指令流的运行时间检测样本点 ; 以及 将报告群组存储在运行时间检测程序缓冲器中, 该存储基于检测运行时间检测样本 点, 该存储包含 : 确定该运行时间检测程序缓冲器的当前。
7、地址, 该确定基于指令可存取的运行时间检测 控制 ; 以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中, 该报告群组包含该创建的运行时间检测记录。 9. 如权利要求 8 的方法, 其中该报告群组包括由该运行时间检测控制指定的预定数目 权 利 要 求 书 CN 104380264 A 2 2/2 页 3 个运行时间检测记录。 10. 如权利要求 8 的方法, 其进一步包含在监督状态中执行程序以在该运行时间检测 控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检测程序缓冲器的该 当前地址中的任一个。 11.如权利要求10的方法, 其。
8、中该程序包括载入运行时间检测控制(LRIC)指令及修改 运行时间检测控制 (MRIC) 指令中的一个。 12. 如权利要求 8 的方法, 其进一步包含在问题状态中执行程序以在该运行时间检测 控制中设置该运行时间检测程序缓冲器的该原始地址, 其中该程序包括修改运行时间检测 控制 (MRIC) 指令。 13. 如权利要求 8 的方法, 其中该运行时间检测控制指定该运行时间检测程序缓冲器 中的每一报告群组中的记录的数目。 14. 如权利要求 8 的方法, 其中该运行时间检测程序缓冲器位于可由应用程序存取的 地址空间中。 15. 一种用于运行时间检测报告的系统, 该系统包含 : 处理器, 该系统配置以。
9、执行包含以下操作的方法 : 由处理器执行指令流 ; 由该处理器捕获该执行中的指令流的运行时间检测信息 ; 基于该捕获的运行时间检测信息, 创建运行时间检测记录 ; 检测在该处理器上的该执行中指令流的运行时间检测样本点 ; 以及 将报告群组存储在运行时间检测程序缓冲器中, 该存储基于检测运行时间检测样本 点, 该存储包含 : 确定该运行时间检测程序缓冲器的当前地址, 该确定基于指令可存取的运行时间检测 控制 ; 以及 基于该运行时间检测程序缓冲器的原始地址和该当前地址而将该报告群组存储至该 运行时间检测程序缓冲器中, 该报告群组包含该创建的运行时间检测记录。 16. 如权利要求 15 的系统, 。
10、其中该报告群组包括由该运行时间检测控制指定的预定数 目个运行时间检测记录。 17. 如权利要求 15 的系统, 其中该方法进一步包含 : 在监督状态中执行程序以在该运 行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址或该运行时间检测程序 缓冲器的该当前地址中的任一个。 18.如权利要求17的系统, 其中该程序包括载入运行时间检测控制(LRIC)指令及修改 运行时间检测控制 (MRIC) 指令中的一个。 19. 如权利要求 15 的系统, 其中该方法进一步包含 : 在问题状态中执行程序以在该运 行时间检测控制中设置该运行时间检测程序缓冲器的该原始地址, 其中该程序包括修改运 行时间检测控。
11、制 (MRIC) 指令。 20. 如权利要求 15 的系统, 其中该运行时间检测控制指定该运行时间检测程序缓冲器 中的每一报告群组中的记录的数目。 权 利 要 求 书 CN 104380264 A 3 1/27 页 4 运行时间检测报告 技术领域 0001 本发明大体而言涉及计算环境内的处理, 更具体地, 涉及运行时间检测 (run-time instrumentation) 报告。 背景技术 0002 计算机处理器使用日益复杂的分支预测及指令高速缓存逻辑来执行事务 (transaction)。这些程序已被引入以增加指令吞吐量, 且因此增加处理性能。用于改进性 能的逻辑的引入使得难以肯定地预测。
12、特定软件应用程序将如何在计算机处理器上执行。 在 软件开发过程期间, 常常存在功能性与性能之间的平衡。软件在基于执行软件的底层硬件 的一个或多个抽象层级处执行。 当将硬件虚拟化时, 额外抽象层被引入。 随着性能增强逻辑 及各种抽象层 (layer) 的引入, 将难以透彻地理解当程序正在执行时在硬件层级 (level) 实际发生的事。在不具此信息的情况下, 软件开发者将更抽象的方法 ( 诸如, 执行持续时 间、 存储器使用率、 线程的数目等 ) 用于最佳化软件应用程序。 发明内容 0003 技术问题 0004 当硬件特定信息可用时, 该信息通常是在事后被提供给开发者, 且该信息是以聚 集地、 在。
13、高层级、 和 / 或穿插着其他程序及操作系统的活动的方式提供, 从而难以识别可能 影响软件应用程序的效率及准确度的问题。 0005 对于问题的解决方案 0006 实施例包括用于运行时间检测报告的计算机程序产品、 方法及系统。由处理器执 行指令流。由该处理器捕获该执行中的指令流的运行时间检测信息。基于该捕获的运行时 间检测信息来创建运行时间检测记录。 检测在该处理器上的该执行中指令流的运行时间检 测样本点。将报告群组存储在运行时间检测程序缓冲器中。该存储是基于该检测且该存储 包括 : 确定该运行时间检测程序缓冲器的当前地址, 该确定基于指令可存取的运行时间检 测控制 ; 并且基于该运行时间检测程。
14、序缓冲器的原始地址和该当前地址而将该报告群组存 储至该运行时间检测程序缓冲器中, 该报告群组包括该创建的运行时间检测记录。 0007 额外特征及优点是经由本发明的技术来实现。 本发明的其他实施例及方面将在本 文中予以详细描述且被视为所主张发明的一部分。为了更好地理解本发明的优点及特征, 参看描述及附图。 附图说明 0008 在说明书结尾处的权利要求中特定指出且清楚地主张了被视为本发明的主题。 将 根据结合随附图进行的以下详细描述显而易见本发明的前述及其他特征及优点, 其中 : 0009 图 1A 为描绘实施例中的示例主机计算机系统的图 ; 0010 图 1B 为描绘实施例中的示例模拟主机计算机。
15、系统的图 ; 说 明 书 CN 104380264 A 4 2/27 页 5 0011 图 1C 为描绘实施例中的示例计算机系统的图 ; 0012 图 2 为描绘实施例中的示例计算机网络的图 ; 0013 图 3 为描绘实施例中的计算机系统的元件的图 ; 0014 图 4A 描绘实施例中的计算机系统的详细元件 ; 0015 图 4B 描绘实施例中的计算机系统的详细元件 ; 0016 图 4C 描绘实施例中的计算机系统的详细元件 ; 0017 图 5 描绘根据实施例的用于处理器的运行时间检测的系统的示意图 ; 0018 图 6 描绘实施例中的包括可由特权状态设置的控制的运行时间检测控制块 (RI。
16、CCB) 的一部分。 0019 图 7 描绘实施例中的当半特权位 (K) 经设置为 1 时的 RICCB 控制块的一部分 ; 0020 图 8 描绘根据实施例的收集缓冲器 ; 0021 图 9 描绘根据实施例的报告群组 ; 0022 图 10 描绘报告群组中的开始记录的实施例 ; 0023 图 11 描绘报告群组中的时间戳记录的实施例 ; 0024 图 12 描绘报告群组中的发出记录的实施例 ; 0025 图 13 描绘报告群组中的中止记录的实施例 ; 0026 图 14 描绘报告群组中的调用记录的实施例 ; 0027 图 15 描绘报告群组中的填充记录的实施例 ; 0028 图 16 描绘报。
17、告群组中的指令记录的实施例 ; 0029 图 17 描绘根据实施例的用于运行时间检测报告的处理 ; 以及 0030 图 18 说明根据实施例的计算机程序产品。 具体实施方式 0031 本发明的实施例为用于受管理运行时间的基于硬件的运行时间检测设施。 如本文 中所使用, 术语 “受管理运行时间” 指代封装状态且管理用以执行程序或应用程序 ( 例如, 虚拟机或 “JVM” 、 操作系统、 中间件等 ) 的资源的环境。该运行时间检测设施的实施 例使程序能够收集关于程序执行的信息, 包括中央处理单元 (CPU) 数据。所收集信息允许 该程序获取关于程序的洞察 (insights), 该信息是收集自该程。
18、序。该运行时间检测设施的 实施例包括用于将事件(例如, 采纳分支、 寄存器值等)的序列收集于收集缓冲器中的硬件 设施。该收集缓冲器 ( 或含有最近记录的收集缓冲器的子集 ) 的内容是在发生可程序化集 合的样本触发事件时在应用程序的地址空间 ( 例如, JVM 的地址空间 ) 中复制至程序缓冲 器中, 这些事件诸如 ( 但不限于 ) : 以指令的形式的软件指示词 (software directive) 被 插入至指令流中 ; 所执行指令的间隔完成, 从上一样本过期时起的给定经过时间, 和 / 或诸 如观察到数据或指令高速缓存未命中的给定硬件事件 0032 存储在每一样本点处的数据被存储为相关记。
19、录的集合 ( 在本文中也被称为报告 群组)。 报告群组经存储至程序缓冲器中, 程序缓冲器的位置是根据与运行时间检测相关联 的控制而确定。因此, 作为报告群组存储在程序缓冲器中的检测数据可供程序用于后分析 ( 或甚至用于在运行时间检测期间的积极分析 )。 0033 动态编译器可利用运行时间信息 ( 诸如, 由本文中所描述的基于硬件的运行 说 明 书 CN 104380264 A 5 3/27 页 6 时间检测设施收集的运行时间信息 ) 来执行在线反馈导向的最佳化 (online feedback directed optimization)。 举例而言, 关于重要执行路径、 设置档值及优选分支方。
20、向的信息 可由动态编译器使用以执行特殊化版本码、 引导内嵌 (in-lining)、 对执行路径重新排序及 将分支拉直的最佳化。本文中所描述的实施例不限于由编译器使用, 且可以诸如 ( 但不限 于 ) 用于引导其他受管理运行时间设施的多种方式使用。举例而言, 数据高速缓存事件可 用以帮助废弃项目收集器程序作出关于协同定位多个物件或使多个物件彼此远离的决策 以获得优选数据局部性或避免假性共用问题。 0034 图 1A 描绘实施例中的主机计算机系统 50 的代表性组件。组件的其他配置也可在 计算机系统中使用。代表性主机计算机系统 50 包含与主存储器 ( 计算机存储器 )2 通信的 一个或多个处理。
21、器1以及至存储器件11及网络10的用于与其他计算机或SAN等通信的I/ O 接口。处理器 1 符合具有架构化指令集及架构化功能性的架构。处理器 1 可具有用于将 程序地址 ( 虚拟地址 ) 变换为存储器中的真实地址的动态地址转译 (DAT)3。DAT 3 通常包 括用于高速缓存转译的转译后备缓冲器 (TLB)7, 使得对计算机存储器 2 的块的稍后存取不 需要延迟地址转译。 通常, 高速缓冲存储器9是用于计算机存储器2与处理器1之间。 高速 缓冲存储器 9 可为阶层式的, 其具有可供一个以上 CPU 使用的大的高速缓冲存储器及介于 大的高速缓冲存储器与每一 CPU 之间的较小、 较快速 ( 较。
22、低层级 ) 的高速缓冲存储器。在 一些实施例中, 较低层级高速缓冲存储器经划分以为指令提取及数据存取提供单独的低层 级高速缓冲存储器。在实施例中, 由指令提取单元 4 经由高速缓冲存储器 9 从计算机存储 器 2 提取指令。该指令在指令解码单元 6 中被解码且 ( 在一些实施例中与其他指令一起 ) 被分派至指令执行单元 8。通常, 使用若干指令执行单元 8, 例如算术执行单元、 浮点执行单 元及分支指令执行单元。该指令是由指令执行单元 8 执行, 从而按需要从指令指定的寄存 器或计算机存储器 2 存取操作数。如果将从计算机存储器 2 存取 ( 载入或存储 ) 操作数, 则载入存储单元 5 通常。
23、在被执行的指令的控制下处置该存取。指令可在硬件电路中或以内 部微代码 ( 固件 ) 形式执行或通过两者的组合执行。 0035 在图 1B 中, 提供模拟主机计算机系统 21, 其模拟具有主机架构的主机计算机系 统, 诸如图 1 的主机计算机系统 50。在模拟主机计算机系统 21 中, 主机处理器 (CPU)1 为模 拟主机处理器(或虚拟主机处理器)29, 且包含原生处理器27, 该原生处理器具有不同于主 机计算机系统 50 的处理器 1 的原生指令集架构的原生指令集架构。模拟主机计算机系统 21 具有原生处理器 27 可存取的存储器 22。在实施例中, 存储器 22 经分割成计算机存储器 2部。
24、分及模拟例程存储器23部分。 计算机存储器2根据主机计算机架构而可供模拟主机计 算机系统 21 的程序使用。原生处理器 27 执行不同于模拟处理器 29 的架构的架构的架构 指令集的原生指令 ( 原生指令获得自模拟例程存储器 23), 且可通过使用在可解码所存取 的该主机指令的序列及存取/解码例程中获得的一个或多个指令而从计算机存储器2中的 程序存取用于执行的主机指令, 以确定用于模拟所存取的该主机指令的功能的原生指令执 行例程。针对主机计算机系统 50 架构定义的其他设施可由架构化设施例程模拟, 其他设施 包括诸如 ( 例如 ) 通用寄存器、 控制寄存器、 动态地址转译及输入 / 输出 (I。
25、/O) 子系统支持 及处理器高速缓冲存储器的设施。模拟例程也可利用原生处理器 27 中可用的功能 ( 诸如 通用寄存器及虚拟地址的动态转译 ) 来改进模拟例程的性能。也可提供特殊硬件及卸载引 擎以帮助原生处理器 27 模拟主机计算机系统 50 的功能。 说 明 书 CN 104380264 A 6 4/27 页 7 0036 在大型计算机中, 程序设计师 ( 通常, 现今的 “C” 程序设计师 ) 常常通过编译器应 用程序来使用架构化机器指令。 存储在存储介质中的这些指令可原生地在z/Architecture IBM 服务器中执行, 或替代地在执行其他架构的机器中执行。可在现有及未来的 IBM。
26、 大型 计算机服务器中及在 IBM 的其他机器 ( 例如,服务器及服务器 ) 上模 拟指令。可于在广泛多种机器 ( 使用由AMDTM、 Sun Microsystems 及其他 公司制造的硬件 ) 上执行 Linux 的机器中执行指令。除了在下在该硬件 上执行之外, 也可使用 Linux 以及由 Hercules、 UMX、 Fundamental Software,Inc.(FSI) 或 Platform Solutions,Inc.(PSI) 提供的使用模拟的机器, 其中执行通常在模拟模式下。在 模拟模式下, 模拟软件是由原生处理器执行以模拟模拟处理器的架构。 0037 模拟主机计算机系统。
27、 21 的组件中的一个或多个将在 “z/Architecture Principles of Operation” ( 公告第 SA22-7832-08 号, 第 9 版, 2010 年 8 月 ) 中予以进一 步描述, 该公告特此以全文引用方式并入本文中。IBM 为国际商业机器公司 (Armonk,New York,USA) 额注册商标。本文中所使用的其他名称可为国际商业机器公司或其他公司的注 册商标、 商标或产品名称。 0038 原生处理器27通常执行存储在包含固件或原生操作系统的模拟例程存储器23中 的模拟软件以执行对模拟处理器的模拟。 该模拟软件负责提取并执行模拟处理器架构的指 令。该。
28、模拟软件维持模拟程序计数器以追踪指令边界。该模拟软件一次可提取一个或多个 模拟机器指令且将该一个或多个模拟机器指令转换成供原生处理器 27 执行的原生机器指 令的相应群组。这些经转换指令可被高速缓存, 以使得可实现较快速转换。该模拟软件维 持模拟处理器架构的架构规则以便保证针对模拟处理器撰写的操作系统及应用程序正确 地操作。此外, 该模拟软件提供由模拟处理器架构识别的资源, 包括 ( 但不限于 ) 控制寄存 器、 通用寄存器、 浮点寄存器、 包括 ( 例如 ) 段表及页表的动态地址转译功能、 中断机制、 上 下文切换机制、 当日时间(TOD)时钟及至I/O子系统的架构化接口, 以使得经设计以在。
29、模拟 处理器 29 上执行的操作系统或应用程序可在具有该模拟软件的原生处理器 27 上执行。 0039 被模拟的特定指令经解码, 且子例程被调用以执行个别指令的功能。模拟模拟处 理器 29 的功能的模拟软件功能被以 ( 例如 )“C” 子例程或驱动程序来实施, 或以在理解优 选实施例的描述的后将在本领域普通技术人员的能力范围内的提供特定硬件的驱动程序 的某一其他方法来实施。 0040 在实施例中, 本发明可由软件 ( 有时被称为经授权内部码、 固件、 微代码、 毫码 (milli-code)、 微微代码(pico-code)等, 其中的任一个都符合本发明)实践。 参看图1A, 体 现本发明的软。
30、件程序代码是由也被称为主机计算机系统 50 的 CPU( 中央处理单元 )1 的处 理器从存储器件11(诸如长期存储介质、 CD-ROM驱动器、 带驱动器或硬驱动器)存取。 软件 程序代码可体现于供数据处理系统使用的多种已知介质 ( 诸如磁盘、 硬驱动器或 CD-ROM) 中的任一个上。程序代码可分布在这些介质上, 或可从一个计算机系统的计算机存储器 2 或存储器经由网络 10 至其他计算机系统地分发给用户以供这些其他系统的用户使用。 0041 替代地, 程序代码可体现于计算机存储器 2 中, 且由处理器 1 使用处理器总线 ( 未 图示 ) 存取。此程序代码包括操作系统, 该操作系统控制各种。
31、计算机组件和一个或多个应 用程序的功能及交互。程序代码通常是从诸如存储器件 11 的致密介质分页至计算机存储 说 明 书 CN 104380264 A 7 5/27 页 8 器 2, 程序代码可在计算机存储器中供处理器 1 处理。用于将软件程序代码体现于存储器 中、 实体介质上和 / 或经由网络分发软件码的技术及方法是公知的且本文中将不予以进一 步论述。程序代码在被产生且存储在有形介质 ( 包括 ( 但不限于 ) 电子存储器模块 (RAM)、 闪速存储器、 致密盘 (CD)、 DVD、 磁带等 ) 上时常常被称为 “计算机程序产品” 。计算机程序 产品介质通常可由优选在计算机系统中的处理电路读。
32、取以供处理电路执行。 0042 图 1C 说明本发明可于其中实践的代表性工作站或服务器硬件系统。图 1C 的系统 100 包含诸如个人计算机、 工作站或服务器的代表性基本计算机系统 101, 其包括可选的外 围设备。基本计算机系统 101 包括一个或多个处理器 106 及总线 ( 未图示 ), 该总线用以连 接一个或多个处理器106与基本计算机系统101的其他组件及根据现有技术实现一个或多 个处理器 106 与基本计算机系统 101 之间的通信。该总线将处理器 106 连接至存储器 105 及长期存储器 107, 长期存储器可包括 ( 例如 ) 硬驱动器 ( 包括 ( 例如 ) 磁性介质、 C。
33、D、 DVD 及闪速存储器中的任一个)或带驱动器。 基本计算机系统101也可包括用户接口适配器, 其 经由该总线将一个或多个处理器106连接至一个或多个接口设备, 诸如键盘104、 鼠标103、 打印机 / 扫描仪 110 和 / 或其他接口设备, 其他接口设备可为任何用户接口设备 ( 诸如触 敏屏幕、 数字化输入板等)。 该总线也经由显示适配器将一个或多个处理器连接至显示器件 102, 诸如 LCD 屏幕或监视器。 0043 基本计算机系统 101 可通过能够与网络 109 通信 108 的网络适配器而与其他计算 机或计算机网络通信。示例网络适配器为通信频道、 令牌环 (token ring。
34、)、 乙太网络或调 制解调器。替代地, 基本计算机系统 101 可使用无线接口 ( 诸如蜂窝数字分组数据 (CDPD) 卡 ) 进行通信。基本计算机系统 101 可与局域网 (LAN) 或广域网 (WAN) 中的这些其他计算 机相关联, 或基本计算机系统 101 可为具有另一计算机的客户端 / 服务器配置中的客户端 等。 0044 图 2 说明本发明可于其中实践的数据处理网络 200。数据处理网络 200 可包括诸 如无线网络及有线网络的多个个别网络, 该多个个别网络中的每一个可包括多个个别工作 站 201、 202、 203、 204 和 / 或图 1C 的基本计算机系统 101。另外, 如。
35、本领域普通技术人员将 了解, 可包括一个或多个 LAN, 其中 LAN 可包含耦接至主机处理器的多个智能工作站。 0045 程序设计码111可体现于存储器105中, 且由处理器106使用处理器总线存取。 此 程序设计码包括操作系统, 其控制各种计算机组件和一个或多个应用程序 112 的功能及交 互。 程序代码通常是从长期存储器107分页至高速存储器105, 程序代码可在高速存储器中 供处理器 106 进行处理。用于将软件程序设计码体现于存储器中、 实体介质上和 / 或经由 网络分发软件码的技术及方法是公知的且本文中将不予以进一步论述。 程序代码在被产生 且存储在有形介质 ( 包括 ( 但不限于。
36、 ) 电子存储器模块 (RAM)、 闪速存储器、 致密盘 (CD)、 DVD、 磁带等 ) 上时常常被称为 “计算机程序产品” 。计算机程序产品介质通常可由优选在计 算机系统中的处理电路读取以供处理电路执行。 0046 处理器最容易利用的高速缓冲存储器 ( 通常比处理器的其他高速缓冲存储器快 速且小 ) 为最低 (L1 或层级一 ) 高速缓冲存储器, 且主存储器 ( 主存储器 ) 为最高层级高 速缓冲存储器 (L3, 如果存在 3 个层级 )。最低层级高速缓冲存储器常常被划分为保存待执 行的机器指令的指令高速缓冲存储器 (I 高速缓冲存储器 ) 及保存数据操作数的数据高速 缓冲存储器 (D 高。
37、速缓冲存储器 )。 说 明 书 CN 104380264 A 8 6/27 页 9 0047 仍参看图 2, 网络也可包括大型计算机或服务器, 诸如可存取数据存储库也可从 工作站 205 直接存取的网关计算机 ( 客户端服务器 )206 或应用程序服务器 ( 远程服务 器 )208。网关计算机 206 充当至每一网络 207 的进入点。网关在将一个网络连接协议连接 至另一者时是必需的。网关计算机 206 可优选地借助于通信链路耦接至另一网络 ( 例如, 因特网 207)。网关计算机 206 也可使用通信链路直接耦接至一个或多个工作站 101、 201、 202、 203及204。 网关计算机可。
38、利用可从国际商业机器公司购得的IBM eServerTM 服务器来实施。 0048 在实施例中, 体现本发明的软件程序设计码是由基本计算机系统 101 的处理器 106 从长期存储介质 ( 诸如图 1C 的长期存储器 107) 存取。软件程序设计码可体现于供数 据处理系统使用的多种已知介质 ( 诸如磁盘、 硬驱动器或 CD-ROM) 中的任一个上。该码可 分布在这些介质上, 或可从一个计算机系统的存储器或存储器经由网络至其他计算机系统 地分发给用户 210 及 211 以供这些其他系统的用户使用。 0049 参看图3, 描绘处理器106的示例性处理器实施例。 将一个或多个层级的高速缓冲 存储器。
39、 303 用以缓冲存储器块以便改进处理器 106 的性能。高速缓冲存储器 303 为保存可 能被使用的存储器数据的高速缓存行的高速缓冲器。典型高速缓存行为 64、 128 或 256 个 字节的存储器数据。在实施例中, 将单独的高速缓存用于高速缓存指令而非用于高速缓存 数据。常常由本领域公知的各种 “窥探” 演算法来提供高速缓存一致性 ( 存储器及高速缓 冲存储器中的行的复本的同步 )。诸如处理器系统的存储器 105 的主存储器常常被称为高 速缓冲存储器。在具有 4 个层级的高速缓冲存储器 303 的处理器系统中, 存储器 105 有时 被称为层级 5(L5) 高速缓冲存储器, 因为存储器 1。
40、05 通常较快且仅保存可供计算机系统使 用的非易失性存储器 (DASD、 磁带等 ) 的一部分。存储器 105“高速缓存” 由操作系统分页 到存储器 105 内及外的数据页。 0050 程序计数器 ( 指令计数器 )311 追踪待执行的当前指令的地址。z/Architecture 处理器中的程序计数器是 64 位的且可截断至 31 或 24 位以支持先前寻址极限。程序计数 器通常体现于计算机的程序状态字 (PSW) 中, 以使得程序计数器在上下文切换期间保持不 变。因此, 进行中的程序 ( 具有程序计数器值 ) 可被 ( 例如 ) 操作系统中断 ( 即, 当前上下 文从程序环境切换至操作系统环。
41、境)。 程序的PSW在程序不在作用中时维持程序计数器值, 且在操作系统在执行中时使用操作系统的程序计数器(在PSW中)。 在实施例中, 程序计数 器被递增等于当前指令的字节数目的量。精简指令集计算 (RISC) 指令通常具有固定长度, 而复杂指令集计算 (CISC) 指令通常具有可变长度。IBM z/Architecture 的指令为具有 2、 4 或 6 个字节的长度的 CISC 指令。程序计数器 311 由 ( 例如 ) 上下文切换操作或分支指令 的分支采纳操作来修改。在上下文切换操作中, 当前程序计数器值是与关于执行中的程序 的其他状态信息 ( 诸如条件码 ) 一起存储在 PSW 中, 。
42、且载入指向待执行的新程序模块的指 令的新程序代码计数器值。 执行分支采纳操作以便通过将分支指令的结果载入至程序计数 器 311 中而准许程序做出决策或在程序内循环。 0051 在实施例中, 指令提取单元 305 是用以代表处理器 106 提取指令。指令提取单元 305提取 “下一顺序指令” 、 分支采纳指令的目标指令或在上下文切换后程序的第一指令。 在 实施例中, 指令提取单元 305 使用预提取技术而基于经预提取的指令可能被使用的可能性 来推测性地预提取指令。举例而言, 指令提取单元 305 可提取包括下一顺序指令的 16 个字 说 明 书 CN 104380264 A 9 7/27 页 1。
43、0 节的指令及额外字节的其他顺序指令。 0052 所提取指令接着由处理器 106 执行。在实施例中, 该所提取指令被传递至指令提 取单元 305 的解码 / 分派单元 306。解码 / 分派单元 306 解码该指令且将关于该经解码指 令的信息转递至适当执行单元 307、 308 和 / 或 310。执行单元 307 从指令提取单元 305 接 收关于经解码算术指令的信息且将根据指令的操作码 ( 运算码 ) 对操作数执行算术运算。 操作数是从存储器 105、 架构化寄存器 309 或从执行中的指令的立即字段提供至执行单元 307。 当存储时, 执行的结果是存储在存储器105、 架构化寄存器309。
44、或存储在其他机器硬件 ( 诸如控制寄存器、 PSW 寄存器等 ) 中。 0053 处理器106通常具有用于执行指令的功能的一个或多个执行单元307、 308及310。 参看图4A, 执行单元307可通过接口逻辑407而与架构化寄存器309、 解码/分派单元306、 载入 / 存储单元 310 及其他处理器单元 401 通信。执行单元 307 可使用若干寄存器电路 403、 404 及 405 来保存信息, 算术逻辑单元 (ALU)402 将对该信息进行操作。ALU 402 执行 诸如加减乘除的算术运算, 以及诸如及 (and)、 或 (or)、 以及互斥或 (xor)、 旋转及移位的逻 辑功能。
45、。在实施例中, ALU 支持与设计依赖的特殊化运算。其他电路可提供包括 ( 例如 ) 条 件码及复原支持逻辑的其他架构化设施 408。通常, ALU 运算的结果被保存在输出寄存器电 路 406 中, 该输出寄存器电路可将该结果转递至多种其他处理函数。在其他实施例中, 存在 处理器单元的许多配置, 本描述仅意欲提供对一个实施例的代表性理解。 0054 ADD 指令 ( 例如 ) 将在具有算术及逻辑功能性的执行单元 307 中执行, 而浮点指 令 ( 例如 ) 将在具有特殊化浮点能力的浮点执行单元 ( 未图示 ) 中执行。优选地, 执行单 元通过对由指令识别的操作数执行运算码定义的函数而对操作数进。
46、行运算。举例而言, 可 由执行单元307对在由指令的寄存器字段识别的两个架构化寄存器309中发现的操作数执 行 ADD 指令。 0055 执行单元 307 对两个操作数执行算术加法且将结果存储在第三操作数中, 其中该 第三操作数可为第三寄存器或该两个源寄存器中的一个。执行单元 307 优选利用算术逻辑 单元 (ALU)402, 其能够执行诸如移位、 旋转、 与、 或及 XOR 的多种逻辑函数, 以及包括加减乘 除中的任一个的多种代数函数。一些 ALU 402 是为了纯量运算而设计且一些 ALU 是为了浮 点运算而设计。在实施例中, 数据可视架构而为大端序 (big endian)( 其中最低有。
47、效字节 在最高字节地址处 ) 或小端序 (little endian)( 其中最低有效字节在最低字节地址处 )。 IBM z/Architecture 为大端序。带正负号字段可具正负号及量值, 其视架构而定为二进位 反码或二进位补码。二进位补码是有利的, 因为 ALU 不必设计减法能力, 因为呈二进位补码 的负值或正值在ALU内仅需要加法。 数字通常以速记(shorthand)描述, 其中例如, 12位的 字段定义 4,096 字节块的地址且通常被描述为 4 Kbyte( 千字节 ) 块。 0056 参看图 4B, 用于执行分支指令的分支指令信息通常被发送至分支单元 308, 其在 其他条件运。
48、算完成之前使用诸如分支历史表 432 的分支预测演算法来预测分支的结果。将 在条件运算完成之前提取并推测地执行当前分支指令的目标。当条件运算完成时, 将基于 条件运算的条件及推测出的结果而完成或舍弃推测地执行的分支指令。 典型分支指令可测 试条件码且在条件码满足该分支指令的分支要求的情况下分支至目标地址, 可 ( 例如 ) 基 于包括在寄存器字段或指令的立即字段中发现的数字的若干数字来计算目标地址。 在实施 例中, 分支单元308可使用具有多个输入寄存器电路427、 428及429及输出寄存器电路430 说 明 书 CN 104380264 A 10 8/27 页 11 的 ALU 426。分。
49、支单元 308 可与 ( 例如 ) 通用寄存器、 解码 / 分派单元 306 或其他电路 425 通信。 0057 可出于包括 ( 例如 ) 以下各者的多种原因而中断一组指令的执行 : 由操作系统起 始的上下文切换, 导致上下文切换的程序例外或错误, 导致上下文切换的 I/O 中断信号, 或 多个程序的多线程活动(在多线程环境中)。 在实施例中, 上下文切换动作存储关于当前在 执行中的程序的状态信息, 且接着载入关于正被调用的另一程序的状态信息。状态信息可 存储在 ( 例如 ) 硬件寄存器中或存储器中。状态信息包括指向待执行的下一指令的程序计 数器值、 条件码、 存储器转译信息及架构化寄存器内容。上下文切换活动可由硬件电路、 应 用程序、 操作系统程序或固件码 ( 微代码、 微微代码或经授权内部码 (LIC) 单独地或组合 地实行。 0058 处理器根据指令定义的方法来存取操作数。 指令可使用指令的一部分的值提供立 即操作数, 可提供明确地指向通用寄存器或专用寄存器 ( 例如浮点寄存器 ) 的一个或多个 寄存器字段。指令可利用由运算码字段。