CN118113230A - 一种基于地址重映射的读存储器数据的方法 - Google Patents
一种基于地址重映射的读存储器数据的方法 Download PDFInfo
- Publication number
- CN118113230A CN118113230A CN202410490749.2A CN202410490749A CN118113230A CN 118113230 A CN118113230 A CN 118113230A CN 202410490749 A CN202410490749 A CN 202410490749A CN 118113230 A CN118113230 A CN 118113230A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- memory
- entry
- buffer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 30
- 239000000872 buffer Substances 0.000 claims abstract description 123
- 230000004044 response Effects 0.000 description 66
- 230000006870 function Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及电数字数据处理技术领域,特别是涉及一种基于地址重映射的读存储器数据的方法。该方法包括:获取ar;遍历ar,如果rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将radd’n写入rtab的一个空闲条目,并将arn和对应的ridn发送给存储器;如果接收到存储器返回的读取数据,则根据读取数据携带的条目的id确定拟将读取数据存储到第一缓存器的区域;按照预设的顺序获取第一缓冲器中存储的读取数据,并将获取的读取数据按照获取时间从先到后的顺序组成目标数据后发送给读请求的请求方。本发明解决了读请求的请求方接收到多笔乱序的读取数据的问题。
Description
技术领域
本发明涉及电数字数据处理技术领域,特别是涉及一种基于地址重映射的读存储器数据的方法。
背景技术
现有技术中,存储器是以一个固定大小的存储容量为粒度进行管理的,例如,HBM(High Bandwidth Memory,即高带宽存储器)是以256 Byte(字节)为粒度进行管理的;当读请求的请求方通过AXI协议(Advanced eXtensible Interface)访问存储器时,AXI协议也是以256 Byte为边界向存储器发送读请求的,实际应用场景中会出现一个读请求被拆分为多笔读子请求发送给存储器的情况。在该情况下,存储器会分多笔返回读请求的读取数据且存储器返回每笔读子请求的读取数据的顺序不一定与向存储器发送读子请求的顺序一致,但是,对于读请求的请求方而言,其发送的是一个读请求,其想要接收的是一个读请求的全部读取数据,而不是乱序的多笔读子请求的读取数据。
发明内容
本发明目的在于,提供一种基于地址重映射的读存储器数据的方法,以解决出现上述情况导致的读请求的请求方接收到多笔乱序的读取数据的问题。
根据本发明,提供了一种基于地址重映射的读存储器数据的方法,所述方法包括以下步骤:
S100,获取读请求的读子请求ar,ar=(ar1,ar2,…,arn,…,arN),arn为对读请求进行拆分得到的第n个读子请求,arn包括arn对应的起始地址raddn、数据长度rlenn和单个数据的大小,radde位于radde+1之前,n的取值范围为1到N,e的取值范围为1到N-1,N为对读请求进行拆分得到的读子请求的数量。
S200,遍历ar,如果arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将radd’n写入rtab的一个空闲条目,并进入S300;radd’n为拟将rdatan存储到第一缓冲器中的首地址,rdatan为存储器返回的arn的读取数据;rtab包括的条目的数量为Q,rtab的第q个条目包括用于标志第q个条目是否为空闲条目的标识和拟将rdata’q存储到第一缓冲器中的首地址;rdata’q为存储器返回的第q个条目对应的读请求或读子请求的读取数据。
S300,将arn和对应的ridn发送给存储器,以从存储器获取arn的读取数据;ridn为rtab中被写入radd’n的条目的id。
S400,如果接收到存储器返回的读取数据,则根据存储器返回的读取数据携带的条目的id确定拟将存储器返回的读取数据存储到第一缓存器的区域。
S500,按照预设的顺序获取第一缓冲器中存储的读取数据,并将获取的读取数据按照获取时间从先到后的顺序组成目标数据后发送给读请求的请求方;所述预设的顺序为先获取regn中存储的读取数据,再获取regn+1中存储的读取数据,regn为拟将rdatan存储到的第一缓冲器的区域。
本发明与现有技术相比至少具有以下有益效果:
本发明获取了读请求被拆分的N个读子请求,每个读子请求包括对应读子请求对应的起始地址、数据长度和单个数据的大小;对于ar中的每一arn,如果arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将拟将arn对应的读取数据存储到第一缓冲器中的首地址记录到读重映射表格中的一个空闲条目,由此,根据读重映射表格可以获取与每一读子请求对应的首地址,首地址是拟将存储器返回的读取数据存储到第一缓冲器中的首地址;本发明在将arn发送给存储器时,同时还会将arn对应的ridn发送给存储器,ridn为rtab中被写入radd’n的条目的id,由此,当存储器返回某读子请求的读取数据时,可以根据该读子请求的读取数据携带的条目的id知晓rtab中与该读子请求对应的条目,该对应的条目中的首地址即为拟将该读子请求的读取数据存储到第一缓冲器中的首地址;本发明按照从ar1在第一缓冲器中的存储区域到arN在第一缓冲器中的存储区域的顺序依次获取第一缓冲器中存储的N个读子请求的读取数据,并根据获取的先后顺序将获取的读取数据组成目标数据发送给读请求的请求方,由此,读请求的请求方接收到的是读请求的全部读取数据,且接收的目标数据中读取数据的前后顺序也是正确的,解决了现有技术中由于出现读请求被拆分为多笔读子请求的情况导致的读请求的请求方接收到多笔乱序的读取数据的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的基于地址重映射的读存储器数据的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
本实施例提供了一种基于地址重映射的读存储器数据的方法,如图1所示,所述方法包括以下步骤:
S100,获取读请求的读子请求ar,ar=(ar1,ar2,…,arn,…,arN),arn为对读请求进行拆分得到的第n个读子请求,arn包括arn对应的起始地址raddn、数据长度rlenn和单个数据的大小,radde位于radde+1之前,n的取值范围为1到N,e的取值范围为1到N-1,N为对读请求进行拆分得到的读子请求的数量。
本实施例中,arn对应的起始地址raddn为arn拟从存储器中获取的数据的起始地址。本领域技术人员知悉,对于带有burst功能的协议,读请求包括起始地址、数据长度和单个数据的大小信息,当存储器接收到读请求后,就可以解析读请求得到读请求的请求方拟获取的数据的存储位置,并将存储位置上存储的数据作为读请求的读取数据返回给读请求的请求方。本领域技术人员知悉,现有技术中任何的带有burst功能的协议均落入本发明的保护范围,比如,带有burst功能协议为axi4协议。
本实施例中,一个读子请求对于存储器而言也是一个读请求,本实施例只是利用读子请求来区别一个读请求是否经过拆分而已,其中,将未经拆分和拆分之前的读请求命名为读请求,将拆分后得到的读请求命名为读子请求。
本实施例中不对将读请求拆分的方式进行限制,本领域技术人员知悉,现有技术中任何的拆分方式均落入本发明的保护范围。
S200,遍历ar,如果arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将radd’n写入rtab的一个空闲条目,并进入S300;radd’n为拟将rdatan存储到第一缓冲器中的首地址,rdatan为存储器返回的arn的读取数据;rtab包括的条目的数量为Q,rtab的第q个条目包括用于标志第q个条目是否为空闲条目的标识和拟将rdata’q存储到第一缓冲器中的首地址;rdata’q为存储器返回的第q个条目对应的读请求或读子请求的读取数据。
本实施例中预先构建了一个读重映射表格,该读重映射表格用于记录拟将存储器返回的读请求或读子请求的读取数据存储到第一缓冲器中的首地址,读重映射表格的初始化为空表格,当有读请求或读子请求对应的首地址写入读重映射表格时,一个读请求或读子请求对应的首地址写入读重映射表格的一个条目。本实施例的第一缓冲器指的是用于存储读请求或读子请求的读取数据的缓冲器。
本实施例中读重映射表格包括的条目的数量为Q指的是读重映射表格可以用于记录Q个读请求或读子请求对应的首地址,当某条目记录有首地址时,该条目为非空闲条目,该条目对应的标识为1,1用于标志该条目为非空闲条目;当某条目没有记录首地址时,该条目为空闲条目,该条目对应的标识为0,0用于标志该条目为空闲条目。本实施例中,读重映射表格rtab是一个动态表格,当有空闲条目被用于记录读请求或读子请求对应的首地址时,或者有非空闲条目记录的首地址被删除时,rtab即被更新;遍历ar的过程中,如果当前的读重映射表格rtab的空闲条目的数量为0,则不执行S300。应当理解的是,遍历ar的过程中,所述当前的读重映射表格rtab会不断被更新。
本实施例中第一缓冲器的一个地址可用于存储读请求或读子请求的一个数据大小的读取数据,由此,当arn对应的数据长度为rlenn时,存储器返回的arn对应的读取数据将占用第一缓冲器的rlenn个地址。本实施例中,如果arn包括的数据长度rlenn大于当前的第一缓冲器的空闲地址数量,表示当前的第一缓冲器的剩余空间不足以存储存储器返回的第n个读子请求的读取数据,则不执行S300。需要说明的是,本实施例中第一缓冲器的空闲地址既不包括第一缓冲器中已经存储有数据的地址,也不包括第一缓冲器中拟用于存储之前读请求或读子请求的读取数据的地址。
本实施例中,按照先ar1,再ar2、再ar3、…、最后arN的顺序遍历ar,对于每一arn,均判断arn包括的数据长度rlenn是否小于等于当前的第一缓冲器的空闲地址数量,以及当前的读重映射表格rtab的空闲条目的数量是否大于等于1,若均是,才将radd’n写入rtab的一个空闲条目,并执行S300,以及再判断arn+1包括的数据长度rlenn+1是否小于等于当前的第一缓冲器的空闲地址数量,以及当前的读重映射表格rtab的空闲条目的数量是否大于等于1。如果出现对于某一arn,arn包括的数据长度rlenn大于当前的第一缓冲器的空闲地址数量,或者当前的读重映射表格rtab的空闲条目的数量为0,则等待,直至arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1。
S300,将arn和对应的ridn发送给存储器,以从存储器获取arn的读取数据;ridn为rtab中被写入radd’n的条目的id。
S400,如果接收到存储器返回的读取数据,则根据存储器返回的读取数据携带的条目的id确定拟将存储器返回的读取数据存储到第一缓存器的区域。
本实施例中,虽然按照先ar1,再ar2、再ar3、…、最后arN的顺序将ar包括的N个读子请求发送给存储器,但是存储器返回的读取数据并不一定是按照先返回ar1的读取数据、再返回ar2的读取数据、再返回ar3的读取数据、…、最后返回arN的读取数据的顺序。为了解决该乱序返回的情况,本实施例在将arn发送给存储器时,同时还会将arn对应的ridn发送给存储器,ridn为rtab中被写入radd’n的条目的id,由此,当存储器返回某读子请求的读取数据时,可以根据该读子请求的读取数据携带的条目的id知晓rtab中与该读子请求对应的条目,该对应的条目中的首地址即为拟将该读子请求的读取数据存储到第一缓冲器中的首地址。例如,如果存储器返回的读取数据携带的条目的id为rtab中用于存储radd’n的条目的id,则拟将存储器返回的读取数据存储到第一缓存器的区域为所述第一缓冲器中首地址为radd’n且包括rlenn个地址的区域。
优选的,S400还包括:如果存储器返回的读取数据携带的条目的id为rtab中用于存储radd’n的条目的id,则在将存储器返回的读取数据存储到所述第一缓冲器后,将所述rtab中用于存储radd’n的条目中的首地址删除,并将rtab中用于存储radd’n的条目标志为空闲条目。由此,本实施例可以实现对读重映射表格中条目的复用,提高读重映射表格中条目的利用率。
S500,按照预设的顺序获取第一缓冲器中存储的读取数据,并将获取的读取数据按照获取时间从先到后的顺序组成目标数据后发送给读请求的请求方;所述预设的顺序为先获取regn中存储的读取数据,再获取regn+1中存储的读取数据,regn为拟将rdatan存储到的第一缓冲器的区域。
具体的,S500包括:
S510,初始化第一变量k=1。
S520,判断regk中是否存在数据。
S530,若存在,则获取regk中存储的数据,并进入S540;若不存在,则返回S520。
S540,若k=N,则进入S550;若k<N,则更新k=k+1,重复S520-S530,直至k=N,进入S550。
S550,将获取的读取数据按照获取时间从先到后的顺序组成目标数据,并将所述目标数据发送给读请求的请求方。
本实施例获取了读请求被拆分的N个读子请求,每个读子请求包括对应读子请求对应的起始地址、数据长度和单个数据的大小;对于ar中的每一arn,如果arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将拟将arn对应的读取数据存储到第一缓冲器中的首地址记录到读重映射表格中的一个空闲条目,由此,根据读重映射表格可以获取与每一读子请求对应的首地址,首地址是拟将存储器返回的读取数据存储到第一缓冲器中的首地址;本实施例在将arn发送给存储器时,同时还会将arn对应的ridn发送给存储器,ridn为rtab中被写入radd’n的条目的id,由此,当存储器返回某读子请求的读取数据时,可以根据该读子请求的读取数据携带的条目的id知晓rtab中与该读子请求对应的条目,该对应的条目中的首地址即为拟将该读子请求的读取数据存储到第一缓冲器中的首地址;本实施例按照从ar1在第一缓冲器中的存储区域到arN在第一缓冲器中的存储区域的顺序依次获取第一缓冲器中存储的N个读子请求的读取数据,并根据获取的先后顺序将获取的读取数据组成目标数据发送给读请求的请求方,由此,读请求的请求方接收到的是读请求的全部读取数据,且接收的目标数据中读取数据的前后顺序也是正确的,解决了现有技术中由于出现读请求被拆分为多笔读子请求的情况导致的读请求的请求方接收到多笔乱序的读取数据的问题。
作为第一具体实施方式,所述第一缓冲器的数量为1。
作为第二具体实施方式,所述第一缓冲器的数量大于等于2,所述rtab的第q个条目还包括拟将rdata’q存储到的第一缓冲器的ID;所述当前的第一缓冲器的空闲地址数量即为当前的两个第一缓冲器的空闲地址数量之和,如果接收到rdatan,则将rdatan存储到对应第一缓冲器中拟将rdatan存储到的区域,所述对应第一缓冲器即ID为rtab中arn对应的条目中包括的第一缓冲器的ID的第一缓冲器。
作为第三具体实施方式,所述第一缓冲器的数量等于Q,每一条目对应一个第一缓冲器,如果radd’n被写入rtab的第q’个空闲条目,则将与所述第q’个空闲条目对应的第一缓冲器作为拟将rdatan存储到的第一缓冲器;而且,S200中判断rlenn是否小于等于当前的第一缓冲器的空闲地址数量即判断rlenn是否小于等于当前的与所述第q’个空闲条目对应的第一缓冲器的空闲地址数量;且如果接收到rdatan,则将rdatan存储到与所述第q’个空闲条目对应的第一缓冲器中拟将rdatan存储到的区域。
实施例二:
本实施例相较于实施例一,还考虑到实际应用场景中会出现一个写请求被拆分为多笔写子请求发送给存储器的情况。在该情况下,存储器会分多笔返回写请求对应的响应且存储器返回每笔写子请求对应的响应的顺序不一定与向存储器发送写子请求的顺序一致,但是,对于写请求的请求方而言,其发送的是一个写请求,其想要接收的是一个写请求对应的响应,而不是乱序的多笔写子请求对应的响应。
为了解决出现上述情况导致的写请求的请求方接收到多笔乱序的响应的问题,本实施例的基于地址重映射的读存储器数据的方法还包括:
S10,获取写请求的写子请求aw,aw=(aw1,aw2,…,awm,…,awM),awm为对写请求进行拆分得到的第m个写子请求,awm包括awm对应的起始地址waddm、数据长度wlenm和单个数据的大小,waddj位于waddj+1之前,m的取值范围为1到M,j的取值范围为1到M-1,M为对写请求进行拆分得到的写子请求的数量。
本实施例中,awm对应的起始地址waddm为awm拟写入存储器的起始地址。本领域技术人员知悉,对于带有burst功能的协议,写请求包括起始地址、数据长度和单个数据的大小信息,当存储器接收到写请求后,就可以解析写请求得到写请求的请求方拟写入存储器的位置,将写请求对应的写数据写入该位置,并在写入成功后给写请求的请求方返回一个写入成功或失败的响应。本领域技术人员知悉,现有技术中任何的带有burst功能的协议均落入本发明的保护范围,比如,带有burst功能协议为axi4协议。
本实施例中,一个写子请求对于存储器而言也是一个写请求,本实施例只是利用写子请求来区别一个写请求是否经过拆分而已,其中,将未经拆分和拆分之前的写请求命名为写请求,将拆分后得到的写请求命名为写子请求。
本实施例中不对将写请求拆分的方式进行限制,本领域技术人员知悉,现有技术中任何的拆分方式均落入本发明的保护范围。
S20,遍历aw,如果当前的第二缓冲器的空闲地址数量大于等于1,且当前的写重映射表格wtab的空闲条目的数量大于等于1,则将wadd’m写入wtab的一个空闲条目,并进入S30;wadd’m为拟将wresm存储到第二缓冲器中的地址,wresm为存储器返回的awm的响应;wtab包括的条目的数量为P,wtab的第i个条目包括用于标志第i个条目是否为空闲条目的标识和拟将wres’i存储到第二缓冲器中的地址;wres’i为第二缓冲器返回的第i个条目对应的写请求或写子请求的响应。
本实施例中预先构建了一个写重映射表格,该写重映射表格用于记录拟将存储器返回的写请求或写子请求对应的响应存储到第二缓冲器中的地址,写重映射表格的初始化为空表格,当有写请求或写子请求对应的响应拟存储到第二缓冲器中的地址写入写重映射表格时,一个写请求或写子请求对应的响应拟存储到第二缓冲器中的地址写入写重映射表格的一个条目。本实施例中,第二缓冲器指的是用于存储写请求或写子请求对应的响应的缓冲器。
本实施例中写重映射表格包括的条目的数量为P指的是写重映射表格可以用于记录P个写请求或写子请求对应的响应拟存储到第二缓冲器中的地址,当某条目记录有地址时,该条目为非空闲条目,该条目对应的标识为1,1用于标志该条目为非空闲条目;当某条目没有记录地址时,该条目为空闲条目,该条目对应的标识为0,0用于标志该条目为空闲条目。本实施例中,如果当前的写重映射表格wtab的空闲条目的数量为0,则不执行S30。
本实施例中每一awm对应一个响应,一个响应占用第二缓冲器的1个地址。本实施例中,如果当前的写重映射表格wtab的空闲条目的数量为0,则不执行S30。需要说明的是,本实施例中第二缓冲器的空闲地址既不包括第二缓冲器中已经存储有数据的地址,也不包括第二缓冲器中拟用于存储之前写请求或写子请求对应的响应的地址。
本实施例中,按照先aw1,再aw2、再aw3、…、最后awM的顺序遍历aw,对于每一awm,均判断当前的第二缓冲器的空闲地址数量是否大于等于1,以及当前的写重映射表格wtab的空闲条目的数量是否大于等于1,若均是,才将wadd’m写入wtab的一个空闲条目,并执行S30,以及再一次判断判断当前的第二缓冲器的空闲地址数量是否大于等于1,以及当前的写重映射表格wtab的空闲条目的数量是否大于等于1,若均是,才将wadd’m+1写入wtab的一个空闲条目,并执行S30。如果出现当前的第二缓冲器的空闲地址数量为0,或者当前的写重映射表格wtab的空闲条目的数量为0,则等待,直至当前的第二缓冲器的空闲地址数量大于等于1,且当前的写重映射表格wtab的空闲条目的数量大于等于1,才将wadd’m写入wtab的一个空闲条目。
S30,将awm、awm对应的写数据和widm发送给存储器,以将awm对应的写数据写入存储器;widm为wtab中被写入wadd’m的条目的id。
S40,如果接收到存储器返回的响应,则根据存储器返回的响应携带的条目的id确定拟将存储器返回的响应存储到第二缓存器的地址。
本实施例中,虽然按照先aw1,再aw2、再aw3、…、最后awM的顺序依次将aw包括的M个写子请求和对应的写数据发送给存储器,但是存储器返回的响应并不一定是按照先返回aw1对应的响应、再返回aw2对应的响应、再返回aw3对应的响应、…、最后返回awM对应的响应的顺序。为了解决该乱序返回的情况,本实施例在将写子请求和对应的写数据发送给存储器时,还将写子请求对应的条目的id发送给存储器,由此,当存储器返回某写子请求的响应时,可以根据该写子请求的响应携带的条目的id知晓wtab中与该写子请求对应的条目,该对应的条目中的地址即为拟将该写子请求的响应存储到第二缓冲器中的地址。例如,如果存储器返回的响应携带的条目的id为wtab中用于存储wadd’m的条目的id,则拟将存储器返回的响应存储到第二缓存器的地址为wadd’m。
优选的,S40还包括:如果存储器返回的响应携带的条目的id为wtab中用于存储wadd’m的条目的id,则在将存储器返回的响应存储到wadd’m后,将wtab中用于存储wadd’m的条目中的地址删除,并将wtab中用于存储wadd’m的条目标志为空闲条目。由此,本实施例可以实现对写重映射表格中条目的复用,提高写重映射表格中条目的利用率。
S50,获取第二缓冲器中目标区域存储的响应,如果所述目标区域的每一地址均存储有响应且所述目标区域存储的响应中存在错误响应,则向写请求的请求方返回一个错误响应;如果所述目标区域的每一地址均存储有响应且所述目标区域存储的响应均为成功响应,则向写请求的请求方返回一个成功响应;所述目标区域为首地址为wadd’1且包括M个地址的区域。
具体的,S50包括:
S51,初始化第二变量h=1。
S52,判断第二缓冲器中的地址wadd’h是否存储有响应。
S53,若存储有响应且响应为成功响应,则进入S54;若存储有响应且响应为错误响应,则进入S55;若不存在,则返回S52。
S54,若h=M,则进入S56;若h<M,则更新h=h+1,重复S52-S53,直至h=M,进入S56。
S55,若目标区域中各地址均存储有响应,则进入S57。
S56,向写请求的请求方返回一个成功响应。
S57,向写请求的请求方返回一个错误响应。
本实施例中,S55还包括判断目标区域中各地址是否均存储有响应的过程,该过程包括:
S551,若h<M,则更新h=h+1,进入S552;若h=M,则进入S555。
S552,判断第二缓冲器中的地址wadd’h是否存储有响应。
S553,若存储有响应,则进入S554;若没有存储响应,则进入S552。
S554,若h=M,则进入S555;若h<M,则更新h=h+1,重复S552-S553,直至h=M,进入S555。
S555,判断目标区域中各地址均存储有响应。
本实施例获取了写请求被拆分的M个写子请求,每个写子请求包括对应写子请求对应的起始地址、数据长度和单个数据的大小;对于aw中的每一awm,如果当前的第二缓冲器的空闲地址数量大于等于1,且当前的写重映射表格wtab的空闲条目的数量大于等于1,则wadd’m写入wtab的一个空闲条目,由此,基于写重映射表格可以获取与每一写子请求对应的响应拟存储到第二缓冲器中的地址;本实施例在将写子请求和对应的写数据发送给存储器时,还将写子请求对应的条目的id发送给存储器,由此,当存储器返回某写子请求的响应时,可以根据该写子请求的响应携带的条目的id知晓wtab中与该写子请求对应的条目,该对应的条目中的地址即为拟将该写子请求的响应存储到第二缓冲器中的地址。如果返回的M个响应中存在错误响应,则在存储器返回M个响应之后给写请求的请求方发送一个错误响应;如果返回的M个响应均为成功响应,则给写请求的请求方发送一个成功响应,由此,写请求的请求方接收到的是写请求对应的一个响应,解决了现有技术中由于出现写请求被拆分为多笔写子请求的情况导致的写请求的请求方接收到多笔乱序的响应的问题。
作为第一具体实施方式,所述第二缓冲器的数量为1。
作为第二具体实施方式,所述第二缓冲器的数量大于等于2,所述wtab的第i个条目还包括拟将wres’i存储到的第二缓冲器的ID;所述当前的第二缓冲器的空闲地址数量即为当前的两个第二缓冲器的空闲地址数量之和,如果接收到wresm,则将wresm存储到对应第二缓冲器中拟将wresm存储到的地址,所述对应第二缓冲器即ID为wtab中awm对应的条目中包括的第二缓冲器的ID的第二缓冲器。
作为第三具体实施方式,所述第二缓冲器的数量等于Q,每一条目对应一个第二缓冲器,如果wadd’m被写入wtab的第i’个空闲条目,则将与所述第i’个空闲条目对应的第二缓冲器作为拟将wresm存储到的第二缓冲器;所述当前的第二缓冲器的空闲地址数量即为wadd’m被写入wtab的第i’个空闲条目对应的第二缓冲器的空闲地址数量;如果接收到wresm,则将wresm存储到wadd’m被写入wtab的第i’个空闲条目对应的第二缓冲器。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。
Claims (7)
1.一种基于地址重映射的读存储器数据的方法,其特征在于,所述方法包括以下步骤:
S100,获取读请求的读子请求ar,ar=(ar1,ar2,…,arn,…,arN),arn为对读请求进行拆分得到的第n个读子请求,arn包括arn对应的起始地址raddn、数据长度rlenn和单个数据的大小,radde位于radde+1之前,n的取值范围为1到N,e的取值范围为1到N-1,N为对读请求进行拆分得到的读子请求的数量;
S200,遍历ar,如果arn包括的数据长度rlenn小于等于当前的第一缓冲器的空闲地址数量,且当前的读重映射表格rtab的空闲条目的数量大于等于1,则将radd’n写入rtab的一个空闲条目,并进入S300;radd’n为拟将rdatan存储到第一缓冲器中的首地址,rdatan为存储器返回的arn的读取数据;rtab包括的条目的数量为Q,rtab的第q个条目包括用于标志第q个条目是否为空闲条目的标识和拟将rdata’q存储到第一缓冲器中的首地址;rdata’q为存储器返回的第q个条目对应的读请求或读子请求的读取数据;
S300,将arn和对应的ridn发送给存储器,以从存储器获取arn的读取数据;ridn为rtab中被写入radd’n的条目的id;
S400,如果接收到存储器返回的读取数据,则根据存储器返回的读取数据携带的条目的id确定拟将存储器返回的读取数据存储到第一缓存器的区域;
S500,按照预设的顺序获取第一缓冲器中存储的读取数据,并将获取的读取数据按照获取时间从先到后的顺序组成目标数据后发送给读请求的请求方;所述预设的顺序为先获取regn中存储的读取数据,再获取regn+1中存储的读取数据,regn为拟将rdatan存储到的第一缓冲器的区域。
2.根据权利要求1所述的基于地址重映射的读存储器数据的方法,其特征在于,S400中,根据存储器返回的读取数据携带的条目的id确定拟将存储器返回的读取数据存储到第一缓存器的区域包括:如果存储器返回的读取数据携带的条目的id为rtab中用于存储radd’n的条目的id,则拟将存储器返回的读取数据存储到第一缓存器的区域为所述第一缓冲器中首地址为radd’n且包括rlenn个地址的区域。
3.根据权利要求1所述的基于地址重映射的读存储器数据的方法,其特征在于,S500包括:
S510,初始化第一变量k=1;
S520,判断regk中是否存在数据;
S530,若存在,则获取regk中存储的数据,并进入S540;若不存在,则返回S520;
S540,若k=N,则进入S550;若k<N,则更新k=k+1,重复S520-S530,直至k=N,进入S550;
S550,将获取的读取数据按照获取时间从先到后的顺序组成目标数据,并将所述目标数据发送给读请求的请求方。
4.根据权利要求2所述的基于地址重映射的读存储器数据的方法,其特征在于,S400还包括:如果存储器返回的读取数据携带的条目的id为rtab中用于存储radd’n的条目的id,则在将存储器返回的读取数据存储到所述第一缓冲器后,将所述rtab中用于存储radd’n的条目中的首地址删除,并将rtab中用于存储radd’n的条目标志为空闲条目。
5.根据权利要求1所述的基于地址重映射的读存储器数据的方法,其特征在于,所述第一缓冲器的数量为1。
6.根据权利要求1所述的基于地址重映射的读存储器数据的方法,其特征在于,所述第一缓冲器的数量大于等于2,所述rtab的第q个条目还包括拟将rdata’q存储到的第一缓冲器的ID。
7.根据权利要求6所述的基于地址重映射的读存储器数据的方法,其特征在于,所述第一缓冲器的数量等于Q,每一条目对应一个第一缓冲器,如果radd’n被写入rtab的第q’个空闲条目,则将与所述第q’个空闲条目对应的第一缓冲器作为拟将rdatan存储到的第一缓冲器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410490749.2A CN118113230B (zh) | 2024-04-23 | 2024-04-23 | 一种基于地址重映射的读存储器数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410490749.2A CN118113230B (zh) | 2024-04-23 | 2024-04-23 | 一种基于地址重映射的读存储器数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118113230A true CN118113230A (zh) | 2024-05-31 |
CN118113230B CN118113230B (zh) | 2024-07-12 |
Family
ID=91221073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410490749.2A Active CN118113230B (zh) | 2024-04-23 | 2024-04-23 | 一种基于地址重映射的读存储器数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118113230B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091895A1 (en) * | 2000-08-09 | 2002-07-11 | Haines Jonathan W. | Sequential vectored buffer management |
US20140025921A1 (en) * | 2012-07-19 | 2014-01-23 | Jmicron Technology Corp. | Memory control method utilizing main memory for address mapping and related memory control circuit |
KR20140088660A (ko) * | 2013-01-03 | 2014-07-11 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN105681222A (zh) * | 2016-03-03 | 2016-06-15 | 深圳市同创国芯电子有限公司 | 一种数据接收缓存方法、装置及通信*** |
WO2018133414A1 (zh) * | 2017-01-20 | 2018-07-26 | 深圳市中兴微电子技术有限公司 | 切包方法、请求处理方法、装置和计算机存储介质 |
US20230120184A1 (en) * | 2021-10-19 | 2023-04-20 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for ordered access of data in block modified memory |
CN116303156A (zh) * | 2022-11-28 | 2023-06-23 | 深圳云豹智能有限公司 | 读数据量处理装置、方法、芯片、电子设备和存储介质 |
CN117591012A (zh) * | 2023-11-17 | 2024-02-23 | 郑州云海信息技术有限公司 | 一种读写请求处理方法、装置、电子设备及存储介质 |
-
2024
- 2024-04-23 CN CN202410490749.2A patent/CN118113230B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091895A1 (en) * | 2000-08-09 | 2002-07-11 | Haines Jonathan W. | Sequential vectored buffer management |
US20140025921A1 (en) * | 2012-07-19 | 2014-01-23 | Jmicron Technology Corp. | Memory control method utilizing main memory for address mapping and related memory control circuit |
KR20140088660A (ko) * | 2013-01-03 | 2014-07-11 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN105681222A (zh) * | 2016-03-03 | 2016-06-15 | 深圳市同创国芯电子有限公司 | 一种数据接收缓存方法、装置及通信*** |
WO2018133414A1 (zh) * | 2017-01-20 | 2018-07-26 | 深圳市中兴微电子技术有限公司 | 切包方法、请求处理方法、装置和计算机存储介质 |
US20230120184A1 (en) * | 2021-10-19 | 2023-04-20 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for ordered access of data in block modified memory |
CN116303156A (zh) * | 2022-11-28 | 2023-06-23 | 深圳云豹智能有限公司 | 读数据量处理装置、方法、芯片、电子设备和存储介质 |
CN117591012A (zh) * | 2023-11-17 | 2024-02-23 | 郑州云海信息技术有限公司 | 一种读写请求处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118113230B (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10241919B2 (en) | Data caching method and computer system | |
CN106776368B (zh) | 一种数据读取时的缓存管理方法、装置及*** | |
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US20070283086A1 (en) | Write caching random data and sequential data simultaneously | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US6457105B1 (en) | System and method for managing data in an asynchronous I/O cache memory | |
US20100115190A1 (en) | System and method for processing read request | |
CN110555001A (zh) | 数据处理方法、装置、终端及介质 | |
WO2017091984A1 (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
CN109144413A (zh) | 一种元数据管理方法及装置 | |
CN109240944A (zh) | 一种基于可变长缓存行的数据读写方法 | |
EP4332781A1 (en) | Data processing method and apparatus, and cache, processor and electronic device | |
CN115167778A (zh) | 存储的管理方法、***及服务器 | |
CN118113230B (zh) | 一种基于地址重映射的读存储器数据的方法 | |
WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器*** | |
CN112214178B (zh) | 一种存储***、数据读取方法及数据写入方法 | |
CN118377422A (zh) | 一种基于地址重映射的写存储器数据的方法 | |
CN116860170A (zh) | 一种数据处理方法、装置、设备、介质及固态硬盘 | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和*** | |
CN116825156A (zh) | 永久存储装置、主机及永久存储装置的控制方法 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN115794366A (zh) | 一种内存预取方法及装置 | |
CN114461681A (zh) | 一种缓存内容管理方法、装置、电子设备和存储介质 | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus |
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 |