CN1952877A - 用于软件可配置预取器的方法、装置和系统 - Google Patents
用于软件可配置预取器的方法、装置和系统 Download PDFInfo
- Publication number
- CN1952877A CN1952877A CNA2006101641234A CN200610164123A CN1952877A CN 1952877 A CN1952877 A CN 1952877A CN A2006101641234 A CNA2006101641234 A CN A2006101641234A CN 200610164123 A CN200610164123 A CN 200610164123A CN 1952877 A CN1952877 A CN 1952877A
- Authority
- CN
- China
- Prior art keywords
- processor
- thread
- transaction type
- predetermined transaction
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 21
- 238000011068 loading method Methods 0.000 claims description 12
- 238000005242 forging Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 5
- 238000005070 sampling Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 description 14
- 238000003860 storage Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001105 regulatory effect Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
提议对预取器的动态配置进行讨论。例如,计算线程特定等待时间量度并且基于每个线程通过配置和状态寄存器向软件提供动态反馈。同样地,软件可选地使用来自寄存器的信息对预取行为进行动态配置并且允许软件能够查询性能并对预取器进行配置。
Description
技术领域
[0001]本发明的一个或多个实施例通常涉及指令/数据预取领域。具体来说,本发明的一个或多个实施例涉及用于软件可配置预取器的方法、系统以及装置。
背景技术
[0002]现代计算机系统在处理器与系统存储器之间存在严重瓶颈。其结果是,引起相当大的等待时间以完成处理器所发出的存储请求。用于降低或避免处理器与系统存储器之间的等待时间的一个技术是利用数据高速缓存。其结果是,计算机系统可将所请求的数据存储在诸如高速缓冲存储设备这样的易失性存储设备之内。因此,当处理器需要存储器时,处理器对数据高速缓存进行检查以确定数据是否是容易得到的并且从这种临时存储设备获取数据以避免处理器与系统存储器之间存在的瓶颈。
[0003]令人遗憾地,当前计算机系统仅在数据高速缓存上耗用过度百分比的执行周期。其结果是,停止程序,直到可从主存储器获取数据。令人遗憾地,实质高速缓存未命中对用户程序的执行时间和效率具有十分不利影响。用于降低对存储器引用进行处理所需的时间量的一个技术是数据预取。数据预取是指这样的技术,即该技术企图预测或预见数据加载。一旦预测到数据加载,则将数据预加载或预取到临时存储器中以免数据高速缓存未命中。
[0004]因此,数据预取机制上的传统指令集中于所请求的地址模式。这些预取机制目的在于根据近来所请求的来准确地预测将来将请求哪些存储器线。然而,预取可快速地提高存储器子系统使用率。系统存储器、存取等待时间以及高存储器子系统使用率之间的关系消极地影响预取机制的效率。在一些对称多处理器(SMP)系统以及芯片多处理器(CMP)系统中,进取地预取可提高存储器子系统使用率,由此可将等待时间提高到系统性能低于无预取级这样的程度。
[0005]传统上,预取解决机制或者是以硬件或者是以软件来实现的。例如,硬件预取解决机制通常对模式进行扫描并且将预取事务插入到系统中(使用基于利用率的调降机制)。相反地,软件明确地产生预取或向硬件指令提供暗示或提供插入到应用程序这样的暗示。然而,这两个方法具有严重的限制。即使由于有用的预取而使系统的利用率很高,硬件也会使系统产生问题,与此相反,软件预取不利地影响应用程序的移植性并且具有不期望的ISA(指令集架构)效果。此外,因为处理器发展成可支持多线程的多芯配置,因此同步执行多线程计算机系统的不同种类的工作负载会使该问题加剧。因此,当前解决机制是静态的且不灵活的并且未基于动态系统性能。此外,另一限制是缺少硬件与软件之间的反馈。
[0006]图1中描述了典型预取控制块的一个示例。队列102存储来自高速缓存106的固定数目的高速缓存线,所述固定数目的高速缓存线基于预取控制块104的控制。该典型的预取控制块具有若干限制,例如队列中可用的固定数目的高速缓存线以及预取的高速缓存线的数目不取决于该系统所执行的各种应用程序中的线程数目和线程类型。
发明内容
根据本发明的一方面,本发明提供一种装置,包括:
抽样逻辑,用于对有限数目的处理器的预定事务类型进行抽样;以及
计算逻辑,用于通过该处理器来为每个执行的线程计算线程特定度量。
根据本发明的另一方面,本发明提供一种制品:
机器可存取介质,该机器可存取介质具有多个机器可读指令,其中当具有至少一个支持多线程的执行的处理器和高速缓冲存储器的系统执行该指令时,包括:
对第一时段中的上下文转换期间的线程特定度量进行分析;以及
在第二时段从该高速缓冲存储器预取多个线,该线的数目至少部分基于该线程特定度量。
根据本发明的又一方面,本发明提供一种处理器,包括:
执行资源,用于执行多个线程;以及
处理器,用于从高速缓冲存储器预取多个高速缓存线,该高速缓冲存储器与该处理器相耦合,该多个高速缓存线是由线程特定度量确定的。
根据本发明的另一方面,本发明提供一种系统,包括:
动态随机存取存储器;
至少一个处理器,该处理器与该动态随机存取存储器相耦合,该处理器包括用于支持多个指令线程的同时执行的执行资源;以及
预取控制块,该预取控制块与该处理器相耦合,至少部分基于线程特定度量请求该处理器从与该处理器相耦合的高速缓冲存储器中预取多个高速缓存线。
根据本发明的又一方面,本发明提供一种方法,包括:
为每个执行的线程计算线程特定度量;以及
预取多个高速缓存线,该高速缓存线的数目至少部分基于该线程特定度量。
附图说明
[0007]在说明书的结束部分中特别指出并清楚地要求了主题。然而,当阅读附图时,通过参考以下详细说明可更好地理解所要求的与结构和操作方法有关的主题及其目的、特征以及优点,在附图中:
[0008]图1是现有技术;
[0009]图2是所要求主题的一个实施例所使用的系统;
[0010]图3是所要求主题的一个实施例所使用的系统;
[0011]图4A是所要求主题的一个实施例所使用的装置;
[0012]图4B是用于计算线程特定度量的方法的一个实施例;
[0013]图5是所要求主题的一个实施例所使用的用于表示软件的全景的流程图的方法;
[0014]图6描述了所要求主题的一个实施例所使用的用于支持多线程的处理器;
[0015]图7是一个实施例所使用的协议体系结构。
[0016]图8是根据所要求主题使用的用于点到点连接的物理互连的装置的方框图。
具体实施方式
[0017]在下面的描述中,为了进行说明,对许多细节进行阐述以便彻底的了解本发明。然而,对于本领域技术人员来说,显而易见的是为了实施本发明可以不需要这些特定细节。
[0018]当前技术发展的领域涉及利用预取来提高系统性能。如先前所描述的,即使由于有用的预取而使系统的利用率很高,硬件也会使系统产生问题。软件预取不利地影响应用程序的移植性并且具有不期望的ISA(指令集架构)效果。此外,因为处理器发展成可支持多线程的多芯配置,因此同步执行多线程计算机系统的不同种类的工作负载会使该问题加剧。
[0019]与此相反,该提议提供可由软件动态配置的线程感知硬件预取器。所提议的预取器利用参数化预取器、线程方面的(thread-wise)等待时间监控器以及配置和状态寄存器。该提议支持诸如当系统资源利用率很高时的调降预取、任务特定预取配置文件(profile)以及可使单线程在其代码不同部分具有不同预取配置文件的软件管理预取器适配之类的一个或所有不同类型的预取行为。此外,硬件预取器基于每个线程通过配置和状态寄存器向软件提供动态反馈。因此,软件可选地使用来自寄存器的信息动态配置预取行为并且允许软件能够查询性能并对预取器进行配置。
[0020]图2是所要求主题的一个实施例所使用的系统。具体来说,图2示出处理器、存储器以及输入/输出设备通过多个点到点接口互连的系统。
[0021]图2的系统还包括若干处理器,其中为了清楚仅示出两个处理器270、280。处理器270、280的每一个均包括存储器控制器或本地存储器控制器集线器(MCH)272、282以与存储器22、24相连。在一个实施例中,存储器22和24是DRAM和/或高速缓冲存储器。在一个实施例中,高速缓冲存储器可以是处理器所使用的任何级别的高速缓冲存储器。在一个实施例中,处理器270、280通过使用PtP接口电路278、288的点到点(PtP)接口250来交换数据。处理器270、280的每一个均通过使用点到点接口电路276、294、286、298的单独PtP接口252、254来与芯片组290交换数据。在一个实施例中,处理器270和280分别具有多处理器核心274、275和284、285。然而,所要求的主题并不局限于具有两个处理器核心的每个处理器。两个处理器核心的实施例仅仅是一个示例,并且对于本领域普通技术人员来说,可以理解的是每个处理器至少部分基于裸片大小要求、处理规范、功率限制等等而可利用不同数目的处理器核心。
[0022]芯片组290还可通过高性能图形接口239与高性能图形电路238交换数据。
[0023]在一个实施例中,每个处理器可支持如结合图6所描述的多线程。
[0024]本发明的至少一个实施例可位于图2的每个PtP总线代理内的PtP接口电路之内。然而,本发明的其他实施例可存在于图2系统内的其他电路、逻辑单元或设备之中。此外,可使本发明的其他实施例分布在遍及图2所示的若干电路、逻辑单元或设备。
[0025]图3是所要求主题的一个实施例所使用的系统。具体来说,图3示出处理器、存储器以及输入/输出设备通过前端总线(FSB)互连的系统。
[0026]图3的系统还包括若干处理器,其中为了清楚而仅示出两个处理器270、280。在一个实施例中,处理器270和280具有单个处理器核心。在另一实施例中,如附图中所描述的,处理器270和280具有两个处理器核心。处理器270、280的每一个均包括存储器控制器或本地存储器控制器集线器(MCH)272、282以与存储器22、24相连。在一个实施例中,存储器22和24是DRAM和/或高速缓冲存储器。在一个实施例中,高速缓冲存储器可以是处理器所使用的任何级别的高速缓冲存储器。在一个实施例中,处理器270、280通过使用PtP接口电路278、288的点到点(PtP)接口250来交换数据。处理器270、280的每一个均通过前端总线而与芯片组290交换数据。芯片组290还可通过高性能图形接口239与高性能图形电路238交换数据。
[0027]在一个实施例中,每个处理器可支持如结合图6所描述的多线程。在一个实施例中,结合图7和8对点到点连接的一个示例进行了描述。
[0028]此外,可使本发明的其他实施例分布在遍及图3所示的若干电路、逻辑单元或设备。
[0029]图4是所要求主题的一个实施例所使用的装置。所描述的装置便于可动态配置且线程感知的预取器。在一个实施例中,预取器的子部件是参数化预取器、线程方面的等待时间监控器以及用于存储参数的配置/状态寄存器。
[0030]如先前所讨论的,硬件预取器基于每个线程通过配置和状态寄存器向软件提供动态反馈。因此,软件可选地使用来自寄存器的信息动态配置预取行为并且允许软件能够查询性能并对预取器进行配置。图4描述了配置和状态寄存器并且结合图5的流程图对软件流程图进行进一步详细讨论。
[0031]参数化预取器允许基于指数值进行不同量的预取。例如,在一个实施例中,两位进取指数定义了诸如进行预取的高速缓存线的数目之类的预取量。两位进取指数的范围是从用于表示不进行预取的二进制值0至用于表示最大预取的二进制值3。在这个实施例中,指数二进制值3表示对高至十个高速缓存线进行预取,二进制值2表示对高至八个高速缓存线进行预取,并且二进制值1表示对高至六个高速缓存线进行预取。然而,所要求的主题并不局限于先前的两位指数以及就每个二进制值而言的高速缓存线的数目。所要求的主题可向进取指数分配不同的位,并且对于本领域技术人员来说,可以理解的是就进取指数的每个二进制值而言至少部分基于裸片大小要求、处理规范、功率限制等等而可利用不同数目的预取高速缓存线。
[0032]在一个实施例中,所预取的高速缓存线的数量还取决于基于每个线程所分析的等待时间监控器度量(结合图4B对该度量的计算进行讨论)。
[0033]如先前所讨论的,进取指数的设置取决于等待时间监控器度量。例如,一组寄存器存储不同的等待时间开动点。当所观察的平均等待时间与开动点(trip point)相交时,预取器会改变行为。
[0034]所要求的主题并不局限于等待时间监控器度量的前面行为。本领域普通技术人员可以理解,可利用等待时间监控器度量的一个或所有不同行为以反映其预取配置文件或系统以及高速缓存设计。
[0035]在一个实施例中,配置/状态寄存器表示系统的接口。配置寄存器用于控制预取器的参数。可根据进取指数、指令类型以及前面时间片分析(结合图5所讨论的)来对预取器进行调节。如先前所描述的,一组寄存器存储许多等待时间开动点。当所观察的平均等待时间与开动点相交时,预取器会改变行为。
[0036]如先前所提到的,可根据应用程序的类型以及应用程序是运行大部分浮点操作还是整数操作来对预取器进行调节。在一个实施例中,因为浮点指令是紧密连接并且是局部的,因此当运行数量占主导地位的浮点指令时,预取数量增加了。
[0037]配置和状态寄存器提供与系统有关的信息。一个这种信息块是通过等待时间监控器所观察的平均等待时间。在一个实施例中,将平均等待时间设置成等待时间监控器度量的精确值。与此相反,对于另一实施例而言,平均等待时间可以是用于表示等待时间值范围的等待时间指数。预取器还可提供诸如效率指数(例如实际上使用基于预取线次数的导数)之类的与其做的多好有关的信息。
[0038]图4B是用于计算线程特定度量的方法的一个实施例。等待时间监控器基于每个线程对系统中的等待时间(例如无预取器加载)进行分析并且向动态调节的预取器提供反馈。例如,在一个实施例中,如在执行块410中所描述的,等待时间监控器对有限数目(N)的预定事务(在一个实施例中是需用加载(demand load)事务)类型进行抽样。对于每个需用加载事务而言,对事务调度与完成之间的周期数目进行记录并将其加到线程特定累加器上,如执行块412中所描述的。
[0039]所要求的主题并不局限于需用加载事务。本领域普通技术人员应该理解的是可对一个或多个不同类型的指令进行抽样以计算线程特定度量。
[0040]随后,一旦对所有N个加载进行了抽样,那么使累加器的值除以N,如执行块414中所描述的。
[0041]因此,最终值表示该系统中的平均加载等待时间并且该度量用于选择要预取的高速缓存线的数目。
[0042]每个线程有一个等待时间监控器度量,因此固有收集的数据表示给定线程的特定特征。因此,等待时间监控器度量对高速缓存的所有要求存取的平均加载使用时间进行估算。在一个实施例中,对高速缓存等级中的特定级别或高速缓存等级的所有级别可进行该度量。在另一实施例中,该度量并不仅仅集中于其对系统之外的存取(“未命中”),而是考虑了所有需用存取。
[0043]在一个实施例中,用于计算等待时间监控器度量的逻辑可位于存储器控制器、芯片组、处理器或者ASIC中。在该相同的实施例中,定位用于计算等待时间监控器的逻辑以允许线程处理的可见性,用于便于度量的计算。
[0044]图5是所要求主题的一个实施例所使用的表示软件的全景的流程图的方法。
[0045]所描述的流程图说明了怎样调度线程以进行可确定预取器的参数并执行时间片分析这样的处理。当对新线程进行处理以进行调度时,进入等待状态。随后,对新线程进行调度并根据先前所讨论的等待时间监控器度量以及存储在配置和状态寄存器中的进取指数(较早结合图4所描述的)来确定预取器的参数。
[0046]在上下文转换判定块,执行时间片分析。时间片分析至少部分基于实现特定参数,这些参数的一些实施例是预取器准确度和加载等待时间。此外,还向操作系统提供了诸如利用率这样的系统参数。在典型的操作系统受控系统中,OS使用这些信息以便研究预取器在特定时间片的性能。与过去行为相关的信息给予OS可对下一时间片中的预取器的效率进行预测的能力。因此OS可在它相信此的情况下提高下一时间片期间预取器的进取指数或者否则使其减小。例如,如果线程特定度量低于系统的预定加载等待时间,那么该软件可提高处理器的预取行为以允许在下一时间片从耦合到处理器相的高速缓冲存储器中预取更多的高速缓存线。否则,如果线程特定度量高于系统的预定加载等待时间,那么软件可降低处理器的预取行为以在下一时间片期间从耦合到处理器的高速缓冲存储器中预取较少的高速缓存线。
[0047]如先前所讨论的,软件可查询性能并对预取器进行配置。该″循环″可使OS或运行时管理环境采用各种预取机制。在一个实施例中,一个机制涉及保持线程预取器配置文件。按此机制,上下文转换将包括改变预取器配置文件。这可以根据从状态寄存器所收集的性能数据来实现。或者,软件可使用其可用的其他信息。具体来说,帮助线程可对最终用户应用程序的执行进行监控并可根据所执行的代码的特定部分来对预取器进行调节。
[0048]在图5中对硬件基础结构的软件视图的一个示例进行了描述,其代码如下:
procedure thread_schedule()
pick_thread_to_schedule();
find_thread_optimizing_parameters();
//either profiled or configured
Configured_hardware_with_parameters();
restore_thread_context();
jump_to_thread();
end procedure;
[0049]图6描述了所要求主题的一个实施例所使用的用于支持多线程的处理器。在该实施例中,处理器274支持允许单处理器基本上同时执行若干数学运算的多线程。例如,多线程(MT)处理器包括如所描述的若干独立“逻辑处理器”或“线程”。
[0050]此外,在上述附图中所描述的所要求的主题可以是以软件来实现的。例如,软件可以存储在电存取介质中,所述电存取介质包括可提供(即存储和/或传送)电子设备(例如计算机、个人数字助理、蜂窝式电话或任何无线产品)可读形式的内容(例如计算机可执行指令)的任何机制。例如,机器可存取介质包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储设备;电、光、听觉、无线或其他形式的传播信号(例如载波、红外信号、数字信号)。
[0051]图7是一个实施例所使用的高级别的、简化的协议体系结构的抽象。该结构便于将消息从一个协议(高速缓存处理器代理或高速缓存感知存储器控制器代理)传送到点到点网络的另一协议。例如,该网络结构遵循分层协议机制并且可包括下述任意一个或全部:链路层、物理层、协议层、路由层、传输层。结合图8对这些层进行描述。链路层便于链路的初始化,协议层定义了高速缓存相关性,路由和传输层便于不同系统配置并且是可选择的。分层协议机制并不局限于所描述的层,因为不同系统配置可选择使用所描述的层的某一些或全部。该结构便于将消息从一个协议(本地或高速缓存代理)传送到点到点网路的另一协议。在一方面,附图描述了基础网络的高速缓存相关性协议的抽象视图。
[0052]图8是根据所要求的主题使用的用于物理互连的装置的方框图。在一方面,该装置描述了用于高速缓存相关性的物理层、用于处理器的基于链路的互连机制、芯片组、和/或IO桥部件。例如,物理互连可以是通过集成设备的每个物理层来进行的。具体地说,物理层提供在包括两个单向链路的物理互连上的两个端口之间的通信。具体地说,一个单向链路304是从第一集成设备的第一发送端口350至第二集成设备的第一接收器端口350。同样地,第二单向链路306是从第二集成设备的第一发送端口350至第一集成设备的第一接收器端口350。然而,所要求的主题并不局限于两个单向链路。本领域普通技术人员应该理解的是所要求的主题支持诸如双向链路等等这样的任何已知信令技术。
[0053]虽然参考特定实施例已对所要求的主题进行了描述,但是并不意味着按照限制意义来解释该描述。参考对所要求主题的描述,本领域的普通技术人员可显而易见的得知,可对公开实施例以及所要求主题的替换实施例做出各种修改。因此认为这种修改不脱离在随后权利要求中定义的所要求主题的精神和范围。
Claims (29)
1、一种装置,包括:
抽样逻辑,用于对有限数目的处理器的预定事务类型进行抽样;以及
计算逻辑,用于通过所述处理器来为每个执行的线程计算线程特定度量。
2、根据权利要求1所述的装置,还包括:
计数器,用于对处理器的预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
计算逻辑,用于通过将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量。
3、根据权利要求1所述的装置,其中预定事务类型是需用加载指令。
4、根据权利要求1所述的装置,其中线程特定量度表示包含有处理器的系统的平均加载等待时间。
5、根据权利要求1所述的装置,其中所述处理器利用至少第一逻辑处理器和第二逻辑处理器来支持多线程的执行。
6、根据权利要求1所述的装置,其中线程特定度量用于为处理器设置预取器进取指数。
7、根据权利要求1所述的装置,其中线程特定度量用于设置多个等待时间开动点,其中就多个开动点的每一个而言处理器的预取会相应变化。
8、根据权利要求1所述的装置,其中为与处理器相耦合的高速缓冲存储器的每个级别计算线程特定度量。
9、根据权利要求1所述的装置,其中为与处理器相耦合的高速缓存的预定级别计算线程特定度量。
10、根据权利要求1所述的装置,其中为包含有处理器的系统的所有需用存取计算线程特定度量。
11、根据权利要求1所述的装置,其中处理器具有第一处理器核心和第二处理器核心,第一和第二处理器核心都支持多线程的执行。
12、根据权利要求6所述的装置,其中将线程特定度量存储到配置和状态寄存器中以允许操作系统软件能够对预取进取指数进行配置。
13、一种制品:
机器可存取介质,所述机器可存取介质具有多个机器可读指令,其中当具有至少一个支持多线程的执行的处理器和高速缓冲存储器的系统执行所述指令时,包括:
对第一时段中的上下文转换期间的线程特定度量进行分析;以及
在第二时段从所述高速缓冲存储器预取多个线,所述线的数目至少部分基于所述线程特定度量。
14、根据权利要求13所述的制品,其中如果线程特定度量低于所述系统的预定加载等待时间,那么相对于第一时段而言在第二时段中所述分析使更多高速缓存线被预取。
15、根据权利要求13所述的制品,其中如果线程特定度量高于所述系统的预定加载等待时间,那么相对于第一时段而言在第二时段中所述分析使较少高速缓存线被预取。
16、根据权利要求13所述的制品,其中所述制品是操作系统或管理的运行时环境。
17、一种处理器,包括:
执行资源,用于执行多个线程;以及
处理器,用于从高速缓冲存储器预取多个高速缓存线,所述高速缓冲存储器与所述处理器相耦合,所述多个高速缓存线是由线程特定度量确定的。
18、根据权利要求17所述的处理器,还包括:
抽样逻辑,用于对有限数目的预定事务类型进行抽样;
计数器,用于对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
计算逻辑,用于将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量。
19、根据权利要求17所述的处理器,其中预定事务类型是需用加载指令。
20、根据权利要求17所述的处理器,其中线程特定量度表示包含有处理器的系统的平均加载等待时间。
21、根据权利要求17所述的处理器,其中所述处理器利用至少第一逻辑处理器和第二逻辑处理器来支持多线程的执行。
22、根据权利要求17所述的处理器,其中处理器支持分层协议接口以与其他集成设备进行通信。
23、根据权利要求17所述的处理器,其中线程特定度量用于设置多个等待时间开动点,其中就多个开动点的每一个而言处理器的预取会相应变化。
24、一种系统,包括:
动态随机存取存储器;
至少一个处理器,所述处理器与所述动态随机存取存储器相耦合,所述处理器包括用于支持多个指令线程的同时执行的执行资源;以及
预取控制块,所述预取控制块与所述处理器相耦合,至少部分基于线程特定度量请求所述处理器从与所述处理器相耦合的高速缓冲存储器中预取多个高速缓存线。
25、根据权利要求24所述的系统,还包括接口,所述接口支持允许处理器与动态随机存取存储器进行通信的分层协议。
26、根据权利要求24所述的系统,其中所述处理器至少具有第一处理器核心和第二处理器核心。
27、根据权利要求24所述的系统,还包括:
抽样逻辑,用于对有限数目的预定事务类型进行抽样;
计数器,用于对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
计算逻辑,用于将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量。
28、一种方法,包括:
为每个执行的线程计算线程特定度量;以及
预取多个高速缓存线,所述高速缓存线的数目至少部分基于所述线程特定度量。
29、根据权利要求28所述的方法,其中为每个执行的线程计算线程特定度量还包括:
对有限数目的预定事务类型进行抽样;
对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
对于每个执行的线程将预定事务类型的调度与预定事务类型的完成之间的周期数目除以预定事务类型的有限数目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/256536 | 2005-10-21 | ||
US11/256,536 US8079031B2 (en) | 2005-10-21 | 2005-10-21 | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1952877A true CN1952877A (zh) | 2007-04-25 |
CN1952877B CN1952877B (zh) | 2013-06-19 |
Family
ID=37698263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101641234A Expired - Fee Related CN1952877B (zh) | 2005-10-21 | 2006-10-21 | 用于软件可配置预取器的方法、装置和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8079031B2 (zh) |
EP (1) | EP1783603A3 (zh) |
CN (1) | CN1952877B (zh) |
TW (1) | TWI360778B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063289A (zh) * | 2010-09-07 | 2011-05-18 | 中国科学技术大学 | 串行程序线程级推测执行能力评估方法和评估器 |
CN102902581A (zh) * | 2011-07-29 | 2013-01-30 | 国际商业机器公司 | 硬件加速器及方法、中央处理单元、计算设备 |
CN105700857A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
CN111465925A (zh) * | 2017-12-12 | 2020-07-28 | 超威半导体公司 | 用以约束存储器带宽利用的存储器请求限制 |
WO2022116752A1 (en) * | 2020-12-01 | 2022-06-09 | International Business Machines Corporation | Dynamic workload tuning |
TWI779110B (zh) * | 2017-11-09 | 2022-10-01 | 美商微軟技術授權有限責任公司 | 用於電腦記憶體的方法、設備及電腦可讀取媒體 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8079031B2 (en) | 2005-10-21 | 2011-12-13 | Intel Corporation | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
US20070204267A1 (en) * | 2006-02-28 | 2007-08-30 | Cole Michael F | Throttling prefetching in a processor |
US7716536B2 (en) * | 2006-06-29 | 2010-05-11 | Intel Corporation | Techniques for entering a low-power link state |
US8387053B2 (en) * | 2007-01-25 | 2013-02-26 | Hewlett-Packard Development Company, L.P. | Method and system for enhancing computer processing performance |
JP5147296B2 (ja) * | 2007-05-31 | 2013-02-20 | 株式会社日立製作所 | 計算機システム、データベース管理方法及びプログラム |
US9342383B2 (en) * | 2007-12-28 | 2016-05-17 | Sap Se | Streaming operations for workflow process models using multiple views on a same buffer |
US8250307B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Sourcing differing amounts of prefetch data in response to data prefetch requests |
US8285941B2 (en) * | 2008-02-25 | 2012-10-09 | International Business Machines Corporation | Enhancing timeliness of cache prefetching |
US8200905B2 (en) * | 2008-08-14 | 2012-06-12 | International Business Machines Corporation | Effective prefetching with multiple processors and threads |
US8443151B2 (en) * | 2009-11-09 | 2013-05-14 | Intel Corporation | Prefetch optimization in shared resource multi-core systems |
US8566496B2 (en) * | 2010-12-03 | 2013-10-22 | Lsi Corporation | Data prefetch in SAS expanders |
GB2514972B (en) | 2012-03-31 | 2020-10-21 | Intel Corp | Controlling power consumption in multi-core environments |
US9043773B2 (en) | 2013-03-15 | 2015-05-26 | Intel Corporation | Identification and management of unsafe optimizations |
US9645935B2 (en) * | 2015-01-13 | 2017-05-09 | International Business Machines Corporation | Intelligent bandwidth shifting mechanism |
US10229060B2 (en) * | 2016-12-05 | 2019-03-12 | Intel Corporation | Instruction and logic for software hints to improve hardware prefetcher effectiveness |
US10831500B2 (en) * | 2018-06-10 | 2020-11-10 | International Business Machines Corporation | Adaptive locking in elastic threading systems |
US11379372B1 (en) * | 2019-07-19 | 2022-07-05 | Marvell Asia Pte, Ltd. | Managing prefetch lookahead distance based on memory access latency |
US10915421B1 (en) | 2019-09-19 | 2021-02-09 | Intel Corporation | Technology for dynamically tuning processor features |
CN115715390A (zh) * | 2020-05-30 | 2023-02-24 | 华为技术有限公司 | 用于自适应混合硬件预取的系统和方法 |
US20240078114A1 (en) * | 2022-09-07 | 2024-03-07 | Microsoft Technology Licensing, Llc | Providing memory prefetch instructions with completion notifications in processor-based devices |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4271486A (en) * | 1979-07-30 | 1981-06-02 | Tektronix, Inc. | Waveform storage system |
US5838976A (en) | 1995-11-28 | 1998-11-17 | Hewlett-Packard Co. | System and method for profiling code on symmetric multiprocessor architectures |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US5964867A (en) * | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
US6456632B1 (en) * | 1998-08-27 | 2002-09-24 | Robert T. Baum | Protocol separation in packet communication |
US6938147B1 (en) * | 1999-05-11 | 2005-08-30 | Sun Microsystems, Inc. | Processor with multiple-thread, vertically-threaded pipeline |
US6453389B1 (en) * | 1999-06-25 | 2002-09-17 | Hewlett-Packard Company | Optimizing computer performance by using data compression principles to minimize a loss function |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6571318B1 (en) * | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
US6721870B1 (en) * | 2001-06-12 | 2004-04-13 | Emc Corporation | Prefetch algorithm for short sequences |
US6779065B2 (en) | 2001-08-31 | 2004-08-17 | Intel Corporation | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
US7096390B2 (en) * | 2002-04-01 | 2006-08-22 | Sun Microsystems, Inc. | Sampling mechanism including instruction filtering |
US7073030B2 (en) * | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
US20030225816A1 (en) | 2002-06-03 | 2003-12-04 | Morrow Michael W. | Architecture to support multiple concurrent threads of execution on an arm-compatible processor |
US7228387B2 (en) * | 2003-06-30 | 2007-06-05 | Intel Corporation | Apparatus and method for an adaptive multiple line prefetcher |
US7774784B2 (en) * | 2005-03-17 | 2010-08-10 | Microsoft Corporation | Determining an actual amount of time a processor consumes in executing a portion of code |
US8079031B2 (en) | 2005-10-21 | 2011-12-13 | Intel Corporation | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
-
2005
- 2005-10-21 US US11/256,536 patent/US8079031B2/en not_active Expired - Fee Related
-
2006
- 2006-10-21 CN CN2006101641234A patent/CN1952877B/zh not_active Expired - Fee Related
- 2006-10-23 EP EP06255445A patent/EP1783603A3/en not_active Withdrawn
- 2006-10-23 TW TW095138982A patent/TWI360778B/zh not_active IP Right Cessation
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063289A (zh) * | 2010-09-07 | 2011-05-18 | 中国科学技术大学 | 串行程序线程级推测执行能力评估方法和评估器 |
US9870256B2 (en) | 2011-07-29 | 2018-01-16 | International Business Machines Corporation | Hardware acceleration wait time awareness in central processing units with multi-thread architectures |
CN102902581A (zh) * | 2011-07-29 | 2013-01-30 | 国际商业机器公司 | 硬件加速器及方法、中央处理单元、计算设备 |
US9870255B2 (en) | 2011-07-29 | 2018-01-16 | International Business Machines Corporation | Hardware acceleration wait time awareness in central processing units with multi-thread architectures |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
US9817764B2 (en) | 2014-12-14 | 2017-11-14 | Via Alliance Semiconductor Co., Ltd | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
CN105700857A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 |
CN105700857B (zh) * | 2014-12-14 | 2019-01-29 | 上海兆芯集成电路有限公司 | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 |
CN105700856B (zh) * | 2014-12-14 | 2019-04-30 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
TWI779110B (zh) * | 2017-11-09 | 2022-10-01 | 美商微軟技術授權有限責任公司 | 用於電腦記憶體的方法、設備及電腦可讀取媒體 |
US11625322B2 (en) | 2017-11-09 | 2023-04-11 | Microsoft Technology Licensing, Llc | Performance counters for computer memory |
CN111465925A (zh) * | 2017-12-12 | 2020-07-28 | 超威半导体公司 | 用以约束存储器带宽利用的存储器请求限制 |
WO2022116752A1 (en) * | 2020-12-01 | 2022-06-09 | International Business Machines Corporation | Dynamic workload tuning |
Also Published As
Publication number | Publication date |
---|---|
EP1783603A2 (en) | 2007-05-09 |
TW200805149A (en) | 2008-01-16 |
US8079031B2 (en) | 2011-12-13 |
CN1952877B (zh) | 2013-06-19 |
US20070094453A1 (en) | 2007-04-26 |
TWI360778B (en) | 2012-03-21 |
EP1783603A3 (en) | 2008-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1952877B (zh) | 用于软件可配置预取器的方法、装置和系统 | |
Basak et al. | Analysis and optimization of the memory hierarchy for graph processing workloads | |
US7478190B2 (en) | Microarchitectural wire management for performance and power in partitioned architectures | |
US8407432B2 (en) | Cache coherency sequencing implementation and adaptive LLC access priority control for CMP | |
US7613882B1 (en) | Fast invalidation for cache coherency in distributed shared memory system | |
US8935478B2 (en) | Variable cache line size management | |
EP1442374B1 (en) | Multi-core multi-thread processor | |
US7590805B2 (en) | Monitor implementation in a multicore processor with inclusive LLC | |
Bolotin et al. | The power of priority: NoC based distributed cache coherency | |
US7624236B2 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
CN103370696B (zh) | 多核系统以及核数据读取方法 | |
CN108351834A (zh) | 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器 | |
US20070239940A1 (en) | Adaptive prefetching | |
US8516226B1 (en) | Executing a prefetching policy responsive to entry into an execution phase of an application | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
CN101349996A (zh) | 在低功耗模式下保留被缓存的信息的技术 | |
JP2015111435A (ja) | マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法 | |
US10838870B2 (en) | Aggregated write and caching operations based on predicted patterns of data transfer operations | |
US20130031310A1 (en) | Computer system | |
US6711651B1 (en) | Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching | |
US11853766B2 (en) | Technology to learn and offload common patterns of memory access and computation | |
US7991966B2 (en) | Efficient usage of last level caches in a MCMP system using application level configuration | |
Li et al. | Analysis of NUMA effects in modern multicore systems for the design of high-performance data transfer applications | |
US8862786B2 (en) | Program execution with improved power efficiency | |
JP2009521054A (ja) | ダイナミックキャッシュ管理装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130619 Termination date: 20151021 |
|
EXPY | Termination of patent right or utility model |