CN102968386B - 数据供给设备、缓存设备及数据供给方法 - Google Patents
数据供给设备、缓存设备及数据供给方法 Download PDFInfo
- Publication number
- CN102968386B CN102968386B CN201210153321.6A CN201210153321A CN102968386B CN 102968386 B CN102968386 B CN 102968386B CN 201210153321 A CN201210153321 A CN 201210153321A CN 102968386 B CN102968386 B CN 102968386B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer memory
- unit
- receiving area
- request
- 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.)
- Active
Links
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
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/6022—Using a prefetch buffer or dedicated prefetch cache
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)
Abstract
本发明提供数据供给设备、缓存设备及数据供给方法。该数据供给设备包括:输出单元;提取单元,其包括用于存储数据的存储区域,并被配置为将存储在存储区域中的数据供给至输出单元;以及预取单元,其被配置为从存储器请求要发送至输出单元的数据,其中,提取单元被配置为将从存储器接收的数据存储在作为存储区域的一部分的接收区域中,并根据来自预取单元的请求分配存储有与请求对应的数据的接收区域的一部分作为发送区域,并且其中,输出单元被配置为输出存储在发送区域中的数据。
Description
技术领域
本发明涉及用于在计算机系统中有效供给数据的数据供给技术。
背景技术
近年来,各种装置需要改善处理性能和降低成本。通常,计算机系统包括执行应用的处理器、数据处理电路以及用于存储程序或要处理的数据的诸如存储器的存储设备。理想的情况是,计算机系统中的存储设备能够高速读/写由处理器和数据处理电路使用的所有程序和数据。例如,如果诸如静态随机存取存储器(SRAM)的具有比较短的访问延迟的存储单元被设置为各处理器和数据处理电路的专用本地存储器,则能够容易地改善处理性能。
另一方面,在实现装置的成本降低时,期望单个存储设备能够由多个处理器和数据处理电路共享,从而能够减少存储设备的数量。此外,当存储器用作存储设备时,在大多数情况下,此时广泛使用的便宜的动态随机存取存储器(DRAM)被用作存储器。
然而,如果用使用便宜的DRAM,则与上述SRAM相比,将增加访问延迟。此外,如果单个存储设备在多个处理器和数据处理电路中被共享,则在处理器和数据处理电路中发生存储设备的读/写竞争。在这种情况下,对各访问进行仲裁,结果,将增加处理器或数据处理电路的访问延迟。因此,各处理器或数据处理电路的处理性能降低。
为了防止上述处理器或数据处理电路的性能降低,通常在处理器或数据处理电路与存储设备之间设置缓存设备。只要能够从设置的缓存设备中读出期望的数据,则各处理器或数据处理电路不访问存储设备(提交数据请求)。以这种方式,减少了从各处理器或数据处理电路对存储设备的访问,并能够减少必要的总接入带宽。
虽然电路大小根据诸如缓存设备的数据供给机构的使用而自然增加,但与如上所述使用专用的本地存储器时相比,电路大小仍然较小。通过在计算机系统中使用最优的缓存设备,能够实现具有高处理性能的低成本装置。
如果在缓存设备中存在期望的数据(缓存命中),则处理器或数据处理电路不需要访问存储设备中的数据,从而减少访问延迟。另一方面,如果在缓存设备中不存在期望的数据(缓存失效),则处理器或数据处理电路自然访问存储设备中的期望的数据(提交数据请求)。在这种情况下,访问延迟与没有设置缓存设备的情况类似。
通常,处理器或数据处理电路按顺序处理数据。因此,当缓存失效发生时,处理器或数据处理电路暂时停止操作一段时间,直到从存储设备读出期望的数据。通过这种停止操作自然降低了处理器或数据处理电路的处理性能。这被称为阻塞操作。此外,当缓存失效发生时从存储设备读出数据的处理被称为“再充填”,读出的数据被称为“再充填数据”。此外,一次读取的数据的单位被称为“再充填长度”,读取时间的长度被称为“再充填延迟”。
为了提高处理性能,日本专利第3846638号公报讨论了具有能够隐藏上述再充填延迟的缓存机构的数据供给设备。首先,在日本专利第3846638号公报中讨论的管线处理器针对预定管线段中的处理所需的数据,确定在该预定管线段的前段(预处理)中是否包括缓存失效。如果确定缓存失效,则请求前段(预处理)中所需的数据,并执行再充填。
此时,在日本专利第3846638号公报中讨论的管线处理器包括比再充填延迟更长的中间队列(FIFO)。在日本专利第3846638号公报中讨论的管线处理器将包括“再充填”中的处理的后续处理依次存储在中间队列(FIFO)中。换句话说,在日本专利第3846638号公报中讨论的管线处理器能够在将处理存储在中间队列(FIFO)中的同时,继续下一处理的缓存失效/命中确定。因此,与上述阻塞操作不同,不必在每当缓存失效发生时,暂时停止处理器的处理。
另一方面,在日本专利第3846638号公报中讨论的管线处理器在从存储设备读出数据(这是每当缓存失效发生时所必须的)之后,需要在更新缓存存储器之前将再充填数据暂时存储在充填FIFO中。由于在中间队列(FIFO)中存在在缓存失效的数据处理之前的缓存命中的数据,因此,如果在预定的管线段中没有完成缓存命中的数据处理,则无法更新缓存存储器。因此,在日本专利第3846638号公报中讨论的管线处理器必然包括上述充填FIFO。用于通过使用中间队列(FIFO)进行下一数据处理的缓存失效/命中确定的操作被称为非阻塞操作。
在中间队列(FIFO)中,数据处理命令被延迟。如果在延迟期间完成再充填,并且缓存失效的再充填数据存储在充填FIFO中,则能够从充填FIFO供给再充填数据,并且能够执行数据处理。换句话说,在日本专利第3846638号公报中讨论的具有缓存机构的数据供给设备能够继续数据处理,同时隐藏在缓存失效期间的再充填延迟而无需暂时停止处理。
然而,根据日本专利第3846638号公报中讨论的技术,除了缓存存储器之外,还需要用于暂时存储再充填数据的充填FIFO。
发明内容
本发明旨在减小数据供给设备的电路大小同时维持其处理性能。
根据本发明的一方面,提供了一种数据供给设备,该数据供给设备包括:输出单元;提取单元,其包括用于存储数据的存储区域,并被配置为将存储在所述存储区域中的数据供给至所述输出单元;以及预取单元,其被配置为从存储器请求要发送至所述输出单元的数据,其中,所述提取单元被配置为将从所述存储器接收的数据存储在作为所述存储区域的一部分的接收区域中,并根据来自所述预取单元的请求分配存储有与所述请求对应的数据的所述接收区域的一部分作为发送区域,并且其中,所述输出单元被配置为输出存储在所述发送区域中的数据。
通过以下参照附图对示例性实施例的描述,本发明的其他特征将变得清楚。
附图说明
被并入说明书并构成说明书的一部分的附图,例示了本发明的示例性实施例、特征及方面,并且与文字描述一起用来说明本发明的原理。
图1是示出处理装置的示例的框图。
图2是示出缓存确定单元的示例的框图。
图3A是示出数据获取单元进行的处理的示例的流程图。
图3B是示出数据获取单元进行的处理的示例的流程图。
图4A示出缓存存储器的结构。
图4B、4C和4D示出缓存存储器的操作的示例。
图5A是示出缓存确定单元的示例的框图。
图5B是示出缓存确定单元的示例的框图。
图6是示出数据供给设备的示例的框图。
图7A是示出直接映射缓存存储器的示例的框图。
图7B是示出四路组相联缓存存储器的示例的框图。
图8A是示出数据获取单元进行的处理的示例的流程图。
图8B是示出数据获取单元进行的处理的示例的流程图。
图9是示出进行阻塞操作的处理装置的示例的框图。
具体实施方式
下面,将参照附图,来详细描述本发明的各种示例性实施例、特征及方面。
首先,将另外描述上述日本专利第3846638号公报。如上所述,根据日本专利第3846638号公报中讨论的技术,除了缓存存储器之外,还需要用于暂时存储再充填数据的充填FIFO。
低成本的DRAM用作缓存数据的存储设备。通常,从存储器带效率的观点来看,以针对某些连续的存储区域共同进行DRAM的读/写的方式提交请求较好。该数据请求被称为资料组存取(burstaccess)。因此,期望以资料组存取为单位访问和读/写DRAM。
由于在制造DRAM中对精细半导体加工和产品需求的提高,DRAM的内部操作效率随着制造年代逐年增加。资料组存取的读/写单位自然也逐年增加。由于对高性能设备的不断增长的需求,因此可以设想DRAM的读/写单位也将继续增加。
关于缓存设备,与一个缓存标签(缓存地址)对应的缓存数据(缓存行)经常被调整为资料组存取的读/写单位的整数倍。与一个缓存失效对应的再充填数据的读/写单位(再充填长度)将与缓存行相同。例如,与上述DRAM相关的再充填数据的读/写单位是32至128个字节。
上述充填FIFO需要具有能够将与缓存失效的命令的数量对应的充填数据的量存储在中间队列(FIFO)的容量。实现缓存设备的设备的再充填延迟为数十至数百个周期,中间队列(FIFO)的段数与该周期数对应。
例如,如果缓存命中率是75%,则中间队列(FIFO)的25%将是缓存失效。如果中间队列(FIFO)包括128段,则充填FIFO将为128段的25%。因此,32段将是充填FIFO所必需的。考虑到上述再充填数据的读取单位,充填FIFO的容量是1K到4K字节。在实现缓存设备的设备中,这没有小到可以忽略。
在日本专利第3846638公报中讨论的缓存设备包括以下存储区域:
(1)用于通过预取(prefetch)逻辑确定缓存命中/失效的缓存标签的存储区域
(2)中间队列(FIFO)的存储区域
(3)提取(fetch)逻辑充填FIFO的存储区域
(4)用于存储提取逻辑缓存数据的缓存存储器的存储区域
如上所述,影响电路大小的存储区域是具有长的再充填长度的(3)“充填FIFO”和(4)“缓存存储器”。如果(3)“充填FIFO”和(4)“缓存存储器”作为不同的硬件设备存在(如日本专利第3846638号公报所讨论的),则电路大小将增加。虽然在(2)“中间队列(FIFO)”中的FIFO的段数较大,但是由于中间队列用于传输表示缓存命中/失效的结果的标志以及数据存储在缓存存储器中的地址,所以与如下所述的再充填长度相比,FIFO本身的数据长度非常短。
接下来,将详细描述根据本发明的示例性实施例的包括作为数据供应设备的缓存设备的处理装置和缓存设备。
图1是示出处理装置的整体结构的示例的框图。处理装置包括中央处理单元(CPU)160、作为外部存储设备(外部存储器)的DRAM165、DRAM控制器166和系统总线164。此外,对于DRAM165的数据的读/写,处理装置还包括用于读提取据的直接存储器存取控制器(DMAC)(RDMAC)162和用于写入数据的WDMAC163。
处理装置还包括进行诸如图像处理的数据处理的数据处理设备101、以及根据本发明的示例性实施例的数据供给设备(缓存设备)110。数据处理设备可以包括任意数量的处理设备。各处理装置可以包括用于高速平稳处理的管线电路,但也可以包括能够进行低速灵活处理的处理器和程序。
CPU160经由控制总线161控制RDMAC162、WDMAC163和数据处理设备101,并进行整个处理装置的整体控制。根据来自CPU160的指令,RDMAC162经由系统总线164和DRAM控制器166读出存储在DRAM165中的诸如图像或程序的数据。然后,RDMAC162将获取的数据输入数据处理设备101。
数据处理设备101处理数据并将诸如处理的图像的处理的数据传输至WDMAC163。从CPU160预先给WDMAC163指令,一旦从数据处理设备101接收到数据,WDMAC163经由系统总线164和DRAM控制器166将数据存储在DRAM165中。处理装置通过执行上述操作进行诸如图像处理的数据处理。
在上述数据处理期间,数据处理设备101经由缓存设备11(接口112和116、FIFO140、预取逻辑141、提取逻辑142)从DRAM165读出必要数据(图像、视频、设置值、表、属性信息等),并使用用于数据处理的数据。此外,如果数据处理设备101包括处理器和程序,则数据处理设备101能够经由缓存设备110连续读出程序并执行数据处理。
接下来,将详细描述数据供给设备(缓存设备)110的操作。当数据处理设备101经由数据供给设备(缓存设备)110从DRAM165读出数据时,数据处理设备101将DRAM165中数据的存储地址113经由接口(I/F)112输入至缓存确定单元120。基于输入的存储地址113,缓存确定单元120确定缓存命中或缓存失效。
接下来,将参照图2详细描述图1中示出的处理装置中的缓存确定单元120的电路结构的示例。在以下描述中,将描述其内容寻址(行选)存储器类型为全相联缓存的缓存设备。
首先,上述存储器地址113被输入至缓存确定单元120。缓存确定单元120包括8个缓存标签230。因此,缓存确定单元120是8节点全相联缓存设备。此外,编号([0]至[7])被预先分配给8个缓存标签230。各编号表示相应的缓存存储器的“相对”缓存行号。以下描述编号是“相对”的原因。由8个比较器220确定已经输入的存储器地址113是否与8个缓存标签230“匹配”。然后,8个比较结果228从比较器220输出至确定器250。
如果8个比较结果228包含至少一个“匹配”,则确定为缓存命中。如果8个比较结果228没有一个与存储地址113匹配,则确定为缓存失效。从缓存确定单元120输出确定结果作为缓存失效标志240。
如果评价结果是缓存命中,则从缓存确定单元120输出“匹配的”缓存标签的“相对”行号作为行号245。
此外,如果测定结果是缓存失效(在图2的确定255中是),则已经输入的存储器地址113被写入缓存标签230,并更新缓存标签。缓存标签230是移位寄存器配置的存储区域。如果确定结果是缓存失效,则缓存标签的值根据移位操作而被转移到下游缓存标签。换句话说,缓存标签[1]的值被写入缓存标签[0],缓存标签[2]的值被写入缓存标签[1]。
然后,重复写入,并将缓存标签[7]的值写入缓存标签[6]。最后,存储地址113的值被写入缓存标签[7]。如果确定结果是缓存失效,则如上所述进行缓存标签的更新,并从缓存确定单元120输出行[7]的值作为行号245的值。
通过移出缓存标签[0]的最早的标签信息来置换缓存标签的上述原理被称为“FIFO原理(循环)”。由于能够容易地实现全相联缓存设备,因此一般将“FIFO原理(循环)”用作置换方法。
最后,缓存确定单元120将如上所述获得的缓存失效标志240和行号245与已经输入的存储地址113组合在一起,并将它们输出作为缓存确定结果125。
根据图1所示的处理装置,采用非阻塞缓存机构来隐藏在遭遇缓存失效时发生的再充填延迟。根据该缓存机构,即使缓存确定结果125是缓存失效,稍后需要的信息也将设置在中间队列(FIFO)140中。该信息是“行号和缓存失效标志”135。然后,数据处理设备101从DRAM165读出缓存失效的缓存数据。在数据存储在缓存存储器190中之前,执行下一数据的缓存确定处理。
根据该处理,能够在执行从DRAM165向缓存存储器190再充填缓存失效的缓存数据的同时,执行后续数据的缓存确定处理。因此,可以减少由于缓存失效而导致的性能降低。
此外,如下所述,访问仲裁单元130在缓存失效发生时从缓存确定单元120提取与存储地址113对应的存储地址132,并随后将存储地址132存储在发送FIFO150中。DRAM控制器166接收发送FIFO150中的存储地址132并从DRAM165读出期望的数据(再充填数据)。然后数据被写入缓存存储器190。
数据获取单元180从中间队列(FIFO)140提取“缓存失效标志”,并确定缓存确定结果为缓存失效还是缓存命中。如果缓存确定的结果为缓存命中,则数据获取单元180直接从缓存存储器190读出缓存数据185并将数据传输到I/F116。另一方面,如果缓存确定的结果为缓存失效,则以下参照“数据获取单元”所述,更新期望的缓存数据。然后,更新后的数据(缓存数据185)被传输到I/F116。
从DRAM165读出缓存失效的缓存数据以及更新缓存存储器190的处理是上述再充填处理的处理过程。
访问仲裁单元130在输入的缓存确定结果125是有效时进行操作,而在输入的缓存确定结果125无效时等待。此外,访问仲裁单元130根据作为缓存确定的结果的“缓存失效标志”有效/无效,来执行以下处理。
作为缓存确定的结果,如果“缓存失效标志”有效(缓存失效),则访问仲裁单元130确定空间是否在连接到访问仲裁单元130的两个FIFO中可用。换句话说,访问仲裁单元130确定空间是否在发送FIFO150和中间队列(FIFO)140中的各个的存储区域中可用。此外,访问仲裁单元130确定从数据获取单元180发送的预取许可信号181的状态。如果空间在两个FIFO中的各个中可用,并且预取许可信号181的状态为“许可”,则访问仲裁单元130在中间队列(FIFO)140中写入“行号和缓存失效标志”135。同时,访问仲裁单元130将存储地址132写入发送FIFO150。如果空间在两个FIFO中不可用或者预取许可信号181的状态为“禁止”,则访问仲裁单元130停止(暂停)缓存确定单元120,并等待直到空间在两个FIFO中的各个的存储区域中变得可用,并且预取许可信号181变为“许可”。
作为缓存确定的结果,如果“缓存失效标志”无效(缓存命中),则访问仲裁单元130确定空间是否在中间队列(FIFO)140中可用。如果空间可用,则访问仲裁单元130将“行号和缓存失效标志”135写入中间队列(FIFO)140。如果空间不可用,则访问仲裁单元130停止(暂停)缓存确定单元120并等待直到空间在存储区域中变得可用。根据图1中的配置,“缓存失效标志”是1位信号,“行号”是3位信号。因此,在中间队列(FIFO)140中的“行号和缓存失效标志”的数据长度为4位。因此,即使中间队列(FIFO)140包括128个段,不是很大的64个字节也将满足容量。因此,容易增加全相联缓存标签的结点数和中间队列(FIFO)的段数。因此,中间队列(FIFO)140不限制配置。
此外,上述“缓存确定单元”和“访问仲裁单元”的配置基于与以下所述的“数据获取单元”对应的预取配置(装置/电路/逻辑)。此外,“缓存确定单元”和“访问仲裁单元”连接到需要数据的预定管线段的前面的管线段,并执行预定的管线段的预处理。
数据获取单元180确定要处理的数据是否存在于中间队列(FIFO)140的存储区域中。如果中间队列(FIFO)140为空,则表示要处理的缓存确定结果不存在,并且数据获取单元180等待直到数据存储在存储区域。数据获取单元180从中间队列(FIFO)140获取作为缓存确定的确定结果的“行号和缓存失效标志”。然后,数据获取单元180根据缓存失效标志有效/无效来获取下一缓存数据。
图3A例示数据获取单元180的缓存数据获取操作的示例。如图4A所示,根据本示例性实施例的缓存存储器190包括“数据区域(发送区域,缓存区域)”和“接收区域”。此外,接收指针和数据指针包含在数据获取单元180中。接收指针管理接收区域的信息,数据指针管理数据区域的信息。
在步骤S305中,数据获取单元180从中间队列(FIFO)140获取“行号和缓存失效标志”。在步骤S320中,数据获取单元180确定缓存失效标志是否有效。如果缓存失效标志无效(缓存命中)(在步骤S320中的否),则处理前进到步骤S360。在步骤S360中,数据获取单元180基于从中间队列(FIFO)获取的行号以及缓存存储器190的接收指针和数据指针,计算缓存数据的存储地址。然后,数据获取单元180根据获取的地址从缓存存储器190获取存储的数据作为读取数据192。在步骤S365中,数据获取单元180将已被请求的缓存数据185经由I/F116传输到数据处理设备101。下面将描述存储地址的计算方法。
另一方面,在步骤S320中,如果缓存失效标志有效(缓存失效)(步骤S320中的是),则处理进入到步骤S340。在步骤S340中,数据获取单元180确定是否存在接收指针和数据指针之间的差。如果不存在指针之间的差(值为0)(步骤S340中的否),则数据获取单元180确定来自DRAM165的请求的再充填数据尚未到达缓存存储器190,并且处理前进到步骤S345。在步骤S345中,数据获取单元180等待直到从DRAM165传输再充填数据。
如果存在指针之间的差(值不为0)(步骤S340中的是),则处理前进到步骤S350。在步骤S350中,由于从DRAM165发送的请求的再充填数据已经存储在缓存存储器190中,因此数据获取单元180更新数据指针。步骤S350之后的处理与在步骤S320中缓存失效标志被确定为无效时进行的处理类似。
与上述缓存数据的获取操作并行地,数据获取单元180接收请求的再充填数据。图3B例示了数据获取单元180对再充填数据的接收操作的示例。
在步骤S380中,数据获取单元180确定是否从DRAM165接收到请求的再充填数据。如果已接收到再充填数据(步骤S380中的是),则处理进入到步骤S385。在步骤S385中,数据获取单元180更新接收指针。在步骤S390中,数据获取单元180确定接收指针和数据指针之间的差是否等于预定的接收阈值。
如果指针之间的差等于预定的接收阈值(步骤S390中的是),则数据获取单元180确定数据获取单元180不能再接收再充填数据,处理进入到步骤S394。在步骤S394中,数据获取单元180将预取许可信号181变为“禁止”,然后处理结束。在步骤S390中,如果指针之间的差小于预定的接收阈值(步骤S390中的否),则处理进入到步骤S392。在步骤S392中,由于能够接收从DRAM165发送的再充填数据,因此数据获取单元180不改变预取许可信号181,预取许可信号181保持“许可”。
根据电路配置,访问仲裁单元130处于数据获取单元180的前段。因此,即使访问仲裁单元130在从数据获取单元180接收预取许可信号181之后停止访问DRAM中的数据(数据请求),这也可能太迟。考虑到由于电路中各单元的位置关系而导致的延迟差,可以预先将接收阈值设置为小于能够接收的段数的值。
此外,作为精确的方法,可以新定义再充填等待数。然后,能够根据再充填等待数生成预取许可信号181。新定义的再充填等待数从“0”开始,并且每当缓存失效发生时由访问仲裁单元130递增1,每当再充填数据被传输到数据获取单元180时递减1。
换句话说,再充填等待数表示在已经提交数据请求时还没有到达提取配置的再充填数据的条数。接收的再充填数据的条数(接收指针和数据指针之间的差)和再充填等待数的总数是在将来要接收的再充填数据的条数。如果在将来要接收的再充填数据的条数小于接收阈值,则预取许可信号181为“许可”。如果在将来要接收的再充填数据的条数等于接收阈值,则预取许可信号181为“禁止”。
将参照图4B、4C和4D描述由数据获取单元180和缓存存储器190进行的操作的示例。
首先,状态[0]是刚好在复位处理之后的缓存存储器190的初始状态。当缓存存储器190处于初始状态时,接收指针指示“0”。此外,指示数据区域的顶端的数据指针指示“0”。根据图4B、4C和4D中的示例,接收区域包括4段,数据区域包括8段。
缓存存储器190是包括总共12段的存储区域。编号“0”到“11”中的各个被分配给从图中存储区域的底端到顶端的各段。各数字表示缓存存储器190的地址。此外,存储区域的一段是能够存储与一次DRAM访问(数据请求)对应的再充填数据(再充填长度)的存储区域。换句话说,一段对应于一个缓存行。
如果访问仲裁单元130由于一次失效命中而接收一次再充填请求,并且如果所请求的再充填数据到达数据获取单元180([A]接收一条充填数据),则缓存存储器190的状态变为状态[1]。
在状态[1]中,根据图3B所示的操作过程,一条再充填数据存储在缓存存储器190中。然后,接收指针增加到“1”。由于数据指针保持在“0”,因此接收指针和数据指针之间的差将是“1”。该差表示接收数(接收的数量)。由于接收区域中的段数是4,所以接收区域将为剩下的三段。
接下来,发生一次缓存失效([B]发生一次缓存失效),缓存失效的数据经由中间队列(FIFO)140被输入数据获取单元180。然后,缓存存储器190的状态被改变为状态[2]。
在状态[2]中,根据图3A所示的操作过程,一条缓存数据有效。因此,数据指针指示“1”。数据指针指示数据区域的上限,并将数据指针指示的位置虚拟确定为数据区域的行号“8”。关于数据指针指示“1”的状态[2],有效的缓存数据在缓存存储器190的地址为“0”的区域中。
由数据指针指示的“1”对应于行号“8”,而地址为“0”的区域对应于行号“7”(=8-1)。这对应于上述关于“缓存确定单元”的操作,其中,当确定的结果是缓存失效时行号是“7”。然后,接收上述再充填数据的接收区域的一部分被数据区域替代。
与环FIFO的情况相同,认为缓存存储器190的“11”的下一地址是“0”。由于地址“0”对应于行号“7”,因此地址“11”的区域对应于行号“6”。此外,地址“10”的区域对应于行号“5”。同一规则适用于其他地址,地址“5”的区域对应于行号“0”。数据区域为从地址“5”到“11”和“0”。
剩下的地址“1”到“4”对应于接收区域。在状态[2]中,因为数据指针的值等于接收指针的值,所以接收到的再充填数据变为存储的缓存数据。因此,恢复接收区域的一段。换句话说,接收区域的一部分被数据区域替代,更新缓存存储器的接收区域的分配。
此外,当发生四次连续的失效命中时,访问仲裁单元130提交四次再充填请求。然后,当由数据获取单元180接收四条再充填数据([C]接收四条再充填数据)时,缓存存储器190的状态变为状态[3]。
在状态[3]中,四条再充填数据存储在缓存存储器190中。然后,接收指针指示“5”。由于数据指针的值是不变的(“1”),所以接收指针和数据指针之间的差将是“4”。
该差表示接收数。由于接收区域包括4段,所以在接收区域不存在可用的段。为了简化说明,上述接收阈值被设置为“4”,这与接收区域的段数相同。由于接收数等于接收阈值,所以不能再接收再充填数据。因此,数据获取单元180将预取许可信号181变为“禁止”,并将该信号传输到访问仲裁单元130。因此,非阻塞访问被暂时停止。预取配置停止向存储设备的数据请求。
此外,缓存失效连续发生四次([D]缓存失效连续发生四次),数据连续输入数据获取单元180。因此,缓存存储器190的状态变为状态[4]。
在状态[4]中,4条缓存数据有效。然后,数据指针指示“5”,可用的数据区域将为剩余的三段。
然后,四条再充填数据被接收([E]接收到4条再充填数据),状态变为状态[5]。此外,缓存失效连续发生四次([F]缓存失效连续发生四次),状态变为状态[6]。
在状态[6]中,接收指针和数据指针都指示“9”。数据区域为地址“1”到“8”,接收区域的为地址“9”到“11”和“0”。当状态从状态[5]变为状态[6]时,剩余的数据区域减少为0段。从此之后,一些有效的缓存数据存储在数据区域的所有8个段中。
此外,在状态[6]中,在状态[2]中地址“0”处存储的缓存数据存在于数据区域之外的接收区域。该缓存数据是最早的,并且在状态[5]到状态[6]的处理期间从数据区域丢弃。由于从早的缓存数据起按顺序置换缓存数据,所以该方法与FIFO(循环)的置换方法匹配。以这种方式,接收区域的一部分被数据区域的一部分置换,数据区域的一部分被接收区域的一部分置换。因此,更新接收区域的分配。
根据与上述操作类似的操作,缓存存储器190的状态根据操作[G]和[H]变为状态[7]和状态[8]。
虽然非阻塞操作在图4C的状态[3]停止,但由于接收数已达到接收阈值,所以有效的缓存数据没有存储在从状态[0](初始状态)到状态[3]的数据区域中。换句话说,从状态[0](初始状态)直到所有的数据区域充填满缓存数据,接收阈值可以被设置为12段以替代4段。以这种方式,增加了初始状态中的接收区域。
根据上述配置,能够防止在早期阶段可能发生的非阻塞操作,并且能够进一步改善性能。由于接收区域和数据区域是一体的,所以能够实现这种改善。
上述“数据获取单元”具有用于获取请求的数据的提取配置(设备/电路/逻辑)。获取的数据被提供至预定的管线段。
使用根据本示例性实施例的缓存设备,能够通过简单的配置实现能够进行非阻塞操作的全相联缓存设备。此外,虽然传统的技术除了非阻塞操作的缓存存储器之外还需要用于接收的充填FIFO,但根据本示例性实施例的方法,由于缓存存储器区域的一部分没有分配给接收区域,所以充填FIFO不是必需的。
通常,如果通过内置SRAM实现存储区域,则当同一容量的存储区域由多个内置SRAM而不是一个内置SRAM构成时,电路大小增加。根据本示例性实施例的方法,由于传统技术的充填FIFO的操作和缓存存储器通过一个内置SRAM实现,所以能够减少缓存设备的电路大小。
此外,根据传统的技术,当缓存失效发生时,再充填数据被暂时写入充填FIFO,从充填FIFO读出再充填数据,并且再充填数据再次被写入缓存存储器以用作缓存数据。换句话说,根据传统的技术,在数据能够用作缓存数据之前,关于充填FIFO和缓存存储器,需要至少两次写入和一次读取。
根据本示例性实施例的方法,由于数据接收区域和数据存储区域集成在一个存储区域中,因此当缓存失效发生时,关于存储区域只需要一次写入和一次读取。如果本示例性实施例的方法由硬件实现,则也能够简化内置SRAM的控制电路。此外,如果本示例性实施例的方法由软件实现,则由于能够减少对存储区域的访问次数,所以能够实现高速处理。
本示例性实施例的目的是在缓存存储器中集成接收区域,并减少对缓存存储器的访问次数。因此,没有必要通过使用接收指针和数据指针将缓存存储器与接收区域相关联。例如,如果准备包括缓存存储器和接收区域之间的关系的对应表(链表),则能够根据预取单元的信息更新该对应表(链表)。以这种方式,能够减少对缓存存储器的访问次数。
此外,本示例性实施例也能够被应用于利用FIFO原理(循环)的全相联缓存设备。
接下来,将描述本示例性实施例的数据供给方法应用于与全相联缓存设备不同的利用内容寻址(行选)存储器的缓存设备(诸如直接映射缓存或组相联缓存)的情况。
由于上述配置使用内容寻址(行选)存储器的全相联缓存存储器,因此,通常,缓存标签由寄存器配置。因此,如果大量缓存标签使用在电路中,则电路大小增加。直接映射缓存和组相联缓存的优点是它们能够通过针对缓存标签使用诸如SRAM的存储设备(标志存储器)减小电路大小。使用寄存器的缓存标签也能够用于直接映射缓存和组相联缓存。
接下来,将参照图5A和5B描述直接映射缓存和组相联缓存的“缓存确定单元”和“数据获取单元”。主要描述与图2所示的配置的差异,将不重复与参照图2描述的组件类似的组件的描述。
首先,将参照图5A详细描述图1所示的处理装置中的缓存确定单元120的电路配置的示例。
首先,上述存储地址113被输入到缓存确定单元120。缓存确定单元120在标签存储器(SRAM)中包括N个缓存标签530。因此,缓存确定单元120是N行直接映射缓存。此外,编号[0]至[N-1]被预先分配给N个缓存标签530。每个编号对应于缓存存储器的相应缓存行号。
缓存确定单元120从存储地址113中提取与上述缓存标签[0]至[N-1]对应的信号,并将信号设置为低位地址515。然后,缓存确定单元120提取表示剩余的值的信号并将该信号设置为高位地址512。接下来,通过使用低位地址515,缓存确定单元120从缓存标签530提取相应的缓存标签[K]535。然后,缓存确定单元120使用比较器520以确定高位地址512是否匹配缓存标签[K]535。确定的结果(一个比较结果528)从比较器520输出至确定器550。
如果比较结果528为“匹配”,则确定为缓存命中。如果比较结果528不是“匹配”,则确定为缓存失效。确定的结果从缓存确定单元120作为缓存失效标志240输出。
此外,如果评价结果是缓存失效(确定555中的是),则存储地址113被写入缓存标签530,并更新缓存标签。如果使用直接映射缓存,则因为只有一个缓存标签存在,所以没有必要考虑置换方法。无论评价结果是缓存命中还是缓存失效,低位地址515的值都从缓存确定单元120作为行号245输出。
从以上描述可以看出,一般的直接映射缓存的缓存确定配置(设备/电路/逻辑)能够用于缓存确定单元120。
类似地,将参照图5B详细描述图1所示的处理装置中的缓存确定单元120的电路配置的示例。图5B例示4路组相联缓存的示例。由于许多操作与上述直接映射缓存的缓存确定单元的操作类似,所以仅描述不同点。
图5B所示的缓存确定单元120在缓存存储器(SRAM)中包括4×N个缓存标签530。因此,缓存确定单元120是N行4路组相联缓存的缓存设备。此外,编号[0][*]到[N-1][*]中的各个被预先分配给N个缓存标签530中的各个。该编号表示相应的缓存存储器的缓存行号。此外,[*]是路数。由于图5B所示的缓存设备是4路缓存,因此值[0]到[3]中的一个被输入[*]。
接下来,缓存的确定单元120使用低位地址515从缓存标签530提取四个相应的缓存标签(缓存标签[K][0]至[K][3])535。然后,缓存确定单元120使用四个比较器520,以确定高位地址512是否匹配四个缓存标签[K][0]至[K][3]535中的各个。然后,一个比较结果528从四个比较器520中的各个输出至确定器550。如果四个比较结果528中的任一个为“匹配”,则确定为缓存命中。此外,如果四个比较结果528中没有一个为“匹配”,则确定为缓存失效。确定结果从缓存确定单元120作为缓存失效标志240输出。
此外,如果确定结果是缓存失效(确定555中的是),则根据FIFO原理(循环)的置换方法选择最早的路数。该路数的缓存标签被存储地址113置换,而其他路数的其他缓存标签保持不变。然后,更新缓存标签530。
从上面的描述可以看出,一般的组相联缓存的缓存确定配置(设备/电路/逻辑)能够用于缓存确定单元120。
接下来,将参照图6描述具有与图1所示的数据供给设备不同的配置的数据供给设备(缓存设备)。根据如图6所示的配置,如果缓存失效发生并且从存储设备请求数据,则缓存失效发生时的行号存储在“行号的中间队列(FIFO)645”中。然后,数据获取单元180从中间队列(FIFO)645中获取表示缓存失效发生时再充填数据在缓存存储器中的存储位置的行号。如果空间在中间队列(FIFO)645中不可用,则访问仲裁单元130自然停止。
将参照图7A和7B描述两种内容寻址(行选)存储器类型的缓存存储器190的示例。图7A例示缓存存储器190是直接映射缓存的示例。图7B例示缓存存储器190是4路组相联缓存的示例。图7A和图7B中的存储区域具有同一容量。
在图7A和7B中,针对一个缓存行预先分配8个存储位置。根据直接映射缓存,7个接收区域和1个数据区域被分配给一个缓存行。根据4路组相联缓存,4个接收区域和4个数据区域被分配给一个缓存行。每个缓存存储器具有一个缓存行的多个存储位置,并且根据从外部设备对数据获取单元180设置的寄存器设置,能够将多个存储位置划分为接收区域和数据区域。
首先,根据针对一个地址可寻址的缓存标签的数量分配数据区域的存储位置。换句话说,针对直接映射缓存的数据区域设置一个存储位置,针对4路组相联缓存的数据区域设置4个存储位置。然后,剩余的存储位置被设置为接收区域。以这种方式,通过改变接收区域和数据区域中存储位置的分布,同一容量的缓存存储器能够用于不同分布类型的内容寻址(行选)存储器。即使缓存确定单元120被改变为使用不同类型的内容寻址(行选)存储器的确定电路,也能够使用数据获取单元180和缓存存储器190而无需任何改变。
虽然根据内容寻址(行选)存储器的类型从存储区域分配数据区域,但是关于剩余的存储区域,至少一个存储位置需要作为接收区域。不必总是将所有剩余存储区域分配给接收区域。例如,通过改变计算接收指针和数据指针的方式,剩余的存储位置能够用于不同的目的。
图8A例示由数据获取单元180进行的缓存数据的获取操作的示例。图8B例示再充填数据的接收操作的示例。在图7A和7B中所示的数据获取单元180包括各缓存行的接收指针和数据指针。当数据获取单元180进行数据获取操作和再充填数据接收操作时,数据获取单元180需要基于相关的行号选择相应的接收指针和数据指针。
关于图8A中的数据获取操作,在步骤S805中,数据获取单元180从中间队列(FIFO)140获取“行号和缓存失效标志”作为要处理的缓存确定结果。在步骤S802中,数据获取单元180获取与行号对应的接收指针和数据指针。
关于图8B中的再充填数据接收操作,在步骤S882中,数据获取单元180从缓存失效的行号的中间队列(FIFO)645获取相关行号。在步骤S885中,基于所获取的行号,数据获取单元180获取并更新相应的接收指针。
获取的在相应的接收指针和数据指针之后的数据获取操作和再充填数据操作与以上参照图3A和3B描述的操作类似。
在由上述方法获取行号并且由行号确定缓存存储器中的存储区域之后的操作以及接收指针与数据指针之间的关系与以上参照图3A和3B描述的操作和关系类似。
从数据获取单元180发送到访问仲裁单元130的预取许可信号681是所有缓存行的一组一位许可信号,基于与各缓存行对应的接收指针和数据指针计算各许可信号。这点与上述配置不同。
组相联缓存的内容寻址(行选)存储器采用如同上述配置的FIFO原理(循环)的置换方法。然而,由于直接映射缓存的内容寻址(行选)存储器的内容寻址数是一,所以它不被称为FIFO(循环)置换方法。在这点上,直接映射缓存的内容寻址(行选)存储器与其他类型的内容寻址(行选)存储器不同。
上述“数据获取单元”具有用于根据诸如直接映射缓存或组相联缓存的内容寻址(行选)存储器的类型获取所请求的数据的提取配置(设备/电路/逻辑)。
根据图5A和5B所示的数据供给设备(缓存设备),通过简单配置能够实现能够使用直接映射缓存或组相联缓存进行非阻塞操作的缓存设备。此外,虽然除根据传统技术的缓存存储器之外,还需要用于非阻塞操作的接收的充填FIFO,但是根据本示例性实施例的方法,仅缓存存储器的区域的一部分需要分配给接收区域,并且也没有必要准备充填FIFO。
此外,根据内容寻址数,在缓存确定电路中的预取配置中的直接映射缓存能够被预取配置中的组相联缓存置换,反之亦然。如果改变缓存确定电路,则关于提取配置中的数据获取单元和缓存存储器,改变存储区域中的接收区域和数据区域的容量。根据本示例性实施例,能够实现与各种内容寻址数对应的数据供给设备(缓存设备),同时减少设计工时。
在上述示例中,本示例性实施例的数据供给方法应用于缓存设备。然而,显而易见的是,数据供给方法可以应用于缓存设备以外的设备。虽然缓存确定单元120根据输入存储地址确定缓存命中/失效,并且缓存设备从缓存存储器获取相应的缓存数据,但是数据处理设备101能够向访问仲裁单元130直接请求存储地址的数据而无需涉及缓存确定单元120(不包括缓存确定单元120)。
此时,数据处理设备101例如通过定序电路,以预先确定的模式重复提交对存储设备更新数据的请求(与缓存失效对应)和来自存储设备的再充填数据的请求(与缓存命中对应)。虽然数据获取单元180根据预确定的模式接收再充填数据,但是数据获取单元180也在数据缓冲器(与缓存存储器对应)中更新数据。因此,数据获取单元180向数据处理设备101连续供给存储设备中的请求数据,同时更新数据。
根据上述的数据供给设备,通过非常简单的配置能够实现关于数据获取和数据缓冲器中的数据更新的非阻塞操作。此外,虽然除了根据传统技术的非阻塞操作的缓存存储器,还需要用于接收的充填FIFO,但是本示例性实施例的方法不需要充填FIFO,因为数据缓冲器的一部分区域被分配给接收区域。
此外,根据以上描述,已描述能够根据非阻塞操作改进性能的设备。然而,显而易见的是,根据本示例性实施例的处理装置适用于不涉及中间队列(FIFO)的阻塞操作。例如,在图9中例示不包括中间队列(FIFO)的处理装置的示例。访问仲裁单元直接将“行号和缓存失效标志”935传输到数据获取单元。然后,预取许可信号981从数据获取单元发送到访问仲裁单元。以这种方式实现阻塞操作。
如果缓存失效标志为“有效”,则直到在接收区域中再充填所请求的数据,预取许可信号981被改为“禁止”,使得停止访问仲裁单元的预取操作。另一方面,如果缓存失效标志为“无效”,则预取许可信号981作为“许可”保持不变,并继续访问仲裁单元的预取操作。
由于接收指针和数据指针之间的差保持在“0”,直到再充填请求的数据,因此根据参照图3A和3B描述的处理流程,数据获取单元停留在“等待”。因此,处理装置能够处理上述阻塞操作而不出现矛盾。关于阻塞操作,处理装置能够处理阻塞操作,即使接收区域为0段。然而,为了满足本示例性实施例的目的,维持在接收区域的一段接收再充填数据并将数据存储为缓存数据的过程。因此,数据获取单元并不需要根据操作进行修改。
此外,根据以上描述,作为本示例性实施例的特征的用于管理接收区域的信息(接收指针)和用于管理数据区域的信息(数据指针)包括在数据获取单元中。因此,一般的缓存确定配置(设备/电路/逻辑)能够用于缓存确定单元。然而,该管理信息也可以与缓存标签一起存储在缓存确定单元中。然后,可以由缓存确定单元预先进行由数据获取单元进行的缓存数据的存储位置地址的计算以及接收指针和数据指针之间的差的计算。然后,计算结果可以经由中间队列(FIFO)发送到数据获取单元。
特别地,关于图5A和5B的配置,针对各缓存行,需要存储管理信息。通过将管理信息与缓存标签一起存储在缓存确定单元中的标签存储器中,能够在存储配置中实现缓存标签和管理信息的集成。
此外,根据以上描述,用于管理接收区域的信息(接收指针)和用于管理数据区域的信息(数据指针)用于描述操作。然而,不必仅由表示存储区域中的存储位置的指针来进行管理。例如,也可以由表示接收区域的状态的接收指针和接收数来管理。
根据该管理,数据指针可以被认为是通过从接收指针中减去接收数所得到的值。然后,每当接收再充填数据时,接收数递增一,并更新接收指针。此外,根据从预取配置输出的信息(缓存失效标志),如果该标志表示缓存失效,则接收数递减一。如果标志表示缓存命中,则接收数不变。
上述配置的优点是:本示例性实施例的数据供给设备只能够通过使用接收区域的管理信息来控制。换句话说,由于数据供给设备只能够通过接收区域的管理信息来控制,并且在数据的接收中所需的接收区域被分配给用于存储数据的存储区域,因此上述配置合乎本示例性实施例的目的。
(其他实施例)
本发明的各方面还可以通过读出并执行记录在存储设备上的用于执行上述实施例的功能的程序的系统或装置的计算机(或诸如CPU或MPU的设备)来实现,以及通过由系统或装置的计算机通过例如读出并执行记录在存储设备上的用于执行上述实施例的功能的程序来执行各步骤的方法来实现。鉴于此,例如经由网络或者从用作存储设备的各种类型的记录介质(例如计算机可读介质)向计算机提供程序。
虽然参照示例性实施例对本发明进行了描述,但是应当理解,本发明并不限于所公开的示例性实施例。应当对所附权利要求的范围给予最宽的解释,以使其涵盖所有这些变型例以及等同的结构和功能。
Claims (14)
1.一种数据供给设备,所述数据供给设备包括:
输出单元;
提取单元,其包括用于存储数据的缓存存储器的存储区域,并被配置为将存储在所述存储区域中的数据供给至所述输出单元,其中所述存储区域包括接收区域和发送区域;以及
预取单元,其被配置为从外部存储器设备请求,在所述输出单元请求外部数据之前要发送至所述输出单元并且确定未被存储在所述存储区域的缓存失效数据,其中所述预取单元基于从所述提取单元输出的预取许可信号以及在所述预取单元和所述提取单元之间的中间队列的可用空间,从所述外部存储器设备请求所述缓存失效数据,所述预取许可信号表示所述预取单元是否能够将所述预取单元从所述外部存储器设备请求的所述缓存失效数据存储在作为所述存储区域的一部分的所述接收区域,
其中,所述提取单元被配置为将从所述外部存储器设备接收的所述外部数据存储在所述接收区域中,并在所述输出单元请求所述外部数据时,根据来自所述预取单元的所述请求分配已经存储有与来自所述预取单元的请求对应的所述外部数据的所述接收区域的一部分,作为发送区域的一部分,并且
其中,所述输出单元被配置为输出,存储在作为所述发送区域的一部分而由所述提取单元分配的所述接收区域的一部分中的数据。
2.根据权利要求1所述的数据供给设备,其中,所述提取单元被配置为分配所述发送区域作为所述接收区域以将从所述存储器供给的数据存储在所述接收区域中,并根据来自所述预取单元的请求重新分配存储有与所述请求对应的数据的所述接收区域的一部分作为所述发送区域。
3.根据权利要求1或2所述的数据供给设备,所述数据供给设备还包括管线单元,所述管线单元包括多个段,
其中,所述提取单元被配置为将数据供给至所述多个段中的一个;并且
其中,所述预取单元被配置为根据在由所述提取单元供给数据的段之前的段的操作请求数据。
4.根据权利要求1所述的数据供给设备,其中,所述数据供给设备被配置为在所述预取单元请求的所述缓存失效数据到达所述提取单元的情况下更新用于管理所述接收区域的管理信息。
5.根据权利要求1所述的数据供给设备,其中,所述数据供给设备被配置为改变所述接收区域相对于所述存储区域的容量。
6.根据权利要求4所述的数据供给设备,其中,所述数据供给设备被配置为输出所述许可信号并基于所述接收区域的管理信息停止来自所述预取单元的数据请求。
7.根据权利要求4所述的数据供给设备,其中,所述数据供给设备被配置为基于所述接收区域的管理信息等待来自所述提取单元的数据供给。
8.根据权利要求1所述的数据供给设备,其中,所述提取单元被配置为管理表示所述接收区域的接收指针和表示所述发送区域的数据指针,并通过更新所述接收指针或所述数据指针来改变所述接收区域或所述发送区域的分配。
9.一种包括根据权利要求1所述的数据供给设备的缓存设备,所述缓存设备还包括缓存确定单元,
其中,所述缓存设备被配置为将与所述缓存确定单元对应的再填充数据存储在所述提取单元的所述存储区域中。
10.根据权利要求9所述的缓存设备,其中,所述缓存设备被配置为使用循环置换方法。
11.根据权利要求9所述的缓存设备,其中,所述存储区域是内容寻址存储器类型,所述缓存设备是全相联缓存设备。
12.根据权利要求9所述的缓存设备,其中,所述存储区域是内容寻址存储器类型,所述缓存设备是组相联缓存设备。
13.根据权利要求9所述的缓存设备,其中,所述存储区域是内容寻址存储器类型,所述缓存设备是直接映射缓存设备。
14.一种存储器的数据供给设备的数据供给方法,所述数据供给设备包括:输出单元;提取单元,其包括用于存储数据的缓存存储器的存储区域,并被配置为将存储在所述存储区域中的数据供给至所述输出单元,其中所述存储区域包括接收区域和发送区域;以及预取单元,其被配置为从外部存储器设备请求,在所述输出单元请求外部数据之前要发送至所述输出单元并且确定未被存储在所述存储区域的缓存失效数据,其中所述预取单元基于从所述提取单元输出的预取许可信号以及在所述预取单元和所述提取单元之间的中间队列的可用空间,从所述外部存储器设备请求所述缓存失效数据,所述预取许可信号表示所述预取单元是否能够将所述预取单元从所述外部存储器设备请求的所述缓存失效数据存储在作为所述存储区域的一部分的所述接收区域,所述数据供给方法包括:
将从所述外部存储器设备接收的所述外部数据存储在所述接收区域中;
在所述输出单元请求所述外部数据时,根据来自所述预取单元的所述请求分配已经存储有与来自所述预取单元的请求对应的所述外部数据的所述接收区域的一部分,作为发送区域的一部分;以及
经由所述输出单元输出,存储在作为所述发送区域的一部分而被分配的所述接收区域的一部分中的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-111585 | 2011-05-18 | ||
JP2011111585A JP5730126B2 (ja) | 2011-05-18 | 2011-05-18 | データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102968386A CN102968386A (zh) | 2013-03-13 |
CN102968386B true CN102968386B (zh) | 2016-03-09 |
Family
ID=46087491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210153321.6A Active CN102968386B (zh) | 2011-05-18 | 2012-05-17 | 数据供给设备、缓存设备及数据供给方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9235522B2 (zh) |
EP (1) | EP2530598B1 (zh) |
JP (1) | JP5730126B2 (zh) |
CN (1) | CN102968386B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140129777A1 (en) * | 2012-11-02 | 2014-05-08 | Tencent Technology (Shenzhen) Company Limited | Systems and methods for dynamic data storage |
US9336142B2 (en) | 2013-11-06 | 2016-05-10 | International Business Machines Corporation | Cache configured to log addresses of high-availability data via a non-blocking channel |
US9715461B2 (en) * | 2014-03-03 | 2017-07-25 | Kabushiki Kaisha Toshiba | Cache memory control circuit and processor |
CN106710627B (zh) * | 2015-11-18 | 2019-11-26 | 凌阳科技股份有限公司 | 多晶胞芯片及其存储器装置 |
JP6902843B2 (ja) | 2016-10-07 | 2021-07-14 | キヤノン株式会社 | 画像処理装置および制御方法 |
JP6979777B2 (ja) | 2017-03-22 | 2021-12-15 | キヤノン株式会社 | インターフェース装置およびその制御方法 |
CN107608911B (zh) * | 2017-09-12 | 2020-09-22 | 苏州浪潮智能科技有限公司 | 一种缓存数据刷写方法、装置、设备及存储介质 |
CN110727700A (zh) * | 2019-10-22 | 2020-01-24 | 中信银行股份有限公司 | 多源流式数据整合成事务型流数据的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1217799A (zh) * | 1996-03-15 | 1999-05-26 | 微米技术有限公司 | 象素引擎数据高速缓存装置 |
US6754772B2 (en) * | 2001-11-15 | 2004-06-22 | Micron Technology, Inc. | Distributed cache |
US7657783B2 (en) * | 2005-06-23 | 2010-02-02 | International Business Machines Corporation | Apparatus and computer program product for testing ability to recover from cache directory errors |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293609A (en) * | 1991-04-19 | 1994-03-08 | International Business Machines Corporation | Hit-density-based replacement for data cache with prefetching |
US5623608A (en) * | 1994-11-14 | 1997-04-22 | International Business Machines Corporation | Method and apparatus for adaptive circular predictive buffer management |
US5983324A (en) * | 1996-03-28 | 1999-11-09 | Hitachi, Ltd. | Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof |
US5724613A (en) * | 1996-05-06 | 1998-03-03 | Vlsi Technology, Inc. | System and method for automatically enabling and disabling a prefetching capability |
US6658534B1 (en) * | 1998-03-31 | 2003-12-02 | International Business Machines Corporation | Mechanism to reduce instruction cache miss penalties and methods therefor |
JP2001273137A (ja) * | 2000-03-28 | 2001-10-05 | Toshiba Corp | マイクロプロセッサ |
EP1217526A1 (en) * | 2000-12-21 | 2002-06-26 | Texas Instruments Incorporated | Multilevel cache architecture and data transfer |
US6848030B2 (en) * | 2001-07-20 | 2005-01-25 | Freescale Semiconductor, Inc. | Method and apparatus for filling lines in a cache |
US20030105926A1 (en) * | 2001-12-03 | 2003-06-05 | International Business Machies Corporation | Variable size prefetch cache |
US7337273B2 (en) * | 2004-03-31 | 2008-02-26 | Microsoft Corporation | Strategies for reading information from a mass storage medium using a cache memory |
JP4575065B2 (ja) * | 2004-07-29 | 2010-11-04 | 富士通株式会社 | キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央制御方法 |
US7529891B2 (en) * | 2005-09-19 | 2009-05-05 | Microsoft Corporation | Balanced prefetching exploiting structured data |
JP2008234074A (ja) * | 2007-03-16 | 2008-10-02 | Fujitsu Ltd | キャッシュ装置 |
JP2009251713A (ja) * | 2008-04-02 | 2009-10-29 | Toshiba Corp | キャッシュメモリ制御装置 |
US8086804B2 (en) * | 2008-09-24 | 2011-12-27 | Oracle America, Inc. | Method and system for optimizing processor performance by regulating issue of pre-fetches to hot cache sets |
-
2011
- 2011-05-18 JP JP2011111585A patent/JP5730126B2/ja active Active
-
2012
- 2012-05-03 EP EP12166538.4A patent/EP2530598B1/en active Active
- 2012-05-09 US US13/467,774 patent/US9235522B2/en active Active
- 2012-05-17 CN CN201210153321.6A patent/CN102968386B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1217799A (zh) * | 1996-03-15 | 1999-05-26 | 微米技术有限公司 | 象素引擎数据高速缓存装置 |
US6754772B2 (en) * | 2001-11-15 | 2004-06-22 | Micron Technology, Inc. | Distributed cache |
US7657783B2 (en) * | 2005-06-23 | 2010-02-02 | International Business Machines Corporation | Apparatus and computer program product for testing ability to recover from cache directory errors |
Also Published As
Publication number | Publication date |
---|---|
EP2530598A1 (en) | 2012-12-05 |
JP2012243026A (ja) | 2012-12-10 |
US9235522B2 (en) | 2016-01-12 |
JP5730126B2 (ja) | 2015-06-03 |
US20120297143A1 (en) | 2012-11-22 |
EP2530598B1 (en) | 2021-02-24 |
CN102968386A (zh) | 2013-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968386B (zh) | 数据供给设备、缓存设备及数据供给方法 | |
USRE49273E1 (en) | Switch and memory device | |
US9218286B2 (en) | System cache with partial write valid states | |
CN106462495B (zh) | 存储器控制器以及基于处理器的系统和方法 | |
JP5229968B2 (ja) | 複数クラスデータキャッシュポリシー | |
US9075730B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
GB2522057A (en) | A data processing system and method for handling multiple transactions | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
US10079916B2 (en) | Register files for I/O packet compression | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
US10489296B2 (en) | Quality of cache management in a computer | |
CN103778070A (zh) | 多个块一致性操作的并行处理 | |
US10705977B2 (en) | Method of dirty cache line eviction | |
CN105260332A (zh) | 一种对cpld数据包进行有序存储的方法及系统 | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
CN110737607A (zh) | 管理hmb内存的方法、装置、计算机设备及存储介质 | |
US20110238925A1 (en) | Cache controller and method of operation | |
US20140095800A1 (en) | System cache with sticky removal engine | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
US11119924B2 (en) | Interface device including ports and a cache memory, and control method thereof | |
CN106339330A (zh) | 高速缓存刷新的方法及系统 | |
US11126568B2 (en) | Object coherence in distributed shared memory systems | |
CN116775560B (zh) | 写分配方法、缓存系统、片上系统、电子组件及电子设备 | |
US20090164732A1 (en) | Cache memory system and cache memory control method |
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 |