CN108572932B - 多平面nvm命令融合方法与装置 - Google Patents
多平面nvm命令融合方法与装置 Download PDFInfo
- Publication number
- CN108572932B CN108572932B CN201810381673.4A CN201810381673A CN108572932B CN 108572932 B CN108572932 B CN 108572932B CN 201810381673 A CN201810381673 A CN 201810381673A CN 108572932 B CN108572932 B CN 108572932B
- Authority
- CN
- China
- Prior art keywords
- nvm
- command
- nvm interface
- interface command
- offset value
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了多平面NVM命令融合方法与装置。本申请的介质接口控制器,消息队列和NVM命令处理单元,消息队列与NVM命令处理单元耦合,NVM命令处理单元还与多个NVM芯片耦合;消息队列用于接收访问NVM芯片的逻辑单元的多个平面的消息,NVM命令处理单元从消息队列获取信息,并根据消息的指示生成NVM接口命令并发送给NVM芯片;NVM命令处理单元融合NVM接口命令。
Description
技术领域
本申请涉及存储设备技术领域,尤其涉及在存储设备中对访问NVM芯片的命令进行调度,以提高存储设备性能。
背景技术
参看图1,展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SAS、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及可选地固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM,也可以是NVM芯片105的部分。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ON FI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在公开号为CN1414468A的中国专利申请中,提供了通过执行微指令序列来处理CPU(Central Processing Unit,中央处理单元)指令的方案。当CPU要处理特定指令时,转换逻辑电路将特定指令转换成与之对应的微指令序列,通过执行微指令序列来实现特定指令的功能。微指令序列或者微指令序列的模板存储在ROM(Read Only Memory,只读存储器)中。在将特定指令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定指令相对应。
在中国专利申请CN201610009789.6与CN201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请CN201610861793.5提供了微指令序列的调度方法与装置,中国专利申请CN201611213754.0提供了IO命令处理方法与固态存储设备,中国专利申请CN201611213755.5提供了大容量NVM接口控制器,将其全文合并于此。闪存接口控制器通常耦合到多个NVM芯片,NVM芯片包括多个LUN(Logic UNit,逻辑单元)或管芯,多个LUN和管芯可以并行响应及访问NVM命令。又由于每个LUN或管芯上可以有多个待处理的NVM命令,因此NVM控制器需要对多个NVM命令的处理过程进行调度,以维护多个在处理中或待处理的NVM命令,或者维护多段用于生成和处理NVM命令的微指令序列的执行。
发明内容
根据本申请的第一方面,提供了根据本申请第一方面的第一介质接口控制器,包括:消息队列和NVM命令处理单元,消息队列与NVM命令处理单元耦合,NVM命令处理单元还与多个NVM芯片耦合;消息队列用于接收访问NVM芯片的消息,NVM命令处理单元从消息队列获取信息,并根据消息的指示生成NVM接口命令并发送给NVM芯片;NVM命令处理单元改变发送NVM接口命令的顺序。
根据本申请的第一方面的第一介质接口控制器,提供了根据本申请第一方面的第二介质接口控制器,访问NVM芯片的消息包括指示读出数据的消息、写入数据的消息、擦除NVM芯片的存储单元的消息,指示读取NVM芯片状态的消息、读取或设置NVM芯片特征的消息,以及用户自定义消息中的一种或多种。
根据本申请的第一方面的第一或第二介质接口控制器,提供了根据本申请第一方面的第三介质接口控制器,消息队列包括一个或多个消息队列。
根据本申请的第一方面的第一至第三介质接口控制器之一,提供了根据本申请第一方面的第四介质接口控制器,NVM命令处理单元通过多个通道与多个NVM芯片耦合连接,每个NVM芯片分别包括多个逻辑单元。
根据本申请的第一方面的第一至第四介质接口控制器之一,提供了根据本申请第一方面的第五介质接口控制器,NVM命令处理单元包括多个硬件实例或多个线程,各个实例或线程,并行处理NVM接口命令。
根据本申请的第一方面的第一至第五介质接口控制器之一,提供了根据本申请第一方面的第六介质接口控制器,NVM命令处理单元,通过执行指令或微指令序列,对NVM接口命令实施调度。
根据本申请的第一方面的第一至第六介质接口控制器之一,提供了根据本申请第一方面的第七介质接口控制器,基于同一指令或微指令序列创建多个线程。
根据本申请的第一方面的第七介质接口控制器,提供了根据本申请第一方面的第八介质接口控制器,NVM命令处理单元为每个线程存储执行状态。
根据本申请的第一方面的第一至第八介质接口控制器之一,提供了根据本申请第一方面的第九介质接口控制器,NVM芯片处理单元向NVM芯片写入数据时,数据被存储在NVM芯片的页缓存中。
根据本申请的第一方面的第一至第九介质接口控制器之一,提供了根据本申请第一方面的第十介质接口控制器,NVM命令处理单元执行本申请第二方面的优化NVM接口命令执行顺序的方法之一。
根据本申请的第一方面的第一至第十介质接口控制器之一,提供了根据本申请第一方面的第十一介质接口控制器,NVM命令处理单元合并两个或多个NVM接口命令。
根据本申请的第二方面,提供了根据本申请第二方面的第一优化NVM接口命令执行顺序的方法,包括:检测是否可优化NVM接口命令执行顺序;响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
根据本申请的第二方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第二优化NVM接口命令执行顺序的方法,偏移值大于0时,其值指示了之前已发生的改变NVM接口命令执行顺序的次数。
根据本申请的第二方面的第一或第二优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第三优化NVM接口命令执行顺序的方法,响应于可优化NVM接口命令执行顺序,对获取的NVM接口命令改变形式。
根据本申请的第二方面的第三优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第四优化NVM接口命令执行顺序的方法,将获取的读命令修改为读页缓存的命令。
根据本申请的第二方面的第一至第四优化NVM接口命令执行顺序的方法之一,提供了根据本申请第二方面的第五优化NVM接口命令执行顺序的方法,响应于偏移值不大于0,使偏移值与基地址都递增。
根据本申请的第二方面的第一至第五优化NVM接口命令执行顺序的方法之一,提供了根据本申请第二方面的第六优化NVM接口命令执行顺序的方法,响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
根据本申请的第二方面的第六优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第七优化NVM接口命令执行顺序的方法,响应于偏移值不大于0,使基地址递增。
根据本申请的第二方面的第一至第七优化NVM接口命令执行顺序的方法之一,提供了根据本申请第二方面的第八优化NVM接口命令执行顺序的方法,执行完第一NVM接口命令后,识别是否可优化NVM接口命令的执行顺序;比较第一NVM接口命令与与其相邻的第二NVM接口命令,识别是否满足优化条件;响应于第一NVM接口命令与第二NVM接口命令不满足优化条件,且第一NVM接口命令与与其不相邻的第三NVM接口命令满足优化条件,而识别出可优化NVM接口命令执行顺序。
根据本申请的第二方面的第八优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第九优化NVM接口命令执行顺序的方法,响应于识别出无法优化NVM接口命令的执行顺序,第二NVM接口命令被执行。
根据本申请的第二方面的第八或第九优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第十优化NVM接口命令执行顺序的方法,优化条件包括:第三NVM接口命令指示读取同第一NVM接口命令相同或相近的地址,或者由于执行了第一NVM接口命令,使得第三NVM接口命令读取的数据位于NVM芯片的页缓存中,或者第一NVM接口命令与第三NVM接口命令访问同一逻辑单元的不同平面,且第一NVM接口命令与第三NVM接口命令可由单一的多平面命令来替代,或者第三NVM接口命令有较高的处理优先级,或者第三NVM接口命令有较高的处理优先级且消息队列中第一NVM接口命令与第三NVM接口命令之间的NVM接口命令具有较长处理时间。
根据本申请的第二方面的第一至第七优化NVM接口命令执行顺序的方法之一,提供了根据本申请第二方面的第十一优化NVM接口命令执行顺序的方法,执行完第一NVM接口命令后,识别是否可优化NVM接口命令的执行顺序;响应于第一NVM接口命令与与其相邻的第二NVM接口命令满足优化条件,获取偏移值的值;响应于偏移值大于0,识别出可优化NVM接口命令执行顺序。
根据本申请的第二方面的第十一优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第十二优化NVM接口命令执行顺序的方法,响应于偏移值大于0,使偏移值递增,基地址不变;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
根据本申请的第二方面的第十二优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第十三优化NVM接口命令执行顺序的方法,响应于偏移值不大于0,识别出不可优化执行顺序。
根据本申请的第二方面的第十二至第十四优化NVM接口命令执行顺序的方法之一,提供了根据本申请第二方面的第十五优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令与与其相邻的第二NVM接口命令不满足优化条件,进一步识别第一NVM接口命令与与其不相邻的第三NVM接口命令是否满足优化条件;响应于第一NVM接口命令与第三NVM接口命令满足优化条件,识别出可优化NVM接口命令执行顺序。
根据本申请的第二方面的第十五优化NVM接口命令执行顺序的方法,提供了根据本申请第二方面的第十六优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令与第三NVM接口命令不满足优化条件,识别出不可优化NVM接口命令执行顺序。
根据本申请的第三方面,提供了根据本申请第三方面的第一介质接口控制器,包括:消息队列和NVM命令处理单元,消息队列与NVM命令处理单元耦合,NVM命令处理单元还与多个NVM芯片耦合;消息队列用于接收访问NVM芯片的逻辑单元的多个平面的消息,NVM命令处理单元从消息队列获取信息,并根据消息的指示生成NVM接口命令并发送给NVM芯片;NVM命令处理单元融合NVM接口命令。
根据本申请的第三方面的第一介质接口控制器,提供了根据本申请第三方面的第二介质接口控制器,访问NVM芯片的消息包括指示读出数据的消息、写入数据的消息、擦除NVM芯片的存储单元的消息,指示读取NVM芯片状态的消息、读取或设置NVM芯片特征的消息,以及用户自定义消息中的一种或多种。
根据本申请的第三方面的第一或第二介质接口控制器,提供了根据本申请第三方面的第三介质接口控制器,消息队列包括一个或多个消息队列。
根据本申请的第三方面的第一至第三介质接口控制器之一,提供了根据本申请第三方面的第四介质接口控制器,NVM命令处理单元通过多个通道与多个NVM芯片耦合连接,每个NVM芯片分别包括多个逻辑单元。
根据本申请的第三方面的第一至第四介质接口控制器之一,提供了根据本申请第三方面的第五介质接口控制器,NVM命令处理单元包括多个硬件实例或多个线程,各个实例或线程,并行处理NVM接口命令。
根据本申请的第三方面的第一至第五介质接口控制器之一,提供了根据本申请第三方面的第六介质接口控制器,NVM命令处理单元,通过执行指令或微指令序列,对NVM接口命令实施调度。
根据本申请的第三方面的第一至第六介质接口控制器之一,提供了根据本申请第三方面的第七介质接口控制器,基于同一指令或微指令序列创建多个线程。
根据本申请的第三方面的第一至第七介质接口控制器之一,提供了根据本申请第三方面的第八介质接口控制器,NVM命令处理单元为每个线程存储执行状态。
根据本申请的第三方面的第一至第八介质接口控制器之一,提供了根据本申请第三方面的第九介质接口控制器,NVM芯片处理单元向NVM芯片写入数据时,数据被存储在NVM芯片的页缓存中。
根据本申请的第三方面的第一至第九介质接口控制器之一,提供了根据本申请第三方面的第十介质接口控制器,NVM命令处理单元将消息队列中的访问同一NVM芯片的不同平面的两个或多个读命令,融合成单条多平面读命令。
根据本申请的第三方面的第十介质接口控制器,提供了根据本申请第三方面的第十一介质接口控制器,响应于识别出消息队列中的第一读命令所访问的数据随着该单条多平面命令的执行被加载到NVM芯片的页缓存中,还优先执行所述第一读命令。
根据本申请的第三方面的第十或第十一介质接口控制器,提供了根据本申请第三方面的第十二介质接口控制器,将所述第一读命令修改为读页缓存的命令并执行该读页缓存的命令。
根据本申请的第三方面的第一至第十二介质接口控制器之一,提供了根据本申请第三方面的第十三介质接口控制器,NVM命令处理单元执行本申请第四方面、第五方面、第六方面或第七方面的优化NVM接口命令执行顺序的方法之一。
根据本申请的第四方面,提供了根据本申请第四方面的第一优化NVM接口命令执行顺序的方法,包括:检测待执行的第一NVM接口命令与同其在消息队列中相邻并在后的第二NVM接口命令是否可融合;响应于第一NVM接口命令与第二NVM接口命令可融合,融合第一NVM接口命令与第二NVM接口命令;执行融合后的NVM接口命令。
根据本申请的第四方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第四方面的第二优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令与第二NVM接口命令不可融合,执行第一NVM接口命令。
根据本申请的第四方面的第一或第二优化NVM接口命令执行顺序的方法,提供了根据本申请第四方面的第三优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令执行完成,检测是否可优化NVM接口命令执行顺序;响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
根据本申请的第四方面的第三优化NVM接口命令执行顺序的方法,提供了根据本申请第四方面的第四优化NVM接口命令执行顺序的方法,偏移值大于0时,其值指示了之前已发生的改变NVM接口命令执行顺序的次数。
根据本申请的第四方面的第三或第四优化NVM接口命令执行顺序的方法,提供了根据本申请第四方面的第五优化NVM接口命令执行顺序的方法,响应于偏移值不大于0,使偏移值与基地址都递增。
根据本申请的第四方面的第三至第五优化NVM接口命令执行顺序的方法之一,提供了根据本申请第四方面的第六优化NVM接口命令执行顺序的方法,响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
根据本申请的第四方面的第六优化NVM接口命令执行顺序的方法,提供了根据本申请第四方面的第七优化NVM接口命令执行顺序的方法,响应于偏移值不大于0,使基地址递增。
根据本申请的第五方面,提供了根据本申请第五方面的第一优化NVM接口命令执行顺序的方法,包括:获取待执行的第一NVM接口命令;识别第一NVM接口命令是否命中NVM芯片的页缓存;响应于页缓存命中,根据第一NVM接口命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令。
根据本申请的第五方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第五方面的第二优化NVM接口命令执行顺序的方法,获取下一待执行的NVM接口命令。
根据本申请的第五方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第五方面的第三优化NVM接口命令执行顺序的方法,响应于页缓存未命中,识别第一NVM接口命令与同其在消息队列中相邻并在后的第二NVM接口命令是否可融合;响应于第一NVM接口命令与第二NVM接口命令可融合,融合第一NVM接口命令与第二NVM接口命令,生成并执行融合后的多平面命令替代第一NVM接口命令与第二NVM接口命令。
根据本申请的第五方面的第一至第三优化NVM接口命令执行顺序的方法之一,提供了根据本申请第五方面的第四优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令与第二NVM接口命令不可融合,执行第一NVM接口命令。
根据本申请的第五方面的第一至第四优化NVM接口命令执行顺序的方法之一,提供了根据本申请第五方面的第五优化NVM接口命令执行顺序的方法,记录各个NVM芯片的页缓存中的数据的地址范围,以识别NVM接口命令是否命中页缓存。
根据本申请的第五方面的第一至第五优化NVM接口命令执行顺序的方法之一,提供了根据本申请第五方面的第六优化NVM接口命令执行顺序的方法,若第一NVM接口命令处理单元是读命令,响应于执行了第一NVM接口命令,还标记页缓存中的数据的地址,用于识别后续的NVM接口命令是否会命中页缓存。
根据本申请的第五方面的第一至第六优化NVM接口命令执行顺序的方法之一,提供了根据本申请第五方面的第七优化NVM接口命令执行顺序的方法,NVM命令处理单元将消息队列中的访问同一NVM芯片的不同平面的两个或多个读命令,融合成单条多平面读命令。
根据本申请的第五方面的第一至第七优化NVM接口命令执行顺序的方法之一,提供了根据本申请第五方面的第八优化NVM接口命令执行顺序的方法,第一NVM接口命令是消息队列中的任意命令。
根据本申请的第六方面,提供了根据本申请第六方面的第一优化NVM接口命令执行顺序的方法,包括:响应于第一NVM接口命令待执行;识别第一NVM接口命令与同其在消息队列中相邻并在后的第二NVM接口命令是否可融合;响应于第一NVM接口命令与第二NVM接口命令可融合,融合第一NVM接口命令与第二NVM接口命令,生成并执行融合后的多平面命令替代第一NVM接口命令与第二NVM接口命令。
根据本申请的第六方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第六方面的第二优化NVM接口命令执行顺序的方法,获取下一待执行的NVM接口命令。
根据本申请的第六方面的第二优化NVM接口命令执行顺序的方法,提供了根据本申请第六方面的第三优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令与第二NVM接口命令不可融合,识别第一NVM接口命令是否命中NVM芯片的页缓存;响应于页缓存命中,根据第一NVM接口命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令。
根据本申请的第六方面的第一至第三优化NVM接口命令执行顺序的方法之一,提供了根据本申请第六方面的第四优化NVM接口命令执行顺序的方法,响应于页缓存未命中,执行第一NVM接口命令。
根据本申请的第六方面的第一至第四优化NVM接口命令执行顺序的方法之一,提供了根据本申请第六方面的第五优化NVM接口命令执行顺序的方法,NVM命令处理单元将消息队列中的访问同一NVM芯片的不同平面的两个或多个读命令,融合成单条多平面读命令。
根据本申请的第六方面的第一至第五优化NVM接口命令执行顺序的方法之一,提供了根据本申请第六方面的第六优化NVM接口命令执行顺序的方法,NVM命令处理单元记录NVM芯片的页缓存中的数据的地址范围,以识别NVM接口命令是否命中页缓存。
根据本申请的第六方面的第一至第六优化NVM接口命令执行顺序的方法之一,提供了根据本申请第六方面的第七优化NVM接口命令执行顺序的方法,响应于页缓存命中,融合第一NVM接口命令与第二NVM接口命令,生成并执行融合后的对页缓存的多平面命令替代第一NVM接口命令与第二NVM接口命令。
根据本申请的第六方面的第七优化NVM接口命令执行顺序的方法,提供了根据本申请第六方面的第八优化NVM接口命令执行顺序的方法,响应于页缓存未命中,融合第一NVM接口命令与第二NVM接口命令,生成并执行融合后的多平面命令替代第一NVM接口命令与第二NVM接口命令。
根据本申请的第七方面,提供了根据本申请第七方面的第一优化NVM接口命令执行顺序的方法,包括:响应于第一NVM接口命令待执行;识别第一NVM接口命令是否命中NVM芯片的页缓存;响应于第一NVM接口命令命中页缓存,根据第一NVM接口命令生成并执行访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令。
根据本申请的第七方面的第一优化NVM接口命令执行顺序的方法,提供了根据本申请第七方面的第二优化NVM接口命令执行顺序的方法,识别同第一NVM接口命令在消息队列中相邻并在后的一个或多个第二NVM接口命令是否命中页缓存;响应于一个或多个第二NVM接口命令命中页缓存,根据第二NVM接口命令生成并执行访问页缓存的命令,用访问页缓存的命令替代各个命中了页缓存的第二NVM接口命令;将第二NVM接口命令移除。
根据本申请的第七方面的第一或第二优化NVM接口命令执行顺序的方法,提供了根据本申请第七方面的第三优化NVM接口命令执行顺序的方法,识别第一NVM接口命令与一个或多个第三NVM接口命令是否可融合;响应于第一NVM接口命令与第三NVM接口命令可融合,融合第一NVM接口命令与一个或多个第三NVM接口命令,生成并执行多平面命令替代融合的第一NVM接口命令与一个或多个第三NVM接口命令;将第一与第三NVM接口命令移除。
根据本申请的第七方面的第一至第三优化NVM接口命令执行顺序的方法之一,提供了根据本申请第七方面的第四优化NVM接口命令执行顺序的方法,识别第一NVM接口命令是否是相对更耗时且低优先级的命令,而一个或多个第四NVM接口命令是否是相对低延迟或高优先级的命令;响应于第一NVM接口命令的优先级比一个或多个第二NVM接口命令的优先级高,执行第一NVM接口命令。
根据本申请的第七方面的第一至第四优化NVM接口命令执行顺序的方法之一,提供了根据本申请第七方面的第五优化NVM接口命令执行顺序的方法,响应于第一NVM接口命令的优先级比一个或多个第四NVM接口命令的优先级低,且第一NVM接口命令相对更耗时,执行一个或多个第四NVM接口命令;将被执行的第四NVM接口命令移除。
根据本申请的第七方面的第五优化NVM接口命令执行顺序的方法,提供了根据本申请第七方面的第六优化NVM接口命令执行顺序的方法,生成并执行第五NVM接口命令,用于指示NVM芯片中止对第一NVM接口命令的执行。
根据本申请的第八方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序代码使所述存储设备执行根据本申请第二方面、第四方面、第五方面、第六方面或第七方面的优化NVM接口命令执行顺序的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术的存储设备的框图;
图2是根据本申请实施例的控制部件的介质接口控制器的框图;
图3是根据本申请实施例的控制部件的介质接口控制器的框图;
图4A是根据本申请实施例的优化NVM接口命令执行顺序的示意图;
图4B是根据本申请的又一实施例的优化NVM接口命令执行顺序的流程图;
图5A是根据本申请实施例的识别是否可优化NVM命令执行顺序的流程图;
图5B是根据本申请又一实施例的识别是否可优化NVM命令执行顺序的流程图;
图6是根据本申请又一实施例的控制部件的介质接口控制器的框图;
图7是根据本申请另一实施例的优化NVM命令执行顺序的流程图;
图8A是根据本申请实施例的优化NVM命令执行顺序的流程图;
图8B是根据本申请又一实施例的优化NVM命令执行顺序的流程图;
图8C是根据本申请再一实施例的优化NVM命令执行顺序的流程图;
图9是根据本申请还一实施例的优化NVM命令执行顺序的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2是根据本申请实施例的控制部件的介质接口控制器的框图。图2中的介质接口控制器包括消息队列210与NVM命令处理单元220。图2的实施例中,消息队列210用于接收来自控制部件(也参看图1的控制部件)的访问NVM芯片的消息。来自控制部件的消息可包括指示读出、写入、删除NVM芯片的消息,还可以包括指示读取NVM芯片状态、读取或设置NVM芯片特征(Feature)的消息,以及也可以包括用户自定义消息。NVM命令处理单元220从消息队列210获取消息,并根据消息的指示向NVM芯片发送符合NVM芯片接口标准的NVM接口命令或依照NVM芯片接口标准从NVM接收数据或状态。作为举例,根据本申请实施例的NVM命令处理单元,通过例如执行指令或微指令,对NVM接口命令实施调度。消息队列210包括一个或多个消息队列。
NVM命令处理单元220耦合到多个NVM芯片。在图2的实施例中,NVM命令处理单元220通过2个通道(CH1与CH2)耦合到4颗NVM芯片,每个NVM芯片包括2个LUN。在通道CH 1的NVM芯片(NVM 0与NVM 1)各自提供LUN 0与LUN 1,在通道CH 2的NVM芯片(NVM 2与NVM 3)各自提供LUN0与LUN1。可以理解的,NVM接口控制器可耦合更多的通道,并访问更多的NVM芯片与更多的LUN。
介质接口控制器能够对来自多个消息队列的多个访问NVM芯片的消息并行处理。NVM命令处理单元可包括多个硬件实例或多个线程,每个实例或线程,并行处理多个NVM接口命令。硬件实例或执行微指令序列的线程访问各自对应的NVM芯片。将可被执行的微指令序列被称作线程。由于同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。在NVM命令处理单元220中还为每个线程存储执行状态。根据本申请的实施例,基于所要访问的LUN来创建或使用线程。例如使用线程1来访问LUN1,和/或使用线程2来访问LUN2。
图3是根据本申请实施例的控制部件的介质接口控制器的框图。
图3的实施例中,介质接口控制器包括消息队列310与NVM命令处理单元320。介质接口控制器耦合到多个NVM芯片(示出为NVM 0、NVM 1、NVM 2与NVM 3)。NVM芯片包括页缓存。为向NVM芯片写入数据,介质接口控制器向NVM芯片发出编程命令,并将被编程的数据传输到NVM芯片。NVM芯片收到数据并存储在页缓存中,还将页缓存中的数据存储在NVM芯片。为从NVM芯片读出数据,介质接口控制器向NVM芯片发出读命令或者读页缓存的命令,其中读页缓存的命令将NVM芯片的页缓存中的数据读出,并传输给介质接口控制器。
图3中还展示了消息队列中的多个NVM接口命令。依箭头方向所指示的,下方的命令被更早接收或者更早添加到消息队列。例如,从消息队列310中,依次接收到读NVM芯片0物理地址P0的命令、写NVM芯片0物理地址P100的命令、读NVM芯片0物理地址P1的命令以及读NVM芯片0物理地址P50的命令。可按照NVM接口命令被接收的顺序,将NVM接口命令发送给NVM芯片,并获得NVM接口命令的执行结果。
根据本申请的实施例,接收读NVM芯片0物理地址P0的命令,并将其发送给NVM芯片0后,暂缓处理写NVM芯片0物理地址P100的命令。响应于NVM芯片0物理地址P0的数据被读出,物理地址P0的数据,以及可选地与其临近的数据,都被存储在页缓存中。NVM命令处理单元320识别出随后的读NVM芯片0物理地址P1的命令可被提前调度,并将读NVM芯片0物理地址P1的命令修改为从页缓存中获取数据,从而降低读命令的处理延迟。接下来,NVM命令处理单元320再向NVM芯片0发出写NVM芯片0物理地址P100的命令与读NVM芯片0物理地址P50的命令。从而通过改变NVM接口命令的执行顺序,优化处理NVM接口命令的性能。NVM命令处理单元320识别出可被改变执行顺序的一个或多个NVM接口命令,并在必要时,改变NVM接口命令的形态,例如,将读命令修改为读页缓存的命令,或者合并两个或多个命令。
图4A是根据本申请实施例的优化NVM接口命令执行顺序的示意图。
图4A展示了从消息队列(例如,参看图3,消息队列310)接收的NVM接口命令(也简称为“NVM命令”)及其接收循序。NVM命令0最先被接收、接下来是NVM命令1、NVM命令2与NVM命令3。作为举例,在执行了NVM命令0之后,紧接着执行NVM命令2是优化的。写指针指示向消息队列填充NVM命令的位置。读指针(RP)指示从NVM消息队列获取NVM命令的位置。令读指针RP=Base+Offset,其中Base称为基地址,而Offset称为偏移值。
图4B是根据本申请的又一实施例的优化NVM接口命令执行顺序的流程图。
由例如图3的NVM命令处理单元320实施图4B所示的处理流程。响应于一条NVM命令(称为当前NVM命令)执行完成(410),检测接下来是否有优化NVM命令执行顺序的机会(412)。例如,当前NVM命令同与其在消息队列中不相邻的NVM命令读取相同或相近的地址,则优先处理该不相邻的NVM命令。
接下来,识别偏移值(Offset)的值是否大于0(414)。偏移值(Offset)可由寄存器或程序变量提供。偏移值(Offset)大于0时,其值指示了之前已发生的改变NVM命令执行顺序的次数。此时,使偏移值(Offset)递增(416),以及根据基地址(Base)与偏移值(Offset)的和得到读指针,并根据读指针从消息队列获取NVM命令并处理(420)。可选地,还对获取的NMV命令改变形式,例如,将读命令修改为读页缓存的命令。
在步骤414,若偏移值(Offset)不大于0,则使偏移值(Offset)与基地址(Base)都递增(418),以及根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理(420)。
在步骤420执行之后,返回步骤410开始处理下一NVM命令。
在步骤412,若识别出接下来没有优化NVM命令执行顺序的机会(412),进一步识别偏移值(Offset)是否大于0(430),以识别之前是否对NVM命令执行顺序做了优化。若偏移值(Offset)大于0(430),根据单独的基地址(Base)作为读指针获取NVM命令并处理(432),以及将基地址(Base)更新为使基地址(Base)递增并与偏移值(Offset)求和作为基地址(Base)的新值,并将偏移值(Offset)设置为0(434)。接下来到步骤420,根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理。
在步骤430,若偏移值(Offset)不大于0(430),则使基地址(Base)递增(436),以及到步骤420,根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理。
作为举例,返回参看图4A,在由(1)所指示的NVM命令0执行完成后,开始根据图4B的处理流程,此时,基地址(Base)为0,而偏移值(Offset)为0。在步骤412,识别出可通过先于NVM命令1而执行NVM命令2而优化执行顺序,在步骤414,偏移值(Offset)为0,进入步骤418,得到偏移值(Offset)与基地址(Base)都被修改为1,并在步骤420,得到读指针为(Base+Offset)为2,以获取NVM命令2并处理(图4A中由(2)所指示)。可选地,还改变NVM命令2的形态,以优化对NVM命令2的执行。例如,NVM命令2是命中了页缓存的读命令,将NVM命令2用读页缓存的命令替代。
接下来,通过步骤410与412,识别出无法再优化执行顺序,转向步骤430与步骤432,根据基地址(Base)而处理NVM命令1(图4A中,由(3)所指示)。以及更新基地址(Base)为3,将偏移值(Offset)设置为0(434),并获取NVM命令3并处理(图4A中由(4)所指示)。
图5A是根据本申请实施例的识别是否可优化NVM命令执行顺序的流程图。
根据本申请的实施例,在执行完一条NVM命令后,通过图5A的处理流程,识别是否可优化NVM命令的执行顺序。将刚执行完成的NVM命令称为第一NVM命令,例如,图4A中NVM命令0。将消息队列中同第一NVM命令相邻,并在第一NVM命令之后的NVM命令称为第二NVM命令,如图4A中的NVM命令1。将消息队列中同第一NVM命令不相邻,且在第一NVM命令之后的一个或多个命令都称为第三NVM命令,例如,图4A中的NVM命令2或NVM命令3。
比较第一NVM命令与第二NVM命令,以识别其是否满足优化条件(510)。第一NVM命令与第二NVM命令满足优化条件,意味着其应当被连续的执行。例如,第二NVM命令指示读取同第一NVM命令相同或相近的地址,或者由于执行了第一NVM命令,使得第二NVM命令读取的数据位于NVM芯片的页缓存中,或者第一NVM命令与第二NVM命令访问同一逻辑单元的不同平面(Plane),且第一NVM命令与第二NVM命令可由单一的多平面(MultiPlane)命令来替代,或者第二NVM命令有较高的处理优先级,或者第二NVM命令有较高的处理优先级且消息队列中第一NVM命令与第二NVM命令之间的NVM命令具有较长处理时间(例如,擦除命令)。以同样的标准,识别第一NVM命令与第三NVM命令是否满足优化条件。
若第一NVM命令与第二NVM命令不满足优化条件(510),而第一NVM命令与第三NVM命令满足优化条件(520),则识别出可优化NVM命令执行顺序(530)。针对刚执行完成的第一NVM命令,可优化执行顺序,意味着接下来不执行与其相邻的第二NVM命令,而优先执行与第一NVM命令不相邻的第三NVM命令。
图5B是根据本申请又一实施例的识别是否可优化NVM命令执行顺序的流程图。
根据图5B的实施例,在执行完一条NVM命令(第一NVM命令)后,通过图5B的处理流程,识别是否可优化NVM命令的执行顺序。若第一NVM命令与与其相邻的第二NVM命令满足优化条件(540),进一步获取偏移值(Offset)的值。若偏移值(Offset)大于0(542),则识别出可优化执行顺序(544)。使得在图4B的实施例中,处理流程通过步骤412、414与416的路径被执行。
若步骤542中,偏移值不大于0(542),识别出不可优化执行顺序(544)。
若步骤540识别出第一NVM命令与与其相邻的第二NVM命令不满足优化条件,进一步识别第一NVM命令与与其不相邻的第三NVM命令是否满足优化条件(550)。第三NVM命令同第一NVM命令在消息队列中可间隔1个或多个NVM命令。若第一NVM命令与与其不相邻的第三NVM命令满足优化条件(550),识别出可优化执行顺序(552);否则,识别出不可优化执行顺序(554)。
图6是根据本申请又一实施例的控制部件的介质接口控制器的框图。
图6的实施例中,介质接口控制器包括消息队列610与NVM命令处理单元620。介质接口控制器耦合到多个NVM芯片(示出为NVM 0、NVM 1、NVM 2与NVM 3)。NVM芯片包括页缓存。每个NVM芯片的逻辑单元包括多个平面(Plane)。图6中,将平面展示为P0与P1。NVM芯片提供多平面(Muitl-Plane)命令,以在单一的多平面命令中访问来自两个或更多平面的地址。
图6中还展示了消息队列中的多个NVM接口命令。依箭头方向所指示的,下方的命令被更早接收或者更早添加到消息队列。例如,从消息队列610中,依次接收到读NVM芯片0平面0(PL0)物理地址P0的命令、写NVM芯片0平面0(PL0)物理地址P100的命令、读NVM芯片0平面1(PL1)物理地址P0的命令、读NVM芯片0平面0(PL0)物理地址P50的命令以及读NVM芯片0平面0(PL0)物理地址P1的命令。
根据本申请的实施例,读NVM芯片0平面0(PL0)物理地址P0的命令,与读NVM芯片0平面1(PL1)物理地址P0的命令,被融合,生成单条多平面(Muitl-Plane)命令以替代前述两个命令,从而减少了执行NVM命令的数量以提高固态存储设备的性能。进一步,还识别出读NVM芯片0平面0(PL0)物理地址P1的命令的数据随该多平面命令的执行被加载到NVM芯片0的页缓存中,还优化执行顺序,先执行读NVM芯片0平面0(PL0)物理地址P1的命令,并将该命令用读页缓存的命令代替。接下来,再执行写NVM芯片0平面0(PL0)物理地址P100的命令与读NVM芯片0平面0(PL0)物理地址P50的命令。
图7是根据本申请另一实施例的优化NVM命令执行顺序的流程图。
由例如图6的NVM命令处理单元620实施图7所示的处理流程。响应于待执行一条NVM命令(称为第一NVM命令)(710),检测第一NVM命令与同其在消息队列中相邻并在后的第二NVM命令是否可融合(712)。例如,识别第一NVM命令与第二NVM命令是否可由单一的多平面命令替代。若第一NVM命令与第二NVM命令可融合(712),融合第一NVM命令与第二NVM命令(715),例如,生成多平面命令以替代第一NVM命令与第二NVM命令。若第一NVM命令与第二NVM命令不可融合(712),执行第一NVM命令(714)。
响应于第一NVM命令执行完成,接下来的处理流程类似于图4B从步骤410开始的处理流程。
检测接下来是否有优化NVM命令执行顺序的机会(716)。若有优化NVM命令执行顺序的机会,接下来,识别偏移值(Offset)的值是否大于0(718)。若偏移值(Offset)大于0,使偏移值(Offset)递增(720),而基地址(Base)保持不变,以及根据基地址(Base)与偏移值(Offset)的和得到读指针,并根据读指针从消息队列获取NVM命令并处理(724)。可选地,还对获取的NMV命令改变形式,例如,将读命令修改为读页缓存的命令。
在步骤718,若偏移值(Offset)不大于0,则使偏移值(Offset)与基地址(Base)都递增(722),以及根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理(724)。
在步骤724执行之后,返回步骤710开始处理下一NVM命令。
在步骤716,若识别出接下来没有优化NVM命令执行顺序的机会,进一步识别偏移值(Offset)是否大于0(730),以识别之前是否对NVM命令执行顺序做了优化。若偏移值(Offset)大于0(730),根据单独的基地址(Base)作为读指针获取NVM命令并处理(732),以及将基地址(Base)更新为使基地址(Base)递增并与偏移值(Offset)求和作为基地址(Base)的新值,并将偏移值(Offset)设置为0(734)。接下来到步骤724,根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理。
在步骤730,若偏移值(Offset)不大于0,则使基地址(Base)递增(736),以及到步骤724,根据基地址(Base)与偏移值(Offset)的和作为读指针从消息队列获取NVM命令并处理。
图8A-图8C是根据本申请多个实施例的优化NVM命令执行顺序的流程图。由例如图6的NVM命令处理单元620实施图8A-图8C所示的处理流程。
参看图8A,响应于待执行一条NVM命令(称为第一NVM命令)(810),识别第一NVM命令是否命中页缓存(812)。根据本申请的实施例,NVM命令处理单元记录各个NVM芯片的页缓存中的数据的地址范围,以识别NVM命令可否命中页缓存。若页缓存命中(812),根据第一NVM命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM命令(814)。以及返回步骤810,继续获取下一待执行的NVM命令。
若页缓存未命中(812),识别第一NVM命令与同第一NVM命令相邻的NVM命令是否可融合(816)。若第一NVM命令与同第一NVM命令相邻的NVM命令可融合(816),融合第一NVM命令与相邻的NVM命令,生成并执行例如多平面命令替代第一NVM命令与相邻的NVM命令(818),以及返回步骤810,继续获取下一待执行的NVM命令。
若识别第一NVM命令与相邻的NVM命令不可融合(816),执行第一NVM命令(820),以及返回步骤810,继续获取下一待执行的NVM命令。
可选地,若第一NVM命令是读命令,在步骤820,响应于执行了第一NVM命令,还标记页缓存中的数据的地址,用于识别后续的NVM命令是否会命中页缓存。
参看图8B,响应于待执行一条NVM命令(称为第一NVM命令)(830),识别第一NVM命令与同第一NVM命令相邻的NVM命令是否可融合(832)。若第一NVM命令与相邻的NVM命令可融合(832),融合第一NVM命令与相邻的NVM命令,生成并执行例如多平面命令替代第一NVM命令与相邻的NVM命令(834),以及返回步骤830,继续获取下一待执行的NVM命令。
若识别第一NVM命令与相邻的NVM命令不可融合(832),识别第一NVM命令是否命中页缓存(836)。若页缓存命中(836),根据第一NVM命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM命令(838)。以及返回步骤830,继续获取下一待执行的NVM命令。若页缓存未命中(836),执行第一NVM命令(840),以及返回步骤830,继续获取下一待执行的NVM命令。
参看图8C,响应于待执行一条NVM命令(称为第一NVM命令)(860),若第一NVM命令与相邻的NVM命令可融合(862),进一步识别第一NVM命令是否命中页缓存(864)。若页缓存命中(864),融合第一NVM命令与相邻的NVM命令,生成并执行例如对页缓存的多平面命令替代第一NVM命令与相邻的NVM命令(868),以及返回步骤860,继续获取下一待执行的NVM命令。若页缓存未命中(864),融合第一NVM命令与相邻的NVM命令,生成并执行例如多平面命令替代第一NVM命令与相邻的NVM命令(866),以及返回步骤860。
若识别第一NVM命令与相邻的NVM命令不可融合(862),识别第一NVM命令是否命中页缓存(870)。若页缓存命中(870),根据第一NVM命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM命令(872)。以及返回步骤860。若页缓存未命中(870),执行第一NVM命令(874),以及返回步骤860,继续获取下一待执行的NVM命令。
图9是根据本申请还一实施例的优化NVM命令执行顺序的流程图。由例如图6的NVM命令处理单元620实施图9所示的处理流程。
可选地,NVM命令处理单元620从消息队列610获取NVM命令,并存储在缓存中。获取待执行的NVM命令(称为第一NVM命令)(910)。可选地,识别第一NVM命令是否命中页缓存(920)。若第一NVM命令命中了页缓存(920),根据第一NVM命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM命令(925)。以及返回步骤910,继续获取接下来的待执行的NVM命令。
若第一NVM命令未命中页缓存(920),依然可选地,识别一个或多个第二NVM命令是否命中页缓存(930)。第二NVM命令是缓存中在第一NVM命令之后的NVM命令。若一个或多个第二NVM命令命中了页缓存(930),根据第二NVM命令生成访问页缓存的命令,用访问页缓存的命令替代各个命中了页缓存的第二NVM命令(935)。以及还将被执行的NVM命令从缓存中移除。以及返回步骤910,继续获取接下来的待执行的NVM命令。
若第二NVM命令未命中页缓存(930),依然可选地,识别第一NVM命令与一个或多个第二NVM命令是否可融合(940)。若第一NVM命令与一个或多个第二NVM命令可融合(940),融合第一NVM命令与一个或多个第二NVM命令,生成并执行例如多平面命令替代融合的第一NVM命令与一个或多个第二NVM命令(945)。还将被融合的NVM命令从缓存中移除。以及返回步骤910,继续获取接下来的待执行的NVM命令。
若第一NVM命令与一个或多个第二NVM命令不可融合(940),依然可选地,识别第一NVM命令是相对更耗时或低优先级的命令,而一个或多个第二NVM命令是相对低延迟或高优先级的命令(950)。若步骤950识别的结果成立,则执行一个或多个第二NVM命令(955)。还将被执行的NVM命令从缓存中移除。以及返回步骤910,继续获取接下来的待执行的NVM命令。若步骤950识别的结果不成立,执行第一NVM命令(960),并返回步骤910,继续获取接下来的待执行的NVM命令。
可选地,若步骤950识别的结果成立,执行第一NVM命令,以及紧接着生成并执行第三NVM命令,用于指示NVM芯片中止对第一NVM命令的执行。以及执行一个或多个第二NVM命令(955)。还将被执行的第二NVM命令从缓存中移除。被中止的第一NVM命令可被恢复执行。
依然可选地,还确保第一NVM命令等待被执行的时间不会过长。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种优化NVM接口命令执行顺序的方法,其特征在于,包括:
检测待执行的第一NVM接口命令与同其在消息队列中相邻并在后的第二NVM接口命令是否可融合;
响应于第一NVM接口命令与第二NVM接口命令可融合,融合第一NVM接口命令与第二NVM接口命令;
执行融合后的NVM接口命令;
响应于第一NVM接口命令执行完成,检测是否可优化NVM接口命令执行顺序;
响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理;其中所述偏移值指示了之前已发生的改变NVM接口命令执行顺序的次数;
响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
2.一种优化NVM接口命令执行顺序的方法,其特征在于,包括:
获取待执行的第一NVM接口命令;
识别第一NVM接口命令是否命中NVM芯片的页缓存;
响应于页缓存命中,根据第一NVM接口命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令;
响应于第一NVM接口命令执行完成,检测是否可优化NVM接口命令执行顺序;
响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理;其中所述偏移值指示了之前已发生的改变NVM接口命令执行顺序的次数;
响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
3.一种优化NVM接口命令执行顺序的方法,其特征在于,包括:
响应于第一NVM接口命令待执行;
识别第一NVM接口命令与同其在消息队列中相邻并在后的第二NVM接口命令是否可融合;
响应于第一NVM接口命令与第二NVM接口命令可融合,融合第一NVM接口命令与第二NVM接口命令,生成并执行融合后的多平面命令替代第一NVM接口命令与第二NVM接口命令;
响应于第一NVM接口命令与第二NVM接口命令不可融合,识别第一NVM接口命令是否命中NVM芯片的页缓存;
响应于页缓存命中,根据第一NVM接口命令生成访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令;
响应于第一NVM接口命令执行完成,检测是否可优化NVM接口命令执行顺序;
响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理;其中所述偏移值指示了之前已发生的改变NVM接口命令执行顺序的次数;
响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
4.一种优化NVM接口命令执行顺序的方法,其特征在于,包括:
响应于第一NVM接口命令待执行;
识别第一NVM接口命令是否命中NVM芯片的页缓存;
响应于第一NVM接口命令命中页缓存,根据第一NVM接口命令生成并执行访问页缓存的命令,用访问页缓存的命令替代第一NVM接口命令;
响应于第一NVM接口命令执行完成,检测是否可优化NVM接口命令执行顺序;
响应于可优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,使偏移值递增;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理;其中所述偏移值指示了之前已发生的改变NVM接口命令执行顺序的次数;
响应于无法优化NVM接口命令执行顺序,识别读指针的偏移值是否大于0;响应于偏移值大于0,根据基地址作为读指针获取NVM接口命令并处理;使基地址递增并与偏移值求和作为基地址的新值,并将偏移值设置为0;以及根据基地址与偏移值的和得到读指针,并根据读指针获取NVM接口命令并处理。
5.如权利要求4所述的方法,其特征在于,识别同第一NVM接口命令在消息队列中相邻并在后的一个或多个第二NVM接口命令是否命中页缓存;
响应于一个或多个第二NVM接口命令命中页缓存,根据第二NVM接口命令生成并执行访问页缓存的命令,用访问页缓存的命令替代各个命中了页缓存的第二NVM接口命令;
将第二NVM接口命令移除。
6.一种介质接口控制器,其特征在于,包括:消息队列和NVM命令处理单元,消息队列与NVM命令处理单元耦合,NVM命令处理单元还与多个NVM芯片耦合;消息队列用于接收访问NVM芯片的逻辑单元的多个平面的消息,NVM命令处理单元从消息队列获取信息,并根据消息的指示生成NVM接口命令并发送给NVM芯片;NVM命令处理单元融合NVM接口命令;
NVM命令处理单元执行根据权利要求1-5之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010290860.9A CN111488298A (zh) | 2017-12-29 | 2018-04-25 | 优化nvm接口命令执行顺序的方法与装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711469151 | 2017-12-29 | ||
CN2017114691511 | 2017-12-29 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010290860.9A Division CN111488298A (zh) | 2017-12-29 | 2018-04-25 | 优化nvm接口命令执行顺序的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108572932A CN108572932A (zh) | 2018-09-25 |
CN108572932B true CN108572932B (zh) | 2020-05-19 |
Family
ID=63574133
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010290860.9A Pending CN111488298A (zh) | 2017-12-29 | 2018-04-25 | 优化nvm接口命令执行顺序的方法与装置 |
CN201810381673.4A Active CN108572932B (zh) | 2017-12-29 | 2018-04-25 | 多平面nvm命令融合方法与装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010290860.9A Pending CN111488298A (zh) | 2017-12-29 | 2018-04-25 | 优化nvm接口命令执行顺序的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111488298A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102551730B1 (ko) * | 2018-10-22 | 2023-07-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
KR20210072990A (ko) * | 2019-12-10 | 2021-06-18 | 삼성전자주식회사 | 가변 크기 맵핑 기반의 스토리지 장치의 데이터 관리 방법 및 이를 이용한 구동 방법 |
CN112130906A (zh) * | 2020-09-28 | 2020-12-25 | 深圳市宏旺微电子有限公司 | 一种主机命令处理的方法及装置 |
CN117539407B (zh) * | 2024-01-04 | 2024-03-29 | 浙江大华技术股份有限公司 | 数据存储方法、电子设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1178941A (zh) * | 1996-10-07 | 1998-04-15 | 国际商业机器公司 | 通过合并存储操作进行集中存储的处理机及方法 |
CN101923522A (zh) * | 2009-06-11 | 2010-12-22 | 中兴通讯股份有限公司 | 存储控制器及数据操作命令的处理方法 |
CN102422271A (zh) * | 2009-05-06 | 2012-04-18 | 苹果公司 | 用于非易失性存储器系统的多页准备命令 |
CN104884145A (zh) * | 2012-03-28 | 2015-09-02 | 国际商业机器公司 | 指令合并优化 |
CN107229576A (zh) * | 2016-03-24 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 一种降低片上系统运行功耗的装置和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9342314B2 (en) * | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
CN105094686B (zh) * | 2014-05-09 | 2018-04-10 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
US10019161B2 (en) * | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
CN105183398B (zh) * | 2015-09-28 | 2018-09-14 | 北京联想核芯科技有限公司 | 一种存储设备、电子设备及数据处理方法 |
CN106951374B (zh) * | 2016-01-06 | 2022-06-10 | 北京忆芯科技有限公司 | 用于检查块页地址的方法及其装置 |
US9830086B2 (en) * | 2016-03-03 | 2017-11-28 | Samsung Electronics Co., Ltd. | Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
-
2018
- 2018-04-25 CN CN202010290860.9A patent/CN111488298A/zh active Pending
- 2018-04-25 CN CN201810381673.4A patent/CN108572932B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1178941A (zh) * | 1996-10-07 | 1998-04-15 | 国际商业机器公司 | 通过合并存储操作进行集中存储的处理机及方法 |
CN102422271A (zh) * | 2009-05-06 | 2012-04-18 | 苹果公司 | 用于非易失性存储器系统的多页准备命令 |
CN101923522A (zh) * | 2009-06-11 | 2010-12-22 | 中兴通讯股份有限公司 | 存储控制器及数据操作命令的处理方法 |
CN104884145A (zh) * | 2012-03-28 | 2015-09-02 | 国际商业机器公司 | 指令合并优化 |
CN107229576A (zh) * | 2016-03-24 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 一种降低片上系统运行功耗的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111488298A (zh) | 2020-08-04 |
CN108572932A (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572932B (zh) | 多平面nvm命令融合方法与装置 | |
US10282132B2 (en) | Methods and systems for processing PRP/SGL entries | |
US10108372B2 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
CN111475438B (zh) | 提供服务质量的io请求处理方法及其装置 | |
CN111045593B (zh) | 用来进行读取加速的方法以及数据存储装置及其控制器 | |
CN108628759B (zh) | 乱序执行nvm命令的方法与装置 | |
CN107305504B (zh) | 数据储存装置、其控制单元及其任务排序方法 | |
US20190035445A1 (en) | Method and Apparatus for Providing Low Latency Solid State Memory Access | |
CN106951374B (zh) | 用于检查块页地址的方法及其装置 | |
US10503438B1 (en) | Memory sub-system supporting non-deterministic commands | |
US10346052B2 (en) | Memory system with priority processing and operating method thereof | |
CN107870866B (zh) | Io命令调度方法与nvm接口控制器 | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN113196225A (zh) | 开放信道矢量命令执行 | |
CN111625482B (zh) | 顺序流检测方法与装置 | |
CN107870779B (zh) | 调度方法与装置 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN111736779B (zh) | Nvm接口命令的优化执行方法与装置 | |
US20150055419A1 (en) | Controller, memory system, and method | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
KR102523967B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 | |
CN109213424B (zh) | 并发io命令的无锁处理方法 | |
CN110580227B (zh) | 自适应nvm命令生成方法与装置 | |
CN109388593B (zh) | 进行动态资源管理的方法、记忆装置及记忆装置的控制器 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201201 Address after: 200120 Shanghai, Nanhui, new towns around the Lake Road West, No. two, building C, Patentee after: Shanghai Yixin Industry Co., Ltd Address before: 550081 No. 210th, block A, Morgan center, Lin Cheng West Road, Guan Shan Road, Guiyang, Guizhou, China. 1-20 Patentee before: GUIYANG YIXIN TECHNOLOGY Co.,Ltd. |