CN117608498A - 一种dram的访问处理方法、缓存控制模块及dram控制器 - Google Patents
一种dram的访问处理方法、缓存控制模块及dram控制器 Download PDFInfo
- Publication number
- CN117608498A CN117608498A CN202410085800.1A CN202410085800A CN117608498A CN 117608498 A CN117608498 A CN 117608498A CN 202410085800 A CN202410085800 A CN 202410085800A CN 117608498 A CN117608498 A CN 117608498A
- Authority
- CN
- China
- Prior art keywords
- cache
- target
- cache line
- line
- module
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000013507 mapping Methods 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000003491 array Methods 0.000 claims abstract description 21
- 230000001960 triggered effect Effects 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims description 32
- 238000011144 upstream manufacturing Methods 0.000 claims description 19
- 238000012216 screening Methods 0.000 claims description 5
- 230000004913 activation Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供一种DRAM的访问处理方法、缓存控制模块及DRAM控制器,应用于DRAM控制器中的缓存控制模块,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;所述方法包括:在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种DRAM的访问处理方法、缓存控制模块及DRAM控制器。
背景技术
业界通常采用DRAM(Dynamic Random Access Memory,动态随机存取存储器)来作为系统的内存。DRAM内部由多个存储器阵列(bank)组成,每个存储器阵列又由行(row)和列(column)组成。对某一个地址进行读写时,要首先对地址所在的行激活,发送行激活命令(Active),才能发送读写命令。在同一个存储器阵列中,如果需要切换到另外一个行地址读写,需要把当前激活的行关闭(Precharge),再激活新的行,最后进行读写。目前,不论是直接对DRAM的进行访问,还是利用Cache机制对DRAM进行访问,通常需要在多个行之间进行切换,访问效率都较低,且不能充分利用带宽。
发明内容
本公开的目的是提供一种DRAM的访问处理方法、缓存控制模块及DRAM控制器。
根据本公开的第一个方面,提供一种DRAM的访问处理方法,应用于DRAM控制器中的缓存控制模块,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;所述方法包括:
在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
在一种实施方式中,所述在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,包括:
在针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应所述目标行的缓存行确定为目标缓存行。
在一种实施方式中,所述针对缓存模块中的任一目标组中的缓存行执行写回操作,包括:
在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器还包括命令队列和命令队列监测模块,命令队列中存储有所述缓存控制模块生成的访问命令;命令队列监测模块被配置为监测所述命令队列并生成命令队列信息;所述命令队列信息包括:命令队列中的总命令数,发往每个存储器阵列的命令数;
所述针对缓存模块中的任一目标组中的缓存行执行写回操作,包括:
向所述命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,方法还包括:
在发往任一存储器阵列的命令数为零的情况下,确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器中还包括地址映射模块,所述地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址;所述方法还包括:
根据所述存储器阵列地址确定所述访问请求对应的组;根据所述行地址确定所述访问请求是否命中所述组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
在一种实施方式中,方法还包括:
在未命中、所述组没有空闲缓存行且所述访问请求为读请求的情况下,不触发针对所述读请求执行分配缓存行的操作;
在未命中、所述组有空闲缓存行且所述访问请求为读请求的情况下,向所述命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将所述读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对所述读请求执行分配缓存行的操作。在一种实施方式中,所述缓存模块中还记录有各个缓存行中脏数据的长度;所述方法还包括:
在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于所述目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
在一种实施方式中,所述缓存模块中每个缓存行存储有若干个数据块,每个缓存行中还记录该缓存行中每个数据块的有效标识和脏数据标识;
所述触发将目标缓存行中的数据写回至DRAM的操作,包括:
根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中有效且脏的目标数据块,触发将筛选出的目标数据块
写回至DRAM的操作。
根据本公开的第二个方面,提供一种缓存控制模块,部署于DRAM控制器中,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;
所述缓存控制模块,被配置为:在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
在一种实施方式中,所述缓存控制模块,具体被配置为:
在针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应所述目标行的缓存行确定为目标缓存行。
在一种实施方式中,所述缓存控制模块,具体被配置为:
在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器还包括命令队列和命令队列监测模块,命令队列中存储有所述缓存控制模块生成的访问命令;命令队列监测模块被配置为监测所述命令队列并生成命令队列信息;所述命令队列信息包括:命令队列中的总命令数,发往每个存储器阵列的命令数;
所述缓存控制模块,具体被配置为:向所述命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述缓存控制模块,具体被配置为:在发往任一存储器阵列的命令数为零的情况下,确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器中还包括地址映射模块,所述地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址;
所述缓存控制模块,还被配置为:根据所述存储器阵列地址确定所述访问请求对应的组;根据所述行地址确定所述访问请求是否命中所述组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
在一种实施方式中,所述缓存控制模块,还被配置为:在未命中、所述组没有空闲缓存行且所述访问请求为读请求的情况下,不触发针对所述读请求执行分配缓存行的操作;
在未命中、所述组有空闲缓存行且所述访问请求为读请求的情况下,向所述命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将所述读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对所述读请求执行分配缓存行的操作。
在一种实施方式中,所述缓存模块中还记录有各个缓存行中脏数据的长度;
所述缓存控制模块,还被配置为:在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于所述目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
在一种实施方式中,所述缓存模块中每个缓存行存储有若干个数据块,每个缓存行中还记录该缓存行中每个数据块的有效标识和脏数据标识;
所述缓存控制模块,具体被配置为:根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中有效且脏的目标数据块,触发将筛选出的目标数据块写回至DRAM的操作。
根据本公开的第三个方面,提供一种DRAM控制器,包括第二个方面的缓存控制模块。
根据本公开的第四个方面,提供一种芯片,包括第三个方面的缓存控制模块的DRAM控制器。
根据本公开的第五个方面,提供一种电子设备,包括第四个方面的缓存控制模块的芯片。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供的组相联的缓存模块的结构示意图;
图2为本公开一个实施例提供的一种Tag array的结构示意图;
图3为本公开一个实施例提供的一种DRAM控制器的结构示意图;
图4为本公开一个实施例提供的一种匹配缓存行的逻辑示意图;
图5为本公开一个实施例提供的一种Tag array和Data array的结构示意图;
图6为本公开一个实施例提供的另一种DRAM控制器的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
DRAM内部由多个存储器阵列(bank)组成,每个存储器阵列又由行(row)和列(column)组成。对某一个地址进行读写时,要首先对地址所在的行激活,发送行激活命令(Active),才能发送读写命令。在同一个存储器阵列中,如果需要切换到另外一个行地址读写,需要把当前激活的行关闭(Precharge),激活新的行,再进行读写。在各个上游设备直接对DRAM进行访问的情况下,由于各个上游设备需求的数据往往不相同,数据也会存储在DRAM中的不同的位置中,因此,各个上游设备发送的访问请求往往会导致在DRAM中不同行之间进行频繁切换,因此会导致访问效率低下,且在开启一个行后,仅进行读写该行中较少的数据后又关闭并开启其他行,并从其他行读写数据也不能充分利用DRAM的带宽。
另外,为了提升一定的访问效率,各个上游设备通常也会利用Cache机制对DRAM进行访问,但是当未命中Cache需要对Cache中的数据进行替换即需要将原本在Cache中的数据写回到DRAM时,或者需要对Cache中的大量数据一起写回到DRAM时,写回到DRAM中的数据的地址也往往是离散的,因此也会导致访问效率低下以及不能充分利用DRAM带宽的问题。
为了解决上述问题,本公开提出一种DRAM的访问处理方法,应用于DRAM控制器中的缓存控制模块,该DRAM控制器还包括缓存模块;缓存模块存储DRAM中的部分数据,该缓存模块与该DRAM的映射方式为组相联映射,其中,该缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为DRAM中一个行的位宽,DRAM中同一个存储器阵列被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到缓存模块中的同一缓存行中;该方法包括:
在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
采用这种映射方式,在DRAM控制器中配置缓存模块对DRAM中的部分数据进行存储,由于DRAM中同一行中的数据被映射到缓存模块中的同一缓存行中,因此在需要将缓存模块中的数据写回至内存时,可以将属于DRAM中同一行的数据一起写回至DRAM中,这样就可以将上游设备原本发往DRAM的地址离散的访问请求通过缓存模块整合为地址连续的访问请求,提升了DRAM的带宽利用率和访问效率。
为了更清楚的介绍本方案,下面对DRAM控制器中的缓存模块的结构进行介绍:DRAM控制器中的缓存模块与DRAM的映射关系是组相联映射,如图1所示,该缓存模块中可以包括N个路(way)和M个组(set),其中M与DRAM中存储器阵列的数量相同,例如DRAM包括16个存储器阵列,则该缓存模块可以包括16个组。其中每一组中的包括N个(路的数量)缓存行,本公开对N的值不进行限定,可以根据实际需求设置,为了避免资源浪费,N的值只要是不大于DRAM中每个存储器阵列中的行也称页(page)的数量即可。采用组相联映射,将DRAM中同一个存储器阵列中的数据映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中,具体可以是将DRAM中数据的存储器阵列地址映射为缓存模块中的组标记(Index),将DRAM中数据的行地址(row地址)映射为缓存模块中的标记位(Tag),将DRAM中数据的列地址(column地址)映射为缓存模块中偏移位(Line offset)。因此缓存模块中每一组中的N个缓存行(图中用虚线方框标记的N个缓存行)可以被一个存储器阵列中的各个行中的数据共享,关于组相联映射的实现可以参照相关技术,本公开不进行详述。如图2所示,缓存模块中除了存储有缓存行以外,还针对每个缓存行记录该缓存行的脏数据标记(图中的D)、有效标记(图中的V)以及Tag标识。其中,脏数据标记用于标识对应缓存行中的数据是否与DRAM中的数据一致,例如,如果不一致则将该脏数据标记置为1,如果一致则将该脏数据标记置为0。有效标记用于标识对应的缓存行是否有效。Tag标识用于在接收到访问请求后,确定访问请求是否命中该Tag标记对应的缓存行。存储脏数据标记、有效标记以及Tag标识的存储空间可以称为Tag array,存储Cache line的存储空间可以称为Dataarray。另外,Tag array由于占据空间较少,Tag array也可以位于缓存控制模块中以寄存器的形式存在。
如图3所示,DRAM控制器通常位于上游设备和DRAM之间,用于接收上游设备发送的访问请求对DRAM进行处理。下面介绍DRAM控制器在接收到上游设备访问请求后进行处理的过程。
如图3所示,该DRAM控制器除了包括缓存控制模块310、缓存模块320以外,还包括地址映射模块330。其中,地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址,由于DRAM控制器需要根据访问请求访问DRAM中的地址,因此,在接收到任一访问请求后,需要对该访问请求的地址进行解析,得到存储器阵列地址(Bank地址)、行地址(Row地址)以及列地址(Column地址),基于解析出的地址才能访问DRAM的地址。与相关技术不同的是,地址映射模块在解析出存储器阵列地址、行地址以及列地址后,并不直接基于解析出的地址访问DRAM,而是将解析出的地址发送至缓存控制模块。
缓存控制模块根据存储器阵列地址确定访问请求对应的组;根据行地址确定该访问请求是否命中组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
具体的,如图4所示,缓存控制模块在接收到任一访问请求的存储器阵列地址、行地址以及列地址后,由于缓存模块与DRAM的映射方式为组相联映射,且DRAM中同一个存储器阵列被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中,因此,可以先根据存储器阵列地址(Bank)确定访问请求对应的组,然后根据行地址(Row)与该组中各个缓存行的Tag标记进行匹配,如果行地址与该组中任一缓存行的Tag标记相同,则说明该访问请求命中了该缓存行,可以根据访问请求对被命中的缓存行进行处理,例如,如果是写请求则直接对被命中的缓存行进行写处理,如果是读,则对被命中的缓存行执行读处理。
另外,如果访问请求的行地址与一组中的各个缓存行的Tag标记都不相同,说明该访问请求没有命中缓存行,则可以执行读写都分配策略,即如果当前被命中的组中有空闲缓存行,则直接利用空闲缓存行对该访问请求进行处理,针对写请求可以是直接将写请求的数据写入到该空闲缓存行中,针对读请求可以触发从DRAM中读取该访问请求对应的行的数据写入到该空闲缓存行中,并进一步从该空闲缓存行中读该访问请求的针对数据返回给上游设备。另外,如果当前被命中的组中没有空闲缓存行则可以从被命中的组中选择一缓存行,并触发该缓存行写回至DRAM中得到一个空闲缓存行,并利用空闲缓存行对该访问请求进行处理的操作。
采用上述方式,可以实现利用组相联映射的方式,将DRAM中的部分数据存储在缓存模块中,并且由于不是将上游发送的所有访问请求直接发送至DRAM,而是利用缓存模块对部分DRAM进行处理,可以提升访问请求的处理效率同时减轻DRAM的压力。
在缓存模块存储有部分数据,并且针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,可以是随机确定目标缓存行进行写回。
另外,为了进一步提升写回效率,避免写回操作导致DRAM执行行间切换,还可以是采用以下方式确定目标缓存行。
针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应目标行的缓存行确定为目标缓存行。
具体的,DRAM控制器作为对DRAM进行控制的装置,其可以监测各个存储器阵列的激活状态,以及各个存储器阵列中各个行的激活状态(Open状态),其中,每个存储器阵列中同时最多只有一个行处于激活状态(Open状态),如果没有行处于激活状态,那么该存储器阵列也处于关闭状态,监测的信息可以如表1即存储信息监测表所示。
表1
即第一列用于记录每个存储器阵列的地址或标识,第二列用于标识对应的存储器阵列是否处于激活状态(1表示处于激活状态,0标识处于关闭状态),第三列用于标识对应的存储器阵列中处于激活状态的行的地址。
缓存控制模块可以基于如表1所示出的信息确定目标组映射的存储器阵列中是否存在处于激活状态的目标行,例如目标组映射的存储器阵列为Bank0,Bank0中存在处于激活状态的行,为行2,则将行2对应的缓存行确定为目标缓存行,并触发将目标缓存行中的数据写回至DRAM的操作。由于Bank0中行2处于激活状态,因此,优先将缓存模块中对应于行2的缓存行写回至Bank0中的行2中,可以避免执行行激活命令(Active)和行关闭指令(Precharge),可以有效提升写回效率。另外,如果目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于目标行的缓存行,则可以随机选择一个缓存行作为目标缓存行进行写回。
仍以表1示出的内容为例,如果目标组映射的存储器阵列是Bank2,该Bank2处于关闭状态,则可以直接从目标组中随机选择一个缓存行作为目标缓存行。又或者,如果目标组映射的存储器阵列是Bank0,处于激活状态的行为行2,但是目标组中不存在对应于行2的缓存行,因此可以从目标组中随机选择一个缓存行作为目标缓存行。
在一种实施方式中,如图5所示,在缓存模块中还可以记录各个缓存行中脏数据的长度,那么在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
例如,目标组中存在N个缓存行,并且目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于目标行的缓存行,目标组中的第一个缓存行中脏数据最多,则可以将第一个缓存行确定为目标缓存行。采用这种方式,可以优先将最需要写回到DRAM的缓存行先写回到DRAM中。
如图5所示,缓存行中通常存储若干个数据块(图中为8个数据块data0-data7),其中每个数据块的长度为一个访问请求的数据位宽,还可以在每个缓存行中记录该缓存行中每个数据块的有效标识和脏数据标识。这样缓存控制器通过遍历各个数据块的有效标识和脏数据标识就可以知晓缓存行中每个数据块是否是有效的,以及是否是脏数据。
进而在将目标组中存储脏数据最多的缓存行确定为目标缓存行后,可以根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中的有效且脏的目标数据块,触发将筛选出的目标数据块写回至DRAM的操作。
由于本公开中的缓存行的位宽为DRAM中一行的位宽,位宽较大,因此,采用这种方式可以避免在写回时将一个缓存行中的全部数据块都写回到DRAM,只需要将缓存行中部分有效且脏的数据块写回,进一步提升写回效率。
上述介绍了从目标组中确定目标缓存行的方式,下面介绍缓存控制模块执行写回操作的触发机制。
在一种实施方式中,可以是在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
即如果在目标组没有空闲缓存行的情况下,需要将该目标组中的其中一个缓存行写回至内存,得到空闲缓存行,进而利用该空闲缓存行处理读写请求。即在执行替换缓存行的操作时,需要针对目标组中的缓存行执行写回操作。
在一种实施方式中,本公开提出缓存控制模块还可以主动监测DRAM的繁忙程度来触发将缓存行进行写回的操作。
具体的,如图6所示,DRAM控制器还包括命令队列340、命令队列监测模块350、仲裁模块360以及时序参数控制模块370。
命令队列340中存储有缓存控制模块生成的访问命令,即缓存控制模块可以将需要发往至DRAM的访问命令存储至该命令队列中,例如缓存控制模块在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作,具体可以是生成将该数据写回至目标行的访问命令,并将该访问命令存储至命令队列中,又例如,对于一些未在缓存模块中命中的读请求,缓存控制模块也会根据该读请求生成读命令存储到命令队列中。
仲裁模块360被配置为对命令队列模块中的命令进行仲裁,选出最优的命令发到DRAM,本公开对仲裁模块的仲裁策略不进行限定。
时序参数控制模块370 被配置为控制发往DRAM的命令间的时间间隔以满足DRAM时序参数。
命令队列监测模块350被配置为监测命令队列340并生成命令队列信息;其中命令队列信息可以包括:命令队列中的总命令数,发往每个存储器阵列的命令数。例如,命令队列监测模块可以通过监测命令队列生成如表2即命令队列监测表所示的命令队列信息。
表2
即第一列用于标识每个存储器阵列的地址或标识,第四列用于标识命令队列中存储发往每个存储器阵列的命令数。此外,各个存储器阵列的激活状态(第二列),以及各个存储器阵列中各个行的激活状态(Open状态)(第三列)也可以由命令队列监测模块进行监测,进而生成如表2所示的信息。
在本实施方式中,缓存控制模块可以向命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
即在命令队列中的总命令数小于第一预设阈值的情况下,认为目前DRAM较为空闲,执行写回操作并不会对命令队列中的访问命令的处理产生较大的影响,即并不会因为执行写回操作而导致无法处理原本存储在命令队列中的命令。因此可以执行写回操作,这里的写回操作可以理解为将缓存模块中全部存储器阵列中的缓存行都写回至DRAM中,因此在写回时需要对各个存储器阵列的写回顺序进行确定,本公开提出可以是确定对应命令数最少的存储器阵列映射的组为目标组,优先将对应命令数最少的存储器阵列映射的组写回至DRAM的相应的存储器阵列中,这里优先将对应命令数最少的存储器阵列映射的组写回至DRAM的相应的存储器阵列中,是因为DRAM中各个存储器阵列的读写可以是并行执行的,各个存储器阵列的读写并不会相互冲突,在对某个存储器阵列进行读写时,存储在命令队列中的对应于其他存储器阵列的访问请求,并不会影响到对该存储器阵列的读写。在某个存储器阵列的命令较少时,将该存储器阵列映射在缓存模块中的目标组中的数据写回到该存储器阵列中,写回数据的操作也并不会影响到原本存储在命令队列中发送至该存储器阵列的访问命令。以此类推,可以按照队列中存储命令的数量,从少到多依次将各个存储器阵列映射的组确定为目标组,并将目标组中的数据都写回至DRAM 中。
另外,除了在命令队列中的总命令数小于第一预设阈值的情况下,触发缓存模块中全部缓存行的写回操作,缓存控制模块还可以主动监测并触发缓存模块中某一组中的全部缓存行进行写回。上文中已介绍在DRAM中各个存储器阵列的读写可以是并行执行的,各个存储器阵列的读写并不会相互冲突,因此缓存控制模块还可以向命令队列监测模块获取发往每个存储器阵列的命令数,若发往任一存储器阵列的命令数为零,则确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。即在确定发往任一存储器阵列的命令数为零的情况下,说明该存储器阵列处于空闲状态,对该存储器阵列进行写回的操作不会影响到原本要发往该存储器阵列的访问命令。因此可以触发将缓存中对应于该存储器阵列的组中的数据写回至该存储器阵列中。
上文提到,缓存控制模块根据存储器阵列地址确定访问请求对应的组;根据行地址确定访问请求是否命中该组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理,如果访问请求行地址与一组中的各个缓存行的Tag标记都不相同,则可以执行读写都分配策略,如果当前被命中的组中没有有空闲缓存行则可以从被命中的组中选择一缓存行,并触发该缓存行写回至DRAM中得到一个空闲缓存行,利用空闲缓存行对该请求进行处理。
在此基础上本公开提出,在针对写请求时可以执行上述策略,即需要先将被命中的组中的一个缓存行写入至DRAM后,利用空闲缓存行对该写请求进行处理。针对读请求除了采用上述方式进行处理,缓存控制模块还可以通过监测DRAM的繁忙程度确定是否针对读请求执行分配缓存行的操作。
在一种实施方式中,缓存控制模块可以是在访问请求未命中组中的任一缓存行、该组没有空闲缓存行且访问请求为读请求的情况下,不触发针对该读请求执行分配缓存行的操作,直接针对该读请求生成读命令存储到命令队列中。
由于在没有空闲缓存行时,如果为该读请求分配缓存行,则会先将该组中的一个缓存行中的数据写回至DRAM中,然后才能将访问请求针对的行中的数据读取到该空闲缓存行中,这个过程中一定会在同一存储器阵列中切换不同的行(写回时是一个行,读取时是另一行),为了避免这样的切换操作带来的延迟,因此不针对该读请求执行分配缓存行的操作。
另外,缓存控制模块可以是在访问请求未命中组中的任一缓存行、该组有空闲缓存行且访问请求为读请求的情况下,向命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将该读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对该读请求执行分配缓存行的操作,直接针对该读请求生成读命令存储到命令队列中。
即如果当前命令队列中的总命令数大于等于第二预设阈值,则说明DRAM较为繁忙,则直接将读请求作为读命令存储到命令队列中,从DRAM中读取该读请求对应的数据返回上游设备,如果当前命令队列中的总命令数小于第二预设阈值,则说明DRAM较为空闲,针对该读请求执行分配缓存行的操作,并不会对原本存储在命令队列中的访问命令的处理影响较大,可以从DRAM中读取整个行中的数据存储在空闲缓存行中,并从缓存行中读取该读请求对应的数据返回上游设备,因此可以触发针对该读请求分配缓存行的操作。
在另一种实施方式中,缓存控制模块还可以在访问请求未命中组中的任一缓存行、该组有空闲缓存行且所述访问请求为读请求的情况下,向命令队列监测模块获取发往每个存储器阵列的命令数;
在发往该组映射的存储器阵列的命令数小于第三预设阈值的情况下,触发将该读请求针对的行中的数据读取到任一空闲缓存行中的操作;在发往该组映射的存储器阵列的命令数不小于第三预设阈值的情况下,不触发针对该读请求执行分配缓存行的操作,直接针对该读请求生成读命令存储到命令队列中。
在本实施方式中,如果组映射的存储器阵列的命令数小于第三预设阈值则说明该存储器阵列较为空闲,针对该访问请求执行分配缓存行的操作,并不会对原本存储在命令队列中的命令影响较大,可以从DRAM中读取整个行中的数据存储到空闲缓存行中,因此可以触发针对该访问请求执行分配缓存行的操作。如果组映射的存储器阵列的命令数不小于第三预设阈值,说明该存储器阵列较为繁忙,则直接将读请求作为读命令存储到命令队列中,从DRAM中读取该读请求对应的数据返回上游设备。
采用上述两种实施方式,在有空闲缓存行的情况下,通过监测DRAM的繁忙程度确定是否针对读请求执行分配缓存行的操作,可以减少针对读请求的缓存行分配操作对命令队列中其他访问命令的影响,提升DRAM整体的访问处理性能。
基于相同的发明构思,本公开还提出一种缓存控制模块,部署于DRAM控制器中,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;
所述缓存控制模块,被配置为:在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
在一种实施方式中,所述缓存控制模块,具体被配置为:
在针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应所述目标行的缓存行确定为目标缓存行。
在一种实施方式中,所述缓存控制模块,具体被配置为:
在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器还包括命令队列和命令队列监测模块,命令队列中存储有所述缓存控制模块生成的访问命令;命令队列监测模块被配置为监测所述命令队列并生成命令队列信息;所述命令队列信息包括:命令队列中的总命令数,发往每个存储器阵列的命令数;
所述缓存控制模块,具体被配置为:向所述命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述缓存控制模块,具体被配置为:在发往任一存储器阵列的命令数为零的情况下,确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。
在一种实施方式中,所述DRAM控制器中还包括地址映射模块,所述地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址;
所述缓存控制模块,还被配置为:根据所述存储器阵列地址确定所述访问请求对应的组;根据所述行地址确定所述访问请求是否命中所述组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
在一种实施方式中,所述缓存控制模块,还被配置为:在未命中、所述组没有空闲缓存行且所述访问请求为读请求的情况下,不触发针对所述读请求执行分配缓存行的操作;
在未命中、所述组有空闲缓存行且所述访问请求为读请求的情况下,向所述命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将所述读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对所述读请求执行分配缓存行的操作。
在一种实施方式中,所述缓存模块中还记录有各个缓存行中脏数据的长度;
所述缓存控制模块,还被配置为:在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于所述目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
在一种实施方式中,所述缓存模块中每个缓存行存储有若干个数据块,每个缓存行中还记录该缓存行中每个数据块的有效标识和脏数据标识;
所述缓存控制模块,具体被配置为:根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中有效且脏的目标数据块,触发将筛选出的目标数据块写回至DRAM的操作。
本公开实施例还提供一种DRAM控制器,包括上述任一实施方式中的缓存控制模块。
本公开实施例还提供一种芯片,该芯片包括上述DRAM控制器。其中,芯片可以是GPU、TPU、CPU等,本公开对此不进行限定。
本公开实施例还提供一种电子设备,该电子设备包括上述的芯片。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
以上尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改,本领域的技术人员在不脱离本公开的精神和范围的前提下,做出的变更和修改也应视为本公开实施例的保护范围。
Claims (21)
1.一种DRAM的访问处理方法,应用于DRAM控制器中的缓存控制模块,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;所述方法包括:
在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
2.根据权利要求1所述的方法,所述在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,包括:
在针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应所述目标行的缓存行确定为目标缓存行。
3.根据权利要求2所述的方法,所述针对缓存模块中的任一目标组中的缓存行执行写回操作,包括:
在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
4.根据权利要求2所述的方法,所述DRAM控制器还包括命令队列和命令队列监测模块,命令队列中存储有所述缓存控制模块生成的访问命令;命令队列监测模块被配置为监测所述命令队列并生成命令队列信息;所述命令队列信息包括:命令队列中的总命令数,发往每个存储器阵列的命令数;
所述针对缓存模块中的任一目标组中的缓存行执行写回操作,包括:
向所述命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
5.根据权利要求4所述的方法,还包括:
在发往任一存储器阵列的命令数为零的情况下,确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。
6.根据权利要求4所述的方法,所述DRAM控制器中还包括地址映射模块,所述地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址;所述方法还包括:
根据所述存储器阵列地址确定所述访问请求对应的组;根据所述行地址确定所述访问请求是否命中所述组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
7.根据权利要求6所述的方法,还包括:
在未命中、所述组没有空闲缓存行且所述访问请求为读请求的情况下,不触发针对所述读请求执行分配缓存行的操作;
在未命中、所述组有空闲缓存行且所述访问请求为读请求的情况下,向所述命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将所述读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对所述读请求执行分配缓存行的操作。
8.根据权利要求2所述的方法,所述缓存模块中还记录有各个缓存行中脏数据的长度;所述方法还包括:
在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于所述目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
9.根据权利要求8所述的方法,所述缓存模块中每个缓存行存储有若干个数据块,每个缓存行中还记录该缓存行中每个数据块的有效标识和脏数据标识;
所述触发将目标缓存行中的数据写回至DRAM的操作,包括:
根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中有效且脏的目标数据块,触发将筛选出的目标数据块
写回至DRAM的操作。
10.一种缓存控制模块,部署于DRAM控制器中,所述DRAM控制器还包括缓存模块;所述缓存模块存储DRAM中的部分数据,所述缓存模块与所述DRAM的映射方式为组相联映射,其中,所述缓存模块中的组数与DRAM中存储器阵列的数量相同,每个组中包括若干缓存行,每个缓存行的位宽为所述DRAM中一个行的位宽,DRAM中同一个存储器阵列中的数据被映射到缓存模块中的同一组中,存储器阵列中同一行中的数据被映射到同一缓存行中;
所述缓存控制模块,被配置为:在针对缓存模块中的数据执行写回操作时,从缓存模块中确定目标缓存行,触发将目标缓存行中的数据写回至DRAM的操作。
11.根据权利要求10所述的缓存控制模块,所述缓存控制模块,具体被配置为:
在针对缓存模块中的任一目标组中的缓存行执行写回操作时,确定该目标组映射的存储器阵列中是否存在处于激活状态的目标行;在存在的情况下,将目标组中对应所述目标行的缓存行确定为目标缓存行。
12.根据权利要求11所述的缓存控制模块,所述缓存控制模块,具体被配置为:
在上游设备发送的访问请求命中任一目标组,但未命中该目标组中的缓存行,且该目标组没有空闲缓存行的情况下,针对该目标组中的缓存行执行写回操作。
13.根据权利要求11所述的缓存控制模块,所述DRAM控制器还包括命令队列和命令队列监测模块,命令队列中存储有所述缓存控制模块生成的访问命令;命令队列监测模块被配置为监测所述命令队列并生成命令队列信息;所述命令队列信息包括:命令队列中的总命令数,发往每个存储器阵列的命令数;
所述缓存控制模块,具体被配置为:向所述命令队列监测模块获取命令队列中的总命令数以及发往每个存储器阵列的命令数;在命令队列中的总命令数小于第一预设阈值的情况下,确定对应命令数最少的存储器阵列映射的组为目标组,针对该目标组中的缓存行执行写回操作。
14.根据权利要求13所述的缓存控制模块,
所述缓存控制模块,具体被配置为:在发往任一存储器阵列的命令数为零的情况下,确定该存储器阵列映射的组确定为目标组,针对该目标组中的缓存行执行写回操作。
15.根据权利要求13所述的缓存控制模块,所述DRAM控制器中还包括地址映射模块,所述地址映射模块被配置为对任一访问请求的地址进行解析得到存储器阵列地址、行地址以及列地址;
所述缓存控制模块,还被配置为:根据所述存储器阵列地址确定所述访问请求对应的组;根据所述行地址确定所述访问请求是否命中所述组中的任一缓存行;在命中的情况下,根据访问请求对被命中的缓存行进行处理。
16.根据权利要求15所述的缓存控制模块,
所述缓存控制模块,还被配置为:在未命中、所述组没有空闲缓存行且所述访问请求为读请求的情况下,不触发针对所述读请求执行分配缓存行的操作;
在未命中、所述组有空闲缓存行且所述访问请求为读请求的情况下,向所述命令队列监测模块获取命令队列中的总命令数;
在总命令数小于第二预设阈值的情况下,触发将所述读请求针对的行中的数据读取到任一空闲缓存行中的操作;在总命令数不小于第二预设阈值的情况下,不触发针对所述读请求执行分配缓存行的操作。
17.根据权利要求11所述的缓存控制模块,所述缓存模块中还记录有各个缓存行中脏数据的长度;
所述缓存控制模块,还被配置为:在目标组映射的存储器阵列中不存在处于激活状态的目标行,或者目标组中不存在对应于所述目标行的缓存行的情况下,将目标组中存储脏数据最多的缓存行确定为目标缓存行。
18.根据权利要求17所述的缓存控制模块,所述缓存模块中每个缓存行存储有若干个数据块,每个缓存行中还记录该缓存行中每个数据块的有效标识和脏数据标识;
所述缓存控制模块,具体被配置为:根据目标缓存行中每个数据块的有效标识和脏数据标识,筛选出目标缓存行中有效且脏的目标数据块,触发将筛选出的目标数据块写回至DRAM的操作。
19.一种DRAM控制器,包括权利要求10-18任一项所述的缓存控制模块。
20.一种芯片,包括权利要求19所述的DRAM控制器。
21.一种电子设备,包括权利要求20所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410085800.1A CN117608498B (zh) | 2024-01-22 | 2024-01-22 | 一种dram的访问处理方法、缓存控制模块及dram控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410085800.1A CN117608498B (zh) | 2024-01-22 | 2024-01-22 | 一种dram的访问处理方法、缓存控制模块及dram控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117608498A true CN117608498A (zh) | 2024-02-27 |
CN117608498B CN117608498B (zh) | 2024-10-18 |
Family
ID=89944697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410085800.1A Active CN117608498B (zh) | 2024-01-22 | 2024-01-22 | 一种dram的访问处理方法、缓存控制模块及dram控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608498B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140195764A1 (en) * | 2013-01-08 | 2014-07-10 | Qualcomm Incorporated | Memory device having an adaptable number of open rows |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN115878507A (zh) * | 2023-01-19 | 2023-03-31 | 北京象帝先计算技术有限公司 | 系统级芯片的内存访问方法、装置及电子设备 |
CN117389914A (zh) * | 2023-12-12 | 2024-01-12 | 北京象帝先计算技术有限公司 | 缓存系统、缓存写回方法、片上系统及电子设备 |
-
2024
- 2024-01-22 CN CN202410085800.1A patent/CN117608498B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140195764A1 (en) * | 2013-01-08 | 2014-07-10 | Qualcomm Incorporated | Memory device having an adaptable number of open rows |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN115878507A (zh) * | 2023-01-19 | 2023-03-31 | 北京象帝先计算技术有限公司 | 系统级芯片的内存访问方法、装置及电子设备 |
CN117389914A (zh) * | 2023-12-12 | 2024-01-12 | 北京象帝先计算技术有限公司 | 缓存系统、缓存写回方法、片上系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117608498B (zh) | 2024-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6625695B2 (en) | Cache line replacement policy enhancement to avoid memory page thrashing | |
CN107844429B (zh) | 存储器控制电路、存储器系统以及处理器系统 | |
CN105027211B (zh) | 自适应粒度行缓冲器高速缓存 | |
US20090094435A1 (en) | System and method for cache access prediction | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
CN111881068B (zh) | 多入口的全相联的高速缓冲存储器及数据管理方法 | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US20090157985A1 (en) | Accessing memory arrays | |
CN102859504A (zh) | 有效分区存储缓存 | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
US12093180B2 (en) | Tags and data for caches | |
US20080016282A1 (en) | Cache memory system | |
CN113641626A (zh) | 一种sram读写控制方法及行缓冲控制器 | |
CN117609314A (zh) | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 | |
US6542969B1 (en) | Memory controller and a cache for accessing a main memory, and a system and a method for controlling the main memory | |
CN117608498B (zh) | 一种dram的访问处理方法、缓存控制模块及dram控制器 | |
CN116775560B (zh) | 写分配方法、缓存系统、片上系统、电子组件及电子设备 | |
US6801982B2 (en) | Read prediction algorithm to provide low latency reads with SDRAM cache | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN114398298B (zh) | 一种缓存流水线处理方法及装置 | |
CN108509151B (zh) | 一种基于dram内存控制器的行缓存方法和系统 | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
US20180052773A1 (en) | Memory managing method and apparatus associated with cache in image processing system | |
US9116814B1 (en) | Use of cache to reduce memory bandwidth pressure with processing pipeline | |
US6433786B1 (en) | Memory architecture for video graphics environment |
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 |