CN100349140C - 用于隐藏存储器刷新的装置和系统 - Google Patents
用于隐藏存储器刷新的装置和系统 Download PDFInfo
- Publication number
- CN100349140C CN100349140C CNB02819070XA CN02819070A CN100349140C CN 100349140 C CN100349140 C CN 100349140C CN B02819070X A CNB02819070X A CN B02819070XA CN 02819070 A CN02819070 A CN 02819070A CN 100349140 C CN100349140 C CN 100349140C
- Authority
- CN
- China
- Prior art keywords
- memory
- buffer memory
- memory block
- global bus
- 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.)
- Expired - Fee Related
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
-
- 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/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明涉及存储器体系结构与管理。更具体地说,本发明提供了一种方法、装置、系统和机器可读介质,以隐藏存储器阵列例如动态随机访问存储器的刷新周期。
Description
技术领域
本发明涉及存储器体系结构与管理。更具体地说,本发明提供了一种方法、装置、系统和机器可读介质,以隐藏存储器阵列的刷新周期。
背景技术
处理器的当前发展趋势已包括了更多的片上存储器层次结构,以减少平均延迟(latency)并满足带宽需求。传统上,片上缓存是用静态随机访问存储器(SRAM)而非动态访问存储器(DRAM)实现的。然而,每个SRAM单元(cell)都由6个晶体管构成,占用了大量的半导体面积,而每个DRAM单元可以包括耦合到电容器的单个访问晶体管以存储电荷。因此,对于相同的数据存储量,DRAM可以占用较少的面积。
例如,从存储器密度的角度来看,使用逻辑DRAM或嵌入式DRAM来实现片上缓存是一个好的可选方案,但是DRAM单元需要周期性地刷新,从而延迟了对DRAM的访问。刷新周期期间的延迟访问可能会导致可变的延迟,增加了存储器或缓存接口的复杂度。例如,处理器可能需要额外的接口电路,以在可能进行访问时接收标识,或者重新尝试对DRAM设备进行访问。因此,将SRAM与DRAM结合使用以减轻存储器接口的一部分复杂度,同时兼顾了存储器密度。
发明内容
本发明公开了一种用于隐藏存储器刷新的装置,包括:缓存,用于提供对存储器块的内容的访问;多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问;以及缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟。其中所述多于两条的全局总线包括:一对全局总线,耦合到所述缓存以发送一个位;第三全局总线,耦合到所述缓存以发送表示第二位的信号;以及一个电路,用于响应于所述信号与所述位的比较,通过所述全局总线对的至少一个总线将所述第二位写到所述缓存。
本发明还公开了一种用于隐藏存储器刷新的装置,包括:缓存,用于提供对存储器块的内容的访问;多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问;以及缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟,其中所述缓存控制器包括一个电路,所述电路响应于在一个周期的读阶段之后关闭通过所述多于两条的全局总线的第二全局总线对所述缓存的读访问,而在该周期的写回阶段期间打开通过所述多于两条的全局总线的第一全局总线的对所述缓存的写访问。
本发明还公开了一种用于隐藏存储器刷新的系统,包括:执行算术逻辑运算的核心;以及第一缓存,耦合到所述核心。所述第一缓存包括:第二缓存,用于提供对存储器块的内容的访问;多于两条的全局总线,用于提供对所述第二缓存和所述存储器块的并行访问;以及缓存控制器,用于通过并行地访问所述第二缓存和所述存储器块而在所述第二缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟。其中所述多于两条的全局总线包括:一对全局总线,耦合到所述第二缓存以发送第一位;第三全局总线,耦合到所述第二缓存以发送表示第二位的信号;以及一个电路,用于响应于所述信号与所述第一位的比较,通过所述全局总线对的至少一个总线将所述第二位写到所述第二缓存。
本发明还公开了一种用于隐藏存储器刷新的系统,包括:处理器;以及存储器设备,耦合到所述处理器。所述存储器设备包括缓存,用于提供对存储器块的内容的访问;多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问;以及缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而基本独立于刷新所述存储器块的延迟。其中所述多于两条的全局总线包括:一对全局总线,耦合到所述缓存以发送一个位;第三全局总线,耦合到所述缓存以发送表示第二位的信号;以及一个电路,用于响应于所述信号与所述位的比较,通过所述全局总线对的至少一个总线将所述第二位写到所述缓存。
附图说明
在附图中,相似的标号可以表示相似的元件:
图1示出了一个处理器,具包含通过总线耦合到一个代理(agent)和刷新隐藏存储器(refresh-hidden memory)的嵌入式刷新隐藏存储器。
图2示出了刷新隐藏存储器的实施例。
图3示出了用以隐藏刷新周期的全局总线连接(bussing)的实施例。
图4示出了用以隐藏刷新周期的全局总线连接的另一个实施例。
图5示出了隐藏刷新周期的实施例的流程图。
图6a-f示出了隐藏刷新周期的实施例的详细流程图。
图7a-f示出了隐藏刷新周期的示例性伪代码实施例。
图8示出了一种机器可读介质,其包含用以隐藏刷新周期的指令。
具体实施方式
下面是对附图中所示出的本发明的示例性实施例的详细描述。所述示例性实施例被详细地说明了,以使得可清楚地描述本发明。然而,所提供的细节并非是对实施例可以预见的改变的限制。本发明可预见的实施例的改变是如此之多,不可能逐一讨论,因此下面的详细说明用来使得这些实施例对本领域内的技术人员来说是显而易见的。
具体地说,图1示出了处理器100,其包含嵌入式刷新隐藏存储器120,刷新隐藏存储器120通过总线160耦合到代理170,并通过代理170耦合到刷新隐藏存储器190。处理器100例如可以是用于个人计算机或个人数字助理的通用中央处理单元。处理器100可包括通过存储器控制器140例如缓存控制器而耦合到刷新隐藏存储器120的核心110。核心110可耦合到刷新隐藏存储器120,以维护核心110经常访问的数据或指令。在一些实施例中,处理器100可以是多处理器(MP)系统的一部分,或包括一个MP系统。在MP系统中,例如,多个处理器可访问刷新隐藏存储器例如刷新隐藏存储器120,并且刷新隐藏存储器190可服务于多个处理器。
代理170可包括像北桥和南桥或者存储器控制器中心(hub)和输入/输出(I/O)控制器中心之类的电路,并且可通过总线160耦合到处理器100,以请求处理器100执行各种任务,例如浮点算术运算和逻辑运算,或者译码并执行指令。例如,代理170可通过总线160转发处理器100将执行的指令。所述指令可使得处理器100访问刷新隐藏存储器190以获得数据或代码,从而执行来自代理170的指令。在一些实施例中,刷新隐藏存储器120可包含将要写到刷新隐藏存储器190的被修改的数据,因而处理器100可访问所述被修改的数据,并且,在许多实施例中,代理170可直接访问刷新隐藏存储器190。核心110可将从系统存储器获取的数据或代码存储在刷新隐藏存储器120中,以当代理170进行类似或相同的请求时可促进对数据或代码的更快的访问。
刷新隐藏存储器120可包括需要定期刷新的存储单元,以保持存储在该存储单元的存储元件中的数据。可对访问存储器的设备隐藏刷新周期,因为刷新隐藏存储器120可能具有基本恒定的访问延迟,该延迟小于刷新周期。刷新隐藏存储器120可包括通过多于两条的全局总线而耦合到一个存储器块(memory bank)的缓存存储器块,并包括耦合到所述多于两条的全局总线的存储器控制器。在一些实施例中,刷新隐藏存储器120还可包括耦合到行译码器(row decoder)的标签缓冲区(tag buffer),以维护缓存中的存储器线(memory line)和存储器块中的存储器线之间的关联。在另一个实施例中,刷新隐藏存储器120可包含脏位缓冲区(dirty bitbuffer),以当缓存中的存储器线比存储器块中的对应存储器线更新时进行标识。在其他实施例中,标签缓冲区和/或脏位缓冲区可以包含在缓存中。
所述缓存可以是通过多于两条的全局总线而耦合第二存储器块的存储器块(在一些实施例中专用于缓存),以当该第二存储器块不可访问时保持对第二存储器块的内容的访问。当即将进行刷新或处于刷新周期期间时,第二存储器块可能不可访问。例如,当存储器块正在刷新并且刷新隐藏存储器120接收到对该存储器块的访问请求时,可通过访问缓存来满足该访问请求。如果访问是写请求,则数据可被写到缓存并与数据源、存储器块和行相关联。在存储器块变为可用时,写到缓存中的数据可通过所述多于两条的全局总线写到该存储器块。在一些场合下,当即将对存储器块进行刷新并且存在对该存储器块的写请求时,可阻塞刷新而将数据写到该存储器块。
另一方面,当访问是对正在被刷新的存储器块中的数据的读请求时,可从缓存读取该数据以满足读请求。例如,在读取一个存储器块线后,该线的拷贝可被存储在缓存中。下一次在该存储器块的刷新或即将刷新期间的访问请求读取该线时,可从该块的存储器线的缓存版本中获取该数据。在一些场合下,可响应于该请求,阻塞存储器块的刷新以读取存储器线,并将该线写到缓存。
刷新隐藏存储器120的所述多于两条的全局总线可被设计成有助于使用缓存来维持恒定的访问延迟。多于两条的全局总线可包括将一个或多个缓存耦合到一个或多个存储器块的全局总线。多于两条的全局总线还可耦合到存储器控制器140,以协调缓存和存储器块之间的交换(swap)。
在一些实施例中,所述多于两条的全局总线可包括2对全局总线,用于维护基本同时的缓冲中的操作和存储器块中的操作。例如,存储器控制器140可协调从一个存储器块读取数据放到第一全局总线对上,同时从第二全局总线对将数据写到一个缓存块。在其他实施例中,利用两条全局总线上的数据的二进制特性,可使用3条全局总线而不是两个全局总线对。例如,将要写到存储器块上的数据可以在一对全局总线上,而来自第二存储器块的1或0的标识可以在第三条全局总线上以被写到缓存。耦合到缓存和第三条全局总线的电路可能确定将要写到缓存的二进制信息与在第一对全局总线上的数据相同,因此缓存可写入来自第一对全局总线的数据。另一方面,该电路可能确定将要写到缓存的二进制信息是第一对全局数据总线上的信息的补码,并使用XOR(异或)逻辑来将来自第一对总线的数据的补码写到缓存块。
存储器控制器140可包括协调对缓存的数据写以避免延迟对存储器块的访问的逻辑。例如,存储器控制器140可处理对同一存储器块的多个连续的写,并且多个连续的写可能会与该存储器块的刷新相冲突。存储器控制器140可在存储器块的刷新期间将连续的写中的每一个都写到缓存,并且为每个被写到缓存的线设置脏位,以表示该存储器块的缓存线比存储在存储器块中的数据更新。存储器控制器140可几乎在访问另一个存储器块的同时将缓存中的存储内容与第一存储器块进行交换。例如,存储器控制器140可几乎在对第二存储器块进行写的同时将数据从缓存冲刷(flush)到第一存储器块。
存储器控制器140还可以处理当对同一个存储器块进行连续读时出现的刷新冲突。例如,当从第一存储器块请求多个连续读、即将对第一存储器块进行刷新并且缓存中充满了要对第二存储器块进行更新的数据时,存储器控制器140可阻塞对第一存储器块的刷新,以满足所述访问请求并将数据写到缓存块。几乎同时地,存储器控制器140可用缓存来更新第二存储器块的行或线。更具体地说,如果第一块包含10个存储行或线,则可将对第一存储器块的刷新阻塞10个周期,在此期间冲刷缓存并用第一存储器块的内容进行填充。
在一些实施例中,缓存可包括一个或多个存储器块的多个部分。这些实施例中的一些包括与所述多个缓存部分相关联的标签缓冲区和逻辑,以允许所述多个缓存部分基本上以类似于单个存储块的方式工作。在另一些实施例中,(多个)缓存可包括多个存储器块,工作为单个块,或者划分成诸如(多个)代码、数据、所服务的逻辑块和/或所服务的(多个)代理等多个类别。例如,一个缓存或其一部分可以作为存储器块1到5的缓存,第二缓存可为代表高百分比的缓存需求的两个代理存储缓存数据,而第三缓存可处理其余的缓存需求。在这些实施例中的若干实施例中,存储器控制器140可基于实际的使用来分布可用的缓存。
许多实施例对刷新隐藏存储器中的缓存实现了直接映射。当直接映射到缓存时,每个存储单元(memory location)都被映射到该存储单元与许多其他存储单元共享的单个缓存线。所述存储单元可能会争用该缓存线,因此共享该缓存线的许多地址中的一个在给定时间可以使用该缓存线。因此,缓存的直接映射可允许存储器控制器140的电路以不太复杂的设计进行快速的命中(hit)检查。例如,如果缓存包括与每个存储器块相同数量的线,则该缓存的第N个线可服务于每个存储器块的第N个线。因此,当接收到访问请求时,存储器控制器140可通过将与该访问的线号相关联的标签与所述访问的块地址进行比较,从而确定对应于访问地址的线是否存储在缓存中。
其他实施例可对刷新隐藏存储器120和190中的缓存实现全关联的缓存映射。全关联缓存映射可使得任意存储单元可存储在任意的缓存线中。然而,全关联缓存映射可能包括复杂的搜索算法以检查命中。即便如此,对于相同大小的缓存,全关联缓存映射可提供更好的命中率。
其他实施例可通过对刷新隐藏存储器120和190中的缓存实现N路组关联缓存映射,从而包括直接映射和全关联映射之间的命中和命中率。N路组关联缓存映射可将缓存划分成多个组,每一组包括N个缓存线,其中每个组可由任意存储器地址所共享。
一些实施例可包括阻塞式缓存,而一些实施例包括非阻塞式缓存。阻塞式缓存一次可处理一个出现的请求。在缓存缺失(miss)之后,缓存可等待系统存储器或刷新隐藏存储器190提供数据。另一方面,非阻塞式缓存可具有在等待系统存储器提供数据以用于缺失的同时对其他请求进行处理的能力。
许多实施例可不加区分地同时缓存数据和处理器指令。然而,一些实施例可划分缓存,从而具有用于代码的缓存和另一个用于数据的缓存。基于应用程序,一种方式可能比另一种更有效。
现在参考图2,示出了刷新隐藏存储器的实施例。该刷新隐藏存储器包括存储器部分291和逻辑部分292。存储器部分291包括存储器块200、存储器块210和缓存块230。存储器块200和210以及缓存块230可包括动态存储器。存储器块200和210可响应于访问请求而存储或获取数据。缓存块230可通过多于两条的全局总线237而耦合到资源220和210,以交换存储器线。标签缓冲区225可将标签与缓存块230中的线相关联,以跟踪缓存线的数据源(例如存储器块和行)。而且,标签缓冲区225可包括用于脏位缓冲区220的存储器,以当缓存块230中的缓存线可能包括要写到该数据源的数据时进行标识。例如,当将数据写到存储器块的线的访问与该存储器块的刷新冲突时,存储器控制器280可将数据写到缓存块230,并为该缓存线设置脏位。在下一个可用周期中,存储器控制器280可将该数据从缓存线写到存储器块。
刷新隐藏存储器的逻辑部分292可包括存储器控制器280;块译码器240;刷新指针、逻辑和译码器250;行译码器260以及局部地址译码器205、215和235。块译码器240例如可包括用于对地址的块部分进行译码的逻辑,以将存储器块200的地址和存储器块210的地址区分开来。行译码器260可对来自访问请求的地址的第二部分进行译码,包括行地址,而逻辑205、215或235可对局部块地址进行译码,取决于与该地址相关联的存储器块。而且,选择存储器块中的行和标签缓冲区可提供对与该存储器块相关联的缓存线的访问。在其他实施例中,行译码器260可包括用于对标签缓冲器225中的标签进行译码的逻辑,以确定缓存块230中的线和存储器块200或存储器块210之间的关联。
逻辑205、215或235可确定可访问哪个存储器块。在本实施例中,逻辑205、215或235可通过选择来自刷新指针、逻辑和译码器250或行译码器260的使能信号,接收来自块译码器240,刷新指针、逻辑和译码器250和标签缓冲器225的信息,以确定要访问的存储器块。存储器控制器280还可包含用于协调在多个块间进行的数据传输的逻辑,所述数据传输是通过多于两条的全局总线237进行的。
刷新指针、逻辑和译码器250可包括何时可刷新存储器块200、存储器块210和缓存块230的逻辑。所述存储器块可被依次刷新,因此该指针可包含表示下一个将被刷新的存储器块和行的号码。刷新指针、逻辑和译码器250的逻辑可确定何时启动存储器块的刷新以及何时刷新该存储器块。在一些实施例中,该逻辑还可以确定何时可阻塞存储器块和行的即将发生的刷新。最后,刷新指针、逻辑和译码器250可对由该指针所标识的存储器块和行进行译码,以启动刷新周期,并将指针地址与访问地址或与缓存线相关联的标签进行比较。
响应于接受到对存储器块的访问请求,存储器控制器280可根据标签缓冲器225中的标签的值、访问请求的地址的块字段以及(当即将刷新时)刷新指针的块字段,确定一个动作。存储器控制器280可访问标签缓冲区,将标签缓冲区与块地址进行比较,并将标签缓冲器225与来自刷新指针、逻辑和译码器250的刷新指针进行比较。存储器控制器280基本可避免对存储器块的访问和刷新之间的冲突,如由刷新指针、逻辑和译码器250所确定的那样。在一些实施例中,存储器控制器280可被设计成通过阻塞刷新若干周期来解决刷新与访问之间的一些冲突。
存储器控制器280可通过多于两条的全局总线237而在存储器块例如存储器块200和存储器块210的存储器与缓存块230进行交换。例如,交换操作可包括两个动作:(1)基本同时地从存储器块200读并对缓存块230写;以及(2)基本同时地从缓存块230读并对存储器块210写。例如,在一些实施例中,可在单个周期内完成这两个动作。多于两条的全局总线237可提供一个装置,以执行这些操作,并可根据应用而进行不同的设计。图3和4示出了多于两条的全局总线237的两个示例性实施例。
在一些实施例中,存储器控制器280能够接收指令来用缓存的内容更新(多个)存储器块,所述指令例如是冲刷缓存。可进行冲刷缓存来同步缓存和(多个)存储器块,以使得不存在过时的数据。
现在参考图3,示出了包括两对全局总线的多于两条的全局总线的示例。该实施例包括第一对全局总线360(B1和
)以及第二对全局总线365(B2和
)。这两对全局总线360和365分别通过访问晶体管310和355、340和345以及370和375而将存储器块300、存储器块330和缓存块350耦合到各局部总线305、335和355。
该存储器阵列可划分成子阵列,例如存储器块300和320。每个子阵列具有局部总线以访问存储器单元。当对存储器单元的读可能是破坏性的读时(例如对于DRAM),读出放大器(sense amplifier)可与每个局部总线对相关联,以放大存储器单元的电荷并辅助写回数据到该存储器单元或刷新该存储器单元。该存储器单元的值在自刷新的刷新期间或读期间可被恢复。自刷新可包括对局部总线的读,而不将内容传递到全局总线,因此局部访问晶体管在自刷新期间是断开的。另一方面,在读操作期间,刷新可能会伴随将存储器单元的内容传递到全局总线而发生。而且,写操作可以将全局总线的内容传递到局部总线,以将全局总线的内容写到存储器单元。
在本实施例中,所述多于两条的全局总线可设计成根据来自存储器控制器的指令来辅助交换存储内容。例如,当对存储器块330请求进行写访问并且即将进行刷新时,存储器控制器可执行从缓存块350到存储器块300的冲刷,将访问的数据写到缓存线,并几乎在同时刷新存储器块330。访问晶体管340和345在存储器块330的刷新期间是可以断开的。全局总线对360在一个周期的前一部分期间可以通过访问晶体管370耦合到局部总线对355,以从缓存块350读取数据。当该周期的读阶段将数据放置在全局总线对360上之后,访问晶体管370通过访问晶体管375来关闭对全局总线对360的读访问,并打开对全局总线对365的写访问。打开对全局总线对365的写访问可辅助响应于相同周期不同阶段中的所请求的写,而将数据写到缓存线,因此可刷新存储器块330而不会增加所请求的写访问的延迟。
在一些实施例中,所述多于两条的全局总线还可辅助几乎同时发生的从一个块的读、对缓存的写、从缓存的读以及对另一个块的写。例如,可从存储器块300读数据并放置到总线365 B2和
上。几乎与此同时地,可将从缓存的读放置到全局总线对360 B1和
上。在相同周期的后期阶段中,可断开全局总线对360对缓存块350的读,并将数据从全局总线对365写到缓存线。全局总线对360上的数据可在相同周期期间几乎同时地写到存储器块330。
所述多于两条的全局总线的许多实施例包括多于两对的全局总线,其将多于两个的存储器块300和330耦合到一个或多个缓存例如缓存块350。在其他实施例中,可使用耦合到XOR逻辑的全局总线中的两个全局总线对的组合,如图4所示。
现在参考图4,示出了可选的多于两条的全局总线。图4中的多于两条的全局总线可耦合存储器块400、存储器块420和缓存块450,这一耦合是通过每个存储器块中的局部位线410、430和470实现的。多于两条的全局总线可包括一个全局总线对B1和
以及第三全局总线480,全局总线480通过包含XOR逻辑440的电路耦合到所述全局总线对的全局总线B1和
与图3中的多于两条的全周总线类似,图4中的多于两条的全局总线可在单个周期内执行两个读和两个写。当缓存块450涉及一读一写、两个读或两个写时,所述多于两条的全局总线可在一个周期期间容纳两个读和两个写。例如,如果需要在存储器块400和缓存块450之间交换存储内容并在缓存块450和存储器块400之间交换存储内容,则缓存450可读取数据并将数据放置在局部总线对470上,而存储器块400可通过访问晶体管417将读表示放置在全局总线对465上。几乎同时地,电路440可将局部总线对470的内容与全局总线对465进行比较。在相同周期的另一个阶段期间,当全局总线对465包含与局部总线对470相同的数据时,来自缓存块450的数据可从全局总线对465通过访问晶体管417写入到存储器块400。
或者,电路440的XOR逻辑可将局部总线470的全局位的补(即
放置在第三全局总线480上,并且存储器块400可将该位的补通过全局总线480和访问晶体管415而放置在全局总线对465上。在另一个场合下,在缓存块450对局部总线对470进行写并且存储器块400对全局总线对465进行写之后,存储器块420可通过第三全局总线480和电路440的XOR逻辑写入全局总线对465的内容或者全局总线对465的内容的补。
在一些实施例中,当使用多个全局总线对和/或多个缓存可用于存储数据时,可使用包含XOR逻辑的多个全局总线和电路例如全局总线480和电路440来增加可基本同时进行的访问的数量。
现在参考图5,示出了隐藏刷新周期的实施例的流程图。该流程图包括“接收对存储器块的内容的访问请求”500,“在缓存中维护存储器块的内容”510,以及“响应于所述维护而基本并行地访问所述存储器块和所述缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求”530。“接收对存储器块的内容的访问请求”500可接收从存储器块读取数据或将数据写到存储器块的请求。例如,核心可发起所述请求,或者处理器可通过存储器控制器发起所述请求。
在许多实施例中,“接收对存储器块的内容的访问请求”500可包括接收一个地址,该地址包括块地址和行地址。几个实施例包括从智能缓存系统“接收对存储器块的内容的访问请求”500,所述智能缓存系统识别出某些类型的经常被中央处理单元(CPU)访问的数据或指令,并将该数据存储在存储器块例如缓存控制器中以用于缓存。
“接收对存储器块的内容的访问请求”500可包括“当即将进行刷新时接收访问请求”505。“当即将进行刷新时接收访问请求”505可包括接收对一个存储器地址的访问请求,其中该存储器地址驻留在即将进行刷新的存储器块中。另外,“当即将进行刷新时接收访问请求”505可包括接收对一个存储器地址的数据请求,该数据具有缓存版本,其中该缓存版本即将要刷新。
“在缓存中维护存储器块的内容”510可包括“确定与访问冲突的刷新”515。“确定与访问冲突的刷新”515可确定冲突,确定存储器块和缓存的状态,以及确定操作顺序以辅助该访问。“确定与访问冲突的刷新”515可包括确定与读或写请求冲突的刷新。确定与读或写请求冲突的刷新可包括确定与该访问对应的存储器块已被标记用于刷新。
仍参考图5,“在缓存中维护存储器块的内容”510还可包括确定存储器块和缓存的状态。确定存储器块和缓存的状态可包括将标签缓冲区中的标签与所述访问的块地址进行比较,以确定缓存何时包括来自存储器块的数据以进行访问。在一些实施例中,确定存储器块和缓存的状态可包括确定脏位缓冲区中的脏位是否被设置。如果即将进行刷新,则确定存储器块和缓存的状态可包括将来自标签缓冲区的标签与刷新指针进行比较,和/或将块地址与刷新指针进行比较。
另外,“在缓存中维护存储器块的内容”510还可包括确定一组用于辅助访问的操作。确定一组用于辅助访问的操作可包括确定一个读访问应该被写到缓存,确定应该从缓存读取一个读访问,确定应该阻塞刷新直到对存储器块执行了读访问或写访问,确定从存储器块的读应该与对缓存的写基本同时进行,确定对存储器块的写应该与从缓存的读基本同时进行等等。确定一组用于辅助访问的操作还可包括发射一组指令以完成一组操作和/或控制多个操作的顺序。
在一些实施例中,“在缓存中维护存储器块的内容”510可包括“将存储器块的线直接映射到缓存并且存储与该存储器块的所述线相关联的标签”520。“将存储器块的线直接映射到缓存并且存储与该存储器块的所述线相关联的标签”520可以将整个存储器线拷贝到缓存线或者拷贝存储器线到缓存中的行。另外,“将存储器块的线直接映射到缓存并且存储与该存储器块的所述线相关联的标签”520可包括在标签缓冲区中存储一个用于标识该存储器线的标签,例如存储器块地址。该标签例如可通过标签缓冲区中的单元(location)而与缓冲中的存储器线相关联。
“响应于所述维护而基本并行地访问所述存储器块和所述缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求”530可包括:“基本与从缓存读的同时从存储器块读”535,“在一个周期期间关闭第一全局总线对缓存的读访问,并且在关闭读访问之后的周期内打开第二全局总线对缓存的写访问”540,以及“在对缓存写的基本同时对存储器块进行写”545。“基本与从缓存读的同时从存储器块读”535可在一个周期的一个阶段期间通过访问晶体管将存储器块中的数据耦合到多于两条的全局总线,并在相同周期的另一个阶段期间通过缓存中的缓存线写入耦合到该总线的数据。
在一些实施例中,“基本与从缓存读的同时从存储器块读”535可能源自从属于刷新周期的从存储器地址的读访问。可通过缓存来读取该存储器地址,以利用恒定的延迟来辅助响应读请求,而基本不会因为刷新周期的延迟而影响所述恒定的延迟。缓存可包括将要读取的存储器线的拷贝、标识该存储器线是该缓存线的数据源的标签、以及表示该缓存线何时是更新的数据或者与该存储器线相同的数据的脏位。在一些实施例中,“基本与从缓存读的同时从存储器块读”535可辅助在缓存中存储存储器线的拷贝。在许多实施例中,“基本与从缓存读的同时从存储器块读”535可辅助冲刷缓存线并将存储器线拷贝到缓存中,同时对访问进行响应。
“在一个周期期间关闭第一全局总线对缓存的读访问,并且在关闭读访问之后的周期内打开第二全局总线对缓存的写访问”540基本可避免在响应访问请求时包含刷新延迟。例如,当即将对存储器块进行刷新并且每条线都具有被设置的脏位时,存储器控制器可在单个周期期间将缓存线拷贝到第一存储器块中的对应的线中,将新数据写到该缓存块,为新数据设置脏位,为新数据写标签,并刷新该存储器块。在一些实施例中,相同的操作可花费多个周期。
“在对缓存写的基本同时对存储器块进行写”545可在一个周期的一个阶段期间将缓存中的存储器单元的内容耦合到多于两条的全局总线,并在同一周期的另一个阶段期间将该数据耦合到该存储器块的局部位线。例如,可冲刷缓存线,可将数据写到存储器块,并且基本可在相同周期内更新刷新计数器。
而且,“在对缓存写的基本同时对存储器块进行写”545可以源自从属于刷新周期的对存储器地址的写访问。该访问或者写缓存,用标签和脏位标记缓存线,或者直接写存储器块中的存储器线。在一些实施例中,从属于刷新周期的对存储器的写可包括阻塞刷新周期直到完成对存储器的写。
现在参考图6A到6F,示出了各实施例的流程图的细节。而且,图7A到7F示出了分别用于图6A到6F的流程图的伪代码的详细的示例性实施例。图7A还包括输入、缓冲区和函数的示例性定义以及用于图6A的流程图的示例性伪代码。
具体地说,图6A到6F提供了用于接收访问请求、在缓存中维护存储器块的内容、以及进行访问的实施例的流程图的详细示例。该实施例可实际成对存储器系统进行工作,其中所述缓存块包括与存储器块相同数量的行,并且存储器块的行被直接映射到缓存。直接映射可以将缓存线逐行划分,以使得存储器块的第n行可映射到缓存的第n行。例如,如果存储器块包含10行,则缓存块也可以包含10行,并且每个存储器块的第一行可能会竞争以被缓存到缓存块的第一行。类似地,每个存储器块的第2、3、…、10行必须与其他存储器块的第2、3、…、10行竞争以被缓存到缓存块中。
在图6A中,已接收到读访问,并且对刷新是否与该访问相冲突的确定已经确定没有即将发生的刷新。如果在访问期间没有即将发生的刷新,则存储器控制器可确定要采取的动作以避免后续访问中的冲突。例如,存储器控制器可确定在进行访问期间应该冲刷缓存的缓存线。而且,存储器控制器可启动一系列动作来冲刷缓存线,同时避免与访问的冲突。附注640A说明了图6A到6C的流程图中实现的动作。该附注包括:“读”,以读存储器块中正被访问的行;“读缓存”,以读所述正被访问的行的缓存版本;“更新缓存”,以将该行从正被访问的存储器块写入缓存,并且基本同时地为该条目存储缓存标签;“冲刷”,以将一行的缓存版本拷贝到正被访问的对应的块,并且基本同时地清除该行的脏位;“刷新”,以刷新被标记为即将被刷新的行;以及“阻塞刷新”,以防止进行行刷新,直到完成一个动作。
在确定所述访问是读并且没有即将发生的刷新之后,存储器控制器可确定任意的缓存线是否被标记为脏610A。脏缓存线可以源自刷新周期期间对过去存储在缓存中的存储器块的访问,而非源自所述存储器块,并且,“在缓存中维护存储器块的内容”可更新对应的存储器块,同时处理当前的访问。如果缓存中没有脏线,则存储器控制器可基本同时地进行“读”和“更新缓存”612A。类似地,如果缓存中有脏线,则“在缓存中维护存储器块的内容”可包括确定正在被访问的行是否不是脏线620A,并且,当正被访问的行不是脏线时,“在缓存中维护存储器块的内容”可基本同时地启动对缓存的读和更新622A。
另一方面,如果正被访问的行是脏线,则“在缓存中维护存储器块的内容”可包括确定正被访问的块是否在缓存中630A,并且,如果正被访问的块在缓存中,则“在缓存中维护存储器块的内容”可包括在冲刷的基本同时进行对缓存的读632A。对缓存的读可用存储器线的被更新的内容来响应该访问,并且所述冲刷可清除缓存线的脏位,因此在后续访问期间该缓存并未充满具有被设置的脏位的缓存线。然而,如果所述脏线不是用于正在被访问的存储器块的,则“在缓存中维护存储器块的内容”可包括在将缓存中所述脏线冲刷到对应的存储器块的基本同时读取正被访问的块634A。
现在参考图6B,示出了在这样一种场合下的详细实施例的流程图,在该场合中,即将进行刷新时接收到访问请求,但该即将发生的刷新不是针对所述缓存块的600B。该实施例可以通过下述操作而开始,即查看脏位缓冲区来确定缓存是否包括这样的缓存线,其在存储器块中具有比与其对应的存储器线更为当前的数据610B。如果缓存没有任何脏线,则存储器控制器可将所述访问的块地址与刷新指针的块地址进行比较。如果该指针指向另一个块,则“在缓存中维护存储器块的内容”可在刷新所述另一个块的基本同时对所述块进行读612B。
否则,如果所述访问地址与刷新指针的块地址匹配,则当缓存中存在正被访问的存储器线的拷贝(例如所述访问的地址与关联到缓存线的标签的地址相匹配)时,“在缓存中维护存储器块的内容”可在刷新存储器块的基本同时对缓存进行读614B。否则,存储器控制器可确定正被访问的行是否是被标记为即将进行刷新的行。如果正被访问的行是被标记为即将进行刷新的行,则“在缓存中维护存储器块的内容”可对缓存进行读和更新616B。否则,“在缓存中维护存储器块的内容”可在对存储器块进行读并且更新缓存期间阻塞对正被访问的存储器块的刷新618B。
如果在缓存中存在脏线610B,则“在缓存中维护存储器块的内容”可包括确定被标记为刷新的块是否是正被访问的块630B。如果被标记为刷新的块不是正被访问的块,则存在4种可能性,且每种可能性都可包括在一个或多个操作的基本同时对所述块进行刷新632B。第一种可能性可以是,如果存储在缓存中的块当前未被访问并且正被访问的行是脏线,则所述多于两条的全局总线在对缓存中的所述脏线进行冲刷的基本同时对正被访问的存储器块进行读634B。第二种可能性可以是,如果正被访问的行不是脏线,则所述多于两条的全局总线可基本同时地对缓存进行读和更新634B。
第三种可能性可以是,如果存储在缓存中的块是正被访问的块并且正被访问的行是脏线,则“在缓存中维护存储器块的内容”可使得所述多于两条的全局总线辅助在对缓存进行冲刷的同时对缓存进行读636B。第四种可能性可以是,如果正被访问的行不是脏线,则所述多于两条的全局总线可对存储器块进行读636B。
在缓存包括至少一条脏线并且访问的块地址与刷新指针的块地址相同的场合下,存储器控制器可确定将要刷新的行是否与正被访问的行相同640B。如果正被访问的行就是将要刷新的行并且存储在缓存中的块不是正被访问的块642B,那么,如果正被访问的行具有对应的脏线,则所述多于两条的全局总线可在读取并更新用于所述块的刷新计数器的基本同时对缓存进行冲刷,并且如果正被访问的行不具有对应的脏线,则所述多于两条的全局总线更新缓存,并更新用于所述存储器块的刷新计数器644B。
另一方面,如果将要刷新的行与正被访问的行相同642B,存储在缓存中的块就是正被访问的块644B,并且正被访问的行具有对应的脏线,那么,存储器控制器可使得所述多于两条的全局总线在读取缓存并更新刷新计数器的基本同时冲刷缓存中的脏线646B。否则,如果正被访问的行在缓存中不具有对应的脏线,则所述多于两条的全局总线可辅助读取存储器块,更新缓存并更新刷新计数器646B。
仍参考图6B,如果被标记为刷新的块与正被访问的块相同,将要刷新的行与正被访问的行不同,并且正被访问的块存储在缓存中,那么,可在读缓存的基本同时刷新所述块650B。然而,如果正被访问的块未存储在缓存中,那么,如果正被访问的行是脏线,则在冲刷缓存并读正被访问的块的基本同时阻塞刷新652B。另一方面,如果正被访问的块未存储在缓存中并且正被访问的行不是脏线652B,则“在缓存中维护存储器块的内容”可包括读正被访问的存储器块,更新缓存,以及更新该存储器块的刷新计数器。
现在参考图6C,示出了当访问是读并且即将对缓存进行刷新600C时的实施例的详细流程图。如果正被访问的行在缓存中不具有对应的脏线,则存储器控制器可在读存储器块的基本同时阻塞对该存储器块的刷新610C。否则如果正被访问的块具有存储在缓存中的对应的脏线,则“在缓存中维护存储器块的内容”可包括在冲刷缓存的基本同时阻塞刷新并读缓存620C。否则,如果正被访问的行不具有对应的脏线并且正被访问的块未存储在缓存中,则存储器控制器可在冲刷缓存的基本同时阻塞对该存储器块的刷新并读该存储器块630C。
现在参考图6D,示出了图6D、6E和6F的附注640D,包括在详细的流程图中参考的示例性操作指令。辅助640D包括:“写”,对存储器块中正被访问的行进行写;“写缓存”,将正被访问的行的一个版本写到缓存;“更新缓存”,将所述行从正被访问的存储器块拷贝到缓存中,且基本同时存储该条目的缓存标签;“刷新”,刷新被标志为即将刷新的行;以及“阻塞刷新”,在经受刷新的存储器线上执行操作期间阻塞刷新。
仍参考图6D,示出了没有即将发生的刷新时处理写访问600D的实施例的详细流程图。第一操作可包括确定与缓存块相关联的的脏位缓冲区中是否设置了脏位610D,并且,如果没有设置脏位,则对缓存进行写612D。另一方面,如果缓存中设置了脏位(未必是正被访问的行的脏位,甚至未必是正被访问的存储器块的脏位),则存储器控制器可确定正被访问的行是否是脏线620D。如果正被访问的行不具有对应的脏线,则存储器控制器可确定应该对该存储器块进行写622D。然而,如果正被访问的行具有对应的脏线,则存储器控制器可确定存储在缓存中的块是否是正被访问的块630D,并且,如果存储在缓存中的块是正被访问的块,则存储器控制器可确定“在缓存中维护存储器块的内容”包括同时对存储器线和缓存中的线进行写,并且清除脏位634D。否则,如果存储在缓存中的块不是正被访问的块,则多于两条的全局总线可辅助在对由脏位所标记的缓存进行冲刷的基本同时对所述块进行写632D。
现在参考图6E,示出了当访问是写并且即将对所述存储器块中不是缓存的一个块进行刷新600E时的实施例的详细流程图的示例。该流程图可以下述操作开始,即确定与缓存相关联的脏位缓冲区中是否设置了脏位610E。如果设置了脏位,则存储器控制器可确定被标记为刷新的块是否不是正被访问的块620E。如果被标记为刷新的块与正被访问的块相同630E,则“在缓存中维护存储器块的内容”可确定正被访问的行何时不是脏线640E,并且使得所述多于两条的全局总线在写缓存的基本同时进行刷新642E。
另一方面,如果被标记为刷新的块与正被访问的块相同,且正被访问的行时脏线,则“在缓存中维护存储器块的内容”可确定缓存中是否存在正被访问的块的拷贝644E。如果缓存中存在正被访问的块的拷贝,则所述多于两条的全局总线可对缓存进行写646E。
在存储器控制器确定被标记为刷新的块与正被访问的块相同,正被访问的行是脏线,缓存中存在正被访问的块的拷贝,以及被标记为刷新的行与正被访问的行相同之后,“在缓存中维护存储器块的内容”可确定一组操作,包括在对正被访问的块进行写并更新刷新计数器的基本同时进行冲刷648E。如果被标记为刷新的行与正被访问的行不相同,则所述多于两条的全局总线可在刷新的基本同时进行冲刷和缓存写649E。所述冲刷、缓存写和刷新可在同一个周期期间进行。例如,所述刷新可在第一存储器块上开始,而从缓存的读可发生在一个周期中的第一批若干数量的阶段期间。在第二批若干数量的阶段期间,来自所述读的数据可被写到第二存储器块,并可清除所述缓存线的脏位。
所述详细流程图示出了当脏位缓冲区中没有脏位并且被标记为刷新的块不是正被访问的块时,“在缓存中维护存储器块的内容”可确定缓存中没有这样的缓存线,所述缓存线具有被标记为刷新的块中的数据源622E。如果被标记为刷新的块时缓存中的缓存线的数据源并且如果缓存中正被访问的行的拷贝是脏的,则多于两条的全局总线可在写的基本同时进行刷新623E。否则,所述多于两条的全局总线可在写或同时写的基本同时进行刷新623E。
如果被标记为刷新的块是缓存线的数据源,则“在缓存中维护存储器块的内容”可确定应该在下述4个操作之一或其组合的基本同时进行刷新624E。第一,如果正被访问的行具有对应的脏线626E,并且正被访问的块的拷贝不在缓存中,则所述多于两条的全局总线可在对该存储器块进行写的基本同时冲刷所述脏线630E。第二,如果正被访问的行具有对应的脏线,并且如果正被访问的块的拷贝在缓存中,则所述多于两条的全局总线可进行同时写630E。第三,如果正被访问的行不具有对应的脏线,并且如果正被访问的块的拷贝不在缓存中,则所述多于两条的全局总线可进行写或同时写628E。第四,如果正被访问的行不具有对应的脏线,并且如果正被访问的块的拷贝在缓存中,则所述多于两条的全局总线可进行同时写628E。
最后,所述详细流程图还示出了在查看脏位缓冲区的内容610E并且在脏位缓冲区中未发现脏位之后,如果正被访问的块不是被标记未刷新的块,则可在进行刷新的基本同时进行写650E。否则,可在刷新的基本同时写缓存并设置脏位652E。
现在参考图6F,示出了若干实施例的详细流程图,其中对存储器块请求写访问,并且即将发生缓存刷新600F。该流程图可以在缓存中维护存储器块的内容开始,包括确定在进行4个其他操作之一的基本同时进行写610F。“在缓存中维护存储器块的内容”可确定正被访问的行是否具有对应的脏线620F,并且,如果正被访问的行没有对应的脏线,则存储器控制器可对正被访问的行进行刷新。而且,如果正被访问的块存储在缓存中,则存储器控制器可无效正被访问的块的缓存版本622F。如果正被访问的行具有对应的脏线并且正被访问的块存储在缓存中,则存储器控制器可确定所述多于两条的全局总线可对该块进行刷新,并无效该块在缓存中的拷贝632F。然而,如果正被访问的块未存储在缓存中630F,则所述多于两条的全局总线可对正被访问的行进行刷新,除非被标记为刷新的行是正被访问的行。否则,如果被标记为刷新的行是正被访问的行,则所述多于两条的全局总线可写缓存并包括正被访问的行的脏位634F。
现在参考图8,示出了本发明的机器可读介质实施例。机器可读介质包括任何以机器(例如计算机)可读形式提供(即存储和/或传输)信息的机构,所述信息被该机器执行时可执行在此描述的功能。例如,机器可读介质可包括只读存储器(ROM);随机访问存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或其他形式的传播信号(例如载波、红外信号、数字信号等);等等。本发明的若干实施例可包括多个机器可读介质,取决于所述机器的设计。
机器可读介质800可包括用于下述操作的指令:接收对存储器块的内容的访问请求810;在缓存中维护存储器块的内容820;以及响应于所述维护而基本并行地访问所述存储器块和缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求840。“接收对存储器块的内容的访问请求”810可包括接收读或写请求,其中该请求可伴随有一个块地址,其标识一个可能经受刷新与否的存储器块。
用于“在缓存中维护存储器块的内容”820的指令可包括用于将存储器块的内容直接映射到缓存的指令。将存储器块的内容直接映射到缓存可包括将整个存储器线拷贝到缓存中相同大小的存储器线,并且将一个标签与该缓存线相关联以标识该缓存线的数据源。
在一些实施例中,用于“在缓存中维护存储器块的内容”820的指令可包括引用局部性(locality of reference)原理的实现。引用局部性原理表示出,如果处理器或处理器核心最近引用了存储器中的一个单元,则该处理器或核心在邻近的将来可能还会引用该单元。因此,在从存储器块的存储器线读的基本同时从该存储器线拷贝可辅助完成对该存储器块的存储内容的刷新和访问。当存储器块经受刷新时,在读的基本同时进行拷贝是特别有用的,只要保持足够的时间以刷新该存储器块。
而且,用于“在缓存中维护存储器块的内容”820的指令可包括确定与访问冲突的刷新。用于确定与访问冲突的刷新的指令可通过下述操作来开始,即确定与所述块地址相关联的存储器块、与缓存相关联的标签缓冲区的内容、以及存储器块或缓存是否在经受刷新。在一些实施例中,确定与访问冲突的刷新可包括发射指令来使得多于两条的全局总线在相同周期内从缓存线读并对存储器块的线进行写,同时从第二存储器块的第二线读并对该缓存的第二线进行写。所述指令可使得所述多于两条的全局总线利用另一些指令来辅助所述读和写,所述另一些指令用来修改耦合在所述多于两条的全局总线和缓存的局部位线之间的访问晶体管的状态。
在许多实施例中,确定与访问冲突的刷新可包括使得局部位线对的访问晶体管将该局部位线对从一对全局总线解耦合,并将该局部位线对耦合到第二全局总线对。而且,确定与访问冲突的刷新可包括通过从一个缓存线读来辅助对存储器线的读访问,其中该缓存线具有正被访问的存储器块的存储器线的数据源。
仍参考图8,用于“响应于所述维护而基本并行地访问所述存储器块和缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求”840的指令可包括用于下述操作的指令:对从属于刷新周期的存储器块进行写,以及通过缓存对经受刷新周期的存储器块读。对从属于刷新周期的存储器进行写可包括对经受刷新的存储器进行写覆盖(write over)以取代刷新该存储器。在其他场合下,对从属于刷新周期的存储器的写可包括写缓存线以及将标签写到标签缓冲区,并且与此基本同时地设置脏位以表示存储器线或地址地缓存版本可能比该存储器线更新。通过缓存对从属于刷新周期的存储器地址的读可包括当与缓存线相关联的的标签表示出缓存包括该存储器地址的内容时读缓存线。
而且,用于“响应于所述维护而基本并行地访问所述存储器块和缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求”840的指令可包括在对缓存线写的基本同时对存储器块进行读,以及在从缓存读的基本同时对存储器块进行写。如果将要访问的存储器块的行在缓存中不具有对应的拷贝,则“在对缓存线写的基本同时对存储器块进行读”可包括阻塞刷新以对存储器块进行读访问。阻塞刷新以进行读访问可由用于“在缓存中维护存储器块的内容”820的指令来支配。用于“响应于所述维护而基本并行地访问所述存储器块和缓存的内容,从而基本独立于刷新所述存储器块的延迟地响应所述请求”840的指令可包括用于下述操作的指令:通过多于两条的全局总线,基本并行地从存储器块读和从缓存读,以及对相同的存储器块和缓存进行写。
Claims (15)
1.一种用于隐藏存储器刷新的装置,包括:
缓存,用于提供对存储器块的内容的访问;
多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问,其中所述多于两条的全局总线包括
一对全局总线,耦合到所述缓存以发送一个位;
第三全局总线,耦合到所述缓存以发送表示第二位的信号;以及
一个电路,用于响应于所述信号与所述位的比较,通过所述全局
总线对的至少一个总线将所述第二位写到所述缓存,
缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟。
2.如权利要求1所述的装置,还包括:
标签缓冲区,耦合到所述缓存,以将缓存线与所述存储器块的行相关联;
行译码器,耦合到所述标签缓冲区,以对存储在该标签缓冲区中的标签进行译码。
3.如权利要求1所述的装置,还包括脏位缓冲区,耦合到所述缓存,以标识所述缓存的线与所述存储器块的线之间的关系。
4.如权利要求1所述的装置,其中所述存储器块是动态随机访问存储器。
5.如权利要求1所述的装置,其中所述缓存包括另一个存储器块的至少一部分。
6.如权利要求1所述的装置,其中所述用于写的电路包括实现了异或逻辑的电路,所述异或逻辑耦合到所述第三全局总线和所述缓存。
7.如权利要求1所述的装置,其中所述多于两条的全局总线包括耦合到所述存储器块和所述缓存的两对全局总线。
8.如权利要求1所述的装置,其中所述缓存控制器包括一个电路,用于同时地对所述存储器块和所述缓存进行读。
9.如权利要求1所述的装置,其中所述缓存控制器包括一个电路,用于同时地写所述存储器块和写所述缓存。
10.一种用于隐藏存储器刷新的装置,包括:
缓存,用于提供对存储器块的内容的访问;
多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问;以及
缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟,其中所述缓存控制器包括一个电路,所述电路响应于在一个周期的读阶段之后关闭通过所述多于两条的全局总线的第二全局总线对所述缓存的读访问,而在该周期的写回阶段期间打开通过所述多于两条的全局总线的第一全局总线的对所述缓存的写访问。
11.一种用于隐藏存储器刷新的系统,包括:
执行算术逻辑运算的核心;以及
第一缓存,耦合到所述核心,所述第一缓存包括
第二缓存,用于提供对存储器块的内容的访问;
多于两条的全局总线,用于提供对所述第二缓存和所述存储器块的并行访问,其中所述多于两条的全局总线包括
一对全局总线,耦合到所述第二缓存以发送第一位;
第三全局总线,耦合到所述第二缓存以发送表示第二位的信号;以及
一个电路,用于响应于所述信号与所述第一位的比较,通过所述全局总线对的至少一个总线将所述第二位写到所述第二缓存,
缓存控制器,用于通过并行地访问所述第二缓存和所述存储器块而在所述第二缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而独立于刷新所述存储器块的延迟。
12.如权利要求11所述的系统,其中所述多于两条的全局总线包括耦合到所述存储器块和所述第二缓存的两对全局总线。
13.如权利要求11所述的系统,其中所述缓存控制器包括:用于同时地对所述存储器块和所述第二缓存进行读的电路;以及用于同时地写所述存储器块和写所述第二缓存的电路。
14.一种用于隐藏存储器刷新的系统,包括:
处理器;以及
存储器设备,耦合到所述处理器,所述存储器设备包括缓存,用于提供对存储器块的内容的访问;
多于两条的全局总线,用于提供对所述缓存和所述存储器块的并行访问,其中所述多于两条的全局总线包括:
一对全局总线,耦合到所述缓存以发送一个位;
第三全局总线,耦合到所述缓存以发送表示第二位的信号;以及
一个电路,用于响应于所述信号与所述位的比较,通过所述全局总线对的至少一个总线将所述第二位写到所述缓存,
缓存控制器,用于通过并行地访问所述缓存和所述存储器块而在所述缓存中维护所述存储器块的内容,从而响应对所述存储器块的访问请求,而基本独立于刷新所述存储器块的延迟。
15.如权利要求14所述的系统,其中所述缓存控制器包括:用于同时地对所述存储器块和所述缓存进行读的电路;以及用于同时地写所述存储器块和写所述缓存的电路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/966,586 US6757784B2 (en) | 2001-09-28 | 2001-09-28 | Hiding refresh of memory and refresh-hidden memory |
US09/966,586 | 2001-09-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1620649A CN1620649A (zh) | 2005-05-25 |
CN100349140C true CN100349140C (zh) | 2007-11-14 |
Family
ID=25511608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB02819070XA Expired - Fee Related CN100349140C (zh) | 2001-09-28 | 2002-09-27 | 用于隐藏存储器刷新的装置和系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6757784B2 (zh) |
EP (1) | EP1430402A2 (zh) |
KR (1) | KR100591218B1 (zh) |
CN (1) | CN100349140C (zh) |
TW (1) | TWI242712B (zh) |
WO (1) | WO2003027857A2 (zh) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6791859B2 (en) * | 2001-11-20 | 2004-09-14 | Micron Technology, Inc. | Complementary bit PCRAM sense amplifier and method of operation |
EP1518186A2 (de) * | 2002-03-21 | 2005-03-30 | PACT XPP Technologies AG | Verfahren und vorrichtung zur datenverarbeitung |
KR100482380B1 (ko) * | 2002-11-11 | 2005-04-14 | (주)실리콘세븐 | 메모리 뱅크별 기입 동작의 수행이 가능한 에스램 호환 메모리 및 그 구동방법 |
JP4439838B2 (ja) * | 2003-05-26 | 2010-03-24 | Necエレクトロニクス株式会社 | 半導体記憶装置及びその制御方法 |
US20050125614A1 (en) * | 2003-12-09 | 2005-06-09 | Royer Robert J.Jr. | Adaptive layout cache organization to enable optimal cache hardware performance |
US7123500B2 (en) * | 2003-12-30 | 2006-10-17 | Intel Corporation | 1P1N 2T gain cell |
DK1794979T3 (en) | 2004-09-10 | 2017-07-24 | Cavium Inc | Selective copying of data structure |
US7594081B2 (en) | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
KR100564633B1 (ko) * | 2004-09-25 | 2006-03-28 | 삼성전자주식회사 | 향상된 동작 성능을 가지는 반도체 메모리 장치 및 이에대한 액세스 제어 방법 |
TWI267855B (en) * | 2004-09-25 | 2006-12-01 | Samsung Electronics Co Ltd | System and method for controlling the access and refresh of a memory |
KR100652380B1 (ko) | 2004-10-25 | 2006-12-01 | 삼성전자주식회사 | 버퍼를 이용하여 리프레쉬하는 메모리 장치 및 그 방법 |
US8279886B2 (en) | 2004-12-30 | 2012-10-02 | Intel Corporation | Dataport and methods thereof |
US20060190678A1 (en) * | 2005-02-22 | 2006-08-24 | Butler Douglas B | Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a single DRAM cache and tag |
US7506100B2 (en) * | 2005-02-23 | 2009-03-17 | United Memories, Inc. | Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a data cache and separate read and write registers and tag blocks |
JP2006294216A (ja) * | 2005-03-15 | 2006-10-26 | Renesas Technology Corp | 半導体記憶装置 |
US20060248247A1 (en) * | 2005-04-29 | 2006-11-02 | Mtekvision Co., Ltd. | Apparatus and method for controlling access to a memory |
KR100672029B1 (ko) * | 2005-05-27 | 2007-01-19 | 삼성전자주식회사 | Dram히든 리프레쉬 동작 시 발생되는 동작 시간 지연을감소시킬 수 있는 장치와 방법 |
US7313047B2 (en) | 2006-02-23 | 2007-12-25 | Hynix Semiconductor Inc. | Dynamic semiconductor memory with improved refresh mechanism |
US7463536B2 (en) * | 2006-07-31 | 2008-12-09 | Sandisk 3D Llc | Memory array incorporating two data busses for memory array block selection |
US7499366B2 (en) | 2006-07-31 | 2009-03-03 | Sandisk 3D Llc | Method for using dual data-dependent busses for coupling read/write circuits to a memory array |
US8279704B2 (en) * | 2006-07-31 | 2012-10-02 | Sandisk 3D Llc | Decoder circuitry providing forward and reverse modes of memory array operation and method for biasing same |
US7570523B2 (en) * | 2006-07-31 | 2009-08-04 | Sandisk 3D Llc | Method for using two data busses for memory array block selection |
US7653846B2 (en) * | 2006-12-28 | 2010-01-26 | Intel Corporation | Memory cell bit valve loss detection and restoration |
US8819311B2 (en) * | 2007-05-23 | 2014-08-26 | Rpx Corporation | Universal user input/output application layers |
US7652910B2 (en) | 2007-06-30 | 2010-01-26 | Intel Corporation | Floating body memory array |
US8291174B2 (en) | 2007-08-15 | 2012-10-16 | Micron Technology, Inc. | Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same |
US7822911B2 (en) * | 2007-08-15 | 2010-10-26 | Micron Technology, Inc. | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same |
US8055852B2 (en) * | 2007-08-15 | 2011-11-08 | Micron Technology, Inc. | Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same |
US20090193186A1 (en) * | 2008-01-25 | 2009-07-30 | Barth Jr John E | Embedded dram having multi-use refresh cycles |
US20090193187A1 (en) * | 2008-01-25 | 2009-07-30 | International Business Machines Corporation | Design structure for an embedded dram having multi-use refresh cycles |
US8190826B2 (en) * | 2008-05-28 | 2012-05-29 | Advanced Micro Devices, Inc. | Write combining cache with pipelined synchronization |
US20120030420A1 (en) | 2009-04-22 | 2012-02-02 | Rambus Inc. | Protocol for refresh between a memory controller and a memory device |
US8359438B2 (en) | 2010-05-18 | 2013-01-22 | Avago Technologies Enterprise IP (Singapore) Pte. Ltd. | Memory banking system and method to increase memory bandwidth via parallel read and write operations |
US8458405B2 (en) * | 2010-06-23 | 2013-06-04 | International Business Machines Corporation | Cache bank modeling with variable access and busy times |
US20120101731A1 (en) * | 2010-10-21 | 2012-04-26 | Baker Hughes Incorporated | Extending Data Retention of a Data Storage Device Downhole |
US10026458B2 (en) | 2010-10-21 | 2018-07-17 | Micron Technology, Inc. | Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size |
JP2012123893A (ja) * | 2010-11-19 | 2012-06-28 | Elpida Memory Inc | 半導体装置 |
US9293187B2 (en) * | 2011-09-26 | 2016-03-22 | Cisco Technology, Inc. | Methods and apparatus for refreshing digital memory circuits |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) * | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9058896B2 (en) * | 2012-08-29 | 2015-06-16 | International Business Machines Corporation | DRAM refresh |
KR102023487B1 (ko) | 2012-09-17 | 2019-09-20 | 삼성전자주식회사 | 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN103700393B (zh) | 2012-09-28 | 2016-08-03 | 国际商业机器公司 | 用于dram的中间电路和方法 |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
KR102061069B1 (ko) | 2013-02-28 | 2020-01-02 | 삼성전자주식회사 | 텍스쳐 맵핑 파이프라인을 위한 논블로킹 방식의 텍스쳐 캐쉬 메모리 시스템 및 논블로킹 방식의 텍스쳐 캐쉬 메모리의 동작 방법 |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9183155B2 (en) * | 2013-09-26 | 2015-11-10 | Andes Technology Corporation | Microprocessor and method for using an instruction loop cache thereof |
WO2015065426A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Memory access for busy memory |
CN105471955B (zh) * | 2014-09-11 | 2019-01-18 | 北京金山云网络技术有限公司 | 分布式文件系统的写方法、客户端设备及分布式文件系统 |
GB2536205A (en) | 2015-03-03 | 2016-09-14 | Advanced Risc Mach Ltd | Cache maintenance instruction |
US10180803B2 (en) * | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US9921754B2 (en) * | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US9760432B2 (en) | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9824737B2 (en) * | 2015-12-22 | 2017-11-21 | Intel Corporation | Memory circuit and method for operating a first and a second set of memory cells in direct memory access mode with refresh |
US10482033B2 (en) | 2016-03-24 | 2019-11-19 | Samsung Electronics Co., Ltd | Method and device for controlling memory |
US10394719B2 (en) | 2017-01-25 | 2019-08-27 | Samsung Electronics Co., Ltd. | Refresh aware replacement policy for volatile memory cache |
US10635327B2 (en) | 2018-01-31 | 2020-04-28 | Western Digital Technologies, Inc. | Data availability during memory inaccessibility |
CN110046105B (zh) * | 2019-04-26 | 2021-10-22 | 中国科学院微电子研究所 | 一种3D NAND Flash |
TWI729843B (zh) * | 2020-06-08 | 2021-06-01 | 華邦電子股份有限公司 | 記憶體系統及其操作方法 |
US11164617B1 (en) | 2020-07-01 | 2021-11-02 | Winbond Electronics Corp. | Memory system and operating method thereof |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120699A (zh) * | 1994-02-03 | 1996-04-17 | 国际商业机器公司 | 高速缓存控制系统 |
EP0817066A2 (en) * | 1996-07-01 | 1998-01-07 | Sun Microsystems, Inc. | Integrated processor/memory device with full width cache |
US5887272A (en) * | 1992-01-22 | 1999-03-23 | Enhanced Memory Systems, Inc. | Enhanced DRAM with embedded registers |
US5963481A (en) * | 1998-06-30 | 1999-10-05 | Enhanced Memory Systems, Inc. | Embedded enhanced DRAM, and associated method |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125425A (en) | 1996-03-29 | 2000-09-26 | Intel Corporation | Memory controller performing a mid transaction refresh and handling a suspend signal |
US6134624A (en) * | 1998-06-08 | 2000-10-17 | Storage Technology Corporation | High bandwidth cache system |
TW388831B (en) | 1998-08-29 | 2000-05-01 | Via Tech Inc | Intelligent DRAM refresh method |
US5999474A (en) * | 1998-10-01 | 1999-12-07 | Monolithic System Tech Inc | Method and apparatus for complete hiding of the refresh of a semiconductor memory |
US6222785B1 (en) | 1999-01-20 | 2001-04-24 | Monolithic System Technology, Inc. | Method and apparatus for refreshing a semiconductor memory using idle memory cycles |
US6330636B1 (en) * | 1999-01-29 | 2001-12-11 | Enhanced Memory Systems, Inc. | Double data rate synchronous dynamic random access memory device incorporating a static RAM cache per memory bank |
US6195303B1 (en) | 1999-10-25 | 2001-02-27 | Winbond Electronics Corporation | Clock-based transparent refresh mechanisms for DRAMS |
-
2001
- 2001-09-28 US US09/966,586 patent/US6757784B2/en not_active Expired - Lifetime
-
2002
- 2002-09-26 TW TW091122136A patent/TWI242712B/zh not_active IP Right Cessation
- 2002-09-27 KR KR1020047004570A patent/KR100591218B1/ko not_active IP Right Cessation
- 2002-09-27 CN CNB02819070XA patent/CN100349140C/zh not_active Expired - Fee Related
- 2002-09-27 EP EP02773682A patent/EP1430402A2/en not_active Withdrawn
- 2002-09-27 WO PCT/US2002/031158 patent/WO2003027857A2/en not_active Application Discontinuation
-
2003
- 2003-10-21 US US10/691,342 patent/US20050097276A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887272A (en) * | 1992-01-22 | 1999-03-23 | Enhanced Memory Systems, Inc. | Enhanced DRAM with embedded registers |
CN1120699A (zh) * | 1994-02-03 | 1996-04-17 | 国际商业机器公司 | 高速缓存控制系统 |
EP0817066A2 (en) * | 1996-07-01 | 1998-01-07 | Sun Microsystems, Inc. | Integrated processor/memory device with full width cache |
US5963481A (en) * | 1998-06-30 | 1999-10-05 | Enhanced Memory Systems, Inc. | Embedded enhanced DRAM, and associated method |
Also Published As
Publication number | Publication date |
---|---|
EP1430402A2 (en) | 2004-06-23 |
KR20040037183A (ko) | 2004-05-04 |
TWI242712B (en) | 2005-11-01 |
US20030065884A1 (en) | 2003-04-03 |
US6757784B2 (en) | 2004-06-29 |
US20050097276A1 (en) | 2005-05-05 |
KR100591218B1 (ko) | 2006-06-19 |
CN1620649A (zh) | 2005-05-25 |
WO2003027857A2 (en) | 2003-04-03 |
WO2003027857A3 (en) | 2003-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100349140C (zh) | 用于隐藏存储器刷新的装置和系统 | |
US9946650B2 (en) | Technique to share information among different cache coherency domains | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
CN100390758C (zh) | 缩短与高速缓存相关性目录遗漏关联的延迟的方法和系统 | |
US6760819B2 (en) | Symmetric multiprocessor coherence mechanism | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US7814279B2 (en) | Low-cost cache coherency for accelerators | |
US20020087804A1 (en) | Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture | |
JP4594900B2 (ja) | メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法 | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US20080098178A1 (en) | Data storage on a switching system coupling multiple processors of a computer system | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
US6662276B2 (en) | Storing directory information for non uniform memory architecture systems using processor cache | |
US6260117B1 (en) | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US8209490B2 (en) | Protocol for maintaining cache coherency in a CMP | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
US6035376A (en) | System and method for changing the states of directory-based caches and memories from read/write to read-only | |
US20070233965A1 (en) | Way hint line replacement algorithm for a snoop filter | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
WO1997004392A1 (en) | Shared cache memory device | |
JP2001109662A (ja) | キャッシュ装置及び制御方法 | |
US20040030833A1 (en) | Cache invalidation bus for a highly scalable shared cache memory hierarchy | |
JP2004240616A (ja) | メモリコントローラ及びメモリアクセス制御方法 | |
JP3081635B2 (ja) | キャッシュメモリの無効化処理装置および無効化制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071114 Termination date: 20100927 |