生成NVM芯片接口命令的方法与装置与流程

文档序号:13890365阅读:588来源:国知局

本发明涉及nvm(nonvolatilememory,非易失存储器)控制器,具体地,涉及在nvm控制器中通过微指令生成闪存接口命令来操作闪存的方法与装置。



背景技术:

参看图1,展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm(非易失存储器,non-volatilememory)芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)等是常见的nvm。接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、nvm芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io命令。控制部件104还耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。

控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。nvm芯片105的接口协议包括“toggle”、“onfi”等公知的接口协议或标准。

图2a是sdr时序模式的操作nvm芯片的命令的波形图。nvm芯片包括ce、cle、ale、we、re、iox等管脚,通过在管脚上指示电信号向nvm芯片发送命令,并接收从nvm芯片输出的数据。参看图2,作为举例,操作nvm芯片的命令包括多个阶段。在命令阶段(s1),iox管脚上出现“85h”用来指示命令种类,在地址阶段(s2),iox管脚上出现“c1”与“c2”用来指示命令的地址,而在数据阶段(s3),iox管脚上出现“d0”与“d1”,用来指示命令的数据。在每个阶段,ce、cle、ale、we、re等管脚上出现对应的信号,来指示命令各阶段以及iox管脚上出现有效信号的时机。nvm命令的各信号间还需要满足一定的约束,例如,图2a中tccs指示了改变列所需要的建立时间。

图2b是nv-ddr时序模式的操作nvm芯片的命令的波形图。在图2b的例子中,nvm芯片包括clk、ce、cle、ale、w/r、dq、dqs等管脚,通过在管脚上指示电信号向nvm芯片发送命令,并接收从nvm芯片输出的数据。操作nvm芯片的命令包括多个阶段。在命令阶段(s4),dq管脚上出现“85h”用来指示命令种类,在地址阶段(s5),dq管脚上出现“c1”与“c2”用来指示命令的地址,而在数据阶段(s6),dq管脚上出现“d0”与“d1”,用来指示命令的数据。在每个阶段,clk、ce、cle、ale、w/r、dqs等管脚上出现对应的信号,来指示命令各阶段以及dq管脚上出现有效信号的时机。nvm命令的各信号间还需要满足一定的约束,例如,图2b中tccs指示了改变列所需要的建立时间,tcad指示命令阶段s4与地址阶段s5的最小时间间隔,或者地址阶段s5中地址“c1”与地址“c2”的最小时间间隔。

在toggle/onfi等接口协议中定义了操作nvm芯片的多种时序与命令。nvm芯片厂商还未nvm芯片提供了不同的私有命令或扩展命令,使得闪存接口控制器为适配不同厂商、不同规格的nvm芯片,需要花费高昂的代价来开发。

在公开号为cn1414468a的中国专利申请中,提供了通过执行微指令序列来处理cpu(centralprocessingunit,中央处理单元)指令的方案。当cpu要处理特定指令时,转换逻辑电路将特定指令转换成与之对应的微指令序列,通过执行微指令序列来实现特定指令的功能。微指令序列或者微指令序列的模板存储在rom(readonlymemory,只读存储器)中。在将特定指令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定指令相对应。

在中国专利申请cn201610009789.6与cn201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置,将其全文合并于此。

存储器目标(target)是闪存颗粒150封装内的共享芯片使能(ce,chipenable)信号的一个或多个逻辑单元(logicunit)。每个逻辑单元具有逻辑单元号(lun,logicunitnumber)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.onfi.org/~/media/onfi/specs/onfi_3_2%20gold.pdf获得的“opennandflashinterfacespecification(revision3.2)”中,提供了关于目标(target)、逻辑单元、lun、平面(plane)的含义,以及也提供了操作nvm芯片的命令。



技术实现要素:

在toggle/onfi等接口协议中定义了操作nvm芯片的多种时序与命令。nvm芯片厂商还未nvm芯片提供了不同的私有命令或扩展命令,使得闪存接口控制器为适配不同厂商、不同规格的nvm芯片,需要花费高昂的代价来开发。

在根据本发明的实施例中,通过微指令生成操作nvm芯片的命令,使单一闪存接口控制器兼容不同厂商、不同规模的nvm芯片。

在本发明的第一方面,提供了根据本发明第一方面的第一生成nvm芯片接口命令的方法,包括:获取微指令;译码微指令,识别出所述微指令是命令发射微指令;依据所述命令发射微指令的第一cmd图样字段,在nvm芯片的控制管脚上产生控制信号,并持续指定时间;依据所述命令发射微指令的第二cmd图样字段,在nvm芯片的控制管脚上产生控制信号,并持续指定时间;以及依据所述命令发射微指令的第一cmd图样字段,在nvm芯片的控制管脚上产生控制信号,并持续指定时间。

根据本发明第一方面的第一生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第二生成nvm芯片接口命令的方法,还包括:获取下一微指令并执行。

根据本发明第一方面的第一或第二生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第三生成nvm芯片接口命令的方法,还包括:依据所述命令发射微指令的计数(cnt)字段的值确定所述指定时间。

根据本发明第一方面的第一至第三生成nvm芯片接口命令的方法之一,提供了根据本发明第一方面的第四生成nvm芯片接口命令的方法,其中所述依据所述命令发射微指令的第二cmd图样字段,在nvm芯片的控制管脚上产生控制信号的同时,还依据所述命令发射微指令的dq图样字段在nvm芯片的dq管脚上产生信号。

根据本发明第一方面的第四生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第五生成nvm芯片接口命令的方法,其中在所述dq管脚上产生所述dq图样字段的值,或者在所述dq管脚上产生由所述dq图样字段作为索引所得到的值。

根据本发明第一方面的第一至第五生成nvm芯片接口命令的方法之一,提供了根据本发明第一方面的第六生成nvm芯片接口命令的方法,其中所述在nvm芯片的控制管脚上产生控制信号的同时,还依据所述命令发射微指令的dq图样字段在nvm芯片的dq管脚上产生信号。

根据本发明第一方面的第一至第五生成nvm芯片接口命令的方法之一,提供了根据本发明第一方面的第七生成nvm芯片接口命令的方法,还包括:响应于识别出所述微指令是命令发射微指令,依据所述命令发射微指令的dq图样字段在nvm芯片的dq管脚上产生信号,并保持第二指定时间。

根据本发明第一方面的第七生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第八生成nvm芯片接口命令的方法,其中所述第二指定时间是所述指定时间的三倍,或者依据所述命令发射微指令的计数(cnt)字段的值确定所述指定时间。

根据本发明第一方面的第一至第八生成nvm芯片接口命令的方法之一,提供了根据本发明第一方面的第九生成nvm芯片接口命令的方法,其中所述第一cmd图样字段指示在nvm芯片的一个或多个管脚上施加的信号;以及所述第二cmd图样字段指示在nvm芯片的一个或多个管脚上施加的信号。

根据本发明第一方面的第九生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第十生成nvm芯片接口命令的方法,其中nvm芯片的一个或多个管脚包括ale、cle、we、re、ce、wr、dqs管脚的一个或多个。

根据本发明第一方面的第九生成nvm芯片接口命令的方法,提供了根据本发明第一方面的第十一生成nvm芯片接口命令的方法,其中所述第一cmd图样字段与所述第二cmd图样字段指示相同的一个或多个管脚上施加的信号。

根据本发明的第二方面,提供了根据本发明第二方面的第一访问nvm芯片的方法,包括:依据nvm芯片接口命令的类型,生成第一命令发射微指令;依据nvm芯片接口命令地址部分的地址长度,生成一个或多个第二命令发射微指令;依据nvm芯片接口命令的数据部分的数据长度,生成一个或多个第三命令发射微指令;以及对于所生成的每条命令发射微指令,执行根据本发明第一方面的生成nvm芯片接口命令的方法之一。

根据本发明的第三方面,提供了根据本发明第三方面的第一nvm控制器,包括:微指令存储器,用于多条存储微指令序列;微指令执行单元,用于对微指令进行译码并执行微指令所对应的操作;程序计数器,用于指示微指令存储器中微指令的存储位置;以及介质接口,用于耦合一个或多个nvm芯片;其中,依据程序计数器,所述微指令执行单元从微指令存储器中获取第一微指令;所述微指令执行单元对第一微指令进行解码,当第一微指令是命令发射微指令时,依据所述命令发射微指令的第一cmd图样字段,通过介质接口在nvm芯片的控制管脚上产生控制信号,并持续指定时间;依据所述命令发射微指令的第二cmd图样字段,通过介质接口在nvm芯片的控制管脚上产生控制信号,并持续指定时间;以及依据所述命令发射微指令的第一cmd图样字段,通过介质接口在nvm芯片的控制管脚上产生控制信号,并持续指定时间。

根据本发明第三方面的第一nvm控制器,提供了根据本发明第三方面的第二nvm控制器,还包括通用寄存器;其中所述微指令执行单元依据所述命令发射微指令的计数(cnt)字段设置所述通用寄存器,并依据所述通用寄存器指示所述指定时间。

根据本发明第三方面的第一或第二nvm控制器,提供了根据本发明第三方面的第三nvm控制器,其中所述微指令执行单元还依据所述命令发射微指令的dq图样字段在nvm芯片的dq管脚上产生信号。

根据本发明第三方面的第一nvm控制器,提供了根据本发明第三方面的第四nvm控制器,其中所述微指令执行单元还设置所述通用寄存器,并依据所述通用寄存器指示所述指定时间。

附图说明

当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:

图1是现有技术的存储设备的框图;

图2a是sdr时序模式的操作nvm芯片的命令的波形图;

图2b是nv-ddr时序模式的操作nvm芯片的命令的波形图;

图3是根据本发明实施例的固态存储设备的控制部件的闪存接口控制器的框图;

图4a展示了根据本发明实施例的直接命令发射(icd)微指令的格式;

图4b展示了根据本发明实施例的命令发射(ic)微指令的格式;

图5是sdr时序模式的操作nvm芯片的命令的波形图;

图6是根据本发明实施例执行直接命令发射(icd)微指令的波形图;

图7是通过执行icd微指令生成操作nvm芯片的命令的波形图;

图8是通过执行icd微指令生成另一操作nvm芯片的命令的波形图;以及

图9是根据本发明实施例的执行icd微指令的流程图。

具体实施方式

图3是根据本发明实施例的固态存储设备的控制部件的闪存接口控制器的框图。闪存接口控制器通过处理微指令来生成操作nvm芯片的命令。为实现对微指令的处理,闪存接口控制器包括微指令执行单元310、命令队列320、介质接口330、微指令存储器340、上下文存储器360和/或通用寄存器350。

微指令存储器340用于存储微指令。微指令执行单元310从微指令存储器340中读取并执行微指令。微指令使得微指令执行单元通过介质接口330向nvm芯片发出操作nvm芯片的命令,包括,例如,读出、编程、擦除、暂停、读取特征(feature)和/或设置特征等命令。微指令也使得微指令执行单元310通过介质接口330获得从nvm芯片读出的数据。一条或多条微指令对应于操作nvm芯片的命令之一。微指令还包括分支、跳转微指令,其使得微指令执行单元改变执行微指令的顺序。

微指令存储器340中可存储一段或多段微指令序列。作为举例,在图3的微指令存储器340中,存储了n段微指令序列,包括微指令序列1、微指令序列2……以及微指令序列n。微指令序列1、微指令序列2……以及微指令序列n的每段包括多条微指令。

在微指令序列中的多条微指令可由微指令执行单元310执行。每段微指令序列拥有自己的执行状态,从而微指令执行单元310能够中止正在执行的微执行序列,并选择执行其他微指令序列。也可以在微指令序列中提供让步(yield)微指令,当执行到让步微指令时,微指令执行单元可调度并执行其他微指令序列。微指令执行单元310暂停正在执行的微指令序列,或者执行让步微指时,正在执行的微指令序列的执行状态被保存;当微指令执行单元恢复微指令序列的执行时,读出被保存的执行状态,从而继续被恢复的微指令序列的执行。

介质接口330同nvm芯片相耦合,用于向nvm芯片发出操作nvm芯片的命令;也用于从nvm芯片获得命令执行结果。

命令队列320用于缓存来自用户或上层系统的命令。来自用户或上层系统的命令可包括读出、写入、删除、标记为无效等命令,还可以包括读取存储设备状态、读取/设置闪存颗粒特征(feature)等命令,以及也可以包括用户自定义命令。命令队列320可由存储器、先进先出存储器或寄存器堆等实现。微指令执行单元310可访问命令队列320。例如,在执行微指令时,依据微指令,微指令执行单元310访问命令队列320。

在处理命令队列320中的命令时,获取与该命令对应的微指令序列,并由微指令执行单元310执行该微指令序列,以完成对命令队列320中的命令的处理。可由转换电路(未示出)实现从处理命令队列320中的命令到微指令序列的转换。也可以由微指令执行单元310实现从处理命令队列320中的命令到微指令序列的转换。在获取微指令序列的过程中,可以基于命令队列320中的命令对微指令序列进行填充或适配,以使微指令序列同命令队列320中的命令相适应。微指令序列还控制微指令执行单元310访问并处理命令队列320中的命令。并依据命令队列320中的命令来选择执行对应的微指令序列。

通用寄存器350耦合到微指令执行单元310,用于保存和提供微指令序列的执行状态。微指令序列的执行状态包括程序计数器(pc)、通用寄存器(gr)、物理地址寄存器和/或定时器等。程序计数器用于指示微指令序列中当前执行的微指令地址。物理地址寄存器用于指示微指令序列访问的nvm芯片的地址。

上下文存储器360用于保存微指令序列的执行状态。上下文存储器360保存的微指令序列的执行状态可包括通用寄存器350的内容。在上下文存储器360中,可保存一条或多条微指令序列的执行状态。在上下文存储器360中保存了状态信息的微指令序列,可被调度恢复恢复执行。通过将上下文存储器360中保存的对应于一条微指令序列的状态信息恢复到通用寄存器350中,微指令执行单元310可恢复该微指令序列的执行。将执行的微指令序列称作线程。同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。在上下文存储器360中,为每个线程存储执行状态。

在根据本发明的实施例中,基于所要访问的并行单元来创建或使用线程。例如使用线程1来访问并行单元1,和/或使用线程2来访问并行单元2。在一个例子中,上下文存储器360可容纳的线程数量同图2的处理微指令的部件所耦合的闪存颗粒的并行单元的数量相同;为每一个并行单元分配或保留线程;当处理对一个并行单元的请求时,调度与该并行单元相对应的线程。在一个例子中,上下文存储器360可容纳的线程数量小于同图3的闪存接口控制器所耦合的并行单元的数量。当处理对一个并行单元的请求时,使用已分配来处理该并行单元的线程或者分配新线程来处理该请求。

提供并行单元缓存来存储从并行单元读出或向并行单元写入的数据。为每个线程提供并行单元缓存。并行单元缓存的大小对应于nvm芯片的页尺寸。提供更大尺寸的并行单元缓存对提高性能是有利的。在一个例子中,在上下文存储器360中提供并行单元缓存。在另一个例子中,由dram(dynamicrandomaccessmemory,动态随机访问存储器)或其他外部于图3的闪存接口控制器的存储器来提供并行单元缓存。

图4a展示了根据本发明实施例的直接命令发射(icd)微指令的格式。图4b展示了根据本发明实施例的命令发射(ic)微指令的格式。

参看图4a,直接命令发射(icd)微指令410包括包括操作码(opcode)字段、计数(cnt)字段、dq图样(dqpattern)字段、cmd图样1(cmdpattern1)字段与cmd图样2(cmdpattern2)字段。操作码字段通过特定标识符或值指示微指令是直接命令发射微指令。计数(cnt)字段指示由cmd图样1(cmdpattern1)与cmd图样2(cmdpattern2)字段所指示的命令信号持续的时间,例如,持续计数(cnt)字段的值所指示的时钟周期。dq图样(dqpattern)字段指示在多个dq管脚上输出的值。直接命令发射(icd)微指令410的各个字段包括1比特或多个比特。例如,nvm芯片包括8个dq管脚,dq图样字段由8比特来指示dq管脚的内容。操作码字段有4比特“0110”指示直接命令发射(icd)微指令,而cmd图样1字段包括3比特,分别指示ale、cle与w/r管脚的内容,cmd图样2字段包括3比特,分别指示ale、cle与w/r管脚的内容。在另一例子中,cmd图样1字段与cmd图样2字段各自包括4比特,分别指示cle、ale、we、re管脚的内容。cmd图样1字段与cmd图样2字段也可包括不同数量的比特,以及指示不同的管脚组合的内容。

icd微指令410的字段可具有不同的顺序、编码方式、位宽。icd微指令410还可具有未示出的其他字段,或者缺少在图4a中示出的一个或多个字段。

图4b中,命令发射(ic)微指令420包括包括操作码(opcode)字段、计数(cnt)字段、dq索引(dqindex)字段、cmd图样1(cmdpattern1)字段与cmd图样2(cmdpattern2)字段。操作码字段通过特定标识符或值指示微指令是直接命令发射微指令。计数(cnt)字段指示由cmd图样1(cmdpattern1)与cmd图样2(cmdpattern2)字段所指示的命令信号持续的时间,例如,只需计数(cnt)字段的值所指示的时钟周期。dq索引(dqindex)字段指示在dq管脚上输出的值为依据索引所访问的值。命令发射(ic)微指令420的各字段可包括一个或多个比特。

图5是sdr时序模式的操作nvm芯片的命令的波形图。作为举例,操作nvm芯片的命令包括多个阶段。在命令阶段(s4),dq管脚上出现“85h”用来指示命令种类,在地址阶段(s5),dq管脚上出现“c1”与“c2”用来指示命令的地址,而在数据阶段(s6),dq管脚上出现“d0”与“d1”,用来指示命令的数据。进一步地,每个操作nvm芯片的命令的每个阶段又包括多个子阶段,例如,采样dq前的子阶段,采样dq的子阶段与采样dq后的子阶段。参看图5,在命令阶段(s4),在子阶段y1为采样dq前的子阶段,在子阶段y1,cle管脚为低信号,ale管脚为低信号,w/r_n管脚为高信号;在子阶段y2,cle管脚为高信号,ale管脚为低信号,w/r_n管脚为高信号,dq管脚上出现有效信号,nvm芯片采样dq管脚上的有效信号,并识别到由“85h”所指示的命令;在子阶段y3,cle管脚为低信号,ale管脚为低信号,w/r_n管脚为高信号。并且,发明人发现,对于多种命令以及命令的多个阶段,在y1子阶段与y3子阶段,ale、cle、w/r等命令信号,具有相同的值。例如,以“0”代表低信号,以“1”代表高信号,则命令阶段(s4)的子阶段y1,ale、cle、w/r管脚的信号分别为“0”、“0”与“1”,而在命令阶段(s4)的子阶段y3,ale、cle、w/r管脚的信号同样分别为“0”、“0”与“1”。而dq管脚的信号仅需在子阶段y2有效,由于nvm芯片在子阶段y1或y3不关心dq管脚的信号,因而在子阶段y1或y3,dq管脚上可出现任意值。

图6是根据本发明实施例,执行直接命令发射(icd)微指令的波形图。返回参看图3,当微指令执行单元310执行icd微指令时,通过介质接口330,在指定的闪存通道或指定的nvm芯片的管脚上产生信号序列。由icd微指令的cnt字段指示时钟周期的数量。具体地,在最初的cnt个时钟周期,根据cmd图样1(cmdpattern1)字段,在控制管脚上输出控制信号;在接下来的cnt个时钟周期,依据cmd图样2(cmdpattern2)字段,在控制管脚上输出控制信号,以及依据dq图样(dqpattern)字段,在dq管脚上输出信号;cmd图样1(cmdpattern1)字段,在控制管脚上输出控制信号。

例如,当cmd图样1(cmdpattern1)字段为“001”,分别指示“ale”、“cle”与“w/r”管脚的信号,而cmd图样2(cmdpattern1)字段为“011”,分别指示“ale”、“cle”与“w/r”管脚的信号,以及dq图样(dqpattern)字段为“0x85”。那么在图6中,在执行直接命令发射(icd)微指令时,在最初的cnt个时钟周期,依照icd微指令的cmdpattern1字段在ale、cle与w/r管脚上分别输出信号“0”、“0”与“1”,依照dq图样(dqpattern)字段在dq管脚上输出信号“0x85”(在图6中,由y1指示);在接下来的cnt个时钟周期,依照icd微指令cmdpattern2字段在ale、cle与w/r管脚上分别输出信号“0”、“1”与“1”,以及依照dq图样(dqpattern)字段在dq管脚上输出信号“0x85”(在图6中,由y2指示),以及在接下来的cnt个时钟周期,依照icd微指令的cmdpattern1字段在ale、cle与w/r管脚上分别输出信号“0”、“0”与“1”,依照dq图样(dqpattern)字段在dq管脚上输出信号“0x85”;(在图6中,由y3指示)。从而通过执行1条icd微指令,在指定的闪存通道或指定的nvm芯片的管脚上产生了操作nvm芯片的命令的命令阶段(参看图5,阶段s4)。

通过继续执行其他icd指令,在定的闪存通道或指定的nvm芯片的管脚上产生了操作nvm芯片的命令的地址阶段(参看图5,阶段s5)和/或数据阶段(参看图5,阶段s6),来完成一条操作nvm芯片的命令。

可选地,在另一实施方式中,由于nvm芯片仅在子阶段y2采样dq管脚的信号,执行icd微指令时,在最初的cnt个时钟周期,不在dq管脚上输出信号,在接下来的cnt个时钟周期,依照dq图样(dqpattern)字段在dq管脚上输出信号,以及在接下来的cnt个时钟周期,不在dq管脚上输出信号。

依然可选地,icd微指令的cmd图样1(cmdpattern1)字段与cmd图样2(cmdpattern2)字段还指示ce和/或dqs管脚的输出信号。所属领域技术人员将意识到,icd微指令用于指示操作nvm芯片的命令的子阶段,在每个子阶段中完成一次对dq管脚的输出或采样,并且在每个子阶段中指示要用到的控制管脚(ale、cle、w/r、ce、dqs)及其信号值。在不同的协议或模式中,控制管脚有不同的名字和/或极性,在icd微指令的cmd图样1(cmdpattern1)字段与cmd图样2(cmdpattern2)字段中可明示或暗示管脚和/或管脚的输出信号。

在另一个实施例中,通过执行一个或多个命令发射(ic)微指令来产生操作nvm芯片的命令。ic微指令同icd微指令具有基本相同的含义,其差别仅在于获取dq管脚信号的方式。在icd微指令中,dq图样(dqpattern)字段的内容指示了dq管脚信号。例如,dq图样(dqpattern)字段为“0x85”时,在dq管脚上输出16进制的“0x85”。而在执行ic微指令时,dq索引(dqindex)字段指示了存储要输出的dq管脚信号的位置,通过dq索引(dqindex)字段作为索引来获取值,将所获取的值作为要输出的dq管脚信号。

因而,在根据本发明的实施例中,通过直接命令发射(icd)微指令或命令发射(ic)微指令来控制操作nvm芯片的命令的每次dq采样。并通过执行一条或多条微指令来生成完整的操作nvm芯片的命令。

图7是通过执行icd微指令生成操作nvm芯片的命令的波形图。以生成setfeature命令作为举例。在setfeature命令中,在命令阶段,在dq管脚产生“0xef”,在地址阶段,在dq管脚产生“0x01”,在数据阶段,在dq管脚产生依次产生“0x66”、“0x00”、“0x00”以及“0x00”。

通过执行6条icd微指令来产生完整的setfeature命令。icd微指令的cmd图样(cmdpattern)字段指示“ce#”管脚、“ale”管脚与“cle”管脚的信号。由微指令icd1、icd2、icd3、icd4、icd5与icd6组成微指令序列,通过执行微指令序列来生成setfeature命令。

icd1的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“001”,dq图样(dqpattern)字段为“0xef”;icd2的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段为“0x01”;icd3的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“000”,dq图样(dqpattern)字段为“0x66”;icd4的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“000”,dq图样(dqpattern)字段为“0x00”;icd5的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“000”,dq图样(dqpattern)字段为“0x00”;icd6的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“000”,dq图样(dqpattern)字段为“0x00”。其中,cmd图样1(cmdpattern1)字段用于指示子阶段y1与子阶段y3的“ce#”管脚、“ale”管脚与“cle”管脚的信号,而cmd图样2(cmdpattern2)字段用于指示子阶段y2的“ce#”管脚、“ale”管脚与“cle”管脚的信号。

虽然在图7中,每个子阶段(y1、y2或y3)占据“clk”信号的一个周期,但是在icd微指令中,由“cnt”字段所指定的计数可以是频率为“clk”信号的倍数的其他时钟信号的计数。在根据本发明的实施例中,“cnt”字段所指定的计数应用于cmd图样1(cmdpattern1)字段以及cmd图样2(cmdpattern2)字段。

作为另一个例子,在图7中,在输出每个dq信号时,“ce#”管脚上的信号总是经历“1”到“0”,再由“0”到“1”的过程,因而不在icd微指令的cdm图样字段中明示“ce#”,而是由icd微指令暗示“ce#”管脚的信号,即微指令执行单元依据执行的是icd微指令,而在“ce#”管脚上产生控制信号。

图8是通过执行icd微指令生成另一操作nvm芯片的命令的波形图。以生成program(编程)命令作为举例。在program命令中,在命令阶段,在dq管脚产生“0x80”,在地址阶段,在dq管脚依次产生“c0”、“c1”、“r0”、“r1”与“r2”(“c0”代表列地址0、“c1”代表列地址1、“r0”代表行地址0、“r1”代表行地址1与“r2”代表列地址2),然后在等待周期后,进入数据阶段,在dq管脚产生要向nvm芯片写入的数据。

通过执行6条icd微指令来产生完整的setfeature命令。icd微指令的cmd图样(cmdpattern)字段指示“ce#”管脚、“ale”管脚与“cle”管脚的信号,icd微指令的dq图样(dqpattern)字段指示“dq”管脚的信号。通过执行微指令icd1、icd2、icd3、icd4、icd5与icd6来产生program(编程)命令的命令阶段与地址阶段。

icd1的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“001”,dq图样(dqpattern)字段为“0x80”;icd2的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段指示地址c0;icd3的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段指示地址c1;icd4的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段指示地址r0;icd5的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段指示地址r1;icd6的cmd图样1(cmdpattern1)字段为“100”,cmd图样2(cmdpattern2)字段为“010”,dq图样(dqpattern)字段指示地址r3。其中,cmd图样1(cmdpattern1)字段用于指示子阶段y1与子阶段y3的“ce#”管脚、“ale”管脚与“cle”管脚的信号,而cmd图样2(cmdpattern2)字段用于指示子阶段y2的“ce#”管脚、“ale”管脚与“cle”管脚的信号。

program(编程)命令还包括等待周期与数据阶段。通过执行icd命令,在指定管脚上产生所需要的信号,以生成完整的program(编程)命令。在其他例子中,还提供其他微指令,以高效地产生多种命令或命令的不同阶段。例如,在program(编程)命令的等待周期,无需再管脚上产生任何信号,可提供等待(wc)微指令,在等待微指令中仅需描述等待的时钟周期。进一步地,在program(编程)命令的整个数据阶段,由固定图样的“we”信号与“dqs”信号提供控制信号,相应地提供数据输出微指令,在数据输出微指令中描述要传输的数据量以及明示或暗示的要输出数据的地址。

图9是根据本发明实施例的执行icd微指令的流程图。微指令序列存储在微指令存储器340(参看图3)中。微指令执行单元310(参看图3)从微指令存储器340获取微指令(910)。对获取的微指令进行译码,识别出所获取的微指令是icd(直接命令发射)微指令(920)。提取出icd微指令的各个字段用以执行icd微指令。icd微指令的cnt字段指示以时钟周期数为单位的持续时间。时钟频率可以是暗示的,或者是nvm芯片或微指令执行单元的工作时钟频率。为执行微指令,依据icd微指令的cmd图样1(cmdpattern1)字段的指示在nvm芯片的管脚上产生控制信号,并且时产生的控制信号保持cnt字段所指示的时钟周期(930);以及还依据icd微指令的dq图样(dqpattern)字段的内容在“dq”管脚上产生信号。接下来,依据icd微指令的cmd图样2(cmdpattern2)字段的指示在nvm芯片的管脚上产生控制信号,并且时产生的控制信号保持cnt字段所指示的时钟周期(940);以及还依据icd微指令的dq图样(dqpattern)字段的内容在“dq”管脚上产生信号。接下来,再次依据icd微指令的cmd图样1(cmdpattern1)字段的指示在nvm芯片的管脚上产生控制信号,并且时产生的控制信号保持cnt字段所指示的时钟周期(950);以及还依据icd微指令的dq图样(dqpattern)字段的内容在“dq”管脚上产生信号,至此,对icd微指令的执行完成。继而,微指令执行单元310从微指令存储器340获取下一条微指令并执行。

在另一个实施例中,微指令执行单元310仅在步骤940,依据icd微指令的cmd图样2(cmdpattern2)字段的指示在nvm芯片的管脚上产生控制信号时,依据icd微指令的dq图样(dqpattern)字段的内容在“dq”管脚上产生信号。而在步骤930与步骤950,不在“dq”管脚上产生信号,或将“dq”管脚置为高阻态或指定值。

在依然另一个实施例中,icd微指令不指示控制信号保持时间,而使用指定的或默认的控制信号保持时间。

根据本发明实施例的微指令执行单元310在获取并执行ic微指令时,执行流程与图9中展示的流程图大体上一致。区别在于,在“dq”管脚上产生信号时,从ic微指令的dq索引(dqindex)所指示的存储位置获取值,并将所获取值在“dq”管脚上输出,或依据所获取的值在“dq”管脚上产生输出信号。

虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。

这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

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