CN100407165C - 数据处理系统中的预取控制 - Google Patents

数据处理系统中的预取控制 Download PDF

Info

Publication number
CN100407165C
CN100407165C CN2004800183628A CN200480018362A CN100407165C CN 100407165 C CN100407165 C CN 100407165C CN 2004800183628 A CN2004800183628 A CN 2004800183628A CN 200480018362 A CN200480018362 A CN 200480018362A CN 100407165 C CN100407165 C CN 100407165C
Authority
CN
China
Prior art keywords
prefetch
main equipment
miss
buffer
limit
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 - Lifetime
Application number
CN2004800183628A
Other languages
English (en)
Other versions
CN1813246A (zh
Inventor
威廉姆·C.·莫耶
利·黄·李
阿弗扎尔·M.·马利克
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
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 Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN1813246A publication Critical patent/CN1813246A/zh
Application granted granted Critical
Publication of CN100407165C publication Critical patent/CN100407165C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

在一个实施例中,数据处理系统(10)包括第一主设备,耦合至所述第一主设备(12)以便由第一主设备(12)使用的存储电路(35),用于存储第一预取极限(60)的第一控制存储电路(38),预取缓冲器(42)以及耦合至所述第一控制存储电路、所述预取缓冲器以及存储电路的预取电路(40)。在一个实施例中,所述预取电路(40)基于预取计数器是否已经届满,把预定数目的行从存储电路中预取到预取缓冲器(42)中,其中所述预取计数器最初被设置为由第一预取极限表示的值。在一个实施例中,第一预取极限因此可以用来控制在预取缓冲器中的未命中之间进行多少次预取。

Description

数据处理系统中的预取控制
技术领域
本发明涉及一种数据处理系统,并且尤其涉及数据处理系统内的预取控制。
背景技术
预取通常用于访问数据处理系统内的信息。通过在请求信息前预取该信息,可以减少因访问由总线主设备(master)请求的信息而引起的等待时间。然而,在典型的预取方案中,由于总线主设备未必请求访问预取的信息,所以多数预取被浪费了。一般预取方案的另一个缺点在于:由这种系统提供的预取极限控制取决于固定的策略,由此缺乏灵活性和控制性。因此,存在对于这样一种预取方法的需要,所述预取方法可以减少被浪费的预取次数,由此使得功率损耗量得以降低并且使得数据处理器性能得以优化。
发明内容
根据本发明的第一方面,提供一种数据处理系统,包括:第一主设备;存储电路,耦合至所述第一主设备,以便由第一主设备使用;第一控制存储电路,用于存储第一预取极限;预取缓冲器;以及预取电路,耦合至所述第一控制存储电路、所述预取缓冲器以及所述存储电路,所述预取电路有选择地把预定数目的行从所述存储电路中预取到所述预取缓冲器中,其中所述第一预取极限控制在所述预取缓冲器中的未命中之间进行多少次预取,其中,当预取缓冲器中发生命中并且自从预取缓冲器中的上一个未命中以来已经发生的预取总数已达到第一预取极限时,不执行响应于该命中的预取操作。
根据本发明的第二方面,提供一种用于在数据处理系统中执行预取的方法,包括:接收来自主设备的请求访问存储电路的多个访问请求;并且使用预取极限来限制在预取缓冲器中的未命中之间执行的预取次数,其中所述未命中是由于多个访问请求中的至少一部分而引起的,其中,当预取缓冲器中发生命中并且自从预取缓冲器中的上一个未命中以来已经发生的预取总数已达到所述预取极限时,不执行响应于该命中的预取操作。
根据本发明的第三方面,提供一种用于在数据处理系统中执行预取的方法,包括:接收来自主设备的请求访问存储电路的读请求;确定所述读请求在预取缓冲器中结果是命中还是未命中;如果所述读请求结果是命中,那么至少部分地基于达到第一值的预取计数器来有选择地把预定数目的行从所述存储电路中预取到预取缓冲器中;并且如果所述读请求结果是未命中,那么响应于所述读请求执行需求取出,并且把所述预取计数器设定为第二值。
附图说明
本发明通过举例进行了说明而且不受到附图的限制,在所述附图中,相似的参考标记表示类似的元件,其中:
图1根据本发明的一个实施例以框图的形式举例说明了数据处理系统;
图2根据本发明的一个实施例以框图的形式举例说明了图1中的数据处理系统的控制寄存器;
图3根据本发明的一个实施例以框图的形式举例说明了图1中的数据处理系统的预取计数器;
图4根据本发明的一个实施例以表格的形式举例说明了图2中的控制寄存器的字段描述;
图5根据本发明的一个实施例以流程图的形式举例说明了图1中的数据处理系统的操作。
本领域技术人员将会理解的是,附图中的元件仅仅是为了简单和清楚起见而示出的,并且不一定是按比例绘制的。例如,图中一些元件的尺寸可能相对于其它元件被放大了,以便帮助提高对本发明实施例的理解。
具体实施方式
正如此处使用的那样,术语“总线”用来指可用来传送一个或多个各种类型的信息的多个信号或者导线,所述各种类型的信息诸如是数据、地址、控制或者状态。此处所讨论的导线可以被说明或描述为单条导线、多条导线、单向导线或者双向导线。然而,不同的实施例可以改变所述导线的实现方式。例如,可以使用单独的单向导线而不是双向导线,并且反之亦然。此外,多条导线可以用用于串行地或者依照时间多路复用方式传送多个信号的单条导线来代替。同样,携带多个信号的单条导线可以被分为携带这些信号的子集的各种不同的导线。因此,对于传送信号来说存在多种选择。
本发明的一个实施例涉及动态地控制顺序的预取操作的次数,以免浪费预取。例如,通过限制缓冲器未命中(miss)之后执行的顺序预取的次数,可以优化存储器控制单元的性能和功耗。在一个实施例中,限制顺序预取的次数是通过使用一组预取缓冲器、控制寄存器和预取计数器来实现的,所有这些预取缓冲器、控制寄存器和预取计数器将在下文中进一步描述。在另一个实施例中,提供了软件可编程的控制方案,其允许动态控制缓冲器未命中之间的顺序预取操作的次数,并且可以由用户基于进行请求的主设备的属性来进行预先编程。例如,在中央处理单元(CPU)内,指令通常被顺序地执行,直到出现流指令改变或者异常为止,这会在顺序执行过程中引起不连续。顺序执行的指令数目取决于CPU,并且依据正在执行的应用程序的类型而变化。某些应用示出了扩展的顺序执行,而其它的应用则表现得更加不规律,同时流事件频繁地改变。因此,根据应用的不同,所期望的预取次数可以不同。在另一个实施例中,提供了DMA主设备,其中顺序地进行传送,直到传送结束或者发生信道切换为止。对于此示例而言,期待较长的序列,并且可以据此调节对应于DMA主设备的预取极限。通过有选择地控制数据处理系统内的预取次数,可以防止预取浪费,其中预取浪费会消耗多余功率并且导致性能降低。
本发明的一个实施例涉及一种数据处理系统,所述数据处理系统包括主设备,耦合至所述主设备的存储电路,用于存储预取极限的控制存储电路,预取缓冲器,以及耦合至所述控制存储电路、预取缓冲器和存储电路的预取电路。在一个实施例中,所述预取电路有选择地从所述存储电路中把预定数目的行预取到所述预取缓冲器中,其中所述预取极限控制预取缓冲器中的未命中之间进行的预取次数。
本发明的另一个实施例涉及一种用于在数据处理系统中执行预取的方法。接收来自主设备的请求访问存储电路的多个访问请求,并且使用预取极限来限制在预取缓冲器中的未命中之间执行的预取次数,其中所述未命中是由于多个访问请求的至少一部分而引起的。在本发明的一个实施例中,提供了一种预取控制电路以便存储所述预取极限。
本发明的又一实施例涉及一种用于在数据处理系统中执行预取的方法,其中接收来自主设备的请求访问存储电路的读请求,并且确定所述读请求在预取缓冲器中结果是命中还是未命中。在一个实施例中,如果所述读请求结果是命中,那么至少部分地基于达到第一值的预取计数器来有选择地从所述存储电路中把预定数目的行预取到预取缓冲器中。在一个实施例中,如果所述读请求结果是未命中,那么响应于所述读请求执行需求取出(demand fetch),并且把预取计数器设定为第二值。
图1举例说明了数据处理系统10的一个实施例。数据处理系统10包括主设备12(也称为互连主设备12)、主设备14(也称为互连主设备14)、存储器阵列控制器36、系统互连22、I/O电路16、外围设备18、其它从设备20以及存储器阵列35。主设备12经由导线48双向耦合至系统互连22,主设备14经由导线50双向耦合至系统互连22,I/O电路经由导线52双向耦合至系统互连22,外围设备18经由导线54双向耦合至系统互连22,其它从设备20经由导线56双向耦合至系统互连22,并且存储器阵列控制器36经由导线24双向耦合至系统互连22。导线24包括用于传递主设备标识符26、地址/数据27、R/W信号28、猝发(burst)信号30、指令/数据信号32以及其它信号34的导线。存储器阵列控制器36包括控制寄存器38、请求监控器43、预取电路40、预取计数器41以及缓冲器42(也称为预取缓冲器),并且经由导线33双向耦合至存储器阵列35。控制寄存器38耦合至请求监控器43和预取电路40,所述预取电路40耦合至缓冲器42和预取计数器41。缓冲器42包括缓冲器44和缓冲器46。
虽然在图1中只示出了一个外围设备18,但是数据处理系统10可以包括任意数目的耦合至系统互连22的外围设备。同样地,可以把任意数目的主设备和从设备耦合至系统互连22,并且它们并不局限于图1中所示的那些设备。还需注意的是,在一个实施例中,所有数据处理系统10可以位于单个集成电路上或者位于同一设备内。作为选择,数据处理系统10可以包括彼此互连的任意数目的单独的集成电路或者单独的设备。例如,在一个实施例中,所述存储器和存储器控制器(诸如例如存储器阵列35和存储器阵列控制器36)可以位于一个或多个集成电路上,并且独立于数据处理系统10的其余部分。
在一个实施例中,总线主设备12和总线主设备14可以是能够执行指令的处理器,诸如微处理器、数字信号处理器等,或者可以是任何其它类型的互连主设备,诸如直接存储器存取(DMA)电路或者调试电路。外围设备18可以是任何类型的外围设备,诸如通用异步收发器(universal asynchronous receiver transmitter,UART)、实时时钟(RTC)、键盘控制器等。应注意的是,其它从设备20可以包括任何类型的互连从设备,诸如例如可由主设备12和14访问的存储器,以及驻留在系统总线上的任何类型的外围设备,其中包括与外围设备18相同类型的外围设备。I/O电路16可以包括任何类型的I/O电路,其用于接收或者提供数据处理系统10之外的信息。
在所举例说明的实施例中,存储器阵列控制器36和存储器阵列35对应于耦合至系统互连22的另一个从设备。应注意的是,在替换的实施例中,存储器阵列35可以包括任意数目的阵列。还应注意的是,在替代的实施例中,存储器阵列35可以被称为存储电路35。存储器阵列35可以位于与主设备12和14相同的集成电路上,或者位于一个单独的集成电路上。此外,存储器阵列35可以是任何类型的存储器,诸如例如只读存储器(ROM)、随机存取存储器(RAM)、非易失性存储器(例如闪存)等。此外,存储器阵列35可以是位于另一个外围设备或者从设备内的存储器或者其它的存储设备。
系统互连22将主设备12、主设备14、I/O电路16、外围设备18、其它从设备20以及存储器阵列控制器36进行互连。在一个实施例中,如图1中所示那样,系统互连22是作为依照系统总线协议操作的系统总线来实现的。作为选择,系统互连22可以使用互连电路来实现,互连电路诸如例如是用于在各种设备之间路由信息的切换电路。
在操作中,主设备12和14请求访问系统互连22,以便请求访问其它从设备20、外围设备18或者经由存储器阵列控制器36访问存储器阵列35。进行请求的主设备可以经由系统互连22向存储器阵列控制器36提供访问请求。所述访问请求可以是例如对数据或者指令的读请求或者写请求。响应于读访问请求,存储器阵列控制器36把所请求的信息(数据或者指令)经由系统互连22提供给进行请求的主设备。应注意的是,来自于进行请求的主设备的读访问请求还可以称为需求取出(demand fetch)。
在一个实施例中,对于访问请求来说,把主设备标识符26提供给存储器阵列控制器36,其用于标识哪一个主设备正在请求当前访问。还把R/W信号28提供给存储器阵列控制器36,以便表示当前访问请求是读类型访问还是写类型访问。把猝发信号30提供给存储器阵列控制器36,以便表示当前访问请求是猝发类型访问还是非猝发类型访问。把指令/数据信号32提供给存储器阵列控制器36,以便表示当前访问请求是指令还是数据。存储器阵列控制器36还接收对应于当前访问请求的地址信息,并且经由地址/数据27提供所请求的信息。向和从存储器阵列控制器36进行传递所需的任何其它信号可以在其它信号34内提供。在其他实施例中,主设备标识符26、R/W信号28、猝发信号30、指令/数据信号32以及其它信号34中的某些或者全部未必都出现。
在一个实施例中,预取电路40可以从存储器阵列35把信息预取到缓冲器42中,所述缓冲器42诸如是缓冲器44和缓冲器46。因此,响应于来自进行请求的主设备的读访问请求,存储器阵列控制器36能够从缓冲器42中提供所请求的信息(如果信息早已被预取的话),而不必从存储器阵列35取出所述信息,与缓冲器42比较起来,存储器阵列35通常具有更长的访问时间。在一个实施例中,预取电路包括对应于缓冲器44和46中每一个的标志部分(未示出),并且包括比较电路(未示出),以便确定当前访问请求中所请求的信息是否早已经在缓冲器44和46其中之一中了。例如,预取电路可以把经由地址/数据27输入的对应于当前访问请求的地址与所述标志部分进行比较,以便确定所述信息是否已经被预取了。如果所述信息还没有被预取,那么存储器阵列控制器36可以从存储器阵列35中提供所请求的信息。
在所举例说明的实施例中,举例说明了两个缓冲器(缓冲器44和缓冲器46)。然而,在替代的实施例中,缓冲器42可以包括任意数目的(一个或多个)缓冲器。在一个实施例中,预取电路可以从存储器阵列35中把信息预取到缓冲器44和46其中之一中,同时把信息从缓冲器44和46中的另一个缓冲器中提供给进行请求的主设备。也就是说,使用一个以上的缓冲器,允许对存储器阵列35的预取至少部分地与服务于来自进行请求的主设备的访问请求同时进行。
对于响应于来自进行请求的主设备的访问请求而言,由于同访问存储器阵列35相比,从缓冲器42中提供信息具有更少的访问时间,所以把随后将被请求的信息从存储器阵列35预取到缓冲器42中是合乎需要的。然而,应注意的是,由于无法确定预取的信息实际上是否将被主设备请求,所以所述预取过程是投机的。例如,如果预取的信息随后没有被请求,那么该预取就成为浪费的预取,它会消耗多余功率并且降低性能。因此,本发明的一个实施例利用预取计数器41和控制寄存器38,通过为每个主设备(诸如主设备12和14)限制缓冲器42中的未命中之间的预取次数,来控制把投机性数据预取到缓冲器42中。例如,一个实施例使用控制寄存器来存储用于每个主设备的预取极限,以便使每个主设备的预取次数取决于进行请求的主设备的属性。在另一个实施例中,所述控制寄存器还可以用于确定在每次预取期间预取了多少行,正如下文中将更加详细讨论的那样。
图2举例说明了控制寄存器38的一个实施例,其包括用于每个主设备的预取极限字段。例如,如图2中所示那样,控制寄存器38包括主设备12的预取极限字段60以及主设备14的预取极限字段62。在替代的实施例中,控制寄存器38根据需要可以包括更多或更少的字段,以便存储所期望的预取极限。还应注意的是,控制寄存器38可以经由来自主设备的指令进行编程,所述主设备诸如是耦合至系统互连22的主设备12或者主设备14。预取极限字段值例如可以由用户提供,或者可以在设计时进行编程。
在一个实施例中,预取电路40双向耦合至请求监控器43,其用于为来自一个或多个主设备的访问请求编写简档,所述主设备诸如是主设备12或者主设备14,其简档可用来动态地更新预取极限。例如,请求监控器43可以监控在连续缓冲器未命中之间对缓冲器42进行的访问次数,并且据此更新或者设置所述极限。在替代的实施例中,请求监控器43可以被排除在所述数据处理系统10之外,并且所述预取极限例如可以是用户可编程的或者是硬布线的(hardwired)。
图3举例说明了预取计数器41的一个实施例,其包括对应于每一个主设备的预取计数器。例如,在一个实施例中,预取计数器41包括对应于主设备12的预取计数器64以及对应于主设备14的预取计数器66。在替代的实施例中,数据处理系统10可以为每一个存储器阵列控制器(诸如存储器阵列控制器36)包括单个预取计数器,其由一个或多个主设备共享,所述主设备诸如是主设备12或者主设备14。作为选择,预取计数器41可以被称为计数器,或者与计数器相似操作的任何其它设备(软件或者硬件)。
图4举例说明了图2中的控制寄存器38的字段定义的一个实施例。例如,在一个实施例中,字段60和62的每一个均为三位字段,其中每一个字段都能够具有8个值(000、001、010、011、100、101、110以及111)。在如图4所描述的字段描述的一个实施例中,预取极限字段60和62用于控制由预取电路所使用的预取算法。例如,预取极限字段60和62定义了对顺序预取的最大次数的限制,其中所述预取是每个相应的主设备在缓冲器未命中之间尝试进行的。预取极限字段60和62还可以用于定义每次预取多少行。
例如,在所举例说明的实施例中,000的值表示在来自相应主设备的访问请求之间不执行预取,由此在缓冲器42中导致未命中。也就是说,如果主设备12的预取极限字段60被设定为000,那么在由来自主设备12的访问请求引起的缓冲器42的未命中之间不进行预取。类似地,如果主设备14的预取极限字段62被设定为000,那么在由来自主设备14的访问请求引起的缓冲器42的未命中之间不进行预取。对于预取极限字段60和62来说,001的值表示当缓冲器未命中时、预取单个附加行(存储器阵列35中的下一顺序行)。对于预取极限字段60和62来说,010的值表示在预取停止以前、每次缓冲器未命中之后可以预取最多两个附加行,其中当缓冲器未命中时可以预取单个附加行(存储器阵列35中的下一顺序行),并且当缓冲器命中时,预取下一附加顺序行(如果还不存在的话)。
仍参照图4的实施例,对于预取极限字段60和62来说,011的值表示在停止预取以前、在每一缓冲器未命中之后可以预取最多三个附加行。也就是说,例如,在最初的未命中之后,可以启动单个预取,并且在每次后续的缓冲器命中之后,可以启动单个附加的预取(总共最多三次单个预取)。对于预取极限字段60和62来说,100的值表示在停止预取以前、在每次缓冲器未命中之后可以预取最多四个附加行。也就是说,例如,在最初的未命中之后,可以启动单个预取,并且在每次后续的缓冲器命中之后,可以启动单个附加预取(总共最多四次单个预取)。对于预取极限字段60和62来说,101的值表示在停止预取以前、在每次缓冲器未命中之后可以预取最多五个附加行。也就是说,例如,在最初的未命中之后,可以启动单个预取,并且在每次后续的缓冲器命中之后,可以启动单个附加预取(总共最多五次单个预取)。
仍参照图4的实施例,对于预取极限字段60和62来说,110的值表示在每一次缓冲器未命中之后可以预取不限制数目的附加行。也就是说,例如,在每一次缓冲器命中或未命中之后可以启动单个附加预取。(应注意的是,在此实施例中,111的值被保留并且不用于设置预取操作)。在替代的实施例中,应注意的是,控制寄存器38可以根据需要包括每个主设备的更多或更少字段,所述字段利用更多或更少的位。此外,当需要控制预取电路40时,可以应用预取极限字段60和62的可替代定义。将根据图5进一步描述预取极限字段的使用和定义。
图5根据本发明的一个实施例以流程图的形式举例说明了数据处理系统10的操作。流程70从开始72起始,并且进行到块74,其中接收来自主设备、诸如主设备12或者主设备14的访问请求。此访问请求可以是多种不同类型的访问请求,诸如读请求、写请求、猝发请求、非猝发请求、数据请求、指令请求等。然而,为了便于此处的说明,假定所述访问请求是读请求。
然后,流程进行到块76,其中使用例如主设备标识符来确定进行请求的主设备的身份,其中所述主设备标识符如图1的主设备标识符26所提供的那样。据此,不同的主设备可以具有不同的主设备标识符,例如,主设备12可以具有标识符0,而主设备14可以具有标识符1。因此,每一主设备可以被分配一个唯一的标识符。在替代的实施例中,某些主设备可以共享同一个标识符。此外,应注意的是,在替代的实施例中,能够以不同的方式而不是通过提供诸如主设备标识符26之类的信号来确定哪个主设备正在请求访问。在一个实施例中,可以基于主设备标识符的身份从多个预取计数器和极限中选择正确的预取计数器和相应的预取极限。
返回参考图5,然后,流程进行到判定菱形框78,其中确定所述访问请求结果是命中还是未命中。如果所述访问请求结果是未命中,那么流程进行到块86,其中把对应于进行请求的主设备的预取计数器(预取计数器41中的其中一个计数器)设定为对应于进行请求的主设备的预取极限(例如由控制寄存器38中的预取极限字段的其中一个来表示)。此预取极限用于控制进行请求的主设备在缓冲器未命中之间进行预取的次数。然后,流程进行到块88,其中响应于所述当前访问请求执行单行需求取出。应注意的是,在替代的实施例中,在需求取出期间可以取出附加的行。
然后,流程进行到判定菱形框94,其中确定对应于进行请求的主设备的预取极限是否表示“不预取”。(例如,在图4的实施例中,对于控制寄存器38中的相应预取极限字段来说,通过值000来表示不预取)。如果表示不预取,那么流程进行到结束椭圆框90。然而,如果没有表示不预取,那么流程进行到块89,其中如果所述单个行还没有在预取缓冲器中,那么执行单行预取,并且将对应于进行请求的主设备的预取计数器进行递减。应注意的是,在替代的实施例中,块89不一定存在,也就是说,响应于未命中,不一定进行预取,并且由此相应的预取计数器不一定进行更新。
如果判定菱形框78的结果是命中,那么流程进行到判定菱形框96,其中确定对应于进行请求的主设备的预取极限是否表示“不预取”。如果表示不预取,那么流程进行到结束椭圆框90。否则,如果没有表示不预取,那么流程进行到判定菱形框80,其中确定对应于所述进行请求的主设备的预取计数器是否已经届满。如果所述预取计数器没有届满,那么流程进行到块82。在块82中,如果所述单个行还没有在预取缓冲器中,那么执行单行预取,并且将对应于进行请求的主设备的预取计数器进行递减,由此跟踪由于最后的未命中而已经进行的预取次数。然后,流程进行到结束椭圆框90。
返回参考判定块80,如果所述预取计数器已经届满,那么流程进行到块84,其中不执行附加的预取。因此,即使已经发生了另一次命中,也不再进行预取,直到在块86中响应于未命中而把相应的预取计数器再次设置为预取极限为止。由此,以这样的方式,可以使用所述预取极限来限制相应的进行请求的主设备在缓冲器未命中之间进行的预取次数。然后,流程进行到结束椭圆框90。
在图5的实施例中,将所述预取计数器递减一个固定值,例如1,以便表示执行了预取(例如,在图5的块82和89中)。当所述预取计数器的值到达其下限时,在该情况下为0时,可以认为预取计数器届满。在替代的实施例中,可以把所述预取计数器的初始值设置为0(诸如图5的块86中),并且可以因此将所述预取计数器递增一个固定值,例如1,以便表示执行了预取(诸如在图5的块82和89中)。在这个替代的实施例中,当所述计数器的值达到相应的预取极限时,就认为预取计数器届满了。
还需注意的是,在图5的实施例中,在每一次预取期间(诸如在块82和83中)可以只取出单个附加行,如图4的字段所定义的那样。然而,应注意的是,在替代的实施例中,在每次预取期间(诸如在图5的块82和89中)可以取出预定数目的行(一行或多行)。也就是说,如果预定数目的行还没有在预取缓冲器中,那么响应于命中、未命中或者它们两者,可以预取所述预定数目的行。此外,可以据此将相应的预取计数器进行递减(或者递增),从而跟踪预取次数。因此,应注意的是,诸如控制寄存器38中的预取极限字段60和62之类的预取极限字段,可用来定义在每次未命中、或者命中或者它们两者之后(在相应计数器届满前)预取任何预定数目的行,而不是仅仅预取单个附加的行。
正如上文中已经描述的那样,预取计数器可以用于每一个主设备,然而,在替代的实施例中,单个计数器可以由多个主设备共享。在此实施例中,可以使用优先级方案,其中所述级优先方案例如可以由用户根据哪个主设备控制所述单个计数器来进行编程。例如,主设备14可以要求使用目前正由主设备12使用的计数器,并且如果主设备14具有优于主设备12的优先级,那么主设备12可以把对该计数器的控制让给主设备14。以这样的方式,多个主设备可以共享单个计数器。作为选择,所述计数器可以如此进行共享,即:预取极限可以限制在连续未命中之间的预取次数,而不管进行请求的主设备的身份如何,并且它不是基于每一个主设备的。在这个替代的实施例中,在每次出现未命中时往往会设置共享的计数器(诸如在图5的块86中),而不管所述进行请求的主设备的身份如何。类似地,图5中的判定菱形框80和块82以及89往往对这个共享的计数器进行操作,而不管进行请求的主设备的身份如何。此外,还需注意的是,在又一个实施例中,多个主设备可以共享控制寄存器38中的一个预取极限。
当处理一个数据处理系统中的不同类型的主设备时,必须优化存储器控制单元的性能。不同类型的主设备以多种方式来执行并且传送指令,因此人们可以理解这样的预取限制方案,其考虑了主设备的不同访问特性,并且限制未命中之间的预取次数,由此允许动态控制顺序的预取。例如,CPU中的指令通常被顺序地执行,直到已经到达了流程的改变处为止,然而,利用DMA,大多数传送顺序地进行,直到传送结束或者发生信道切换为止。因此,CPU和DMA的预取极限字段可以被不同地设置,以便使得同CPU相比所述DMA例如允许在未命中之间进行更多次的预取。由此,可以对所述预取极限字段进行编程,以便考虑主设备之间的各种差异,并且控制在连续未命中之间进行预取的次数,正如上文所描述的那样。也就是说,在达到预取极限之后,在下一次缓冲器未命中之前,不再进行预取,这是由于随着顺序预取的次数增加将要使用顺序预取的可能性减少了。此外,如何使用预取极限字段来控制响应于每个命中、或者未命中或者它们两者(在达到预取极限之前)而进行的行预取的数目,以便进一步减少浪费的预取,是可以理解的。
在先前的说明书中,已经参照特定的实施例描述了本发明。然而,本领域普通技术人员将会理解,在不脱离本发明的范围的情况下,可以做出各种修改和变化,本发明的范围由所附权利要求书限定。因此,说明书和附图被认为是说明性的,而不具有限制性的意义,并且意图使所有这种修改都包括在本发明的范围之内。
上文已经就特定的实施例描述了益处、其它优点和问题的解决方案。然而,可能引起出现任何益处、优点或者解决方案或者使得它们变得更加明确的益处、优点、问题的解决方案以及任何元素(一个或多个)都不应被看作是任何或所有权利要求的关键性的、必需的或者基本的特征或元素。正如此处使用的那样,术语“一”或者“一个”被定义为一个或多于一个。正如此处使用的那样,术语“包括”和/或“具有”被定义为包含(即,开放性的措辞)。正如此处使用的那样,术语“包含”、“包括”或者其任何其它变化意在涵盖非排他性的包含,由此使得包括一系列元素的过程、方法、物品或者设备不只包括那些元素,而且还可以包括没有明显列出的其它元素,或者这种过程、方法、物品或者设备所固有的其它元素。

Claims (10)

1.一种数据处理系统,包括:
第一主设备;
存储电路,耦合至所述第一主设备,以便由第一主设备使用;
第一控制存储电路,用于存储第一预取极限;
预取缓冲器;以及
预取电路,耦合至所述第一控制存储电路、所述预取缓冲器以及所述存储电路,所述预取电路有选择地把预定数目的行从所述存储电路中预取到所述预取缓冲器中,其中所述第一预取极限控制在所述预取缓冲器中的未命中之间进行多少次预取,其中,当预取缓冲器中发生命中并且自从预取缓冲器中的上一个未命中以来已经发生的预取总数已达到第一预取极限时,不执行响应于该命中的预取操作。
2.如权利要求1所述的数据处理系统,还包括:
第一预取计数器,其中所述预取电路基于所述第一预取计数器的值,有选择地把预定数目的行从存储电路中预取到所述预取缓冲器中。
3.如权利要求1所述的数据处理系统,还包括:
第二主设备,其中所述存储电路耦合至所述第二主设备,并且供所述第二主设备使用;以及
第二控制存储电路,其对应于所述第二主设备,并且存储第二预取极限。
4.如权利要求3所述的数据处理系统,其中所述第一预取极限对于来自所述第一主设备的读请求,控制在所述预取缓冲器中的未命中之间为所述第一主设备进行多少次预取,并且其中所述第二预取极限对于来自第二主设备的读请求,控制在所述预取缓冲器中的未命中之间为所述第二主设备进行多少次预取。
5.如权利要求1所述的数据处理系统,其中所述预取电路响应于预取缓冲器中的命中或者未命中的至少一个,有选择地预取预定数目的行。
6.一种用于在数据处理系统中执行预取的方法,包括:
接收来自主设备的请求访问存储电路的多个访问请求;并且
使用预取极限来限制在预取缓冲器中的未命中之间执行的预取次数,其中所述未命中是由于多个访问请求中的至少一部分而引起的,其中,当预取缓冲器中发生命中并且自从预取缓冲器中的上一个未命中以来已经发生的预取总数已达到所述预取极限时,不执行响应于该命中的预取操作。
7.如权利要求6所述的方法,其中使用所述预取极限来限制预取次数的步骤包括:
对预取缓冲器中的未命中之后的预取进行计数,以便确定何时达到预取极限。
8.如权利要求7所述的方法,其中每次预取均从所述存储电路中预取单个行。
9.一种用于在数据处理系统中执行预取的方法,包括:
接收来自主设备的请求访问存储电路的读请求;
确定所述读请求在预取缓冲器中结果是命中还是未命中;
如果所述读请求结果是命中,那么至少部分地基于达到第一值的预取计数器来有选择地把预定数目的行从所述存储电路中预取到预取缓冲器中;并且
如果所述读请求结果是未命中,那么响应于所述读请求执行需求取出,并且把所述预取计数器设定为第二值。
10.如权利要求9所述的方法,其中有选择地预取预定数目的行的步骤进一步基于所述预定数目的行是否已经存在于所述预取缓冲器中。
CN2004800183628A 2003-07-31 2004-07-13 数据处理系统中的预取控制 Expired - Lifetime CN100407165C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/631,136 US7200719B2 (en) 2003-07-31 2003-07-31 Prefetch control in a data processing system
US10/631,136 2003-07-31

Publications (2)

Publication Number Publication Date
CN1813246A CN1813246A (zh) 2006-08-02
CN100407165C true CN100407165C (zh) 2008-07-30

Family

ID=34115765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800183628A Expired - Lifetime CN100407165C (zh) 2003-07-31 2004-07-13 数据处理系统中的预取控制

Country Status (7)

Country Link
US (1) US7200719B2 (zh)
EP (1) EP1652092A2 (zh)
JP (1) JP4875981B2 (zh)
KR (1) KR101093317B1 (zh)
CN (1) CN100407165C (zh)
TW (1) TWI352293B (zh)
WO (1) WO2005013039A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012142820A1 (zh) * 2011-04-18 2012-10-26 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526604B1 (en) * 2004-08-09 2009-04-28 Nvidia Corporation Command queueing speculative write prefetch
JP2006251923A (ja) * 2005-03-08 2006-09-21 Oki Electric Ind Co Ltd 先読み制御方法
US7346741B1 (en) * 2005-05-10 2008-03-18 Sun Microsystems, Inc. Memory latency of processors with configurable stride based pre-fetching technique
CN101261610B (zh) * 2007-03-06 2014-04-02 西北农林科技大学 多主设备无冲突访问从设备的方法及装置
JP4829191B2 (ja) * 2007-08-30 2011-12-07 株式会社東芝 キャッシュシステム
US9274965B2 (en) * 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8473689B2 (en) * 2010-07-27 2013-06-25 Texas Instruments Incorporated Predictive sequential prefetching for data caching
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
WO2013030628A1 (en) * 2011-09-01 2013-03-07 Freescale Semiconductor, Inc. Integrated circuit device, memory interface module, data processing system and method for providing data access control
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US20220091847A1 (en) * 2020-09-23 2022-03-24 Advanced Micro Devices, Inc. Prefetching from indirect buffers at a processing unit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86107934A (zh) * 1985-11-27 1987-08-12 莫托罗拉公司 具有指令预取转向中断服务的数据处理器控制部件
US5410653A (en) * 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length
CN1410893A (zh) * 2002-04-09 2003-04-16 智慧第一公司 具有预取指令的微处理器及预取至其高速缓存的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146578A (en) 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
JPH0754482B2 (ja) * 1990-08-07 1995-06-07 株式会社日立製作所 計算機システム
US5619663A (en) 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
JP2720838B2 (ja) * 1995-06-19 1998-03-04 日本電気株式会社 データ転送装置
US6085291A (en) 1995-11-06 2000-07-04 International Business Machines Corporation System and method for selectively controlling fetching and prefetching of data to a processor
US5802569A (en) * 1996-04-22 1998-09-01 International Business Machines Corp. Computer system having cache prefetching amount based on CPU request types
US6901500B1 (en) * 2000-07-28 2005-05-31 Silicon Graphics, Inc. Method and apparatus for prefetching information and storing the information in a stream buffer
US6578130B2 (en) 2001-10-18 2003-06-10 International Business Machines Corporation Programmable data prefetch pacing
US7493450B2 (en) * 2003-04-14 2009-02-17 Hewlett-Packard Development Company, L.P. Method of triggering read cache pre-fetch to increase host read throughput
US7055016B2 (en) * 2003-04-30 2006-05-30 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86107934A (zh) * 1985-11-27 1987-08-12 莫托罗拉公司 具有指令预取转向中断服务的数据处理器控制部件
US5410653A (en) * 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length
CN1410893A (zh) * 2002-04-09 2003-04-16 智慧第一公司 具有预取指令的微处理器及预取至其高速缓存的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012142820A1 (zh) * 2011-04-18 2012-10-26 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统

Also Published As

Publication number Publication date
EP1652092A2 (en) 2006-05-03
JP2007500897A (ja) 2007-01-18
KR101093317B1 (ko) 2011-12-14
WO2005013039A3 (en) 2005-07-21
KR20060052936A (ko) 2006-05-19
JP4875981B2 (ja) 2012-02-15
CN1813246A (zh) 2006-08-02
US7200719B2 (en) 2007-04-03
TW200519604A (en) 2005-06-16
WO2005013039A2 (en) 2005-02-10
TWI352293B (en) 2011-11-11
US20060053256A1 (en) 2006-03-09

Similar Documents

Publication Publication Date Title
CN100407165C (zh) 数据处理系统中的预取控制
KR100668001B1 (ko) 메모리 액세스를 제어하기 위한 방법 및 장치
US7596707B1 (en) System and method for efficient power throttling in multiprocessor chip
US6832280B2 (en) Data processing system having an adaptive priority controller
US7107384B1 (en) Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
US6978351B2 (en) Method and system to improve prefetching operations
CN109446112B (zh) 用于预取流量的改进控制的方法和系统
CN103034476A (zh) 用于在总线上发送存储器预取命令的方法和设备
CN100416529C (zh) 用于确定动态随机存取存储器页面管理实现的方法和装置
US7299341B2 (en) Embedded system with instruction prefetching device, and method for fetching instructions in embedded systems
WO2005091762A2 (en) Intelligent pci bridging consisting of prefetching all data prior to sending data to requesting device
CN100435122C (zh) 具有外设访问保护的数据处理系统
CN104346303A (zh) 一种总线仲裁方法及装置
JP5340658B2 (ja) コマンド選択のメモリ・コントローラ読み取りキュー動的最適化
US8667190B2 (en) Signal processing system, integrated circuit comprising buffer control logic and method therefor
US20040268085A1 (en) Memory interface circuit
JPH1083343A (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
CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: NXP USA, Inc.

Address before: Texas in the United States

Patentee before: FREESCALE SEMICONDUCTOR, Inc.

CP01 Change in the name or title of a patent holder
CX01 Expiry of patent term

Granted publication date: 20080730

CX01 Expiry of patent term