读密集型大数据处理的内存刷新方法和系统与流程

文档序号:15562162发布日期:2018-09-29 02:30阅读:239来源:国知局

本发明涉及的是一种计算机领域的技术,具体是一种在内存模块层次上并行dram刷新和读取的技术,简称为dbr。



背景技术:

大数据时代,许多网络边缘的计算设施需要数据预处理,这类处理往往对内存读带宽提出了更高要求。另外,一些特殊的智能算法也强调读数据的吞吐量。相比内存写入,这些应用产生更多的内存读取。现有的解决方案通过:内存中处理(process-in-memory)或是设计专用的加速器得以解决。关于内存刷新,国内外有广泛研究,主要出发点有以下三点:1)与软件应用层需求结合调控刷新。2)从内存控制器出发,优化内存命令及刷新命令调度。3)从内存芯片的微体系结构出发,优化芯片的整体效能。



技术实现要素:

针对上述现有技术的缺陷,本发明提出一种读密集型大数据处理的内存刷新方法和系统,可以在刷新周期内读取内存数据。其技术要点主要包括两个部分,内存芯片级刷新(devicerefresh)和数据恢复(recovery)。进而刷新操作不会对内存读带宽和内存读延迟产生影响,发明借鉴了磁盘条带化raid3的特性,通过异或校验操作恢复出不能访问的数据。其特点有以下:①以内存芯片为单位刷新。②通过增加额外的内存芯片来存储校验段。③当有内存芯片进行刷新时,再读取过程中进行奇偶校验恢复出不能访问的数据段。

所述的以内存芯片为单位的刷新,是相对于传统的bank或rank刷新而言。内存模块上的芯片不再统一接受刷新指令来刷新指定的内存行,而是选定指定的芯片来执行刷新操作。且在任何时间,最多有一个芯片处于刷新状态。

本发明提出用于支撑dbr技术的内存模块、对应内存模块的读写方法以及内存协议。这些技术共同支撑dbr刷新机制和数据恢复机制,对于提升dram数据吞吐量有较为显著的帮助,在云计算、大数据领域具有较为重要的意义。尤其是对新兴的边缘计算和人工智能相关领域,有广阔应用潜力。

本发明具体通过以下技术方案实现的:

本发明涉及一种面向dbr技术的内存模块,包括:设置于内存模块内的接口、异或操作单元、芯片选择器以及与芯片选择器相连的若干个dram芯片,其中:内存控制器通过总线与内存模块相连并传输数据信息、地址信息和控制信息,内存模块接口与异或操作单元相连并传输恢复后数据信息,异或操作单元与芯片选择器相连并在刷新周期下的读取操作时传输恢复前数据信息,芯片选择器与dram芯片相连并传输芯片内存储的数据信息。

所述的芯片选择器仅在列读取时起作用,在列写入时不起作用。

所述的芯片选择器为一个n到n-1的路径选择器,用于剔除bank状态为刷新状态下的内存芯片,并将可以访问的内存芯片链接到异或操作单元。

所述的芯片选择器为5到4的路径选择器,是一种平移的路径选择器而并非全相连。输入的控制位为bank的状态,若为刷新状态,则对应的输入为1,若不处于刷新状态,则对应的输入为0。输入的数据段为每个内存芯片对应的数据段。控制位控制路径选择器,输入数据通过正确的片选路径进行输出。

所述的芯片选择器对于刷新周期外的读操作仅选择存储数据段的内存芯片,不选择存储校验段的内存芯片。

所述的异或操作单元在刷新周期外的列读取操作时不工作,而是直接将输入数据连通到输出端口。

所述的异或操作单元包括:异或子模块和位置选择子模块。异或子模块仅用来恢复缺失的数据段。位置选择子模块将所有数据段重新排列,得到完整的读取数据。同样,位置选择子模块也是根据内存芯片的刷新控制位进行路径选择的。

所述的位置选择子模块在列写入时异或操作单元用来产生校验段。

所述的内存控制器中优选设有面向于内存写入事务的高速缓存。

所述的内存控制器中优选设有用于存储校验段的额外芯片。

本发明涉及一种基于上述内存模块的读写方法,包括列写入和列读取。其中:列写入在刷新周期外将数据段和校验段全部写入,列读取包括①在内存模块处于刷新周期内的列读取和②在内存模块处于刷新周期外的列读取,进而实现了读取与刷新并行。

所述的两种列读取方法,主要区别在于是否处于刷新周期,它们是在传统内存访问协议的列读取操作(columnread)基础上扩展的。

所述的列写入,仅在刷新周期外进行,是在传统内存访问协议的列写入操作(columnwrite)基础上扩展的。其具体步骤包括:

步骤1:待写入的数据段通过内存模块接口输入异或操作单元。

步骤2:异或操作单元在所有数据段之间进行异或运算,得到校验段。

步骤3:芯片选择器连通内存模块上的所述dram芯片,校验段写入用于存储校验段的额外芯片中,非校验的数据段写入存储数据段的内存芯片中。

所述的在内存模块处于刷新周期内的列读取,其具体步骤包括:

步骤1:芯片选择器连接未刷新的内存芯片。

步骤2:内存控制器发送列读取命令,未刷新的芯片通过芯片选择器将各自的数据传输到异或操作单元中。

步骤3:异或操作单元运算出缺失的数据段。并将数据段按正确的顺序排列,进而得到完整的恢复后数据。恢复后数据输出至内存模块接口。

所述的在内存模块处于刷新周期外的列读取,需要关闭异或操作单元和芯片选择器并直连存储数据段的内存芯片,从而读取完整的数据。

本发明涉及一种基于上述内存模块的内存协议,内存控制器通过新协议访问内存模块,该新协议的扩展包括:

所述的刷新周期外,代表此时不处于刷新周期,此时对应bank的所有芯片处于相同状态。刷新周期外状态目录包括:全部-行激活状态、全部-预充电状态和全部-空闲状态,其对应bank中的所有芯片处于相同的状态,即对应所有芯片处于传统内存协议的行激活(rowactivate)状态、预充电(precharge)状态和空闲(idle)状态。

所述的刷新周期内,代表此时处于刷新周期。此时对应bank中,有一个芯片处于刷新状态,其余芯片处于另外的状态且保持一致。刷新周期外状态目录包括:刷新-行激活状态、刷新-预充电状态和刷新-空闲状态,其代表存在一个处于刷新(refreshing)状态的芯片,对应其他芯片处于传统内存协议的行激活(rowactivate)状态、预充电(precharge)状态和空闲(idle)状态。

所述的刷新周期外与刷新周期内之间的状态转化通过刷新周期开始及刷新周期结束来转换。

所述的刷新,第一种实现方法是在各个bank间进行dbr同步刷新,即每个刷新命令控制单一内存芯片上所有的bank刷新指定的行。

所述的刷新,第二种实现方法是在各个bank之间进行dbr异步刷新。异步刷新的优势在于刷新命令不会造成刷新前bank之间相互等待的情况发生。适用于需要频繁刷新的应用情景。

所述的刷新,第三种实现方法是dbr非分布式的突发(burst)刷新,采用突发刷新模式,每次刷新芯片内的所有单元,这样可以减少发送刷新命令的次数,提高控制效率。

所述dbr技术的具体方案,包含内存模块和内存模块读写方法,造成了更频繁的刷新周期数,损害了列写入性能。

本发明针对内存写入性能造成损失设计了两种机制:①读取打断机制和②写事务缓存调度机制来优化列写入。

所述的读取打断机制是指:内存控制器打断当前的读取操作并直接进入刷新周期的方式,具体是:通过控制刷新命令的发送时序来优化,当目前待刷新的bank因为行读取的原因不能马上输入刷新状态,则该优化直接打断目标内存芯片的读取,直接输入刷新周期而不影响bank整体的数据读取;该方式进而减少了刷新周期占用时间;

所述的写事务缓存调度机制是指:内存控制器优先将写入事务优先存储在高速缓存中,并通过事务调度尽可能在bank空闲状态写入,其具体步骤包括:

步骤1:周期开始时查询是否有bank处于空闲状态,并寻找对应bank在高速缓存中是否存在需要写入的事务;

步骤2:当高速缓存中存在需要写入的事务,则通过置换协议选择一个特定的事务,并跳转到步骤3;当不存在对应的事务则跳转到步骤4;

步骤3:首先将事务转化为内存命令,之后需要将命令压如内存命令队列;这就要判断内存命令队列是否有充足空间;当有充足空间则直接将新命令压入队列中;当没有额外空间,则不进行任何操作;本轮周期完成,跳转到下一周期,重复进行步骤1;

步骤4:由于高速缓存中没有需要写入或是没有bank处于空闲状态;此时按正常情况操作,从内存控制器中的事务队列选择一个新的事务,判断事务的性质;若为写入,跳转到步骤5,若为读取,跳转到步骤6;

步骤5:优先将写入事务存储在高速缓存中;因此,寻找对应的高速缓存中是否有可以直接置换而不需要回写的存储单元;当存在,而直接置换,结束当前周期,重新开始步骤1;当不存在,则此时必须写回一个事务到内存中,由此跳转到步骤2;

步骤6:对于读取事务,首先提取事务地址,之后在高速缓存中进行查找;如命中,则直接将信息返回给处理器的最后一级缓存;当没有命中,则跳转到步骤3。

技术效果

与现有技术相比,本发明在维持能耗和芯片面积的同时能够提升内存模块读取性能,包括读延迟和读带宽的同时可以提升一些新兴应用(如pagerank,链表查询,卷积网推测等)的运行效率。

附图说明

图1为本发明系统结构示意图;

图2为本发明方法示意图;

图中:a为写入过程;b为读取过程;

图3为实施例中写入事务调度优化流程图。

具体实施方式

本实施例主要通过仿真验证,进行了内存模块层次和真实负载仿真。仿真的软件环境如下:对于内存模块仿真,采用广泛认可的dramsim2开源dram仿真器,在原先仿真器的基础上修改成支持dbr的设计。在内存模块层次仿真,测试内存读取的性能。对于真实负载仿真,采用的是gem5仿真器,采用内部的simplememory内存模型并根据dbr的行为进行修改。在真实负载仿真,测试每秒可以执行的指令数量。

仿真参数的设定如下:对于内存模块层次仿真使用jedecddr4标准手册中的时序参数。对于电压电流参数,参考镁光公司的ddr4芯片参数。对于仿真中作为输入的读写事务,内存调度方法,地址映射方式,采用dramsim2内置配置。采用乱序调度的事物队列和命令队列。对于真实负载仿真,采用gem5的时序cpu模型,cpu内部时序等参数为默认配置。性能的比较基准为工业界成熟的ddr4技术。

对于内存模块层次仿真,在32gbddr4基础上,对于单纯读取的带宽性能可以提升大约12%。内存读取的延时性能可以提升50%到60%之间。

对于真实负载仿真,根据应用的不同,产生的性能增益也不同。该技术会对内存读取要求高的应用产生正增益,对内存写入密集型应用产生负增益。测试了pagerank,链表查询,卷积网推测三种应用。在32gbddr4上的性能提升从3.8%到11.2%不等。

本实施例稍稍降低了能量利用率。最好的情况下,能量利用率降低大约2%。该技术会增加额外的芯片面积,根据不同的需要和配置,芯片面积需要增加0%到50%不等。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1