CN117009264B - 在soc中实现高速内存扩展的方法、系统、芯片及存储介质 - Google Patents
在soc中实现高速内存扩展的方法、系统、芯片及存储介质 Download PDFInfo
- Publication number
- CN117009264B CN117009264B CN202311175208.2A CN202311175208A CN117009264B CN 117009264 B CN117009264 B CN 117009264B CN 202311175208 A CN202311175208 A CN 202311175208A CN 117009264 B CN117009264 B CN 117009264B
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- controller
- ddr
- space
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000003139 buffering effect Effects 0.000 claims abstract description 4
- 238000013507 mapping Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 18
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 239000004606 Fillers/Extenders Substances 0.000 claims description 5
- 230000003993 interaction Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000008187 granular material Substances 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910000679 solder Inorganic materials 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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
Abstract
本申请公开了一种在SOC中实现高速内存扩展的系统,其包括:末级缓存控制器,与其连接的DDR控制器和CXL控制器;在DDR控制器上挂载有第一DDR存储器,在CXL控制器上挂载有所述第二DDR存储器;在第一DDR存储器中分配有一扩展缓存空间,用于缓存所述第二DDR存储器中的最近使用的数据;末级缓存控制器用于在接收到来自总线的对第二DDR存储器的访问请求后,判断对所述扩展缓存空间是否缓存命中,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;在未缓存命中时,通过CXL控制器直接访问所述第二DDR存储器。本申请还公开了相应的方法、装置及存储介质。实施本申请,可以实现高速内存空间扩展,并减少对扩展内存空间的访问延时。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种在SOC中实现高速内存扩展的方法、系统、芯片及存储介质。
背景技术
当前片上系统(System On Chip,SOC)芯片应用中,SOC芯片与DDR内存颗粒之间的通信是采用双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR)控制器和物理接口来实现的。通常来说,DDR内存颗粒并未直接集成在SOC芯片中,这些DDR内存颗粒通过焊接或者插槽与SOC芯片上的DDR控制器相连接。其中,DDR控制器是SOC芯片上的一个硬件模块,它负责管理和控制DDR内存颗粒的数据传输和操作。DDR控制器与DDR内存颗粒之间使用特定的物理接口(例如DDR5)进行通信。
在SOC芯片设计中,通常会设计一个或多个DDR控制器通道,每个通道可以连接一个或多个DDR内存颗粒。每个通道的数据宽度直接影响了内存带宽的大小。通常,SOC芯片的DDR控制器通道数是受限于芯片的大小和设计复杂度的。一般而言,SOC芯片的DDR控制器通道数不会超过8个。根据JEDEC DDR5规范,每个通道的最大支持容量是128GB。因此,一款SOC芯片的内存容量取决于其DDR控制器通道数和每个通道所支持的最大容量。通常情况下,SOC芯片的内存容量存在上限(很难超过1TB)。
在实际应用中,随着人工智能、云计算等应用的指数级增长,对服务器芯片的内存提出了更高的要求,不仅要求内存容量的指数级增加,同时内存访问延时对应用场景的计算性能有着密切的关系。故对内存进行高效扩展成为了必要。目前扩展内存的方式为:通过PCIe/CXL接口连接基于NVMe的固态硬盘(Solid State Drives,SSD)卡来增加内存。但现有这种内存扩展方式存在如下不足之处:所扩展的传统内存的延时开销很大,一般来说,DDR内存的延时非常低,通常在纳秒级别,而基于NVMe的SSD卡的延时相对较高,通常在微秒级别;同时这种扩展的内存需要软件参与搬运工作,其效率低,导致扩展后的读写性能较差,无法满足高实时性的应用场合。
发明内容
本申请所要解决的技术问题在于,提供一种在SOC中实现高速内存扩展的方法、系统、设备及存储介质。可以实现高速内存容量扩展,能降低对扩展内存访问时的延时。
为解决上述技术问题,作为本申请的一方面,提供一种在SOC中实现高速内存扩展的系统,其至少包括:
设置于SOC芯片中的与总线连接的末级缓存控制器(Last Level Cache,LLC),与所述末级缓存控制器连接的DDR控制器和计算快捷连接(Compute Express Link,CXL)控制器;
所述DDR控制器上挂载有第一DDR存储器,在所述CXL控制器上挂载有所述第二DDR存储器;在所述第一DDR存储器中分配有一扩展缓存空间,用于缓存所述第二DDR存储器中的最近使用的数据;
其中,所述末级缓存控制器用于在接收到来自总线的对第二DDR存储器的访问请求后,根据所述访问请求的目标地址判断对所述扩展缓存空间是否缓存命中,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;在未缓存命中时,通过CXL控制器直接访问所述第二DDR存储器,并更新所述扩展缓存空间中相应的缓存行。
其中,所述末级缓存控制器进一步包括:
LLC控制模块,用于接收来自总线对目标存储器的访问请求,并控制相应的访问操作;
LLC缓存行控制模块,用于记录第二DDR存储器中的扩展缓存空间中的每一个缓存行的状态信息,以及与第二DDR存储器之间的交互信息;
LLC标签数组模块,用于存储第二DDR存储器的目标地址在所述扩展缓存空间中的映射信息,其包含了扩展缓存空间每个缓存行的标签(Tag),并记录扩展缓存空间中每一缓存行的物理地址,以及缓存数据所对应的第二DDR存储器的目标地址;
LRU算法模块,用于根据LRU算法来确定扩展缓存空间需要替换新数据的缓存行。
其中,所述LLC控制模块进一步包括:
访问命令接收单元,用于接收来自总线的对所述第一DDR存储器或第二DDR存储器的访问请求;
目标存储器确定单元,用于根据所接收的访问请求中的目标地址,确定所述访问的目标存储器;
第一处理单元,在存储器确定单元所确定的目标存储器为第一DDR存储器时,通过所述DDR控制器对所述第一DDR存储器进行访问操作;
第二处理单元,用于在存储器确定单元所确定的目标存储器为第二DDR存储器时,根据所述目标地址进行映射获得标签信息,采用该标签信息在LLC标签数组模块中进行查询,以判断是否存在缓存命中;
第三处理单元,用于在判断到存在缓存命中时,在LLC标签数组模块中获得对应的扩展缓存空间的物理地址,通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作;
第四处理单元,用于在判断到未缓存命中时,通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;并根据所述LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;且在LLC标签数组模块中更新该缓存行的状态。
其中,所述LLC控制模块进一步包括:
第一设置单元,用于设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;
第二设置单元,用于设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cache line size)、组索引(Set index)以及路(Way)的具体值。
其中,所述CXL控制器通过一CXL交换器连接至少一DDR拓展器,每一DDR拓展器上连接至少一第二DDR存储器。
相应地,本申请的另一方面,还提供一种在SOC中实现高速内存扩展的方法,其在如前述系统中实现,所述方法至少包括如下步骤:
末级缓存控制器接收来自总线的对目标存储器的访问请求;
在目标存储器为第二DDR存储器时,根据所述访问请求的目标地址进行映射,并判断对所述扩展缓存空间是否缓存命中;
在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;
在未缓存命中时,通过CXL控制器直接对所述第二DDR存储器进行访问操作,并更新所述扩展缓存空间中相应的缓存行。
其中,所述末级缓存控制器接收来自总线的对目标存储器的访问请求,进一步包括:
根据所接收的访问请求中的目标地址,确定所述访问的目标存储器,所述目标存储器为第一DDR存储器或第二DDR存储器。
其中,进一步包括:
在存储器确定单元所确定的目标DDR存储器为第一DDR存储器时,通过所述DDR控制器根据所述目标地址对所述第一DDR存储器进行访问操作。
其中,在目标存储器为第二DDR存储器时,根据所述访问请求的目标地址进行映射,并判断对所述扩展缓存空间是否缓存命中,进一步包括:
根据预定的映射关系,获得所述目标地址对应的标签信息;
根据所述标签信息在LLC标签数组模块中进行查询,如果LLC标签数组模块的对应标签数组中记录有所述目标地址,则判定存在缓存命中,否则判定未缓存命中。
其中,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作,进一步包括:
在判断到存在缓存命中时,在LLC标签数组模块中获得所述目标地址对应的扩展缓存空间的物理地址;
通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作。
其中,在未缓存命中时,通过CXL控制器直接对所述第二DDR存储器进行访问操作,并更新所述扩展缓存空间中相应的缓存行,进一步包括:
通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;
并根据所述LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;
在LLC标签数组模块中更新该缓存行的状态。
其中,进一步包括:
设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;
设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cache line size)、组索引(Set index)以及路(Way)的具体值。
相应地,本申请的再一方面,还提供一种芯片,其部署有如前述的系统。
相应地,本申请的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如前述的方法的步骤。
实施本申请实施例,具有如下的有益效果:
本申请提供一种在SOC中实现高速内存扩展的方法、系统、设备及存储介质。通过借助CXL接口增加第二DDR存储器作为扩展内存,有效的解决目前内存空间不足的问题。同时将基础内存(即第一DDR存储器)进行分割,将其中的一部分作为扩展缓存空间,以存储第二DDR存储器中最近用到的数据,可以显著降低访问第二DDR存储器的时延;
本申请在SOC芯片中设置末级缓存控制器,对所述第一DDR存储器和第二DDR存储器进行管理,无需让上层软件参与扩展内存中数据的搬运,从而进一步提高效率。
实施本申请,可以便捷地实现高速内存空间扩展,并有效地减少整个内存空间的访问延时,及提高上层软件的便利性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本申请的范畴。
图1是现有技术中一个典型的SOC芯片与DDR存储器的连接结构示意图;
图2为本申请提供的一种在SOC中实现高速内存扩展的系统的一个实施例的结构示意图;
图3为图2中末级缓存控制器的结构示意图;
图4为图3中LLC控制模块的结构示意图;
图5为本申请提供的一种在SOC中实现高速内存扩展的方法的一个实施例的主流程示意图;
图6为本申请涉及的一个例子中进行读操作的原理示意图;
图7为本申请涉及的另一个例子中进行读操作的原理示意图;
图8为图7中涉及的LLC标签数组模块中记录的缓存线状态信息的示意图;
图9为本申请涉及的再一个例子中进行读操作的原理示意图;
图10为图9中涉及的LLC标签数组模块中记录的缓存线状态信息的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
如图2所示,示出了本申请提供的一种在SOC中实现高速内存扩展的系统的一个实施例的结构示意图;一并结合图3、图4所示,在本实施例中,所述系统至少包括:
设置于SOC芯片中的与总线连接的末级缓存控制器1,与所述末级缓存控制器1连接的DDR控制器2和CXL控制器3;更具体地,所述末级缓存控制器1与总线、DDR控制器2和CXL控制器3之间可以通过诸如高级可拓展接口(Advanced eXtensible Interface,AXI)或一致性集线器接口(Coherent Hub Interface,CHI)协议进行通信。
所述DDR控制器2上挂载有第一DDR存储器4,在所述CXL控制器3上挂载有所述第二DDR存储器5;在所述第一DDR存储器4中分配有一扩展缓存空间40,用于缓存所述第二DDR存储器5中的最近使用的数据;
其中,所述末级缓存控制器1用于在接收到来自总线的对第二DDR存储器5的访问请求后,根据所述访问请求的目标地址判断对所述扩展缓存空间40是否缓存命中,在缓存命中时,通过所述DDR控制器2对所述扩展缓存空间40进行访问操作;在未缓存命中时,通过CXL控制器3直接访问所述第二DDR存储器5,并更新所述扩展缓存空间40中相应的缓存行。
在具体的例子中,所述CXL控制器3通过一CXL交换器6连接至少一DDR拓展器7,每一DDR拓展器7上连接至少一第二DDR存储器5。
其中,CXL控制器负责管理CXL总线上的通信,并控制访问所连接的第二DDR存储器,其可以提供对CXL协议的支持,包括处理请求和响应,以及处理CXL命令和数据;管理与CXL交换器的通信,以便将数据传输到正确的第二DDR存储器或从第二DDR存储器中读取数据;还可以提供SoC和外部内存之间的数据转发和控制。
而CXL交换器6负责路由和转发内存访问请求。其功能包括诸如:将来自CXL 控制器的请求路由到相应的第二DDR存储器上;并提供硬件级别的内存地址映射,确保访问正确的第二DDR存储器,并支持对所连接的第二DDR存储器进行读取和写入操作。
而DDR拓展器7用于扩展SoC芯片的内存容量。其功能包括:提供额外的第二DDR存储器,以增加整体的内存容量,接收来自SoC芯片的内存访问请求,提供对连接的第二DDR存储器进行读取和写入操作。
可以理解的是,在所述SOC芯片中还包含有中央处理器(CPU)、计算子系统以及高速IO接口等功能部件,其非本申请的重点所在,故在此不进行详述。
具体地,如图2所示,所述末级缓存控制器1进一步包括:
LLC控制模块10,用于接收来自总线对目标存储器的访问请求,并控制相应的访问操作;
LLC缓存行控制模块11,用于记录第二DDR存储器中的扩展缓存空间中的每一个缓存行的状态信息(比如有效位、脏位等),以及与第二DDR存储器之间的交互信息;
LLC标签数组模块12,用于存储第二DDR存储器的目标地址在所述扩展缓存空间中的映射信息,其包含了扩展缓存空间每个缓存行对应的标签(Tag),并记录扩展缓存空间中每一缓存行的物理地址,以及缓存数据所对应的第二DDR存储器的目标地址;
例如在一个例子中,设置扩展缓存空间中每一缓存行大小是64字节,意味着每个缓存行可以存储64字节的数据。该扩展缓存空间被分为256个组(Set),每个缓存行具有一个标签(Tag),每个组(Set)中有4个缓存行,即4路(way)关联;对于每一个第二DDR存储器的各目标地址,可以预先设置其与扩展缓存空间中的映射关系,例如在一个例子中,可以通过Hash函数可以确定各目标地址属于哪个组(Set)。利用LLC标签数组模块12,可以将待请求的目标地址与其对应的组中的信息进行比较,进而判断是否命中缓存。例如,当要读取一个地址为0x100的数据时,Cache会使用Hash函数将该地址映射到特定的Set(如Set 1);可以理解的是,在其他例子中,也可以采用其他的映射关系。然后,在Set 1中四个缓存行中查找标签(Tag)与地址0x100是否匹配。如果匹配成功,表示命中缓存,如果标签不匹配,则表示缓存未命中。
LRU算法模块13,用于根据LRU算法来确定扩展缓存空间需要替换新数据的缓存行。具体地,LRU算法模块13中可以维护一个LRU链表,通过调整链表中节点的位置来实现数据的替换。LRU算法模块可以跟踪最近使用的缓存行,当缓存满时,优先替换最久未使用的缓存行,从而最大程度地保持第二DDR存储器中经常使用的数据在对应的扩展缓存空间中,提高缓存的命中率。
可以理解的是,在本申请的例子中,其中缓存行的具体数据存储于第一DDR存储器4的扩展缓存空间40中,而末级缓存控制器1可以管理扩展缓存空间40的状态及更新等工作。
更具体地,如图3所示,所述LLC控制模块10进一步包括:
访问命令接收单元100,用于接收来自总线的对所述第一DDR存储器或第二DDR存储器的访问请求;
目标存储器确定单元101,用于根据所接收的访问请求中的目标地址,确定所述访问的目标存储器;
第一处理单元102,在存储器确定单元所确定的目标存储器为第一DDR存储器时,通过所述DDR控制器对所述第一DDR存储器进行访问操作;
第二处理单元103,用于在存储器确定单元所确定的目标存储器为第二DDR存储器时,根据所述目标地址进行映射获得标签信息,采用该标签信息在LLC标签数组模块中进行查询,以判断是否存在缓存命中;
第三处理单元104,用于在判断到存在缓存命中(hit)时,在LLC标签数组模块中获得对应的扩展缓存空间的物理地址,通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作;
第四处理单元105,用于在判断到未缓存命中(miss)时,通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;并根据所述LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;且在LLC标签数组模块中更新该缓存行的状态;
设置单元106,用于设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;以及设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cacheline size)、组索引(Set index)以及路(Way)的具体值。
更具体地,在本申请中,末级缓存控制器可设置总缓存容量(Cache size)为零,则工作于非缓存模式;而工作于缓存模式时,其缓存容量(Cache size)为:Set index * Way* Cache line size。具体地,设置末级缓存控制器的工作模式可以通过在末级缓存控制器配置寄存器或控制寄存器来实现。
当末级缓存控制器工作于非缓存模式时,则第一DDR存储器中的扩展缓存空间不参与工作。所有的读写命令都会被直接绕过末级缓存控制器,传输到下游的DDR控制器和CXL的控制器,然后经过读写响应仲裁处理后上送。
当末级缓存控制器工作于缓存模式时,则第一DDR存储器的空间被分为两个部分,其中一部分(如低地址空间)为系统内存空间,可以进行直接访问操作;而另一部分(如高地址空间)作为扩展缓存空间,用于缓存第二DDR存储器中的经常被访问的数据。
在具体的例子中,扩展缓存空间中所缓存的是第二DDR存储器(即扩展DDR内存)的数据,与CPU缓存大小没有直接关联。同时为了更好的性能,在本申请的一些例子中,缓存行大小(Cache line size)可以灵活设置为:0.5MB、1MB、2MB…2iMB,其中i=-1,0,1,2,…,等可配置。
组索引(Set index)数量设置为1024。
路(Way)数量设置为2、4、…、2j,其中,j=0,1,2,3,4等可配置。
可以理解的是,在本申请中,末级缓存控制器采用了类缓存器(Cache)的结构,其与一般缓存器的不同之处在于,其缓存行数据是设置于第一DDR存储器的扩展缓存空间中。从而可以使本申请中的末级缓存控制器具备更多的设计灵活性。
后文将结合具体的例子对本申请的详细原理进行说明。
如图5所示,本申请还提供一种在SOC中实现高速内存扩展的方法,其在如前述图2至图4描述系统中实现。一并结合图6至图10所示,在本实施例中,所述方法至少包括如下步骤:
步骤S10,末级缓存控制器接收来自总线的对目标存储器的访问请求;
在具体的例子中,所述步骤S10进一步包括:
根据所接收的访问请求中的目标地址,确定所述访问的目标存储器,所述目标存储器为第一DDR存储器或第二DDR存储器。
其中,进一步包括:
在存储器确定单元所确定的目标DDR存储器为第一DDR存储器时,通过所述DDR控制器根据所述目标地址对所述第一DDR存储器进行访问操作。
步骤S11,在目标存储器为第二DDR存储器时,根据所述访问请求的目标地址进行映射,并判断对所述扩展缓存空间是否缓存命中;
在具体的例子中,所述步骤S11进一步包括:
根据预定的映射关系,获得所述目标地址对应的标签信息;
根据所述标签信息在LLC标签数组模块中进行查询,如果LLC标签数组模块的对应标签数组中记录有所述目标地址,则判定存在缓存命中,否则判定未缓存命中。
步骤S12,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;
在具体的例子中,所述步骤S12进一步包括:
在判断到存在缓存命中时,在LLC标签数组模块中获得所述目标地址对应的扩展缓存空间的物理地址;
通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作。
步骤S13,在未缓存命中时,通过CXL控制器直接对所述第二DDR存储器进行访问操作,并更新所述扩展缓存空间中相应的缓存行。
在具体的例子中,所述步骤S13进一步包括:
通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;
并根据所述LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;
在LLC标签数组模块中更新该缓存行的状态。
其中,进一步包括:
需要预先设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;
设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cache line size)、组索引(Set index)以及路(Way)的具体值。
下述结合具体的例子对本申请涉及的方法进行说明:
假设某SOC芯片中DDR控制器挂接的第一DDR存储器(基础内存)大小为64GB,CXL控制器挂接的第二DDR存储器(扩展内存)大小为512GB,若设置扩展缓存空间大小为4GB,那么该系统总内存大小为512+64-4=572GB。下述表1列出了一个例子中目标地址的分区信息表:
表1,目标地址分区信息表
当系统访问目标地址范围为0x0_0000_0000 ~ 0xe_ffff_ffff时,属于第一地址区域(Address region1),末级缓存控制器1会旁路(bypass)该传输,直接访问芯片DDR控制器所挂接第一DDR存储器的空间;
当系统访问地址范围为0xf_0000_0000 ~0x7e_ffff_ffff时,属于第二地址区域(Address region2),末级缓存控制器会先检查LLC标签数组模块12中的对应地址,看该地址空间是否缓存命中,若地址缓存命中,则该笔传输会访问DDR 控制器中挂接的第一DDR存储器的扩展缓存空间,因为该扩展缓存空间是被当作缓存线线;若地址未缓存命中,该笔传输会转去访问CXL Controller对应内存,同时访问返回的数据将会写入Cache空间,同时更新对应LLC_TAG的该地址Cache状态。
以下将分别使用不同的地址来举例说明整个过程:
实施例一
参见图6所示,当末级缓存控制器接收到的访问命令为读命令,其读目标地址为0x4_0000_0000,按上述表1描述,其属于第一地址区域,可以直接访问对应DDR控制器所连接的第一DDR存储器的内存空间,从该第一DDR存储器中读出相应的内容,并上送至总线上。
实施例二
参见图7所示,当末级缓存控制器接收到的访问命令为读命令,其读目标地址为0xf_1000_0000,按上述表1描述,其属于第二地址区域。此种情形,末级缓存控制器先检查LLC标签数组模块中是否存在缓存命中,这里为了叙述方便,特对扩展缓存空间的配置进行以下设定:
缓存线大小(Cache line size):1MB
路(Way)数量:4
组(Set)数量:256
在本例中,对读目标地址0xf_1000_0000,首先进行映射处理,在本实施例中采用的方法为:对地址按1MB cache line大小划分然后再求模,即:
(0xf_1000_1000/0x10_0000)%1024
获得标签索引(tag index)为256,末级缓存控制器将检查LLC标签数组模块index256对应way0~3内对应值,如图8所示,此时index256,way3对应地址与读目标地址匹配,所以认为该地址缓存命中。
所以末级缓存控制器将读取扩展内存空间中way3对应index256的实际访问地址(物理地址),即地址0xf_d000_0000。
此时,DDR控制器可以根据该地址0xf_d000_0000,从第一DDR存储器器的扩展缓存空间中读出相应缓存行的内容,并上传至总线上。
实施例三
请参图9所示,在步骤1中,当末级缓存控制器接收到的访问命令为读命令,其读目标地址为0x70_2000_0000,按上述表1描述,属于第二地址区域;在步骤2中,末级缓存控制器先检查LLC标签数组模块中是否存在缓存命中,这里为了叙述方便,特对扩展缓存空间的配置进行以下设定:
缓存线大小(Cache line size):1MB
路(Way)数量:4
组(Set)数量:256
在本例中,首先,对读目标地址0x70_2000_0000进行映射处理,获得其其对应的标签索引为512。
末级缓存控制器将检查LLC标签数组模块index512对应way0~3内对应值,假设此目标地址没有命中;
末级缓存控制器将依然更新LLC标签数组模块的状态,为图8所示,其中假设way0的index512是非有效状态,此时将目标地址与实际访问地址进行更新,其状态标示为0->1;其中,末级缓存控制器在缓存未命中的情况下仍然会更新LLC标签数组模块的状态数据,以记录地址的缓存状态,并提供后续的缓存操作。这样可以确保缓存一致性并优化后续的读取操作。
随后执行步骤3,末级缓存控制器发送读目标地址到CXL控制器,直接通过CXL控制器从第二DDR存储器中读取完整的一个缓存线大小的数据;
在步骤4、5中,将收到的读数据返回给上游总线;
并通过步骤6、7,将该读取的数据填充到第一DDR存储器的扩展缓存空间的对应位置上,此时完成整个传输操作,以保持扩展缓存空间中的数据为最新。
可以理解的是,上述以三个读操作命令的实例对本申请的方法进行介绍,对于写操作命令,同样也可以采用本申请提供的方法,本领域技术人员可以参照前述介绍的内容来实施。
相应地,本申请的再一方面,还提供一种芯片设备,其部署有如前述图2至图4描述的系统,更多的细节,可以参考前述对图2至图4的描述,在此不进行赘述。
相应地,本申请的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述图5至图10所描述的方法的步骤。更多细节,可以参考前述对图5至图10的描述,在此不进行赘述。
实施本申请实施例,具有如下的有益效果:
本申请提供一种在SOC中实现高速内存扩展的方法、系统、设备及存储介质。通过借助CXL接口增加第二DDR存储器作为扩展内存,有效的解决目前内存空间不足的问题。同时将基础内存(即第一DDR存储器)进行分割,将其中的一部分作为扩展缓存空间,以存储第二DDR存储器中最近用到的数据,可以显著降低访问第二DDR存储器的时延;
本申请在SOC芯片中设置末级缓存控制器,对所述第一DDR存储器和第二DDR存储器进行管理,无需让上层软件参与扩展内存中数据的搬运,从而进一步提高效率。
实施本申请,可以便捷地实现高速内存空间扩展,并有效地减少整个内存空间的访问延时,及提高上层软件的便利性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种在SOC中实现高速内存扩展的系统,其特征在于,至少包括:
设置于SOC芯片中的与总线连接的末级缓存控制器,与所述末级缓存控制器连接的DDR控制器和CXL控制器;
在所述DDR控制器上挂载有第一DDR存储器,在所述CXL控制器上挂载有第二DDR存储器;在所述第一DDR存储器中分配有一扩展缓存空间,用于缓存所述第二DDR存储器中的最近使用的数据;
其中,所述末级缓存控制器用于在接收到来自总线的对第二DDR存储器的访问请求后,根据所述访问请求的目标地址判断对所述扩展缓存空间是否缓存命中,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;在未缓存命中时,通过CXL控制器直接访问所述第二DDR存储器,并更新所述扩展缓存空间中相应的缓存行。
2.如权利要求1所述的系统,其特征在于,所述末级缓存控制器进一步包括:
LLC控制模块,用于接收来自总线对目标存储器的访问请求,并控制相应的访问操作;
LLC缓存行控制模块,用于记录第二DDR存储器中的扩展缓存空间中的每一个缓存行的状态信息,以及与第二DDR存储器之间的交互信息;
LLC标签数组模块,用于存储第二DDR存储器的目标地址在所述扩展缓存空间中的映射信息,其包含了扩展缓存空间每个缓存行的标签(Tag),并记录扩展缓存空间中每一缓存行的物理地址,以及缓存数据所对应的第二DDR存储器的目标地址;
LRU算法模块,用于根据LRU算法来确定扩展缓存空间需要替换新数据的缓存行。
3.如权利要求2所述的系统,其特征在于,所述LLC控制模块进一步包括:
访问命令接收单元,用于接收来自总线的对所述第一DDR存储器或第二DDR存储器的访问请求;
目标存储器确定单元,用于根据所接收的访问请求中的目标地址,确定所述访问的目标存储器;
第一处理单元,在存储器确定单元所确定的目标存储器为第一DDR存储器时,通过所述DDR控制器对所述第一DDR存储器进行访问操作;
第二处理单元,用于在存储器确定单元所确定的目标存储器为第二DDR存储器时,根据所述目标地址进行映射获得标签信息,采用该标签信息在LLC标签数组模块中进行查询,以判断是否存在缓存命中;
第三处理单元,用于在判断到存在缓存命中时,在LLC标签数组模块中获得对应的扩展缓存空间的物理地址,通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作;
第四处理单元,用于在判断到未缓存命中时,通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;并根据所述LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;且在LLC标签数组模块中更新该缓存行的状态。
4.如权利要求3所述的系统,其特征在于,所述LLC控制模块进一步包括:
设置单元,用于设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;以及设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cache linesize)、组索引(Set index)以及路(Way)的具体值。
5.如权利要求1至4任一项所述的系统,其特征在于,所述CXL控制器通过一CXL交换器连接至少一DDR拓展器,每一DDR拓展器上连接至少一第二DDR存储器。
6.一种在SOC中实现高速内存扩展的方法,其在如权利要求1至5任一项所述系统中实现,其特征在于,所述方法至少包括如下步骤:
接收来自总线的对目标存储器的访问请求;
在目标存储器为第二DDR存储器时,根据所述访问请求的目标地址进行映射,并判断对所述扩展缓存空间是否缓存命中;
在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作;
在未缓存命中时,通过CXL控制器直接对所述第二DDR存储器进行访问操作,并更新所述扩展缓存空间中相应的缓存行。
7.如权利要求6所述的方法,其特征在于,所述末级缓存控制器接收来自总线的对目标存储器的访问请求,进一步包括:
根据所接收的访问请求中的目标地址,确定所述访问的目标存储器,所述目标存储器为第一DDR存储器或第二DDR存储器。
8.如权利要求7所述的方法,其特征在于,进一步包括:
在存储器确定单元所确定的目标DDR存储器为第一DDR存储器时,通过所述DDR控制器根据所述目标地址对所述第一DDR存储器进行访问操作。
9.如权利要求7所述的方法,其特征在于,在目标存储器为第二DDR存储器时,根据所述访问请求的目标地址进行映射,并判断对所述扩展缓存空间是否缓存命中,进一步包括:
根据预定的映射关系,获得所述目标地址对应的标签信息;
根据所述标签信息在LLC标签数组模块中进行查询,如果LLC标签数组模块的对应标签数组中记录有所述目标地址,则判定存在缓存命中,否则判定未缓存命中。
10.如权利要求9所述的方法,其特征在于,在缓存命中时,通过所述DDR控制器对所述扩展缓存空间进行访问操作,进一步包括:
在判断到存在缓存命中时,在LLC标签数组模块中获得所述目标地址对应的扩展缓存空间的物理地址;
通过所述DDR控制器对所述扩展缓存空间的对应的物理地址进行访问操作。
11.如权利要求9所述的方法,其特征在于,在未缓存命中时,通过CXL控制器直接对所述第二DDR存储器进行访问操作,并更新所述扩展缓存空间中相应的缓存行,进一步包括:
通过CXL控制器直接对所述第二DDR存储器中的目标地址进行访问操作;
并根据所述末级缓存控制器中的LRU算法模块,将所述目标地址中的访问内容写入所述扩展缓存空间中相应的缓存行中;
在LLC标签数组模块中更新该缓存行的状态。
12.如权利要求6至11任一项所述的方法,其特征在于,进一步包括:
设置末级缓存控制器的工作模式,所述工作模式包括:缓存模式、非缓存模式;
设置在缓存模式下,所述扩展缓存空间对应的缓存行大小(Cache line size)、组索引(Set index)以及路(Way)的具体值。
13.一种芯片,其特征在于,部署有如权利要求1至5任一项所述的系统。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求6至12中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175208.2A CN117009264B (zh) | 2023-09-13 | 2023-09-13 | 在soc中实现高速内存扩展的方法、系统、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175208.2A CN117009264B (zh) | 2023-09-13 | 2023-09-13 | 在soc中实现高速内存扩展的方法、系统、芯片及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117009264A CN117009264A (zh) | 2023-11-07 |
CN117009264B true CN117009264B (zh) | 2023-12-19 |
Family
ID=88571180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311175208.2A Active CN117009264B (zh) | 2023-09-13 | 2023-09-13 | 在soc中实现高速内存扩展的方法、系统、芯片及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117009264B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858146A (zh) * | 2022-11-09 | 2023-03-28 | 阿里巴巴(中国)有限公司 | 内存扩展系统和计算节点 |
CN115861022A (zh) * | 2021-09-24 | 2023-03-28 | 英特尔公司 | 具有地址排序的图形处理器存储器访问体系结构 |
CN116401043A (zh) * | 2023-02-28 | 2023-07-07 | 深圳华为云计算技术有限公司 | 一种计算任务的执行方法和相关设备 |
CN116501140A (zh) * | 2023-06-20 | 2023-07-28 | 苏州浪潮智能科技有限公司 | 内存模组以及服务器的内存扩展板卡 |
CN116680214A (zh) * | 2023-05-08 | 2023-09-01 | 阿里巴巴(中国)有限公司 | 一种数据访问方法、可读存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210200667A1 (en) * | 2019-12-26 | 2021-07-01 | Intel Corporation | Memory thin provisioning using memory pools |
-
2023
- 2023-09-13 CN CN202311175208.2A patent/CN117009264B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861022A (zh) * | 2021-09-24 | 2023-03-28 | 英特尔公司 | 具有地址排序的图形处理器存储器访问体系结构 |
CN115858146A (zh) * | 2022-11-09 | 2023-03-28 | 阿里巴巴(中国)有限公司 | 内存扩展系统和计算节点 |
CN116401043A (zh) * | 2023-02-28 | 2023-07-07 | 深圳华为云计算技术有限公司 | 一种计算任务的执行方法和相关设备 |
CN116680214A (zh) * | 2023-05-08 | 2023-09-01 | 阿里巴巴(中国)有限公司 | 一种数据访问方法、可读存储介质及电子设备 |
CN116501140A (zh) * | 2023-06-20 | 2023-07-28 | 苏州浪潮智能科技有限公司 | 内存模组以及服务器的内存扩展板卡 |
Also Published As
Publication number | Publication date |
---|---|
CN117009264A (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10031857B2 (en) | Address translation services for direct accessing of local memory over a network fabric | |
KR100970229B1 (ko) | 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US6049847A (en) | System and method for maintaining memory coherency in a computer system having multiple system buses | |
US5897656A (en) | System and method for maintaining memory coherency in a computer system having multiple system buses | |
US7669018B2 (en) | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer | |
US7117310B2 (en) | Systems and methods for cache synchronization between redundant storage controllers | |
KR101497002B1 (ko) | 스누프 필터링 메커니즘 | |
US9639481B2 (en) | Systems and methods to manage cache data storage in working memory of computing system | |
US6343344B1 (en) | System bus directory snooping mechanism for read/castout (RCO) address transaction | |
US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
WO2012116369A2 (en) | Apparatus, system, and method for managing contents of a cache | |
KR20050070012A (ko) | 통합 디렉토리 및 프로세서 캐쉬를 구비한 컴퓨터 시스템 | |
CN106843772A (zh) | 一种基于一致性总线扩展非易失内存的系统及方法 | |
TWI393050B (zh) | 促進多重處理器介面之板內建快取記憶體系統之記憶體裝置及方法及使用其之電腦系統 | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
JPH09259036A (ja) | ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法 | |
US8402198B1 (en) | Mapping engine for a storage device | |
CN102521161B (zh) | 一种数据的缓存方法、装置和服务器 | |
CN117009264B (zh) | 在soc中实现高速内存扩展的方法、系统、芯片及存储介质 | |
JP2002140232A (ja) | マルチプロセッサシステム及びキャッシュを制御する方法 | |
CN109983444A (zh) | 具有不同高速缓存结构和支持对不同高速缓存结构的并发查找的存储器控制器的多级系统存储器 | |
CN111209227B (zh) | 数据处理系统 | |
EP4328755A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages | |
CN117806570B (zh) | 在线内存扩展方法、装置、设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |