CN1952877B - 用于软件可配置预取器的方法、装置和系统 - Google Patents

用于软件可配置预取器的方法、装置和系统 Download PDF

Info

Publication number
CN1952877B
CN1952877B CN2006101641234A CN200610164123A CN1952877B CN 1952877 B CN1952877 B CN 1952877B CN 2006101641234 A CN2006101641234 A CN 2006101641234A CN 200610164123 A CN200610164123 A CN 200610164123A CN 1952877 B CN1952877 B CN 1952877B
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.)
Expired - Fee Related
Application number
CN2006101641234A
Other languages
English (en)
Other versions
CN1952877A (zh
Inventor
G·桑萨纳克里施南
M·科勒
M·罗兰德
G·斯里尼瓦萨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1952877A publication Critical patent/CN1952877A/zh
Application granted granted Critical
Publication of CN1952877B publication Critical patent/CN1952877B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control 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

用于软件可配置预取器的方法、装置和系统
技术领域
本发明的一个或多个实施例通常涉及指令/数据预取领域。具体来说,本发明的一个或多个实施例涉及用于软件可配置预取器的方法、系统以及装置。
背景技术
现代计算机系统在处理器与系统存储器之间存在严重瓶颈。其结果是,引起相当大的等待时间以完成处理器所发出的存储请求。用于降低或避免处理器与系统存储器之间的等待时间的一个技术是利用数据高速缓存。其结果是,计算机系统可将所请求的数据存储在诸如高速缓冲存储设备这样的易失性存储设备之内。因此,当处理器需要存储器时,处理器对数据高速缓存进行检查以确定数据是否是容易得到的并且从这种临时存储设备获取数据以避免处理器与系统存储器之间存在的瓶颈。
令人遗憾地,当前计算机系统仅在数据高速缓存上耗用过度百分比的执行周期。其结果是,停止程序,直到可从主存储器获取数据。令人遗憾地,实质高速缓存未命中对用户程序的执行时间和效率具有十分不利影响。用于降低对存储器引用进行处理所需的时间量的一个技术是数据预取。数据预取是指这样的技术,即该技术企图预测或预见数据加载。一旦预测到数据加载,则将数据预加载到临时存储器中或在临时或存储器中预取,以免数据高速缓存未命中。
因此,数据预取机制上的传统指令集中于所请求的地址模式。这些预取机制目的在于根据近来所请求的来准确地预测将来将请求哪些存储器线。然而,预取可快速地提高存储器子系统使用率。系统存储器、存取等待时间以及高存储器子系统使用率之间的关系消极地影响预取机制的效率。在一些对称多处理器(SMP)系统以及芯片多处理器(CMP)系统中,进取地预取可提高存储器子系统使用率,由此可将等待时间提高到系统性能低于无预取级这样的程度。
传统上,预取解决机制或者是以硬件或者是以软件来实现的。例如,硬件预取解决机制通常对模式进行扫描并且将预取事务插入到系统中(使用基于利用率的调降机制)。相反地,软件明确地产生预取或向硬件指令提供暗示或提供插入到应用程序这样的暗示。然而,这两个方法具有严重的限制。即使由于有用的预取而使系统的利用率很高,硬件也会使系统产生问题,与此相反,软件预取不利地影响应用程序的移植性并且具有不期望的ISA(指令集架构)效果。此外,因为处理器发展成可支持多线程的多芯配置,因此同步执行多线程计算机系统的不同种类的工作负载会使该问题加剧。因此,当前解决机制是静态的且不灵活的并且未基于动态系统性能。此外,另一限制是缺少硬件与软件之间的反馈。
图1中描述了典型预取控制块的一个示例。队列102存储来自高速缓存106的固定数目的高速缓存线,所述固定数目的高速缓存线基于预取控制块104的控制。该典型的预取控制块具有若干限制,例如队列中可用的固定数目的高速缓存线以及预取的高速缓存线的数目不取决于该系统所执行的各种应用程序中的线程数目和线程类型。发明内容根据本发明的一方面,本发明提供一种装置,包括:抽样逻辑,用于对处理器的有限数目的预定事务类型进行抽样;以及计算逻辑,用于通过所述处理器来为每个执行的线程计算线程特定度量。根据本发明的另一方面,本发明提供一种制品:机器可存取介质,所述机器可存取介质具有多个机器可读指令,其中当具有至少一个支持多线程的执行的处理器和高速缓冲存储器的系统执行所述指令时,执行包括:对第一时段中的上下文转换期间的线程特定度量进行分析;以及在第二时段从所述高速缓冲存储器预取多个线,所述线的数目至少部分基于所述线程特定度量。根据本发明的又一方面,本发明提供一种处理器,包括:执行资源,用于执行多个线程;以及所述处理器,用于从高速缓冲存储器预取多个高速缓存线,该高速缓冲存储器与该处理器相耦合,该多个高速缓存线是由线程特定度量确定的。根据本发明的另一方面,本发明提供一种系统,包括:动态随机存取存储器;至少一个处理器,该处理器与该动态随机存取存储器相耦合,该处理器包括用于支持多个指令线程的同时执行的执行资源;以及预取控制块,该预取控制块与该处理器相耦合,至少部分基于线程特定度量请求该处理器从与该处理器相耦合的高速缓冲存储器中预取多个高速缓存线。根据本发明的又一方面,本发明提供一种方法,包括:为每个执行的线程计算线程特定度量;以及预取多个高速缓存线,该高速缓存线的数目至少部分基于该线程特定度量。
附图说明
在说明书的结束部分中特别指出并清楚地要求了主题。然而,当阅读附图时,通过参考以下详细说明可更好地理解所要求的与结构和操作方法有关的主题及其目的、特征以及优点,在附图中:
图1是现有技术;
图2是所要求主题的一个实施例所使用的系统;
图3是所要求主题的一个实施例所使用的系统;
图4A是所要求主题的一个实施例所使用的装置;
图4B是用于计算线程特定度量的方法的一个实施例;
图5是所要求主题的一个实施例所使用的用于表示软件的全景的流程图的方法;
图6描述了所要求主题的一个实施例所使用的用于支持多线程的处理器;
图7是一个实施例所使用的协议体系结构。
图8是根据所要求主题使用的用于点到点连接的物理互连的装置的方框图。
具体实施方式
在下面的描述中,为了进行说明,对许多细节进行阐述以便彻底的了解本发明。然而,对于本领域技术人员来说,显而易见的是为了实施本发明可以不需要这些特定细节。
当前技术发展的领域涉及利用预取来提高系统性能。如先前所描述的,即使由于有用的预取而使系统的利用率很高,硬件也会使系统产生问题。软件预取不利地影响应用程序的移植性并且具有不期望的ISA(指令集架构)效果。此外,因为处理器发展成可支持多线程的多芯配置,因此同步执行多线程计算机系统的不同种类的工作负载会使该问题加剧。
与此相反,该提议提供可由软件动态配置的线程感知硬件预取器。所提议的预取器利用参数化预取器、线程方面的(thread-wise)等待时间监控器以及配置和状态寄存器。该提议支持诸如当系统资源利用率很高时的调降预取、任务特定预取配置文件(profile)以及可使单线程在其代码不同部分具有不同预取配置文件的软件管理预取器适配之类的一个或所有不同类型的预取行为。此外,硬件预取器基于每个线程通过配置和状态寄存器向软件提供动态反馈。因此,软件可选地使用来自寄存器的信息动态配置预取行为并且允许软件能够查询性能并对预取器进行配置。
图2是所要求主题的一个实施例所使用的系统。具体来说,图2示出处理器、存储器以及输入/输出设备通过多个点到点接口互连的系统。
图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。然而,所要求的主题并不局限于具有两个处理器核心的每个处理器。两个处理器核心的实施例仅仅是一个示例,并且对于本领域普通技术人员来说,可以理解的是每个处理器至少部分基于裸片大小要求、处理规范、功率限制等等而可利用不同数目的处理器核心。
芯片组290还可通过高性能图形接口239与高性能图形电路238交换数据。
在一个实施例中,每个处理器可支持如结合图6所描述的多线程。
本发明的至少一个实施例可位于图2的每个PtP总线代理内的PtP接口电路之内。然而,本发明的其他实施例可存在于图2系统内的其他电路、逻辑单元或设备之中。此外,可使本发明的其他实施例分布在遍及图2所示的若干电路、逻辑单元或设备。
图3是所要求主题的一个实施例所使用的系统。具体来说,图3示出处理器、存储器以及输入/输出设备通过前端总线(FSB)互连的系统。
图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交换数据。
在一个实施例中,每个处理器可支持如结合图6所描述的多线程。在一个实施例中,结合图7和8对点到点连接的一个示例进行了描述。
此外,可使本发明的其他实施例分布在遍及图3所示的若干电路、逻辑单元或设备。
图4是所要求主题的一个实施例所使用的装置。所描述的装置便于可动态配置且线程感知的预取器。在一个实施例中,预取器的子部件是参数化预取器、线程方面的等待时间监控器以及用于存储参数的配置/状态寄存器。
如先前所讨论的,硬件预取器基于每个线程通过配置和状态寄存器向软件提供动态反馈。因此,软件可选地使用来自寄存器的信息动态配置预取行为并且允许软件能够查询性能并对预取器进行配置。图4描述了配置和状态寄存器并且结合图5的流程图对软件流程图进行进一步详细讨论。
参数化预取器允许基于指数值进行不同量的预取。例如,在一个实施例中,两位进取指数定义了诸如进行预取的高速缓存线的数目之类的预取量。两位进取指数的范围是从用于表示不进行预取的二进制值0至用于表示最大预取的二进制值3。在这个实施例中,指数二进制值3表示对高至十个高速缓存线进行预取,二进制值2表示对高至八个高速缓存线进行预取,并且二进制值1表示对高至六个高速缓存线进行预取。然而,所要求的主题并不局限于先前的两位指数以及就每个二进制值而言的高速缓存线的数目。所要求的主题可向进取指数分配不同的位,并且对于本领域技术人员来说,可以理解的是就进取指数的每个二进制值而言至少部分基于裸片大小要求、处理规范、功率限制等等而可利用不同数目的预取高速缓存线。
在一个实施例中,所预取的高速缓存线的数量还取决于基于每个线程所分析的等待时间监控器度量(结合图4B对该度量的计算进行讨论)。
如先前所讨论的,进取指数的设置可以取决于等待时间监控器度量。例如,一组寄存器存储不同的等待时间开动点。当所观察的平均等待时间与开动点(trip point)相交时,预取器会改变行为。
所要求的主题并不局限于等待时间监控器度量的前面行为。本领域普通技术人员可以理解,可利用等待时间监控器度量的一个或所有不同行为以反映其预取配置文件或系统以及高速缓存设计。
在一个实施例中,配置/状态寄存器表示系统的接口。配置寄存器用于控制预取器的参数。可根据进取指数、指令类型以及前面时间片分析(结合图5所讨论的)来对预取器进行调节。如先前所描述的,一组寄存器存储许多等待时间开动点。当所观察的平均等待时间与开动点相交时,预取器会改变行为。
如先前所提到的,可根据应用程序的类型以及应用程序是运行大部分浮点操作还是整数操作来对预取器进行调节。在一个实施例中,因为浮点指令是紧密连接并且是局部的,因此当运行数量占主导地位的浮点指令时,预取数量增加了。
配置和状态寄存器提供与系统有关的信息。一个这种信息块是通过等待时间监控器所观察的平均等待时间。在一个实施例中,将平均等待时间设置成等待时间监控器度量的精确值。与此相反,对于另一实施例而言,平均等待时间可以是用于表示等待时间值范围的等待时间指数。预取器还可提供诸如效率指数(例如实际上使用基于预取线次数的导数)之类的与其做的多好有关的信息。
图4B是用于计算线程特定度量的方法的一个实施例。等待时间监控器基于每个线程对系统中的等待时间(例如无预取器加载)进行分析并且向动态调节的预取器提供反馈。例如,在一个实施例中,如在执行块410中所描述的,等待时间监控器对有限数目(N)的预定事务(在一个实施例中是需用加载(demand load)事务)类型进行抽样。对于每个需用加载事务而言,对事务调度与完成之间的周期数目进行记录并将其加到线程特定累加器上,如执行块412中所描述的。
所要求的主题并不局限于需用加载事务。本领域普通技术人员应该理解的是可对一个或多个不同类型的指令进行抽样以计算线程特定度量。
随后,一旦对所有N个加载进行了抽样,那么使累加器的值除以N,如执行块414中所描述的。
因此,最终值表示该系统中的平均加载等待时间并且该度量可用于选择要预取的高速缓存线的数目。
每个线程有一个等待时间监控器度量,因此固有收集的数据表示给定线程的特定特征。因此,等待时间监控器度量对高速缓存的所有要求存取的平均加载使用时间进行估算。在一个实施例中,对高速缓存等级中的特定级别或高速缓存等级的所有级别可进行该度量。在另一实施例中,该度量并不仅仅集中于其对系统之外的存取(“未命中”),而是考虑了所有需用存取。
在一个实施例中,用于计算等待时间监控器度量的逻辑可位于存储器控制器、芯片组、处理器或者ASIC中。在该相同的实施例中,定位用于计算等待时间监控器的逻辑以允许线程处理的可见性,用于便于度量的计算。
图5是所要求主题的一个实施例所使用的表示软件的全景的流程图的方法。
所描述的流程图说明了怎样调度线程以能够进行可确定预取器的参数并执行时间片分析这样的处理。当对新线程进行处理以进行调度时,进入等待状态。随后,对新线程进行调度并根据先前所讨论的等待时间监控器度量以及存储在配置和状态寄存器中的进取指数(较早结合图4所描述的)来确定预取器的参数。
在上下文转换判定块,执行时间片分析。时间片分析至少部分基于实现特定参数,这些参数的一些实施例是预取器准确度和加载等待时间。此外,还向操作系统提供了诸如利用率这样的系统参数。在典型的操作系统受控系统中,OS使用这些信息以便研究预取器在特定时间片的性能。与过去行为相关的这种信息给予OS可对下一时间片中的预取器的效率进行预测的能力。因此OS可在它认可的情况下提高下一时间片期间预取器的进取指数或者否则使其减小。例如,如果线程特定度量低于系统的预定加载等待时间,那么该软件可提高处理器的预取行为以允许在下一时间片从耦合到处理器相的高速缓冲存储器中预取更多的高速缓存线。否则,如果线程特定度量高于系统的预定加载等待时间,那么软件可降低处理器的预取行为以在下一时间片期间从耦合到处理器的高速缓冲存储器中预取较少的高速缓存线。
如先前所讨论的,软件可查询性能并对预取器进行配置。该″循环″可使OS或运行时管理环境采用各种预取机制。在一个实施例中,一个机制涉及保持线程预取器配置文件。按此机制,上下文转换将包括改变预取器配置文件。这可以根据从状态寄存器所收集的性能数据来实现。或者,软件可使用其可用的其他信息。具体来说,帮助线程可对最终用户应用程序的执行进行监控并可根据所执行的代码的特定部分来对预取器进行调节。
在图5中对硬件基础结构的软件视图的一个示例进行了描述,其代码如下:procedure thread_schedule()pick_thread_to_schedule();find_thread_optimizing_parameters();//either profiled or configuredConfigured_hardware_with_parameters();restore_thread_context();jump_to_thread();end procedure;
图6描述了所要求主题的一个实施例所使用的用于支持多线程的处理器。在该实施例中,处理器274支持允许单处理器基本上同时执行若干数学运算的多线程。例如,多线程(MT)处理器包括如所描述的若干独立“逻辑处理器”或“线程”。
此外,在上述附图中所描述的所要求的主题可以是以软件来实现的。例如,软件可以存储在电存取介质中,所述电存取介质包括可提供(即存储和/或传送)电子设备(例如计算机、个人数字助理、蜂窝式电话或任何无线产品)可读形式的内容(例如计算机可执行指令)的任何机制。例如,机器可存取介质包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储设备;电、光、听觉、无线或其他形式的传播信号(例如载波、红外信号、数字信号)。
图7是一个实施例所使用的高级别的、简化的协议体系结构的抽象。该结构便于将消息从一个协议(高速缓存处理器代理或高速缓存感知存储器控制器代理)传送到点到点网络的另一协议。例如,该网络结构遵循分层协议机制并且可包括下述任意一个或全部:链路层、物理层、协议层、路由层、传输层。结合图8对这些层进行描述。链路层便于链路的初始化,协议层定义了高速缓存相关性,路由和传输层便于不同系统配置并且是可选择的。分层协议机制并不局限于所描述的层,因为不同系统配置可选择使用所描述的层的某一些或全部。该结构便于将消息从一个协议(本地或高速缓存代理)传送到点到点网路的另一协议。在一方面,附图描述了基础网络的高速缓存相关性协议的抽象视图。
图8是根据所要求的主题使用的用于物理互连的装置的方框图。在一方面,该装置描述了用于高速缓存相关性的物理层、用于处理器的基于链路的互连机制、芯片组、和/或IO桥部件。例如,物理互连可以是通过集成设备的每个物理层来进行的。具体地说,物理层提供在包括两个单向链路的物理互连上的两个端口之间的通信。具体地说,一个单向链路304是从第一集成设备的第一发送端口350至第二集成设备的第一接收器端口350。同样地,第二单向链路306是从第二集成设备的第一发送端口350至第一集成设备的第一接收器端口350。然而,所要求的主题并不局限于两个单向链路。本领域普通技术人员应该理解的是所要求的主题支持诸如双向链路等等这样的任何已知信令技术。
虽然参考特定实施例已对所要求的主题进行了描述,但是并不意味着按照限制意义来解释该描述。参考对所要求主题的描述,本领域的普通技术人员可显而易见的得知,可对公开实施例以及所要求主题的替换实施例做出各种修改。因此认为这种修改不脱离在随后权利要求中定义的所要求主题的精神和范围。

Claims (20)

1.一种处理器,包括:
抽样逻辑单元,用于对所述处理器的有限数目的预定事务类型进行抽样;
计算逻辑单元,用于通过所述处理器来为每个执行的线程计算线程特定度量;
计数器,用于对所述处理器的预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;以及
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目,
其中,所述计算逻辑单元通过将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量,并且
其中,所述线程特定度量用于为所述处理器设置预取进取指数。
2.根据权利要求1所述的处理器,其中所述预定事务类型是需用加载指令。
3.根据权利要求1所述的处理器,其中所述线程特定量度表示包含有所述处理器的系统的平均加载等待时间。
4.根据权利要求1所述的处理器,其中所述处理器至少利用第一逻辑处理器和第二逻辑处理器来支持多线程的执行。
5.根据权利要求1所述的处理器,其中所述线程特定度量用于设置多个等待时间开动点,其中就多个开动点的每一个而言处理器的预取会相应变化。
6.根据权利要求1所述的处理器,其中为与所述处理器相耦合的高速缓冲存储器的每个级别计算线程特定度量。
7.根据权利要求1所述的处理器,其中为与所述处理器相耦合的高速缓存的预定级别计算线程特定度量。
8.根据权利要求1所述的处理器,其中为包含有所述处理器的系统的所有需用存取计算线程特定度量。
9.根据权利要求1所述的处理器,其中所述处理器具有第一处理器核心和第二处理器核心,第一和第二处理器核心都支持多线程的执行。
10.根据权利要求1所述的处理器,其中将所述线程特定度量存储到配置和状态寄存器中以允许操作系统软件能够对预取进取指数进行配置。
11.一种处理器,包括:
执行单元,用于执行多个线程,所述处理器用于从高速缓冲存储器预取多个高速缓存线,所述多个高速缓存线是由线程特定度量确定的;
抽样逻辑单元,用于对有限数目的预定事务类型进行抽样;
计数器,用于对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
计算逻辑单元,用于通过将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量。
12.根据权利要求11所述的处理器,其中所述预定事务类型是需用加载指令。
13.根据权利要求11所述的处理器,其中所述线程特定量度表示包含有所述处理器的系统的平均加载等待时间。
14.根据权利要求11所述的处理器,其中所述处理器利用至少第一逻辑处理器和第二逻辑处理器来支持多线程的执行。
15.根据权利要求11所述的处理器,其中所述处理器支持分层仂议接口以与其他集成设备进行通信。
16.根据权利要求11所述的处理器,其中所述线程特定度量用于设置多个等待时间开动点,其中就多个开动点的每一个而言所述处理器的预取会相应变化。
17.一种用于软件可配置预取器的系统,包括:
动态随机存取存储器;
至少一个处理器,所述处理器与所述动态随机存取存储器相耦合,所述处理器包括用于支持多个指令线程的同时执行的执行单元;以及
预取控制块,所述预取控制块与所述处理器相耦合,至少部分基于线程特定度量请求所述处理器从与所述处理器相耦合的高速缓冲存储器中预取多个高速缓存线;
抽样逻辑单元,用于对有限数目的预定事务类型进行抽样;
计数器,用于对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
线程特定累加器,用于为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
计算逻辑单元,用于通过将线程特定累加器的值除以预定事务类型的有限数目来为每个执行的线程计算线程特定度量,
其中,线程特定度量用于为所述至少一个处理器设置预取进取指数。
18.根据权利要求17所述的系统,还包括接口,所述接口支持允许处理器与动态随机存取存储器进行通信的分层协议。
19.根据权利要求17所述的系统,其中所述处理器至少具有第一处理器核心和第二处理器核心。
20.一种用于软件可配置预取器的方法,包括:
通过下列步骤为每个执行的线程计算线程特定度量,该线程特定度量用于设置预取进取指数:
对有限数目的预定事务类型进行抽样;
对预定事务类型的调度与预定事务类型的完成之间的周期数目进行计数;
为每个执行的线程存储预定事务类型的调度与预定事务类型的完成之间的周期数目;以及
对于每个执行的线程将预定事务类型的调度与预定事务类型的完成之间的周期数目除以每个执行的线程的所述预定事务类型的有限数目;以及
预取多个高速缓存线,所述高速缓存线的数目至少部分基于所述线程特定度量。
CN2006101641234A 2005-10-21 2006-10-21 用于软件可配置预取器的方法、装置和系统 Expired - Fee Related CN1952877B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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
US11/256536 2005-10-21

Publications (2)

Publication Number Publication Date
CN1952877A CN1952877A (zh) 2007-04-25
CN1952877B true 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)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
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
CN102063289B (zh) * 2010-09-07 2013-10-16 中国科学技术大学 串行程序线程级推测执行能力评估方法和评估器
US8566496B2 (en) * 2010-12-03 2013-10-22 Lsi Corporation Data prefetch in SAS expanders
CN102902581B (zh) 2011-07-29 2016-05-11 国际商业机器公司 硬件加速器及方法、中央处理单元、计算设备
US9846475B2 (en) 2012-03-31 2017-12-19 Intel Corporation Controlling power consumption in multi-core environments
US9043773B2 (en) 2013-03-15 2015-05-26 Intel Corporation Identification and management of unsafe optimizations
KR101757098B1 (ko) * 2014-12-14 2017-07-26 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭
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
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
US10509721B2 (en) * 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory
US11294810B2 (en) * 2017-12-12 2022-04-05 Advanced Micro Devices, Inc. Memory request throttling to constrain memory bandwidth utilization
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 华为技术有限公司 用于自适应混合硬件预取的系统和方法
US20220171657A1 (en) * 2020-12-01 2022-06-02 International Business Machines Corporation Dynamic workload tuning
US20240078114A1 (en) * 2022-09-07 2024-03-07 Microsoft Technology Licensing, Llc Providing memory prefetch instructions with completion notifications in processor-based devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1276888A (zh) * 1997-10-23 2000-12-13 国际商业机器公司 在多线程处理器中选择线程切换事件的方法和装置
CN1549968A (zh) * 2001-08-31 2004-11-24 ض� 在支持并发执行多线程的计算机系统中处理中断的机制
US6938147B1 (en) * 1999-05-11 2005-08-30 Sun Microsystems, Inc. Processor with multiple-thread, vertically-threaded pipeline

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1276888A (zh) * 1997-10-23 2000-12-13 国际商业机器公司 在多线程处理器中选择线程切换事件的方法和装置
US6938147B1 (en) * 1999-05-11 2005-08-30 Sun Microsystems, Inc. Processor with multiple-thread, vertically-threaded pipeline
CN1549968A (zh) * 2001-08-31 2004-11-24 ض� 在支持并发执行多线程的计算机系统中处理中断的机制

Also Published As

Publication number Publication date
US8079031B2 (en) 2011-12-13
TWI360778B (en) 2012-03-21
CN1952877A (zh) 2007-04-25
EP1783603A2 (en) 2007-05-09
EP1783603A3 (en) 2008-06-04
TW200805149A (en) 2008-01-16
US20070094453A1 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
CN1952877B (zh) 用于软件可配置预取器的方法、装置和系统
US8407432B2 (en) Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US8935478B2 (en) Variable cache line size management
Bolotin et al. The power of priority: NoC based distributed cache coherency
CN108268385B (zh) 具有集成目录高速缓存的优化的高速缓存代理
US20070192541A1 (en) Microarchitectural wire management for performance and power in partitioned architectures
CN110321299A (zh) 用于检测重复数据访问并自动地将数据加载到本地高速缓存中的系统、方法和装置
CN108351834A (zh) 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器
WO2006072058A1 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
US20070239940A1 (en) Adaptive prefetching
CN101349996A (zh) 在低功耗模式下保留被缓存的信息的技术
US20200334155A1 (en) Aggregated write and caching operations based on predicted patterns of data transfer operations
CN115516437A (zh) 主机辅助的存储器侧预取器
US11853766B2 (en) Technology to learn and offload common patterns of memory access and computation
Li et al. Analysis of NUMA effects in modern multicore systems for the design of high-performance data transfer applications
US9645935B2 (en) Intelligent bandwidth shifting mechanism
Hossain et al. Improving support for locality and fine-grain sharing in chip multiprocessors
US20110055831A1 (en) Program execution with improved power efficiency
JP2009521054A (ja) ダイナミックキャッシュ管理装置及び方法
CN110750210B (zh) 存储系统
US20220223201A1 (en) Caching Techniques for Deep Learning Accelerator
CN115442430A (zh) 向耦合到互连件的代理发送请求
Keshtegar et al. Cluster‐based approach for improving graphics processing unit performance by inter streaming multiprocessors locality
Wang et al. Incorporating selective victim cache into GPGPU for high‐performance computing
Rajwar et al. Inferential queueing and speculative push for reducing critical communication latencies

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