CN117873917A - 一种缓存系统、访问请求处理方法、芯片及电子设备 - Google Patents
一种缓存系统、访问请求处理方法、芯片及电子设备 Download PDFInfo
- Publication number
- CN117873917A CN117873917A CN202311803769.2A CN202311803769A CN117873917A CN 117873917 A CN117873917 A CN 117873917A CN 202311803769 A CN202311803769 A CN 202311803769A CN 117873917 A CN117873917 A CN 117873917A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- write request
- cache line
- data block
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000000034 method Methods 0.000 claims description 35
- 238000011144 upstream manufacturing Methods 0.000 claims description 28
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000004075 alteration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F12/0877—Cache access modes
-
- 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
技术领域
本公开涉及缓存技术领域,尤其涉及一种缓存系统、访问请求处理方法、芯片及电子设备。
背景技术
Cache即缓存也称高速缓冲,将Cache部署在上游设备和下游存储器之间,同时将下游存储器中的部分数据也存储在Cache中,上游设备可以通过访问Cache读写数据以避免直接访问下游存储器,因此可以提升读写效率。
在Cache的使用场景中,如果上游设备发送的读写请求没有在Cache中命中,则涉及是否需要根据该读写请求在Cache中进行Cacheline的分配。其中的一种策略为写分配但是读不分配,在这种策略下,目前需要占用Cache中的空间较多,且读数据的操作较为繁琐。
发明内容
本公开的目的是提供一种缓存系统、访问请求处理方法、芯片及电子设备,以解决读数据的操作繁琐以及在缓存中占用空间较多的问题。
根据本公开的一个方面,提供一种缓存系统,包括缓存控制器、缓存以及特定寄存器;所述缓存控制器被配置为针对所述缓存执行写分配以及读不分配的策略;
缓存控制器,用于针对每个写请求分别执行以下操作:
将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
在一种实施方式中,所述缓存控制器,还用于在所述写请求命中缓存中的任一缓存行,且该缓存行中存储有数据的情况下,将所述缓存行中除所述写请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
在一种实施方式中,所述缓存控制器,还用于在所述写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将所述目标缓存行中的数据写回到下游存储器中;将所述目标缓存行确定为所述写请求对应的缓存行。
在一种实施方式中,所述缓存控制器,具体用于将所述写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。
在一种实施方式中,所述缓存控制器,具体用于将所述写请求对应的全部数据块从特定寄存器和上游设备获取,并发送到下游存储器。
在一种实施方式中,所述缓存控制器,还用于将该写请求对应的任一数据块写入到所述特定寄存器时,将所述数据块写入到所述写请求在缓存中命中的缓存行。
在一种实施方式中,所述缓存控制器,还用于在该写请求对应的全部数据块均为非部分有效数据块的情况下,将该写请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
在一种实施方式中,所述特定寄存器中还包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;
所述缓存控制器,还用于在将写请求对应的任一数据块写入到所述特定寄存器后,利用所述数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用所述数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
在一种实施方式中,缓存控制器,还用于针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理所述读请求。
根据本公开的第二个方面,提供一种访问请求处理方法,应用于缓存系统中的缓存控制器,所述缓存系统还包括缓存以及特定寄存器;所述缓存控制器被配置为针对所述缓存执行写分配以及读不分配的策略;所述方法包括:
针对每个写请求分别执行以下操作:
将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
在一种实施方式中,方法还包括:
在所述写请求命中缓存中的任一缓存行,且该缓存行中存储有数据的情况下,将所述缓存行中除所述写请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
在一种实施方式中,方法还包括:在所述写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将所述目标缓存行中的数据写回到下游存储器中;将所述目标缓存行确定为所述写请求对应的缓存行。
在一种实施方式中,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
将所述写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。
在一种实施方式中,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
从特定寄存器和上游设备获取所述写请求对应的全部数据块,并发送到下游存储器。
在一种实施方式中,方法还包括:
将该写请求对应的任一数据块写入到所述特定寄存器时,将所述数据块写入到所述写请求在缓存中命中的缓存行。
在一种实施方式中,方法还包括:在该写请求对应的全部数据块均为非部分有效数据块的情况下,将该写请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
在一种实施方式中,所述特定寄存器中还包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;方法还包括:
在将写请求对应的任一数据块写入到所述特定寄存器后,利用所述数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用所述数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
在一种实施方式中,方法还包括:针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理所述读请求。
根据本公开的第三个方面提供一种芯片,包括第一方面任一实施方式的的缓存系统。
根据本公开的第四个方面提供一种电子设备,包括第三方面的芯片。
附图说明
图1为本公开一个实施例提供AXI地址映射示意图;
图2为本公开一个实施例提供缓存系统的结构示意图;
图3为本公开一个实施例提供的特定寄存器的结构示意图;
图4为本公开一个实施例提供的一种访问请求处理方法的流程示意图;
图5为本公开一个实施例提供的另一种访问请求处理方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
在Cache的使用场景中,上游设备通常以AXI(Advanced eXtensible Interface)总线传输的方式访问Cache,如图1所示,AXI地址会被分为如图的几部分区域,字节偏移,块偏移,索引,以及TAG。字节偏移代表了读取一个数据的大小,称为一个数据块的大小,如字节偏移地址为4bits,则代表一个数据块大小为16Byte。块偏移代表要读取一个Cacheline即缓存行中的哪个数据块。索引Index可以理解为访问请求对应哪条Cacheline或缓存中的哪个组(set),其余高位比特代表缓存行的TAG,用于确定访问请求是否命中,具体的由于缓存中每个缓存行都对应有TAG标记,因此可以利用AXI地址中的TAG与缓存行的TAG进行匹配从而确定是否命中。缓存行的长度通常设置为数据块长度的N倍,例如在缓存中,一个缓存行的长度为128Byte,则一个缓存行可以存储8个数据块。
上游设备发过来访问请求的突发长度(burst)不是固定为零的,即一个访问请求可能向一个缓存行中读写多个数据块的数据。例如,如果一个写请求的突发长度为2,则需要向一个缓存行中写两个数据块的数据,又例如,如果一个读请求的突发长度为8,则需要从一个缓存行中读取8个数据块。访问请求的突发长度通常不大于缓存行可存储的数据块的数量。
另外,写请求中对应的数据块可能不全是有效的,即对应的数据块可能是部分有效的,例如某个写请求的突发长度为2,则需要向一个缓存行中写两个数据块的数据,其中有一个数据块是部分有效的,另一个数据块是非部分有效的。部分有效可以理解为该数据块中只有部分字节的数据是真实的。在AXI总线中通常用STROBE信号表示数据块中某个字节的数据是否有效,即上游设备在发送访问请求时,会针对访问请求中的数据块也一同发送STROBE信号。如果AXI总线的数据位宽是128-bit即16Byte(字节),一个数据块的大小即为16Byte,则STROBE信号需要16-bit,每个bit用于标识数据块的一个字节是否有效。例如STROBE信号中的一个bit为1则表示对应的字节为有效,一个bit为0则表示对应的字节为无效,那么当STROBE信号不全为1的情况下,则确定对应的数据块是部分有效的,如果全为1则表示对应的数据块是全有效的,即是非部分有效的。如无特殊说明,本公开的下文中将STROBE信号称为数据有效标识。
在使用缓存的场景中,如果上游设备发送的读写请求没有在缓存中命中,则涉及是否需要根据该读写请求在缓存中进行缓存行的分配。
如果上游设备需要从当前缓存中快速读数据,而避免去下游存储器中(下级缓存或内存)中获取数据,那么通常采用读写都分配的策略。读分配是指在上游设备发起读请求时,如果读请求在该缓存中未命中,则分配一个缓存行,从下级缓存或内存中读取数据放到分配的缓存行中,然后从这个缓存行给上游设备请求返回数据;写分配是上游发起写请求时,如果写请求在该缓存中未命中,则分配一个缓存行,从下级缓存或内存中读取该缓存行对应的数据放到分配的缓存行中,利用写请求的数据对分配的缓存行中的数据进行改写。
在这种策略下,当缓存控制器在接收到某个写请求,且该写请求对应有部分有效的数据块,针对该写请求执行写操作时,如果写请求在该缓存中未命中,则分配一个缓存行,,从下级缓存或内存中读取该缓存行对应的数据放到分配的缓存行中,并基于部分有效的数据块对该缓存行中的数据进行改写,即在缓存中存储的是全有效的数据块。
如果上游设备只需要将数据写到当前缓存中,而不期望从当前缓存中能够直接读取到数据。例如,在下游存储器读取速度较快但写较慢时通常采用写分配读不分配的策略,如果进行读分配反而会浪费处理资源。
在采用写分配读不分配的策略下,在上游设备发起读请求时,如果读的时候,读请求在该缓存中未命中,则不分配缓存行,直接将读请求发给下级缓存或内存,将下级缓存或内存中返回的读数据直接返回给上游设备。上游发起写请求时,如果写请求在该缓存中未命中,则分配一个缓存行,将写请求的数据写入到分配的缓存行中。
在这种策略下,在接收到某个写请求,且该写请求对应有部分有效的数据块,如果写请求在该缓存中未命中,则直接将部分有效的数据块加上数据有效标识(STROBE信息)存储到当前缓存中。等到需要将数据写到下游存储器中时,再根据数据有效标识和下游存储器中的数据对该部分有效的数据块进行重组,得到全有效的数据块再存储到下游存储器中。但是,如果某个读请求命中当前缓存中的部分有效的数据块时,则需要从当前缓存中以及下游存储器中获取对应的数据,根据数据有效标识重组后返回给上游设备。
可见,在写分配读不分配的策略中,针对部分有效的数据块,读的操作较繁琐,读取效率较低,且需要在缓存中存储数据有效标识,也占用了缓存的存储资源。
为了解决上述问题,如图2所示,本公开提出一种缓存系统,包括缓存控制器210、缓存220以及特定寄存器230,其中缓存控制器210被配置为针对缓存220执行写分配以及读不分配的策略;
缓存控制器210,用于针对每个写请求分别执行以下操作:
将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
采用上述方式,一个写请求往往对应一个或多个数据块,在需要将写请求的数据块写入到缓存的时候,将数据块写入到特定寄存器中并判断数据块是否部分有效,如果是部分有效的话,则直接将写请求对应的全部数据块都写入到下游存储器中,并将该写请求对应的缓存行配置为失效,这样在处理读请求的时候可以直接从下游存储器中读取到完整的数据块简化了读操作。同时,由于无须在缓存中存储数据有效标识,因此节约了缓存的存储空间。另外,由于寄存器的读写较快,功耗较低,因此将数据写入到寄存器中并不会消耗较多的功耗和时间。
可以理解的是,如果缓存是多级缓存,则下游存储器可以是下级缓存,如果是单级缓存,则下游存储器可以为内存。
上述过程中缓存控制器在接收到写请求后,需要将写请求写入到特定寄存器中,此外,为了执行写分配,还需要判断写请求是否命中缓存中的任一缓存行。
如果命中任一缓存行,则缓存控制器,还用于将该写请求对应的任一数据块写入到特定寄存器时,也将数据块写入到写请求在缓存中命中的缓存行。即将数据块同时写入至特定寄存器以及被命中的缓存行,这样如果该写请求对应的数据块均为非部分有效的话,在针对所有数据块判断是否为部分有效的同时,也将数据块都存储到了缓存中,避免将写请求对应的数据块写入到缓存的时间消耗较多。
例如,访问请求共对应3个数据块,分别为数据块1、数据块2、数据块3,写入顺序为数据块1-数据块2-数据块3,则将数据块1分别同时写入至特定寄存器以及被命中的缓存行,并判断数据块1是否是部分有效的数据块,如果不是,则继续将数据块2分别同时写入至特定寄存器以及被命中的缓存行,并判断数据块2是否是部分有效的数据块,以此类推。当然,如果判断数据块1是部分有效数据的情况下,就将写请求命中的缓存行配置为失效了,并且将写请求对应的全部数据块从所述特定寄存器发送到下游存储器,因此无须继续向缓存行中继续写入数据块2和数据块3了,而此时由于特定寄存器中存储了数据块1,因此可以将数据块1从特定寄存器获取,并发送到下游存储器,数据块2和数据块3可以是先存储到特定寄存器,然后将数据块2和数据块3从特定寄存器获取,并发送到下游存储器,或者不将数据块2和数据块3存储到特定寄存器,直接从上游设备获取,并发送到下游存储器。由于缓存一般是由sram实现的,从sram取数,会有一个时钟周期的延时,从寄存器中取数则没有延时,并且对sram的操作相对于对寄存器进行操作功耗也较高,采用这种方式,从寄存器中获取数据块写入到下游存储器可以提高效率同时也可以降低功耗。此外,sram的接口包括时钟clk,读接口addr_r,ren,rdata和写接口addr_w,wen,wdata。上游总线一般也是有独立的读接口和写接口,比如AXI总线,可以并行做独立的读写访问,在有部分有效数据块且需要将数据发送至下游存储器时,如果从缓存即sram中读出来,发送至下游存储器,从sram里面读数据的时候,就需要占用sram的读接口,这样缓存就没法响应上游总线的读请求了,而使用特定寄存器,就不需要从缓存读数据出来再往下游存储器里面写,这样缓存的读接口是空闲的,可以响应上游总线的读请求。
另外,考虑到在某个数据块是部分有效的数据块,则需要将该读请求对应的全部数据块都发送至下游存储器,如果将数据块同时写入至特定寄存器以及被命中的缓存行,并且有某个数据块部分有效的情况下,针对访问请求对缓存行的写入操作则是无用的,也是一种处理资源的浪费。例如访问请求共对应3个数据块,分别为数据块1、数据块2、数据块3,写入顺序数据块1-数据块2-数据块3,其中数据块3是部分有效的数据块,数据块1、数据块2是非部分有效的数据块,那么缓存控制器在数据块1、数据块2写入到缓存行后,在针对数据块3进行判断后,确定数据块3是部分写有效数据,则需要将数据块1-数据块3都发送至下游存储器,并将写入数据块1-数据块3的缓存行无效掉。
为了避免处理资源的浪费,在写请求命中任一缓存行的情况下,缓存控制器,还可以不将数据块同时写入至特定寄存器以及被命中的缓存行,而是在写请求对应的全部数据块均为非部分有效数据块的情况下,将该访问请求对应的全部数据块写入到写请求对应的缓存中的缓存行中。沿用上述的例子,即先将数据块1、数据块2、数据块3依次写入至特定寄存器,在确定三个数据块都为非部分有效的数据块后,再将三个数据块从特定寄存器写入至写请求对应的缓存行中。如果某一个数据块是部分有效的数据,则不需要将数据块写入至缓存行中,避免了处理资源的浪费。
上文描述了在写请求命中缓存行后,如何针对写请求执行写操作,另外,如果写请求命中缓存行,则意味着缓存行中存储有部分数据,缓存控制器将写请求在所述缓存中对应的缓存行配置为失效,将写请求对应的全部数据块发送到下游存储器后,还需要在写请求命中缓存中的任一缓存行且该缓存行中存储有数据的情况下,将该缓存行中除该访问请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
仍以一个缓存行中可以存储8个数据块为例,如果被命中的缓存行中已存储了缓存行1-缓存行8,八个数据块。写请求共对应3个数据块,分别为数据块1、数据块2、数据块3,写入顺序为数据块1-数据块2-数据块3。如果访问请求对应的某一个数据块,例如数据块3是部分有效的数据,数据块1和数据块2是非部分有效数据,则需要数据块将1-3从特定寄存器写入到下游存储器中,同时还需将缓存行中的数据块3-8写入到下游存储器中。
又或者,一个缓存行中可以存储8个数据块为例,如果被命中的缓存行中已存储了缓存行1、缓存行2、缓存块8,三个数据块。写请求共对应3个数据块,分别为数据块1、数据块2、数据块3,写入顺序为数据块1-数据块2-数据块3。数据块3是部分有效的数据,数据块1和数据块2是非部分有效数据,则需要将数据块1-3从特定寄存器写入到下游存储器中,同时还需将缓存行中的数据块8写入到下游存储器中。
采用这种方式,将写请求对应的全部数据块发送到下游存储器,将缓存中除了写请求对应的非部分有效数据块以外的其他数据块一起写回到了下游存储器,同时将该缓存行配置为失效,相当于将该缓存行中的数据刷新到了下游存储器中,该缓存行可以用于其他写请求的缓存行分配。另外,将缓存行中部分有效数据块对应的数据块如上述数据块3也发送至下游存储器,这样下游存储器就可以基于缓存中的数据块3和特定存储器中的数据块3进行重组,得到全有效的数据块3。
上文中描述了在写请求命中缓存行后,如何针对写请求执行写操作,以及在命中缓存行的情况下如何将缓存行中的数据写回至下游存储器,可以理解的是,如果写请求未命中缓存行,但是缓存中还有空闲的缓存行能够分配给该写请求,缓存控制器也可以采用上述方式针对写请求执行写操作,即可以将数据块同时写入至特定寄存器以及分配的缓存行,或者在写请求对应的全部数据块均为非部分有效数据块的情况下,将该访问请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
另外,缓存控制器,还用于在写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将目标缓存行中的数据写回到下游存储器中;将目标缓存行确定为写请求对应的缓存行。
该预设的替换算法可以是采用先进先出、近期最少使用等算法,本公开对此不进行限定。在确定了目标缓存行后,为了能够让该缓存行存储写请求对应的数据块,因此需要将目标缓存行中的数据写回到下游存储器中,在将目标缓存行中的数据全部写回到下游存储器后,就可以将该缓存行分配给本次的写请求。
由于在将目标缓存行中的数据写回到下游存储器中的同时,缓存控制器还在将该写请求对应的数据块写入到特定寄存器中,并且在判断每个数据块是否部分有效。即缓存控制器一边将写请求对应的数据块写入特定寄存器,一边等待写分配。
如果已经分配到缓存行,则将数据块从特定寄存器写入分配的缓存行(执行同时写入至特定寄存器以及分配的缓存行的策略),或者在写请求对应的全部数据块均为非部分有效数据块的情况下,将该访问请求对应的全部数据块写入到分配的缓存行中;如果已分配或等待分配的过程中,发现写请求对应的数据块存在部分写有效的情况,则将已分配的缓存行配置为失效,等待分配的则取消分配,同时将数据块从特定寄存器发送到下游存储器中。
可以理解的是,为了能够在下游存储器中对部分有效数据进行重组,缓存控制器在将写请求对应的全部数据块从特定寄存器发送到下游存储器时,具体用于将写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。如果下游存储器是内存,则该下游存储器的控制器为内存控制器,如果下游存储器是下级缓存,则该下游存储器的控制器即为该缓存控制器本身,即该缓存控制器基于该数据有效标识在下级缓存对部分有效的数据进行重组。
考虑到特定寄存器的存储空间是有限的,缓存控制器在一个写请求执行完成后(在写请求对应的数据块中有部分有效数据块的情况下,将写请求对应的全部数据块发送到下游存储器后认为写请求执行完成;在写请求的全部数据块均为非部分有效数据块的情况下,将写请求对应的全部数据块写入到写请求对应的缓存行后认为写请求执行完成),可以将该特定寄存器清空,以便可以利用该特定寄存器处理下一个写请求。
另外,特定寄存器中还可以包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;
缓存控制器,还用于在将访问请求对应的任一数据块写入到所述特定寄存器后,利用数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
如图3所示,为本公开提出的一种具体的特定寄存器的示意图。其中包括8个数据块,以及一个数据块有效位valid[7:0],即数据块有效位中的每个比特用于标识一个数据块是否有效。
例如写请求对应了8个数据块,分别为数据块0-数据块8,缓存控制器将数据块0存储到特定寄存器后,可以将数据块有效位valid[7:0]设置为00000001,即将写入的数据块0标记为有效,在将数据块1存储到特定寄存器后,可以将数据块有效位valid[7:0]设置为00000011,以此类推,采用数据块有效位将写入的数据块标记为有效。在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到写请求对应缓存行后,意味着针对该写请求已处理完成,存储在特定寄存器中的数据已经没有作用,则可以将数据块有效位valid[7:0]设置为00000000,即利用数据块有效位将特定寄存器中存储的数据块标记为无效。采用这种方式,无须将特定寄存器中的数据块清空,也可以针对不同的访问请求重复利用该特定寄存器。
上文介绍了本公开的缓存系统针对写请求执行的操作,由于缓存控制器被配置为针对缓存执行写分配以及读不分配的策略,因此缓存控制器,还用于针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理该读请求。
即采用本公开的方式,由于将写请求中的部分有效的数据直接写回到下游存储器,因此在执行读请求时,可以直接从下游存储器中读取,无须对数据进行重组,可以有效提高数据的读取效率。
如图4所示,为本公开提出的一种具体的访问请求的处理流程。
缓存控制器在接收到上游设备的访问请求后确定该访问请求是读请求还是写请求,如果是读请求,进一步确定读请求是否命中缓存行,如果命中则直接从缓存中读出数据后返回给上游设备,如果没有命中,则从下游存储器中读出数据后返回给上游设备。
如果访问请求是写请求,进一步确定写请求是否命中缓存行,如果命中,则将写请求对应的数据块同时写入至命中的缓存行以及特定寄存器中,同时利用每个数据块的数据有效标识判断写请求的数据块是否有部分有效的数据块,如果有,则将写请求对应的数据块以及命中的缓存行中的部分数据块都写入到下游存储器并清空寄存器,同时将命中的缓存行配置为失效,具体可以参照上文,这里不进行详述。如果写请求对应的数据块中没有部分写有效数据块,则将数据块都写入到命中的缓存后清空特定寄存器。
另外,在写请求未命中缓存行的情况下,可以将写请求对应的数据块写入到特定寄存器中,然后利用每个数据块的数据有效标识判断写请求的数据块是否有部分有效的数据块,如果有则将写请求对应的数据块数据块都写入到下游存储器并清空寄存器,同时将分配的缓存行配置为失效。如果没有部分有效的数据块,则将数据块都写入到命中的缓存后清空特定寄存器。
基于相同的发明构思,如图5所示,本公开实施例还提供一种访问请求处理方法,应用于缓存系统中的缓存控制器,所述缓存系统还包括缓存以及特定寄存器;所述缓存控制器被配置为针对所述缓存执行写分配以及读不分配的策略;所述方法包括:
针对每个写请求分别执行以下操作:
S501,将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
S502,在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
在一种实施方式中,方法还包括:
在所述写请求命中缓存中的任一缓存行,且该缓存行中存储有数据的情况下,将所述缓存行中除所述访问请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
在一种实施方式中,方法还包括:在所述写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将所述目标缓存行中的数据写回到下游存储器中;将所述目标缓存行确定为所述写请求对应的缓存行。
在一种实施方式中,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
将所述写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。
在一种实施方式中,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
从特定寄存器和上游设备获取所述写请求对应的全部数据块,并发送到下游存储器。
在一种实施方式中,方法还包括:
将该写请求对应的任一数据块写入到所述特定寄存器时,将所述数据块写入到所述写请求在缓存中命中的缓存行。
在一种实施方式中,方法还包括:在该写请求对应的全部数据块均为非部分有效数据块的情况下,将该写请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
在一种实施方式中,所述特定寄存器中还包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;方法还包括:
在将访问请求对应的任一数据块写入到所述特定寄存器后,利用所述数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用所述数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
在一种实施方式中,方法还包括:针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理所述读请求。
基于相同的发明构思,本公开实施例还提供一种芯片,该芯片包括上述任一实施方式中的缓存系统。该芯片可以是GPU(图形处理器,graphics processing unit)、CPU(中央处理器,Central Processing Unit)等,本公开对此不进行限定。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的芯片。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (20)
1.一种缓存系统,包括缓存控制器、缓存以及特定寄存器;所述缓存控制器被配置为针对所述缓存执行写分配以及读不分配的策略;
缓存控制器,用于针对每个写请求分别执行以下操作:
将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
2.根据权利要求1所述的缓存系统,
所述缓存控制器,还用于在所述写请求命中缓存中的任一缓存行,且该缓存行中存储有数据的情况下,将所述缓存行中除所述写请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
3.根据权利要求1所述的缓存系统,
所述缓存控制器,还用于在所述写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将所述目标缓存行中的数据写回到下游存储器中;将所述目标缓存行确定为所述写请求对应的缓存行。
4.根据权利要求1所述的缓存系统,
所述缓存控制器,具体用于将所述写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。
5.根据权利要求1所述的缓存系统,
所述缓存控制器,具体用于将所述写请求对应的全部数据块从特定寄存器和上游设备获取,并发送到下游存储器。
6.根据权利要求1所述的缓存系统,
所述缓存控制器,还用于将该写请求对应的任一数据块写入到所述特定寄存器时,将所述数据块写入到所述写请求在缓存中命中的缓存行。
7.根据权利要求1所述的缓存系统,
所述缓存控制器,还用于在该写请求对应的全部数据块均为非部分有效数据块的情况下,将该写请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
8.根据权利要求7所述的缓存系统,
所述特定寄存器中还包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;
所述缓存控制器,还用于在将写请求对应的任一数据块写入到所述特定寄存器后,利用所述数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用所述数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
9.根据权利要求1所述的缓存系统,
缓存控制器,还用于针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理所述读请求。
10.一种访问请求处理方法,应用于缓存系统中的缓存控制器,所述缓存系统还包括缓存以及特定寄存器;所述缓存控制器被配置为针对所述缓存执行写分配以及读不分配的策略;所述方法包括:
针对每个写请求分别执行以下操作:
将该写请求对应的全部数据块中的任一数据块写入到所述特定寄存器,利用所述数据块对应的数据有效标识,确定该数据块是否部分有效;
在该数据块部分有效的情况下,将所述写请求在所述缓存中对应的缓存行配置为失效,将所述写请求对应的全部数据块发送到下游存储器。
11.根据权利要求10所述的方法,还包括:
在所述写请求命中缓存中的任一缓存行,且该缓存行中存储有数据的情况下,将所述缓存行中除所述写请求对应的非部分有效数据块以外的其他数据块发送到下游存储器。
12.根据权利要求10所述的方法,还包括:
在所述写请求未命中任一缓存中的缓存行、且缓存行已满的情况下,按照预设的替换算法选取目标缓存行,将所述目标缓存行中的数据写回到下游存储器中;将所述目标缓存行确定为所述写请求对应的缓存行。
13.根据权利要求10所述的方法,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
将所述写请求对应的全部数据块,以及部分有效数据对应的数据有效标识发送至下游存储器的控制器,以使下游存储器的控制器基于所述数据有效标识对部分有效数据进行重组。
14.根据权利要求10所述的方法,所述将所述写请求对应的全部数据块发送到下游存储器,包括:
从特定寄存器和上游设备获取所述写请求对应的全部数据块,并发送到下游存储器。
15.根据权利要求10所述的方法,还包括:
将该写请求对应的任一数据块写入到所述特定寄存器时,将所述数据块写入到所述写请求在缓存中命中的缓存行。
16.根据权利要求10所述的方法,还包括
在该写请求对应的全部数据块均为非部分有效数据块的情况下,将该写请求对应的全部数据块写入到所述写请求对应的缓存中的缓存行中。
17.根据权利要求16所述的方法,所述特定寄存器中还包括数据块有效位,用于标识特定寄存器中的各个数据块是否有效;方法还包括:
在将写请求对应的任一数据块写入到所述特定寄存器后,利用所述数据块有效位将所述写入的数据块标记为有效;在将写请求对应的全部数据块发送到下游存储器后,或者,将写请求对应的全部数据块写入到所述写请求对应缓存行后,利用所述数据块有效位将所述特定寄存器中存储的所述写请求对应的数据块标记为无效。
18.根据权利要求10所述的方法,还包括:
针对每个读请求分别执行以下操作:
确定该读请求是否命中缓存中的任一缓存行;
在读请求命中任一缓存行的情况下,将该缓存行中的数据发送至读请求的请求方;
在读请求命中未任一缓存行的情况下,将该读请求转发至下游存储器的控制器,以使下游存储器的控制器处理所述读请求。
19.一种芯片,包括权利要求1-9所述的缓存系统。
20.一种电子设备,包括权利要求19所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311803769.2A CN117873917A (zh) | 2023-12-25 | 2023-12-25 | 一种缓存系统、访问请求处理方法、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311803769.2A CN117873917A (zh) | 2023-12-25 | 2023-12-25 | 一种缓存系统、访问请求处理方法、芯片及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117873917A true CN117873917A (zh) | 2024-04-12 |
Family
ID=90591091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311803769.2A Pending CN117873917A (zh) | 2023-12-25 | 2023-12-25 | 一种缓存系统、访问请求处理方法、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117873917A (zh) |
-
2023
- 2023-12-25 CN CN202311803769.2A patent/CN117873917A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5417879B2 (ja) | キャッシュ装置 | |
US7543114B2 (en) | System and controller with reduced bus utilization time | |
CN101493796B (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
US20090077320A1 (en) | Direct access of cache lock set data without backing memory | |
US5561783A (en) | Dynamic cache coherency method and apparatus using both write-back and write-through operations | |
US5964859A (en) | Allocatable post and prefetch buffers for bus bridges | |
CN102968386B (zh) | 数据供给设备、缓存设备及数据供给方法 | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
US20140040541A1 (en) | Method of managing dynamic memory reallocation and device performing the method | |
US20160321204A1 (en) | Information processor with tightly coupled smart memory unit | |
US20130173834A1 (en) | Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag | |
CN106354664A (zh) | 一种固态硬盘数据传输方法及装置 | |
US20100306421A1 (en) | Dma transfer device | |
JP5499987B2 (ja) | 共有キャッシュメモリ装置 | |
US9558121B2 (en) | Two-level cache locking mechanism | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
CN117609314A (zh) | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
US9507725B2 (en) | Store forwarding for data caches | |
CN117873917A (zh) | 一种缓存系统、访问请求处理方法、芯片及电子设备 | |
US20080016296A1 (en) | Data processing system | |
CN107807888B (zh) | 一种用于soc架构的数据预取系统及其方法 | |
KR20090128605A (ko) | 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를구동하기 위한 디바이스 드라이버 | |
US6847990B2 (en) | Data transfer unit with support for multiple coherency granules |
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 |