写请求的处理方法和内存控制器技术

技术编号:14345938 阅读:92 留言:0更新日期:2017-01-04 17:08
本发明专利技术提供一种写请求的处理方法和内存控制器,所述方法包括:确定待调度的第一写请求集合中的写请求的数目小于内存中的未被占用的存储单元的数目,其中第一写请求集合中的写请求与写请求队列中的其他写请求之间有第一内存栅;确定第二写请求集合,其中,第二写请求集合中的写请求为日志写请求,第二写请求集合中的写请求在写请求队列中位于第一内存栅之后,第二写请求集合中的写请求的数量与第一写请求集合中的写请求的数量的和不大于内存中未被占用的存储单元的数量;将第一写请求集合中的写请求和第二写请求集合中的写请求并行发送至内存的未被占用的不同存储单元中。本发明专利技术提高了写请求的处理效率。

【技术实现步骤摘要】

本专利技术涉及计算机领域,并且更为具体地,涉及一种写请求的处理方法和内存控制器
技术介绍
非易失性存储器(Non-VolatileMemory,NVM)是一种新型的存储器,它具有很多优点,如可按照字节寻址,掉电后数据不丢失,存储密度高,无需频繁刷新,以及能耗低等,因此,很适合作为内存(或称主存)。但是,NVM也存在一些不足之处,如相对较长的写延时、写次数有限等。NVM可以与现有的动态随机存取存储器(DynamicRandomAccessMemory,DRAM)共同构成混合内存,应用程序产生的临时数据可存储在DRAM中,应用程序产生的持久性数据可存储在NVM中。NVM用作内存,需要对现有的体系结构和软件架构进行重新设计或者优化。一种可行的方法是使用软件事务内存(SoftwareTransactionalMemory,STM)技术,该技术能够使得NVM内存的管理维持了事务特性,事务特性包括事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。同时,由于STM技术是基于现有的编程模型,这种使用STM技术对NVM进行管理和控制的方式,易于程序员接受和使用。为了保证NVM内存在使用过程中的一致性,写请求的调度次序需要满足可线性化(Linearizability)的要求,即针对同一个事务,内存控制器需要先将该事务的日志写请求(或称Log写请求)和提交写请求(或称Commit写请求)依次发送至NVM内存中,然后才能将该事务的数据写请求(或称Data写请求)发送至NVM内存中,进行该事务的数据的原地更新(In-placeUpdate)。STM技术通过建立非易失性堆(Non-VolatileHeaps)对NVM内存进行管理,并可使用写前日志(WriteAheadLogging,WAL)保证事务的一致性。具体而言,Non-VolatileHeaps向内存控制器发送日志写请求和提交写请求之间,以及向内存控制器发送提交写请求和数据写请求之间,都要向内存控制器发送内存栅(或者称为持久性内存栅,PersistentMemoryBarrier)请求,使得内存控制器的写请求队列中,同一事务的日志写请求、提交写请求以及数据写请求通过内存栅相隔。这样,内存控制器在将写请求发送至NVM内存时,就需要考虑内存栅的影响,不能将内存栅相隔的两个写请求并行的发送至NVM内存中。这样的写请求处理方式虽然保证了事务的一致性,但却由于内存栅的存在导致一次并发处理的写请求数量较少,从而未能充分利用内存中的存储空间,导致写请求的处理效率低下。
技术实现思路
本专利技术实施例提供一种写请求的处理方法和内存控制器,以提高写请求的处理效率。第一方面,提供一种写请求的处理方法,所述方法由计算机系统中的内存控制器来执行,在所述内存控制器中缓存有写请求队列,所述写请求队列中包含有待调度的事务的写请求,所述计算机系统的内存为NVM,且所述内存包括多个存储单元,所述方法包括:确定待调度的第一写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第一写请求集合中的写请求与所述写请求队列中的其他写请求之间有第一内存栅,所述第一写请求集合中的写请求位于所述第一内存栅之前;确定第二写请求集合,其中,所述第二写请求集合中的写请求为日志写请求,所述第二写请求集合中的写请求在所述写请求队列中位于所述第一内存栅之后,且所述第二写请求集合中的写请求的数量与所述第一写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第一写请求集合中的写请求和所述第二写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。结合第一方面,在第一方面的一种实现方式中,所述方法还包括:确定待调度的第三写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第三写请求集合中的写请求与所述写请求队列中的其他写请求之间有第二内存栅,所述第三写请求集合中的写请求位于所述第二内存栅之前;确定第四写请求集合,其中,所述第四写请求集合中的写请求包括提交写请求或中断写请求,所述第四写请求集合中的写请求在所述写请求队列中位于所述第二内存栅之后,所述第四写请求集合中的写请求与所述第三写请求集合中的写请求通过所述第二内存栅相隔,所述第四写请求集合中的每个写请求与所述第三写请求集合中的每个写请求均为不同事务的写请求,且所述第四写请求集合中的写请求的数量与所述第三写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第三写请求集合中的写请求和所述第四写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述确定第四写请求集合,包括:根据所述写请求队列中的写请求携带的事务标识,确定所述第四写请求集合,所述事务标识用于指示写请求所属的事务。结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述方法还包括:确定待调度的第五写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第五写请求集合中的写请求与所述写请求队列中的其他写请求之间有第三内存栅,所述第五写请求集合中的写请求位于所述第三内存栅之前,所述第五写请求集合中的写请求均不是日志写请求;确定第六写请求集合,其中,所述第六写请求集合中的写请求为提交写请求或中断写请求,所述第六写请求集合中的写请求在所述写请求队列中位于所述第三内存栅之后,所述第六写请求集合中的写请求与所述第五写请求集合中的写请求通过所述第三内存栅相隔,且所述第六写请求集合中的写请求的数量与所述第五写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第五写请求集合中的写请求和所述第六写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述确定第二写请求集合,包括:从所述内存的未被占用的存储单元中确定第一存储单元集合,其中,所述第一存储单元集合中的存储单元用于接收除所述第一写请求集合中的写请求之外的写请求;从所述写请求队列中位于所述第一内存栅之后的写请求中选择待发送至所述第一存储单元集合中的存储单元的日志写请求,其中,所述选择的日志写请求构成所述第二写请求集合。结合第一方面或其上述实现方式的任一种,在第一方面的另一种实现方式中,所述存储单元包括所述内存中的bank。第二方面,提供一种内存控制器,所述内存控制器位于计算机系统中,在所述内存控制器中缓存有写请求队列,所述写请求队列中包含有待调度的事务的写请求,所述计算机系统的内存为NVM,且所述内存包括多个存储单元,所述内存控制器包括:比较模块,用于确定待调度的第一写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第一写请求集合中的写请求与所述写请求队列中的其他写请求之间有第一内存栅,所述第一写请求集合中的写请求位于所述第一内存栅之前;确定模块,用于确定第二写请求集合,其中,所述第二写请求集合中的写请求为日志写请求,本文档来自技高网
...
写请求的处理方法和内存控制器

【技术保护点】
一种写请求的处理方法,其特征在于,所述方法由计算机系统中的内存控制器来执行,在所述内存控制器中缓存有写请求队列,所述写请求队列中包含有待调度的事务的写请求,所述计算机系统的内存为非易失性存储器NVM,且所述内存包括多个存储单元,所述方法包括:确定待调度的第一写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第一写请求集合中的写请求与所述写请求队列中的其他写请求之间有第一内存栅,所述第一写请求集合中的写请求位于所述第一内存栅之前;确定第二写请求集合,其中,所述第二写请求集合中的写请求为日志写请求,所述第二写请求集合中的写请求在所述写请求队列中位于所述第一内存栅之后,且所述第二写请求集合中的写请求的数量与所述第一写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第一写请求集合中的写请求和所述第二写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。

【技术特征摘要】
1.一种写请求的处理方法,其特征在于,所述方法由计算机系统中的内存控制器来执行,在所述内存控制器中缓存有写请求队列,所述写请求队列中包含有待调度的事务的写请求,所述计算机系统的内存为非易失性存储器NVM,且所述内存包括多个存储单元,所述方法包括:确定待调度的第一写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第一写请求集合中的写请求与所述写请求队列中的其他写请求之间有第一内存栅,所述第一写请求集合中的写请求位于所述第一内存栅之前;确定第二写请求集合,其中,所述第二写请求集合中的写请求为日志写请求,所述第二写请求集合中的写请求在所述写请求队列中位于所述第一内存栅之后,且所述第二写请求集合中的写请求的数量与所述第一写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第一写请求集合中的写请求和所述第二写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。2.如权利要求1所述的方法,其特征在于,所述方法还包括:确定待调度的第三写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第三写请求集合中的写请求与所述写请求队列中的其他写请求之间有第二内存栅,所述第三写请求集合中的写请求位于所述第二内存栅之前;确定第四写请求集合,其中,所述第四写请求集合中的写请求包括提交写请求或中断写请求,所述第四写请求集合中的写请求在所述写请求队列中位于所述第二内存栅之后,所述第四写请求集合中的写请求与所述第三写请求集合中的写请求通过所述第二内存栅相隔,所述第四写请求集合中的每个写请求与所述第三写请求集合中的每个写请求均为不同事务的写请求,且所述第四写请求集合中的写请求的数量与所述第三写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第三写请求集合中的写请求和所述第四写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。3.如权利要求2所述的方法,其特征在于,所述确定第四写请求集合,
\t包括:根据所述写请求队列中的写请求携带的事务标识,确定所述第四写请求集合,所述事务标识用于指示写请求所属的事务。4.如权利要求1所述的方法,其特征在于,所述方法还包括:确定待调度的第五写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第五写请求集合中的写请求与所述写请求队列中的其他写请求之间有第三内存栅,所述第五写请求集合中的写请求位于所述第三内存栅之前,所述第五写请求集合中的写请求均不是日志写请求;确定第六写请求集合,其中,所述第六写请求集合中的写请求为提交写请求或中断写请求,所述第六写请求集合中的写请求在所述写请求队列中位于所述第三内存栅之后,所述第六写请求集合中的写请求与所述第五写请求集合中的写请求通过所述第三内存栅相隔,且所述第六写请求集合中的写请求的数量与所述第五写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;将所述第五写请求集合中的写请求和所述第六写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单元中。5.如权利要求1-4中任一项所述的方法,其特征在于,所述确定第二写请求集合,包括:从所述内存的未被占用的存储单元中确定第一存储单元集合,其中,所述第一存储单元集合中的存储单元用于接收除所述第一写请求集合中的写请求之外的写请求;从所述写请求队列中位于所述第一内存栅之后的写请求中选择待发送至所述第一存储单元集合中的存储单元的日志写请求,其中,所述选择的日志写请求构成所述第二写请求集合。6.如权利要求1-5中任一项所述的方法,其特征在于,所述存储单元包括所述内存中的bank。7.一种内存控制器,其特征在于,内存控制器位于计算机系统中,在所述内存控制器中缓存有写请求队列,所述写请求队列中包含有待调度的事务的写请求,所述计算机系统的内存为非易失性存储器NVM,且所述内存包括多个存储单元,所述内存控制器包括:比较模块,用于确定待调度的第一写请求集合中的写请求的数目小于所述内存中的未被占用的存储单元的数目,其中,所述第一写请求集合中的写请求与所述写请求队列中的其他写请求之间有第一内存栅,所述第一写请求集合中的写请求位于所述第一内存栅之前;确定模块,用于确定第二写请求集合,其中,所述第二写请求集合中的写请求为日志写请求,所述第二写请求集合中的写请求在所述写请求队列中位于所述第一内存栅之后,且所述第二写请求集合中的写请求的数量与所述第一写请求集合中的写请求的数量的和不大于所述内存中未被占用的存储单元的数量;处理模块,用于将所述第一写请求集合中的写请求和所述第二写请求集合中的写请求并行发送至所述内存的未被占用的不同存储单...

【专利技术属性】
技术研发人员:舒继武孙龙王元钢
申请(专利权)人:华为技术有限公司清华大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1