CN115033185A - 访存处理方法和装置、存储装置、芯片、板卡、电子设备 - Google Patents
访存处理方法和装置、存储装置、芯片、板卡、电子设备 Download PDFInfo
- Publication number
- CN115033185A CN115033185A CN202210772936.0A CN202210772936A CN115033185A CN 115033185 A CN115033185 A CN 115033185A CN 202210772936 A CN202210772936 A CN 202210772936A CN 115033185 A CN115033185 A CN 115033185A
- Authority
- CN
- China
- Prior art keywords
- cache
- level
- access request
- storage unit
- memory access
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开实施例提供一种访存处理方法和装置、存储装置、芯片、板卡、电子设备,所述访存请求处理装置应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括控制单元和映射单元;控制单元用于响应于接收到访存请求,提取出访存请求中携带的地址信息,并将地址信息发送至映射单元;映射单元用于根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,以使所述控制单元基于所述访存请求访问所述每级缓存对应的存储单元。
Description
技术领域
本公开涉及缓存技术领域,尤其涉及访存处理方法和装置、存储装置、芯片、电子设备、板卡。
背景技术
随着人工智能和高性能计算的不断发展,计算系统所需要的系统带宽日趋庞大。在计算过程中,通过层级化的存储结构(例如,多级缓存)能有效的提高存储系统的性能。然而,相关技术中的多级缓存中每个缓存实体均使用独立的存储单元,当某些缓存实体不使能时,会浪费存储空间。
发明内容
第一方面,本公开实施例提供一种访存请求处理装置,应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括:控制单元和映射单元;所述控制单元,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,并将所述地址信息发送至所述映射单元;所述映射单元,用于根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,以使所述控制单元基于所述访存请求访问所述每级缓存对应的存储单元。
在一些实施例中,所述映射单元,用于:基于预先存储的配置信息,从所述地址信息中提取出至少一级缓存中每级缓存的索引信息,并将提取出的索引信息返回给所述控制单元,以使所述控制单元基于所述索引信息向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求,每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
在一些实施例中,至少两种配置信息确定出的索引信息所指示的各级缓存对应的存储单元的数量不同。
在一些实施例中,所述控制单元还用于:在当前级缓存未命中的情况下,记录未命中状态;在获取到下一级缓存返回的数据的情况下,根据所述未命中状态,将下一级缓存返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的存储单元;和/或在当前级缓存命中的情况下,将当前级缓存对应的存储单元中存储的数据返回处于当前级缓存之前的各级缓存对应的存储单元。
在一些实施例中,每个存储单元均包括标识信息,用于标识所述存储单元中是否存储有效数据;所述控制单元用于:每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的标识信息,确定该级缓存是否命中。
在一些实施例中,所述标识信息包括数据标识信息和地址标识信息,所述数据标识信息用于标识所述存储单元中是否存储数据,所述地址标识信息用于标识所述存储单元中存储的数据在内存中的存储地址;所述控制单元用于:每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的数据标识信息和地址标识信息,确定该级缓存是否命中。
在一些实施例中,所述控制单元用于:在第一条件和第二条件均满足的情况下,确定该级缓存命中;和/或在第一条件和第二条件中的至少一者不满足的情况下,确定该级缓存未命中;所述第一条件为:该级缓存对应的存储单元的数据标识信息指示该级缓存对应的存储单元已存储数据;所述第二条件为:该级缓存对应的存储单元的地址标识信息指示该级缓存对应的存储单元中存储的数据在内存中的存储地址与访存请求所访问的内存地址一致。
在一些实施例中,所述控制单元包括多个第一控制子单元,所述映射单元包括多个第一映射子单元;每级缓存对应一个第一控制子单元和一个第一映射子单元;每级缓存对应的第一控制子单元,用于将所述访存请求中携带的地址信息发送至该级缓存对应的第一映射子单元;每级缓存对应的第一映射子单元,用于根据所述地址信息确定该级缓存对应的存储单元,以使该级缓存对应的第一控制子单元基于所述访存请求访问该级缓存对应的存储单元。
在一些实施例中,每级缓存对应的第一控制子单元,还用于:在该级缓存未命中的情况下,记录未命中状态,并将所述地址信息发送至下一级缓存对应的第一控制子单元;在获取到下一级缓存对应的第一控制子单元返回的数据的情况下,根据所述未命中状态,将下一级缓存对应的第一控制子单元返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元;和/或在该级缓存命中的情况下,将该级缓存对应的存储单元中存储的数据返回至上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元。
在一些实施例中,所述映射单元用于:获取待访问的至少一级缓存中每级缓存的索引信息,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址;将所述索引信息与预先存储的偏移量进行叠加;将叠加后的索引信息返回给所述控制单元,以使所述控制单元基于叠加后的索引信息,向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求。
在一些实施例中,所述访存请求由多个执行单元中的目标执行单元发送,不同的执行单元对应不同的偏移量;所述映射单元用于:将所述索引信息与所述目标执行单元对应的偏移量进行叠加。
在一些实施例中,所述控制单元包括多个第二控制子单元,所述映射单元包括多个第二映射子单元;每个执行单元对应至少一个第二控制子单元和至少一个第二映射子单元;每个执行单元对应的第二控制子单元,用于将该执行单元发送的访存请求中携带的地址信息发送至该执行单元对应的第二映射子单元;每个执行单元对应的第二映射子单元,用于根据所述地址信息确定所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元,以使所述执行单元对应的第二控制子单元基于所述访存请求访问所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元。
在一些实施例中,所述访存请求中还包括字节标识信息,用于确定所述访存请求所请求的数据的有效字节。
在一些实施例中,所述地址信息中的第一数据位表示字节标识信息,第二数据位表示所述访存请求访问的内存地址,第三数据位表示待访问的至少一级缓存中每级缓存的索引信息,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
第二方面,本公开实施例提供一种访存请求处理装置,应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括:控制单元,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,并基于所述访存请求访问所述每级缓存对应的存储单元。
第三方面,本公开实施例提供一种存储装置,用于实现多级缓存;所述存储装置包括:存储器,所述存储器包括多个存储单元,每级缓存对应至少一个存储单元;以及本公开任一实施例所述的访存请求处理装置。
第四方面,本公开实施例提供一种芯片,所述芯片包括本公开任一实施例所述的访存请求处理装置,或者本公开任一实施例所述的存储装置。
在一些实施例中,所述芯片还包括:执行单元,用于向所述控制单元发送访存请求。
第五方面,本公开实施例提供一种板卡,所述板卡包括封装有至少一个如本公开任一实施例所述芯片的封装结构,或者封装有至少一个任意实施例所述的存储装置的封装结构。
第六方面,本公开实施例提供一种电子设备,包括本公开任一实施例所述的存储装置,或者本公开任一实施例所述的芯片或者本公开任一实施例所述的板卡。
第七方面,本公开实施例提供一种访存请求处理方法,应用于本公开任一实施例所述的访存请求处理装置中的控制单元,所述方法包括:响应于接收到访存请求,提取出所述访存请求中携带的地址信息;将所述地址信息发送至所述映射单元,以使所述映射单元根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元;基于所述访存请求访问所述每级缓存对应的存储单元。
第八方面,本公开实施例提供一种访存请求处理装置,应用于本公开任一实施例所述的访存请求处理装置中的控制单元,所述装置包括:提取模块,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息;发送模块,用于将所述地址信息发送至所述映射单元,以使所述映射单元根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元;访存模块,用于基于所述访存请求访问所述每级缓存对应的存储单元。
第九方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任一实施例所述的方法。本公开实施例采用控制单元提取出访存请求中携带的地址信息,再通过映射单元根据地址信息确定所需访问的各级缓存对应的存储单元的地址,从而控制单元可以基于访存请求访问所述每级缓存对应的存储单元,以访问对应层级的缓存。这样,可以使各级缓存共享同一块存储空间(即共享同一块存储实体),减少了存储空间的浪费,从而提高了系统性能,降低了系统功耗。进一步地,映射单元可以基于配置信息提取出索引信息,用于确定所述每级缓存对应的存储单元的地址。因此,通过修改配置信息,可以提取出不同的索引信息,从而动态改变各级缓存对应的存储单元的地址,从而适用于不同的应用场景。
应当理解,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1是一些实施例中的多级缓存的示意图。
图2A和图2B分别是各级缓存对应的存储单元的不同数量的示意图。
图3是本公开实施例的访存请求处理装置的示意图。
图4是本公开实施例的地址信息的示意图。
图5A和图5B分别是不同长度的索引信息及其对应的存储单元的数量的示意图。
图6和图7分别是不同情况下各级缓存的索引信息的示意图。
图8是索引信息的长度与存储单元的数量的关系的示意图。
图9是从地址信息中读取索引信息来索引存储单元的示意图。
图10是包括单个执行单元、多个第一映射子单元和多个第一控制子单元时的示意图。
图11是基于偏移量来索引存储单元的示意图。
图12是包括多个第二映射子单元和多个第二控制子单元时的示意图。
图13是包括多个执行单元、多个第一映射子单元和多个第一控制子单元时的示意图。
图14是本公开实施例的存储装置的示意图。
图15是本公开实施例的访存请求处理方法的流程图。
图16是本公开实施例的访存请求处理装置的框图。
图17位本公开实施例的板卡的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
在计算过程中,可以通过采用多级缓存(cache)来提高存储系统的带宽,减少访存延迟,降低访存功耗,从而提高存储系统的性能。图1示出了一些实施例的多级缓存的结构示意图。图中以缓存的级数等于3为例,各级缓存分别称为L1缓存、L2缓存和L3缓存。在中央处理单元(Central Processing Unit,CPU)等执行单元进行读访存操作时,会先将读访存请求发送到L1缓存,并从L1缓存中查找所需的数据;如果L1缓存未命中(即未从L1缓存中查找到所需的数据),则进一步从L2缓存中查找所需的数据;同样地,如果L2缓存未命中,则进一步从L3缓存中查找所需的数据;如果L3缓存未命中,则从内存中查找所需的数据。在执行单元进行写访存操作时,会将写访存请求分别发送到各级缓存以及内存,以将各级缓存以及内存中的相应存储位置写入写访存请求中携带的数据。
在实际应用中,越靠近执行单元的缓存容量越小,但访问速度越快。在上述实施例中,L1缓存(即第1级缓存)、L2缓存(即第2级缓存)和L3缓存(即第3级缓存)的容量依次递增,例如,L1缓存的容量为128KB,L2缓存的容量为2MB,L3缓存的容量为10MB,但L1缓存、L2缓存和L3缓存的访问速度依次递减。
在相关技术中,大多采用多个并行的cache实体来提高系统带宽,通过增加cache的层级来降低访存延迟。例如,在图1所示的实施例中,每一级cache包括两个并行的cache实体。同一层级中并行的各个cache实体可以由不同的执行单元访问,例如,图1中左侧的各个cache实体可以由CPU1访问,图1中右侧的各个cache实体可以由CPU2访问。
本领域技术人员可以理解,以上实施例仅为一种示例性说明,并非用于限制本公开。例如,在实际应用中,缓存的层级数量不限于3,各级缓存以及内存的容量也不限于图中所示,且每一层级中并行的cache实体的数量也不限于图中所示的情况。
由于多级缓存中包括多个cache实体,每个cache实体使用独立的存储单元(通常采用静态RAM实现),当某些cache实体不使能时,会浪费存储空间。例如,在CPU2闲置的情况下,图1中右侧的各个cache实体可能不被使能,从而导致这些cache实体对应的存储空间处于闲置状态。
基于此,本公开实施例采用一块存储空间来实现多级缓存,也就是说,各级缓存(即各个层级的缓存)共享同一块存储空间。其中,所述存储空间可以包括多个存储单元,每级缓存对应至少一个存储单元。图2A和图2B分别示出了存储空间中各个存储单元与缓存层级的不同对应关系的示意图。假设在图2A所示的实施例和图2B所示的实施例中,存储空间中存储单元的数量均为n,缓存的层级均为k,各个存储单元分别记为Set 0,Set 1,……,Set n-1,各级缓存分别记为L1缓存,L2缓存,……,Lk缓存(即第k级缓存),n和k均为正整数,且k≤n。例如,在图2A所示的实施例中,L1缓存包括存储空间中的两个存储单元(Set 0和Set 1),L2缓存也包括存储空间中的两个存储单元(Set 2和Set 3),Lk缓存包括存储空间中的四个存储单元(Set n-4、Set n-3、Set n-2和Set n-1)。又例如,在图2B所示的实施例中,L1缓存包括存储空间中的一个存储单元(Set 0),L2缓存包括存储空间中的三个存储单元(Set 1、Set 2和Set3),Lk缓存包括存储空间中的四个存储单元(Set n-4、Set n-3、Set n-2和Set n-1)。
在上述实施例中,不同层级的缓存对应的存储单元的数量可以相等,也可以不相等,每级缓存对应的存储单元的数量可以根据实际需要动态调整。所述调整每级缓存对应的存储单元的数量,可以是指调整每级缓存对应的存储单元的绝对数量。例如,将L1缓存对应的存储单元的绝对数量调整为1,将L2缓存对应的存储单元的绝对数量调整为2,等等。或者,所述调整每级缓存对应的存储单元的数量,也可以是指调整每级缓存对应的存储单元的数量占所述存储空间中存储单元的总数的比例。例如,将L1缓存对应的存储单元的绝对数量调整为所述存储空间中存储单元的总数的10%,将L2缓存对应的存储单元的绝对数量调整为所述存储空间中存储单元的总数的20%,等等。为了提高存储空间的利用率,可选地,通过上述任意一种方式调整前后,各级缓存对应的存储单元的数量的总和可以等于存储空间中存储单元的总数,以减少存储空间的浪费。
在一些实施例中,执行单元执行不同的任务时所需的缓存容量不同,因此,可以根据执行单元执行任务的任务类型来调整。以L1缓存为例,执行单元执行向量加法运算时所需的缓存容量一般小于执行矩阵卷积运算时所需的缓存容量,因此,可以在该执行单元执行向量加法运算时,将L1缓存对应的存储单元的数量设置为较少的数量,在该执行单元执行矩阵卷积运算时,将L1缓存对应的存储单元的数量设置为较多的数量。
在另一些实施例中,执行单元执行任务时需要处理的数据量不同,例如,同样是执行向量加法运算,在一些情况下,执行单元需要对四个向量进行加法运算,而在另一些实施例中只需要对两个向量进行加法运算。在上述两种情况下,所需的缓存容量是不同的。仍以L1缓存为例,在对四个向量进行加法运算的情况下,可以将L1缓存对应的存储单元的数量设置为较多的数量,在对两个向量进行加法运算的情况下,可以将L1缓存对应的存储单元的数量设置为较少的数量。
在另一些实施例中,可以基于各级缓存的命中率需求来设置各级缓存的容量。对于每级缓存来说,该级缓存的容量越小,则该级缓存的命中率越低;该级缓存的容量越大,则该级缓存的命中率越高。因此,在某一级缓存所需的命中率较高时,可以该级缓存对应的存储单元的数量设置为较多的数量;在某一级缓存所需的命中率较低时,可以该级缓存对应的存储单元的数量设置为较少的数量。
除了以上列举的几种情况之外,还可以根据其他条件来调整各级缓存对应的存储单元的数量,此处不再一一列举。此外,还可以结合上述至少两种条件,或者结合上述至少一种条件以及其他条件共同来调整各级缓存对应的存储单元的数量。
在各级缓存共享同一块存储空间的基础上,本公开提供一种应用于多级缓存的访存请求处理装置。参见图3,所述访存请求处理装置包括:
控制单元301和映射单元302;
所述控制单元301,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,并将所述地址信息发送至所述映射单元302;
所述映射单元302,用于根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,以使所述控制单元基于所述访存请求访问所述每级缓存对应的存储单元。
在一些实施例中,映射单元302可以基于预先存储的配置信息,从所述地址信息中提取出至少一级缓存中每级缓存的索引信息,并将提取出的索引信息返回给所述控制单元301,以使所述控制单元301基于所述索引信息向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求,每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
为了便于说明,下面的实施例均以缓存层级等于3为例,即,所述多级缓存包括L1缓存、L2缓存和L3缓存。
控制单元301可以接收访存请求,该访存请求可以由执行单元发送,所述执行单元包括但不限于CPU、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural Network Processing Unit,NPU)等任意类型的处理器或者其他具有访存功能的功能单元。访存请求中可以携带地址信息,该地址信息可以包括:
(1)访存请求所访问的内存地址。其中,所述访存请求既可以是读访存请求,也可以是写访存请求。所述读访存请求用于读取存储在内存中的数据,所述写访存请求用于将数据写入内存。在访存请求为读访存请求的情况下,所述地址信息中包括的内存地址为存储有访存请求所需读取的数据的地址;在访存请求为写访存请求的情况下,所述地址信息中包括的内存地址为访存请求中携带的数据被写入的地址。
(2)字节标识信息,用于确定访存请求所请求的数据的有效字节。在访存请求为读访存请求的情况下,所述字节标识信息用于指示内存中存储的数据的哪些字节为有效字节。在访存请求为写访存请求的情况下,所述字节标识信息用于指示访存请求中携带的数据将要写入到内存地址中的哪些字节。例如,假设内存中的一个内存地址可用于存储两个字节(分别为高位字节和低位字节),则在所述字节标识信息指示高位字节有效时,可以从该内存地址中读取高位字节,或者将访存请求中携带的数据写入该内存地址中的高位字节。
(3)索引信息,用于确定每级缓存对应的存储单元的地址。每级缓存的索引信息与该级缓存对应的存储单元一一对应。例如,在该级缓存的索引信息为第一索引信息的情况下,该级缓存对应的存储单元为Set 0,在该级缓存的索引信息为第二索引信息的情况下,该级缓存对应的存储单元为Set 1。每级缓存的索引信息占所述地址信息中的一个或多个数据位。
在一些实施例中,地址信息中的高位表示内存地址,地址信息中的低位表示字节标识信息,地址信息中内存地址与字节标识信息之间的数据位表示索引信息,如图4中的情况(a)所示。本领域技术人员可以理解,这只是本公开可以采用的其中一种地址信息的表示形式。在其他实施例中,地址信息还可以表示为其他形式。例如,地址信息中的高位可以表示内存地址,地址信息中的低位可以表示索引信息,地址信息中内存地址与之间的数据位表示节标识信息,如图4中的情况(b)所示;或者,地址信息中的高位可以表示索引信息,地址信息中的低位表示字节标识信息,地址信息中索引信息与字节标识信息之间的数据位表示内存地址,如图4中的情况(c)所示。除此之外,地址信息还可以表示为其他形式,此处不再一一列举。下面以L1缓存的索引信息为例,对地址信息中的索引信息进行举例说明。
L1缓存的索引信息可以占所述地址信息中的一个或多个数据位。L1缓存的索引信息的位宽与L1缓存对应的存储单元的个数正相关。在L1缓存的索引信息的位宽为v的情况下,L1缓存对应的存储单元的个数可以是2v,v为正整数。例如,参见图5A,在L1缓存的索引信息的位宽为1的情况下,L1缓存对应的存储单元的个数是2,包括Set 0和Set 1。又例如,参见图5B,在L1缓存的索引信息的位宽为2的情况下,L1缓存对应的存储单元的个数是4,包括Set 0、Set 1、Set 2和Set 3。在图5A和图5B中,方块表示地址信息,其中,灰色方块表示地址信息中的索引信息。
在包括多级缓存的情况下,地址信息中的不同的数据位可以表示不同层级的缓存的索引信息。例如,参见图6,地址信息中的第r个数据位表示L1缓存的索引信息,地址信息中的第r+1个数据位表示L2缓存的索引信息,以此类推。或者,参见图7,地址信息中的第r个数据位和第r+1个数据位均表示L1缓存的索引信息,地址信息中的第r+2个数据位和第r+3个数据位均表示L2缓存的索引信息,以此类推。其中,r为整数,图6和图7中的每个方块均表示地址信息中的一个数据位,方块中的数字表示对应数据位是地址信息中的第几个数据位。
可以看出,在上述实施例中,L1缓存的索引信息在地址信息中所占的长度(即位宽)是可以动态变化的,且L1缓存的索引信息的长度与L1缓存对应的存储单元的数量正相关。在L1缓存对应的存储单元的数量较多的情况下,L1缓存的索引信息的长度较长;在L1缓存对应的存储单元的数量较少的情况下,L1缓存的索引信息的长度较短。通过采用不同的配置信息,确定出的索引信息的起始数据位和末尾数据位可以是不同的,从而索引信息的长度也可以是不同的,进而索引信息所指示的各级缓存对应的存储单元的数量可以是不同的。
仍以L1缓存的索引信息为例,参见图8,其中index表示索引信息。假设在初始状态下,L1缓存的索引信息的长度如图8中的情况(a)所示,该长度的索引信息对应的存储单元包括Set 0到Set 8,共9个存储单元。也就是说,L1缓存对应的存储单元的数量为9。如果需要增大L1缓存的容量,则可以将索引信息增加到图8中的情况(b)所示的长度,从而增大索引存储单元的范围,该长度的索引信息对应的存储单元包括Set 0到Set 10,共11个存储单元。如果需要减小L1缓存的容量,则可以将索引信息减小到图8中的情况(c)所示的长度,从而减小索引存储单元的范围,该长度的索引信息对应的存储单元包括Set 0到Set 2,共3个存储单元。特别地,可以采用默认索引信息(例如,将地址信息中固定的第5位到第9位作为默认索引信息),例如,在映射单元302未启用的情况下,控制单元301可以基于默认索引信息从地址信息中确定索引信息;而在映射单元302启用的情况下,映射单元302可以基于配置信息将当前的索引信息修改为不同于默认索引信息的其他索引信息(例如,修改后地址信息中的第10位到第6位为索引信息)。
在上述实施例中,L1缓存的索引信息在地址信息中的起始数据位固定不变,而L1缓存的索引信息在地址信息中的末尾数据位动态变化。本领域技术人员可以理解,在实际应用中,也可以是L1缓存的索引信息在地址信息中的末尾数据位固定不变,而L1缓存的索引信息在地址信息中的起始数据位动态变化;或者,也可以是L1缓存的索引信息在地址信息中的起始数据位和末尾数据位均动态变化。其他各级缓存的索引信息在地址信息中所处的数据位的变化规律与L1缓存的索引信息的变化规律类似,此处不再一一说明。
正是由于各级缓存的索引信息在地址信息中所处的数据位是动态变化的,因此,控制单元301在接收到访存请求之后,会将访存请求中携带的地址信息发送到映射单元302。映射单元302中预先存储有配置信息,该配置信息可以由执行单元发送到映射单元302。每级缓存都可以有该级缓存对应的配置信息,基于该级缓存对应的配置信息,可以确定该级缓存的索引信息在地址信息中处于哪些数据位。
如图9所示,假设地址信息中的高位表示内存地址,地址信息中的低位表示字节标识信息,地址信息中内存地址与字节标识信息之间的数据位(图中index所示的数据位)表示索引信息,则可以将index作为索引存储单元的地址(例如,在图中索引到的是存储单元Set 2);将地址信息中处于index左边的部分作为内存地址,以便判断缓存是否命中;将地址信息中处于index右边的部分作为字节标识信息,用来选择读出的数据中的某个字节。
配置信息中可以包括每级缓存的索引信息在地址信息中的起始数据位和末尾数据位。例如,索引信息index取地址信息addr中的[a:b]位,b为起始数据位,a为末尾数据位。其中,a和b的默认值例如分别为10和5。可以通过配置信息改变这个默认值,例如,起始数据位b可以设置成6,末尾数据位a可以设置成8,这样,index=addr[8:6],共3比特,可以访问Set 0到Set 7这8个存储单元。
缓存是逐级被访问的,只有在上一级缓存未命中的情况下才会访问下一级缓存。以当前层级的缓存为第k级缓存为例,如果当前级缓存命中,即第k级缓存命中,且前k-1级缓存未命中,则控制单元301可以将第k级缓存对应的存储单元中存储的数据返回处于当前级缓存之前的各级缓存(包括第1级缓存,第2级缓存,……,第k-1级缓存)对应的存储单元,并最终访问第1级缓存。如果当前级缓存未命中,即前k级缓存均未命中,控制单元301可以记录未命中状态,在获取到下一级(第k+1级)缓存返回的数据的情况下,根据所述未命中状态,将第k+1级缓存返回的数据写入第k级缓存对应的存储单元并返回给上一级(第k-1级)缓存对应的存储单元。地址信息中可以携带字节标识信息,根据该字节标识信息可以确定数据写入存储单元中的哪个地址。例如,在字节标识信息指示的是高位地址的情况下,可以将第k+1级缓存返回的数据写入第k级缓存对应的存储单元中的高位地址;在字节标识信息指示的是低位地址的情况下,可以将第k+1级缓存返回的数据写入第k级缓存对应的存储单元中的低位地址。进一步地,如果各级缓存均未命中,则控制单元301可以将访存请求发送至内存,以便访问内存。
例如,仍假设缓存的层级数量为3,控制单元301可以将访存请求中携带的地址信息发送给映射单元302,映射单元302可以先提取出L1缓存的索引信息,以使控制单元301基于访存请求访问L1缓存对应的存储单元。如果L1缓存命中,则控制单元301可以直接将L1缓存对应的存储单元中的数据返回给执行单元。如果L1缓存未命中,控制单元301可以记录L1缓存的未命中状态。进一步地,映射单元302可以提取出L2缓存的索引信息,以使控制单元301基于访存请求访问L2缓存对应的存储单元。如果L2缓存命中,控制单元301可以接收到L2缓存返回的数据,并根据L1缓存的未命中状态,将L2缓存返回的数据存储至L1缓存对应的存储单元,并将L1缓存对应的存储单元中的数据返回给执行单元。如果L2缓存仍未命中,则控制单元301可以记录L2缓存的未命中状态。进一步地,映射单元302可以提取出L3缓存的索引信息,以使控制单元301基于访存请求访问L3缓存对应的存储单元。如果L3缓存命中,控制单元301可以接收到L3缓存返回的数据,并根据L2缓存的未命中状态,将L3缓存返回的数据先存储至L2缓存对应的存储单元,再存储至L1缓存对应的存储单元,并将L1缓存对应的存储单元中的数据返回给执行单元。下面对判断各级缓存是否命中的方式进行举例说明。
在一些实施例中,每个存储单元均包括标识信息,用于标识所述存储单元中是否存储有效数据。例如,在存储单元为空(即存储单元中未存储数据)的情况下,可以认为该存储单元中未存储有效数据;在存储单元非空(即存储单元中已存储数据)的情况下,可以认为该存储单元中已存储有效数据。可选地,有效标识信息可以用一个数据位进行表示,例如,一个存储单元的有效标识信息为0时表示该存储单元中未存储有效数据,一个存储单元的有效标识信息为1时表示该存储单元中已存储有效数据。
在存储单元包括有效标识信息的情况下,所述控制单元301每访问一级缓存对应的存储单元,可以基于该级缓存对应的存储单元的有效标识信息,确定该级缓存是否命中。例如,在该级缓存对应的存储单元的有效标识信息指示该级缓存对应的存储单元已存储有效数据的情况下,可以确定该级缓存命中。又例如,在该级缓存对应的存储单元的有效标识信息指示该级缓存对应的存储单元未存储有效数据的情况下,可以确定该级缓存未命中。
其中,所述标识信息包括数据标识信息和地址标识信息,所述数据标识信息用于标识所述存储单元中是否存储数据,所述地址标识信息用于标识所述存储单元中存储的数据在内存中的存储地址。基于此,控制单元301每访问所述多级缓存中的其中一级缓存对应的存储单元,可以基于该级缓存对应的存储单元的数据标识信息和地址标识信息,确定该级缓存是否命中。
具体来说,在第一条件和第二条件均满足的情况下,确定该级缓存命中。在第一条件和第二条件中的至少一者不满足的情况下,确定该级缓存未命中。其中,所述第一条件为:该级缓存对应的存储单元的数据标识信息指示该级缓存对应的存储单元已存储数据;所述第二条件为:该级缓存对应的存储单元的地址标识信息指示该级缓存对应的存储单元中存储的数据在内存中的存储地址与访存请求所访问的内存地址一致。
由于缓存中的数据会被清除和替换,因此,某一级缓存对应的存储单元中存储的数据可能并非访存请求所请求的地址中的数据。例如,假设L1缓存对应的存储单元中原本存储了内存地址A1中的数据,但由于缓存L1缓存对应的存储单元已存满,因此,内存地址A1中的数据从L1缓存对应的存储单元中被清除掉,并被替换为内存地址A2中的数据。此时,如果访存请求访问的是内存地址A1中的数据,则由于L1缓存中并未存储内存地址A1中的数据,因此,L1缓存未命中。只有在L1缓存对应的存储单元中存储有数据,且L1缓存对应的存储单元中存储的数据为内存地址A1中的数据的情况下,才认为L1缓存命中。
在一些实施例中,所述控制单元301包括多个第一控制子单元,所述映射单元302包括多个第一映射子单元;每级缓存对应一个第一控制子单元和一个第一映射子单元;每级缓存对应的第一控制子单元用于将所述访存请求中携带的地址信息发送至该级缓存对应的第一映射子单元;每级缓存对应的第一映射子单元用于根据所述地址信息确定该级缓存对应的存储单元,以使该级缓存对应的第一控制子单元基于所述访存请求访问该级缓存对应的存储单元。
具体来说,每级缓存对应的第一映射子单元用于从所述地址信息中提取出该级缓存的索引信息,并将提取出的索引信息返回给该级缓存对应的第一控制子单元,以使该级缓存对应的第一控制子单元向该级缓存对应的存储单元发送所述访存请求。
进一步地,每级缓存对应的第一控制子单元在该级缓存未命中的情况下,还可以记录未命中状态,并将所述地址信息发送至下一级缓存对应的第一控制子单元;在获取到下一级缓存对应的第一控制子单元返回的数据的情况下,根据所述未命中状态,将下一级缓存对应的第一控制子单元返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元。每级缓存对应的第一控制子单元在该级缓存命中的情况下,还可以将该级缓存对应的存储单元中存储的数据返回至上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元。
参见图10,以缓存的层级数量等于3为例,则控制单元301包括第一控制子单元C1、C2和C3,映射单元302包括第一映射子单元M1、M2和M3。其中,第一控制子单元C1和第一映射子单元M1对应于L1缓存,第一控制子单元C2和第一映射子单元M2对应于L2缓存,第一控制子单元C3和第一映射子单元M3对应于L3缓存。在此基础上,第一控制子单元C1可以从执行单元接收访存请求,并获取该访存请求中的地址信息,将该地址信息发送至第一映射子单元M1,由第一映射子单元M1基于L1缓存的配置信息确定L1缓存的索引信息,并将L1缓存的索引信息返回给第一控制子单元C1。第一控制子单元C1基于L1缓存的索引信息确定L1缓存对应的存储单元,并基于该存储单元中存储的标识信息确定L1缓存是否命中。如果L1缓存命中,则第一控制子单元C1将L1缓存对应的存储单元中存储的数据返回至执行单元。如果L1缓存未命中,则第一控制子单元C1记录L1缓存的未命中状态,并将该地址信息发送至第一控制子单元C2。在获取到第一控制子单元C2返回的数据后,第一控制子单元C1根据L1缓存的未命中状态,将第一控制子单元C2返回的数据写入L1缓存对应的存储单元,并返回给执行单元。类似地,第一控制子单元C2在L2缓存命中的情况下,可以将L2缓存对应的存储单元中存储的数据返回第一控制子单元C1,以使第一控制子单元C1将获取到的数据写入L1缓存对应的存储单元,并返回执行单元。第一控制子单元C2在L2缓存未命中的情况下,可以记录L2缓存的未命中状态,将L3缓存返回的数据写入L2缓存对应的存储单元以及返回给L1缓存对应的存储单元。重复上述过程,直到某一级缓存命中,或者遍历完各级缓存。如果L3缓存仍未命中,则L3缓存对应的第一控制子单元C3可以根据访存请求中携带的内存地址访问所述内存地址,将该内存地址中的数据逐级返回到L3缓存、L2缓存和L1缓存,并返回给执行单元。
进一步地,配置信息中还有包括偏移量o,每级缓存对应的存储单元的地址可以基于该级缓存的索引信息与预设的偏移量共同确定。例如,可以对该级缓存的索引信息与预设的偏移量进行叠加,得到该级缓存对应的存储单元的地址,从而最终访问存储单元的地址是index+o。各级缓存对应的偏移量可以相同,也可以不同。偏移量o也可以有一个默认值,例如,偏移量o的默认值可以是0,且可以根据需求配置成其它值。参见图11,可以将偏移量配置成8,那么在index=addr[8:6]的情况下,可以访问的存储单元的地址范围为Set 8到Set 15。仍以L1缓存为例,偏移量为0时L1缓存对应的存储单元如虚线箭头所示,包括Set0到Set 7;偏移量为8时L1缓存对应的存储单元如实线箭头所示,包括Set 8到Set 15。
基于索引信息与偏移量确定存储单元的操作可以由映射单元302执行。具体来说,映射单元302可以将索引信息与预先存储的偏移量进行叠加,并将叠加后的索引信息返回给控制单元301,以使控制单元301向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求。
例如,假设各级缓存对应的偏移量相同,则映射单元302可以先将L1缓存的索引信息与预先存储的偏移量进行叠加,得到L1缓存对应的叠加索引信息,将L1缓存对应的叠加索引信息返回给控制单元301,以使控制单元301向L1缓存对应的存储单元发送访存请求。如果L1缓存命中,则不再向控制单元301返回L2缓存对应的叠加索引信息。如果L2缓存未命中,则映射单元302可以进一步将L2缓存的索引信息与预先存储的偏移量进行叠加,得到L2缓存对应的叠加索引信息,将L2缓存对应的叠加索引信息返回给控制单元301,以使控制单元301向L2缓存对应的存储单元发送访存请求,以此类推,直到某一级缓存命中。
在一些实施例中,所述访存请求由多个执行单元中的目标执行单元发送,不同的执行单元对应不同的偏移量。以执行单元是CPU为例,假设CPU的数量为2,两个CPU分别记为CPU1和CPU2,则CPU1和CPU2均可以发送访存请求,以访问相同或不同的内存地址。其中,CPU1和CPU2可以分别对应不同的偏移量,例如,CPU1对应的偏移量为0,CPU2对应的偏移量为2。在上述基础上,映射单元302可以将所述索引信息与目标执行单元对应的偏移量进行叠加。仍以L1缓存为例,假设在CPU1和CPU2发送的访存请求中,均满足index=addr[8:6],且CPU1对应的偏移量为0,CPU2对应的偏移量为8,则映射单元302在将索引信息index与CPU1对应的偏移量进行叠加后,得到L1缓存对应的存储单元为Set 0到Set 7;映射单元302在将索引信息index与CPU2对应的偏移量进行叠加后,得到L1缓存对应的存储单元为Set 8到Set 15。通过这种方式,可以为不同的执行单元划分不同的缓存空间,从而实现不同执行单元之间的缓存隔离,防止数据污染。
在一些实施例中,所述控制单元301包括多个第二控制子单元,所述映射单元包括多个第二映射子单元;每个执行单元对应至少一个第二控制子单元和至少一个第二映射子单元;每个执行单元对应的第二控制子单元,用于将该执行单元发送的访存请求中携带的地址信息发送至该执行单元对应的第二映射子单元;每个执行单元对应的第二映射子单元,用于根据所述地址信息确定所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元,以使所述执行单元对应的第二控制子单元基于所述访存请求访问所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元。
具体来说,每个执行单元对应的第二映射子单元可以从该执行单元发送的访存请求中携带的地址信息中提取出至少一级缓存的索引信息,并将提取出的索引信息返回给该执行单元对应的第二控制子单元。
参见图12,假设执行单元包括CPU1和CPU2,其中,CPU1对应第二控制子单元C00和第二映射子单元M00,CPU2对应第二控制子单元C11和第二映射子单元M11。以CPU1、第二控制子单元C00和第二映射子单元M00为例,CPU1可以将访存请求发送给第二控制子单元C00,第二控制子单元C00从CPU1的访存请求中提取出地址信息后发送给第二映射子单元M00,第二映射子单元M00基于预先存储的配置信息,从所述地址信息中提取出至少一级缓存的索引信息,并将提取出的索引信息返回给第二控制子单元C00,以使第二控制子单元C00向所述至少一级缓存中每级缓存对应的存储单元发送CPU1的访存请求。第二控制子单元C11和第二映射子单元M11的工作流程与上述第二控制子单元C00和第二映射子单元M00的工作流程类似,此处不再赘述。
进一步地,每个第二控制子单元均包括多个第一控制子单元,一个第二控制子单元包括的各个第一控制子单元均对应于同一个执行单元,且每级缓存对应一个第一控制子单元。参见图13,接着前面的例子,假设CPU1访问的L1缓存对应的存储单元包括Set 0和Set1,CPU1访问的L2缓存对应的存储单元包括Set 2和Set 3;CPU2访问的L1缓存对应的存储单元包括Set n-4和Set n-3,CPU1访问的L2缓存对应的存储单元包括Set n-2和Set n-1。则第二控制子单元C00可以包括第一控制子单元C4和第一控制子单元C5,第二映射子单元M00可以包括第一映射子单元M4和第一映射子单元M5。其中,第一控制子单元C4和第一映射子单元M4用于实现CPU1对Set 0和Set 1的访问,第一控制子单元C5和第一映射子单元M5用于实现CPU1对Set 2和Set 3的访问。第二控制子单元C11可以包括第一控制子单元C6和第一控制子单元C7,第二映射子单元M00可以包括第一映射子单元M6和第一映射子单元M7。其中,第一控制子单元C6和第一映射子单元M6用于实现CPU1对Set n-4和Set n-3的访问,第一控制子单元C7和第一映射子单元M7用于实现CPU1对Set n-2和Set n-1的访问。图中每个第一控制子单元和每个第一映射子单元的工作流程可参见图10所示的实施例,此处不再赘述。
本公开实施例具有以下优点:
(1)多级缓存系统中的各级缓存共享存储空间,减少了存储空间的浪费。
(2)多级缓存系统中的各级缓存的容量可根据需要动态调整。
(3)各级缓存共享存储空间时,可以实现不同执行单元的缓存之间的相互隔离。
在一些实施例中,本公开还提供一种访存请求处理装置,应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括:
控制单元,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,并基于所述访存请求访问所述每级缓存对应的存储单元。
参见图14,本公开实施例还提供一种存储装置,用于实现多级缓存;所述存储装置包括:
存储器1401,所述存储器包括多个存储单元,每级缓存对应至少一个存储单元;以及
访存请求处理装置1402。
本公开实施例中的访存请求处理装置1402可以采用上述任一实施例中的访存请求处理装置,访存请求处理装置1402的实施例可参见前述实施例,此处不再赘述。
本公开实施例还提供一种芯片,所述芯片包括本公开任一实施例所述的访存请求处理装置,或者本公开任一实施例所述的存储装置。
进一步地,所述芯片还包括执行单元,用于向所述控制单元发送访存请求。可选地,所述执行单元可以是CPU、GPU、NPU等各种类型的处理器。
本公开实施例还提供一种电子设备,包括本公开任一实施例所述的存储装置,或者本公开任一实施例所述的芯片,或者本公开任一实施例所述的板卡。
参见图15,本公开实施例还提供一种访存请求处理方法,应用于本公开任一实施例所述的访存请求处理装置中的控制单元301,所述方法包括:
步骤1501:响应于接收到访存请求,提取出所述访存请求中携带的地址信息;
步骤1502:将所述地址信息发送至所述映射单元,以使所述映射单元根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元;
步骤1503:基于所述访存请求访问所述每级缓存对应的存储单元。
在一些实施例中,所述至少一级缓存中每级缓存的索引信息由映射单元基于预先存储的配置信息从所述地址信息中提取,每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
在一些实施例中,至少两种配置信息确定出的索引信息所指示的各级缓存对应的存储单元的数量不同。
在一些实施例中,所述基于所述访存请求访问所述每级缓存对应的存储单元,包括:在当前级缓存未命中的情况下,记录未命中状态;在获取到下一级缓存返回的数据的情况下,根据所述未命中状态,将下一级缓存返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的存储单元;和/或在当前级缓存命中的情况下,将当前级缓存对应的存储单元中存储的数据返回处于当前级缓存之前的各级缓存对应的存储单元。
在一些实施例中,每个存储单元均包括标识信息,用于标识所述存储单元中是否存储有效数据;所述方法还包括:每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的标识信息,确定该级缓存是否命中。
在一些实施例中,所述标识信息包括数据标识信息和地址标识信息,所述数据标识信息用于标识所述存储单元中是否存储数据,所述地址标识信息用于标识所述存储单元中存储的数据在内存中的存储地址;所述每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的标识信息,确定该级缓存是否命中,包括:每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的数据标识信息和地址标识信息,确定该级缓存是否命中。
在一些实施例中,所述确定该级缓存是否命中,包括:在第一条件和第二条件均满足的情况下,确定该级缓存命中;和/或在第一条件和第二条件中的至少一者不满足的情况下,确定该级缓存未命中;所述第一条件为:该级缓存对应的存储单元的数据标识信息指示该级缓存对应的存储单元已存储数据;所述第二条件为:该级缓存对应的存储单元的地址标识信息指示该级缓存对应的存储单元中存储的数据在内存中的存储地址与访存请求所访问的内存地址一致。
在一些实施例中,所述控制单元包括多个第一控制子单元,所述映射单元包括多个第一映射子单元;每级缓存对应一个第一控制子单元和一个第一映射子单元;所述方法应用于所述多个第一控制子单元中的每个第一控制子单元;所述将所述地址信息发送至所述映射单元,包括:将所述访存请求中携带的地址信息发送至该级缓存对应的第一映射子单元,以使所述每级缓存对应的第一映射子单元根据所述地址信息确定该级缓存对应的存储单元;所述基于所述访存请求访问所述每级缓存对应的存储单元,包括:基于所述访存请求访问该级缓存对应的存储单元。
在一些实施例中,所述基于所述访存请求访问所述每级缓存对应的存储单元,包括:在该级缓存未命中的情况下,记录未命中状态,并将所述地址信息发送至下一级缓存对应的第一控制子单元;在获取到下一级缓存对应的第一控制子单元返回的数据的情况下,根据所述未命中状态,将下一级缓存对应的第一控制子单元返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元;和/或在该级缓存命中的情况下,将该级缓存对应的存储单元中存储的数据返回至上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元。
在一些实施例中,所述基于所述访存请求访问所述每级缓存对应的存储单元,包括:获取所述映射单元发送的叠加后的索引信息;基于叠加后的索引信息,向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求;其中,所述叠加信息基于待访问的至少一级缓存中每级缓存的索引信息与预先存储的偏移量进行叠加得到,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
在一些实施例中,所述访存请求由多个执行单元中的目标执行单元发送,不同的执行单元对应不同的偏移量;所述偏移量为所述目标执行单元对应的偏移量。
在一些实施例中,所述控制单元包括多个第二控制子单元,所述映射单元包括多个第二映射子单元;每个执行单元对应至少一个第二控制子单元和至少一个第二映射子单元;所述方法应用于所述多个第一控制子单元中的每个第一控制子单元;所述基于所述访存请求访问所述每级缓存对应的存储单元,包括:将该执行单元发送的访存请求中携带的地址信息发送至该执行单元对应的第二映射子单元,以使所述每个执行单元对应的第二映射子单元根据所述地址信息确定所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元;基于所述访存请求访问所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元。
在一些实施例中,所述访存请求中还包括字节标识信息,用于确定所述访存请求所请求的数据的有效字节。
在一些实施例中,所述地址信息中的第一数据位表示字节标识信息,第二数据位表示所述访存请求访问的内存地址,第三数据位表示待访问的至少一级缓存中每级缓存的索引信息,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
参见图16,本公开实施例还提供一种访存请求处理装置,应用于本公开任一实施例所述的访存请求处理装置中的控制单元,所述装置包括:
提取模块1601,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息;
发送模块1602,用于将所述地址信息发送至所述映射单元,以使所述映射单元根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元;
访存模块1603,用于基于所述访存请求访问所述每级缓存对应的存储单元。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,不再赘述。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
另外,本公开实施例还提供一种板卡,其包括了封装有至少一个上述芯片的封装结构,或者包括封装有至少一个上述存储装置的封装结构。参阅图17,其提供了一种示例性的板卡,上述板卡包括上述芯片1701,还可以包括其他的部件,包括但不限于:存储器1702、接口器件1703和处理器1704。
所述存储器1702与所述芯片封装结构内的芯片1701通过总线连接,用于存储数据,该存储器1702可以提供各级缓存共享的存储空间。所述存储器1702可以包括多组存储单元1702a,例如:DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)等。每一组所述存储单元1702a与所述芯片1701通过总线连接。
所述接口器件1703与所述芯片封装结构内的芯片1701电连接。所述接口器件1703用于实现所述芯片1701与外部设备D(例如:终端、服务器、摄像头等)之间的数据传输。在一个实施例中,所述接口器件1703可以是PCIE接口,还可以是网络接口、或者其他的接口,本公开不做限制。
所述处理器1704可以发送访存请求,以访问缓存或者内存。该访存请求可以发送到芯片1701,所述芯片1701可以采用前述任一实施例的芯片,该芯片1701中的控制单元在接收到访存请求之后,可以采用前述实施例中所描述的方式,访问至少一级缓存中每级缓存对应的存储单元(即存储单元1702a)。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机装置或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (22)
1.一种访存请求处理装置,其特征在于,应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括:
控制单元和映射单元;
所述控制单元,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,并将所述地址信息发送至所述映射单元;
所述映射单元,用于根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,以使所述控制单元基于所述访存请求访问所述每级缓存对应的存储单元。
2.根据权利要求1所述的访存请求处理装置,其特征在于,所述映射单元,用于:
基于预先存储的配置信息,从所述地址信息中提取出至少一级缓存中每级缓存的索引信息,并将提取出的索引信息返回给所述控制单元,以使所述控制单元基于所述索引信息向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求,每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
3.根据权利要求2所述的访存请求处理装置,其特征在于,至少两种配置信息确定出的索引信息所指示的各级缓存对应的存储单元的数量不同。
4.根据权利要求1至3任意一项所述的访存请求处理装置,其特征在于,所述控制单元还用于:
在当前级缓存未命中的情况下,记录未命中状态;
在获取到下一级缓存返回的数据的情况下,根据所述未命中状态,将下一级缓存返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的存储单元;
和/或
在当前级缓存命中的情况下,将当前级缓存对应的存储单元中存储的数据返回处于当前级缓存之前的各级缓存对应的存储单元。
5.根据权利要求4所述的访存请求处理装置,其特征在于,每个存储单元均包括标识信息,用于标识所述存储单元中是否存储有效数据;所述控制单元用于:
每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的标识信息,确定该级缓存是否命中。
6.根据权利要求5所述的访存请求处理装置,其特征在于,所述标识信息包括数据标识信息和地址标识信息,所述数据标识信息用于标识所述存储单元中是否存储数据,所述地址标识信息用于标识所述存储单元中存储的数据在内存中的存储地址;所述控制单元用于:
每访问一级缓存对应的存储单元,基于该级缓存对应的存储单元的数据标识信息和地址标识信息,确定该级缓存是否命中。
7.根据权利要求6所述的访存请求处理装置,其特征在于,所述控制单元用于:
在第一条件和第二条件均满足的情况下,确定该级缓存命中;和/或
在第一条件和第二条件中的至少一者不满足的情况下,确定该级缓存未命中;
所述第一条件为:该级缓存对应的存储单元的数据标识信息指示该级缓存对应的存储单元已存储数据;
所述第二条件为:该级缓存对应的存储单元的地址标识信息指示该级缓存对应的存储单元中存储的数据在内存中的存储地址与访存请求所访问的内存地址一致。
8.根据权利要求1至7任意一项所述的访存请求处理装置,其特征在于,所述控制单元包括多个第一控制子单元,所述映射单元包括多个第一映射子单元;每级缓存对应一个第一控制子单元和一个第一映射子单元;
每级缓存对应的第一控制子单元,用于将所述访存请求中携带的地址信息发送至该级缓存对应的第一映射子单元;
每级缓存对应的第一映射子单元,用于根据所述地址信息确定该级缓存对应的存储单元,以使该级缓存对应的第一控制子单元基于所述访存请求访问该级缓存对应的存储单元。
9.根据权利要求8所述的访存请求处理装置,其特征在于,每级缓存对应的第一控制子单元,还用于:
在该级缓存未命中的情况下,记录未命中状态,并将所述地址信息发送至下一级缓存对应的第一控制子单元;
在获取到下一级缓存对应的第一控制子单元返回的数据的情况下,根据所述未命中状态,将下一级缓存对应的第一控制子单元返回的数据写入当前级缓存对应的存储单元并返回给上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元;和/或
在该级缓存命中的情况下,将该级缓存对应的存储单元中存储的数据返回至上一级缓存对应的第一控制子单元,以使上一级缓存对应的第一控制子单元将下一级缓存对应的第一控制子单元返回的数据写入上一级缓存对应的存储单元。
10.根据权利要求1至9任意一项所述的访存请求处理装置,其特征在于,所述映射单元用于:
获取待访问的至少一级缓存中每级缓存的索引信息,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址;
将所述索引信息与预先存储的偏移量进行叠加;
将叠加后的索引信息返回给所述控制单元,以使所述控制单元基于叠加后的索引信息,向所述至少一级缓存中每级缓存对应的存储单元发送所述访存请求。
11.根据权利要求10所述的访存请求处理装置,其特征在于,所述访存请求由多个执行单元中的目标执行单元发送,不同的执行单元对应不同的偏移量;所述映射单元用于:
将所述索引信息与所述目标执行单元对应的偏移量进行叠加。
12.根据权利要求11所述的访存请求处理装置,其特征在于,所述控制单元包括多个第二控制子单元,所述映射单元包括多个第二映射子单元;每个执行单元对应至少一个第二控制子单元和至少一个第二映射子单元;
每个执行单元对应的第二控制子单元,用于将该执行单元发送的访存请求中携带的地址信息发送至该执行单元对应的第二映射子单元;
每个执行单元对应的第二映射子单元,用于根据所述地址信息确定所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元,以使所述执行单元对应的第二控制子单元基于所述访存请求访问所述执行单元待访问的至少一级缓存中每级缓存对应的存储单元。
13.根据权利要求1至12任意一项所述的访存请求处理装置,其特征在于,所述访存请求中还包括字节标识信息,用于确定所述访存请求所请求的数据的有效字节。
14.根据权利要求13所述的访存请求处理装置,其特征在于,所述地址信息中的第一数据位表示字节标识信息,第二数据位表示所述访存请求访问的内存地址,第三数据位表示待访问的至少一级缓存中每级缓存的索引信息,所述每级缓存的索引信息用于确定所述每级缓存对应的存储单元的地址。
15.一种访存请求处理装置,其特征在于,应用于多级缓存,所述多级缓存中的各级缓存共享同一块存储空间,所述存储空间包括多个存储单元,每级缓存对应至少一个存储单元;所述访存请求处理装置包括:
控制单元,用于响应于接收到访存请求,提取出所述访存请求中携带的地址信息,根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元,并基于所述访存请求访问所述每级缓存对应的存储单元。
16.一种存储装置,其特征在于,用于实现多级缓存;所述存储装置包括:
存储器,所述存储器包括多个存储单元,每级缓存对应至少一个存储单元;以及
权利要求1至15任意一项所述的访存请求处理装置。
17.一种芯片,其特征在于,所述芯片包括权利要求1至15任意一项所述的访存请求处理装置,或者权利要求16所述的存储装置。
18.根据权利要求17所述的芯片,其特征在于,所述芯片还包括:
执行单元,用于向所述控制单元发送访存请求。
19.一种板卡,其特征在于,所述板卡包括封装有至少一个如权利要求17或18所述芯片的封装结构,或者封装有至少一个如权利要求16所述存储装置的封装结构。
20.一种电子设备,其特征在于,包括如权利要求16所述的存储装置,或者如权利要求17或18所述的芯片,或者如权利要求19所述的板卡。
21.一种访存请求处理方法,其特征在于,应用于权利要求1至15任意一项所述的访存请求处理装置中的控制单元,所述方法包括:
响应于接收到访存请求,提取出所述访存请求中携带的地址信息;
将所述地址信息发送至所述映射单元,以使所述映射单元根据所述地址信息确定待访问的至少一级缓存中每级缓存对应的存储单元;
基于所述访存请求访问所述每级缓存对应的存储单元。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求21所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210772936.0A CN115033185A (zh) | 2022-06-30 | 2022-06-30 | 访存处理方法和装置、存储装置、芯片、板卡、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210772936.0A CN115033185A (zh) | 2022-06-30 | 2022-06-30 | 访存处理方法和装置、存储装置、芯片、板卡、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115033185A true CN115033185A (zh) | 2022-09-09 |
Family
ID=83128053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210772936.0A Pending CN115033185A (zh) | 2022-06-30 | 2022-06-30 | 访存处理方法和装置、存储装置、芯片、板卡、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033185A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166575A (zh) * | 2023-02-03 | 2023-05-26 | 摩尔线程智能科技(北京)有限责任公司 | 访存段长度的配置方法、装置、设备、介质和程序产品 |
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
-
2022
- 2022-06-30 CN CN202210772936.0A patent/CN115033185A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166575A (zh) * | 2023-02-03 | 2023-05-26 | 摩尔线程智能科技(北京)有限责任公司 | 访存段长度的配置方法、装置、设备、介质和程序产品 |
CN116166575B (zh) * | 2023-02-03 | 2024-01-23 | 摩尔线程智能科技(北京)有限责任公司 | 访存段长度的配置方法、装置、设备、介质和程序产品 |
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116719479B (zh) * | 2023-07-03 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
CN115033185A (zh) | 访存处理方法和装置、存储装置、芯片、板卡、电子设备 | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
US8108617B2 (en) | Method to bypass cache levels in a cache coherent system | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN109952565A (zh) | 内存访问技术 | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
US8028118B2 (en) | Using an index value located on a page table to index page attributes | |
US9063667B2 (en) | Dynamic memory relocation | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
CN108694133A (zh) | 用于即时高速缓存关联性的装置、方法和系统 | |
CN115249057A (zh) | 用于图形节点采样的系统和由计算机实现的方法 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
WO2022179294A1 (zh) | 数据预取的方法、设备及系统 | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
CN115794366A (zh) | 一种内存预取方法及装置 | |
CN107870736B (zh) | 支持大于4gb非线性闪存的方法及装置 | |
CN113721839B (zh) | 用于处理图数据的计算系统和存储分层方法 | |
CN112988074B (zh) | 一种存储系统管理软件适配方法及装置 | |
US11895043B2 (en) | Method for accessing system memory and associated processing circuit within a network card | |
US20240078036A1 (en) | Hybrid memory management systems and methods with in-storage processing and attribute data management | |
US11669455B2 (en) | Systems and methods for profiling host-managed device memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |