CN1797371A - 用于基于填充缓冲器命中来预取的装置和方法 - Google Patents
用于基于填充缓冲器命中来预取的装置和方法 Download PDFInfo
- Publication number
- CN1797371A CN1797371A CNA2005101328688A CN200510132868A CN1797371A CN 1797371 A CN1797371 A CN 1797371A CN A2005101328688 A CNA2005101328688 A CN A2005101328688A CN 200510132868 A CN200510132868 A CN 200510132868A CN 1797371 A CN1797371 A CN 1797371A
- Authority
- CN
- China
- Prior art keywords
- processor
- buffer memory
- request
- address
- buffer
- 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
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
-
- 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
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
公开了用于基于填充缓冲器命中来预取的装置和方法。在一个实施方案中,处理器包括缓存填充缓冲器和预取器。缓存填充缓冲器具有许多填充缓冲器条目位置。每个加载条目位置存储加载条目,包括载入缓存的数据的地址。如果缓存填充缓冲器条目中的一个对应于第一地址,则响应于需要来自第一地址的数据的指令,预取器生成从第二地址预取数据的请求。
Description
技术领域
本公开涉及数据处理装置领域,并且特别地,涉及在数据处理装置中预取数据(prefetching data)的领域。
背景技术
在典型的数据处理装置中,处理指令所需要的数据储存在存储器中。从存储器取数据的延迟可能增加执行该指令所需的时间,从而使性能降低。为了改善性能,已经开发了在需要数据之前就推测性地取所述数据的技术。这种预取技术涉及在存储器层次结构中将数据移动得更靠近处理器,例如,把数据从主系统存储器移动到缓存(cache),以便如果处理指令需要所述数据时,将花费更少的时间来取它。
但是预取处理指令并不需要的数据是对时间和资源的浪费。因此,在实现预取时重要的考虑包括:确定预取什么数据以及在何时预取它。例如,一种方法是使用预取电路来识别(identify)并储存特定指令的连续迭代所需要的数据的地址之间的典型距离。然后,对该指令的解码被用来触发从存储器位置预取数据,所述存储器位置与当前需要来自其的数据的地址相距所述典型距离。
发明内容
本发明公开了用于基于填充缓冲器命中来预取的装置和方法。在一个实施方案中,处理器包括缓存填充缓冲器和预取器。缓存填充缓冲器具有许多填充缓冲器条目位置。每个加载条目位置存储加载条目,包括载入缓存的数据的地址。如果缓存填充缓冲器条目中的一个对应于第一地址,则响应于需要来自第一地址的数据的指令,预取器生成从第二地址预取数据的请求。
根据本发明的一个方面,提供了一种用于基于缓存填充缓冲器命中来预取的处理器,所述处理器包括:具有多个填充缓冲器条目位置的缓存填充缓冲器,以及,预取器,如果所述缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的指令,所述预取器生成从第二地址预取数据的请求。
根据本发明的另一个方面,提供了一种用于基于缓存填充缓冲器命中来预取的处理器,所述处理器包括:具有多个填充缓冲器条目位置的缓存填充缓冲器;储存配置参数N的寄存器;以及,预取器,如果所述缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的第N条指令,所述预取器产生从第二地址预取数据的请求。
根据本发明的又一个方面,提供了一种用于基于缓存填充缓冲器命中来预取的系统,所述系统包括:动态随机访问存储器;耦合到所述动态随机访问存储器的第二层缓存;耦合到所述第二层缓存的第一处理器,所述第一处理器包括:具有第一批多个填充缓冲器条目位置来填充第一个第一层缓存的第一缓存填充缓冲器;以及,第一预取器,如果所述第一缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述第一批多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的所述第一处理器,所述第一预取器产生从第二地址预取数据的第一请求;以及,耦合到所述第二层缓存的第二处理器,所述第二处理器包括:具有第二批多个填充缓冲器条目位置来填充第二个第一层缓存的第二缓存填充缓冲器;以及,第二预取器,如果所述第二缓存填充缓冲器包括对应于第三地址的条目,所述对应于第三地址的条目在所述第二批多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第三地址的数据的所述第二处理器,所述第二预取器产生从第四地址预取数据的第二请求。
根据本发明的再一个方面,提供了一种用于基于缓存填充缓冲器命中来预取的方法,所述方法包括:接收需要来自第一地址的数据的指令;以及,如果对应于所述第一地址的条目被储存在缓存填充缓冲器中,则产生从第二地址预取数据的请求。
附图说明
在附图中通过举例而非限制来示出本发明。
图1示出了处理器的实施方案,所述处理器包括用于基于填充缓存器命中来预取的电路。
图2示出了使用基于填充缓存器命中的预取技术的系统的实施方案。
图3示出了基于填充缓存器命中的预取方法的实施方案。
具体实施方案
下面的说明描述了用于基于缓存填充缓冲器命中来预取的技术的实施方案。在下面的描述中,为了提供对本发明的透彻理解,给出了很多的具体细节,例如处理器和系统结构。但是熟练技术人员将理解,无需这些具体细节可以实践本发明。此外,为了避免模糊本发明,没有详细示出公知的结构、电路等。
本发明的实施方案提供了用于预取数据的技术,其中,数据可以是任何类型的信息,包括以其中使用了所述技术的数据处理装置可识别的任何形式来表示的指令。可以把数据从存储器层次结构的任意层预取到其他任意层,例如,从主系统存储器预取到第一层(“L1”)缓存,并且,所述数据可以在数据处理装置中与存储器层次结构的任何其他层一起使用,所述任何其他层在执行预取的取自和取往的层之上、之下或者之间。例如,在具有主存储器,第二层(“L2”)缓存和L1缓存的数据处理系统中,预取技术可以用来把数据从L2缓存或者主存储器预取到L1缓存,取决于预取时在哪里可以找到数据,并且,所述预取技术可以与任何其他基于硬件或软件的技术结合使用,以预取到L1或L2缓存,或者两者。
图1示出了处理器100的实施方案,所述处理器100包括用于基于填充缓存器命中来预取的电路。处理器可以是多种不同类型的包括L1缓存和缓存填充缓冲器的处理器中的任意一种。例如,该处理器可以是通用处理器,例如奔腾处理器系列、安腾处理器系列或来自英特尔公司的其他处理器系列中的处理器,或者是来自其他公司的其他处理器。
在图1的实施方案中,处理器100包括L1缓存120、填充缓冲器130、外部总线队列140、L1预取器150、配置寄存器151、预取队列160,以及发出(issue)逻辑161。
处理器100执行的指令可以标识该指令所需要的数据被储存的存储器地址。来自该存储器地址的数据先前可以已被从处理器100可访问的存储器加载到L1缓存120中,在这种情况下,可以使用来自L1缓存120的数据来执行指令。但是,如果数据目前未被储存在L1缓存120中,则可以请求取数据并将其加载到L1缓存120中。在本说明书中,这种请求将被称为“需求(demand)”请求。
可以通过在填充缓冲器130中储存条目来进行需求请求。填充缓冲器130包括大量条目位置131,其中每一个条目位置131均可用来储存与将和缓存线(cache line)相当的数据加载到L1缓存120中的请求相关的信息,并且在数据被取之后,但在其被加载到L1缓存120之前,储存数据本身。使用填充缓冲器130中的条目来发出和跟踪完成请求所需要的事务处理。例如,储存在条目位置131中的信息可以包括要被加载的数据的地址。
通过在填充缓冲器130中储存条目,也可以做出由本发明的预取技术或者任何其他的预取技术所产生的将数据加载到L1缓存120中的请求。因此,条目位置131可以包括储存信息的位置,所述信息指示对应的条目是需求请求还是预取(prefetch)请求。
完成把数据加载到L1缓存120中的请求可能要求涉及通过外部总线连接到处理器100的部件的事务处理,例如,从系统存储器读数据的事务处理。在这种情况下,缓存加载请求也可以储存在外部总线队列140中。在涉及到外部部件的其他事务处理被发出、被执行或准备好被执行之前,外部总线队列140还用来储存有关这些事务处理的信息。
在这个实施方案中,使用L1预取器150来产生预取要加载到L1缓存120中的数据的请求。基于填充缓冲器130的内容来确定何时预取数据。在这个实施方案中,对填充缓冲器130中条目的一定数量的命中触发L1预取器150产生预取请求。例如,当处理器100执行要求来自对应于填充缓冲器130中条目的地址的数据的指令时,L1预取器150产生预取请求。或者,L1预取器150可以配置成在处理器100第二次、第三次、第三次或者第N次执行要求来自对应于填充缓冲器130中的条目的给定地址的数据的指令时产生预取请求,无论指令相同还是不同。N可以是任何固定或可编程的数字,并且,如果是后者,则N的值可以被编程到配置寄存器151中。在另一个实施方案中,可以基于对指令的解码而非指令的执行,或者基于涉及所述指令所需要的数据或数据的地址的标识的指令的任何处理来确定填充缓冲器命中已经发生。
而且,基于填充缓冲器130的内容确定预取什么数据。在这个实施方案中,当命中填充缓冲器130中的条目触发了预取请求时,要被预取的地址比被命中的条目中的地址大L1缓存120的线大小(line size)。例如,如果L1缓存120的线大小是64字节,并且要被填充缓冲器130中被命中的条目加载的数据的地址储存在存储器的某个与L1缓存120对齐的64字节的部分内,则L1预取器150将产生预取储存在存储器的下一个连续64字节部分中的数据的请求。
在L1预取器150所产生的预取请求被预取发出逻辑161发出之前,预取队列160用来储存这些请求。在这个实施方案中,预取队列160是先进先出队列(“FIFO”),但是也可以是在本发明范围内的任何类型的队列。还是在这个实施方案中,如果产生新的请求时预取队列160满了,则丢掉预取队列160中最老的请求,以便为新的请求腾出空间。可替换地,如果产生新的请求时预取队列160满了,可以丢掉新的请求,并将老的请求保持在预取队列中,直到被发出为止。
预取发出逻辑161基于条件的组合,从预取队列160发出预取请求。在本发明的其他实施方案中,预取发出逻辑161可以基于相同或其他条件的任意其他组合,包括其自己的任何单个标准,发出预取请求。可以带着降低预取的潜在负面副作用的目的来选择所述条件以及确定是否满足条件的参数值,所述负面副作用例如资源过载、缓存污染(cachepollution)和系统颠簸(thrashing)。条件和参数值可以是可配置的,以便在真正的系统中可以测量它们的影响。在这个实施方案中,下列五个条件中的每一个都必须满足。
第一个条件是预取请求被发往的L1缓存端口是空闲的。例如,L1缓存120可以具有加载端口和储存端口,并且,预取请求可以被发送到储存端口,因为它比加载端口更可能是空闲的。在这种情况下,第一个条件是L1缓存120的储存端口是空闲的。
第二个条件是填充缓冲器130中至少某个数量L个条目位置131是空的。第三个条件是填充缓冲器130中的不超过某个数量P个条目位置131被分配给预取请求。第四个条件是在外部总线队列140中至少有X个条目空着。参数L、P和X的值可以是固定的或可编程的,并且,如果是后者,则可以被编程到配置寄存器151中。例如,L的值可以是2,P的值可以是3,而X的值可以是1。通过限制缓存加载请求的数量和对照未完成(outstanding)的需求请求的数量来均衡预取请求的数量,这三个条件和对应的参数值的选择可以用来控制总线流量和防止资源过载。
第五个条件是L1缓存120能够接受预取请求。例如,如果涉及L1缓存120的操作的原子(atomic)序列正在进行中,则L1缓存120可能不能接受预取请求。
如果满足了从预取队列160发出预取请求的所有条件,则执行缓存查找以察看缓存120或填充缓冲器130是否已经包含被请求的线(line),例如,如果在预取请求被产生的时间和它被发出的时间之间数据已经被加载,或者如果在预取请求被产生时数据已经存在,则这种情况有可能发生。如果缓存查找找到了被请求的线,则丢掉预取请求。否则,以与需求请求将被执行的方式相同的方式来执行预取请求。
在实现预取请求的数据线到达时,依据配置参数,该线可被加载到L1缓存120中,或者被丢掉,所述配置参数可以是固定的,或者可以被编程在配置寄存器151中。如果配置参数被设置为丢掉,则可以丢掉该线而不是将其加载到L1缓存120中。但是,如果预取的行在被丢掉之前,例如储存在加载缓冲器130中时被需求请求命中,则即使配置参数被设置为丢掉,也可以把该线加载到L1缓存120中。如果配置参数被设置为丢掉并且预取的线被丢掉,则通过使被请求数据移动得更靠近处理器100,例如从主存储器到L2缓存,预取请求可以改善性能。
图2示出了系统200中基于缓存线填充缓冲器命中来预取的技术的实施方案,系统200包括L2缓存单元210。系统200还包括第一处理器220和第二处理器230,每一个均包括用于根据图1的实施方案预取到L1缓存的电路。L2缓存单元210和处理器220及230可以被包括在同一硅芯片上、在同一封装内的分离硅芯片上,或者在分离的封装内。在前面的情况中,芯片或封装还可以包括其他的部件,例如带有或不带有其自身的L1缓存和L1预取电路的额外的处理器。
L2缓存单元210可以包括L2缓存和用于把数据加载到L2缓存中的电路,例如用于预取和/或以流方式将数据送入L2缓存的电路,或者,这种电路可以被包括在L2缓存单元210之外的单元或部件中。L2预取器可以像它对待L1需求请求那样对待根据本发明的实施方案发出的L1预取请求,所以通过在做出将触发L2预取的需求请求之前触发相同的L2预取,本发明的技术可以改善性能。
系统200还包括外部总线队列240,在处理器220和230的每一个中,外部总线队列240可以替代如图1中所示的外部总线队列140使用。在这种情况下,如上所述的用于发出预取请求的第四个条件以及参数X可以是指外部总线队列240而非外部总线队列140。第四个条件和对应的参数X的选择可以用来赋予这些处理器中的一个的需求请求超过其他处理器的预取请求的优先权,这与第二和第三个条件相反,第二个和第三个条件可以用来赋予这些处理器中的一个的需求请求超过其自身的预取请求的优先权。
系统200还包括系统逻辑250、系统存储器260、输入/输出(“I/O”)控制器270和外部设备280。系统逻辑250可以用来控制涉及系统存储器260的事务处理。系统存储器260可以是任何类型的存储器,例如动态或静态读访问存储器、只读存储器,或可编程只读存储器。I/O控制器270可以用来控制涉及外部设备280的事务处理。外部设备280可以是任何类型的外部设备,例如键盘、鼠标、打印机、调制解调器,或数据储存设备,例如光盘或者磁盘。系统200还可以包括任意数量的其他设备或部件,例如显示设备或额外的处理器、存储器或未被示出的外部设备。
图3是流程图,示出了基于缓存填充缓冲器命中来预取的方法的实施方案。在框310中,接收到要求数据的指令。该指令可以标识数据在存储器中被储存的地址,但是,数据先前可能已被加载到L1缓存中,或者加载数据的请求可能已经输入L1填充缓冲器。因此,在框320中,检查L1缓存以察看被要求的数据是否存在于L1缓存中。如果数据存在,则在框325中执行该指令。如果数据不存在,则在框330中,检查L1填充缓冲器,以获得用于从存储器或L2缓存加载数据的未完成的条目,其中框330的操作可以和框320的操作并行进行。如果没有这种未完成的条目,则在框335中,将需求请求输入填充缓冲器。如果有这种未完成的条目,则在框340中,从下一个顺次缓存线预取数据的请求被产生,并被置入预取队列。
在框350中,检查用于从预取队列发出请求的条件。这些条件可以与上面针对图1的实施方案所描述的条件相同或者不同。如果条件非真,则在框355中,在条件为真或者该请求被其他请求覆盖之前,该预取请求被保持在预取队列中。如果队列为真,则在框360中,进行缓存查找以察看被请求的数据是否已经储存在缓存或者填充缓冲器中。如果是,则在框365中,丢掉预取请求。如果不是,则在框370中,执行预取请求。在上述任一种情况中,为了防止预取请求的连锁反应(train reaction),框360中的填充缓冲器命中不产生新的预取请求。
在框375中,返回包含预取数据的缓存线。在框380中,检查配置参数以确定该线是否应该被加载到缓存中。如果配置参数被设置为加载该线,则在框385中,该线被加载到缓存中。相反,如果配置参数被设置为丢掉该线,则在框390中,该线被丢掉,除非该线已经被需求请求命中,在被需求请求命中的情况下,它被加载到缓存中。
处理器100,或者任何其他的根据本发明的实施方案设计的处理器或者部件,可以在各种阶段中被设计,从构思到模拟再到制造。代表设计的数据可以用很多种方式来代表该设计。首先,在模拟中很有用的是,可以使用硬件描述语言或者其他的功能描述语言来代表硬件。附加地或可选择地,在设计过程的某些阶段可以用逻辑和/或晶体管门产生电路层模型。此外,在某个阶段上,大多数设计达到这样的水平,即它们可以用代表各种器件的物理布局的数据来建模。在使用常规的半导体制造技术的情况下,代表器件布局模型的数据可以是规定用来生产集成电路的掩模的不同掩模层上的各种特征存在或不存在的数据。
在设计的任何表示中,可以用任意的机器可读介质的形式来储存数据。机器可读介质可以是为了传送这些信息而被调制或被产生的光波或者电波,存储器,或者磁性或光学储存介质(例如盘)。这些介质中的任何一种可以“携带”或者“指示”设计,或者在本发明的实施方案中使用的其他信息,例如错误恢复例程中的指令。当指示或携带信息的电载波被传送时,相应于执行复制、缓冲或重新传送电信号的程度,完成了新的拷贝。因此,通讯提供商或者网络提供商的操作可以制作具体实施本发明的技术的物品(例如,载波)的拷贝。
这样,公开了基于缓存填充缓冲器来预取的技术。虽然某些实施方案已被描述并在附图中示出,但是要理解,这些实施方案仅仅是为了说明而非限制本发明,并且,本发明不局限于示出和描述的具体构造和安排,因此熟练技术人员在研究过本公开以后,可以想到各种其他的修改。在如本技术领域这样的增长快而且难以预测更长远的进步的技术领域中,受助于实现技术进步,在安排和细节上很容易修改所公开的实施方案而不偏离本公开的原理或所附的权利要求书的范围。
Claims (23)
1.一种用于基于缓存填充缓冲器命中来预取的处理器,所述处理器包括:
具有多个填充缓冲器条目位置的缓存填充缓冲器,以及
预取器,如果所述缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的指令,所述预取器生成从第二地址预取数据的请求。
2.如权利要求1的处理器,其中所述第二地址比所述第一地址大由所述缓存填充缓冲器来填充的缓存线大小。
3.如权利要求1的处理器,进一步包括在所述请求被发出之前存储所述第二地址的预取队列。
4.如权利要求3的处理器,进一步包括确定发出预取请求的条件是否满足,并且如果满足所述条件,发出所述请求的逻辑。
5.如权利要求3的处理器,进一步包括如果所述多个填充缓冲器条目位置中的至少一个为空则发出所述请求的逻辑。
6.如权利要求3的处理器,进一步包括如果所述多个填充缓冲器条目位置中的不超过P个被填充了预取请求,则发出所述请求的逻辑,其中P小于填充缓冲器条目位置的数量。
7.如权利要求3的处理器,进一步包括:
储存配置参数L的寄存器;以及
如果所述多个填充缓冲器条目位置中的至少L个为空,则发出所述请求的逻辑。
8.如权利要求3的处理器,进一步包括:
储存配置参数P的寄存器;以及
如果所述多个填充缓冲器条目位置中的不超过P个被填充了预取请求,则发出所述请求的逻辑。
9.如权利要求3的处理器,进一步包括如果缓存端口空闲则把所述请求发出到所述缓存端口的逻辑。
10.如权利要求3的处理器,其中,所述缓存具有多个端口,所述处理器进一步包括如果所述多个端口中的一个为空闲,则把所述请求发出到所述多个端口中的所述这一个的逻辑。
11.如权利要求10的处理器,其中,所述多个端口中的所述这一个是储存端口。
12.如权利要求3的处理器,其中,所述预取队列是先进先出预取队列。
13.如权利要求3的处理器,进一步包括:
具有多个总线队列条目位置的外部总线队列;
储存配置参数X的寄存器;以及
如果所述多个总线队列条目位置中的至少X个为空,则发出所述请求的逻辑。
14.如权利要求1的处理器,进一步包括指示所述预取数据是否要被加载到要由所述缓存填充缓冲器填充的缓存中的配置参数。
15.一种用于基于缓存填充缓冲器命中来预取的处理器,所述处理器包括:
具有多个填充缓冲器条目位置的缓存填充缓冲器;
储存配置参数N的寄存器;以及
预取器,如果所述缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的第N条指令,所述预取器产生从第二地址预取数据的请求。
16.一种用于基于缓存填充缓冲器命中来预取的系统,所述系统包括:
动态随机访问存储器;
耦合到所述动态随机访问存储器的第二层缓存;
耦合到所述第二层缓存的第一处理器,所述第一处理器包括:
具有第一批多个填充缓冲器条目位置的用来填充第一个第一层缓存的第一缓存填充缓冲器;以及
第一预取器,如果所述第一缓存填充缓冲器包括对应于第一地址的条目,所述对应于第一地址的条目在所述第一批多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第一地址的数据的所述第一处理器,所述第一预取器产生从第二地址预取数据的第一请求;以及
耦合到所述第二层缓存的第二处理器,所述第二处理器包括:
具有第二批多个填充缓冲器条目位置的用来填充第二个第一层缓存的第二缓存填充缓冲器;以及
第二预取器,如果所述第二缓存填充缓冲器包括对应于第三地址的条目,所述对应于第三地址的条目在所述第二批多个填充缓冲器条目位置的一个位置中,则响应于需要来自所述第三地址的数据的所述第二处理器,所述第二预取器产生从第四地址预取数据的第二请求。
17.如权利要求16的系统,其中:
所述第一处理器还包括在所述第一请求被发出之前,储存所述第二地址的第一预取队列;以及
所述第二处理器还包括在所述第二请求被发出之前,储存所述第四地址的第二预取队列。
18.如权利要求17的系统,其中,所述第二层缓存,所述第一处理器以及所述第二处理器全部在单个硅芯片上。
19.如权利要求18的系统,其中:
所述单个芯片进一步包括:
具有多个总线队列条目位置的外部总线队列;以及
所述第一处理器还包括:
储存第一配置参数X1的第一寄存器;以及
如果所述多个总线队列条目位置中的至少X1个为空则发出所述第一请求的第一逻辑;以及
所述第二处理器还包括:
储存第二配置参数X2的第二寄存器;以及
如果所述多个总线队列条目位置中的至少X2个为空则发出所述第二请求的第二逻辑。
20.一种用于基于缓存填充缓冲器命中来预取的方法,所述方法包括:
接收需要来自第一地址的数据的指令;以及
如果对应于所述第一地址的条目被储存在缓存填充缓冲器中,则产生从第二地址预取数据的请求。
21.如权利要求20的方法,其中,所述第二地址大于所述第一地址由所述缓存填充缓冲器来填充的缓存的线大小。
22.如权利要求20的方法,进一步包括:
在所述请求被发出之前把所述请求储存在预取队列中;
确定是否满足发出预取请求的条件;以及
如果满足所述条件则发出所述请求。
23.如权利要求22的方法,其中,确定是否满所述条件操作包括下列操作中的至少一个:确定缓存端口是否空闲,确定所述缓存填充缓冲器中空条目的数量,确定分配给预取请求的缓存填充缓冲器条目的数量,确定外部总线队列中空条目的数量,以及,确定要由所述缓存填充缓冲器填充的所述缓存是否能够接受所述请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/023,838 US20060143401A1 (en) | 2004-12-27 | 2004-12-27 | Method and apparatus for prefetching based on cache fill buffer hits |
US11/023,838 | 2004-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1797371A true CN1797371A (zh) | 2006-07-05 |
CN100418072C CN100418072C (zh) | 2008-09-10 |
Family
ID=36613137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101328688A Expired - Fee Related CN100418072C (zh) | 2004-12-27 | 2005-12-27 | 用于基于填充缓冲器命中来预取的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20060143401A1 (zh) |
KR (1) | KR100692342B1 (zh) |
CN (1) | CN100418072C (zh) |
TW (1) | TWI292879B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102057359A (zh) * | 2009-04-10 | 2011-05-11 | 松下电器产业株式会社 | 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路 |
CN101730885B (zh) * | 2007-06-28 | 2013-03-27 | 英特尔公司 | 用于多线程和多核心系统的高速缓存及其方法 |
CN104769560A (zh) * | 2012-11-06 | 2015-07-08 | 先进微装置公司 | 基于缓冲器充满度而向高速缓存进行预取 |
CN106980577A (zh) * | 2017-03-20 | 2017-07-25 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
CN107408075A (zh) * | 2015-04-14 | 2017-11-28 | 谷歌公司 | 虚拟化感知预取 |
CN109508302A (zh) * | 2017-09-14 | 2019-03-22 | 华为技术有限公司 | 一种内容填充方法和存储器 |
CN110506260A (zh) * | 2017-04-17 | 2019-11-26 | 微软技术许可有限责任公司 | 通过在神经网络环境的处理单元中利用已对齐的blob数据来最小化存储器读取并提高性能 |
CN112860598A (zh) * | 2014-05-06 | 2021-05-28 | 谷歌有限责任公司 | 呼入数据的受控缓存注入的方法、系统和介质 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102006012251A1 (de) * | 2006-03-15 | 2007-11-08 | Grünenthal GmbH | Substituierte 4-Amino-chinazolin-Derivate und ihre Verwendung zur Herstellung von Arzneimitteln |
US8683484B2 (en) * | 2009-07-23 | 2014-03-25 | Novell, Inc. | Intelligently pre-placing data for local consumption by workloads in a virtual computing environment |
US8281078B2 (en) * | 2009-09-29 | 2012-10-02 | Intel Corporation | Multi-level cache prefetch |
WO2013095401A1 (en) * | 2011-12-20 | 2013-06-27 | Intel Corporation | System and method for out-of-order prefetch instructions in an in-order pipeline |
US9201796B2 (en) * | 2012-09-27 | 2015-12-01 | Apple Inc. | System cache with speculative read engine |
US10621095B2 (en) | 2016-07-20 | 2020-04-14 | International Business Machines Corporation | Processing data based on cache residency |
US10452395B2 (en) | 2016-07-20 | 2019-10-22 | International Business Machines Corporation | Instruction to query cache residency |
US10169239B2 (en) * | 2016-07-20 | 2019-01-01 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
US10521350B2 (en) | 2016-07-20 | 2019-12-31 | International Business Machines Corporation | Determining the effectiveness of prefetch instructions |
US10387320B2 (en) | 2017-05-12 | 2019-08-20 | Samsung Electronics Co., Ltd. | Integrated confirmation queues |
CN110737475B (zh) * | 2019-09-29 | 2023-03-28 | 上海高性能集成电路设计中心 | 一种指令缓存装填过滤装置 |
CN114625674B (zh) * | 2022-03-24 | 2023-07-18 | 广东华芯微特集成电路有限公司 | 预驱指令架构与预驱指令架构的预取方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659713A (en) * | 1992-04-24 | 1997-08-19 | Digital Equipment Corporation | Memory stream buffer with variable-size prefetch depending on memory interleaving configuration |
US6272595B1 (en) * | 1994-08-05 | 2001-08-07 | Intel Corporation | N-way set-associative cache memory which includes a store hit buffer for improved data access |
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 |
US6011908A (en) * | 1996-12-23 | 2000-01-04 | Transmeta Corporation | Gated store buffer for an advanced microprocessor |
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 |
KR100230454B1 (ko) * | 1997-05-28 | 1999-11-15 | 윤종용 | 다중처리 시스템의 캐시메모리 검사방법 |
US6317810B1 (en) * | 1997-06-25 | 2001-11-13 | Sun Microsystems, Inc. | Microprocessor having a prefetch cache |
US6484239B1 (en) * | 1997-12-29 | 2002-11-19 | Intel Corporation | Prefetch queue |
JP3319386B2 (ja) * | 1998-04-23 | 2002-08-26 | 日本電気株式会社 | キャッシュメモリ |
JP4680340B2 (ja) * | 1999-12-14 | 2011-05-11 | 独立行政法人科学技術振興機構 | プロセッサ |
US6397297B1 (en) * | 1999-12-30 | 2002-05-28 | Intel Corp. | Dual cache with multiple interconnection operation modes |
US6629188B1 (en) * | 2000-11-13 | 2003-09-30 | Nvidia Corporation | Circuit and method for prefetching data for a texture cache |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US6934809B2 (en) * | 2002-02-22 | 2005-08-23 | Sun Microsystems, Inc. | Automatic prefetch of pointers |
US6988172B2 (en) * | 2002-04-29 | 2006-01-17 | Ip-First, Llc | Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status |
US7526613B2 (en) * | 2003-03-06 | 2009-04-28 | Nxp B.V. | Data processing system with prefetching means |
-
2004
- 2004-12-27 US US11/023,838 patent/US20060143401A1/en not_active Abandoned
-
2005
- 2005-12-23 TW TW094146258A patent/TWI292879B/zh not_active IP Right Cessation
- 2005-12-27 KR KR1020050130872A patent/KR100692342B1/ko not_active IP Right Cessation
- 2005-12-27 CN CNB2005101328688A patent/CN100418072C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101730885B (zh) * | 2007-06-28 | 2013-03-27 | 英特尔公司 | 用于多线程和多核心系统的高速缓存及其方法 |
CN102057359A (zh) * | 2009-04-10 | 2011-05-11 | 松下电器产业株式会社 | 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路 |
CN104769560A (zh) * | 2012-11-06 | 2015-07-08 | 先进微装置公司 | 基于缓冲器充满度而向高速缓存进行预取 |
CN104769560B (zh) * | 2012-11-06 | 2017-04-12 | 先进微装置公司 | 基于缓冲器充满度而向高速缓存进行预取 |
CN112860598A (zh) * | 2014-05-06 | 2021-05-28 | 谷歌有限责任公司 | 呼入数据的受控缓存注入的方法、系统和介质 |
CN112860598B (zh) * | 2014-05-06 | 2022-09-20 | 谷歌有限责任公司 | 呼入数据的受控缓存注入的方法、系统和介质 |
CN107408075A (zh) * | 2015-04-14 | 2017-11-28 | 谷歌公司 | 虚拟化感知预取 |
CN106980577B (zh) * | 2017-03-20 | 2020-04-28 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
CN106980577A (zh) * | 2017-03-20 | 2017-07-25 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
CN110506260A (zh) * | 2017-04-17 | 2019-11-26 | 微软技术许可有限责任公司 | 通过在神经网络环境的处理单元中利用已对齐的blob数据来最小化存储器读取并提高性能 |
CN110506260B (zh) * | 2017-04-17 | 2023-09-22 | 微软技术许可有限责任公司 | 用于神经网络环境中的增强数据处理的方法、系统和介质 |
CN109508302A (zh) * | 2017-09-14 | 2019-03-22 | 华为技术有限公司 | 一种内容填充方法和存储器 |
CN109508302B (zh) * | 2017-09-14 | 2023-04-18 | 华为技术有限公司 | 一种内容填充方法和存储器 |
Also Published As
Publication number | Publication date |
---|---|
CN100418072C (zh) | 2008-09-10 |
TWI292879B (en) | 2008-01-21 |
KR100692342B1 (ko) | 2007-03-12 |
TW200643792A (en) | 2006-12-16 |
KR20060074902A (ko) | 2006-07-03 |
US20060143401A1 (en) | 2006-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100418072C (zh) | 用于基于填充缓冲器命中来预取的装置和方法 | |
US11074190B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
CN1230750C (zh) | 临时指令与非临时指令共享的高速缓存结构 | |
TW554267B (en) | Cache way prediction based on instruction base register | |
US6584549B2 (en) | System and method for prefetching data into a cache based on miss distance | |
US7783837B2 (en) | System and storage medium for memory management | |
EP3066572B1 (en) | Cache memory budgeted by chunks based on memory access type | |
US6401193B1 (en) | Dynamic data prefetching based on program counter and addressing mode | |
US9626190B2 (en) | Method and apparatus for floating point register caching | |
EP0752644A2 (en) | Memory management unit incorporating prefetch control | |
US20020138700A1 (en) | Data processing system and method | |
CN1722110A (zh) | 低等待时间存储器系统访问 | |
US8856451B2 (en) | Method and apparatus for adapting aggressiveness of a pre-fetcher | |
US20090217004A1 (en) | Cache with prefetch | |
CN1726477A (zh) | 用于预取和存储器管理的页描述符 | |
CN101180611A (zh) | 依赖于指令类型的可配置高速缓存系统 | |
EP1416390B1 (en) | Cache pollution avoidance instructions | |
CN105930136A (zh) | 处理器和指令码生成设备 | |
TW202223630A (zh) | 微處理器、快取記憶體存儲器系統及其中實現的方法 | |
KR101731006B1 (ko) | 공격적 프리페칭에 의해 발생된 프로세서 캐시 오염을 감소시키기 위한 방법 및 장치 | |
CN115964309A (zh) | 预取 | |
US11520704B1 (en) | Writing store data of multiple store operations into a cache line in a single cycle | |
US7051159B2 (en) | Method and system for cache data fetch operations | |
US12099444B2 (en) | Cat aware loads and software prefetches | |
US20230342154A1 (en) | Methods and apparatus for storing prefetch metadata |
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: 20080910 Termination date: 20181227 |
|
CF01 | Termination of patent right due to non-payment of annual fee |