CN102483719B - 基于块的非透明高速缓存 - Google Patents
基于块的非透明高速缓存 Download PDFInfo
- Publication number
- CN102483719B CN102483719B CN201080038192.5A CN201080038192A CN102483719B CN 102483719 B CN102483719 B CN 102483719B CN 201080038192 A CN201080038192 A CN 201080038192A CN 102483719 B CN102483719 B CN 102483719B
- Authority
- CN
- China
- Prior art keywords
- nontransparent
- request
- address
- storer
- memory
- 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
-
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,提供了一种包括非透明存储器和控制电路的非透明存储器单元。控制电路可以将非透明存储器作为一组非透明存储块来管理。在一个或更多个处理器上执行的软件可以请求在其中处理数据的非透明存储块。控制电路可以分配一个第一块,并且可以返回所分配块的地址(或者其它指示),以便软件可以访问该块。控制电路还可以提供非透明存储器和非透明存储器单元所耦合的主存储器系统之间的自动数据移动。例如,自动数据移动可以包括从主存储器系统向所分配块填充数据,或者在所分配块的处理完成之后将所分配块中的数据清除到主存储器系统。
Description
技术领域
本发明涉及集成电路领域,并且更具体地涉及具有片上存储器的集成电路。
背景技术
各种类型的集成电路包含有片上存储器。例如,集成电路可以包括高速缓存。包括处理器的集成电路常常包括高速缓存以提供对还存储在片外存储器中的数据的子集的低延迟访问。通常,高速缓存是存储最近使用数据的硬件管理的存储器,高速缓存管理硬件将由处理器(或者集成电路中的其它存储器读取设备)访问的数据的副本写入高速缓存。已修改数据在高速缓存中可以由较新的数据来替代,高速缓存管理硬件可以将所修改的数据写回主存储器。在一些情况下,处理器可以包括预取指令和其它高速缓存提示以影响高速缓存管理硬件的操作并且可以标记不可高速缓存的存储器以阻止高速缓存,但软件通常不能控制高速缓存管理硬件。
另一种类型的片上存储器是嵌入式存储器或者“本地存储器”。这类存储器处于软件控制之下(即,软件对存储器进行读取和写入并因此直接控制哪一个数据存储在嵌入式存储器中)。嵌入式存储器可以具有比外部存储器更低的延迟,并且如果频繁地访问嵌入式存储器中存储的数据,则与访问外部存储器相比可以达到省电的效果。
发明内容
在一个实施例中,提供了一种包括非透明存储器和控制电路的非透明存储器单元。控制电路可以将非透明存储器作为一组非透明存储块来管理。在一个或更多个处理器上执行的软件可以请求在其中处理数据的非透明存储块。控制电路可以分配第一块,并且可以返回所分配块的地址(或者其它指示),以便软件可以访问该块。控制电路还可以提供非透明存储器和非透明存储器单元所耦合的主存储器系统之间的自动数据移动。例如,自动数据移动可以包括从主存储器系统向所分配块填充数据,或者在所分配块的处理完成之后将所分配块中的数据清除(flush)到主存储器系统。
当软件请求块时,软件可以提供一种类型的请求。这种类型可以控制非透明存储器单元是否提供自动数据移动。例如,一种类型可以指定自动填充数据到所分配块中。另一种类型可以指定在处理完成后自动清除数据。又一种类型可以是组合的自动填充和自动清除。
附图说明
下面的详细描述参考了现在所简要描述的附图。
图1是包括一个或更多个透明/非透明组合高速缓存的系统的一个实施例的框图。
图2是透明/非透明组合高速缓存的一个实施例的框图。
图3是包括非透明属性的页表条目的一个实施例的框图。
图4是限定非透明地址范围的可编程寄存器的框图。
图5是例示响应于存储器请求的透明/非透明组合存储器的一个实施例的操作的流程图。
图6是例示可以使用透明/非透明组合存储器的非透明部分的代码的一个实施例的操作的流程图。
图7是例示存储器地址空间的一个实施例的框图。
图8是例示响应于块请求的基于块的非透明高速缓存的一个实施例的操作的流程图。
图9是例示基于块的非透明高速缓存的一个实施例中每块的各种状态以及状态之间的转换的框图。
图10是例示可以请求非透明存储块并且处理块中的数据的代码的一个实施例的操作的流程图。
图11是系统的一个实施例的框图。
图12是计算机可访问存储介质的一个实施例的框图。
虽然容易对本发明进行各种修改和各种形式的替代,但在附图中以示例的方式示出了本发明的特定实施例,并且在此将对这些实施例进行详细描述。然而,应当理解,附图及其详细说明并不旨在将本发明限制为所公开的特定形式,而是相反,其目的是要覆盖落在由所附权利要求限定的本发明的精神和范围内的所有修改、等同物和替代方案。在此使用的标题仅用于组织的目的,并不意味着要用于限制描述的范围。如整个申请中所使用的那样,单词“可以”表示许可的含义(即,意味着具有可能),而非强制的含义(即,意味着必须)。类似地,单词“包括”、“包含”和“具有”意味着包括但不限于。
各种单元、电路或者其它组件可被描述为“配置成”执行一个或更多个任务。在这样的上下文中,“配置成”是对结构的宽泛表述,一般意为“具有这样的电路”,该电路在操作期间执行一个或者更多个任务。依此,即使在单元/电路/组件当前未开启时,该单元/电路/组件也可以被配置成执行该任务。一般而言,构成与“配置成”相对应的结构的电路可以包括硬件电路。类似的,为了便于描述,可以将各种单元/电路/组件描述为执行一个或更多个任务。这样的描述应当被理解为包括用语“配置成”。被配置成执行一个或更多个任务的单元/电路/组件的描述明确地不是为了援引35U.S.C§112第6段对单元/电路/组件的解释。
具体实施方式
透明/非透明组合高速缓冲存储器
在一个实施例中,集成电路包括内部数据存储器和关联标签存储器,所述关联标签存储器被配置成存储与数据存储器中的位置的至少一个子集对应的一组标签。由标签所覆盖的数据存储器部分可以被用作透明缓冲存储器。透明存储器通常可能由硬件管理,而软件因此可能不直接读取/写入透明存储器。如果在透明存储器中存储由软件读取/写入(例如,加载或存储指令)来寻址的数据,则硬件将从透明存储器提供数据(对于读取)或者更新透明存储器中的数据(对于写入)。尽管可以减少完成存储器操作的延迟,但软件可能不具有存储器操作在透明存储器中完成(与在外部主存储器系统中的完成相对)的任何其它指示。从另一个角度看,透明存储器可以不被单独地映射到存储器地址空间中的存储器地址,而是可以存储来自外部存储器的数据的副本,其中外部存储器位置被映射到关联存储器地址。可以将透明存储器临时地映射到透明存储器中存储的数据的地址(例如,经由标签存储器),但相应的主存储器位置总是也被映射到每个地址。硬件还会保证数据的一致性(如果实施一致性),并且在通过硬件修改透明存储器中的数据以及从透明存储器中删除数据的情况下更新相应的主存储器副本。
没有被标签所覆盖的数据存储器的剩余部分可以被用作非透明存储器。软件可以将非透明存储器映射到存储器地址空间的一部分。例如,可能不存在与映射到非透明存储器的存储器地址空间的一部分相关联的主存储器位置。替代地,如果存在与映射到非透明存储器的存储器地址空间的一部分相关联的主存储器位置,则这些位置将不会由耦合到非透明存储器的请求者所生成的请求来访问。因此,软件可以使用对映射到非透明存储器的存储器地址空间的一部分中的地址进行寻址的加载/存储指令来直接读取/写入非透明存储器。在一个实施例中,软件可以管理非透明存储器的内容。例如,软件可以根据存储指令或者通过对直接存储器访问(DMA)单元进行编程以从另一个源向非透明存储器传输数据来初始化非透明存储器的内容。同样,软件可以读取内容并且将它们写入一些其它位置(或者使用DMA传输)以将数据移出非透明存储器。在下面针对基于块的非透明存储器所更加详细描述的另一个实施例中,非透明存储器可以具有相关硬件以响应于来自软件的块请求将数据自动移入或移出非透明存储器。
在一个实施例中,透明存储器的大小可以是可编程的。因而,可以改变分配给透明存储器的数据存储器数量以针对集成电路中正在经受的工作负荷来优化透明存储器。例如,对于由工作负荷(其“存储器占用量”)所操作的给定大小的数据集以及对于操作期间对数据的给定类型的访问而言,增加一定大小之上的透明存储器通常不会导致性能上的显著增加。对于数据集的访问的特定大小上的命中率可以达到足够高的百分比,对于该百分比而言进一步的大小增加仅仅使命中率少量增加。因此,通过对透明部分的大小进行编程,可以优化专用于透明存储器的数据存储器的数量并且存储器的剩余部分可以用作非透明存储器。
在一个实施例中,标签存储器可以具有用于标签的容量以仅仅覆盖数据存储器的一部分,即使将透明存储器编程为其最大大小。标签存储器常常可以比数据存储器占据更多的每一存储位的空间,并因而限制标签为数据存储器的一部分可以限制透明/非透明存储器的总体大小。因此,在一些实施例中,可以实现半导体面积的高效使用。替代地,标签存储器可以具有用于数据存储器的每个高速缓存块的标签的容量。这些实施例可以允许整个数据存储器被分配为透明存储器。在这些实施例中,与数据存储器的非透明部分对应的标签存储器可以被用来存储相应块、相应块所映射的存储器地址等的状态信息。在又一个其它替代方案中,如果期望的话,可以提供单独的标签表来存储与非透明存储器中的块对应的地址和状态信息。
数据存储器(其具有分配给透明和非透明存储器的部分)仍然可以是单个存储器阵列,具有解码地址以访问阵列的单个解码器。基于对透明和非透明的分配,解码器可以修改其地址解码以保证将透明访问解码到透明部分。可以由软件管理非透明部分,以便非透明访问使用被自然地解码到非透明部分的地址。替代地,解码器可以被配置成将非透明访问的地址解码到非透明部分。使用单个存储器在空间方面也是高效的,同时提供期望的透明和非透明功能。
在一些实施例中,可能存在与硬件在透明存储器中可能进行的处理相比而言软件在非透明存储器中可能处理得更好的一些类型的工作负荷。例如,硬件可以在透明存储器中保持最近访问的数据。不涉及大量的对在前访问数据的重新访问的数据集处理可能不会从透明存储器中受益,但软件可能能够高效地管理非透明片上存储器以提供对数据的更低延迟的访问(平均值)。即使对于被频繁地重新访问的数据而言,非透明存储器有时可能比透明存储器更高效和/或提供更好的性能。例如,在不影响/干扰其它高速缓存操作的情况下从透明高速缓存中清除地址范围可能是富有挑战性的,而在一个实施例中,可以通过非透明存储器中的硬件清除地址范围。在另一个示例中,高速缓存中实施的替换策略可能不适合特定的工作负荷,而允许软件控制分配并且从非透明存储器中收回则可以使非透明存储器中的数据存储与工作负荷相匹配。涉及更多的数据的重新访问的其它访问类型可以受益于透明存储器。
现在转向图1,显示了包括一个或更多个透明/非透明组合片上存储器的系统的一个实施例的框图。在图1的实施例中,系统包括一个或更多个图形处理单元(GPU)10A-10N、相应的2级(L2)高速缓存12A-12N和多核管理块(MCMB)14A。MCMB14A包括共享高速缓冲存储器16A(其一部分可以是3级(L3)透明高速缓冲存储器并且其一部分可以是非透明存储器)。MCMB14A还包括耦合到共享存储器16A的控制单元18A。MCMB14A耦合到L2高速缓存12A-12N(其耦合到相应的GPU10A-10N)。MCMB14A还耦合到主存储器系统20。该系统进一步包括一个或更多个中央处理单元(CPU)22A-22M、相应的2级(L2)高速缓存24A-24M和多核管理块(MCMB)14B。MCMB14B包括共享高速缓冲存储器16B(其一部分可以是3级(L3)透明高速缓冲存储器并且其一部分可以是非透明存储器)。MCMB14B还包括耦合到共享存储器16B的控制单元18B。MCMB14B耦合到L2高速缓存24A-24M(其耦合到相应的CPU22A-22M)。MCMB14B还耦合到主存储器系统20。在此通过跟随有字母的附图标记来引用的组件可以与具有相同附图标记但不同字母的其它组件类似(但并非必须完全相同)。可以通过单独的附图标记来共同引用具有相同附图标记但不同字母的组件(例如,可以将GPU10A-10N共同地称为GPU10)。
一般而言,每一个共享高速缓冲存储器16可以耦合成从一个或更多个请求源接收存储器请求。例如,在图1中,GPU10可以是存储器16A的请求源,CPU22可以是存储器16B的请求源。如图1中所示,存储器请求可以穿过其它组件(例如,分别穿过图1中的L2高速缓存12和24)以到达共享存储器,并且如果存储器请求在L2高速缓存12或24中命中,则它们可能不到达共享存储器。GPU10和CPU22可以被配置成响应于执行加载/存储指令、响应于指令获取以及响应于诸如地址转换的辅助支持操作而生成存储器请求。尽管在该实施例中将处理器用作请求源,但可以使用能够生成存储器请求的任何电路。
存储器请求可以包括将请求识别为非透明或透明的非透明属性。例如,非透明属性可以是指示非透明被设置而透明被清除的情况的位。在其它实施例中可以使用该位的设置和清除状态的相反含义,并且可以使用其它属性编码。
如果指示存储器请求为非透明,则高速缓冲存储器16可以被配置成将地址解码到存储器的非透明部分。可以响应于存储器请求(如果请求为读取)提供存储在所识别位置的数据或者响应于存储器请求(如果请求为写入)更新存储在所识别位置的数据。也就是说,存储器请求的地址可以直接对存储器进行寻址,而无需执行任何标签比较或者地址的其它鉴定(qualification)。另一方面,可以解码透明存储器请求以对存储器的透明部分进行寻址。如果检测到标签匹配并且高速缓存中的高速缓存块为有效,则可以提供/更新来自该一个位置或者更多个位置的数据。检测到有效标签匹配可以被称为高速缓存命中(所寻址的数据存储在高速缓存中)。没有检测到有效标签匹配可以被称为高速缓存未命中(所寻址的数据没有存储在高速缓存中)。控制单元18可以被配置成启动高速缓存填充以响应于高速缓存未命中而将所寻址的数据复制到高速缓存。可以选择高速缓存中的位置来存储未命中的高速缓存块,并且如果有效的、所修改的(脏的)高速缓存块存储在所选择的位置中,则控制单元18可以被配置成将所修改的高速缓存块写回主存储器系统20。另一方面,存储器的非透明部分中不存在未命中的概念,因此不存在由控制单元18为非透明部分启动的高速缓存填充。
可以以各种方式来确定非透明属性。在一个实施例中,非透明属性可以包含在用来将虚拟地址转换为用于访问存储器的物理地址的页表条目中。例如,主存储器系统20中存储的页表26可以包括页表条目,所述页表条目包括页表所转换的每一页的非透明属性。控制虚拟地址转换的软件可以给每一页指定非透明属性。软件可以在CPU22A-22M、GPU10A-10N或者两者之上执行。在一个实施例中,软件可以在用于访问主存储器系统20的存储器地址空间内指定非透明地址范围,并且可以将该非透明地址范围映射到存储器16的非透明部分。对非透明地址范围中页的转换可以具有指示非透明的非透明属性,并且其他页可以具有指示透明的非透明属性。其它实施例可以使用其它机制来确定非透明属性。例如,可以将非透明地址范围编程到存储器请求路径中可访问的一个或更多个寄存器中(例如,GPU10或22的存储器管理单元中;处理器10或22的地址生成单元中;存储器16中或其控制单元18中等)。其它实施例可以将非透明属性指定为指令的操作数(经由特定指令编码等)。
GPU10A-10N可以实现针对图形操作(例如,将图像渲染到帧缓冲器中、像素操作等)而优化的指令集架构。GPU10A-10N可以实现任何微架构,包括标量的、超标量的、流水线的、超级流水线的、无序的、有序的、推测的、非推测的等等,或者它们的组合。GPU10A-10N可以包括电路,并且可选地,可以实现微编码技术。类似地,CPU22A-22M可以实现通用指令集架构并且可以实现任何微架构,包括上述可能中的任何一个。GPU和CPU可以是示例或者处理器(其可以是被配置成执行指令的任何电路)。处理器可以是分立集成电路、集成在集成电路上的内核等等。例如,图1中,可以将GPU10、L2高速缓存12和MCMB14A集成在图形芯片上,并且可以将CPU22、L2高速缓存24和MCMB14B集成在多内核CPU芯片上。在另一个实施例中,可以将GPU10、CPU22、L2高速缓存12和24以及MCMB14集成在集成电路中。在一些实施例中,集成电路还可以包括与GPU/CPU和相关电路集成在一块的其它组件。
GPU10和CPU22可以包括L1高速缓存(未示出),因此在该实施例中,高速缓存12和24是L2高速缓存。L2高速缓存可以具有任意大小和配置(例如,关联设置、直接映射等等)。L2高速缓存还可以实现任意的高速缓存块大小(例如,32字节或64字节,或者更大或更小)。高速缓存块大小可以是高速缓存中进行分配和解除分配的单位。
除了包括组合高速缓冲存储器16之外,MCMB14通常可以提供相应处理器和主存储器系统20之间的互连。如果实施高速缓存一致性,则MCMB14可以负责发送探测(例如,来自一个处理器的请求可能导致对其它处理器的探测以获得其它处理器的L1或L2高速缓存中的任何已修改数据、针对任何更新请求使已高速缓存的副本无效等等)。MCMB可以相互通信和/或与主存储器系统20中的存储器控制器通信。在一个实施例中,存储器控制器可以与MCMB14一同实现在芯片上,和/或可以是一个MCMB14的一部分。
主存储器系统20可以包括任何类型的存储器。例如,存储器可以包含动态随机访问存储器(DRAM)、同步DRAM(SDRAM)、双速率(DDR、DDR2、DDR3等等)SDRAM(包括诸如mDDR3的SDRAM的移动版本)、RAMBUS DRAM(RDRAM)、静态RAM(SRAM)等等。
图1的系统的其它实施例可以包括仅仅一个共享高速缓冲存储器(例如,或者存储器16A/控制单元18A或者存储器16B/控制单元18B)。而其它实施例可以具有对于CPU22A-22M和GPU10A-10N两者而言可访问的共享存储器(其可以类似于上述的存储器16/控制单元18)。
注意,各个实施例中每种组件的数量可以变化。例如,可以提供一个或更多个GPU10A-10N,并且可以提供一个或更多个CPU22A-22M。在其它实施例中,可以没有GPU和/或没有CPU。如10N和22M所示,一种处理器的数量可以不同于其它处理器的数量。图1中,L2高速缓存12和24被显示为与相应的处理器相关联,但在其它实施例中可以由处理器的子集所共享。又在其它实施例中,可以没有L2高速缓存。
现在转向图2,显示了存储器16A和控制单元18A的一个实施例的框图。存储器16B和控制单元18B可以类似。在所示实施例中,存储器16A包括解码器30A-30B、标签存储器32、数据存储器34和比较器36。控制单元18A包括边界(delineation)寄存器38。解码器30A-30B被耦合成接收存储器请求的地址(图2中的地址)、请求的非透明属性(图2中的NT)和请求的其它属性(图2中的其它属性)。在各个实施例中,控制单元18A被耦合成接收非透明属性,并且还可以接收其它属性或者其它属性中的一部分。比较器被耦合成接收非透明属性、其它属性(或者其它属性的至少一部分)以及地址(或者与来自标签存储器32的标签进行比较的地址的至少一部分)。解码器30A耦合至标签存储器32和控制单元18A,解码器30B耦合至数据存储器34和控制单元18A。数据存储器34耦合至控制单元18A,以提供到L2高速缓存和主存储器系统的读数据输出,以及从L2高速缓存接收写数据。标签存储器32耦合至比较器36(比较器36耦合至数据存储器34和控制单元18A)。
解码器30A-30B可以被配置成解码存储器请求的地址以选择标签存储器32和数据存储器34中各自要被访问的存储器位置。标签存储器32中的位置可以存储要与透明存储器请求的地址的标签部分进行比较的一个或更多个标签。位置中存储的标签数量可以取决于透明高速缓存的配置。例如,如果透明高速缓存是直接映射的,则可以存储一个标签。如果透明高速缓存是N路关联设置的,则可以存储N个标签。标签可以由标签存储器32与诸如有效位的各种状态一同输出到比较器36。比较器36可以比较标签和地址的标签部分,并且将命中或未命中通知给数据存储器34和控制单元18A。如果高速缓存是N路关联设置的,则比较器36还可以识别命中的路。数据存储器34可以从命中的路输出数据(或者针对写入,可以向命中的路写入写数据)。地址的标签部分可以是除了标识高速缓存块中存储器请求的偏移的位以及还除了由解码器30A-30B解码以选择位置的索引位之外的地址部分。
比较器36可以接收非透明属性,并且可以被配置成禁止针对非透明存储器访问发送命中信号。替代地,数据存储器34可以响应于非透明存储器请求访问数据存储器34的非透明部分中所识别的位置。类似地,存储器请求的其它属性也可以影响比较。例如,其它属性可以包括不可缓存的属性和/或高速缓存旁路属性。如果存储器访问是不可缓存的或者高速缓存被旁路,则比较器36还可以禁止断言对于访问的命中。控制单元18A可以与MCMB14A中的其它电路连接以启动存储器请求(来自/到图2中的主存储器系统)的主存储器访问。替代地,在一些实施例中,可以为非一致性部分保持标签并且比较器36可以进行比较。
类似地,解码器30B可以被配置成解码地址并且选择要被访问的位置。如图2中水平虚线40所示,可以将数据存储器34划分为透明高速缓存部分(图2中虚线40以上)和非透明存储器部分(图2中虚线40以下)。因此,可以将非透明存储器地址解码到非透明部分中的位置并且可以将透明存储器地址解码到透明部分中的位置。例如,在一个实施例中,可以将数据存储器334的透明部分映射到索引的最低数值。在这样一个实施例中,解码器30B可以对针对透明存储器请求而被映射到透明部分的范围之外的索引的地址位进行掩码,保证将任一透明存储器请求地址解码到透明部分。也就是说,如果非透明属性指示透明,则解码器30B可以将索引的较高有效位掩码为零,迫使该索引被解码到透明部分。可以不对非透明存储器请求地址进行掩码,并因此可以将非透明存储器请求地址解码到非透明部分。在一个实施例中,软件可以控制非透明存储器地址范围的分配,以使该范围中的任何地址具有针对透明存储器请求而掩码的索引部分中的非零地址位(并因此在解码器30B中无需正常地址解码之外的任何特定逻辑的情况下将非透明存储器请求地址解码到非透明部分)。
例如,数据存储器24可以包括4096个可寻址存储器位置,由此数据存储器的索引可以包括12个地址位。如果将存储器位置中的256个分配给透明高速缓存,则可以针对透明存储器请求对最低有效的8个地址位进行解码(可以对最高有效的4个位进行掩码)并且非透明存储器地址范围可以包括索引的4个最高有效位中的非零位。其它实施例可以将透明和非透明地址映射到其它路上的数据存储器位置。
在一个实施例中,透明高速缓存的大小在边界寄存器38中是可编程的。在这样一个实施例中,控制单元18A可以向解码器30A-30B提供掩码控制以针对高速缓存的可编程大小而对附加地址位进行掩码。继续以上示例,如果将透明高速缓存编码为1/2大小(128个存储器位置),则对一个附加最高有效位(即,第5个最高有效位)进行掩码。在此情况下,解码器30A还可以对索引进行掩码,以减少匹配高速缓存的已编程大小的标签访问。因为可以将当前没有被用于透明高速缓冲存储器的部分用于非透明存储器,所以已编程边界还可以增加非透明存储器的大小。
其它实施例可以使用不同的解码器30A-30B配置。例如,可以将非透明存储器范围自由地分配给任何基址,并且解码器30B可以通过将基址解码到非透明部分中的第一位置、将基址加第一位置的大小解码到第二位置等等来将该范围解码到数据存储器的非透明部分。另一个实施例还可以使用将透明高速缓存和非透明存储器映射到数据存储器34中的位置的不同方案。
在一些实施例中,可以对数据存储器34进行分组(bank)。例如,可以横穿数据存储器34中的八个8字节存储体来存储64字节的高速缓存块。在这样一个实施例中,非透明存储器可以具有比高速缓存块更精细的粒度。例如,非透明存储器访问可以是存储体大小的(例如,在上述示例中8字节)。
如图2中所示,数据存储器34可以是由单个解码器管理单存储器阵列。也就是说,解码器可以解码地址以生产一组字线,每一字线选择形成数据存储器34的存储器阵列中的不同位置。位置中的一部分可以是透明高速缓冲存储器的高速缓存块存储位置,而其它位置可以是非透明存储器位置。
在另一个实施例中,也可以标签存储器的非透明部分。这样的实施例可以允许将多个地址范围指定为非透明地址。然而,在这样一个实施例中,非透明存储器的标签存储器可以由软件读取和写入,以致软件可以管理非透明部分的内容。
注意,尽管图2例示了输入到存储器16A的一个地址,但其它实施例可以在多端口配置中并行地支持多于一个的地址。针对每一个端口可以包括类似于30A-30B的解码器。
现在转向图3,显示了可以存储在页表26中的页表条目50的一个实施例的框图。页表条目50可以用作任何地址转换机制的一部分。在一些实施例中,可以使用分级方式的多页表访问将虚拟地址映射到物理地址。在这样的实施例中,可能不需要虚拟地址标签(VA标签)。在其它实施例中,可以将没有用来查找页表条目的虚拟地址部分与条目50的虚拟地址标签字段进行匹配。物理页编号(PPN)字段可以存储物理地址的页部分(其可以与虚拟地址的偏移部分连接来形成物理地址)。可以支持任何的页大小(例如,4千字节、8千字节或者诸如1-4兆字节的更大,或者甚至更大)。在一些实施例中,可以支持多于一页的大小。页表条目50还包括非透明属性(NT),并且可以包括其它属性(其它属性字段)。例如,其它属性可以包括可缓存性、直写或写回、权限等级要求、有效位、读/写许可等等。
因此,使用诸如条目50的页表条目,软件可以使用NT属性将一定范围的物理地址分配为非透明。该范围之外的其它页可以具有指示透明的NT属性。
图4是可以编程有非透明地址范围的寄存器52的实施例的框图。可以以任何方式表达地址范围。例如,如图4中所示,地址范围可以表示为基址和界限。该范围还可以表示为基址和大小,或者可以以定义范围的任何其它方式来表示。可以在用于存储器请求的地址生成和转换(如果可应用)的任一点处使用诸如寄存器52的寄存器来确定存储器请求的非透明属性。例如,处理器中的存储器管理单元(MMU)可以包括寄存器52,并且可以将所转换的地址与基址及范围字段进行比较来确定该地址是位于非透明地址范围内还是位于非透明地址范围之外。在一些实施例中,通过包括多于一个的寄存器52可以定义多于一个的地址范围。
接下来转向图5,显示了例示响应于提供给存储器16A/控制单元18A的存储器请求的存储器16A/控制单元18A的一个实施例的操作的流程图。尽管为了易于理解而以特定顺序显示了流程块,但可以使用其它顺序。也可以通过控制单元18A内的组合逻辑并行地执行流程块。可以通过多个时钟周期将流程块、流程块的组合和/或将流程图作为整体来流水线化。
如果请求的非透明属性指示透明(判决块54,“否”分支),则可以配置解码器30A-30B以对存储器请求的地址进行掩码来保证将地址解码到数据存储器34的透明部分(块56)。如果非透明属性指示非透明(判决块54,“是”分支),则不进行掩码。在这两种情况下,可以配置解码器30A-30B来解码地址(块58)并且选择标签存储器32和数据存储器34中的存储器位置。如果存储器请求为透明并且是存储器16A的透明部分中的未命中(判决块60,“是”分支),则可以配置控制单元18A来生成高速缓存填充以获得未命中高速缓存块(块62)。可以配置控制单元18A来选择块以从高速缓存收回,并且如果所收回的块被修改,则可以配置控制单元18A来将高速缓存块写回主存储器系统20。如果存储器请求为命中或者为非透明(判决块60,“否”分支),则可以访问数据存储器34中的存储器位置。
如果存储器请求是读取(判决块64,“是”分支),则存储器16A可以输出来自数据存储器34中所访问位置的数据(块66)。否则,存储器请求是写入(判决块64,“否”分支),而存储器16A可以用写入数据更新所访问的位置(块68)。
接下来转向图6,显示了例示可以由CPU22或者GPU10中的一个或两者执行以控制存储器16A的控制代码的一个实施例的操作的流程图。可以针对存储器16B执行类似操作。控制代码可以包含当被执行时可以导致系统实现图6中所示操作的指令。尽管按照图6中的特定顺序显示了流程块,但可以使用其它顺序。
该代码可以确定存储器16A的透明高速缓存部分的期望大小(块70)。期望大小可以是最大大小,或者小于最大大小。各种因素可以影响该确定。例如,要执行的工作负荷可以影响大小。如果工作负荷受益于较大的高速缓存大小(例如,因为预期的命中率将上升),则可以选择较大的高速缓存大小。如果工作负荷将不会受益于较大的高速缓存(例如,工作负荷执行时没有太多的数据重用),则可以使用较小的高速缓存大小。该代码可以将大小编程到控制单元18A中(例如,在边界寄存器38中-块72)。
取决于所选的透明高速缓存大小和数据存储器34的大小,该代码可以确定基址和非透明存储器的大小(块74)。例如,如果选择1兆字节的高速缓存大小,则非透明存储器范围的基址可以位于1兆字节边界上。非透明存储器的大小可以是比透明高速缓存的大小小的数据存储器大小(例如,如果数据存储器是8兆字节并且高速缓存大小是1兆字节,则非透明存储器是开始于1兆字节边界的7兆字节)。取决于实施例,该代码可以对配置寄存器或页表条目进行编程来标识非透明存储器(块76)。该代码可以管理非透明存储器的内容(块78)。例如,该代码可以将非透明存储器初始化为已知值、可以在非透明存储器和其它存储器位置或外设之间移动数据等等。在一些实施例中,可以在硬件电路中处理非透明存储器和其它存储器位置或外设之间的数据移动。
接下来转向图7,显示了存储器地址空间80的一个实施例的框图。存储器地址空间可以包含被映射到系统存储器的一组数值。也就是说,存储器地址空间80内的每个数值唯一地标识系统存储器中的特定存储位置。在一些情况下,可以将存储器地址空间80的一部分映射到外围设备(存储器映射输入/输出(I/O)),但将存储器地址空间的剩余部分映射到存储器位置。不同地址空间(例如I/O地址空间或配置地址空间)中的地址可以是不能与存储器地址空间中的地址进行比较的。
如图7中所示,将存储器地址空间80的一部分映射到存储器16A的非透明部分(附图标记82)。存储器地址空间内非透明范围82的位置可以通过软件确定,并且在一些实施例中可以开始于基于透明高速缓存部分的大小的特定边界。可以将存储器地址空间中的其它存储器地址(例如,非透明范围82之下的地址(示为附图标记84)和非透明范围82之上的地址(示为附图标记86))映射到主存储器系统20。如果在页表中被指示为可缓存的或者经由用于确定可缓存性的其它机制(诸如CPU22或者GPU10中可支持的存储器类型区域寄存器),范围84和86中的地址可以具有用于存储器16A的透明高速缓存部分中的高速缓存的资格。
图7中,在空间的左侧显示了存储器地址空间80的数字地址。因此,下面的主存储器地址范围84开始于地址0并且延伸到地址N。地址N可以是作为存储器16A的透明高速缓存部分的大小的边界的任何地址。因而,非透明地址范围开始于地址N+1并且延伸到地址N+M(其中M是非透明范围的大小)。上面的主存储器地址范围开始于地址N+M+1并且延伸到N+M+Q。因此,将0和N+M+Q之间的每个地址映射到主存储器系统20或者存储器16A的非透明部分中的特定存储器位置。地址N+M+Q或者是系统中的最大可能地址,或者大于N+M+Q的地址可能导致生成地址的指令中的错误。
基于块的非透明存储器
存储器16A的非透明部分可以足以存储GPU10的非透明数据集(也就是说,软件期望映射到存储器16A中的非透明存储器的数据集)。类似地,非透明存储器16B可以足以存储CPU22的非透明数据集。在其它实施例中,期望的非透明数据集可以超过非透明存储器的大小。对于这样的实施例,软件可能需要相当频繁地将数据传入非透明存储器以及从非透明存储器传出。控制单元18A(或者18B)的一个实施例被预期为在执行数据移动时提供辅助。
可以在图1实施例的情境中实现一些实施例,其中还将存储器16A的一部分分配给透明高速缓冲存储器。然而,可以在不与同一存储器阵列中的透明高速缓冲存储器共享的非透明存储器中实现其它实施例(但其仍然与向非透明存储器生成存储器请求的请求源位于片上)。
可以将非透明存储器地址范围划分为多个非透明存储块。非透明存储块是可以由请求源(例如,GPU10A-10N或者CPU22A-22M)请求的非透明存储器的连续(存储器地址空间中)块。非透明存储块可以是任何期望的大小,并且不需要与高速缓存块的大小相关联。例如,非透明存储块可以是系统中实施的地址转换机制中页的大小,或者可以是页大小的整数倍。如果期望的话,其它实施例也可以使用比页大小更小的大小。
为了让说明书的剩余部分简明,将使用GPU10A-10N作为请求源的示例并且将存储器16A的非透明部分和控制单元18A作为非透明存储器的示例。然而,其它实施例可以具有其它请求源和非透明存储器,包括CPU22A-22M和存储器16B/控制单元18B(或者用于CPU和GPU请求者源的单个共享存储器)。
在执行对非透明存储器的各种读取和写入之外,GPU10可以被配置成向控制单元18A传输块请求。块请求可以标识块的使用模式,并且还可以标识主存储器地址(也就是说,没有映射到非透明存储器的地址)。控制单元18A可以被配置成响应于块请求而分配非透明存储块中的一个,并且可以被配置成向块返回指针(例如,非透明存储块的基址)。基于使用模式,控制单元18A可以自动地在主存储器和所分配块之间移动数据。例如,控制单元18A可以自动地从主存储器向所分配块填充数据、在GPU10指示其用完(finish with)所分配块时自动地将数据从所分配的块清除到主存储器或者以上两者。
可以以任何方式表达块请求。例如,块请求可以是被指定为块请求地址的已定义地址的存储指令,其后跟随有同一地址的加载指令。存储指令所存储的数据可以是作为所分配块的数据的源/目的地的主存储器地址并且还可以包括下述使用模式的指示。可以将块地址(所指定块的基址)作为加载指令的结果来返回,因此GPU上执行的软件可以使用块地址来访问该块。替代地,可以在GPU的指令集架构中定义特定的指令来传输块请求。可以使用用于传输块请求和接收块地址的任何机制。
在一个实施例中,存在用于非透明存储块的三种可能使用模式:静态读取、静态写入和静态读取/写入。其它实施例可以定义所期望的两个或更多使用模式的任一集合。静态读取使用模式包括当块请求者用完该块时自动地将数据从所分配块清除到主存储器。因此,静态读取块可以是块请求者期望对块的每一字节进行写入(或者块的未写字节上的内容是“无关的”)的块。静态写入使用模式包括自动地从主存储器填充数据。静态读取/写入模式包括自动地填充和自动地清除二者。
通过提供块分配和自动数据移动,控制单元18A可以将GPU上执行的软件从数据移动任务中释放出来。在一些情况下,因为软件不需要使用加载/存储指令来移动数据,所以可以提高性能。
现在转向图8,显示了例示响应于非透明存储块的块请求的控制单元18A的一个实施例的操作的流程图。尽管为了易于理解而以特定顺序显示了流程块,但可以使用其它顺序。可以以控制单元18A中的组合逻辑并行地执行流程块。可以通过多个时钟周期将流程块、流程块的组合和/或将流程图作为整体来流水线化。
在一个实施例中,特定请求者的块请求还可以是请求者用完在此前所分配的非透明存储块的指示。如果在前非透明存储块分配给了请求者(判决块90,“是”分支),并且在前非透明存储块是静态读取类型(判决块92,“是”分支),则控制单元18A可以被配置成开始在前非透明存储块的清除(块94)。控制单元18A可以被配置成将非透明存储块的状态改成清除。当请求在前非透明存储块时,如果使用模式被指示为静态读取或者静态读取/写入,则在前非透明存储块可以具有静态读取类型。如果在前非透明存储块不是静态读取类型,则控制单元18A可以被配置成将非透明存储块的状态改成可用(块96)。
在其它实施例中,可以支持明确的块完成命令,并且请求者可以传输块完成命令到控制单元18A。控制单元18A可以被配置成响应于块完成命令执行通过块92、94和96所示的相同处理。
控制单元18A可以被配置成响应于块请求而确定非透明存储块是否可用于分配(判决块98)。如果否(判决块98,“否”分支),则控制单元18A可以等待非透明存储块变为可用(块100)。替代地,控制单元18A可以被配置成如果非透明存储块不可用于分配,则返回“没有块可用”响应给块请求。“没有块可用”响应可以是零块地址,或者可以在可能为块内偏移的块地址的最低有效位中指出。如果非透明存储块可用或者在等待之后变为可用,则控制单元18A可以被配置成分配非透明存储块(块102)。控制单元18A还可以被配置成记录块请求中提供的相应主存储器地址,并且可以关联相应主存储器地址和所分配块(块104)。
如果块请求包括静态写入类型(例如,使用模式是静态写入或者静态读取/写入-判决块106,“是”分支),则控制单元18A可以被配置成启动来自相应主存储器地址的所分配块的填充(块108)。控制单元18A可以被配置成将所分配块的状态改成填充(块110)。如果块请求没有包括静态写入类型(判决块106,“否”分支),则控制单元18A可以被配置成将块的状态改成活动的(块112)。无论在何种情况下,控制单元18A可以被配置成将所分配块的块地址返回给请求者(块114)。
现在转向图9,显示了例示可以由用于非透明存储块的控制单元18A的一个实施例来实现的状态机的框图。可以并行地为每个非透明存储块实现图9的状态机。状态机包括可用状态120、填充状态122、活动状态124和清除状态126。上面关于图8提到了图9所示的一些转换。
如果非透明存储块处于可用状态120,则其响应于来自请求者的块请求而可用于分配。如果控制单元18A为具有静态写入类型(例如,静态写入或者静态读取/写入使用模式)的块请求分配块,则控制单元18A可以被配置成将块的状态从可用状态120改成填充状态122。在一个实施例中,控制单元18A可以被配置成在块处于填充状态122时拖延或者拒绝对块的读取存储器请求(因为数据仍然在由控制单元18A写入块,将来自请求者所提供的相应主存储器地址的数据移入)。在填充状态122,控制单元18A可以被配置成读取相应主存储器地址(以及与相应主存储器地址连续的地址)并且将数据写入到所分配块。一旦填充完成,控制单元18A可以被配置成将块的状态从填充状态122改成活动状态124。另一方面,如果控制单元18A响应于不具有静态写入类型的块请求而分配块,则控制单元18A可以将块的状态从可用状态改成活动状态124。
在活动状态124,将非透明存储块分配给请求者并且请求者可以在需要时访问非透明存储块。一旦请求者已经完成非透明存储块中数据的处理,则请求者可以指示用完该块(例如,通过请求另一个块或者使用如上所述的明确的块完成命令)。如果请求者在该块完成并且其并非静态读取类型(例如,静态读取或者静态读取/写入使用模式),则控制单元18A可以将块的状态从活动状态124改成可用状态120。如果块是静态读取类型,则控制单元18A可以被配置成将块的状态从活动状态124改成清除状态126。在清除状态126,控制单元18A可以被配置成将数据从块写入到相应主存储器地址。当清除完成时,控制单元18A可以被配置成将块的状态从清除状态126改成可用状态120。
接下来转向图10,显示了例示GPU10上执行的使用非透明存储块来处理数据的代码的一个实施例的操作的流程图。该代码可以包括当被执行时导致图1的系统实现图10所示的操作的指令。尽管为了易于理解而以特定顺序显示了流程块,但可以使用其它顺序。
代码可以确定块类型和要被处理的块的主存储器地址(块130)。块类型可以基于代码要在块上进行的处理。例如,如果代码要创建写入块的新数据,则使用模式可以是静态读取。如果代码要从块读取数据而不是对其进行写入,则使用模式可以是静态写入。如果代码要从块读取数据并且写入数据,则使用模式可以是静态读取/写入。可以基于要处理的数据的位置确定主存储器地址。例如,GPU10可能正在处理主存储器系统的帧缓存中的图像片。图像片可以是整个图像的分段。GPU可以选择要处理的下一个图像片,并且主存储器地址可以是所选图像片的地址。
代码可以请求非透明存储块(块132)并且可以使用块地址来执行非透明存储块中的处理(块134)。可选地,在包括明确的块完成命令的实施例中,代码可以传输块完成命令(块136)。如果主存储器中存在额外的要被处理的块(判决块138,“是”分支),则代码返回至块130以开始下一个块的处理。
注意,尽管在此描述了软件或硬件中实现的特定功能,但软件和硬件中实现的功能可以根据实施例而变化。例如,软件可以分配被定义为非透明存储器的一个或更多个地址区域,并且硬件可以被配置成将数据移入非透明存储器和从非透明存储器移出数据。
注意,在一些实施例中,硬件电路和正在执行的软件代码之间的通信可以采用块请求的形式并且检查返回块的内容。更进一步,通信可以采用加载/存储命令的形式,所述加载/存储命令具有识别特定通信的各种属性。
系统和计算机可访问存储介质
接下来转向图11,显示了系统150的一个实施例的框图。系统150可以是图1所示系统的另一个实施例。在所示实施例中,系统150包括耦合到一个或更多个外设154和外部存储器158的集成电路152的至少一个实例。集成电路152可以包括GPU10、CPU22、L2高速缓存12和24、MCMB14、存储器16和控制单元18。外部存储器158可以包括主存储器系统20。还提供电源156,所述电源156向集成电路152提供电源电压以及向存储器158和/或外设154提供一个或更多个电源电压。在一些实施例中,可以包括多于一个的集成电路152的实例(并且还可以包括多于一个的外部存储器158)。
取决于系统150的类型,外设154可以包括任何期望的电路。例如,在一个实施例中,系统150可以是移动设备(例如,个人数字助理(PDA)、智能手机等)并且外设154可以包括用于各种类型的无线通信(诸如wifi、蓝牙、蜂窝、全球定位系统等)的设备。外设154还可以包括附加存储器,包括RAM存储器、固态存储器或者磁盘存储器。外设154可以包括用户接口设备,诸如显示屏(包括触摸显示屏或者多点触摸显示屏)、键盘或者其它输入设备、麦克风扬声器等。在其它实施例中,系统150可以是任何类型的计算系统(例如,桌面个人计算机、膝上型计算机、工作站、轻省台式机(net top)等)。
现在转向图12,显示了计算机可访问存储介质200的框图。一般而言,计算机可访问存储介质可以包括在用来向计算机提供指令和/或数据期间可由计算机访问的任何存储介质。例如,计算机可访问存储介质可以包括诸如磁介质或光介质的存储介质,例如,磁盘(固定的或者可移除的)、磁带、CD-ROM或者DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW。存储介质可以进一步包括易失性或者非易失性存储介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM、闪存、经由诸如通用串行总线(USB)接口、闪存接口(FMI)、串行外设接口(SPI)等的外设接口可访问的非易失性存储器(例如,闪存)。存储介质可以包括微机电系统(MEMS)、以及经由诸如网络和/或无线电线路的通信介质可访问的存储介质。图12中的计算机可访问存储介质200可以存储控制代码202(其可以包括以上关于图6和/或10所述的代码)。通常,计算机可访问存储介质200可以存储当被执行时实现图6和10中所示操作的一部分或全部的任何指令集。载体介质可以包括计算机可访问存储介质和诸如有线或无线传输的传输介质。
一旦完全理解了上述公开,则对于本领域技术人员而言,各种变化和修改将变得清楚。下附权利要求旨在被解释为包括所有的这类变化和修改。
Claims (25)
1.一种用于基于块的非透明高速缓存的方法,包含:
控制单元接收针对所述控制单元所耦合的非透明存储器的块的请求,所述控制单元将所述非透明存储器作为多个非透明存储块来管理,其中所述非透明存储器可由软件使用与所述非透明存储器相关联的已定义存储器地址范围内的存储器地址来直接寻址,并且其中,所述已定义存储器地址范围在存储器地址空间内,并且其中,主存储器系统被映射到所述存储器地址空间内的其它地址;
所述控制单元响应于所述请求分配所述多个非透明块中的第一块;
所述控制单元响应于所述请求将所述已定义存储器地址范围内的所述第一块的第一地址返回给请求者;以及
响应于所述请求中指示的类型,所述控制单元自动地将数据从所述主存储器系统中的第二存储器地址移入所述第一块,所述第二存储器地址在所述已定义存储器地址范围之外,其中所述第二存储器地址在所述请求中指示。
2.如权利要求1所述的方法,其中所述类型是静态写入。
3.如权利要求1所述的方法,进一步包含:
所述控制单元接收针对非透明存储器的块的第二请求,其中所述第二请求包括静态读取类型;
所述控制单元响应于所述第二请求分配所述多个非透明块的第二块;
所述控制单元响应于所述第二请求将所述已定义存储器地址范围内的所述第二块的第三地址返回给所述请求者;以及
响应于所述类型为静态读取,所述控制单元不自动地将数据从所述第二请求中指示的第四存储器地址移入所述第二块。
4.如权利要求3所述的方法,进一步包含:
所述控制单元确定所述请求者用完所述第二块;以及
所述控制单元响应于所述类型为静态读取而自动地将所述第二块中的数据写入所述第四存储器地址。
5.如权利要求1所述的方法,进一步包含:
所述控制单元确定所述请求者用完所述第一块;以及
所述控制单元响应于所述第一块在所述请求者处理期间被写入而将所述第一块中的数据自动写入与所述第一块相关联的所述第二存储器地址。
6.一种用于基于块的非透明高速缓存的装置,包含:
非透明存储器,包含可由软件使用已定义存储器地址范围内的地址来直接寻址的多个存储器位置,并且其中,所述已定义存储器地址范围在存储器地址空间内,并且其中,主存储器系统被映射到所述存储器地址空间内的其它地址;以及
控制单元,被配置成将所述非透明存储器作为多个非透明存储块来管理,其中所述控制单元被耦合成从请求者接收针对块的请求,并且其中所述控制单元被配置成响应于所述请求分配所述多个非透明存储块的第一块,并且其中所述控制单元被配置成响应于为所述请求提供的类型来选择性地自动将数据从所述主存储器系统填充到所述第一块或将数据从所述第一块中清除到所述主存储器系统,其中所述控制单元被配置成响应于所述请求将所述已定义存储器地址范围内的地址返回给所述请求者。
7.如权利要求6所述的装置,其中,响应于第一类型,所述控制单元被配置成自动地将数据填充到所述第一块,并且其中,响应于第二类型,所述控制单元被配置成不将数据移入所述第一块。
8.如权利要求7所述的装置,其中所述第一类型是静态写入类型。
9.如权利要求7所述的装置,其中所述第二类型是静态读取类型。
10.如权利要求7所述的装置,其中所述请求包括不在所述已定义存储器地址范围内的第一存储器地址,并且其中所述控制单元被配置成将存储在所述第一存储器地址处的数据填充到所述第一块。
11.如权利要求7所述的装置,其中,所述控制单元被配置成响应于所述第二类型以及所述请求者用完所述第一块,自动地将数据从所述第一块清除到主存储器子系统。
12.如权利要求11所述的装置,其中所述请求包括不在所述已定义存储器地址范围内的第一存储器地址,并且其中所述控制单元被配置成将数据从所述第一块清除到所述第一存储器地址所指示的位置。
13.如权利要求11所述的装置,其中所述控制单元被配置成响应于所述请求者已经修改所述数据而从所述第一块清除所述数据。
14.如权利要求6所述的装置,其中所述非透明存储器是存储器阵列的一部分,所述存储器阵列还包括作为用作高速缓存的透明存储器的第二部分。
15.如权利要求14所述的装置,进一步包含对应于所述第二部分的高速缓存标记存储器,所述高速缓存标记存储器被配置成存储所述第二部分中可存储的多个高速缓存块的标记。
16.一种用于基于块的非透明高速缓存的系统,包含:
一个或更多个处理器,被配置成请求在其中处理数据的非透明存储器的块;
主存储器系统,并且其中,已定义存储器地址范围被映射到所述非透明存储器,并且所述已定义存储器地址范围在存储器地址空间内,并且其中,所述主存储器系统被映射到所述存储器地址空间内的其它地址;以及
非透明存储器单元,包含所述非透明存储器,其中所述非透明存储器单元耦合到所述一个或更多个处理器以接收请求并且耦合到所述主存储器系统,并且其中所述非透明存储器被配置成将所述非透明存储器内的块分配给所述请求,并且其中所述非透明存储器单元被配置成响应于所述请求的类型而自动地在所述非透明存储器和所述主存储器系统之间移动数据,其中所述非透明存储器单元被配置成将所述非透明存储器中针对第一请求分配的块的第一地址返回给发起第一请求的处理器,其中所述第一地址在指定给所述非透明存储器的存储器地址范围之内。
17.如权利要求16所述的系统,其中映射到所述非透明存储器的地址和映射到所述主存储器系统的地址是同一存储器地址空间的一部分。
18.如权利要求16所述的系统,其中所述第一请求包括用于所述非透明存储器和所述主存储器系统之间的移动的所述主存储器系统中的第二地址。
19.如权利要求18所述的系统,其中所述第一请求的类型指示要把数据从所述主存储器系统移动到所述针对第一请求分配的块,并且其中所述非透明存储器单元被配置成执行所述移动。
20.如权利要求18所述的系统,其中所述第一请求的类型指示要把数据从所述针对第一请求分配的块移动到所述主存储器系统,并且其中所述非透明存储器单元被配置成执行所述移动。
21.一种用于基于块的非透明高速缓存的控制单元,包含:
用于接收针对所述控制单元所耦合的非透明存储器的块的请求的装置,所述控制单元将所述非透明存储器作为多个非透明存储块来管理,其中所述非透明存储器可由软件使用与所述非透明存储器相关联的已定义存储器地址范围内的存储器地址来直接寻址,并且其中,所述已定义存储器地址范围在存储器地址空间内,并且其中,主存储器系统被映射到所述存储器地址空间内的其它地址;
用于响应于所述请求分配所述多个非透明块中的第一块的装置;
用于响应于所述请求将所述已定义存储器地址范围内的所述第一块的第一地址返回给请求者的装置;以及
用于响应于所述请求中指示的类型自动地将数据从所述主存储器系统中的第二存储器地址移入所述第一块的装置,所述第二存储器地址在所述已定义存储器地址范围之外,其中所述第二存储器地址在所述请求中指示。
22.如权利要求21所述的控制单元,其中所述类型是静态写入。
23.如权利要求21所述的控制单元,进一步包含:
用于接收针对非透明存储器的块的第二请求的装置,其中所述第二请求包括静态读取类型;
用于响应于所述第二请求分配所述多个非透明块的第二块的装置;
用于响应于所述第二请求将所述已定义存储器地址范围内的所述第二块的第三地址返回给所述请求者的装置;以及
用于响应于所述类型为静态读取而不自动地将数据从所述第二请求中指示的第四存储器地址移入所述第二块的装置。
24.如权利要求23所述的控制单元,进一步包含:
用于确定所述请求者用完所述第二块的装置;以及
用于响应于所述类型为静态读取而自动地将所述第二块中的数据写入所述第四存储器地址的装置。
25.如权利要求21所述的控制单元,进一步包含:
用于确定所述请求者用完所述第一块的装置;以及
用于响应于所述第一块在所述请求者处理期间被写入而将所述第一块中的数据写入与所述第一块相关联的所述第二存储器地址的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/500,810 | 2009-07-10 | ||
US12/500,810 US8219758B2 (en) | 2009-07-10 | 2009-07-10 | Block-based non-transparent cache |
PCT/US2010/041570 WO2011006096A2 (en) | 2009-07-10 | 2010-07-09 | Block-based non-transparent cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102483719A CN102483719A (zh) | 2012-05-30 |
CN102483719B true CN102483719B (zh) | 2014-11-19 |
Family
ID=43428348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080038192.5A Active CN102483719B (zh) | 2009-07-10 | 2010-07-09 | 基于块的非透明高速缓存 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8219758B2 (zh) |
EP (1) | EP2452265B1 (zh) |
JP (1) | JP5528554B2 (zh) |
KR (1) | KR101389256B1 (zh) |
CN (1) | CN102483719B (zh) |
WO (1) | WO2011006096A2 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244981B2 (en) | 2009-07-10 | 2012-08-14 | Apple Inc. | Combined transparent/non-transparent cache |
US9239793B2 (en) * | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
US9430391B2 (en) * | 2012-03-29 | 2016-08-30 | Advanced Micro Devices, Inc. | Managing coherent memory between an accelerated processing device and a central processing unit |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US10585801B2 (en) * | 2012-11-26 | 2020-03-10 | Advanced Micro Devices, Inc. | Prefetch kernels on a graphics processing unit |
JP2014149765A (ja) * | 2013-02-04 | 2014-08-21 | Toshiba Corp | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 |
EP3007792A4 (en) | 2013-06-11 | 2017-05-03 | Waters Technologies Corporation | Chromatographic columns and separation devices comprising a superficially porous material; and use thereof for supercritical fluid chromatography and other chromatography |
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
US9547553B1 (en) | 2014-03-10 | 2017-01-17 | Parallel Machines Ltd. | Data resiliency in a shared memory pool |
US9781027B1 (en) | 2014-04-06 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods to communicate with external destinations via a memory network |
US9594696B1 (en) | 2014-12-09 | 2017-03-14 | Parallel Machines Ltd. | Systems and methods for automatic generation of parallel data processing code |
US9477412B1 (en) | 2014-12-09 | 2016-10-25 | Parallel Machines Ltd. | Systems and methods for automatically aggregating write requests |
US9690713B1 (en) | 2014-04-22 | 2017-06-27 | Parallel Machines Ltd. | Systems and methods for effectively interacting with a flash memory |
US9501420B2 (en) * | 2014-10-22 | 2016-11-22 | Netapp, Inc. | Cache optimization technique for large working data sets |
US9690705B1 (en) | 2014-12-09 | 2017-06-27 | Parallel Machines Ltd. | Systems and methods for processing data sets according to an instructed order |
US9639473B1 (en) | 2014-12-09 | 2017-05-02 | Parallel Machines Ltd. | Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location |
US9753873B1 (en) | 2014-12-09 | 2017-09-05 | Parallel Machines Ltd. | Systems and methods for key-value transactions |
US9781225B1 (en) | 2014-12-09 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods for cache streams |
WO2016159930A1 (en) | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
CN107209720B (zh) | 2015-04-02 | 2020-10-13 | 慧与发展有限责任合伙企业 | 用于页面高速缓存的系统及方法以及存储介质 |
US9356602B1 (en) * | 2015-05-14 | 2016-05-31 | Xilinx, Inc. | Management of memory resources in a programmable integrated circuit |
JP2019046199A (ja) * | 2017-09-01 | 2019-03-22 | 株式会社半導体エネルギー研究所 | プロセッサ、および電子機器 |
KR20200053204A (ko) * | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 |
US20230094030A1 (en) * | 2021-09-30 | 2023-03-30 | Advanced Micro Devices, Inc. | Cache resizing based on processor workload |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913224A (en) | 1997-02-26 | 1999-06-15 | Advanced Micro Devices, Inc. | Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data |
JP3506024B2 (ja) * | 1998-12-10 | 2004-03-15 | 日本電気株式会社 | 情報処理装置 |
US6484237B1 (en) | 1999-07-15 | 2002-11-19 | Texas Instruments Incorporated | Unified multilevel memory system architecture which supports both cache and addressable SRAM |
JP2001166990A (ja) * | 1999-12-06 | 2001-06-22 | Fujitsu Ltd | 計算機とその制御方法 |
US6732234B1 (en) | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
JP2003044358A (ja) | 2001-07-31 | 2003-02-14 | Mitsubishi Electric Corp | キャッシュメモリ制御装置 |
US7000077B2 (en) * | 2002-03-14 | 2006-02-14 | Intel Corporation | Device/host coordinated prefetching storage system |
JP2003330795A (ja) * | 2002-05-10 | 2003-11-21 | Matsushita Electric Ind Co Ltd | キャッシュメモリ制御装置 |
US6986010B2 (en) | 2002-12-13 | 2006-01-10 | Intel Corporation | Cache lock mechanism with speculative allocation |
KR100463205B1 (ko) * | 2003-02-13 | 2004-12-23 | 삼성전자주식회사 | 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법 |
JP4100256B2 (ja) * | 2003-05-29 | 2008-06-11 | 株式会社日立製作所 | 通信方法および情報処理装置 |
JP2006092124A (ja) * | 2004-09-22 | 2006-04-06 | Fujitsu Ltd | 記憶装置、記憶制御方法および記憶制御プログラム |
US7318114B1 (en) | 2004-10-29 | 2008-01-08 | Sun Microsystems, Inc. | System and method for dynamic memory interleaving and de-interleaving |
JP2008234074A (ja) * | 2007-03-16 | 2008-10-02 | Fujitsu Ltd | キャッシュ装置 |
US20100011165A1 (en) | 2008-07-11 | 2010-01-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Cache management systems and methods |
US8244981B2 (en) * | 2009-07-10 | 2012-08-14 | Apple Inc. | Combined transparent/non-transparent cache |
-
2009
- 2009-07-10 US US12/500,810 patent/US8219758B2/en not_active Expired - Fee Related
-
2010
- 2010-07-09 EP EP10732817.1A patent/EP2452265B1/en active Active
- 2010-07-09 WO PCT/US2010/041570 patent/WO2011006096A2/en active Application Filing
- 2010-07-09 KR KR1020127002996A patent/KR101389256B1/ko active IP Right Grant
- 2010-07-09 CN CN201080038192.5A patent/CN102483719B/zh active Active
- 2010-07-09 JP JP2012519776A patent/JP5528554B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP2452265A2 (en) | 2012-05-16 |
KR20120037971A (ko) | 2012-04-20 |
JP5528554B2 (ja) | 2014-06-25 |
US8219758B2 (en) | 2012-07-10 |
WO2011006096A3 (en) | 2011-04-07 |
JP2012533124A (ja) | 2012-12-20 |
WO2011006096A2 (en) | 2011-01-13 |
CN102483719A (zh) | 2012-05-30 |
EP2452265B1 (en) | 2018-10-24 |
KR101389256B1 (ko) | 2014-04-24 |
US20110010520A1 (en) | 2011-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102483719B (zh) | 基于块的非透明高速缓存 | |
US10776022B2 (en) | Combined transparent/non-transparent cache | |
CN102498477B (zh) | Tlb预取 | |
CN102612685B (zh) | 经由存储器高速缓存操纵的无阻碍数据传送 | |
US20210406170A1 (en) | Flash-Based Coprocessor | |
CN100399300C (zh) | 用于数据处理的系统和方法和用于分配资源的系统和方法 | |
KR101636634B1 (ko) | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
US8230179B2 (en) | Administering non-cacheable memory load instructions | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
US9075725B2 (en) | Persistent memory for processor main memory | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
CN1786927B (zh) | 应用层高速缓存映像知晓和再分配的系统和方法 | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
CN102985910A (zh) | 对无用存储单元收集的gpu支持 | |
KR20160064720A (ko) | 캐시 메모리 장치 및 이를 포함하는 전자 시스템 | |
CN107771322A (zh) | 可编程集成电路中存储器资源的管理 | |
US10725675B2 (en) | Management apparatus, information processing apparatus, management method, and computer program product | |
KR102544401B1 (ko) | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 | |
JP7024127B2 (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 |