CN108027765B - 一种内存访问方法以及计算机系统 - Google Patents
一种内存访问方法以及计算机系统 Download PDFInfo
- Publication number
- CN108027765B CN108027765B CN201680004227.0A CN201680004227A CN108027765B CN 108027765 B CN108027765 B CN 108027765B CN 201680004227 A CN201680004227 A CN 201680004227A CN 108027765 B CN108027765 B CN 108027765B
- Authority
- CN
- China
- Prior art keywords
- address
- row
- row address
- access
- memory
- 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
Images
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
Abstract
一种内存访问方法,用于降低内存访问延时,该方法包括:内存控制器获取访问队列中的第二访问请求(408),其中,所述访问队列中至少包括第一访问请求以及所述第二访问请求,所述第二访问请求中包括第二行地址以及第二列地址;所述内存控制器确定所述第二行地址命中第二地址范围(409),其中,所述第二地址范围中的第三行地址指向的行处于激活状态,所述第二行地址与所述第三行地址不同;所述内存控制器根据所述第二访问请求向所述控制电路发送第二访问指令(410),所述第二访问指令中包含有所述第二列地址以及第二行偏移,其中,所述第二行偏移为所述第二行地址与所述第三行地址的偏移量。
Description
技术领域
本发明涉及通信领域,尤其涉及一种内存访问方法以及计算机系统。
背景技术
在现有的计算机系统中,内存通常由动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)组成。在由非易失性存储器(non-volatile memory,NVM)组成的内存的情况下,NVM接在标准双倍数据速率(Double Data Rate,DDR)总线上的。在NVM中,具有一部分可以被内存控制器通过双倍数据速率(Double Data Rate,DDR)总线访问的寄存器空间,寄存器空间通常包含:配置寄存器空间、请求完成队列、请求队列、数据buffer等。
在NVM作为内存的情况下,内存控制器访问NVM的过程中,通常采用访问DRAM的访问方法对NVM的寄存器进行访问。具体的,在访问过程中,内存控制器需要发送行激活指令和列激活指令去访问数据。例如,内存控制器在访问NVM中的某个寄存器时,首先需要发送行激活指令,以对待访问的寄存器所在的行进行激活操作,然后再对被激活的行中的相应的列执行激活操作,以确定待访问寄存器的存储位置。由于内存控制器处理每个访问请求都需发送激活指令,导致内存访问过程中的访问延时较大、访问效率不高。
发明内容
本申请提供了一种内存访问方法以及计算机系统,可以降低内存访问延时。
本申请第一方面提供一种内存访问方法,所述方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器。所述内存控制器获取访问队列中的第二访问请求,其中,所述访问队列中至少包括第一访问请求以及所述第二访问请求,所述第二访问请求中包括第二行地址以及第二列地址,所述第二行地址以及所述第二列地址用于指示所述第二访问请求待访问的所述多个寄存器中的第二寄存器在所述内存中的位置。在获取所述第二访问请求之后,所述内存控制器确定所述第二行地址命中第二地址范围。其中,所述第二地址范围中的第三行地址指向的行处于激活状态,所述第二行地址与所述第三行地址不同,所述第三行地址是所述内存控制器根据第一访问请求中的第一行地址确定的行地址。所述第一访问请求为所述内存控制器在处理所述第二访问请求之前处理的访问请求,所述第一行地址为所述第一访问请求访问的所述多个寄存器中的第一寄存器在所述内存中的行地址。所述内存控制器根据所述第二访问请求向所述内存中的所述控制电路发送第二访问指令,所述第二访问指令中包含有所述第二列地址以及第二行偏移。其中,所述第二行偏移为所述第二行地址与所述第三行地址的偏移量。在获得所述第二访问指令之后,所述控制电路根据所述第三行地址以及所述第二行偏移确定所述第二行地址,并根据所述第二列地址以及所述第二行地址对所述第二寄存器执行访问操作。
在本发明实施例中,当内存控制器获取访问队列中的第二访问请求时,内存控制器可以先根据第二访问请求中的第二行地址判断第二行地址是否命中第二地址范围。其中,第二地址范围中的第三行地址处于激活状态,且第二地址范围是根据所述第三行地址以及设定的偏移范围确定的。在内存控制器确定第二访问请求中的第二行地址命中第二地址范围的情况下,所述内存控制器向所述内存中的控制电路发送第二访问指令,以使控制电路能够根据所述第三行地址以及第二访问指令中携带的第二列地址、第二行地址偏移对所述第二访问请求待访问的第二寄存器进行访问操作。
根据本申请提供的内存访问方法,由于第二地址范围是根据已经被激活的第三地址以及设置的偏移范围确定的一个地址范围,若访问请求中的待访问的第二行地址命中所述第二地址范围,就不需要再发送激活指令,而可以直接向内存发送访问指令。根据这种方式,在处理多个内存访问请求时,能够减少了内存控制器和内存之间交换的信令的数量,降低了内存访问延时,提高了内存访问效率。
结合本申请第一方面,在本申请第一方面的第一种可能的实现方式中,所述内存控制器获取所述访问队列中的第一访问请求,其中,所述第一访问请求中包括第一行地址以及第一列地址,所述第一行地址以及所述第一列地址用于确定所述第一寄存器在所述内存中的位置。在获取第一访问请求之后,所述内存控制器根据所述第一行地址以及所述偏移范围确定第一地址范围,所述第一地址范围中包括所述第一行地址。所述内存控制器在所述第一地址范围中选择第三行地址。所述内存控制器根据所述第三行地址向所述内存中的控制电路发送激活指令,所述激活指令中包含有所述第三行地址。所述内存控制器根据所述第一列地址向所述内存中的控制电路发送第一访问指令,其中,所述第一访问指令中包含有所述第一列地址以及第一行偏移,所述第一行偏移用于指示所述第一行地址与所述第三行地址的偏移量。在获得所述激活指令和第一访问指令之后,所述控制电路根据所述第三行地址以及所述第一行偏移确定所述第一行地址。所述控制电路根据所述第一列地址以及所述第一行地址确定对所述第一寄存器执行访问操作。
根据本申请提供的内存访问方法,内存控制器在第一访问请求处理之后,会根据第三行地址和偏移范围确定一个第二地址范围,也就是行命中范围。从而内存控制器在处理第二访问请求的过程中,若内存控制器确定第二访问请求中的第二行地址命中所述第二地址范围,则内存控制器不需要再向所述内存发送激活命令,从而在处理多个访问请求的情况下,根据本发明实施例提供的内存访问方法,能够降低内存访问延时。
结合本申请第一方面的第一种可能的实现方式中,在本申请第一方面的第二种可能的实现方式中,所述第二地址范围是所述内存控制器根据所述第三地址以及所述偏移范围确定的地址范围。
结合本申请第一方面的第一种可能的实现方式中,在本申请第一方面的第三种可能的实现方式中,内存控制器在所述第一地址范围中选择第三行地址可以有以下几种实现方式,这几种实现方式都是可能的设计。
(1)内存控制器选择所述第一地址范围中待访问次数最多的行的地址作为所述第三行地址;
(2)所述内存控制器选择所述第一地址范围中一个行地址作为所述第三行地址,其中,根据所述第三行地址获得的所述第二地址范围中待访问请求的数量最多;
(3)所述内存控制器选择所述第一地址范围中一个行地址作为所述第三行地址,其中,根据所述第三行地址获得的所述第二地址范围中待访问请求的行地址的数量最多;
(4)内存控制器选择所述第一地址范围中的任意一个行地址作为所述第三行地址。
应理解,这里第三行地址的选择可能还有其他实现方式,具体不做限定。
在本发明实施例中,为内存控制器在所述第一地址范围中选择第三行地址提供了几种可选的方案。可以理解的是,在选择的第三行地址时,若根据选择的第三行地址确定的第二地址范围被后续的访问请求中的行地址命中的机会越大,或者说命中率越高,则在处理后续的访问请求时需要发送的激活指令越少,则内存访问延时越小。
结合本申请第一方面,在本申请第一方面的第四种可能的实现方式中,所述第二行偏移根据所述第二列地址中的部分比特位获得。
结合本申请第一方面的第一种可能的实现方式中,在本申请第一方面的第五种可能的实现方式中,所述第一行偏移根据所述第一列地址中的部分比特位获得。。
在上述的这两种实现方式中,第一行偏移和第二行偏移分别对应填充在第一列地址的部分比特位和第二列地址的部分比特位,节约了传输的空间,充分利用了资源。
本申请第二方面提供一种内存控制器,具有实现对应于上述第一方面提供的内存访问方法中内存控制器实现的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
本申请第三方面提供一种计算机系统,该计算机系统中可包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,所述内存控制器用于执行上述第一方面内存访问方法中内存控制器所执行的功能,所述控制电路用于执行上述第一方面内存访问方法中控制电路所执行的功能,此处不再详细赘述。
本申请第四方面提供一种计算机存储介质,用于储存为上述内存访问方法中所用的计算机软件指令,其包含用于执行上述第一方面为内存控制器与控制电路所设计的程序。该存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例的附图。
图1本发明实施例中提供的一种计算机系统的架构图;
图2为本发明实施例提供的一种内存控制器的结构示意图;
图3为本发明实施例提供的一种内存的结构示意图;
图4为本发明实施例提供的一种内存访问方法的信令示意图;
图5为本发明实施例提供的一种访问请求队列的示意图;
图6为本发明实施例中列地址的示意图。
具体实施方式
本发明实施例提供了一种内存访问方法,内存控制器以及计算机系统用于降低内存访问延时。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在介绍本发明实施例之前,先对内存访问原理进行一个简单的介绍,便于理解本发明技术方案。内存访问的原理其实和表格的检索原理一样,先指定一个行Row,再指定一个列Column,我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑Bank(LogicalBank,下面简称Bank)。这个存储阵列是一个NXN的阵列,B代表Bank地址编号,C代表列地址编号,R代表行地址编号。在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,列地址命令与具体的操作命令(是读还是写)也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。
根据相关的标准,从行激活命令到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS的延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的I/O接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是列地址脉冲选通潜伏期(CASLatency,CL)。
在DRAM的内存访问中,假设内存控制器处理一个Bank中的访问请求,若该访问请求是一个行命中row hit的读,那么在两个读命令之间的间隔时间是tCCD;如果是一个行冲突row miss的读(又称为row conflict),那么内存控制器需先预充电precharge已经打开的行,然后再激活该访问请求所在的行,那么两个读命令之间至少需要从读命令发出到tRP之前的间隔时间(DRAM Read to Precharge Time,tRTP)+行预充电有效时间(RowPrecharge command Period,tRP)+行激活到读/写命令发出之前的间隔时间(DRAM RAS toCAS Delay,tRCD)。由此得出,内存访问中,若发生row conflict时,延时较大,是通过rowhit优先的乱序调度,减少row conflict发生几率,降低访问延时。
本发明技术方案主要应用于计算机系统,请参阅图1所示,图1为计算机系统的一个示意图,所述计算机系统包括内存控制器20以及内存30,内存控制器20与内存30通过标准双倍数据速率(Double Data Rate,DDR)总线10相连接,其中,DDR总线包含但不限于DDR2、DDR3或者DDR4以及其他符合本发明特征的总线。
下面先针对内存控制器20做一个简要的说明,请参阅图2所示,图2为内存控制器的一个结构示意图。
在图2所示的实施例中,内存控制器20可包括:请求队列模块201,内存Bank队列模块202,调度和命令生成器203,地址访问确定模块204,Bank状态模块205。需要说明的是,并非所有的内存控制器都具有Bank队列模块。
请求队列模块201,用来记录来自于处理器的内存访问请求。Bank队列模块202,用来根据内存访问请求中的Bank地址记录内存访问请求。调度和命令生成器203,用来调度内存访问请求的执行顺序,且生成DDR总线规定的一系列内存访问指令。地址访问确定模块204,用来确定哪些请求是属于寄存器访问的。内存状态模块205,用来记录各个Bank的状态,以及当前激活的行的地址等信息。
下面针对本发明实施例的内存30做一个简要的说明,请参阅图3所示,为本发明实施例中内存的一个结构示意图。本发明实施例涉及的内存30包括控制电路301和存储介质302。其中,控制电路301中可以包括多个寄存器或多个数据buffer,所述多个寄存器或多个数据buffer用于缓存数据或指令。需要说明的是,本发明实施例中所指的内存主要是以非易失性存储器(NVM)为基础的内存。换一种表达方式,图3所示的存储介质302可以为非易失性的存储介质。
在图3所示的实施例中,内存为非易失性存储器(Non-Volatile Memory,NVM)。本领域技术人员可以知道,由于新型NVM能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储器中,因而能够作为内存使用。与动态随机存储器(Dynamic RandomAccess Memory,DRAM)相比,由于NVM具有非易失性的特点,从而能够更好地保存数据。在本发明实施例中,可以将能够作为内存使用的非易失性存储器称为存储级内存(StorageClass Memory,SCM)。需要说明的是,在本发明实施例中,图3所示的NVM可以包括:相变存储器(Phase Change Memory,PCM),阻变存储器(Resistive Random Access Memory,RRAM)、磁性存储器(Magnetic Random Access Memory,MRAM)或铁电式存储器(FerroelectricRandom Access Memory,FRAM)等新型非易失性存储器,在此不对本发明实施例中的NVM的具体类型进行限定。
控制电路301主要可根据行地址和列地址对寄存器执行访问操作,例如常见的读/写操作。
上述对内存控制器20做了一个介绍,进一步的,在本发明实施例中,内存状态模块205还需记录行地址偏移方式。例如偏移方式向上是指真实行地址=行地址+行偏移范围;偏移方式向下是指真实行地址=行地址-行偏移范围。内存状态模块205还需记录行地址偏移范围,行地址偏移范围由从读/写命令时列地址中取多少位作为行地址偏移范围决定,如果取突发顺序的3个bit为行偏移地址,那么偏移范围最大就是8个行。
本发明技术方案应用于计算机系统,其中,计算机系统中涉及的内存控制器与控制电路用于执行本发明实施例中的内存访问方法中用到的步骤。下面对本发明的方法实施例进行说明,请参阅图4所示,图4为本发明实施例提供的一种内存访问方法的信令示意图。如图4所示,所述方法包括下述步骤。
401、内存控制器获取访问队列中的第一访问请求,其中,第一访问请求中包括第一行地址以及第一列地址,第一行地址以及第一列地址用于确定第一寄存器在内存中的位置;
在内存访问中,内存控制器先获取访问队列中的第一访问请求,第一访问请求中包括第一行地址以及第一列地址,第一行地址以及第一列地址用于确定第一寄存器在内存中的位置。内存控制器会接收多个内存访问请求,可根据任意一种调度算法如先来先服务(First Come First Served,FCFS)、RF-FCFS(First ready,first come first serviced)等算法确定处理哪个内存访问请求,请参考图5进行理解,图5为本发明实施例提供的一种访问请求队列的示意图。示例性的,假设内存控制器根据FCFS调度算法决定处理第一内存访问请求,该第一内存访问请求包括的第一行地址为R15,第一列地址为C10。
402、内存控制器根据第一行地址以及偏移范围确定第一地址范围,第一地址范围中包括第一行地址;
内存控制器再根据第一行地址以及偏移范围确定第一地址范围,第一地址范围中包括第一行地址,其中,偏移范围是根据第二列地址中的空闲位的位数确定的,一般取突发顺序的3个bit为行偏移地址,那么偏移范围就为23=8。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。例如,上述的第一行地址为R15,如果预设的偏移方式是上偏,第一地址范围是第一行地址减偏移范围,那么第一地址范围为【R8,R15】;如果预设的偏移方式是下偏,第一地址范围是第一行地址加偏移范围为【R15,R22】。
在本发明实施例中,预设的偏移方式还有其他形式,偏移范围也可以设定为其他值,若预设的偏移方式向上,则偏移范围为【0,7】,若预设的偏移方式向下,则偏移范围为【-7,0】,若预设的偏移方式中向上,则偏移范围为【-3,4】,若预设的偏移方式中向下,则偏移范围为【-4,3】等。
403、内存控制器在第一地址范围中选择第三行地址;
内存控制器确定第一地址范围之后,在第一地址范围中选择第三行地址,其中,第三行地址的选择可以以下有几种方案:(1)在第一地址范围中任意选择一个行地址;(2)第三行地址对应的第二地址范围中待访问请求的行地址数量最多,第三行地址属于第一地址范围;(3)第三行地址对应的第二地址范围中待访问请求的数量最多,第三行地址属于第一地址范围;(4)内存控制器选择第一地址范围中待访问次数最多的行的地址作为第三行地址。
方案(2)、方案(3)和方案(4)是优选的方案,具体第三行地址的选择方式不作限定。需要说明的是,第二地址范围由上述得知,若预设的偏移方式向上,第二地址范围为第三行地址减偏移范围,若预设的偏移方式向下,第二地址范围为第三行地址加偏移范围。
示例性的,对方案(2)和方案(3)进一步说明,若第一地址范围为【R8,R15】内,那么第二地址范围的偏移方式也是向上,假设在第一地址范围内每个行地址都是发送出去的行地址,即第三行地址,则每个行地址都有对应的一个第二地址范围,而对应的第二地址范围内记录有待访问请求的行地址数量或者待访问请求的数量,如表1所示。由表1得知,R12对应的第二地址范围内待访问请求的行地址的数量最多,所以内存控制器选择R12为第三行地址,R13对应的第二地址范围内待访问请求的数量最多,也可以选择R13为第三行地址。这里选R12作为第三行地址为例进行后续说明。
表1
404、内存控制器根据第三行地址向内存中的控制电路发送激活指令,激活指令中包含有第三行地址;
内存控制器选好第三行地址之后,根据第三行地址通过DDR总线向内存中的控制电路发送激活指令,其中,激活指令中包含有第三行地址R12。DDR总线也可以是DDR2、DDR3或者DDR4以及其他符合本发明特征的总线。该激活指令用于指示控制电路激活第三行地址所指向的行。实际应用中,在DRAM作为内存的情况下,激活指令用于指示将该行中的数据存储到行缓冲器(row buffer)中。在本发明实施例中,激活指令用于告诉内存要访问的寄存器的行地址。内存控制器在向内存中的控制电路发送激活指令之后,根据第三行地址和偏移范围确定第二地址范围。
405、内存控制器根据第一列地址向内存中的控制电路发送第一访问指令,其中,第一访问指令中包含有第一列地址以及第一行偏移,第一行偏移用于指示第一行地址与第三行地址的偏移量;
内存控制器向控制电路发送激活指令再经过tRCD延时后,再根据第一列地址通过DDR总线向控制电路发送第一访问指令,其中,第一访问指令中包含有第一列地址以及第一行偏移,实际上,第一访问指令中还包括具体的读/写命令,第一行偏移用于指示第一行地址与第三行地址的偏移量,内存控制器将第一行偏移填充在第一列地址中的空闲比特位,请参考图6进行理解,图6为列地址的示意图。
示例性的,上述的第一行地址为R15,第三行地址为R12,第一列地址为C10,第一行偏移为第一行地址与第三行地址的偏移量,为3,具体的第一访问指令为读指令。
需要说明的是,在本发明实施例中,第一内存访问请求中还可包括Bank的地址,那么,在步骤405中,第一访问指令中还可包括Bank的地址。
406、控制电路根据第三行地址以及第一行偏移确定第一行地址;
内存接收内存控制器发送的第一访问指令,控制电路根据第三行地址以及第一行偏移确定第一行地址;第三行地址为R12,第一行偏移为3,由前面的描述得知,预设的偏移方式向上,确定第一行地址为R15。
407、控制电路根据第一列地址以及第一行地址确定对第一寄存器执行访问操作。
控制电路接收第一列地址C10,再根据上述确定的第一行地址R15,确定对第一寄存器执行访问操作。第一访问指令为读指令,待访问数据行地址和列地址都确定之后,就可以读数据,即读的数据为表中的阴影部分,如表2所示。
表2
在处理完所述第一访问请求后,进一步的,本发明实施例提供的内存访问方法还可以包括下述步骤。
408、内存控制器获取访问队列中的第二访问请求,其中,访问队列中至少包括第一访问请求以及第二访问请求,第二访问请求中包括第二行地址以及第二列地址,第二行地址以及第二列地址用于指示第二访问请求待访问的多个寄存器中的第二寄存器在内存中的位置;
内存控制器执行完访问队列中的第一内存访问请求后,获取访问队列中的的第二访问请求,其中,该访问队列可认为是Bank队列,该访问队列中至少包括第一访问请求以及第二访问请求,第二访问请求中包括第二行地址以及第二列地址,第二行地址以及第二列地址用于指示第二访问请求待访问的多个寄存器中的第二寄存器在内存中的位置;示例性的,假设第二访问请求中包括的行地址为R13,列地址为C13。
409、内存控制器确定第二行地址命中第二地址范围,其中,第二地址范围中的第三行地址指向的行处于激活状态,第二行地址与第三行地址不同,第三行地址是内存控制器根据第一访问请求中的第一行地址确定的行地址,第一访问请求为内存控制器在处理第二访问请求之前处理的访问请求,第一行地址为第一访问请求访问的多个寄存器中的第一寄存器在内存中的行地址;
内存控制器确定第二行地址命中第二地址范围,其中,第二地址范围中的第三行地址指向的行处于激活状态,第二行地址与第三行地址不同,第三行地址是内存控制器根据第一访问请求中的第一行地址确定的行地址,第一访问请求为内存控制器在处理第二访问请求之前处理的访问请求,第一行地址为第一访问请求访问的多个寄存器中的第一寄存器在内存中的行地址。应理解,内存控制器会记录内存访问中各行的激活状态,在NVM的内存中,发了激活指令的行认为该行处于激活状态,或者,内存控制器根据第二行地址向NVM发送激活指令,该激活指令中包含有第二行地址。示例性的,在步骤403中,第三行地址R12对应的第二地址范围为【R12,R19】,确定第二行地址R13命中第二地址范围【R12,R19】。
410、内存控制器根据第二访问请求向控制电路发送第二访问指令,第二访问指令中包含有第二列地址以及第二行偏移,其中,第二行偏移为第二行地址与第三行地址的偏移量;
应理解,内存控制器确定第二行地址命中第二地址范围之后,不需要再向控制电路发送激活指令,内存控制器可根据第二访问请求通过DDR总线向控制电路发送第二访问指令,第二访问指令中包含有第二列地址以及第二行偏移,其中,第二行偏移为第二行地址与第三行地址的偏移量,内存控制器将第二行偏移填充在第二列地址中的空闲比特位,请参考图6进行理解,图6为列地址的示意图。
实际应用中,若第二行地址没有命中第二地址范围,则内存控制器待访问队列处于空闲状态时,则内存控制器20需要根据第二访问请求中的第二行地址选择待激活的一个行地址,并向控制电路301发送激活指令,以重新激活一个新的行。根据这种方式,在第二行地址没有命中第二地址范围的情况下,对第二访问请求的处理具体可以参照图4中步骤401至步骤407中对第一访问请求的处理方式进行处理。。
示例性的,因为在处理第一内存访问请求中,选择发送的第三行地址,第三行地址对应的第二地址范围中待访问请求的行地址的数量或者待访问请求的数量最多,那么,在处理第二内存访问请求中包括的第二行地址命中第二地址范围的概率就比较高,即行命中的概率较高。内存控制器向控制电路发送第二访问指令,第二访问指令为写指令,第二访问指令中包括第二列地址为C13,第二行偏移为第二行地址与第三行地址的偏移量1。
411、控制电路根据第三行地址以及第二行偏移确定第二行地址;
由于第二行地址命中第二地址范围,内存接收第二访问指令,控制电路根据第一内存访问请求中发送的激活指令中包括的第三行地址,以及接收的第二行偏移确定第二行地址,第三行地址为R12,第二行偏移为1,预设的偏移方式向上,由此得知,第二行地址为R13。
412、控制电路根据第二列地址以及第二行地址对第二寄存器执行访问操作。
控制电路接收第一列地址C13,再根据上述确定的第二行地址R13,确定对第二寄存器执行访问操作。待访问数据行地址,列地址都确定之后,就可以读数据,即写的数据为表中的阴影部分,如表3所示。
表3
在本发明实施例中,内存控制器处理第一访问请求时,发送的行地址为第三行地址,由第三行地址和偏移范围确定一个第二地址范围,这个范围也可以理解为行命中范围,内存控制器确定第二访问请求中包括的第二行地址命中第二地址范围,那么就是一个行命中的访问,内存控制器不需要再发送激活指令或者预充电指令等,降低了内存访问的延时。
本发明实施例还提供了一种计算机存储介质,用于储存为上述图4所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以降低内存访问的延时。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者其他非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (12)
1.一种内存访问方法,其特征在于,所述方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,所述方法包括:
所述内存控制器获取访问队列中的第二访问请求,其中,所述访问队列中至少包括第一访问请求以及所述第二访问请求,所述第二访问请求中包括第二行地址以及第二列地址,所述第二行地址以及所述第二列地址用于指示所述第二访问请求待访问的所述多个寄存器中的第二寄存器在所述内存中的位置;
所述内存控制器确定所述第二行地址命中第二地址范围,其中,所述第二地址范围中的第三行地址指向的行处于激活状态,所述第二行地址与所述第三行地址不同,所述第三行地址是所述内存控制器根据第一访问请求中的第一行地址确定的行地址,所述第一访问请求为所述内存控制器在处理所述第二访问请求之前处理的访问请求,所述第一行地址为所述第一访问请求访问的所述多个寄存器中的第一寄存器在所述内存中的行地址;
所述内存控制器根据所述第二访问请求向所述控制电路发送第二访问指令,所述第二访问指令中包含有所述第二列地址以及第二行偏移,其中,所述第二行偏移为所述第二行地址与所述第三行地址的偏移量;
所述控制电路根据所述第三行地址以及所述第二行偏移确定所述第二行地址;
所述控制电路根据所述第二列地址以及所述第二行地址对所述第二寄存器执行访问操作。
2.根据权利要求1所述的方法,其特征在于,在所述内存控制器获取第二访问请求之前,所述方法还包括:
所述内存控制器获取所述访问队列中的第一访问请求,其中,所述第一访问请求中包括第一行地址以及第一列地址,所述第一行地址以及所述第一列地址用于确定所述第一寄存器在所述内存中的位置;
所述内存控制器根据所述第一行地址以及偏移范围确定第一地址范围,所述第一地址范围中包括所述第一行地址;
所述内存控制器在所述第一地址范围中选择第三行地址;
所述内存控制器根据所述第三行地址向所述内存中的所述控制电路发送激活指令,所述激活指令中包含有所述第三行地址;
所述内存控制器根据所述第一列地址向所述内存中的控制电路发送第一访问指令,其中,所述第一访问指令中包含有所述第一列地址以及第一行偏移,所述第一行偏移用于指示所述第一行地址与所述第三行地址的偏移量;
所述控制电路根据所述第三行地址以及所述第一行偏移确定所述第一行地址;
所述控制电路根据所述第一列地址以及所述第一行地址对所述第一寄存器执行访问操作。
3.根据权利要求2所述的方法,其特征在于,所述第二地址范围是所述内存控制器根据所述第三行地址以及所述偏移范围确定的地址范围。
4.根据权利要求2所述的方法,其特征在于,所述内存控制器在所述第一地址范围中选择第三行地址,包括:
所述内存控制器选择所述第一地址范围中待访问次数最多的行的地址作为所述第三行地址。
5.根据权利要求2所述的方法,其特征在于,所述内存控制器在所述第一地址范围中选择第三行地址,包括:
所述内存控制器选择所述第一地址范围中一个行地址作为所述第三行地址,其中,根据所述第三行地址获得的所述第二地址范围中待访问请求的数量最多。
6.根据权利要求1所述的方法,其特征在于,所述控制电路根据所述第二列地址中的部分比特位获得所述第二行偏移。
7.一种计算机系统,其特征在于,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,
所述内存控制器用于:
获取访问队列中的第二访问请求,其中,所述访问队列中至少包括第一访问请求以及所述第二访问请求,所述第二访问请求中包括第二行地址以及第二列地址,所述第二行地址以及所述第二列地址用于指示所述第二访问请求待访问的所述多个寄存器中的第二寄存器在所述内存中的位置;
确定所述第二行地址命中第二地址范围,其中,所述第二地址范围中的第三行地址指向的行处于激活状态,所述第二行地址与所述第三行地址不同,所述第三行地址是所述内存控制器根据第一访问请求中的第一行地址确定的行地址,所述第一访问请求为所述内存控制器在处理所述第二访问请求之前处理的访问请求,所述第一行地址为所述第一访问请求访问的所述多个寄存器中的第一寄存器在所述内存中的行地址;
根据所述第二访问请求向所述控制电路发送第二访问指令,所述第二访问指令中包含有所述第二列地址以及第二行偏移,其中,所述第二行偏移为所述第二行地址与所述第三行地址的偏移量;
所述控制电路用于:
根据所述第三行地址以及所述第二行偏移确定所述第二行地址;
根据所述第二列地址以及所述第二行地址对所述第二寄存器执行访问操作。
8.根据权利要求7所述的计算机系统,其特征在于,
所述内存控制器还用于:
获取所述访问队列中的第一访问请求,其中,所述第一访问请求中包括第一行地址以及第一列地址,所述第一行地址以及所述第一列地址用于确定所述第一寄存器在所述内存中的位置;
根据所述第一行地址以及偏移范围确定第一地址范围,所述第一地址范围中包括所述第一行地址;
在所述第一地址范围中选择第三行地址;
根据所述第三行地址向所述内存中的所述控制电路发送激活指令,所述激活指令中包含有所述第三行地址;
根据所述第一列地址向所述内存中的控制电路发送第一访问指令,其中,所述第一访问指令中包含有所述第一列地址以及第一行偏移,所述第一行偏移用于指示所述第一行地址与所述第三行地址的偏移量;
所述控制电路还用于:
根据所述第三行地址以及所述第一行偏移确定所述第一行地址;
根据所述第一列地址以及所述第一行地址对所述第一寄存器执行访问操作。
9.根据权利要求8所述的计算机系统,其特征在于,所述第二地址范围是所述内存控制器根据所述第三行地址以及所述偏移范围确定的地址范围。
10.根据权利要求8所述的计算机系统,其特征在于,
所述内存控制器具体用于:
选择所述第一地址范围中待访问次数最多的行的地址作为所述第三行地址。
11.根据权利要求8所述的计算机系统,其特征在于,所述内存控制器具体用于:
选择所述第一地址范围中一个行地址作为所述第三行地址,其中,根据所述第三行地址获得的所述第二地址范围中待访问请求的数量最多。
12.根据权利要求7所述的计算机系统,其特征在于,所述控制电路还用于:
根据所述第二列地址中的部分比特位获得所述第二行偏移。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/076600 WO2017156747A1 (zh) | 2016-03-17 | 2016-03-17 | 一种内存访问方法以及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027765A CN108027765A (zh) | 2018-05-11 |
CN108027765B true CN108027765B (zh) | 2020-06-26 |
Family
ID=59850038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680004227.0A Active CN108027765B (zh) | 2016-03-17 | 2016-03-17 | 一种内存访问方法以及计算机系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108027765B (zh) |
WO (1) | WO2017156747A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117032595B (zh) * | 2023-10-09 | 2024-01-23 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
US7533231B1 (en) * | 2002-06-20 | 2009-05-12 | Mobley Kenneth J | Method and circuit for increasing the memory access speed of an enhanced synchronous memory |
CN102043729A (zh) * | 2009-10-20 | 2011-05-04 | 杭州华三通信技术有限公司 | 动态随机访问存储器的内存管理方法及系统 |
CN102812518A (zh) * | 2010-01-28 | 2012-12-05 | 惠普发展公司,有限责任合伙企业 | 存储器存取方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8370603B2 (en) * | 2008-12-23 | 2013-02-05 | Apple Inc. | Architecture for address mapping of managed non-volatile memory |
US20100287329A1 (en) * | 2009-05-06 | 2010-11-11 | Apple Inc. | Partial Page Operations for Non-Volatile Memory Systems |
US20130275699A1 (en) * | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US20160232103A1 (en) * | 2013-09-26 | 2016-08-11 | Mark A. Schmisseur | Block storage apertures to persistent memory |
-
2016
- 2016-03-17 WO PCT/CN2016/076600 patent/WO2017156747A1/zh active Application Filing
- 2016-03-17 CN CN201680004227.0A patent/CN108027765B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533231B1 (en) * | 2002-06-20 | 2009-05-12 | Mobley Kenneth J | Method and circuit for increasing the memory access speed of an enhanced synchronous memory |
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
CN102043729A (zh) * | 2009-10-20 | 2011-05-04 | 杭州华三通信技术有限公司 | 动态随机访问存储器的内存管理方法及系统 |
CN102812518A (zh) * | 2010-01-28 | 2012-12-05 | 惠普发展公司,有限责任合伙企业 | 存储器存取方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017156747A1 (zh) | 2017-09-21 |
CN108027765A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740263B2 (en) | Apparatuses and methods for variable latency memory operations | |
JP6169658B2 (ja) | 有向自動リフレッシュ同期 | |
KR102145401B1 (ko) | 메모리 동작 파라미터에 대한 다수의 파라미터 코드를 저장 및 기록하기 위한 방법 및 장치 | |
CN109074333A (zh) | 非确定性存储器协议 | |
EP1579335B1 (en) | Read-write switching method for a memory controller | |
CN109814811B (zh) | 一种减小NVMe SSD响应延迟影响高速数据存储设备写入速度的方法 | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
KR20210096133A (ko) | 구역화된 네임스페이스들에서의 기록 커맨드들의 유지 | |
US11216386B2 (en) | Techniques for setting a 2-level auto-close timer to access a memory device | |
US9911494B1 (en) | Overlapping write schemes for cross-point non-volatile memory devices | |
CN108027765B (zh) | 一种内存访问方法以及计算机系统 | |
EP2980704B1 (en) | Memory bank accessing method, apparatus and system | |
US7778103B2 (en) | Semiconductor memory device for independently selecting mode of memory bank and method of controlling thereof | |
CN113454720B (zh) | 存储设备及其控制方法 | |
US10318208B2 (en) | Memory apparatus for executing multiple memory operations by one command and operating method thereof | |
KR102390156B1 (ko) | 비휘발성 듀얼 인-라인 메모리 모듈을 위한 페이지 크기 인식 스케줄링 방법 및 비일시적인 컴퓨터 판독가능 기록매체 | |
US20140359181A1 (en) | Delaying Bus Activity To Accomodate Memory Device Processing Time | |
US20190096459A1 (en) | Memory devices for performing multiple write operations and operating methods thereof | |
US7178000B1 (en) | Trace buffer for DDR memories | |
EP1513072A2 (en) | Method for multibank memory scheduling | |
US20160124797A1 (en) | Memory Bus Error Signal |
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 |