WO2022021177A1 - 缓存系统、方法和芯片 - Google Patents

缓存系统、方法和芯片 Download PDF

Info

Publication number
WO2022021177A1
WO2022021177A1 PCT/CN2020/105695 CN2020105695W WO2022021177A1 WO 2022021177 A1 WO2022021177 A1 WO 2022021177A1 CN 2020105695 W CN2020105695 W CN 2020105695W WO 2022021177 A1 WO2022021177 A1 WO 2022021177A1
Authority
WO
WIPO (PCT)
Prior art keywords
cache
data
page
information
stored
Prior art date
Application number
PCT/CN2020/105695
Other languages
English (en)
French (fr)
Inventor
张乾龙
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2020/105695 priority Critical patent/WO2022021177A1/zh
Priority to CN202080101477.2A priority patent/CN115698964A/zh
Publication of WO2022021177A1 publication Critical patent/WO2022021177A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Definitions

  • the cache stores a plurality of index information arranged in a second array; wherein, the index information for indexing the data stored in the first page is in the second array.
  • the third position has a mapping relationship with the first position of the first page in the first array.
  • an embodiment of the present application provides a chip, where the chip includes the cache system described in the first aspect.
  • the cache controller can detect whether data exists in the cache based on the data access request. If the data accessed by the processor is stored in the cache, the cache controller controls the cache to provide the data to the processor through the bus; if the data accessed by the processor is not stored in the cache, the cache controller needs to send the data to the memory controller to get the data signal to fetch data from memory and provide it to the processor. In addition, the data can also be written into the cache after being fetched from the memory, so that the processor can directly obtain the data from the cache next time.
  • the group set in the tag array Tag Array and the group set in the data array Data Array have a preset mapping relationship.
  • the Way (Way) ) information and the tag information Tag jointly determine the position of the cache page in the data array Data Array.
  • the index information stored in the group Set0 in the tag array Tag Array is respectively used to index the data stored in each cache page in the group set0 in the data array.
  • the index information of the data stored in each cache page in the data array can be stored at any position in the Tag Array.
  • the cache structure shown in the embodiment of the present application is more flexible. For example, in the process of subsequent data storage, a cache page with less stored data can be selected for data storage; or based on the priority level information of the currently stored data in the cache, the cache page with the lowest stored data priority level can be selected. , and store the data to be cached in the selected cache page to cover the data with the lowest priority, thereby helping to improve the utilization rate of the cache space.
  • the probability that the overwritten data is dirty data can be reduced, that is, a small amount of dirty data needs to be written back to the memory or the next level cache, which can also reduce the probability of the overwritten data being dirty data.
  • the occupancy rate of memory access bandwidth improves the data transmission speed between cache and memory.
  • the cache controller can first query the Valid information in each index information stored in the position corresponding to the group Set0 in the Tag Array, and find out that the index information currently stored in the (Set0, Way4) position is invalid, which is used for indexing memory pages Index information for the data held in 41 may be stored at this location. Then, the cache controller may further query the Way information in each index information stored at the position corresponding to the group Set0 in the Tag Array Tag Array to determine whether data is stored in all the cache pages.
  • the location information of the free data units in the first cached page can also be obtained.
  • the information updates the second index information stored in the cache, where the second index information is used to index the original data in the data unit corresponding to the position information in the first cache page.

Abstract

本申请实施例提供了一种缓存系统、方法和芯片,该缓存系统包括:缓存,缓存用于保存来自内存中的数据,缓存还保存有索引信息,索引信息用于索引所述缓存中所保存的数据;索引信息包括位置信息,位置信息用于指示缓存中用于保存索引信息所能索引到的数据在缓存中的位置。从而可以使得缓存中的页面保存的数据和索引页面中保存的数据的索引信息之间的存储位置解绑,提高缓存进行数据存储的灵活性,有利于提高缓存空间的利用率。

Description

缓存系统、方法和芯片 技术领域
本申请实施例涉及缓存技术领域,尤其涉及一种缓存系统、方法和芯片。
背景技术
随着芯片工艺技术的发展,内存的实现介质也越来越多样化。片上内存(Die-stacked DRAM)是为解决内存的访存带宽问题所提出的一种新技术。其中,可以通过硅通孔(through silicon via,TSV)技术把大容量存储芯片与处理器封装在同一个系统级芯片Soc上,以实现片上大容量内存。以2.5D或者3D封装的DRAM为例,有数据表明,片上内存的带宽可以达到片外双倍速率动态随机存储器(double data rate DRAM,DDR DRAM)的4~8倍。
当前技术中,片上内存可以作为普通内存使用,也可以作为片外内存(DDR)的缓存使用。当片上内存作为缓存使用时,缓存中的缓存空间中是以页面为粒度进行分配的。缓存的缓存空间可以划分为多个页面,同样,片外内存的内存空间也可以划分为多个页面。将片外内存中的数据保存在缓存页面中时,可以基于预先建立内存页面和缓存页面之间的映射关系,在缓存中选择一个缓存页面进行存储。此外,将片外内存中保存的数据存储在缓存中时,通常将数据和数据的索引信息关联存储。也即是说,数据在缓存中的位置固定后,数据的索引信息在缓存中的位置也固定下来。这样一来,降低了缓存中数据存储的灵活性。由此可能导致存储空间利用率低、数据传输速率低等问题。
综上,如何灵活的在缓存中进行数据存储成为需要解决的问题。
发明内容
本申请提供的缓存系统、方法和芯片,可以提高缓存进行数据存储的灵活性,有利于提高缓存空间的利用率。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种缓存系统,该缓存系统包括:缓存,所述缓存用于保存来自内存中的数据,所述缓存还保存有索引信息,所述索引信息用于索引所述缓存中所保存的数据;所述索引信息包括位置信息,所述位置信息用于指示所述缓存中用于保存所述索引信息所能索引到的数据的第一页面以及所述第一页面在所述缓存中的位置。
该位置信息可以为图3所示的数据阵列Data Array中的(组Set,路Way)信息。这里的(组Set,路Way)信息可以为缓存中的逻辑地址信息,也可以为缓存中的物理地址信息。当(组Set,路Way)信息为逻辑地址信息时,可以预先建立逻辑地址与缓存中物理地址之间的映射关系。此时,缓存控制器可以基于该逻辑地址信息以及逻辑地址和物理地址之间的映射关系,查询出物理地址信息。例如,如图3所示的数据阵列Data Array中的(Set0,Way0)为缓存中的逻辑地址,其所指示的缓存中的物理地址:(0x800000- 0x801000)。
在一种可能的实现方式中,该位置信息可以为图3所示的数据阵列Data Array中的(路Way)信息。此时,所述缓存包括呈阵列排布的多个页面,所述多个页面中的每一个页面用于保存缓存中的数据;所述索引信息还包括标签信息;所述标签信息用于指示所述索引信息所能索引到的数据的第一页面在所述阵列中的第一位置,所述位置信息用于指示所述第一页面在所述阵列中的第二位置。
具体的,该呈阵列排布的多个页面可以为图3所示的数据阵列(Data Array)中的缓存页面。第一位置可以为数据阵列中的组Set,第二位置可以为数据阵列中的路Way。在该实现方式中,标签阵列Tag Array中的组set与数据阵列Data Array中的组set具有预先设定的映射关系。该映射关系通过标签Tag信息体现。具体的,Tag信息用于指示数据存储在哪一个set中。此时路(Way)信息和信息Tag共同确定出缓存页面在数据阵列Data Array中的位置。例如,标签阵列Tag Array中的索引信息Index01中的Tag信息,用于指示数据阵列中的组set0对应的各缓存页面保存的数据;索引信息Index01中的Way信息,用于指示据阵列中的Way0对应的各缓存页面保存的数据。
本申请提供的缓存系统,本申请实施例所示的缓存,通过在索引信息中添加位置信息,可以将缓存页面中存储的数据与索引该数据的索引信息之间的存储位置解绑,从而使得本申请所示的缓存结构更加灵活。例如,在进行后续数据存储的过程中,可以选择所保存的数据较少的缓存页面进行数据存储;或者基于缓存中当前保存的数据的优先等级信息,选择所保存的数据优先等级最低的缓存页面,将待缓存的数据存储至所选择出的缓存页面中,以覆盖优先等级最低的数据,从而有利于提高缓存空间的利用率。此外,当选择所保存的数据较少的缓存页面进行数据存储时,可以降低被覆盖的数据为脏数据的概率,也即需要将少量的脏数据写回内存或者下一级缓存,还可以降低访存带宽的占有率,提高缓存与内存之间的数据传输速度。
在一种可能的实现方式中,缓存中保存有呈第二阵列排布的多个索引信息;其中,用于索引所述第一页面中保存的数据的索引信息在所述第二阵列中的第三位置,与所述第一页面在所述第一阵列中的第一位置具有映射关系。
在一种可能的实现方式中,用于索引所述第一页面中保存的数据的索引信息包括第一索引信息;其中,所述第一索引信息用于索引所述第一页面保存的来自所述内存的第二页面中的数据。
在一种可能的实现方式中,所述索引信息还包括第二索引信息;其中,所述第二索引信息用于索引所述第一页面保存的来自所述内存的第三页面中的数据。
在本发明实施例中,缓存中第一页面当前保存的数据是来自内存中第二页面保存的第一数据;而在这之前,缓存中第一页面保存的是来自内存中其他页面(第三页面或第四页面)保存的数据。这里以缓存页面中之前保存的是内存中第三页面保存的数据为例进行说明,在将内存中第二页面保存的数据写入缓存中第一页面的过程中,缓存中第一页面保存的内存中的第三页面保存的数据被覆盖,但是如果内存中第二页面保存的数据并没有占据全部的第一页面中的数据单元,就会应该被覆盖的第三页面中的部分数据实质上仍然被保存在所述第一页面中,而第二索引信息就用于指向这些来自内存中第三页面保存的数据。
缓存中的第一页面可以是如图4所示的缓存页面A。该缓存页面A中可以存储有如图2所示的内存页面11中保存的数据和内存页面41中保存的数据。内存中的第二页面可以为如图2所示的内存页面11,第一索引信息可以为如图4所示的标签阵列Tag Array中存储的索引信息Index11。索引信息Index11用于指示缓存页面A中所保存的来自内存页面11中的数据。缓存页面A中所保存的来自内存页面11中的数据如图6所示。内存中的其他页面可以包括如图2所示的内存页面41,第二索引信息可以为如图4所示的标签阵列Tag Array中存储的索引信息Index41。索引信息Index41用于指示缓存页面A中所保存的来自内存页面41中的数据。缓存页面A中所保存的来自内存页面41中的数据如图5所示。
通过在同一个缓存页面中保存多个内存页面中保存的数据,可以避免某些场景下,一个缓存页面中存储较少的数据导致缓存利用率低,有利于提高缓存空间利用率,进而提高处理器数据访问的命中率。此外,还可以减少发生页面中的数据被覆盖时、写回内存的脏数据的数目,或者减少再一次访问该被覆盖的数据时、从内存中取回的数据的数目,有利于释放缓存与内存之间进行数据传输的带宽,从而提高数据传输效率。
在一种可能的实现方式中,所述索引信息还包括:有效位信息、脏污位信息和整体有效位信息。
在一种可能的实现方式中,所述缓存系统还包括缓存控制器;所述缓存控制器用于:基于所述索引信息中的位置信息,将所述内存的第四页面中保存的数据覆盖所述第一页面中的原数据;将第三索引信息保存在缓存中,所述第三索引信息用于记录所述第四页面中的数据在所述第一页面中的索引。
在一种可能的实现方式中,所述缓存控制器还用于:获得所述第一页面中的空闲数据单元的位置信息,根据所述空闲数据单元的位置信息更新所述第一索引信息,所述第一索引信息用于索引所述第一页面中的与所述空闲数据单元的位置信息对应的数据单元中的原数据。
在一种可能的实现方式中,所述缓存控制器还用于:基于所述第三索引信息中的有效位信息,获得所述空闲数据单元的位置信息。
第二方面,本申请实施例提供一种缓存方法,该缓存方法应用于如第一方面所示的缓存控制器,该缓存方法包括:接收数据访问请求,根据所述数据访问请求确定需要从内存写入缓存的数据;基于所述缓存中存储的多个索引信息中的每一个索引信息的位置信息,将所述需要从内存写入缓存的数据保存在所述缓存中的第一页面中;将第一索引信息保存在缓存中,所述第一索引信息用于记录所述需要从内存写入缓存的数据的数据在所述第一页面中的索引。
从内存写入缓存的数据可以是如图2所示的内存页面41中保存的数据。当缓存控制器接收到数据访问请求、且该数据访问请求所请求访问的数据存储在内存页面41中时,可以基于如图2所示的内存页面与缓存页面之间的映射关系,将内存页面41中保存的数据存储至缓存页面中。此时,缓存控制器可以检索缓存中保存的索引信息中的位置信息,基于该位置信息确定出缓存中各页面是否均保存有数据。如果缓存页面中均保存有数据时,可以基于索引信息中的优先等级信息选择出第一页面,缓存中的第一页面可以为如图4所示的缓存页面A。然后,将需要从内存写入缓存的数据存储至缓存页面A中。此外,还需 要将用于记录所述需要从内存写入缓存的数据在所述第一页面中的索引的第一索引信息保存在缓存中。该第一索引信息为如图4所示的标签阵列Tag Array中的索引信息Index41。
基于第二方面,在一种可能的实现方式中,所述将第一索引信息保存在缓存中,包括:基于所述缓存中存储的多个索引信息中的每一个索引信息的整体有效位信息,将所述第一索引信息保存在缓存中。
具体的,响应于所述整体有效位信息用于指示至少一个索引信息无效,将所述第一索引信息保存在其中一个无效的索引信息位置处;响应于所述整体有效位信息用于指示所述多个索引信息均有效,将所述缓存中保存的第二索引信息更新为所述第一索引信息;其中,所述第二索引信息用于索引所述原数据。
基于第二方面,在一种可能的实现方式中,所述将所述需要从内存写入缓存的数据保存在所述缓存中的第一页面中,包括:将所述需要从内存写入缓存的数据覆盖所述第一页面中的原数据。
基于第二方面,在一种可能的实现方式中,所述方法还包括:获得所述第一页面中的空闲数据单元的位置信息,根据所述位置信息更新所述缓存中保存的第二索引信息,所述第二索引信息用于索引所述第一页面中的与所述位置信息对应的数据单元中的原数据。
在如图2所示的将内存页面41中保存的数据存储至如图4所示的缓存页面A中时,通常以数据单元为单位进行缓存。由于缓存页面A中可能仅缓存有内存页面41中保存的部分数据单元的数据,此时缓存页面A中可能还存在大量空闲的数据单元。该大量空闲的数据单元中某些数据单元保存的原数据并未被覆盖,仍然存储在缓存页面A中。此时,更新第二索引信息,该第二索引信息用于记录缓存页面A中保存的未被第一索引信息记录的数据。
基于第二方面,在一种可能的实现方式中,所述获得所述第一页面中的空闲数据单元的位置信息,包括:基于更新后的所述第一索引信息中的有效位信息,确定所述第一页面中的空闲数据单元的位置信息。
基于第二方面,在一种可能的实现方式中,所述根据所述位置信息更新所述缓存中保存的第二索引信息,包括:更新所述第二索引信息中的有效位信息和脏污位信息。
基于第二方面,在一种可能的实现方式中,所述将所述需要从内存写入缓存的数据保存在所述缓存中的第一页面中之前,所述方法还包括:将所述第一页面中被覆盖的原数据中的脏数据写回内存或者下一级缓存。
第三方面,本申请实施例提供一种芯片,该芯片包括如第一方面所述的缓存系统。
基于第三方面,在一种可能的实现方式中,该芯片还包括处理器,用于访问所述缓存系统中存储的数据,以及将处理后的数据存储至所述缓存系统。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的缓存系统的一个结构示意图;
图2是本申请实施例提供的缓存中存储空间与内存中存储空间之间的对应关系示意图;
图3是传本申请实施例提供的缓存的一个结构示意图;
图4是本申请实施例提供的如图3所示的缓存中一种存储情况示意图;
图5是本申请实施例提供的一个缓存页面的数据单元中的一种数据存储情况示意图;
图6是本申请实施例提供的一个缓存页面的数据单元中的又一种数据存储情况示意图;
图7是本申请实施例提供的一个缓存页面的数据单元中的又一种数据存储情况示意图;
图8是本申请实施例提供的如图3所示的缓存中又一种存储情况示意图;
图9是本申请实施例提供的缓存方法的一个流程图;
图10是本申请实施例提供的缓存装置的一个结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文所提及的"第一"、"第二"以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,"一个"或者"一"等类似词语也不表示数量限制,而是表示存在至少一个。
在本文中提及的"模块"通常是指按照逻辑划分的功能性结构,该"模块"可以由纯硬件实现,或者,软硬件的结合实现。
在本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个页面是指两个或两个以上的页面;多个索引信息是指两个或两个以上的数据信息。
请参考图1,其示出了应用于本申请的一个缓存系统的结构示意图。
在图1中,缓存系统100包括缓存控制器和缓存。缓存系统100与内存和处理器耦合。其中,内存中存储有处理器运行所需数据。缓存中存储有内存中存储的部分数据。处理器可以发起数据访问请求以及进行数据处理。内存控制器基于处理器发起的数据访问请求,控制处理器与缓存之间以及缓存与内存之间的数据交互。当处理器与内存之间以及缓存与内存之间进行数据交互时,图1所示的内存可以包括内存控制器。内存控制器用于控制其他部件向内存写入数据或者从内存读取数据。缓存控制器可以向内存控制器发起数据交互请求,在内存控制器的控制下,内存中的数据可以被写入缓存、提供给处理器,或者,将数据写入内存。
处理器发起数据访问请求后,缓存控制器可以基于该数据访问请求检测数据是否存在缓存中。若处理器所访问的数据存储在缓存中,缓存控制器控制缓存通过总线将数据提供给处理器;若处理器访问的数据未存储在缓存中,则缓存控制器需要向内存控制器发送数据获取信号,以将数据从内存中取出并提供给处理器。此外,将所述数据从内存中取出后还可以写入缓存,以使处理器下一次可以直接从缓存获取该数据。
如图1所示的缓存,可以包括多级缓存结构,例如L1级、L2级和L3级。处理器进行数据访问时,可以首先访问L1级缓存,当L1级缓存未命中时,可以继续访问L2级缓存,当L2级缓存未命中时,可以继续访问L3级缓存,当L3级缓存未命中时可以从内存中获取数据。也即对L1级缓存来说,L2级缓存和L3级缓存为其下一级缓存;对L2级缓存来说,L3级缓存为其下一级缓存。当需要进行数据写回时,例如L1级存储的数据需要写回时,可以写回L2级缓存、L1级缓存或者内存;L3级存储的数据需要写回时,仅能写回内存。L1级缓存、L2级缓存和L3级缓存可以为缓存结构相同但数据容量不同的缓存。图1中所示的缓存未将L1级、L2级和L3级缓存加以区分。
对于每一级缓存,缓存中的缓存空间中是以页面为粒度进行分配的。具体来说,每一级缓存的缓存空间可以划分为多个页面。后面描述中将缓存中的页面统一称为缓存页面。在某些实现方式中,一个缓存页面也可以理解为一个缓存行。基于与缓存空间类似的逻辑结构,内存的存储空间也可以划分为多个页面。后面描述中将内存中的页面同一称为内存页面。一个内存页面的存储容量与一个缓存页面的存储容量可以相同。每一个缓存页面可以对应于一个内存页面或者多个内存页面。也即是说,存储在同一个缓存页面中的数据可以来自同一内存页面,也可以来自不同的内存页面。一个缓存页面或一个内存页面可以保存64B、2KB、4KB或者8KB的数据。请参考图2,其示意性的示出了缓存中的缓存空间与内存中的存储空间之间的对应关系示意图。在图2中,缓存中的缓存空间可以均按照如图2所示的way和set的设置划分成多个页面,例如(Set0、Way0)位置可以代表一个缓存页面。假设缓存中包括两路Way0和Way1,每一路中均可以存储两组页面数据。基于与缓存空间类似的逻辑结构,可以将内存的存储空间划分为十二个内存页面。其中,内存页面01、内存页面11、内存页面21、内存页面31、内存页面41、内存页面51中的数据可以分别对应存储于缓存的组Set0对应的缓存页面中,内存页面02、内存页面12、内存页面22、内存页面32、内存页面42、内存页面52中的数据可以分别对应存储于缓存的组Set1对应的缓存页面中。
此外,一个页面又可以被划分为多个数据单元。将内存中保存的数据存储至缓存中时,通常以数据单元(Data Block)为单位进行数据存取。在缓存中,一个缓存页面可能存储有某个内存页面中全部数据单元的数据,也可能存储有某个内存页面中部分数据单元的数据。也即是说,将某一内存页面中的数据写入缓存中时,可以仅缓存该内存页面中的部分数据单元的数据。例如,当缓存或内存中的一个页面所能保存的数据可以为4KB时,如果将缓存或内存中的一个页面划分为32个数据单元,则每个数据单元可以保存128B数据。其中,缓存页面可以仅保存某一内存页面部分数据单元(例如5个数据单元)中保存的数据。
从图2中可以看出,多个缓存页面在缓存中形成数据阵列Data Array。缓存中除了包括数据阵列Data Array外,还包括标签阵列Tag Array。标签阵列Tag Array中存储有用于 索引缓存页面中所保存的数据的索引信息。
传统缓存结构中,索引信息的物理地址和该索引信息所能索引到的数据的物理地址通常绑定在一起。数据在数据阵列Data Array中的存储位置固定后,相应的索引信息在标签阵列Tag Array中的位置即固定。反映在图2中,可以简单理解为索引信息Index01存储在标签阵列Tag Array中(Set0,Way0)位置处,相应的索引信息Index01所能索引到的数据存储在数据阵列Data Array中(Set0、Way0)对应的页面位置处。基于传统缓存结构,当缓存页面中存储的数据来自多个内存页面时,例如在图2中,缓存页面A保存有内存页面01中保存的数据和内存页面11中保存的数据;缓存页面B保存有内存页面21中保存的数据。此时,在标签阵列Tag Array中,与缓存页面A绑定的存储区域存储有索引信息Index01和索引信息Index11;与缓存页面B绑定的存储区域存储有索引信息Index21。其中,索引信息Index01用于索引缓存页面A中保存的来自于内存页面01中的数据;索引信息Index11用于索引缓存页面A中保存的来自于内存页面11中的数据;索引信息Index21用于索引缓存页面A中保存的来自于内存页面21中的数据。当需要将内存页面31中的数据存储在缓存中时,假设内存页面31对应的内存物理地址起始位置为0x18000(内存中以一个缓存页面所容纳的最大数据量4KB为粒度逻辑划分为多个内存页面,内存页面31位于内存中第七个内存页面位置处,其物理地址为第七个4KB的起始位置),该物理地址映射至如图2所示的缓存中组Set0位置处。内存页面31中保存的数据仅能存储在Set0位置处。缓存控制器可以查询标签阵列Tag Array中与Set0对应的缓存页面绑定的存储区域,查询出标签阵列Tag Array中(Set0、Way1)位置处还存在空闲位置。然后,缓存控制器将来自内存页面31中的数据存储至缓存页面B中。对于缓存页面中的一个数据单元来说,若该数据单元用来存储内存页面31中保存的数据,那么该数据单元就不可能用来存储内存页面21中保存的数据。假设内存页面31中有数据需要存储在该数据单元中时,则需要覆盖之前在该数据单元保存的数据。假设来自于内存页面21中的数据具有较高的优先等级,比如,处理器访问内存页面21中保存的数据的概率较高。如果将来自于内存页面21中的数据被覆盖掉,当处理器需要再一次访问内存页面21中保存的数据时,需要重新从内存页面21中获取,严重降低了访存带宽的利用率。此外,在如图2所示的缓存结构中,如果一个缓存页面可以存储N个内存页面中保存的数据,对于每一个缓存页面,则需要设置用于存储N个索引信息的区域,该N个索引信息中,某个索引信息可能仅记录有一个数据单元的数据。由此,导致标签阵列Tag Array中存在大量冗余的索引信息,降低了缓存空间的利用率。
基于图1所示的缓存系统,图2所示的缓存中的缓存空间与内存中的存储空间之间的对应关系,本申请实施例提供的缓存中包括数据阵列Data Array和标签阵列Tag Array。数据阵列Data Array包括多个缓存页面。其中,缓存中的一个页面保存的数据单元可以来自于内存中的一个页面或多个页面。
标签阵列Tag Array用于存储第一索引信息和第二索引信息,该第一索引信息记录的为缓存页面中存储的第一数据的索引信息。该第二索引信息记录的为同一个缓存页面中存储的、未被所述第一索引信息记录的第二数据的索引信息。第一数据和第二数据来自于不同的内存页面。也即是说,同一个缓存页面中,可以同时存储有第一数据和第二数据,该第一数据来自于第一内存页面,第二数据来自于第二内存页面。在本发明实施例中,所述 缓存页面当前保存的数据是来自第一内存页面中的第一数据;而在这之前,所述缓存页面中保存的是来自第二内存页面中的数据。这里以所述缓存页面中之前保存的是第二内存页面中的数据为例进行说明,在将第一内存页面中的数据写入缓存的过程中,缓存中保存的第二内存页面的数据被覆盖,但是如果第一内存页面中的数据并没有占据全部的第一内存页面中的数据单元,就会导致应该被覆盖的第二内存页面中的部分数据实质上仍然被保存在所述缓存页面中,而所述第二索引信息就用于指向这些来自第二内存页面中的数据。
本申请实施例中,标签阵列Tag Array所存储的各索引信息中,每一个索引信息记录有其所能索引到的数据所在的缓存页面以及在在缓存中的位置信息。这样一来,可以使得缓存页面中存储的数据与索引该数据的索引信息之间的存储位置解绑,提高缓存的灵活性,进而可以提高缓存空间的利用率以及访存带宽的利用率。
下面,通过图3-图6所示的实施例,对如图1所示的缓存的结构、以及本申请实施例所达到的技术效果进行详细论述。
如图3所示的缓存,可以包括数据阵列Data Array和标签阵列Tag Array。
在图3中,数据阵列Data Array可以是一个m*n的阵列,标签阵列Tag Array可以是一个m*s的阵列,其中,s小于等于n。标签阵列Tag Array中的每个元素为一个索引信息,数据阵列Data Array中的每个元素为一个缓存页面。图3示意性的示出了标签阵列Tag Array为2*4的阵列,数据阵列Data Array为2*5的阵列。在标签阵列Tag Array和数据阵列Data Array中,每一列代表一路Way,每一行代表一组Set。以数据阵列Data Array为例,内存页面与缓存页面具有映射关系。通常,多个内存页面保存的数据可以同时存储在缓存中同一组Set对应的缓存页面中(例如图2中的内存页面01、内存页面11、内存页面21和内存页面31保存的数据可以存储在图3所示的缓存页面A和缓存页面B中)。存储在同一组Set对应的缓存页面中的数据具有竞争关系。为了缓解该竞争关系,每一组Set可以设置多个路Way,当该多个路Way对应的缓存页面均无数据储存时,映射至同一组Set中的内存页面保存的数据可以存储在该组Set中任意路Way对应的缓存页面中。从图3中可以看出,标签阵列Tag Array中存储的索引信息为数据阵列Data Array中各缓存页面所存储的数据的索引信息。例如,当缓存页面A中存储有内存页面01中的数据时,索引信息Index01为所缓存的内存页面01中的数据的索引信息;当缓存页面A中同时存储有内存页面01中的数据和内存页面11中的数据时,索引信息Index01为所缓存的内存页面01中的数据的索引信息,索引信息Index11为所缓存的内存页面11中的数据的索引信息。
下面对标签阵列Tag Array中存储的索引信息进行介绍。每个索引信息可以包括标签(Tag)信息、整体有效位(Valid)信息、有效位(Valid Bits)信息、脏污位(Dirty Bits)信息、位置信息和优先等级信息。具体的,Tag信息用于指示缓存页面保存的数据所来自的内存页面在内存中的物理地址信息和数据所存储至的缓存页面对应的组set信息。整体有效位(Valid)信息,用于指示该索引信息是否有效。Valid信息可以包括“0”信息和“1”信息。当Valid信息为“0”信息时,则说明该索引信息无效,其所能索引到的数据不可被访问,当需要在标签阵列Tag Array中添加待缓存的数据的索引信息时,可以直接添加至该位置处;当Valid信息为“1”时,则说明索引信息有效,当需要在标签阵列Tag Array中添加待缓存的数据的索引信息时,不可以直接添加至该位置处。脏污位(Dirty Bits)信息, 用于指示缓存页面中所保存的数据单元中的数据是否为脏数据,若Dirty Bits某些位被设置为0,指示相应数据单元中保存的数据为干净数据,当发生替换时可以不写回片外内存直接无效,反之如果Dirty Bits某些位被设置为1,当发生替换时需要将相应脏数据所位于的数据单元中全部数据写回片外内存。这里的脏数据具体是指,缓存中所保存的被处理器改写过的数据。内存中未保存有该数据,若缓存中该脏数据被其他数据覆盖时,如果未写回内存,则造成数据丢失。因此,脏数据被覆盖时,需要写回。有效位(Valid Bits)信息,用于指示缓存页面中的各个数据单元是否存储有有效数据,通常,缓存页面中包括几个数据单元,该有效位信息则用几个比特位表示。例如,缓存页面包括32个数据单元,则用32个比特位表示。此外,每一个比特位可以包括“0”状态和“1”状态。当某一比特位为“1”时,说明相应的数据单元中保存的数据有效;当某一比特位为“0”时,说明相应的数据单元中保存的数据无效。位置信息,用于指示索引信息所能索引到的数据在数据阵列Data Array中的位置。该位置信息可以为路(Way)信息,也可以为(组Set,路Way)信息。其根据应用场景的需要选择采用哪种位置信息。需要说明的是,当上述位置信息可以为路(Way)信息时,此时标签阵列Tag Array中的组set与数据阵列Data Array中的组set具有预先设定的映射关系,此时路(Way)信息和标签信息Tag共同确定出缓存页面在数据阵列Data Array中的位置。例如,标签阵列Tag Array中的组Set0存储的索引信息分别用于索引数据阵列中的组set0中的各缓存页面保存的数据。当上述位置信息为(组Set,路Way)信息时,数据阵列中的各缓存页面保存的数据的索引信息可以存储在标签阵列Tag Array中任意位置处。在进行Tag信息检索时,需要将所要访问的数据的Tag信息与标签阵列Tag Array中全部的索引信息中的Tag信息一一进行比较。优先等级信息用于指示当发生页面替换时,是否被优先替换。该优先等级信息包括以下之一:最近最少使用(least recently used,LRU)信息,用于指示缓存当前存储的数据中、最近最少使用的数据,当使用该优先等级时,最近最少使用的数据被优先替换;基于频率替换(Frequency Based Replacement,FBR)信息,用于指示缓存当前存储的数据中、被访问的频率信息,当使用该优先等级时,使用频率最低的数据被优先替换;先入先出(First In First Out,FIFO)信息,用于指示数据存储在缓存中的先后顺序信息,当使用该优先等级时,最先存储在缓存中的数据被优先替换。可以根据应用场景的需要选择采用哪种方式进行页面替换。图3中示意性的示出了索引信息中的位置信息采用路(Way)信息、优先等级信息采用LRU信息。
从图3所示的缓存结构中可以看出,本申请实施例所示的缓存,通过在索引信息中添加位置信息,可以将缓存页面中存储的数据与索引该数据的索引信息之间的存储位置解绑,也即是说,来自于内存页面的数据可以存储在缓存页面中与内存页面具有映射关系的组中的任意位置处时,用于索引该数据的索引信息可以存储在数据阵列Data Array中与内存页面具有映射关系的组中的任意位置处。例如,Index01用于索引缓存页面B中存储的来自内存页面01中的数据,索引信息Index01存储在标签阵列Tag Array中(set0,way0)位置处,而缓存页面B在数据阵列Data Array中位于在(set0,way1)位置处。通过查找索引信息Index01中的Way信息即可查询出缓存页面B在Data Array中的位置,从而实现索引信息和其所能索引到的数据之间的位置解绑。而传统缓存技术中,当来自于内存页面01中的数据存储在缓存页面B中时,用于索引该数据的索引信息Index01需要存储在标 签阵列Tag Array中(set0,way1)位置处。与传统技术相比,本申请实施例所示的缓存结构更加灵活。例如,在进行后续数据存储的过程中,可以选择所保存的数据较少的缓存页面进行数据存储;或者基于缓存中当前保存的数据的优先等级信息,选择所保存的数据优先等级最低的缓存页面,将待缓存的数据存储至所选择出的缓存页面中,以覆盖优先等级最低的数据,从而有利于提高缓存空间的利用率。此外,当选择所保存的数据较少的缓存页面进行数据存储时,可以降低被覆盖的数据为脏数据的概率,也即需要将少量的脏数据写回内存或者下一级缓存,还可以降低访存带宽的占有率,提高缓存与内存之间的数据传输速度。
基于图3所示的缓存,在一些应用场景中,当需要将某一内存页面中保存的数据存储至缓存页面中时,例如需要将图2所示的内存页面41中保存的数据存储至缓存中时,基于内存页面与缓存页面之间的映射关系,需要将内存页面41中保存的数据存储至Set0对应的缓存页面中。具体的,假设内存页面41对应的内存物理地址起始位置为0x20000(内存中以一个缓存页面所容纳的最大数据量4KB为粒度逻辑划分为多个内存页面,内存页面41位于内存中第九个内存页面位置处,其物理地址为第九个4KB的起始位置),该物理地址映射至如图3所示的缓存中组Set0位置处。其中,内存页面与缓存页面的映射关系、以及内存页面中保存的数据在缓存中的存储位置可以参考图2的具体描述,在此不再赘述。
此时,缓存控制器可以首先查询标签阵列Tag Array中组Set0对应的位置处存储的各索引信息中的Valid信息,查询出(Set0、Way4)位置当前存储的索引信息无效,用于索引内存页面41中保存的数据的索引信息可以存储在该位置处。然后,缓存控制器可以进一步查询标签阵列Tag Array中组Set0对应的位置处存储的各索引信息中的Way信息,确定缓存页面中是否均存储有数据。假设经查询,索引信息Index01中的Way信息为Way1,用于指示缓存页面B中存储有数据;索引信息Index10中的Way信息为Way0,用于指示缓存页面A中存储有数据;索引信息Index20中的Way信息为Way2,用于指示缓存页面C中存储有数据;索引信息Index30中的Way信息为Way3,用于指示缓存页面D中存储有数据。也即是说,经查询,数据阵列Data Array中组Set0对应的缓存页面中均保存有数据。接着,缓存控制器可以查询标签阵列Tag Array中组Set0对应的位置处存储的各索引信息中的LRU信息。假设基于查询结果,缓存页面A所缓存的来自于内存页面11中保存的数据为最近最少使用的数据。此时,可以将内存页面41中保存的数据缓存在缓存页面A中。
对于缓存页面中的一个数据单元来说,若该数据单元用来存储内存页面11中保存的数据,那么该数据单元就不可能用来存储内存页面41中保存的数据。假设内存页面41中有数据需要存储在该数据单元中时,则需要覆盖之前在该数据单元保存的数据。假设待存储在缓存中的内存页面41中保存的数据所占用的数据单元如图5所示。在图5中,每个格子代表一个数据单元,带有阴影条纹的格子代表该位置处的数据单元存储有数据,白色格子代表该位置处的数据单元未存储有数据。从图5中可以看出,待存储在缓存中的内存页面41中保存的数据,需要占用一个缓存页面中的10个数据单元,当其存储至缓存页面中时,缓存页面中其余数据单元均未被占用,也即其余数据单元保存的数据均无效。假设缓存页面A当前所保存的内存页面11中保存的数据所占用的数据单元如图6所示。缓存 页面A中有九个数据单元当前保存有数据。从图6中可以看出,当前所缓存的内存页面11中保存的数据占用缓存页面A的数据单元为1001、1003、1013、1016、1018、1021、1026、1028和1031。从图5中可以看出,待缓存的内存页面41中保存的数据存入缓存页面A中时,将占用缓存页面A的数据单元为1001、1004、1006、1009、1011、1016、1022、1023、1028和1030。对比图5所示的有效的数据单元和图6所示的有效的数据单元,当内存页面41中保存的数据存储至缓存页面A的上述数据单元中时,将会覆盖缓存页面A中数据单元1001、1016和1028当前存储的数据。除此之外,缓存页面A当前所保存的其余数据不会被覆盖。也即是说,当内存页面41中保存的数据存储至缓存中后,所缓存的内存页面11中保存的部分数据实际仍然存储在数据阵列中。如图7所示,其示意性的示出了假设内存页面41中保存的数据存储至缓存页面A中后,缓存页面A中仍然存储有内存页面11中保存的数据的数据单元。基于此,将内存页面41中保存的数据存储至缓存页面中后,可以更新用于索引缓存页面A中所保存的来自于内存页面11中的数据的索引信息Index11。这样一来,缓存页面A中之前存储的原数据被大量保存下来。
综上可以看出,将多个内存页面中存储的数据保存在同一缓存页面中,当缓存页面中保存的来自多个内存页面的数据之间不相冲突时,可以极大提高缓存的空间利用率。
下面,结合图3-图6,以内存页面41中的数据替换所缓存的内存页面11中的数据为例,对如图3所示的缓存结构的数据缓存方式进行描述。
假设在页面替换之前,所缓存的内存页面11中保存的数据所占用的数据单元为如图6所示的10100000000010010100100001010010(十六进制表示为:0xA0094852),其通过有效位(Valid Bits)体现,也即是所缓存的内存页面11中所有有效数据的汇总。待存储在缓存中的内存页面41中保存的数据所占用的数据单元的有效位(Valid Bits)为如图5所示的10010100101000010000011000010100(十六进制表示为:0x94A10614)。其中,每一位代表一个数据单元,0代表该数据单元中存储有数据,1代表该数据单元中未存储有数据。当需要将内存页面41中保存的数据覆盖所缓存的内存页面11中保存的数据时,缓存控制器可以对比所缓存的内存页面11中保存的数据所占用的数据单元和待缓存的内存页面41中保存的数据所占用的数据单元,确定出缓存页面A当前保存的数据中、将要被待缓存的内存页面41中保存的数据覆盖数据和未被待缓存的内存页面41中的数据覆盖数据。其中,所缓存的内存页面11中未被覆盖数据如图7所示,此时缓存中所存储的内存页面11中保存的数据所占用的数据单元为00100000000010000100100001000010(十六进制表示为:0x20084842)。然后,缓存控制器可以基于缓存页面A中当前保存的来自内存页面11中的数据所占用的数据单元,更新标签阵列Tag Array中的索引信息Index11。这里更新索引信息Index11具体可以包括但不限于:更新Valid bits信息和dirty bits信息。需要说明的是,当Valid bits信息中的某一位为零时,相应的dirty bits信息同样为零;当Valid bits信息中的某一位为一时,相应的dirty bits信息可以保持之前的信息不变。此外,将所缓存的内存页面41中保存的数据的索引信息Index41存储至标签阵列Tag Array中(Set0,Way4)位置处,如图4所示。
在本实施例中,将内存页面41中保存的数据覆盖所缓存的内存页面11中保存的数据之前,缓存控制器还需要检测所缓存的内存页面11中被覆盖的数据的dirty bits信息;当缓存控制器检测到所缓存的内存页面11中被覆盖的数据的dirty bits信息用于指示数据被 改写时,需要将被改写的数据所在的数据单元的全部数据写回内存或者下一级缓存。
进一步的,在如图4所示的缓存情况下,当需要存储如图2所示的内存页面51时,需要将内存页面51中保存的数据存储在数据阵列Data Array中Set0对应的缓存页面中,将缓存中所保存的来自内存页面51中的数据的索引信息Index51,存储在标签阵列Tag Array中的Set0对应的存储位置处。此时标签阵列Tag Array中Set0对应的存储位置处均存储有索引信息,数据阵列Data Array中Set0对应的缓存页面中均保存有数据。此时缓存控制器可以查询标签阵列Tag Array中Set0对应的存储位置中存储的各索引信息中的LRU信息,确定出哪个索引信息所能索引到的数据为最近最少使用的数据。假设检测出索引信息Index11所记录的数据为最近最少使用数据,该数据存储在缓存页面A中。此时,可以将内存页面51对应的索引信息Index51存储至标签阵列Tag Array中(Set0、Way0)位置处,如图8所示。由于在数据阵列Data Array中,缓存页面A中同时保存有内存页面11中保存的数据和内存页面41中保存的数据,当内存页面51中保存的数据存储至缓存页面A时,有可能将缓存页面A当前所保存的内存页面41中的部分数据覆盖。将内存页面51中保存的数据存储至缓存页面A中后,可以基于缓存页面A中被内存页面51中保存的数据覆盖的数据单元,修改索引信息Index41。
综上可以看出,通过采用图3或图4所示的缓存结构,当缓存页面中保存的数据发生替换时,可以将未被覆盖的数据仍然保存在缓存页面中。有利于提高缓存命中率,从而提高缓存与处理器之间的数据传输速率,进而提高处理器的运行速率。当所要访问的数据未存储在缓存中、但标签阵列Tag Array中记录有与该数据来自于同一内存页面的其他数据时,可以不需要将存储该数据的内存页面中所存储的其他数据再一次从内存中取出,降低了一次所要传输的数据的数量,从而降低了缓存通信量,进而降低了缓存带宽压力。
对所访问数据的存储位置的判断可能发生在缓存和内存中。下面对处理器的访问流程进行详细描述。
下面结合图3-图4,通过具体示例对处理器的数据访问进行详细描述。处理器发起请求访问某一数据的指令,该指令中携带有所请求的数据的地址信息,该地址信息中包括标签信息Tag1、组信息Set0等。缓存控制器基于处理器发出的指令,利用组信息Set0检索标签阵列Tag Array,查找到Set0这一组内的索引信息index01、index11、index21、index31,如图3所示。接着,缓存控制器可以继续查找index01、index11、index21、index31的其中一个索引信息中是否包括Tag1。假设index01中的标签信息为Tag1,则表示Tag命中。此时,可以进一步判断处理器请求访问的数据所在的数据单元对应的Valid Bits信息,若有效,则说明待访问的数据存储在缓存中。此时,缓存控制器可以进一步查看index01中的Way信息,确定待访问的数据在数据阵列Data Array中的位置。然后,缓存控制器基于待访问的数据在数据阵列Data Array中的位置,控制缓存与处理器通信,以使处理器获取数据。假设处理器请求访问的数据所在的数据单元对应的Valid Bits信息无效,则说明该数据未存储在缓存中,需要去内存访问。
假设索引信息index01、index11、index21、index31中的任意一个索引信息中均不包括Tag1信息,则表示Tag未命中,需要去片外内存访问。假设处理器所要访问的数据处存储在如图2所示的内存页面41中。假设此时缓存中当前的存储情况如图3所示。缓存控制器可以查询标签阵列Tag Array中组Set0对应的存储位置所存储的各索引信息中的位置 信息,确定出各缓存页面中均存储有数据。缓存控制器可以基于索引信息index01、index11、index21、index31中的LRU信息,确定最近最少使用的数据。假设索引信息Index11对应的缓存页面A所保存的数据为最近最少使用的数据。然后,缓存控制器可以进一步基于Index11中的有效位信息和待缓存的内存页面41中的数据的索引信息Index41中的有效位信息,确定出缓存页面A中保存的数据所占用的数据单元中与待缓存的内存页面41保存的数据所占用的数据单元中相冲突的数据单元。假设该相冲突的数据单元例如为图5所示的1001、1016、和1028。缓存控制器可以将索引信息Index11中的有效位信息中用于指示该相冲突的数据单元的位改为无效。从而,修改后的有效位信息为00100000000010000100100001000010(十六进制表示为:0x20084842)。此外,假设缓存页面A中的1001、1016该两个数据单元中保存的数据包括脏数据,此时,需要将该两个数据单元中保存的数据写回内存。然后,缓存控制器需要修改Index11中的脏污位信息。然后,缓存控制器可以将待缓存的内存页面41中保存的数据存储至数据阵列Data Array中的缓存页面A中。缓存控制器还可以查询标签阵列Tag Array中组Set0对应的缓存位置所存储的各索引信息中的整体有效位Valid信息,查询出(Set0、Way4)对应的存储位置当前存储的索引信息无效,此时,可以将待缓存的内存页面41中保存的数据的索引信息Index41存储至标签阵列Tag Array中(Set0、Way4)位置处。同时,缓存控制器可以控制缓存与处理器通信,以使处理器访问所缓存的内存页面41中保存的数据。此时,缓存中当前保存的数据情况如图4所示。
在本申请实施例的示例中,缓存、缓存控制器和处理器可以集成在同一个芯片上,形成片上系统(SOC,System on chip)。此外,处理器和缓存可以集成在同一个芯片上,缓存控制器集成在另外一个芯片上。实际应用中,缓存也可以与处理器集成于不同芯片,该片外缓存采用本中请实施例提供的片内缓存相同的存储结构设计、且与本中请实施例提供的片内缓存实现相同的功能,该片外缓存也应视为落入本中请实施例的保护范围之内。
基于同一发明构思,本申请实施例还提供了一种缓存方法,该缓存方法应用于如图1所示的缓存控制器。请继续参考图9,其示出了本申请实施例提供的缓存方法的一个流程900,该缓存方法的流程900包括如下所述的步骤:
步骤901,接收数据访问请求,根据所述数据访问请求确定缓存中未保存待访问的数据。
在本实施例中,缓存控制器可以基于访问请求中携带的标签信息查询缓存中存储的索引信息,将索引信息中的标签信息与访问请求携带的标签信息进行比对,基于比对结构,确定缓存中是否保存有待访问的数据。当缓存控制器确定缓存中保存的索引信息中的标签信息与访问请求携带的标签信息均不同时,说明缓存中未保存待访问的数据。此时执行步骤902。
步骤902,基于缓存中存储的索引信息中的位置信息,将待访问的数据覆盖缓存中的第一页面中的原数据。
具体的,缓存控制器可以查询缓存中存储的索引信息中的位置信息,确定数据阵列Data Array中的缓存页面是否均保存有数据。
例如,假设数据阵列Data Array中包括缓存页面1、缓存页面2和缓存页面3。其中索引信息Index1中的位置信息用于指示缓存页面1中保存的数据,以及缓存页面1在缓 存中的位置,索引信息Index2中的位置信息用于指示缓存页面2中保存的数据,以及缓存页面2在缓存中的位置,索引信息Index3中的位置信息用于指示缓存页面3中保存的数据,以及缓存页面3在缓存中的位置,则说明数据阵列Data Array中的缓存页面均保存有数据,也可以说保存的数据有效;如果索引信息Index1中的位置信息用于指示缓存页面1中保存的数据,以及缓存页面1在缓存中的位置,索引信息Index2中的位置信息用于指示缓存页面2中保存的数据,以及缓存页面2在缓存中的位置,索引信息Index3中的位置信息用于指示缓存页面2中保存的数据,以及缓存页面2在缓存中的位置,则说明缓存页面3中保存的数据无效,或者未保存有数据。
如果存在一个缓存页面未保存有数据,则可以将待访问的数据直接保存在该缓存页面中。
如果缓存控制器确定出数据阵列Data Array中的缓存页面均保存有数据,则缓存控制器可以基于缓存中保存的每一个索引信息中的优先等级信息(例如LRU信息、FIFO信息或者FBR信息),选择出一个缓存页面,也即第一缓存页面,从而将待访问的数据存储至第一缓存页面中。此时,待访问的数据需要覆盖第一缓存页面中保存的原数据。
步骤903,将第三索引信息保存在缓存中,第三索引信息用于记录待访问的数据在第一缓存页面中的索引。
具体的,缓存控制器可以进一步查询缓存中存储的索引信息中的整体有效位信息,确定索引信息是否有效,也可以理解为索引信息所能索引到的缓存页面中保存的数据是否有效。当存在至少一个索引信息无效时,可以直接将第三索引信息保存在其中一个无效的索引信息位置处。
当缓存中保存的索引信息均有效时,可以将用于记录第一缓存页面中保存的数据的索引信息更新为上述第三索引信息。
在一种可能的实现方式中,当缓存中存在至少一个索引信息无效、且缓存页面中均保存有数据时,还可以获得所述第一缓存页面中的空闲数据单元的位置信息,根据该位置信息更新缓存中保存的第二索引信息,该第二索引信息用于索引第一缓存页面中的与位置信息对应的数据单元中的原数据。
在一种可能的实现方式中,所述获得所述第一页面中的空闲数据单元的位置信息,包括:基于更新后的所述第一索引信息中的有效位信息,确定所述第二页面中的空闲数据单元的位置信息。
在一种可能的实现方式中,所述根据所述位置信息更新所述缓存中保存的第二索引信息,包括:更新所述第二索引信息中的有效位信息和脏污位信息;以及在所述第二索引信息中添加用于指示所述第二页面以及所述第二页面在缓存中的位置的位置信息。
在一种可能的实现方式中,所述将内存的第二页面中的数据覆盖所述第一页面中的原数据之前,所述方法还包括:将所述第一页面中被覆盖的原数据中的脏数据写回内存或者下一级缓存。
可以理解的是,缓存控制器为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例 对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例可以根据上述方法示例对缓存控制器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个缓存控制模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图10示出了上述实施例中涉及的缓存装置1000的一种可能的组成示意图,如图10所示,该缓存装置1000可以包括:接收模块1001、覆盖模块1002和保存模块1003。
其中,接收模块1001,用于接收数据访问请求,根据所述数据访问请求确定缓存中未保存待访问的数据;覆盖模块1002,用于基于所述缓存中存储的多个索引信息中的每一个索引信息的位置信息,将所述待访问的数据覆盖所述缓存中的第一页面中的原数据;保存模块1003,用于将第一索引信息保存在缓存中,所述第一索引信息用于记录所述待访问的数据在所述第一页面中的索引。
在一种可能的实现方式中,覆盖模块1002进一步用于:将内存的第二页面中的数据覆盖所述第一页面中的原数据,其中,所述第二页面中的数据包括所述待访问的数据。
在一种可能的实现方式中,缓存装置1000还包括更新模块(图中未示出),用于获得所述第一页面中的空闲数据单元的位置信息,根据所述位置信息更新所述缓存中保存的第二索引信息,所述第二索引信息用于索引所述第一页面中的与所述位置信息对应的数据单元中的原数据。
在一种可能的实现方式中,更新模块(图中未示出)进一步用于:基于更新后的所述第一索引信息中的有效位信息,确定所述第二页面中的空闲数据单元的位置信息。
在一种可能的实现方式中,更新模块(图中未示出)进一步用于:更新所述第二索引信息中的有效位信息和脏污位信息;以及在所述第二索引信息中添加用于指示所述第二页面以及所述第二页面在缓存中的位置的位置信息。
在一种可能的实现方式中,缓存装置1000还包括写回模块(图中未示出):用于将所述第一页面中被覆盖的原数据中的脏数据写回内存或者下一级缓存。
本实施例提供的缓存装置1000,用于执行缓存系统100中所示的缓存控制器所执行的缓存方法,可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,缓存装置1000可以包括缓存控制器和存储器。其中,缓存控制器可以对缓存装置1000的动作进行控制管理,例如,可以用于支持缓存装置1000执行上述各个模块执行的步骤。存储器可以用于支持缓存装置1000执行存储程序代码和数据等。
其中,缓存控制器可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑模块。缓存控制器也可以是实现计算功能的组合,例如包括专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、或分立硬件组件等。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配 由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的缓存装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (14)

  1. 一种缓存系统,其特征在于,包括缓存,所述缓存用于保存来自内存中的数据,所述缓存还保存有索引信息,所述索引信息用于索引所述缓存中所保存的数据;
    所述索引信息包括位置信息,所述位置信息用于指示所述缓存中用于保存所述索引信息所能索引到的数据在所述缓存中的位置。
  2. 根据权利要求1所述的缓存系统,其特征在于,所述缓存包括呈阵列排布的多个页面,所述多个页面中的每一个页面用于保存缓存中的数据;
    所述索引信息还包括标签信息;
    所述标签信息用于指示用于保存所述索引信息所能索引到的数据的第一页面在所述阵列中的第一位置,所述位置信息用于指示所述第一页面在所述阵列中的第二位置。
  3. 根据权利要求1或2所述的缓存系统,其特征在于,所述索引信息包括第一索引信息;其中,
    所述第一索引信息用于索引所述第一页面保存的来自所述内存的第二页面中的数据。
  4. 根据权利要求3所述的缓存系统,其特征在于,所述索引信息还包括第二索引信息;其中,
    所述第二索引信息用于索引所述第一页面保存的来自所述内存的第三页面中的数据。
  5. 根据权利要求1-4任一项所述的缓存系统,其特征在于,所述索引信息还包括:
    有效位信息、脏污位信息和整体有效位信息。
  6. 根据权利要求3或4所述的缓存系统,其特征在于,所述缓存系统还包括缓存控制器;所述缓存控制器用于:
    基于所述索引信息中的位置信息,将所述内存的第四页面中保存的数据覆盖所述第一页面中的原数据;
    将第三索引信息保存在缓存中,所述第三索引信息用于记录所述第四页面中的数据在所述第一页面中的索引。
  7. 根据权利要求6所述的缓存系统,其特征在于,所述缓存控制器还用于:
    获得所述第一页面中的空闲数据单元的位置信息,根据所述空闲数据单元的位置信息更新所述第一索引信息,所述第一索引信息用于索引所述第一页面中的与所述空闲数据单元的位置信息对应的数据单元中的原数据。
  8. 一种芯片,其特征在于,所述芯片包括如权利要求1-7任一项所述的缓存系统。
  9. 根据权利要求8所述的芯片,其特征在于,还包括:
    处理器,用于访问所述缓存系统中保存的数据,以及将处理后的数据存储至所述缓存系统。
  10. 一种缓存方法,其特征在于,包括:
    接收数据访问请求,根据所述数据访问请求确定需要从内存写入缓存的数据;
    基于所述缓存中存储的多个索引信息中每一个索引信息中的位置信息,将所述需要从内存写入缓存的数据保存在所述缓存的第一页面中,其中,所述位置信息用于指示所述缓存中用于保存索引信息所能索引到的数据在所述缓存中的位置;
    将第一索引信息保存在缓存中,所述第一索引信息用于记录所述需要从内存写入缓存的数据在所述第一页面中的索引。
  11. 根据权利要求10所述的缓存方法,其特征在于,所述将所述需要从内存写入缓存的数据保存在所述缓存的第一页面中,包括:
    将所述需要从内存写入缓存的数据覆盖所述第一页面中的原数据。
  12. 根据权利要求11所述的缓存方法,其特征在于,所述方法还包括:
    获得所述第一页面中的空闲数据单元的位置信息,根据所述空闲数据单元的位置信息更新所述缓存中保存的第二索引信息,所述第二索引信息用于索引所述第一页面中的与所述空闲数据单元的位置信息对应的数据单元中的原数据。
  13. 根据权利要求12所述的缓存方法,其特征在于,所述获得所述第一页面中的空闲数据单元的位置信息,包括:
    基于更新后的所述第一索引信息中的有效位信息,确定所述第一页面中的空闲数据单元的位置信息。
  14. 根据权利要求12或13所述的缓存方法,其特征在于,所述根据所述空闲数据单元的位置信息更新所述缓存中保存的第二索引信息,包括:
    更新所述第二索引信息中的有效位信息和脏污位信息。
PCT/CN2020/105695 2020-07-30 2020-07-30 缓存系统、方法和芯片 WO2022021177A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2020/105695 WO2022021177A1 (zh) 2020-07-30 2020-07-30 缓存系统、方法和芯片
CN202080101477.2A CN115698964A (zh) 2020-07-30 2020-07-30 缓存系统、方法和芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/105695 WO2022021177A1 (zh) 2020-07-30 2020-07-30 缓存系统、方法和芯片

Publications (1)

Publication Number Publication Date
WO2022021177A1 true WO2022021177A1 (zh) 2022-02-03

Family

ID=80037012

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/105695 WO2022021177A1 (zh) 2020-07-30 2020-07-30 缓存系统、方法和芯片

Country Status (2)

Country Link
CN (1) CN115698964A (zh)
WO (1) WO2022021177A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256303A1 (en) * 2007-04-16 2008-10-16 Arm Limited Cache memory
CN101478567A (zh) * 2009-01-09 2009-07-08 南京联创科技股份有限公司 基于网格划分的内存管理方法
CN107291630A (zh) * 2016-03-30 2017-10-24 华为技术有限公司 一种高速缓冲存储器处理方法及装置
CN109582214A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 数据访问方法以及计算机系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256303A1 (en) * 2007-04-16 2008-10-16 Arm Limited Cache memory
CN101478567A (zh) * 2009-01-09 2009-07-08 南京联创科技股份有限公司 基于网格划分的内存管理方法
CN107291630A (zh) * 2016-03-30 2017-10-24 华为技术有限公司 一种高速缓冲存储器处理方法及装置
CN109582214A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 数据访问方法以及计算机系统

Also Published As

Publication number Publication date
CN115698964A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
JP6796304B2 (ja) 最終レベルキャッシュシステム及び対応する方法
CN109582214B (zh) 数据访问方法以及计算机系统
TWI522802B (zh) 確保微處理器之快取記憶體層級之資料一致性的裝置與方法
US8954672B2 (en) System and method for cache organization in row-based memories
US11210020B2 (en) Methods and systems for accessing a memory
KR102290464B1 (ko) 시스템 온 칩 및 그것의 주소 변환 방법
TWI393050B (zh) 促進多重處理器介面之板內建快取記憶體系統之記憶體裝置及方法及使用其之電腦系統
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
JP2010191638A (ja) キャッシュ装置
JPH04233641A (ja) データプレフェッチの方法およびその装置
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
WO2019128958A1 (zh) 缓存替换技术
US9058283B2 (en) Cache arrangement
US6988167B2 (en) Cache system with DMA capabilities and method for operating same
WO2015041151A1 (ja) キャッシュメモリシステムおよびプロセッサシステム
US20170109075A1 (en) Memory system
US6311253B1 (en) Methods for caching cache tags
US5287512A (en) Computer memory system and method for cleaning data elements
US6240487B1 (en) Integrated cache buffers
US11188467B2 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US20020108021A1 (en) High performance cache and method for operating same
WO2022021177A1 (zh) 缓存系统、方法和芯片
US6901450B1 (en) Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
WO2022021158A1 (zh) 缓存系统、方法和芯片
JP2580263B2 (ja) バッファ記憶装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20946948

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20946948

Country of ref document: EP

Kind code of ref document: A1