用于监视并调整微体系结构的性能的方法、设备和系统的制作方法_4

文档序号:9417279阅读:来源:国知局
构。在此示例中,可以确定禁用功能部件将等待时 间增加不大的量。但是,基于功能部件的性能获益不大且禁用该功能部件将节省很大的功 率的确定,调整该功能部件,例如禁用该功能部件。
[0098] 作为经验示例,有关先前的体系结构注意到,在多个宏工作负载中,注意到大量的 混淆冲突。发生混淆冲突的这些示例的其中之一是在访问相同高速缓存行的多个线程之 间。
[0099] 软件线程是可用来独立于另一个线程来执行的程序的至少一部分。一些微处理器 甚至支持硬件中的多线程,其中处理器具有至少多组完整且独立的体系结构状态寄存器, 用于独立地调度多个软件线程的执行。但是,这些硬件线程共享例如高速缓存的一些资源。 先前,多个线程对高速缓存中的相同高速缓存行的访问导致高速缓存行的位移和局部性的 减少。因此,线程的数据存储器的起始地址被设为不同的值以便避免线程之间高速缓存中 的尚速缓存彳丁的位移。
[0100] 参考图3,图示处理器205中模块215的特定实施例。模块215用于至少基于微体 系结构功能部件对关键路径的贡献来调整用户级应用程序的微体系结构功能部件。
[0101] 这种类型的调整的非常特别的示例包括:在应用程序期间或例如垃圾收集的应用 程序阶段监视硬件预提取器的性能。在启用硬件预提取器的情况下运行垃圾收集,然后在 禁用硬件预提取器的情况下运行垃圾收集,发现在一些实例中,在没有硬件预提取器的情 况下,垃圾收集执行得更好。因此,可以在垃圾收集应用程序的执行时调整微体系结构并禁 用硬件预提取器。
[0102] 基于性能分析更改策略的其他示例包括:预提取的积极性、在同时线程化机器中 相对地将资源分配到不同线程、推测页步行、对TLB的推测更新、以及在用于分支和存储器 依赖的预测机制之间进行选择。
[0103] 图3图示微体系结构功能部件:存储器子系统220、高速缓存350、前端225、分支 预测355、提取360、执行单元235、高速缓存350、执行单元355、乱序引擎230和引退365。 微体系结构功能部件的其他示例包括:高速缓存、指令高速缓存、数据高速缓存、分支目标 阵列、虚拟存储器表、寄存器文件、转换表、后备缓冲器、分支预测单元、间接分支预测器、硬 件预提取器、执行单元、乱序引擎、分配器单元、寄存器重命名逻辑、总线接口单元、提取单 元、解码单元、体系结构状态寄存器、执行单元、浮点执行单元、整型执行单元、ALU、以及微 处理器的其他常见功能部件。
[0104] 如上所述,调整微体系结构功能部件可以包括启用或禁用微体系结构功能部件。 与上文硬件预提取器的示例一样,当特定软件程序期间禁用功能部件时,如果确定贡献将 得到增强,即更好,则禁用预提取器。
[0105] 确定微体系结构功能部件对用户级应用程序的关键路径的贡献的一种方式是在 启用该微体系结构功能部件的情况下执行用户级应用程序。然后在禁用该微体系结构功能 部件的情况下执行用户级应用程序。最后,基于启用功能部件情况下用户级应用程序的执 行与禁用功能部件情况下用户级应用程序的执行的比较来确定微体系结构功能部件对用 户级应用程序的关键路径的贡献。简单来说,通过在每次执行用户级应用程序时测量总执 行时间,确定哪个总执行时间较好;启用功能部件情况下的总执行时间还是禁用功能部件 情况下的总执行时间。
[0106] 作为特定示例,模块215包括去功能部件寄存器305。去功能部件寄存器305包括 多个字段,例如字段310-335。这些字段可以是各个位,或每个字段可以具有多个位。此外, 每个字段可用来调整微体系结构功能部件。换言之,该字段与微体系结构功能部件关联,即 字段310与分支预测355关联,字段315与提取360关联,字段320关联到高速缓存350,字 段325关联到引退逻辑365,字段330关联到执行单元355,以及字段335关联到高速缓存 350。当设置这些字段的其中一个字段(例如字段310)时,它禁用分支预测355。
[0107] 如上所论述,如果在被禁用时功能部件对关键路径的性能贡献得以增强,则另一 个模块(例如嵌入在模块215中或作为模块215的一部分、与模块215关联的软件程序) 可以设置字段(例如字段310)。如上文提到的,模块215可以是硬件、软件或它们的组合, 以及与模块210关联或部分地与模块210重叠。例如,作为模块210的功能的一部分,为了 确定用户级程序执行期间分支预测355的贡献,可以使用模块215中图示的寄存器305来 调整或禁用处理器205的功能部件(例如分支预测355)。
[0108] 在另一个实施例中,去功能部件(即调整)包括以物理方式或虚拟方式更改功能 部件的大小。在上面示例的备选方式中,如果显示分支预测355的贡献增强了用户级应用 程序的执行,则可以通过字段310相应地增加/减少分支预测355的大小。下面的示例说 明通过调整高速缓存的大小来调整处理器以发现功能部件或事件(例如高速缓存未命中) 的贡献的能力。
[0109] 调整软件
[0110] 参考图4,图示处理器监视性能和调整软件的实施例。处理器405(与图2和图3 所示的处理器205更相似)可以具有与处理器关联的任何公知逻辑。如图所示,处理器405 包括如下单元/功能部件:存储器子系统420、前端425、乱序引擎430以及执行单元435。 在这些功能块的每个功能块内,可能存在多种其他微体系结构功能部件,例如第二级高速 缓存421、提取/解码单元427、分支预测426、引退431、第一级高速缓存436和执行单元 437〇
[0111] 如上所述,模块410为软件程序的执行确定关键路径中的每个实例事件成本。从 上文导出的每个实例事件成本的示例包括持续时间计数、引退推出测量和长时间追踪执行 测量。再次要注意模块410和模块415可能具有模糊的边界,因为它们的功能、硬件、软件 或硬件与软件的组合可能重叠。
[0112] 与其中模块415通过与功能部件接口来调整微体系结构的图3对比,模块415基 于关键路径中的每个实例事件成本来调整软件程序。模块415可以包括用于编译和/或解 释要在处理器405上执行的代码的任何硬件、软件或组合。在一个实施例中,模块415基于 确定的每个实例事件成本来重新编译程序的后续运行时执行的代码,以便比最初编译的代 码更频繁或不频繁地利用前文提到的微体系结构功能部件。在另一个实施例中,模块415 对于程序的相同运行的余下部分以不同的方式编译代码,即使用动态编译或重新编译来改 进特定工作负载和平台上的执行时间。
[0113] 如上所述,除了能够调整微体系结构外,还可以通过调整应用程序以使之最佳地 在该平台上运行来达到更好的性能。调整软件包括优化代码。调整应用程序的一个示例是 软件程序的重新编译。调整软件还可以包括将软件/代码优化成块数据结构以吻合地置于 高速缓存内,重新布置代码以利用缺省分支预测条件而无需使用分支预测器表资源,在不 同指令地址发出代码以避免可能导致分支预测和代码高速缓存结构中的局部性管理问题 的某些混淆和冲突状况,重新布置动态分配的存储器或堆栈上的数据(包括堆栈对齐)以 避免跨高速缓存行引起的处罚,以及调节访问的粒度和对齐以避免存储转发问题。
[0114] 作为调整软件的特定示例,软件450利用处理器405/在处理器405上执行。模块 410确定每个实例事件成本,例如分支预测逻辑426中误预测分支的成本。基于此分析,模 块415将软件450重新布置成软件460,它是重新布置以不同方式在处理器405上执行的相 同的用户级应用程序。在此示例中,重新布置软件460以便更好地利用缺省分支预测条件。 因此,重新编译软件460以不同方式利用分支预测426。其他示例可以包括执行代码中用于 禁用分支预测逻辑426的指令和更改分支预测逻辑426使用的软件提示。
[0115] 用于件能监视的系统
[0116] 接下来参考图5,图示使用性能监视的系统。处理器505耦合到控制器集线器550, 而控制器集线器550耦合到存储器560。控制器集线器550可以是存储器控制器集线器或 芯片组装置的其他部分。在一些实例中,控制器集线器550具有集成的视频控制器,例如视 频控制器555。但是,视频控制器555还可以位于耦合到控制器集线器550的图形装置上。 注意每个图示的装置之间可能存在其他组件、互连、装置和电路。
[0117] 处理器505包括模块510。模块510用于确定软件程序执行期间的每个实例事件 贡献,基于每个实例事件贡献来调整微处理器505的体系结构配置,存储体系结构配置,并 在软件程序的后续执行时基于存储的体系结构配置再次调整体系结构配置。
[0118] 作为特定示例,模块510利用贡献模块511确定软件程序(例如操作系统)执行 期间的事件贡献。软件程序的其他示例包括访客应用程序、操作系统应用程序、基准测试、 微基准测试、驱动程序和嵌入式应用程序。对于此示例,假定事件贡献
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1