CN1561480A - 用提示缓冲器隐藏存储器访问等待时间 - Google Patents

用提示缓冲器隐藏存储器访问等待时间 Download PDF

Info

Publication number
CN1561480A
CN1561480A CNA028190696A CN02819069A CN1561480A CN 1561480 A CN1561480 A CN 1561480A CN A028190696 A CNA028190696 A CN A028190696A CN 02819069 A CN02819069 A CN 02819069A CN 1561480 A CN1561480 A CN 1561480A
Authority
CN
China
Prior art keywords
memory
instruction
logic
request
requested data
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
Application number
CNA028190696A
Other languages
English (en)
Other versions
CN1324459C (zh
Inventor
苏布拉马尼亚姆·梅尤拉恩
维韦克·加尔格
穆罕默德·A·阿卜杜勒兰
贾甘纳特·凯沙夫
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 CN1561480A publication Critical patent/CN1561480A/zh
Application granted granted Critical
Publication of CN1324459C publication Critical patent/CN1324459C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/3802Instruction prefetching
    • 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/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Machine Translation (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

在确定被请求的数据和/或(一个或多个)指令是否存储在第一存储器中之前或者同时,发出请求提示。响应于该请求提示,而访问第二存储器以提取数据和/或(一个或多个)指令。从第二存储器取得的数据和/或(一个或多个)指令被存储在缓冲器中。如果被请求的数据和/或(一个或多个)指令不在第一存储器中,则从缓冲器返回数据和/或(一个或多个)指令。

Description

用提示缓冲器隐藏存储器访问等待时间
技术领域
本发明一般地涉及计算机系统领域。更具体地说,本发明涉及计算机系统的存储器访问领域。
背景技术
处理器一般以相对于外部存储器更快的时钟速度来执行指令,该外部存储器例如动态随机访问存储器(DRAM)。因此,由于处理器以相对较慢的时钟速度,从存储器中提取将被执行的指令以及在执行指令中将被处理的数据,所以在处理器执行指令时访问外部存储器会引入延迟。
一般的处理器可以通过以流水线方式处理指令,来帮助最小化这种存储器访问等待时间所引起的延迟,所述流水线从存储器提取指令、解码每一个指令、执行指令并且结束指令。流水线的每一个阶段的操作一般在时间上会与其他阶段的操作重叠,以帮助隐藏在提取指令和用于指令执行的数据中的存储器访问等待时间。
通过确定这样的指令,其不考虑先前提取的一个或多个指令是否被执行就可被执行,一般的处理器还可以通过并行执行指令,即使两个或更多指令的执行在时间上覆盖,和/或通过乱序地执行指令,来帮助最小化由存储器访问等待时间引起的延迟。这样,处理器通过在等待例如提取用于其他指令的数据的同时继续执行指令,来帮助隐藏存储器访问等待时间。不管指令执行的顺序如何,处理器都顺序地结束每一条指令。
处理器还可以通过这样来帮助最小化存储器等待时间延迟,即一次管理相对更多指令的乱序执行,以帮助扩大从存储器提取指令和/或数据的窗口,而不引入很长的延迟。例如,处理器可以使用:更大的指令重排序缓冲器,以一次管理相对更多指令来用于乱序执行;更大的存储器顺序缓冲器,以一次管理来自存储器的相对更多的数据请求,来用于乱序数据提取;和/或更大的存储器请求队列,以允许一次发出相对更多的存储器请求。
一般的处理器还可以通过使用一个或多个相对更大的内部高速缓冲存储器,来存储被频繁访问的指令和数据,以帮助最小化存储器访问等待时间延迟。因为这时处理器可以在内部访问这些指令和数据,所以处理器就帮助减少了对外部存储器的访问。
但是,使用更大的缓冲器、队列和/或高速缓冲存储器,会增加处理器的成本和尺寸。
附图说明
在附图的图中以示例而非限制的方式来说明本发明,附图中类似的标记指示相似的元件,其中:
图1图示了示例性计算机系统,该系统包括具有集成存储器控制器的处理器,集成存储器控制器包括提示缓冲器,用于帮助隐藏存储器访问等待时间;
图2图示了一个实施例中具有集成存储器控制器的处理器,集成存储器控制器包括提示缓冲器,用于帮助隐藏存储器访问等待时间;
图3由图3A和图3B组成,图示了一个实施例中使用包括提示缓冲器的存储器控制器,来执行存储器提取请求的流程图;
图4图示了一个实施例中将一个或多个写缓冲器条目刷新到主存储器的流程图;
图5图示了一个实施例中提示缓冲器的条目;以及
图6由图6A和图6B组成,图示了另一个实施例中使用包括提示缓冲器的存储器控制器,来执行存储器提取请求的流程图。
具体实施方式
下面的详细描述给出了根据本发明的的一个实施例或多个实施例,其用提示缓冲器来隐藏存储器访问等待时间。为了提供对本发明的充分理解,在下面的描述中给出了很多细节,例如具体的处理器体系结构、存储器类型等。但是,很清楚本发明可以不用这些细节而实施。在其他情况下,为了不混淆本发明,没有详细地描述公知的功能块、接口等。
示例性计算机系统
图1图示了示例性计算机系统100,其包括具有存储器控制器112的处理器110,存储器控制器112包括用于帮助隐藏存储器访问等待时间的提示缓冲器114。虽然是在计算机系统100的上下文中描述本发明的,但是本发明可以在包括任何合适的一个或多个集成电路的任何合适的计算机系统中实现。
如图1所图示的,一个实施例的存储器控制器112与处理器110集成在同一个芯片上。与处理器110集成的存储器控制器112,帮助减少与存储器控制器112通信中的延迟。另一个实施例的存储器控制器112可以形成为一个单独的集成电路芯片,该芯片或者与处理器110共用同一个封装,或者与处理器110分别封装。处理器110可以包括任何合适的处理器体系结构,在一个实施例中其包括由加州Santa Clara的Intel公司定义的Intel32位体系结构。
存储器控制器112控制处理器110对主存储器120的访问。主存储器120被耦合到存储器控制器112,用于为例如计算机系统100(包括为处理器110)加载和存储数据和/或指令。主存储器120可以包括任何合适的存储器,例如动态随机访问存储器(DRAM)。主存储器120可以包括例如同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)或者RambusDRAM(RDRAM)。一个实施例的处理器110以相对于存储器控制器112和主存储器120更快的时钟速度操作。
当处理器110从主存储器120提取将被执行的指令和/或在执行指令中被处理的数据时,一个实施例的存储器控制器112使用提示缓冲器114来帮助隐藏处理器110的存储器访问等待时间。一个实施例的存储器控制器112接收对被处理器110请求的数据和/或一个或多个指令的请求提示,即使处理器110可能以后才使用或根本不使用所请求的数据和/或(一个或多个)指令,并且/或者即使处理器110可能需要或不需要所请求的来自主存储器120的数据和/或(一个或多个)指令。然后,存储器控制器112可以响应于所接收的请求提示,在接收对数据和/或(一个或多个)指令的存储器提取请求之前,启动对主存储器120的访问,并将被请求的数据和/或(一个或多个)指令存储在提示缓冲器114中。例如当被请求的数据和/或(一个或多个)指令可能会被处理器110使用,并需要从主存储器120取来时,就可向存储器控制器112发出存储器提取请求。
在存储器控制器112接收到存储器提取请求时,存储器控制器112可能已经访问主存储器120来提取了被请求的数据和/或(一个或多个)指令。那么存储器控制器112就可以将来自提示缓冲器114的被请求的数据和/或(一个或多个)指令,返回给处理器110使用。
由于与当存储器控制器112接收到存储器提取请求时访问主存储器120相比,从提示缓冲器114返回被请求的数据和/或(一个或多个)指令更快,所以通过在接收到对数据和/或(一个或多个)指令的存储器提取请求之前,投机性地访问主存储器120的数据和/或(一个或多个)指令,处理器110可以有效地隐藏与访问主存储器120相关联的等待时间。而且,通过在主存储器120空闲时,根据请求提示来访问主存储器120,处理器110可以帮助减少平均存储器访问等待时间。这样,处理器110就可以更加充分地使用访问主存储器120的带宽。
例如,一个实施例的存储器控制器112还控制对主存储器120的访问,该访问为图形控制器130和/或输入/输出(I/O)控制器140来存储和提取数据和/或(一个或多个)指令。
图形控制器130被耦合到处理器110,用于控制耦合到图形控制器130的合适的显示器132上的信息显示,显示器132例如为阴极射线管(CRT)或液晶显示器(LCD)。一个实施例的存储器控制器112通过加速图形端口(AGP)与图形控制器130接口。
I/O控制器140被耦合到处理器110,用于提供与耦合到I/O控制器140的一个或多个I/O设备的接口。一个实施例的I/O控制器140通过中心接口而与存储器控制器112接口。
一个实施例中,I/O控制器140提供到一个或多个合适的集成驱动电子(IDE)驱动器142的接口、通过一个或多个通用串行总线(USB)端口144到一个或多个合适的USB设备的接口、以及到音频编码器/译码器146和调制解调器148的接口,其中,存储数据和/或指令的集成驱动电子(IDE)驱动器142,例如是硬盘驱动器(HDD)或只读光盘(CDROM)驱动器。一个实施例的I/O控制器140通过高级I/O控制器150还提供到以下设备的接口:键盘151、鼠标152、通过一个或多个并行端口153的例如打印机的一个或多个合适的设备、通过一个或多个串行端口154的一个或多个合适的设备、以及软盘驱动器155。一个实施例的I/O控制器140还提供到以下设备的接口:通过外围组件互连(PCI)总线上的一个或多个PCI插槽162而耦合到I/O控制器140的一个或多个合适的PCI设备、通过工业标准体系结构(ISA)桥接卡164而由PCI总线耦合到I/O控制器140的一个或多个合适的ISA设备。ISA桥接卡164通过ISA总线上的一个或多个ISA插槽166而与一个或多个ISA设备接口。
I/O控制器140还被耦合到固件控制器170,来提供到固件控制器170的接口。一个实施例的固件控制器170通过中心接口与I/O控制器140接口。一个实施例的固件控制器170可以共享I/O控制器140与高级I/O控制器150之间的至少一部分接口。固件控制器170包括基本输入/输出系统(BIOS)存储器172,用于存储合适的系统和/或视频BIOS软件。BIOS存储器172可以包括任何合适的非易失性存储器,例如闪存。
尽管图示为仅有一个处理器110,但是另一个实施例的计算机系统100可以包括多个处理器,例如两个、三个或更多。处理器110可以被耦合到公共总线上的一个或多个其他的处理器。这时,每一个处理器可以共享存储器控制器112,以访问例如主存储器120、图形控制器130和/或I/O控制器140。
具有包含提示缓冲器的存储器控制器的处理器
如图2中所图示的,一个实施例的处理器110包括存储器控制器112、耦合到存储器控制器112的总线接口逻辑210、耦合到总线接口逻辑210的辅助高速缓冲存储器212、耦合到总线接口逻辑210的主高速缓存控制逻辑220、耦合到主高速缓存控制逻辑220的主高速缓冲存储器222、耦合到主高速缓存控制逻辑220的指令处理逻辑230、以及耦合到指令处理逻辑230的体系结构寄存器240。
总线接口逻辑210、辅助高速缓冲存储器212、主高速缓存控制逻辑220和主高速缓冲存储器222,形成二级高速缓冲存储器子系统,用于向指令处理逻辑230提供指令和/或数据。
总线接口逻辑210控制辅助高速缓冲存储器212,来存储和提取用于指令处理逻辑230的指令和/或数据。一个实施例的总线接口逻辑210,将通过存储器控制器112而从主存储器120取得的指令和/或数据,存储在辅助高速缓冲存储器212中,以由指令处理逻辑230来处理。一个实施例的总线接口逻辑210,还将最近和/或频繁使用的指令和/或数据,存储在辅助高速缓冲存储器212中,用于帮助使对主存储器120的访问最少。总线接口逻辑210可以包括任何合适的电路系统,而辅助高速缓冲存储器212可包括任何合适大小的任何合适的存储器。
主高速缓存控制逻辑220控制主高速缓冲存储器222,以存储和提取用于指令处理逻辑230的指令和/或数据。一个实施例中,主高速缓冲存储器222可以包括专用的指令高速缓冲存储器部分和单独的专用数据高速缓冲存储器部分。一个实施例的主高速缓存控制逻辑220,将通过总线接口逻辑210从辅助高速缓冲存储器212取得的指令和/或数据,或者通过总线接口逻辑210和存储器控制器112从主存储器120取得的指令和/或数据,存储在主高速缓冲存储器222中,用于由指令处理逻辑230处理。一个实施例的主高速缓存控制逻辑220,还将最近和/或频繁使用的指令和/或数据存储在主高速缓冲存储器222中,用于帮助使对主存储器120的访问最少。主高速缓存控制逻辑220可以包括任何合适的电路,而主高速缓冲存储器222可包括任何合适大小的任何合适的存储器。
一个实施例的主高速缓冲存储器222大小相对较小,并且通过主高速缓存控制逻辑220而紧密地耦合到指令处理逻辑230,以允许指令处理逻辑230相对更快地访问存储在主高速缓冲存储器222中的指令和/或数据。一个实施例的辅助高速缓冲存储器212,在大小上比主高速缓冲存储器222大,以相对于主高速缓冲存储器222存储更多的指令和/或数据。一个实施例中,指令处理逻辑230从辅助高速缓冲存储器212访问指令和/或数据所需的时间,比访问主高速缓冲存储器222的时间更长。总线接口逻辑210、辅助高速缓冲存储器212、主高速缓存控制逻辑220和主高速缓冲存储器222,可以根据任何合适的高速缓存方案来存储用于指令处理逻辑230的指令和/或数据。
虽然处理器110已经被描述为包括总线接口逻辑210、辅助高速缓冲存储器212、主高速缓存控制逻辑220和主高速缓冲存储器222,但是处理器110可以包括任何其他合适的存储器子系统,以加载和存储用于指令处理逻辑230的指令和数据。
指令处理逻辑230可以包括用于提取和处理指令和/或数据的任何合适的电路系统。如图2中所示,一个实施例的指令处理逻辑230包括指令流水线,该指令流水线包括提取/译码单元232、重排序缓冲器234、分派/执行单元236和结束单元238。提取/译码单元232被耦合到主高速缓存控制逻辑220。重排序缓冲器234被耦合到提取/译码单元232、分派/执行单元236和结束单元238。分派/执行单元236被耦合到提取/译码单元232和主高速缓存控制逻辑220。结束单元238被耦合到体系结构寄存器240和主高速缓存控制逻辑220。
提取/译码单元232从主高速缓冲存储器222、辅助高速缓冲存储器212和/或主存储器120提取指令。提取/译码单元232可以包括以任何合适的方式提取指令的任何合适的电路系统。一个实施例的提取/译码单元232,根据由提取/译码单元232维护的指令指针来确定下一个将被指令处理逻辑230提取的指令,并通过主高速缓存控制逻辑220、总线接口逻辑210和/或存储器控制器112,从主高速缓冲存储器222、辅助高速缓冲存储器212或主存储器120请求指令。例如,提取/译码单元232可以将下一个指令,确定为程序中的下一个顺序的指令、分支指令的预测或实际目的地、或者诸如异常处理例行程序的新例行程序的开始。
一个实施例的提取/译码单元232,将每个指令译码为一个或多个微操作。一个实施例的提取/译码单元232,将每个指令译码为一个或多个三元组微操作(triadic micro-operation)。三元组微操作包括操作码,并且可以包括多达两个逻辑源操作数和一个逻辑目的地操作数。
一个实施例的提取/译码单元232,对所提取指令的每一个微操作映射所有源并重命名所有目的地。一个实施例的提取/译码单元232将逻辑寄存器引用转变为物理寄存器引用,并在这样做时使用重命名映射来形成物理目的地和源之间的依赖链路(dependency link)。
提取/译码单元232在重排序缓冲器234中分配所提取指令的每一个微操作。当进入重排序缓冲器234中的微操作时,一个实施例的提取/译码单元232为微操作添加状态信息,以准备用于乱序执行。
重排序缓冲器234接收并存储来自提取/译码单元232的每一个微操作。重排序缓冲器234还存储已经由分派/执行单元236执行但还未被结束的微操作。重排序缓冲器234可以包括任何合适的电路系统,在一个实施例中,其包括内容可寻址存储器(CAM)阵列。
分派/执行单元236分派存储在重排序缓冲器234中的微操作以用于执行,并执行被分派的微操作。分派/执行单元236根据这些微操作之间的数据依赖性以及执行资源的可用性,来调度并执行存储在重排序缓冲器234中的微操作,从而支持微操作的乱序执行。分派/执行单元236将执行微操作的任何结果与该微操作一起存储在重排序缓冲器234中。
分派/执行单元236可以包括任何合适的电路系统。一个实施例中,分派/执行单元236包括预留站(reservation station)和多个执行单元,多个执行单元例如一个或多个整数执行单元、一个或多个浮点执行单元以及存储器接口执行单元。预留站扫描重排序缓冲器234中微操作的状态,以确定已准备就绪可被执行的微操作,例如具有可用源操作数的微操作。预留站将每一个准备就绪的微操作分派到合适的可用执行单元,来执行该微操作。每一个执行单元或者直接地或者通过预留站,将执行微操作的任何结果返回给重排序缓冲器234,以将结果和相应的微操作存储在重排序缓冲器234中。
一个实施例的分派/执行单元236,通过使预留站将存储器加载微操作分派到耦合到主高速缓存控制逻辑220的存储器接口执行单元,来执行一个或多个存储器加载微操作,以通过主高速缓存控制逻辑220、总线接口逻辑210和/或存储器控制器112,从主高速缓冲存储器222、辅助高速缓冲存储器212或主存储器120请求数据。
结束单元238结束已执行的微操作。一个实施例的结束单元238,扫描重排序缓冲器234中微操作的状态,从重排序缓冲器234中去除已执行的微操作,并将已执行微操作的结果提交给机器状态,即通过主高速缓存控制逻辑220、总线接口逻辑210和存储器控制器112提交给体系结构寄存器240和主存储器120。一个实施例的结束单元238,根据其各个指令被提取/译码单元232提取和译码的顺序,来结束已执行的微操作。结束单元238可以包括以任何合适的方式来结束已执行的微操作的任何合适的电路系统。
虽然如图2中所示地,在指令处理逻辑230的上下文中描述了本发明,但是本发明可以使用任何其他合适的处理指令的处理器体系结构来实现。
例如,在另一个实施例中,提取/译码单元232可以将微操作分配到例如分派/执行单元236的预留站中,而不分配到重排序缓冲器234中。一旦分派并执行已分配的微操作之后,分派/执行单元236这时就可以立刻将所有结果存储在重排序缓冲器234中,以由结束单元238来结束。
另一个实施例的提取/译码单元232可以不将一个或多个被提取的指令译码为微操作,而是直接处理每一个指令来执行。
隐藏存储器访问等待时间
一个实施例的处理器110根据图3的流程图300,使用存储器控制器112来帮助隐藏访问主存储器120中的等待时间。
存储器控制器112可以包括帮助处理器110隐藏存储器访问等待时间的任何合适的电路系统。如图2所示,一个实施例的存储器控制器112包括:耦合到总线接口逻辑210、图形控制器130和I/O控制器140的存储器控制器接口逻辑202;耦合到存储器控制器接口逻辑202和主存储器120的存储器接口逻辑204;耦合到存储器控制器接口逻辑202的提示缓冲器114;以及耦合到存储器控制器接口逻辑202的写缓冲器206。
存储器控制器接口逻辑202和存储器接口逻辑204每个都可以包括任何合适的电路系统。因为存储器接口逻辑204将要访问主存储器120,所以存储器接口逻辑204的电路可能取决于例如由主存储器120使用的存储器类型。提示缓冲器114和写缓冲器206每个都可以包括任何合适的电路系统,在一个实施例中,每个都包括任何合适大小的内容可寻址存储器(CAM)阵列。
在图3的框302中,指令处理逻辑230请求数据和/或(一个或多个)指令。作为一个例子,提取/译码单元232可以请求指令。作为另一个例子,分派/执行单元236可以请求数据。一个实施例的指令处理逻辑230,通过向主高速缓存控制逻辑220发出合适的存储器提取请求,来从主高速缓冲存储器222请求数据和/或(一个或多个)指令。例如,合适的存储器提取请求包括但不限于可高速缓冲的存储器读请求、可高速缓冲的锁定事务(lock transaction)和不可高速缓冲的存储器读请求。
在框304中,主高速缓存控制逻辑220确定被请求的数据和/或(一个或多个)指令是否存储在主高速缓冲存储器222中。如果是这样,即如果主高速缓冲存储器222发信号通知高速缓存命中(cache hit),则在框306中主高速缓存控制逻辑220将被请求的数据和/或(一个或多个)指令,从主高速缓冲存储器222返回到指令处理逻辑230。如果不是这样,即如果主高速缓冲存储器222发信号通知高速缓存失败(cache miss),则主高速缓存控制逻辑220向总线接口逻辑210发出存储器提取请求。
在框308中,向存储器控制器112发出请求提示。在一个实施例中,主高速缓存控制逻辑220经过耦合到主高速缓存控制逻辑220和存储器控制器112的总线224,向存储器控制器112发出请求提示。一个实施例的总线224,基本上专用于传输请求提示,以帮助加快到存储器控制器112的请求传输。在另一个实施例中,总线接口逻辑210响应于从主高速缓存控制逻辑220接收到存储器提取请求,经过耦合到总线接口逻辑210和存储器控制器112的总线214,向存储器控制器112发出请求提示。一个实施例的总线接口逻辑210,根据预定的优先级方案经过总线214,和其他存储器请求和/或请求提示一起发出该请求提示。另一个实施例的总线接口逻辑210,经过基本上专用于传输请求提示的总线214的一部分,来发出请求提示。
请求提示确定对存储器控制器112所请求的数据和/或(一个或多个)指令。一个实施例的请求提示,包括将该请求确定为请求提示的请求类型,以及被请求的数据和/或(一个或多个)指令所在的地址。一个实施例的请求提示,还可以包括步进(stride)。一个实施例的存储器控制器接口逻辑202接收请求提示,并将投机性优先级赋给该请求提示。
在框310中,总线接口逻辑210确定被请求的数据和/或(一个或多个)指令是否存储在辅助高速缓冲存储器212中。如果是这样,即如果辅助高速缓冲存储器212发信号通知高速缓存命中,则在框312中总线接口逻辑210将被请求的数据和/或(一个或多个)指令通过主高速缓存控制逻辑220,从辅助高速缓冲存储器212返回给指令处理逻辑230。一个实施例的主高速缓存控制逻辑220,也可以可选择地将被请求的数据和/或(一个或多个)指令存储在主高速缓冲存储器222中。一个实施例的总线接口逻辑210,可以可选择地在框312中通知存储器控制器112取消先前向存储器控制器112发出的请求提示,以避免不必要地访问主存储器120。如果被请求的数据和/或(一个或多个)指令没有存储在辅助高速缓冲存储器212中,即如果辅助高速缓冲存储器212发信号通知高速缓存失败,则在框314中,一个实施例的总线接口逻辑210经过总线214,通知存储器控制器112提高请求提示的优先级。另一个实施例中,总线接口逻辑210可以被耦合到总线224,以经过总线224通知存储器控制器112取消请求提示或提高请求提示的优先级。
总线接口逻辑210通知存储器控制器112提高请求提示的优先级,以帮助加快存储器控制器112对请求提示的执行,因为存储器控制器112将要执行存储器提取请求。通知存储器控制器112提高请求提示的优先级是可选择的。一个实施例的存储器控制器接口逻辑202,在框314中将请求提示的优先级从投机级提高到需要级。
在框316中,总线接口逻辑210经过总线214向存储器控制器112发出存储器提取请求。一个实施例的总线接口逻辑210,根据预定的优先级方案经过总线214,和其他存储器请求和/或请求提示一起发出该请求提示。
在框308中,在总线接口逻辑210确定被请求的数据和/或(一个或多个)指令是否存储在辅助高速缓冲存储器212中之前或者同时,主高速缓存控制逻辑220或总线接口逻辑210发出请求提示。这样,存储器控制器112有机会在接收框316的存储器提取请求之前,启动对主存储器120的访问,以提取被请求的数据和/或(一个或多个)指令,从而通过重叠以下两种等待时间来帮助隐藏存储器访问等待时间,即访问主存储器120时引起的等待时间,与例如在检查辅助高速缓冲存储器212以及向存储器控制器112发出存储器提取请求时引起的等待时间。
在框318中,响应于接收请求提示,存储器控制器接口逻辑202确定被请求的数据和/或(一个或多个)指令是否存储在提示缓冲器114中。如果是这样,即如果提示缓冲器114发信号通知命中,则在框320中存储器控制器112完成对请求提示的处理。一个实施例的存储器控制器接口逻辑202,还没有将被请求的数据和/或(一个或多个)指令返回给请求提示的请求者。一个实施例的提示缓冲器114,可能已经由于以前的请求提示而存储了被请求的数据和/或(一个或多个)指令。如果被请求的数据和/或(一个或多个)指令还没有存储在提示缓冲器114中,即如果提示缓冲器114发出信号通知失败,则存储器控制器接口逻辑202此时可以可选择地在提示缓冲器114中,为被请求的数据和/或(一个或多个)指令创建条目,并在框322中确定被请求的数据和/或(一个或多个)指令是否存储在写缓冲器206中。
写缓冲器206存储将被写入主存储器120的数据和/或(一个或多个)指令。例如,响应于从指令处理逻辑230接收存储器写请求,存储器控制器接口逻辑202将存储器写请求的数据和/或(一个或多个)指令写入写缓冲器206。这样,存储器写请求被认为是由指令处理逻辑230完成的,而存储器控制器接口逻辑202可以继续为其他存储器请求来访问主存储器120。然后,例如当访问主存储器120的请求已经变慢,或者当写缓冲器206将被刷新时,存储器控制器接口逻辑202可在以后访问主存储器120来执行存储器写请求。
在框322中,存储器控制器接口逻辑202确定被请求的数据和/或(一个或多个)指令是否存储在写缓冲器206中,因为写缓冲器206可能正存储着没有被存储到主存储器120中的更新的数据和/或(一个或多个)指令。如果被请求的数据和/或(一个或多个)指令已经存储在写缓冲器206中,即如果写缓冲器206发信号通知命中,则在框324中存储器控制器接口逻辑202在提示缓冲器114中创建或更新用于被请求的数据和/或(一个或多个)指令的条目。提示缓冲器114中的条目可以被创建或更新,以用于存储在写缓冲器206中存储的被更新的数据和/或(一个或多个)指令的拷贝,或者用于存储被请求的数据和/或(一个或多个)指令存储在写缓冲器206中的指示。一个实施例的存储器控制器接口逻辑202,还没有将被请求的数据和/或(一个或多个)指令返回给请求提示的请求者。
如果被请求的数据和/或(一个或多个)指令没有存储在写缓冲器206中,即如果写缓冲器206发信号通知失败,则这时存储器控制器接口逻辑202可以可选择地在提示缓冲器114中,为被请求的数据和/或(一个或多个)指令创建条目。
另一个实施例的存储器控制器接口逻辑202,在例如存储器控制器接口逻辑202使提示缓冲器114中、用于先前的请求提示的、响应于存储器提取请求而曾经被返回的被请求的数据和/或(一个或多个)指令无效时,可以在框318中可选择地跳过对提示缓冲器114的检查。另一个实施例的存储器控制器接口逻辑202,在例如存储器控制器112不包含写缓冲器206的情况下,可以在框322中可选择地跳过对写缓冲器206的检查。
如果被请求的数据和/或(一个或多个)指令没有存储在提示缓冲器114(如果被检查的话)或写缓冲器206(如果被检查的话)中,则在框326中,存储器控制器接口逻辑202根据预定的优先级方案访问主存储器120,以提取被请求的数据和/或(一个或多个)指令。
因为存储器控制器接口逻辑202可以从例如指令处理逻辑230、图形控制器130和/或I/O控制器140接收多个存储器请求和请求提示,所以一个实施例的存储器控制器接口逻辑202根据预定的优先级方案,在待解决的存储器请求和请求提示之间或之中仲裁,以访问主存储器120。作为一个例子,存储器控制器接口逻辑202可以将来源于图形控制器130的存储器提取请求,排序为优先于例如来源于指令处理逻辑230的请求提示和存储器提取请求。作为另一个例子,存储器控制器接口逻辑202可以将来源于指令处理逻辑230的存储器提取请求,排序为优先于来源于指令处理逻辑230的需要请求提示,并且可以将来源于指令处理逻辑230的需要请求提示,排序为优先于来源于指令处理逻辑230的投机性请求提示。通过将存储器提取请求排序为优先于请求提示,存储器控制器接口逻辑202通过在如果不这样主存储器120就将空闲时,才为请求提示访问主存储器120,来帮助减少平均存储器访问等待时间。因此,存储器控制器接口逻辑202帮助分散对主存储器120的访问,并因此而更加充分地使用访问主存储器120的带宽。分散对主存储器120的访问还可以帮助最小化与共享主存储器120的任何其他设备之间的总线冲突。
当存储器控制器接口逻辑202确定,可以为请求提示来访问主存储器120以提取被请求的数据和/或(一个或多个)指令时,存储器控制器接口逻辑202向存储器接口逻辑204发出请求提示。存储器接口逻辑204根据请求提示访问主存储器120,以提取被请求的数据和/或(一个或多个)指令。存储器接口逻辑204将所提取的数据和/或(一个或多个)指令返回给存储器控制器接口逻辑202,并且存储器控制器接口逻辑202在框328中,在提示缓冲器114中创建或更新被请求的数据和/或(一个或多个)指令的条目,以存储从主存储器120取得的被请求的数据和/或(一个或多个)指令的拷贝。一个实施例的存储器控制器接口逻辑202,还没有将被请求的数据和/或(一个或多个)指令返回给请求提示的请求者。
响应于接收在框316中发出的存储器提取请求,存储器控制器接口逻辑202在框330中确定被请求的数据和/或(一个或多个)指令是否存储在写缓冲器206中。一个实施例的存储器控制器接口逻辑202,可以直接在框330中检查写缓冲器206。一个实施例的存储器控制器接口逻辑202,在框330中还可以检查提示缓冲器114,其可指示被请求的数据和/或(一个或多个)指令是否存储在写缓冲器206中。如果被请求的数据和/或(一个或多个)指令存储在写缓冲器206中,则存储器控制器接口逻辑202在框332中通过总线接口逻辑210和主高速缓存控制逻辑220,将被请求的数据和/或(一个或多个)指令从写缓冲器206返回到指令处理逻辑230。一个实施例的总线接口逻辑210,还可以可选择地将被请求的数据和/或(一个或多个)指令存储在辅助高速缓冲存储器212中。一个实施例的主高速缓存控制逻辑220,也可以可选择地将被请求的数据和/或(一个或多个)指令存储在主高速缓冲存储器222中。一个实施例的存储器控制器接口逻辑202在框332中,还可以可选择地取消请求提示和/或使提示缓冲器114的任何相应条目无效。
如果被请求的数据和/或(一个或多个)指令没有存储在写缓冲器206中,即如果写缓冲器206发信号通知失败,则存储器控制器接口逻辑202在框334中确定被请求的数据和/或(一个或多个)指令是否存储在提示缓冲器114中。如果是这样,即如果提示缓冲器114发信号通知命中,则存储器控制器接口逻辑202在框336中通过总线接口逻辑210和主高速缓存控制逻辑220,将被请求的数据和/或(一个或多个)指令从提示缓冲器114返回到指令处理逻辑230。一个实施例的总线接口逻辑210,还可以可选择地将被请求的数据和/或(一个或多个)指令存储在辅助高速缓冲存储器212中。一个实施例的主高速缓存控制逻辑220,也可以可选择地将被请求的数据和/或(一个或多个)指令存储在主高速缓冲存储器222中。一个实施例的存储器控制器接口逻辑202在框336中,还可以可选择地使提示缓冲器114的任何相应条目无效。
如果被请求的数据和/或(一个或多个)指令没有存储在提示缓冲器114中,即如果提示缓冲器114发出信号通知失败,存储器控制器接口逻辑202在框338中根据预定的优先级方案访问主存储器120,以提取被请求的数据和/或(一个或多个)指令。一个实施例的存储器控制器接口逻辑202在框338中,还可以可选择地取消相应的请求提示和/或使提示缓冲器114中的任何相应条目无效。
当存储器控制器接口逻辑202确定可以根据存储器提取请求来访问主存储器120,以提取被请求的数据和/或(一个或多个)指令时,存储器控制器接口逻辑202向存储器接口逻辑204发出存储器提取请求。存储器接口逻辑204根据存储器提取请求访问主存储器120,以提取被请求的数据和/或(一个或多个)指令。存储器接口逻辑204将被提取的数据和/或(一个或多个)指令返回给存储器控制器接口逻辑202,并且存储器控制器接口逻辑202在框340中通过总线接口逻辑210和主高速缓存控制逻辑220,将被请求的数据和/或(一个或多个)指令从主存储器120返回到指令处理逻辑230。一个实施例的存储器控制器接口逻辑202,可以可选择地将被请求的数据和/或(一个或多个)指令存储在提示缓冲器114中。一个实施例的总线接口逻辑210,还可以可选择地将被请求的数据和/或(一个或多个)指令存储在辅助高速缓冲存储器212中。一个实施例的主高速缓存控制逻辑220,还可以可选择地将被请求的数据和/或(一个或多个)指令存储在主高速缓冲存储器222中。
在另一个实施例中,其中提示缓冲器114可以存储被请求的数据和/或(一个或多个)指令存储在写缓冲器206中的指示,该实施例中的存储器控制器接口逻辑202可以可选择地先检查提示缓冲器114,然后,只有在提示缓冲器114中的相应条目指示被请求的数据和/或(一个或多个)指令存储在写缓冲器206中时,才检查写缓冲器206。另一个实施例中,在例如存储器控制器112不包含写缓冲器206的情况下,或者在存储器控制器接口逻辑202每次在写缓冲器206中更新或存储相应的数据和/或(一个或多个)指令时,存储器控制器接口逻辑202都更新提示缓冲器114的情况下,存储器控制器接口逻辑202可以可选择地跳过对写缓冲器206的检查。
在一个实施例中,其中提示缓冲器114可以存储被请求的数据和/或(一个或多个)指令存储在写缓冲器206中的指示,该实施例的存储器控制器接口逻辑202根据图4中图示的流程图400,来解决对写缓冲器206中的一个或多个条目的刷新。
在图4的框402中,存储器控制器接口逻辑202确定写缓冲器206中的一个或多个条目是否将被刷新到主存储器120中。存储器控制器接口逻辑202可以由于以下原因而确定写缓冲器206中的一个或多个条目将被刷新:例如因为写缓冲器206存储了至少预定数量的条目,因为对主存储器120的访问已经变慢,和/或因为在写缓冲器206中的数据和/或(一个或多个)指令已经被更新,而对所述数据和/或(一个或多个)指令的存储器提取请求正在等待解决。一个实施例中,如果存储器控制器接口逻辑202确定写缓冲器206中的任何条目将被刷新,则该实施例中的存储器控制器接口逻辑202就确定写缓冲器206中的所有条目都将被刷新。
如果写缓冲器206中的一个或多个条目将被刷新,则存储器控制器接口逻辑202在框404中确定,提示缓冲器114是否具有与写缓冲器206中将被刷新的条目相对应的任何条目。如果是这样,则存储器控制器接口逻辑202用来自写缓冲器206的相应的被更新的数据和/或(一个或多个)指令,来更新提示缓冲器114中的每一个相应的条目。
无论提示缓冲器114是否具有与写缓冲器206中将被刷新的条目相对应的任何条目,存储器控制器接口逻辑202都用来自写缓冲器206中每一个将被刷新的条目的被更新的数据和/或(一个或多个)指令,来更新主存储器120。
另一个实施例中,其中提示缓冲器114可以存储被请求的数据和/或(一个或多个)指令存储在写缓冲器206中的指示,存储器控制器接口逻辑202通过以下来解决对写缓冲器206中一个或多个条目的刷新:将写缓冲器206中将被刷新的一个或多个条目写入主存储器120,然后为提示缓冲器114中的相应条目发出请求提示,以访问主存储器120来提取被请求的数据和/或(一个或多个)指令。
图5图示了一个实施例的提示缓冲器114的条目500。提示缓冲器114可以存储任何合适数量的条目。
条目500包括地址字段502和数据字段504。条目500还包括多种控制字段,例如写缓冲器状态标记字段506、请求提示状态标记字段508、完成标记字段510和有效标记字段512。
地址字段502用于存储被请求的数据和/或(一个或多个)指令所在的地址。数据字段504用于将以前从写缓冲器206或主存储器120提取的数据和/或(一个或多个)指令存储到地址字段502的地址。地址字段502和数据字段504每一个都可以具有任何合适的大小。
写缓冲器状态标记字段506指示,由对应于条目500的请求提示所请求的数据和/或(一个或多个)指令是否存储在写缓冲器206中。一个实施例的存储器控制器接口逻辑202设置写缓冲器状态标记字段506,以在存储器控制器接口逻辑202确定写缓冲器206中的被请求的数据和/或(一个或多个)指令时,指示写缓冲器命中。在例如存储器控制器112不包含写缓冲器206的情况下,或者在存储器控制器接口逻辑202每一次更新写缓冲器206之后都更新提示缓冲器114中相应的数据和/或(一个或多个)指令的情况下,可以不使用写缓冲器状态标记字段506。一个实施例的写缓冲器状态标记字段506存储一位。
一个实施例的存储器控制器接口逻辑202检查写缓冲器状态标记字段506,以在存储器提取请求得出条目命中时,确定条目500的被请求的数据和/或(一个或多个)指令是存储在数据字段504中还是存储在写缓冲器206中。
请求提示状态标记字段508指示对应于条目500的请求提示是否已经被存储器控制器接口逻辑202执行。一个实施例的存储器控制器接口逻辑202设置请求提示状态标记字段508,以在提示缓冲器114中创建条目500时指示待解决。一个实施例的存储器控制器接口逻辑202设置请求提示状态标记字段508,以在存储器控制器接口逻辑202将用于相应请求提示的被请求的数据和/或(一个或多个)指令存储在数据字段504中时,或者在其确定写缓冲器206中的被请求的数据和/或(一个或多个)指令时,来指示已完成。在例如存储器控制器接口逻辑202只在写缓冲器206中提取被请求的数据和/或(一个或多个)指令,或者确定被请求的数据和/或(一个或多个)指令之后,才在提示缓冲器114中创建条目的情况下,可以不使用请求提示状态标记字段508。一个实施例的请求提示状态标记字段508存储一位。
一个实施例的存储器控制器接口逻辑202检查请求提示状态标记字段508,以在存储器提取请求产生条目500命中的结果时,确定相应请求提示的被请求的数据和/或(一个或多个)指令已经存储在数据字段504中或者在写缓冲器206中被确定时。
完成标记字段510指示条目500的被请求的数据和/或(一个或多个)指令是否响应于存储器提取请求而已经被返回。一个实施例的存储器控制器接口逻辑202设置完成标记字段510,以在存储器控制器接口逻辑202返回存储器提取请求的被请求的数据和/或(一个或多个)指令(这会产生对条目500的命中结果)时,指示已完成。一个实施例的完成标记字段510存储一位。
一个实施例的存储器控制器接口逻辑202检查完成标记字段510,例如用来无效条目500。
有效标记字段512指示提示缓冲器114中的条目500是有效条目还是无效条目。一个实施例的存储器控制器接口逻辑202设置有效标记字段512,以当在提示缓冲器114中创建条目500时指示有效,而无论对应于请求提示的被请求的数据和/或(一个或多个)指令是否已经被提取或者在写缓冲器206中被确定。一个实施例的存储器控制器接口逻辑202设置有效标记字段512,以在例如相应的请求提示还没有提取被请求的数据和/或(一个或多个)指令并且已经被取消时,和/或在被请求的数据和/或(一个或多个)指令已经因为存储器提取请求而被返回(这会产生对条目500的命中结果)时,指示无效。一个实施例的存储器控制器接口逻辑202可以通过周期性地检查完成标记字段510,和/或在将在提示缓冲器114中创建新条目时,尝试无效条目500。
一个实施例的存储器控制器接口逻辑202检查有效标记字段512,以保证在存储器提取请求导致对条目500的命中结果时条目500是有效的。
因为存储器控制器接口逻辑202可以对于以下情况而在提示缓冲器114中存储一个或多个条目,即存储器控制器112已经有一段预定的时间没有接收到所述条目的相应的存储器提取请求,或者根本就不能接收所述条目的相应的存储器提取请求,所以一个实施例的存储器控制器接口逻辑202可以将这种条目的被请求的数据和/或(一个或多个)指令返回到总线接口逻辑210,以将被请求的数据和/或(一个或多个)指令存储在辅助高速缓冲存储器212和/或主高速缓冲存储器222中。这样,存储器控制器接口逻辑202可以在提示缓冲器114中继续创建新条目,并且还可以根据提示缓冲器114中任何已经被排除的条目来请求被请求的数据和/或(一个或多个)指令。
在另一个实施例中,图1和图2中的处理器100根据图6的流程图600,使用存储器控制器112来帮助隐藏在访问主存储器120中的等待时间。流程图600中的框602、604、606、608、610、612、614、616、618、620、622、624、626、628、630、632、634、636、638和640,分别对应于图3的流程图300中的框302、308、304、306、310、312、314、316、318、320、322、324、326、328、330、332、334、336、338和340。
在主高速缓冲存储器222失败之后,在图3的框308中发出请求提示,而流程图600中则不同,在主高速缓存控制逻辑220于框606中确定被请求的数据和/或(一个或多个)指令是否存储在主高速缓冲存储器222中之前或者同时,主高速缓存控制逻辑220就在框604中向存储器控制器112发出请求提示。这样,存储器控制器112具有更长的窗口机会来启动对主存储器120的访问,以在接收存储器提取请求之前提取被请求的数据和/或(一个或多个)指令。如果主高速缓冲存储器222发信号通知高速缓存命中,则在框608中主高速缓存控制逻辑220将被请求的数据和/或(一个或多个)指令从主高速缓冲存储器222返回给指令处理逻辑230。一个实施例的主高速缓存控制逻辑220,在框608中可以可选择地通知存储器控制器112,来取消以前发给存储器控制器112的请求提示,从而避免不必要地访问主存储器120。
一个实施例的指令处理逻辑230,在框604中可以向存储器控制器112发出请求提示。一个实施例的处理器110可以包括在指令处理逻辑230和存储器控制器112之间耦合的总线,该总线基本上专用于传输请求提示,以帮助加速到存储器控制器112的请求传输。另一个实施例中,指令处理逻辑230可以通过主高速缓存控制逻辑220和总线接口逻辑210发出请求提示。
一个实施例的处理器110可以通过向存储器控制器112发出预提取请求提示而实现预提取功能,以帮助隐藏存储器访问等待时间。一个实施例的处理器110,可以发出合适的请求提示,以在例如指令预提取、高速缓存线分访问(cache line split access)以及具有统一步进的紧凑循环(例如阵列初始化和存储器拷贝)的情况下,实现下一个高速缓存线预提取。一个实施例的处理器110还可以从例如微码或硬件步进分析器发出预提取请求提示。
因为处理器110通过使访问主存储器120中引起的等待时间与内部引起的其他等待时间重叠,来帮助隐藏存储器访问等待时间,并且可以通过分散对主存储器120的访问来帮助减少平均存储器访问等待时间,所以处理器110可以用相对增大的吞吐量来处理指令,而不必使用更大的缓冲器、队列和/或高速缓冲存储器。
虽然是在处理器110的上下文中描述的,但是一个实施例的图1和图2的图形控制器130和/或I/O控制器140,可以与处理器110类似地来使用存储器控制器112,以帮助隐藏访问主存储器120中的等待时间。
在上面的描述中,已经参照其具体示例实施例描述了本发明。但是很清楚,可以在不脱离由所附权利要求限定的更宽的精神和访问的情况下,对本发明做出多种改进和改变。因此,说明书和附图应该被看作是说明性的而不是限制性的。

Claims (22)

1.一种方法,包括:
在确定被请求的数据和/或一个或多个指令是否存储在第一存储器中之前或者同时,发出请求提示;
响应于所述请求提示,来访问第二存储器,以提取数据和/或一个或多个指令;
将从所述第二存储器取得的数据和/或一个或多个指令存储在缓冲器中;以及
如果所述被请求的数据和/或一个或多个指令不在所述第一存储器中,则从所述缓冲器返回所述数据和/或(一个或多个)指令。
2.如权利要求1所述的方法,包括响应于所述请求提示,而确定所述被请求的数据和/或一个或多个指令是否存储在写缓冲器中。
3.如权利要求1所述的方法,包括在发出所述请求提示之前,确定所述被请求的数据和/或一个或多个指令是否存储在第三存储器中,
其中所述发出包括,在所述被请求的数据和/或一个或多个指令不在所述第三存储器中时发出所述请求提示。
4.如权利要求1所述的方法,其中,所述返回包括发出对所述被请求的数据和/或一个或多个指令的存储器提取请求。
5.如权利要求4所述的方法,其中,所述返回包括响应于所述存储器提取请求,而确定所述被请求的数据和/或一个或多个指令是否在写缓冲器中。
6.一种装置,包括:
第一存储器;
耦合到所述第一存储器的逻辑,用于在确定被请求的数据和/或一个或多个指令是否在所述第一存储器中之前或者同时发出请求提示,如果所述被请求的数据和/或一个或多个指令不在所述第一存储器中时,所述逻辑发出存储器提取请求;以及
耦合到所述逻辑并包括缓冲器的存储器控制器,所述存储器控制器接收所述请求提示,并响应于所述请求提示而访问第二存储器来提取数据和/或一个或多个指令,并将所取得的数据和/或一个或多个指令存储在所述缓冲器中,所述存储器控制器响应于所述存储器提取请求,而将所述所取得的数据和/或一个或多个指令从所述缓冲器返回到所述逻辑。
7.如权利要求6所述的装置,其中,所述第一存储器包括主高速缓冲存储器。
8.如权利要求6所述的装置,其中,所述第一存储器包括辅助高速缓冲存储器。
9.如权利要求6所述的装置,包括耦合到所述逻辑的第三存储器,所述逻辑用于确定所述被请求的数据和/或一个或多个指令是否在所述第三存储器中,并用于在所述被请求的数据和/或一个或多个指令不在所述第三存储器中时发出所述请求提示。
10.如权利要求6所述的装置,其中,所述存储器控制器包括写缓冲器,用于存储将被写入所述第二存储器的数据和/或一个或多个指令,所述存储器控制器用于响应于所述请求提示,而确定所述被请求的数据和/或一个或多个指令是否存储在所述写缓冲器中。
11.如权利要求6所述的装置,其中,所述存储器控制器包括写缓冲器,用于存储将被写入所述第二存储器的数据和/或一个或多个指令,所述存储器控制器用于响应于所述存储器提取请求,而确定所述被请求的数据和/或一个或多个指令是否存储在所述写缓冲器中。
12.如权利要求6所述的装置,其中,所述逻辑包括用于发出所述请求提示的指令处理逻辑。
13.如权利要求6所述的装置,其中,所述逻辑包括用于发出所述请求提示的主高速缓存控制逻辑。
14.一种系统,包括:
主存储器;
高速缓冲存储器;
耦合到所述高速缓冲存储器的逻辑,用于请求数据和/或一个或多个指令,以及用于在确定所述被请求的数据和/或一个或多个指令是否在高速缓冲存储器中之前或者同时发出请求提示,如果所述被请求的数据和/或一个或多个指令不在所述高速缓冲存储器中,则所述逻辑发出存储器提取请求;以及
存储器控制器,耦合到所述逻辑和所述主存储器并且包括缓冲器,所述存储器控制器接收所述请求提示,并响应于所述请求提示而访问所述主存储器来提取数据和/或一个或多个指令,并将所取得的数据和/或一个或多个指令存储在所述缓冲器中,所述存储器控制器响应于所述存储器提取请求,而将所述所取得的数据和/或一个或多个指令从所述缓冲器返回到所述逻辑。
15.如权利要求14所述的系统,其中,所述高速缓冲存储器包括主高速缓冲存储器。
16.如权利要求14所述的系统,其中,所述高速缓冲存储器包括辅助高速缓冲存储器。
17.如权利要求14所述的系统,其中,所述高速缓冲存储器包括主高速缓冲存储器和辅助高速缓冲存储器,所述逻辑确定所述被请求的数据和/或一个或多个指令是否在所述主高速缓冲存储器中,并且如果所述被请求的数据和/或一个或多个指令不在所述主高速缓冲存储器中,则发出所述请求提示。
18.如权利要求14所述的系统,其中,所述存储器控制器包括写缓冲器,用于存储将被写入所述主存储器的数据和/或一个或多个指令,所述存储器控制器响应于所述请求提示,而确定所述被请求的数据和/或一个或多个指令是否存储在所述写缓冲器中。
19.如权利要求14所述的系统,其中,所述存储器控制器包括写缓冲器,用于存储将被写入所述主存储器的数据和/或一个或多个指令,所述存储器控制器响应于所述存储器提取请求,而确定所述被请求的数据和/或一个或多个指令是否存储在所述写缓冲器中。
20.如权利要求14所述的系统,其中,所述逻辑包括用于发出所述请求提示的指令处理逻辑。
21.如权利要求14所述的系统,其中,所述逻辑包括用于发出所述请求提示的主高速缓存控制逻辑。
22.如权利要求14所述的系统,其中,所述高速缓冲存储器、所述逻辑以及所述存储器控制器被集成到一起。
CNB028190696A 2001-09-28 2002-09-26 利用提示缓冲器隐藏存储器访问等待时间的方法和装置 Expired - Fee Related CN1324459C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/966,587 US6718440B2 (en) 2001-09-28 2001-09-28 Memory access latency hiding with hint buffer
US09/966,587 2001-09-28

Publications (2)

Publication Number Publication Date
CN1561480A true CN1561480A (zh) 2005-01-05
CN1324459C CN1324459C (zh) 2007-07-04

Family

ID=25511611

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028190696A Expired - Fee Related CN1324459C (zh) 2001-09-28 2002-09-26 利用提示缓冲器隐藏存储器访问等待时间的方法和装置

Country Status (6)

Country Link
US (1) US6718440B2 (zh)
KR (1) KR20040045035A (zh)
CN (1) CN1324459C (zh)
GB (1) GB2397918B (zh)
TW (1) TWI250411B (zh)
WO (1) WO2003029962A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056893A1 (en) * 2005-11-18 2007-05-24 Intel Corporation Latency hiding of traces using block coloring
US8037466B2 (en) 2006-12-29 2011-10-11 Intel Corporation Method and apparatus for merging critical sections
CN1984024B (zh) * 2005-09-30 2011-11-02 英特尔公司 用于低等待时间视听传输的方法和系统
CN103262027A (zh) * 2010-10-12 2013-08-21 索夫特机械公司 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
CN103870243A (zh) * 2008-10-30 2014-06-18 英特尔公司 有效提升指令融合的技术
US9921850B2 (en) 2010-10-12 2018-03-20 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6791555B1 (en) * 2000-06-23 2004-09-14 Micron Technology, Inc. Apparatus and method for distributed memory control in a graphics processing system
US7133972B2 (en) * 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7200024B2 (en) * 2002-08-02 2007-04-03 Micron Technology, Inc. System and method for optically interconnecting memory devices
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7254331B2 (en) * 2002-08-09 2007-08-07 Micron Technology, Inc. System and method for multiple bit optical data transmission in memory systems
US7149874B2 (en) * 2002-08-16 2006-12-12 Micron Technology, Inc. Memory hub bypass circuit and method
US6820181B2 (en) * 2002-08-29 2004-11-16 Micron Technology, Inc. Method and system for controlling memory accesses to memory modules having a memory hub architecture
US7836252B2 (en) * 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7102907B2 (en) * 2002-09-09 2006-09-05 Micron Technology, Inc. Wavelength division multiplexed memory module, memory system and method
TWI229290B (en) * 2002-09-11 2005-03-11 Sunplus Technology Co Ltd Storage structure and the method capable of storing and forwarding instructions and data
US6910104B2 (en) * 2002-09-20 2005-06-21 International Business Machines Corporation Icache-based value prediction mechanism
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7143225B1 (en) * 2003-04-29 2006-11-28 Advanced Micro Devices, Inc. Apparatus and method for viewing data processor bus transactions on address pins during memory idle cycles
US7245145B2 (en) * 2003-06-11 2007-07-17 Micron Technology, Inc. Memory module and method having improved signal routing topology
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7260685B2 (en) * 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7389364B2 (en) * 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US7210059B2 (en) * 2003-08-19 2007-04-24 Micron Technology, Inc. System and method for on-board diagnostics of memory modules
US7133991B2 (en) * 2003-08-20 2006-11-07 Micron Technology, Inc. Method and system for capturing and bypassing memory transactions in a hub-based memory system
US20050050237A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
US7136958B2 (en) 2003-08-28 2006-11-14 Micron Technology, Inc. Multiple processor system and method including multiple memory hub modules
US7310752B2 (en) 2003-09-12 2007-12-18 Micron Technology, Inc. System and method for on-board timing margin testing of memory modules
US7194593B2 (en) * 2003-09-18 2007-03-20 Micron Technology, Inc. Memory hub with integrated non-volatile memory
US7120743B2 (en) 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7188219B2 (en) * 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7412574B2 (en) * 2004-02-05 2008-08-12 Micron Technology, Inc. System and method for arbitration of memory responses in a hub-based memory system
US7181584B2 (en) * 2004-02-05 2007-02-20 Micron Technology, Inc. Dynamic command and/or address mirroring system and method for memory modules
US7788451B2 (en) 2004-02-05 2010-08-31 Micron Technology, Inc. Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system
US7366864B2 (en) 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
US7257683B2 (en) 2004-03-24 2007-08-14 Micron Technology, Inc. Memory arbitration system and method having an arbitration packet protocol
US7120723B2 (en) * 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
US7213082B2 (en) * 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7447240B2 (en) * 2004-03-29 2008-11-04 Micron Technology, Inc. Method and system for synchronizing communications links in a hub-based memory system
US6980042B2 (en) * 2004-04-05 2005-12-27 Micron Technology, Inc. Delay line synchronizer apparatus and method
US7590797B2 (en) * 2004-04-08 2009-09-15 Micron Technology, Inc. System and method for optimizing interconnections of components in a multichip memory module
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7222213B2 (en) * 2004-05-17 2007-05-22 Micron Technology, Inc. System and method for communicating the synchronization status of memory modules during initialization of the memory modules
US7363419B2 (en) 2004-05-28 2008-04-22 Micron Technology, Inc. Method and system for terminating write commands in a hub-based memory system
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US7310748B2 (en) * 2004-06-04 2007-12-18 Micron Technology, Inc. Memory hub tester interface and method for use thereof
US7589738B2 (en) * 2004-07-14 2009-09-15 Integrated Device Technology, Inc. Cache memory management system and method
US20060031565A1 (en) * 2004-07-16 2006-02-09 Sundar Iyer High speed packet-buffering system
US7392331B2 (en) * 2004-08-31 2008-06-24 Micron Technology, Inc. System and method for transmitting data packets in a computer system having a memory hub architecture
US20060168407A1 (en) * 2005-01-26 2006-07-27 Micron Technology, Inc. Memory hub system and method having large virtual page size
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US20090271578A1 (en) * 2008-04-23 2009-10-29 Barrett Wayne M Reducing Memory Fetch Latency Using Next Fetch Hint
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US20130159602A1 (en) * 2011-12-20 2013-06-20 Bae Systems Controls, Inc. Unified memory architecture
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
GB2551381B (en) 2016-06-16 2019-07-24 Mips Tech Llc Method of fetching instructions in an instruction fetch unit

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04233642A (ja) * 1990-07-27 1992-08-21 Dell Usa Corp キャッシュアクセスと並列的にメモリアクセスを行なうプロセッサ及びそれに用いられる方法
US5813030A (en) * 1991-12-31 1998-09-22 Compaq Computer Corp. Cache memory system with simultaneous access of cache and main memories
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5822790A (en) * 1997-02-07 1998-10-13 Sun Microsystems, Inc. Voting data prefetch engine
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6237064B1 (en) 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
GB2348024B (en) * 1999-03-16 2003-06-25 Ibm Cache memory systems

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1984024B (zh) * 2005-09-30 2011-11-02 英特尔公司 用于低等待时间视听传输的方法和系统
WO2007056893A1 (en) * 2005-11-18 2007-05-24 Intel Corporation Latency hiding of traces using block coloring
US8769513B2 (en) 2005-11-18 2014-07-01 Intel Corporation Latency hiding of traces using block coloring
US8037466B2 (en) 2006-12-29 2011-10-11 Intel Corporation Method and apparatus for merging critical sections
CN103870243A (zh) * 2008-10-30 2014-06-18 英特尔公司 有效提升指令融合的技术
US9690591B2 (en) 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
US10649783B2 (en) 2008-10-30 2020-05-12 Intel Corporation Multicore system for fusing instructions queued during a dynamically adjustable time window
CN103262027A (zh) * 2010-10-12 2013-08-21 索夫特机械公司 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
CN103262027B (zh) * 2010-10-12 2016-07-20 索夫特机械公司 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
US9733944B2 (en) 2010-10-12 2017-08-15 Intel Corporation Instruction sequence buffer to store branches having reliably predictable instruction sequences
US9921850B2 (en) 2010-10-12 2018-03-20 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency
US10083041B2 (en) 2010-10-12 2018-09-25 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency

Also Published As

Publication number Publication date
GB2397918A (en) 2004-08-04
CN1324459C (zh) 2007-07-04
US20030065887A1 (en) 2003-04-03
TWI250411B (en) 2006-03-01
WO2003029962A1 (en) 2003-04-10
GB2397918B (en) 2005-03-30
US6718440B2 (en) 2004-04-06
GB0408666D0 (en) 2004-05-19
KR20040045035A (ko) 2004-05-31

Similar Documents

Publication Publication Date Title
CN1324459C (zh) 利用提示缓冲器隐藏存储器访问等待时间的方法和装置
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
TWI294573B (en) Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions
CN1269042C (zh) 具有预取指令的微处理器及预取至其高速缓存的方法
CN1310155C (zh) 用于先行执行期间的存储器通信的装置
EP2542973B1 (en) Gpu support for garbage collection
US8035648B1 (en) Runahead execution for graphics processing units
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
CN1248118C (zh) 以推测方式使高速缓存中的缓存行失效的方法及系统
CN108139977B (zh) 具有可编程预取器的处理器
US6643745B1 (en) Method and apparatus for prefetching data into cache
JP5030796B2 (ja) データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法
US6609192B1 (en) System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US7895399B2 (en) Computer system and control method for controlling processor execution of a prefetech command
CN1790256A (zh) 用于微处理器的分支前瞻预取
US20030009622A1 (en) Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
CN1690952A (zh) 根据多组高速缓存组预测来选择执行的指令的装置和方法
CN1864131A (zh) 处置在基于跟踪缓存的处理器中的异常指令的系统及方法
CN1625733A (zh) 将装载操作的猜测结果与寄存器值相连接的系统与方法
CN1196997C (zh) 不按序执行指令的装置和检测不按序指令的方法
US5898852A (en) Load instruction steering in a dual data cache microarchitecture
US8281078B2 (en) Multi-level cache prefetch
CN1806226A (zh) 具有重放机制的加载存储单元
CN1784655A (zh) 用于在数据推测微处理器中操作重放的系统及方法
KR20150096226A (ko) 멀티미디어 데이터 프로세싱 방법 및 그에 따른 멀티미디어 데이터 프로세싱 시스템

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070704

Termination date: 20100926