一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种访问NVM的方法及NVM控制器与流程

2022-09-01 10:25:25 来源:中国专利 TAG:

一种访问nvm的方法及nvm控制器
技术领域
1.本发明涉及固态存储设备(solid storage device,ssd),更具体地,本发明涉及存储器控制器中块/页地址检查微指令的执行。


背景技术:

2.同机械式硬盘相类似,固态存储设备(ssd)也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以例如的闪存(flash)的非易失存储器(nvm,non volatile memory)作为存储介质。如图1所示,为现有技术的存储系统的框图。其中主要包括主机系统110和固态存储设备120。其中,固态存储设备120包括接口模块130,存储控制器140,以及由多个闪存颗粒150组成的flash阵列160。其中,接口模块130主要用于实现与主机系统通信的接口协议,例如sata(serial advanced technology attachment,串行高级技术附件)、usb(universal serial bus,通用串行总线)、pcie(peripheral component interconnect express,快速外围组件互连)、nvme(nvm express)、scsi(small computer system interface,小型计算机系统接口)、iscsi(internet small computer system interface,因特网小型计算机系统接口)、ide(integrated drive electronics,集成驱动器电子)等。通过接口模块130,固态存储设备呈现给主机系统的是拥有一定逻辑地址空间或物理地址空间的标准存储设备。存储控制器140是整个存储设备的控制核心,主要负责接口模块130与闪存阵列160之间的控制信号及数据的传输、闪存管理、主机逻辑地址到闪存物理地址的转换或映射、磨损均衡、和/或坏块管理等。可由软件、硬件、固件或者其组合的多种方式实现存储控制器140。
3.存储控制器140通过向闪存阵列160中的闪存颗粒150发送命令来访问闪存颗粒150。访问闪存颗粒150的命令包括,例如,读出、编程和/或擦除等。按页向闪存颗粒150写入或读出数据。闪存颗粒150提供了预定的页大小,每个页的大小是例如2kb、4kb、8kb或16kb。
4.主机110的文件系统或设备驱动也按照预定大小的数据块来访问存储设备。预定大小的数据块可被称为块(block)、页(page)或区段(sector)。这里数据块的大小同闪存颗粒150的页大小相同或不同。
5.在公开号为cn1414468a的中国专利申请中,提供了通过执行微指令序列来处理cpu(central processing unit,中央处理单元)指令的方案。当cpu要处理特定指令时,转换逻辑电路将特定指令转换成与之对应的微指令序列,通过执行微指令序列来实现特定指令的功能。微指令序列或者微指令序列的模板存储在rom(read only memory,只读存储器)中。在将特定指令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定指令相对应。
6.存储器目标(target)是闪存颗粒150封装内的共享芯片使能(ce,chip enable)信号的一个或多个逻辑单元(logic unit)。每个逻辑单元具有逻辑单元号(lun,logic unit number)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存
芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/documents/products/other%20documents/onf i3_0gold.ashx获得的“open nand flash interface specification(revision 3.0)”中,提供了关于目标(target)、逻辑单元、lun、平面(plane)的含义。
7.公开号为cn102177556a的中国专利申请公开了一种闪存转换层(ftl),其展示了用于ftl的并行单元的查找表的例子。由于闪存芯片中的逻辑单元(logic unit)可以并行方式存取,因而,并行单元可以是逻辑单元。逻辑单元内可包括多个平面(plane),并行单元也可为平面。


技术实现要素:

8.在一些应用场景中,nvm的页大小不同于应用所请求的页大小。例如操作系统的io访问请求的数据单元大小为512字节,而nvm的页大小为4kb、8kb或16kb。为响应一个io访问请求而从nvm读出数据后,大量被读出的数据并未被当前的io请求所使用。但由于数据访问的局部性或其他原因,从nvm中被读出的数据可能在随后的io访问请求中被使用。因而在需要从闪存颗粒读出数据时,希望有灵活的方式判断数据是否已存在于存储控制器的缓存中。数据被缓存的原因有多种,希望判断数据是否已存在于存储控制器的缓存中的方式能够适应不同的原因。并且被期待的是,存储设备的用户能够参与缓存利用的灵活控制,而不是依赖于存储控制器判断数据是否被缓存。
9.为实现上述目的,本发明通过微指令序列的执行来响应来自主机或用户的命令。通过微指令执行单元对微指令序列的执行,向闪存颗粒发出操作命令和/或接收从闪存颗粒读出的数据或其他信息。存储设备的用户通过对微指令序列的编程、更新和/或修改,能够参与对存储控制器的缓存利用的灵活控制。
10.根据本发明的第一个方面,提供了一种访问nvm的方法,包括:处理指示读nvm的第一用户命令,检查所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址是否相同,其中,所述第二用户命令指示读nvm,所述第二用户命令出现于所述第一用户命令之前,且所述第二命令与所述第一用户命令访问相同的第一并行单元;若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址相同,从与所述第一并行单元对应的第一缓存中读出数据,用来响应所述第一用户命令。
11.根据本发明的第一方面的一个实施方式,进一步包括:若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址不同,向nvm发出nvm读命令。
12.根据本发明的第一方面的一个实施方式,其中,为访问第一并行单元的第一用户命令提供第一缓存,为访问第二并行单元的第一用户命令提供第二缓存。
13.根据本发明的第一方面的一个实施方式,其中,响应于所述第二用户命令,将从nvm中读出与所述第二用户命令对应的块地址和页地址对应的数据写入所述第一缓存。
14.根据本发明的第一方面的一个实施方式,其中,若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址相同,设置标志寄存器;以及若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址不同,清除标志寄存器。
15.根据本发明的第一方面的一个实施方式,其中,若所述第一用户命令对应的块地
址和页地址与第二用户命令对应的块地址和页地址相同,跳转执行第一微指令序列,以从与所述第一并行单元对应的第一缓存中读出数据;以及若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址不同,跳转执行第二微指令序列,以向nvm发出nvm读命令。
16.根据本发明的第一方面的一个实施方式,其中,响应于所述第一用户命令,若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址不同,进一步从nvm中读出与所述第一用户命令对应的块地址和页地址对应的数据,并写入所述第一缓存。
17.根据本发明的第一方面的一个实施方式,其中,所述第一用户命令对应第一区段地址,所述第二用户命令对应第二区段地址。
18.根据本发明的第一方面的一个实施方式,其中,所述第一用户命令指示获取第一地址范围的数据,所述第二用户命令指示获取第二地址范围的数据。
19.根据本发明的第一方面的一个实施方式,其中,响应于所述第二用户命令,从nvm中读出与所述第二用户命令对应的块地址和页地址对应的页数据写入所述第一缓存,所述页数据包括第一区段数据与第二区段数据。
20.根据本发明的第一方面的一个实施方式,进一步包括:处理指示读nvm的第三用户命令,根据所述第三用户命令访问第二并行单元,将从nvm中读出与所述第三用户命令对应的块地址和页地址对应的数据写入第二缓存。
21.根据本发明的第一方面的一个实施方式,其中,若所述标志寄存器被设置,跳转执行第一微指令序列,以从与所述第一并行单元对应的第一缓存中读出数据;以及若所述标志寄存器被清除,跳转执行第二微指令序列,以向nvm发出nvm读命令。
22.根据本发明的第二方面,还提供了一种访问nvm的方法,包括:处理指示读nvm的第一用户命令,检查所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址是否相同,其中,所述第二用户命令指示写nvm,所述第二用户命令出现于所述第一用户命令之前,且所述第二命令与所述第一用户命令访问相同的并行单元;若所述第一用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址相同,从与所述并行单元对应的缓存中读出数据,用来响应所述第一用户命令。
23.根据本发明的第二方面的一个实施方式,进一步包括:若所述用户命令对应的块地址和页地址与第二用户命令对应的块地址和页地址不同,向nvm发出nvm读命令。
24.根据本发明的第三方面,还提供了一种nvm控制器,包括:微指令存储器,用于存储微指令序列;微指令执行单元,用于对微指令进行译码并执行微指令所对应的操作;程序计数器,用于指示微指令存储器中微指令的存储位置;通用寄存器组,其中通过所述微指令序列中的微指令能够访问所述通用寄存器组中的寄存器;用户命令存储器,用于存储用户命令;上下文存储器,用于存储微指令序列对应的上下文信息。
25.根据本发明的第三方面的一个实施方式,其中,依据程序计数器,所述微指令执行单元从微指令存储器中获取第一微指令;所述微指令执行单元对第一微指令进行解码,当第一微指令是读地址检查微指令时,所述微指令执行单元,依据读地址检查微指令的偏移值访问用户命令存储器,获取第一块地址与第一页地址;所述微指令执行单元,访问上下文存储器,获得当前微指令序列的上下文信息中存储的第二块地址与第二页地址;所述微指
令执行单元比较第一块地址与第二块地址,第一页地址与第二页地址,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,所述微指令执行单元则依据所述读地址检查微指令的寄存器索引设置通用寄存器组中由所述寄存器索引所指示的通用寄存器。
26.根据本发明的第三方面的一个实施方式,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,所述微指令执行单元则依据所述读地址检查微指令的寄存器索引清除通用寄存器组中由所述寄存器索引所指示的通用寄存器;以及所述微指令执行单元使所述程序计数器递增。
27.根据本发明的第三方面的一个实施方式,其中,所述微指令执行单元访问用户命令存储器,进一步获取第一并行单元地址;所述微指令执行单元访问用户命令存储器,依据所述第一并行单元地址获得当前微指令序列的上下文信息中存储的第二块地址与第二页地址。
28.根据本发明的第三方面的一个实施方式,其中,响应于用户命令存储器中的用户命令而发起微指令序列的执行,依据所述用户命令所访问的并行单元而为所述微指令序列执行第一上下文存储器,所述微指令执行单元访问第一上下文存储器,获得当前微指令序列的上下文信息中存储的第二块地址与第二页地址。
29.根据本发明的第四方面,还提供了一种nvm控制器,包括:微指令存储器,用于存储微指令序列;微指令执行单元,用于对微指令进行译码并执行微指令所对应的操作;程序计数器,用于指示微指令存储器中微指令的存储位置;用户命令存储器,用于存储用户命令;上下文存储器,用于存储微指令序列对应的上下文信息。
30.根据本发明的第四方面的一个实施方式,其中,依据程序计数器,所述微指令执行单元从微指令存储器中获取第一微指令,所述微指令执行单元对第一微指令进行解码,当第一微指令是读地址检查微指令时,所述微指令执行单元,依据读地址检查微指令的偏移值访问用户命令存储器,获取第一块地址与第一页地址;所述微指令执行单元,访问上下文存储器,获得当前微指令序列的上下文信息中存储的第二块地址与第二页地址;所述微指令执行单元比较第一块地址与第二块地址,第一页地址与第二页地址,其中,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,所述微指令执行单元则依据所述读地址检查微指令的第一地址设置所述程序计数器;若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,所述微指令执行单元使所述程序计数器递增为第二地址。
31.根据本发明的第四方面的一个实施方式,其中,依据程序计数器,所述微指令执行单元从微指令存储器中获取第一微指令,所述微指令执行单元对第一微指令进行解码,当第一微指令是读地址检查微指令时,所述微指令执行单元,依据读地址检查微指令的偏移值访问用户命令存储器,获取第一块地址与第一页地址;所述微指令执行单元,访问上下文存储器,获得当前微指令序列的上下文信息中存储的第二块地址与第二页地址;所述微指令执行单元比较第一块地址与第二块地址,第一页地址与第二页地址,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,所述微指令执行单元则依据所述读地址检查微指令的第一地址设置所述程序计数器;若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,所述微指令执行单元使所述程序计数器递增为第二
地址。
32.根据本发明的第四方面的一个实施方式,其中,所述上下文存储器中进一步存储在处理所述用户命令之前在nvm的第二块地址与第二页地址中读出的数据。
33.根据本发明的第四方面的一个实施方式,其中,所述上下文存储器中进一步存储在处理所述用户命令之前向nvm的第二块地址与第二页地址中写入的数据。
34.根据本发明的第四方面的一个实施方式,其中,所述微指令存储器从所述第一地址开始存储用于从缓存中获取数据的微指令序列。
35.根据本发明的第四方面的一个实施方式,其中,所述微指令存储器从所述第二地址开始存储用于向nvm发出nvm读命令的微指令序列。
36.根据本发明的第四方面的一个实施方式,其中,所述微指令存储器从所述第一地址开始存储用于向nvm发出nvm读命令的微指令序列。
37.根据本发明的第四方面的一个实施方式,其中,所述微指令存储器从所述第二地址开始存储用于从缓存中获取数据的微指令序列。
38.根据本发明的第五方面,还提供了一种在nvm接口控制器中执行读地址检查微指令的方法,包括:取出第一微指令;对所述第一微指令进行解码,确定所述第一微指令是读地址检查微指令,其中所述读地址检查微指令包括寄存器索引与偏移值,所述寄存器索引用于指示存储所述读地址检查指令执行结果的标志寄存器,所述偏移值用于指示用户命令的存储位置;依据所述偏移值获取所述用户命令对应的第一块地址与第一页地址;依据所述读地址检查微指令的上下文信息获取第二块地址与第二页地址,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,则依据寄存器索引设置标志寄存器;所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,则依据寄存器索引清除标志寄存器。
39.根据本发明的第六方面,还提供了一种在nvm接口控制器中执行读地址检查微指令的方法,包括:取出所述读地址检查微指令,其中所述读地址检查微指令包括寄存器索引与偏移值,所述寄存器索引用于指示存储所述读地址检查指令执行结果的标志寄存器,所述偏移值用于指示用户命令的存储位置;对所述读地址检查微指令进行解码;依据所述偏移值获取所述用户命令对应的第一块地址与第一页地址;依据所述读地址检查微指令的上下文信息获取第二块地址与第二页地址,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,则依据寄存器索引设置标志寄存器;若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,则依据寄存器索引清除标志寄存器。
40.根据本发明的第六方面的一个实施方式,其中,所述第二块地址与第二页地址是发生于所述用户命令之前的用户命令所对应的访问nvm的块地址和页地址。
41.根据本发明的第六方面的一个实施方式,其中,所述用户命令指示读取nvm的第一块地址以及第一页地址所对应的存储位置的数据。
42.根据本发明的第六方面的一个实施方式,其中,其余用户命令是指示从nvm读出数据的命令或向nvm写入数据的命令。
43.根据本发明的第七方面,还提供了一种在nvm接口控制器中执行读地址检查微指令的方法,包括:取出所述读地址检查微指令,其中所述读地址检查微指令包括寄存器索引与偏移值,所述寄存器索引用于指示存储所述读地址检查指令执行结果的标志寄存器,所
述偏移值用于指示用户命令的存储位置;对所述读地址检查微指令进行解码;依据所述偏移值获取所述用户命令对应的第一并行单元地址、第一块地址与第一页地址;依据所述第一并行单元地址获取第二块地址与第二页地址,其中,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,则依据寄存器索引设置标志寄存器;若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,则依据寄存器索引清除标志寄存器。
44.根据本发明的第七方面的一个实施方式,其中,所述第二块地址与第二页地址是发生于所述用户命令之前的其余用户命令所对应的访问nvm的块地址和页地址。
45.根据本发明的第七方面的一个实施方式,其中,所述用户命令指示读取nvm的第一块地址以及第一页地址所对应的存储位置的数据。
46.根据本发明的第七方面的一个实施方式,其中,所述其余用户命令是指示从nvm读出数据的命令或向nvm写入数据的命令。
47.根据本发明的第八方面,还提供了一种在nvm接口控制器中执行读地址检查微指令的方法,包括:取出所述读地址检查微指令,其中所述读地址检查微指令包括寄存器索引与偏移值,所述寄存器索引用于指示存储所述读地址检查指令执行结果的标志寄存器,所述偏移值用于指示用户命令的存储位置,所述读地址检查指令还包括第一地址;对所述读地址检查微指令进行解码;依据所述偏移值获取所述用户命令对应的第一块地址与第一页地址;依据所述读地址检查微指令的上下文信息获取第二块地址与第二页地址,其中,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,则将所述nvm接口控制器的程序计数器设置为所述第一地址;其中从所述第一地址开始存储从缓存中获取数据的微指令序列。
48.根据本发明的第八方面的一个实施方式,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,则将所述nvm接口控制器的程序计数器设置为第二地址;其中所述第二地址开始存储向nvm发出nvm读命令的微指令序列。
49.根据本发明的第八方面的一个实施方式,其中,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,所述方法进一步包括:依据寄存器索引设置标志寄存器。
50.根据本发明的第八方面的一个实施方式,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,所述方法进一步包括:依据寄存器索引清除标志寄存器。
51.根据本发明的第九方面,还提供了一种在nvm接口控制器中执行读地址检查微指令的方法,包括:取出所述读地址检查微指令,其中所述读地址检查微指令包括寄存器索引与偏移值,所述寄存器索引用于指示存储所述读地址检查指令执行结果的标志寄存器,所述偏移值用于指示用户命令的存储位置,所述读地址检查指令还包括第一地址;对所述读地址检查微指令进行解码;依据所述偏移值获取所述用户命令对应的第一块地址与第一页地址;依据所述读地址检查微指令的上下文信息获取第二块地址与第二页地址,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址不同,则将所述nvm接口控制器的程序计数器设置为所述第一地址;其中从所述第一地址开始存储向nvm发出nvm读命令的微指令序列。
52.根据本发明的第九方面的一个实施方式,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,则将所述nvm接口控制器的程序计数器设置为第二地址;其中所述第二地址开始存储从缓存中获取数据的微指令序列。
53.根据本发明的第九方面的一个实施方式,其中,若所述第一块地址与第二块地址相同,且第一页地址与第二页地址相同,所述方法进一步包括:依据寄存器索引设置标志寄存器。
54.根据本发明的第九方面的一个实施方式,其中,若所述第一块地址与第二块地址不同,或第一页地址与第二页地址不同,所述方法进一步包括:依据寄存器索引清除标志寄存器。
55.根据本发明的第十方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行上面所述的方法。
56.根据本发明的第十一方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
57.通过本发明的技术方案,能够灵活判断数据是否已存在于存储控制器的缓存中,存储设备的用户能够参与缓存利用的灵活控制,而不依赖于存储控制器判断数据是否被缓存。
附图说明
58.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。其中在附图中,参考数字之后的字母标记指示多个相同的部件,当泛指这些部件时,将省略其最后的字母标记。在附图中:
59.图1示出了现有技术的存储系统的框图;
60.图2示出了根据本发明的一个实施方式的存储器控制器的处理微指令的部件的结构框图;
61.图3示出了根据本发明的一个实施方式的块/页读地址检查微指令的格式的示意图;
62.图4-1示出了根据本发明的一个实施方式的访问nvm的方法的流程图;
63.图4-2示出了根据本发明的一个实施方式的访问nvm的方法的流程图;
64.图4-3示出了根据本发明的一个实施方式的访问nvm的方法的流程图;
65.图5示出了根据本发明另一实施方式的访问nvm的方法流程图;
66.图6a示出了根据本发明的另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法的流程图;
67.图6b示出了根据本发明另一方面的另一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法及其后续操作的流程图;
68.图7a示出了根据本发明另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法的流程图;以及
69.图7b示出了根据本发明另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法及其后续操作的流程图。
70.在附图中,使用相同或类似的标号来指代相同或类似的元素。
具体实施方式
71.下面结合附图和具体的实施方式对本发明作进一步的描述。
72.图2示出了根据本发明一个实施方式的存储器控制器的处理微指令的部件的结构框图。为实现对微指令的处理,存储设备的存储器控制器可包括微指令执行单元210、命令队列220、接口控制器230、微指令存储器240、上下文存储器260和/或通用寄存器250。
73.微指令存储器240用于存储微指令。微指令执行单元210从微指令存储器240中读取并执行微指令。微指令使得微指令执行单元210通过接口控制器230向闪存颗粒发出访问闪存颗粒的命令,包括,例如,读出、编程、擦除、暂停、读取闪存颗粒特征和/或读设置闪存颗粒特征等命令。微指令也使得微指令执行单元210通过接口控制器230获得从闪存颗粒读出的数据。一条微指令或多条微指令可对应于读出、编程、擦除和/或暂停等访问闪存颗粒的命令之一。微指令还包括分支、跳转微指令,其使得微指令执行单元改变执行微指令的顺序。微指令还包括块/页读地址检查微指令。后文中将结合图3详细介绍块/页读地址检查微指令。
74.微指令存储器240中可存储一段或多段微指令序列。作为举例,在图2的微指令存储器240中,存储了n段微指令序列,包括微指令序列1、微指令序列2
……
以及微指令序列n。微指令序列1、微指令序列2
……
以及微指令序列n的每段包括多条微指令。
75.在微指令序列中的多条微指令可由微指令执行单元210执行。每段微指令序列拥有自己的执行状态,从而每段微指令的执行可被暂停和恢复。微指令执行单元210能够暂停正在执行的微执行序列,并选择执行其他微指令序列。也可以在微指令序列中提供让步微指令,当执行到让步微指令时,微指令执行单元210可调度并执行其他微指令序列。微指令执行单元210暂停正在执行的微指令序列,或者执行让步微指时,正在执行的微指令序列的执行状态被保存;当微指令执行单元恢复微指令序列的执行时,读出被保存的执行状态,从而继续被恢复的微指令序列的执行。
76.接口控制器230同闪存颗粒相耦合,用于向闪存颗粒发出访问闪存颗粒的命令,包括,例如,读出、编程、擦除、暂停和/或恢复等;也用于获得从闪存颗粒读出的数据。
77.命令队列220用于缓存来自用户或上层系统的命令。来自用户或上层系统的命令可包括读出、写入、删除、标记为无效等命令,还可以包括读取存储设备状态、读取/设置闪存颗粒特征等命令,以及也可以包括用户自定义命令。命令队列220可由存储器、先进先出存储器寄存器堆等实现。微指令执行单元210可访问命令队列220。例如,在执行微指令时,依据微指令,微指令执行单元210访问命令队列220。
78.在处理命令队列220中的命令时,获取与该命令对应的微指令序列,并由微指令执行单元210执行该微指令序列,以完成对命令队列220中的命令的处理。可由转换电路(未示出)实现从处理命令队列220中的命令到微指令序列的转换。也可以由微指令执行单元210实现从处理命令队列220中的命令到微指令序列的转换。在获取微指令序列的过程中,可以基于命令队列220中的命令对微指令序列进行填充或适配,以使微指令序列同命令队列220
中的命令相适应。微指令序列还控制微指令执行单元210访问并处理命令队列220中的命令。并依据命令队列220中的命令来选择执行对应的微指令序列。
79.通用寄存器250耦合到微指令执行单元210,用于保存和提供微指令序列的执行状态。微指令序列的执行状态包括程序计数器(pc)、通用寄存器(gr)、物理地址寄存器和/或定时器等。程序计数器用于指示微指令序列中当前执行的微指令地址。物理地址寄存器用于指示微指令序列访问的闪存颗粒的地址。
80.上下文存储器260用于保存微指令序列的执行状态。上下文存储器260保存的微指令序列的执行状态可包括通用寄存器250的内容。在上下文存储器260中,可保存一条或多条微指令序列的执行状态。在上下文存储器260中保存了状态信息的微指令序列,可被调度恢复执行。通过将上下文存储器260中保存的对应于一条微指令序列的状态信息恢复到通用寄存器250中,微指令执行单元210可恢复该微指令序列的执行。将执行的微指令序列称作线程。同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。在上下文存储器260中,为每个线程存储执行状态。
81.在根据本发明的实施例中,基于所要访问的并行单元来创建或使用线程。例如使用第1线程来访问第1并行单元,和/或使用第2线程来访问第2并行单元。在一个例子中,上下文存储器260可容纳的线程数量同图2的处理微指令的部件所耦合的闪存颗粒的并行单元的数量相同;为每一个并行单元分配或保留线程;当处理对一个并行单元的请求时,调度与该并行单元相对应的线程。在一个例子中,上下文存储器260可容纳的线程数量小于同图2的处理微指令的部件所耦合的并行单元的数量。当处理对一个并行单元的请求时,使用已分配来处理该并行单元的线程或者分配新线程来处理该请求。
82.提供并行单元缓存来存储从并行单元读出或向并行单元写入的数据。为每个线程提供并行单元缓存。并行单元缓存的大小对应于闪存颗粒150(参见图1)的页大小。提供更大尺寸的并行单元缓存对提高性能是有利的。在一个例子中,在上下文存储器260中提供并行单元缓存。在另一个例子中,由dram或其他外部于图2的处理微指令的部件的存储器来提供并行单元缓存。
83.图3示出了根据本发明实施例的块/页读地址检查微指令的格式。块/页读地址检查微指令包括操作码(opcode)字段、寄存器(reg)字段与偏移值(offset)字段。操作码字段通过特定标识符或值指示微指令是块/页读地址检查微指令。寄存器字段指示该块/页读地址检查微指令所修改的通用寄存器(参见图2,通用寄存器250)的名字或编号。偏移值字段指示该块/页读地址检查微指令所对应的命令在命令队列220(参见图2)中的位置。在一个例子中,偏移值字段指示待检查的命令在命令队列220中的存储位置。例如,待检查的命令是当前正在处理的命令之前被处理的读命令或编程命令。
84.在一个例子中,在基地址上累加偏移值字段指示的值,获得命令在命令队列220中的存储位置。注意到在该块/页读地址检查微指令中并未包括基地址字段,而是为线程或各个微指令提供全局的基地址寄存器或基地址索引,使得在执行该块/页读地址检查微指令时可获得基地址。在另一个例子中,单独使用偏移值字段获得命令在命令队列220中的存储位置。在依然另一个例子中,偏移值字段指示带检查的命令与当前正在处理的命令的偏移。在又一个例子中,偏移值字段是寄存器地址或编号,从而得以通过微指令序列的执行来修改寄存器的内容来在运行时修改偏移值信息。
85.在命令队列220内的命令中,提供该命令所访问的并行单元地址、块地址与页地址,从而基于并行单元地址、块地址与页地址可确定特定的闪存颗粒150(参见图1)的特定块与页。例如,由user_cmd[base offset].block_page_address表示在命令队列220(参照图2)中由偏移值字段索引的命令所提供的块地址与页地址的组合。
[0086]
在根据本发明的实施例中,为各线程提供可作为线程上下文的块地址寄存器与页地址寄存器,用于分别存储块地址与页地址。可由多种方式存储块地址与页地址,例如,将块地址与页地址组合存放于同一寄存器。例如,由block_page_address表示作为某一线程上下文的块地址与页地址的组合。属于同一线程的微指令,可访问作为线程上下文的块地址与页地址。
[0087]
在执行根据本发明的块/页读地址检查微指令时,微指令执行单元210(参见图2)比较作为线程上下文的块地址与页地址与该线程所处理的命令队列220中的命令的块地址与页地址是否相同,如果相同,在该块/页读地址检查微指令的寄存器(reg)字段所指示的通用寄存器置位。如果作为线程上下文的块地址与页地址与该线程所处理的命令队列220中的命令的块地址与页地址不同,将该块/页读地址检查微指令的寄存器(reg)字段所指示的通用寄存器清除。寄存器置位操作可对应于在寄存器的特定位置写入逻辑“1”或逻辑“0”,寄存器清除操作在寄存器的特定位置中写入的值与寄存器置位操作相反。作为举例,块/页读地址检查微指令的语义表示如下:gr[reg]=(block_page_address==user_cmd[base offset].block_page_address)?1:0。当block_page_address与user_cmd[base offset].block_page_address相同时,将通用寄存器gr[reg]设置为1,否则设置为0。
[0088]
在根据本发明的实施例中,还提供条件分支微指令。条件分支微指令在执行时,检查指定的通用寄存器。依据指定的通用寄存器被置位或清除,条件分支微指令将程序计数器(pc)设置为两个不同的值之一,以指示微指令执行单元210从微指令存储器240的不同位置获取下一条要执行的微指令。
[0089]
在根据本发明的又一实施例中,将块/页读地址检查微指令与条件分支微指令的操作相结合,而提供融合微指令。融合微指令,除了操作码(opcode)字段、寄存器(reg)字段与偏移值(offset)字段外,还包括分支目标字段。
[0090]
在执行融合微指令时,微指令执行单元210(参见图2)比较作为线程上下文的块地址与页地址与该线程所处理的命令队列220中的命令的块地址与页地址是否相同。依据比较结果,将程序计数器(pc)设置为不同的值,以指示微指令执行单元210从微指令存储器的不同位置获取下一条要执行的微指令。例如,在比较结果为真时,指示微指令执行单元210从当前微指令的下一条微指令地址处获取要执行的微指令;而在比较结果为假时,指示微指令执行单元210从分支目标字段指示的地址处获取要执行的微指令。以此方式,不必再使用分离的块/页读地址检查微指令与条件分支微指令,而将条件分支语义融合到执行块/页读地址检查微指令中,从而减少微指令序列的长度,并减少微指令序列在微指令存储器240中占用的存储空间。
[0091]
在根据本发明的另一实施例中,在执行又一融合微指令时,微指令执行单元210(参见图2)比较作为线程上下文的块地址与页地址与该线程所处理的命令队列220中的命令的块地址与页地址是否相同。依据比较结果,将程序计数器(pc)设置为不同的值,以指示微指令执行单元210从微指令存储器的不同位置获取下一条要执行的微指令;并且,将该
块/页读地址检查微指令的寄存器(reg)字段所指示的通用寄存器置位或清除。
[0092]
图4-1示出了根据本发明的一个实施方式的访问nvm的方法的流程图。
[0093]
如图4-1所示,访问nvm的方法包括:步骤410:处理第一用户命令;步骤420:检查第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址是否相同;步骤430:如果第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址相同,从第一缓存中取得数据。
[0094]
在步骤410,作为举例,第一用户命令是第一读命令,开始处理第一读命令。返回参看图2,从命令队列220中取得下一待处理器的命令,并确定其为第一读命令。微指令执行单元210执行相应的微指令序列来处理第一读命令。在步骤420,微指令执行单元210执行根据本发明提供的块/页读地址检查微指令(也参见图3),来判断第一读命令的块地址和/或页地址与第二用户命令的块地址和/或页地址是否相同。第二用户命令是微指令执行单元210在处理第一读命令之前从命令队列210获取并处理的命令。若相同,进行到步骤430,从缓存中取得第一读指令所需的数据。在根据本发明的实施例中,第二用户命令可以是读命令或写命令,在处理第二用户命令时,与第二用户命令的块地址和/或页地址对应的数据被搬运到缓存中。因而当第一读命令与第二用户命令具有相同的块地址和/或页地址时,第一读命令所需要的数据已经存在于缓存中,从缓存中能够获得第一读命令要读取的数据,并无需再发出nvm读命令,从而加快了第一读命令的处理速度。
[0095]
图4-2示出了根据本发明的一个实施方式的访问nvm的方法的流程图。
[0096]
如图4-2所示,访问nvm的方法包括:步骤410:处理第一用户命令;步骤420:检查第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址是否相同;步骤430:如果第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址相同,从第一缓存中取得数据。在图4-2中示出的访问nvm的方法进一步包括步骤440:如果第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址不相同,向nvm发出nvm读命令。
[0097]
图4-3示出了根据本发明的一个实施方式的访问nvm的方法的流程图。
[0098]
如图4-3所示,访问nvm的方法包括:步骤410:处理第一用户命令;步骤420:检查第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址是否相同;步骤430:如果第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址相同,从第一缓存中取得数据;步骤440:如果第一用户命令的块地址和页地址与第二用户命令对应的块地址和页地址不相同,向nvm发出nvm读命令。在图4-3中示出的访问nvm的方法,在步骤440向nvm发出nvm读命令后,进一步包括步骤450:从nvm读出数据,将数据写入第一缓存。
[0099]
在步骤450中,响应于第二用户命令,将从nvm中读出与所述第二用户命令对应的块地址和页地址对应的数据写入所述第一缓存。
[0100]
在进一步的实施例中,为nvm的每个并行单元(lun)分配专用的缓存,从而在访问缓存时(例如向缓存搬运数据,或将数据从缓存搬出),能够容易获得缓存的地址,并降低了缓存管理的开销。
[0101]
实施例1
[0102]
在根据本发明的实施例1中,在nvm的页中包括多个扇区,第一读命令与第二用户命令访问相同并行单元,并携带相同的块地址与页地址,但访问的扇区不同,其中第一命令访问第一扇区而第二用户命令访问第二扇区。第二用户命令是读命令,且在第一读命令之
前被放入命令队列(参看图2,命令队列220)。尽管第二用户命令读取的是第二扇区的数据,但nvm接口能够按页大小传输数据,在根据第二用户命令访问nvm时,将包括第二扇区的整页数据传输到缓存中。随后第一读命令被放入命令队列220。通过执行微指令来处理第一读命令(参见图4-1,步骤410)。执行块/页读地址检查微指令,比较第一读命令与第二用户命令的块地址与页地址(参见图4-1,步骤420),发现第一读命令的块地址与第二用户命令的块地址相同,以及第一读命令的页地址与第二用户命令的页地址相同。这意味着由于第二用户命令的执行,第一读命令所需要的数据已经被搬移到缓存中。作为举例,执行块/页读地址检查微指令,依据比较结果,在通用寄存器(参看图2,通用寄存器250)中设置标志。下一微指令依据所设置的标志,决定执行与步骤430对应的微指令。因而,继续执行微指令来从缓存中取得数据(参见图4-1,步骤430)。以此方式,无需再向nvm发出数据读取命令即可获得要访问的数据,节省了第一读命令的执行时间,提高了效率。
[0103]
实施例2
[0104]
在根据本发明的实施例2中,页为读取nvm的基本单元,第一读命令与第二用户命令访问相同并行单元,并携带相同的块地址与页地址。第二用户命令是读命令,且在第一读命令之前被放入命令队列(参看图2,命令队列220)。因而第一读命令与第二用户命令是对相同地址的连续的读命令。在根据在前的第二用户命令访问nvm时,将整页数据传输到缓存中。随后第一读命令被放入命令队列220。通过执行微指令来处理第一读命令(参见图4-1,步骤410)。执行块/页读地址检查微指令,比较第一读命令与第二用户命令的块地址与页地址(步骤420),发现第一读命令的块地址与第二用户命令的块地址相同,以及第一读命令的页地址与第二用户命令的页地址相同。这意味着由于第二用户命令的执行,第一读命令所需要的数据已经被搬移到缓存中。因而,继续执行微指令来从缓存中取得数据(步骤430)。以此方式,无需再向nvm发出数据读取命令即可获得要访问的数据,节省了第一读命令的执行时间,提高了效率。
[0105]
实施例3
[0106]
在根据本发明的实施例3中,页为读取nvm的基本单元,第一读命令与第二用户命令访问相同并行单元。但第一读命令与第二用户命令携带的块地址和/或页地址不同。第二用户命令是读命令,且在第一读命令之前被放入命令队列(参看图2,命令队列220)。在根据在前的第二用户命令访问nvm时,将整页数据传输到缓存中。随后第一读命令被放入命令队列220。通过执行微指令来处理第一读命令(参见图4-3,步骤410)。执行块/页读地址检查微指令,比较第一读命令与第二用户命令的块地址与页地址(步骤420),发现第一读命令的块地址与第二用户命令的块地址不同,或者第一读命令的页地址与第二用户命令的页地址不同。因而第一读命令所需要的数据以很大几率并不在缓存中。作为举例,执行块/页读地址检查微指令,依据比较结果,在通用寄存器(参看图2,通用寄存器250)中设置标志。下一微指令依据所设置的标志,决定执行与步骤440对应的微指令。因而,继续执行微指令来向nvm发出nvm读命令(步骤440)。微指令通过操作接口控制器(参看图2,接口控制器230)来发出nvm读命令。以及通过执行微指令来接收从nvm读出的数据并将数据写入缓存中(步骤450)。当在第一读命令之后出现在命令队列(参看图2,命令队列220)的第三用户命令的块地址与页地址同第一读命令的块地址与页地址分别相同时,意味着第三用户命令所要访问的数据已经存在于缓冲。可从缓存中获取第三用户命令所需的数据而无需再向nvm发出数据读取
命令。
[0107]
图5示出了根据本发明另一实施方式的访问nvm的方法流程图。通过执行微指令序列,使得微指令执行单元210(参看图2)执行在图5中展示的访问nvm的方法。
[0108]
如图5所示,访问nvm的方法包括:步骤510:处理第一读命令;步骤520:从nvm读出第一数据,将第一数据写入第一缓存;步骤530:处理第二读命令:步骤540:检查第一读命令的块地址和页地址与第二读命令的块地址和页地址是否相同;步骤550:如果第一读命令的块地址和页地址与第二读命令的块地址和页地址相同,从第一缓存中取得第一数据;步骤560:如果第一读命令的块地址和页地址与第二读命令的块地址和页地址不相同,发出nvm读命令;步骤570:取得从nvm读出的第二数据,将第二数据写入缓存。
[0109]
在步骤510,在命令队列220(如图2所示)中出现未处理的第一读命令时,通过执行微指令序列来处理第一读命令。在步骤520,通过执行微指令序列来依据第一读命令从nvm读出数据,并将读出的数据写入缓存。在一个例子中,依据第一读命令从nvm读出数据时,也执行根据本发明的块/页读地址检查微指令,并确定第一读命令的块地址与页地址不同于在前的读/写命令的块地址和页地址,从而依据第一读命令向nvm发送nvm读命令。在另一个例子中,依据第一读命令是命令队列220(参看图2)中仅有的读命令或写命令,从而确定缓存中不存在第一读命令所需的数据。在步骤530,响应于命令队列中出现第二读命令,通过执行微指令序列来处理第二读命令。在步骤540,执行根据本发明的块/页读地址检查微指令,并确定第二读命令的块地址与页地址与在前的读/写命令(在本例中,为第一读命令)的块地址和页地址是否相同。
[0110]
若第二读命令的块地址与页地址与第一读命令的块地址与页地址分别相同,意味着第二读命令所需的数据已经由对第一读命令的执行而被搬运到缓存中,在步骤550,通过执行相应的微指令从缓存中取得第二读命令所需的数据。在进一步的例子中,对第一读命令的处理尚未完成,暂时挂起对第二读命令的处理,并设置在由第一读命令取回数据后,恢复对第二读命令的处理,并从缓存中取得第二读命令所需的数据。
[0111]
若第二读命令的块地址与页地址与第一读命令的块地址与页地址不同,意味着第二读命令所需的数据在缓存中的可能性极低,在步骤560,通过执行微指令向nvm发出nvm读命令。在步骤570,通过执行微指令取得从nvm读出的数据,并将数据写入缓存。
[0112]
通过以下的具体实施例详细描述:
[0113]
实施例4
[0114]
在根据本发明的实施例4中,命令队列220(参看图2)中在前的第一用户命令是写命令,在后的第二用户命令是读命令。第一用户命令与第二用户命令访问相同的并行单元,并携带相同的块地址与页地址。响应于命令队列220中出现未处理的第一用户命令,通过执行微指令序列将第一用户命令要写入的数据搬运到缓存中,并通过接口控制器230(参看图2)向nvm发出nvm编程命令。响应于命令队列220中出现未处理的第二用户命令,通过微指令执行单元210(参看图2)执行根据本发明的块/页读地址检查微指令确定第一用户命令与第二用户命令访问的块地址与页地址分别相同。据此判断第二用户命令所需的数据存在于缓存中,并通过执行微指令从缓存中取得数据。
[0115]
实施例5
[0116]
在根据本发明的实施例5中,命令队列220(参看图2)中在前的第一用户命令是写
命令,在后的第二用户命令是读命令。第一用户命令与第二用户命令访问相同的并行单元,并携带相同的块地址与页地址。第一用户命令要写入一整页数据,而第二用户命令读出页数据的部分。由第二用户命令中携带的地址范围来指示要读出的页数据的部分。响应于命令队列220中出现未处理的第一用户命令,通过执行微指令序列将第一用户命令要写入的整页数据搬运到缓存中,并通过接口控制器230(参看图2)向nvm发出nvm编程命令。响应于命令队列220中出现未处理的第二用户命令,通过微指令执行单元210(参看图2)执行根据本发明的块/页读地址检查微指令确定第一用户命令与第二用户命令访问的块地址与页地址分别相同。据此判断第二用户命令所需的数据存在于缓存中,并通过执行微指令从缓存中取得所需的部分页数据。
[0117]
实施例6
[0118]
在根据本发明的实施例6中,命令队列220(参看图2)中在前的第一用户命令是读命令,在第一用户命令之后的第二用户命令是读id命令,在第二用户命令之后的第三用户命令是读命令。第一用户命令与第三用户命令访问相同的并行单元,并携带相同的块地址与页地址。响应于命令队列220中出现未处理的第一用户命令,通过执行微指令序列将第一用户命令要写入的数据搬运到缓存中,并通过接口控制器230(参看图2)向nvm发出nvm编程命令。响应于命令队列220中出现未处理的第二用户命令,通过执行微指令序列向nvm发出nvm读id命令。响应于命令队列220中出现未处理的第三用户命令,通过微指令执行单元210(参看图2)执行根据本发明的块/页读地址检查微指令确定第一用户命令与第二用户命令访问的块地址与页地址不同,以及再次执行根据本发明的块/页读地址检查微指令确定第一用户命令与第三用户命令访问的块地址与页地址分别相同。据此判断第三用户命令所需的数据存在于缓存中,并通过执行微指令从缓存中取得数据。
[0119]
实施例7
[0120]
在根据本发明的实施例7中,命令队列220(参看图2)中在前的第一用户命令是读命令,在第一用户命令之后的第二用户命令是set feature命令,在第二用户命令之后的第三用户命令是读命令。第一用户命令与第三用户命令访问相同的并行单元,并携带相同的块地址与页地址。响应于命令队列220中出现未处理的第一用户命令,通过执行微指令序列将第一用户命令要写入的数据搬运到缓存中,并通过接口控制器230(参看图2)向nvm发出nvm编程命令。响应于命令队列220中出现未处理的第二用户命令,通过执行微指令序列向nvm发出nvm set feature命令。响应于命令队列220中出现未处理的第三用户命令,通过执行微指令确定命令队列中的第二用户命令将使得第三用户命令所期待的数据不同于第一用户命令所读到的数据,因而不再执行根据本发明的块/页读地址检查微指令或者忽略块/页读地址检查微指令的检查结果,并依据第三用户命令向nvm发出nvm读命令。
[0121]
图6a示出了根据本发明的另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法的流程图。
[0122]
如图6a所示,在nvm接口控制器中执行读地址检查微指令的方法包括:步骤610:获取第一微指令;步骤620:解码第一微指令,确定第一微指令是读地址检查微指令;步骤630:获取用户命令对应的第一块地址与第一页地址;步骤640:检查第一块地址和第一页地址与已存储块地址和页地址是否相同,如果相同的话,则进入步骤650:设置标志寄存器;如果不相同的话,则进入步骤660:清除标志寄存器。
[0123]
在步骤610,微指令执行单元210依据通用寄存器250中的程序计数器(pc)而从微指令存储器240(参见图2)的指定位置取出块/页读地址检查微指令微指令。作为举例,块/页读地址检查微指令是用于处理读命令的微指令序列中的一条微指令。在步骤620,微指令执行单元210解码从微指令存储器240中读到的微指令,并且确定该微指令为块/页读地址检查微指令。在步骤630,微指令执行单元210依据块/页读地址检查微指令的偏移值字段(参看图3)访问命令队列220,并从中获取当前读命令之前的第一命令的块地址与页地址。微指令执行单元210还从上下文存储器260中获取当前读命令的块地址与页地址。在步骤640,微指令执行单元210比较第一命令的块地址与页地址与当前读命令的块地址与页地址是否均分别相同。若相同,在步骤650,微指令执行单元210依据块/页读地址检查微指令的reg字段(参见图3)提供的通用寄存器索引设置通用寄存器250中的标志寄存器;若不相同,在步骤660,微指令执行单元210依据块/页读地址检查微指令的reg字段(参见图3)提供的通用寄存器索引清除通用寄存器250中的标志寄存器。
[0124]
在上面的例子中,微指令执行单元210从上下文存储器260中获取当前读命令的块地址与页地址。
[0125]
可选地,在根据本发明的另一实施例中,块/页读地址检查微指令中提供第二偏移值字段,用以指示当前读命令在命令队列220(参看图2)中的存储位置。并且微指令执行单元210依据第二偏移值字段从命令队列220中取得当前读命令的块地址与页地址,并与由第一偏移值字段所指示的第一命令的块地址与页地址进行比较。
[0126]
依然可选地,在根据本发明的又一实施例中,微指令执行单元210(参看图2)维护上下文标识符,用以标识微指令序列的上下文,特别是微指令序列的上下文在上下文存储器260(参看图2)中的存储位置。从而无需在每条微指令中指示上下文标识符。微指令执行单元210依据上下文标识符,从上下文存储器260中取得当前读指令的块地址与页地址。
[0127]
依然可选地,在根据本发明的又一实施例中,命令队列220(参看图2)中的未处理的命令引起微指令执行单元210(参看图2)执行微指令序列,在命令中提供上下文标识符,用以标识微指令序列的上下文,特别是微指令序列的上下文在上下文存储器260(参看图2)中的存储位置。并将命令中携带的块地址与页地址存储在上下文存储260中。在执行块/页地址检查微指令时,微指令执行单元210(参看图2)依据上下文标识符,从上下文存储器260中取得当前读指令的块地址与页地址。
[0128]
依然可选地,在根据本发明的又一实施例中,命令队列220(参看图2)中的未处理的命令引起微指令执行单元210(参看图2)执行微指令序列,在命令中提供并行单元标识符,并使用并行单元标识符来标识微指令序列的上下文,特别是微指令序列的上下文在上下文存储器260(参看图2)中的存储位置。从而为访问相同并行单元的命令分配相同的上下文。以及将命令中携带的块地址与页地址存储在上下文存储260中。在执行块/页地址检查微指令时,微指令执行单元210依据并行单元标识符,从上下文存储器260中取得当前读指令的块地址与页地址。
[0129]
依然可选地,在根据本发明的又一实施例中,微指令执行单元210(参看图2)维护线程标识符,用以标识微指令序列所属的线程。以及在上下文存储器260(参看图2)中存储线程的上下文信息。并且依据线程标识符确定线程上下文在上下文存储器260中的存储位置。微指令执行单元210依据线程标识符,从上下文存储器260中取得当前读指令的块地址
与页地址。
[0130]
图6b示出了根据本发明另一方面的另一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法及其后续操作的流程图。
[0131]
如图6b所示,在nvm接口控制器中执行读地址检查微指令后,还依据读地址检查微指令的执行结果,执行步骤680从第一缓存读出数据;或者执行步骤670:从nvm读出第二数据,将第二数据写入第一缓存。
[0132]
在步骤680中,块/页读地址检查微指令的后续微指令(例如,分支微指令)检查标志寄存器,依据标志寄存器被置位,相应修改程序计数器(pc)的值,使得微指令执行单元依据更新的程序计数器(pc)的值取得下一条微指令,并通过执行该下一条微指令以及后续微指令序列,从缓存中读出当前读命令所需要的数据。在步骤670中,块/页读地址检查微指令的后续微指令(例如,分支微指令)检查标志寄存器,依据标志寄存器被清除,相应修改程序计数器pc的值,使得微指令执行单元依据更新的程序计数器pc的值取得下一条微指令,并通过执行该下一条微指令以及后续微指令序列,向nvm发出nvm读命令,取得从nvm读出的数据并写入缓存。
[0133]
图7a示出了根据本发明另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法的流程图。
[0134]
如图7a所示,在nvm接口控制器中执行读地址检查微指令的方法包括:步骤710:获取第一微指令;步骤720:解码第一微指令,确定第一微指令是读地址检查微指令;步骤730:获取用户命令对应的第一块地址与第一页地址;步骤740:检查第一块地址和第一页地址与已存储第二块地址和第二页地址是否相同,如果相同的话,则进入步骤750:将程序计数器设置为第一地址;如果不相同的话,则进入步骤760:将程序计数器设置为第二地址。
[0135]
在步骤710,微指令执行单元210依据通用寄存器250中的程序计数器(pc)而从微指令存储器240(参见图2)的指定位置取出第一微指令。在步骤720,微指令执行单元210解码从微指令存储器240中读到的第一微指令,并且确定该第一微指令为块/页读地址检查微指令。在步骤730,微指令执行单元210依据块/页读地址检查微指令的偏移值字段(参看图3)访问命令队列220,并从中获取当前读命令之前的第一命令的块地址与页地址。微指令执行单元210还从上下文存储器260中获取当前读命令的块地址与页地址。在步骤740,微指令执行单元210比较第一命令的块地址与页地址与当前读命令的块地址与页地址是否均分别相同。若相同,在步骤750,微指令执行单元210将通用寄存器250中的程序计数器(pc)设置为第一值;若不相同,在步骤760,微指令执行单元210将通用寄存器250中的程序计数器(pc)设置为第二值。至此,块/页读地址检查微指令执行完成。
[0136]
图7b示出了根据本发明另一方面的一个实施方式的在nvm接口控制器中执行读地址检查微指令的方法及其后续操作的流程图。
[0137]
如图7b所示,在nvm接口控制器中执行读地址检查微指令后,还依据读地址检查微指令的执行结果,执行步骤步骤770:从程序计数器指示的地址获取第二微指令。
[0138]
在步骤770中,微指令执行单元210(参见图2)依据更新的程序计数器pc的值取得下一条微指令,并通过执行该下一条微指令以及后续微指令序列,当在步骤750将程序计数器pc的值设置为第一值时,微指令执行单元通过执行该下一条微指令以及后续微指令序列,从缓存中读出当前读命令所需要的数据;当在步骤760将程序计数器pc的值设置为第二
值时,微指令执行单元通过执行该下一条微指令以及后续微指令序列,向nvm发出nvm读命令,取得从nvm读出的数据并写入缓存。
[0139]
在可选的实施例中,通过执行块/页读地址检查微指令,在微指令执行单元210(参见图2)将程序计数器(pc)设置为第一值时,还依据块/页读地址检查微指令的reg字段(参见图3)提供的通用寄存器索引置位通用寄存器250中的标志寄存器;在微指令执行单元210将程序计数器(pc)设置为第二值时,还依据块/页读地址检查微指令的reg字段(参见图3)提供的通用寄存器索引清除通用寄存器250中的标志寄存器。
[0140]
本发明中nvm的例子是闪存。所属领域技术人员将意识到本发明的实施例也可应用于其他类型的存储介质,例如相变存储器、电阻存储器、铁电存储器等。
[0141]
根据本发明的一个方面,本发明还提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行上面所述的方法。
[0142]
根据本发明的另一个方面,还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
[0143]
通过本发明的技术方案,能够灵活判断数据是否已存在于存储控制器的缓存中,存储设备的用户能够参与缓存利用的灵活控制,而不依赖于存储控制器判断数据是否被缓存。
[0144]
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
[0145]
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作步骤,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的步骤。
[0146]
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或步骤的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
[0147]
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当采用执行固件以及软件指令的控制设备执行时,软件或固件指令可以被存储在任意计算机可读存储介质中,例如磁盘,光盘或者其他存储介质,在ram或者rom或者flash存储器,控制设备,硬盘,光盘,磁盘等等。同样地,软件和固件指令可以被传输到用户或者系统,通过任意已知的或者期望的传输方式包括,例如,在计算机可读盘或者其他便携式计算机存储机制或者通过通信媒介。通信媒介典型地具体化计算机可读指令,数据结构,序模块或者在已调制数据信号中的其它数据
例如载波或者其他传输机制。通过示例,并非限制,通信介质包括有线介质例如有线网络或者单线连接,以及无线媒介,例如声、无线频率,红外以及其它无线介质。从而,软件和固件指令可以被传输给用户或者系统,通过通信信道,例如电话线,dsl线,电缆电视线,光纤线缆,无线信道,因特网,等等(通过便携式存储介质提供这样的软件,其被看作是相同的或者可互换的)。软件或者固件指令可以包括机器可读指令,这些可读指令在由控制设备执行时,导致控制设备执行不同动作。当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(asic),等等。
[0148]
需要理解的是,本发明可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
[0149]
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
[0150]
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献