对闪存下达程序化指令的方法、控制器与储存系统的制作方法

文档序号:6580326阅读:195来源:国知局

专利名称::对闪存下达程序化指令的方法、控制器与储存系统的制作方法
技术领域
:本发明涉及一种对闪存下达程序化指令的方法以及使用此方法的闪存控制器与闪存储存系统。
背景技术
:由于闪存(FlashMemory)具有数据非挥发性、省电、体积小与无机械结构等的特性,最适合使用于可携式电子产品上。例如,固态硬盘就是一种以NAND闪存作为储存媒体的储存装置,并且已广泛配置于笔记型计算机中作为主要的储存装置。图1是图示一般闪存储存装置的概要方块图。一般来说,当主机系统110透过连接器122与闪存储存装置电性连接并且欲储存数据至闪存储存装置120时,写入数据至闪存储存装置120的闪存模块126的程序可区分为数据传输(transfer)以及数据程序化(program)两个部分。具体来说,当主机系统110欲在闪存储存装置120中储存数据时,闪存控制器124会通过数据输入/输出总线128将数据传输至闪存模块126内的缓冲区132,之后闪存模块126会将缓冲区132内的数据程序化至闪存模块126的存储器(即,储存区)134,其中在闪存模块126将数据程序化至存储器134的期间,闪存模块126是处于一实际忙碌(busy)状态,且当闪存模块126处于实际忙碌状态下闪存控制器124无法对其下达任何指令或传输任何数据。也就是说,闪存控制器124必须于闪存模块126完成程序化后才能响应主机系统110并处理主机系统110的下一个指令。具体来说,当闪存控制器124从主机系统110接收到主机写入指令与写入数据而需将写入数据写入至闪存模块126时,闪存控制器124会通过数据输入/输出总线128下达程序化指令,而此程序化指令中的相关信息就会暂存于缓冲区132中。例如,此程序化指令是由“指令W1”、“实体地址”、“写入数据”与“指令W2”等字符串所组成,其中闪存控制器124通过“指令W1”指示闪存模块126准备执行程序化程序,通过“实体地址”指示闪存模块126欲程序化的地址,通过“写入数据”指示闪存模块126欲程序化的数据以及通过“指令W2”指示闪存模块126开始执行程序化。因此,当闪存模块126根据程序化指令中的“指令W2”开始将缓冲区132内的数据写入至存储器134时,闪存控制器124需接收到来自于闪存模块126的完成程序化的确认(acknowledgement)信息后才会回复主机系统110,一般来说,当主机系统下达指令到主机系统接收到确认信息的时间称为响应时间(responsetime)。随着传输技术的发展,使得连接器的传输速度已大幅提升,例如,序列先进附件(SerialAdvancedTechnologyAttachment,SATA)连接器已可达到每秒15亿位(Gigabit,Gb),甚至每秒30Gb。然而,上述程序化闪存的速度却远低连接器的速度下,整体储存的效能仍无法有效改善,因此如何缩短执行主机写入指令的时间是此领域技术人员所致力的目标。
发明内容本发明提供一种下达程序化指令的方法,其能够有效地缩短执行主机写入指令的时间。本发明提供一种闪存控制器,其能够有效地缩短执行主机写入指令的时间。本发明提供一种闪存储存系统,能够有效地缩短执行主机写入指令的时间。本发明范例实施例提出一种下达程序化指令的方法,用于将来自于一主机系统的数据写入至一闪存芯片中。本下达程序化指令的方法包括提供一闪存控制器,以及由闪存控制器使用一原生指令排序(NativeCommandQueuing,NCQ)协议从主机系统中接收多个主机写入指令。本下达程序化指令的方法也包括由闪存控制器依据主机写入指令传送一下达指令顺序给主机系统。本下达程序化指令的方法还包括依据下达指令顺序从主机系统中依序地接收主机写入指令与对应主机写入指令的多个写入数据,并且分别地向闪存芯片下达一快取程序化指令以将写入数据写入至闪存芯片中。本发明范例实施例提出一种闪存控制器,用于将来自于一主机系统的数据写入至一闪存芯片中。本闪存控制器包括一微处理器单元、一缓冲存储器、一闪存接口单元、一主机接口单元与一内存管理单元。闪存接口单元电性连接至微处理器单元,并且用以连接闪存芯片。缓冲存储器电性连接至微处理器单元。主机接口单元电性连接至微处理器单元,并且用以连接上述主机系统,其中主机接口单元支持NCQ协议。内存管理单元电性连接至微处理单元,并且用以通过主机接口单元使用NCQ协议从主机系统中接收多个主机写入指令。此外,内存管理单元通过主机接口单元依据主机写入指令传送一下达指令顺序给主机系统。再者,内存管理单元透过主机接口单元依据下达指令顺序从主机系统中依序地接收主机写入指令与对应主机写入指令的多个写入数据,并且分别地向闪存芯片下达快取程序化指令以将写入数据写入至闪存芯片中。本发明范例实施例提出一种闪存储存系统,用于储存来自于一主机系统的数据。本闪存储存系统包括用以电性连接上述主机系统的一连接器、一闪存芯片以及一闪存控制器,其中连接器支持NCQ协议。闪存控制器电性连接至连接器与闪存芯片,并且用以通过连接器使用NCQ协议从主机系统中接收多个主机写入指令。此外,闪存控制器依据主机写入指令传送一下达指令顺序给主机系统。再者,闪存控制器透过连接器依据上述下达指令顺序从主机系统中依序地接收主机写入指令与对应主机写入指令的多个写入数据,并且分别地向闪存芯片下达一快取程序化指令以将写入数据写入至闪存芯片中。基于上述,本发明范例实施例的下达程序化指令的方法、闪存控制器与闪存储存系统能够有效地缩短执行主机写入指令的时间,由此提升数据存取的效能。下面通过具体实施例并结合附图对本发明做进一步的详细描述。图1是图示一般闪存储存系统的概要方块图;图2A是根据本发明实施例图示使用闪存储存装置的主机系统;图2B是根据本发明范例实施例所图示的计算机、输入/输出装置与闪存储存装置的示意图;图2C是根据本发明另一范例实施例所图示的主机系统与闪存储存装置的示意图;图2D是根据本发明范例实施例所图示的闪存储存装置的概要方块图;图3是根据本发明范例实施例所图示的闪存晶粒的概要方块图;图4A是根据本发明范例实施例所图示的闪存控制器透过数据输入/输出总线下达快取程序化指令的范例示意图;图4B是根据图4A所示的指令所图示闪存芯片的运作时序图;图5是根据本发明范例实施例所图示的下达程序化指令的流程图。附图标记说明110:主机系统;120闪存储存装置;122连接器;124闪存控制器;126闪存模块;128数据输入/输出总线;132缓冲区;134存储器;200闪存储存装置;202连接器;204闪存控制器;206微处理器单元;208:内存管理单元;210:主机接口单元;212闪存接口单元;214:缓冲存储器;220闪存芯片;290主机系统;295总线;300第0闪存模块;302第0数据输入/输出总线;310:第1闪存模块;312第1数据输入/输出总线;320:第2闪存模块;322第2数据输入/输出总线;330:第3闪存模块;332第3数据输入/输出总线;340:第4闪存模块;342第4数据输入/输出总线;350:第5闪存模块;352第5数据输入/输出总线;360:第6闪存模块;362第6数据输入/输出总线;370:第7闪存模块;372第7数据输入/输出总线;400:第0闪存晶粒;402储存区;404第一缓冲区;406第二缓冲区;410第1闪存晶粒;420第2闪存晶粒;430第3闪存晶粒;440第4闪存晶粒;450第5闪存晶粒;460第6闪存晶粒;470第7闪存晶粒;480第8闪存晶粒;490第9闪存晶粒;500第10闪存晶粒;510第11闪存晶粒;520第12闪存晶粒;530第13闪存晶粒;540第14闪存晶粒;550第15闪存晶粒;1100:计算机;1102:微处理器;1104随机存取内存;1106输入/输出装置;1108系统总线;1110数据传输接口;1202鼠标;1204键盘;1206显示器;1208打印机;1212随身碟;1214记忆卡;1216固态硬盘;1310数位相机;1310aSD卡;1310bMMC卡;1310cCF卡;1310d记忆棒;1310e嵌入式储存装置;Wl、W2、W3指令;DUD2、D3数据;ADD1、ADD2、ADD3实体地址;CM1、CM2、CM3、CM4、CM5、CM6、CM7、CM8、CM9指令;Tl、T2、T3数据传输;Bi、B2、B3忙碌时间;S501、S503、S505、S507、S509、S511、S513、S515、S517下达程序化指令的步骤。具体实施例方式闪存储存装置一般而言包括闪存芯片与控制器(也称,控制电路)。通常闪存储存装置会与主机系统一起使用,以使主机系统可将数据写入至闪存储存装置或从闪存储存装置中读取数据。另外,也有闪存储存装置是包括嵌入式闪存与可执行于主机系统上以实质地作为此嵌入式闪存控制器的软件。图2A是根据本发明实施例图示使用闪存储存装置的主机系统。请参照图2A,主机系统290—般包括计算机1100与输入/输出(teput/output,I/O)装置1106。计算机1100包括微处理器1102、随机存取内存(randomaccessmemory,RAM)1104,系统总线1108以及数据传输接口1110。输入/输出装置1106包括如图2B的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图2B所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其它装置。在本发明实施例中闪存储存装置200是通过数据传输接口1110与主机系统290的其它组件电性连接。通过微处理器1102、随机存取内存1104与输入/输出装置1106的处理可将数据写入至闪存储存装置200或从闪存储存装置200中读取数据。例如,闪存储存装置200可以是如图2B所示的随身碟1212、记忆卡1214或固态硬盘(SolidStateDrive,SSD)1216。一般而言,主机系统290可实质地为可储存数据的任意系统。虽然在本范例实施例中,主机系统290是以计算机系统来作说明,然而,在本发明另一范例实施例中主机系统290可以是数字相机、摄影机、通信装置、音讯播放器或视讯播放器等系统。例如,在主机系统为数字相机(摄影机)1310时,闪存储存装置则为其所使用的SD卡1310a、MMC卡1310b、CF卡1310c、记忆棒(memorystick)1310d或嵌入式储存装置1310e(如图2C所示)。嵌入式储存装置1310e包括嵌入式多媒体卡(EmbeddedMMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。图2D是图示图2A所示闪存储存装置200的详细方块图。请参照图2D,闪存储存装置200包括连接器202、闪存控制器204与闪存芯片220。连接器202是电性连接至闪存控制器204并且用以通过总线295连接主机系统290。在本范例实施例中,连接器202为序列先进附件(SerialAdvancedTechnologyAttachment,SΑΤΑ)连接器。特别是,连接器202支持原生指令排序(NativeCommandQueuing,NCQ)协议,并且主机系统290与闪存控制器204之间是以NCQ协议来传送写入指令。具体来说,当主机系统290与闪存控制器204之间以NCQ协议传送主机写入指令时,主机系统290会先将欲发送的多个主机写入指令一起传送给闪存控制器204,并且闪存控制器204向主机系统290响应其预期下达指令顺序,特别是,在此过程中主机系统290仅传送欲下达的指令给闪存控制器204,而不会传送欲写入的数据。之后,主机系统290依据闪存控制器204的响应来传送主机写入指令与数据,并且闪存控制器204于完成所有主机写入指令后再响应主机系统290每一个写入指令的执行状态。特别是,当发生程序化错误(programfail)时,主机系统290会根据闪存控制器204的回报信息(即,执行状态)来将对应发生程序化错误的指令与数据重新传送给闪存控制器204。或者,在本发明另一范例实施例中,当发生程序化错误(programfail)时,主机系统290会将所有指令与数据重新传送给闪存控制器204。此外,必须了解的是,在本发明范例实施例中,连接器202为支持NCQ的SATA连接器,然本发明不限于此,连接器202也可以是其它支持NCQ协议的连接器。闪存控制器204会执行以硬件型式或韧体型式实作的多个逻辑闸或控制指令,并且根据主机系统290的指令在闪存芯片220中进行数据的写入、读取与抹除等运作。闪存控制器204包括微处理器单元206、内存管理单元208、主机接口单元210、闪存接口单元212与缓冲存储器214。微处理器单元206为闪存控制器204的主控单元,用以与内存管理单元208、主机接口单元210、闪存接口单元212与缓冲存储器214等协同合作以进行闪存储存装置200的各种运作。内存管理单元208是电性连接至微处理器单元206,用以执行根据本范例实施例的下达程序化指令与区块管理机制,内存管理单元208的运作将于以下配合图式作详细说明。在本范例实施例中,内存管理单元208是以一韧体型式实作在闪存控制器204中。例如,将包括多个控制指令的内存管理单元208烧录至一程序内存(例如,只读存储器(ReadOnlyMemory,ROM))中并且将此程序内存嵌入在闪存控制器204中,当闪存储存装置200运作时,内存管理单元208的多个控制指令会由微处理器单元206来执行以完成根据本发明实施例的下达程序化指令与区块管理机制。在本发明另一范例实施例中,内存管理单元208的控制指令也可以程序代码型式储存于闪存芯片220的特定区域(例如,闪存芯片中专用于存放系统数据的系统区)中。同样的,当闪存储存装置200运作时,内存管理单元208的多个控制指令会由微处理器单元206来执行。此外,在本发明另一范例实施例中,内存管理单元208也可以一硬件型式实作在闪存控制器204中。主机接口单元210是电性连接至微处理器单元206并且用以接收与识别主机系统290所传送的指令与数据。也就是说,主机系统290所传送的指令与数据会通过主机接口单元210来传送至微处理器单元206。在本范例实施例中,主机接口单元210是对应连接器202为SATA接口。然而,必须了解的是本发明不限于此,主机接口单元210也可以是其它适合的数据传输接口。闪存接口单元212是电性连接至微处理器单元206并且用以存取闪存芯片220。也就是说,欲写入至闪存芯片220的数据会通过闪存接口单元212转换为闪存芯片220所能接受的格式。缓冲存储器214是电性连接至微处理器单元206并且用以暂存来自于主机系统290的数据与指令或来自于闪存芯片220的数据。此外,虽未图示于本范例实施例中,但闪存控制器204也还包括错误校正单元与电源管理单元等一般功能模块。闪存芯片220是电性连接至闪存控制器204并且用以储存数据。闪存芯片220包括第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370。在本范例实施例中,第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370为多层存储器(MultiLevelCell,MLC)NAND闪存模块。然而,本发明不限于此,第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370也可是单层存储器(SingleLevelCell,SLC)NAND闪存模块。在本范例实施例中,第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370是分别地电性连接至闪存控制器204。具体来说,闪存控制器204的闪存接口单元212分别地通过第0数据输入/输出总线(Datainput/outputbus)302、第1数据输入/输出总线312、第2数据输入/输出总线322、第3数据输入/输出总线332、第4数据输入/输出总线342、第5数据输入/输出总线352、第6数据输入/输出总线362与第7数据输入/输出总线372传送数据给第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370。在本范例实施例中,第0闪存模块300包括第0闪存晶粒(die)400与第1闪存晶粒410,第1闪存模块310包括第2闪存晶粒420与第3闪存晶粒430,第2闪存模块320包括第4闪存晶粒440与第5闪存晶粒450,第3闪存模块330包括第6闪存晶粒460与第7闪存晶粒470,第4闪存模块340包括第8闪存晶粒480与第9闪存晶粒490,第5闪存模块350包括第10闪存晶粒500与第11闪存晶粒510,第6闪存模块360包括第12闪存晶粒520与第13闪存晶粒530以及第7闪存模块370包括第14闪存晶粒540与第15闪存晶粒550。值得一提的是,在本发明范例实施例中,第0闪存模块300、第1闪存模块310、第2闪存模块320、第3闪存模块330、第4闪存模块340、第5闪存模块350、第6闪存模块360与第7闪存模块370和闪存控制器204之间分别地配置第0数据输入/输出总线302、第1数据输入/输出总线312、第2数据输入/输出总线322、第3数据输入/输出总线332、第4数据输入/输出总线342、第5数据输入/输出总线352、第6数据输入/输出总线362与第7数据输入/输出总线372,因此内存管理单元208会使用平行模式(parallelmode)同时通过多条数据输入/输出总线来传送写入数据至对应的闪存模块,以提升存取速度。此外,每一闪存模块包括两个闪存晶粒,因此内存管理单元208会使用一交错模式(interleavemode)来将写入数据交错地传送至同一闪存模块内的两个闪存晶粒,以更增加存取效能。更详细来说,如上所述,在闪存晶粒中写入数据的过程包括数据传输(transfer)以及数据程序化(program)两个部分,而交错模式(interleavemode)就是在使用同一条数据输入/输出总线传输数据的两个闪存晶粒的例子中,利用其中一个闪存晶粒正执行数据程序化的期间传送数据给另一个闪存晶粒。图3是根据本发明范例实施例所图示的闪存晶粒的概要方块图。在此,第0闪存晶粒400、第1闪存晶粒410、第2闪存晶粒420、第3闪存晶粒430、第4闪存晶粒440、第5闪存晶粒450、第6闪存晶粒460、第7闪存晶粒470、第8闪存晶粒480、第9闪存晶粒490、第10闪存晶粒500、第11闪存晶粒510、第12闪存晶粒520、第13闪存晶粒530、第14闪存晶粒540与第15闪存晶粒550的结构与运作方式皆相同,以下仅以第0闪存晶粒400来进行说明。请参照图3,第0闪存晶粒400包括储存区402、第一缓冲区404与第二缓冲区406。储存区402包括多个实体区块并且用以储存数据。实体区块为抹除的最小单位。亦即,每一实体区块含有最小数目的一并被抹除的存储器。每一实体区块具有数个页面(page)。在本范例实施例中,页面为程序化的最小单元。换言之,页面为写入数据或读取数据的最小单元。每一页面通常包括使用者数据区与冗余区。使用者数据区用以储存使用者的数据,而冗余区用以储存系统的数据(例如,错误检查与校正码(ErrorCheckingandCorrectingCode,ECCCode)。值得一提的是,第0闪存晶粒400、第1闪存晶粒410、第2闪存晶粒420、第3闪存晶粒430、第4闪存晶粒440、第5闪存晶粒450、第6闪存晶粒460、第7闪存晶粒470、第8闪存晶粒480、第9闪存晶粒490、第10闪存晶粒500、第11闪存晶粒510、第12闪存晶粒520、第13闪存晶粒530、第14闪存晶粒540与第15闪存晶粒550中的实体区块会被内存管理单元208群组为多个实体单元来进行数据的写入、读取与抹除。特别是每一实体单元是由多个闪存晶粒中的实体区块所组成,因此内存管理单元208会使用上述平行模式与交错模式来提升存取的速度。再者,由于闪存的存储器仅能从“1”程序化为“0”,因此要更新实体区块内的数据时必须先抹除实体区块内的数据。然而,闪存的写入是以页面为单位,而抹除是以实体区块为单位,所以储存区402中的实体区块会以轮替方式来储存数据。具体来说,内存管理单元208会将分组的实体单元逻辑地分组为系统区(systemarea)、数据区(dataarea)、备用区(sparearea)与取代区(replacementarea),其中分组为系统区的实体单元是用以储存闪存储存装置的相关重要信息,而分组为取代区的实体单元是用以取代数据区或备用区中已损坏的实体单元,因此在一般存取状态下,主机系统290是无法存取系统区与取代区中的实体单元。至于分组为数据区的实体单元中会储存由主机写入指令所写入的数据,而备用区中的实体单元是用以在执行主机写入指令时替换数据区中的实体单元。例如,当闪存储存装置200接受到主机系统290的主机写入指令而欲更新(或写入)数据至数据区中某一实体单元的某一页面时,内存管理单元208会从备用区中提取一实体单元并且将欲被更新的实体单元中的有效旧数据与欲写入的新数据写入至从备用区中提取的实体单元中,并且将已写入有效旧数据与新数据的实体单元逻辑地关联为数据区,并且将数据区中欲被更新的实体单元进行抹除并逻辑地关联为备用区。为了能够让主机系统290能够顺利地存取以轮替方式储存数据的实体单元,闪存储存装置200会提供逻辑地址给主机系统290。也就是说,闪存储存装置200会通过在逻辑地址-实体地址对映表(logicaladdress-physicaladdressmappingtable)中记录与更新逻辑地址与数据区的实体单元之间的对映关系来反映实体单元的轮替,所以主机系统290仅需要针对所提供逻辑地址进行写入而闪存储存装置200会依据逻辑地址-实体地址对映表对所对映的实体单元的实体地址进行读取或写入数据。第一缓冲区404与第二缓冲区406是用以暂存闪存控制器204所传送的数据。如上所述,在第0闪存晶粒400中写入数据的过程包括数据传输以及数据程序化两个部分。在数据传输的部分,闪存控制器204会将欲写入的数据传输至第一缓冲区404,并且之后,欲写入的数据会被搬移至第二缓冲区406。而在数据程序化的部分,欲写入的数据会从第二缓冲区406中写入至储存区402。在此,第一缓冲区404也称为数据快取(datacache)区,而第二缓冲区406也称为快取缓冲(cachebuffer)区,其中第一缓冲区404与第二缓冲区406可分别暂存一个页面的写入数据以对应程序化单位(即,页面)。具体来说,当内存管理单元208从主机系统290接收到主机写入指令与写入数据而需将写入数据写入至第0闪存晶粒400时,内存管理单元208会通过闪存接口单元212与数据输入/输出总线302下达程序化指令,而此程序化指令中的欲写入的数据从缓冲存储器214中被传输至第一缓冲区404,之后欲写入的数据会从第一缓冲区404中被搬移至第二缓冲区406,最后,数据会从第二缓冲区406被程序化至储存区402。特别是,在本范例实施例中,内存管理单元208仅会使用是由“指令W1”、“实体地址”、“写入数据”与“指令W3”等字符串所组成程序化指令来程序化数据,其中内存管理单元208通过“指令W1”指示第0闪存晶粒400准备执行程序化程序,通过“实体地址”指示第0闪存晶粒400欲程序化的实体地址,通过“写入数据”指示第0闪存晶粒400欲程序化的数据以及通过“指令W3”指示第0闪存晶粒400开始执行快取程序化(cacheprogram)。在此,当使用程序化指令中的“指令W3”时,闪存控制器204会于数据已从第一缓冲区404中被搬移第二缓冲区406时就接收到第0闪存晶粒400的确认信息,而可处理下一个指令。例如,在闪存控制器204使用NCQ协议从主机系统290中接收到两个连续主机写入指令而需于第0闪存晶粒400的两个页面执行程序化的例子中,由于第0闪存晶粒400具有两个缓冲区(即,第一缓冲区404与第二缓冲区406),因此当第0闪存晶粒400已将第一个主机写入指令的数据从第一缓冲区404搬移至第二缓冲区406之后,第一缓冲区404就可被清除并接收第二个主机写入指令的数据。特别是,在第0闪存晶粒400正将第一个主机写入指令的写入数据从第二缓冲区406中程序化至储存区402期间,第一缓冲区404可负责接收下一个程序化指令的写入数据(即,第二个主机写入指令的数据)。也就是说,通过使用“指令W3”可使得内存管理单元208在无需等待第0闪存晶粒400完成第一个主机写入指令的程序化的情况下,就可继续处理第二个主机写入指令,并将第二个主机写入指令的写入数据传输至第一缓冲区404中。因此,第0闪存晶粒400可同时地执行第一个主机写入指令的写入数据的数据程序化和第二个主机指令的写入数据的数据传输,而缩短执行主机写入指令的时间。图4A是根据本发明范例实施例所图示的闪存控制器透过数据输入/输出总线下达快取程序化指令的范例示意图,并且图4B是根据图4A所示的指令所图示闪存芯片的运作时序图。在图4A与图4B的范例中,内存管理单元208是使用NCQ协议从主机系统290中接收到3个主机写入指令。在此,此3个主机写入指令欲写入的逻辑地址为连续的3个逻辑地址,并且内存管理单元208会依据此些逻辑地址的顺序来产生下达指令顺序,以使主机系统290依据内存管理单元208所产生的下达指令顺序来下达此3个主机写入指令,其中第1个主机写入指令包括欲写入的逻辑地址及欲写入的数据D1,第2个主机写入指令包括欲写入的逻辑地址及欲写入的数据D2,第3个主机写入指令包括欲写入的逻辑地址及欲写入的数据D3,并且此3个主机写入指令欲于写入的逻辑地址是对映至第0闪存晶粒400的实体区块。请参照图4A与图4B,当闪存控制器204的内存管理单元208依据该下达指令顺序接收到来自于主机系统290的第1个主机写入指令及欲写入的数据后,内存管理单元208会依据第1个主机写入指令中的逻辑地址与其欲写入的数据Dl中向闪存芯片220下达由“指令Wl”、“ADD1”、“数据D1”与“指令W3”等字符串所组成的快取程序化指令(如图4A所示的指令CM1、指令CM2、传输Tl与指令CM3),其中“ADD1”表示程序化数据的实体地址。也是就说,内存管理单元208会依据逻辑地址-实体地址对映表将主机写入指令中的逻辑地址所对映的实体地址传送给第0闪存晶粒400(即,指令CM2),并且将数据Dl传输至第一缓冲区404(即,传输Tl)。之后,第0闪存晶粒400会依据快取程序化指令(即,指令CM3)将数据Dl从第一缓冲区404搬移至第二缓冲区406,并且在完成将数据Dl从第一缓冲区404搬移至第二缓冲区406之后,将数据Dl从第二缓冲区406中程序化至储存区402。特别是,在第0闪存晶粒400开始执行指令CM3时,第0闪存晶粒400会处于一忙碌状态,并且在完成将数据Dl从第一缓冲区404搬移至第二缓冲区406之后即回复为一待命(ready)状态(即,忙碌时间Bi)。在第0闪存晶粒400回复为待命状态时,内存管理单元208会响应主机系统290,从主机系统290中接收第2个主机写入指令与数据D2,并且对第0闪存晶粒400下达由“指令W1”、“ADD2”、“数据D2”与“指令W3”等字符串所组成的快取程序化指令(如图4A所示的指令CM4、指令CM5、传输T2与指令CM6)以将第2个主机写入指令的数据D2传输至第一缓冲区404(即,传输T2)。此时,数据Dl的数据程序化与数据D2的数据传输是同时地进行。也就是说,由于第0闪存晶粒400中存有2个缓冲区(即,第一缓冲区404与第二缓冲区406),因此透过快取写入指令来将欲写入的数据从第一缓冲区404搬移至第二缓冲区406后,第二缓冲区406用于将数据程序化至储存区402,而第一缓冲区406就可继续从缓冲存储器214中接收数据。接着,在传输数据D2之后,当第0闪存晶粒400完成数据Dl的数据程序化后,第0闪存晶粒400会依据指令CM6将数据D2从第一缓冲区404搬移至第二缓冲区406,并且在完成将数据D2从第一缓冲区404搬移至第二缓冲区406之后,将数据D2从第二缓冲区406中程序化至储存区402。在第0闪存晶粒400开始执行指令CM6时,第0闪存晶粒400会处于忙碌状态,并且在完成将数据D2从第一缓冲区404搬移至第二缓冲区406之后即回复为待命状态(即,忙碌时间B2)。类似地,在第0闪存晶粒400回复为待命状态时,内存管理单元208会响应主机系统290,从主机系统290中接收第3个主机写入指令与数据D3,并且对第0闪存晶粒400下达由“指令Wl”、“ADD3”、“数据D3”与“指令W3”等字符串所组成的快取程序化指令(如图4A所示的指令CM7、指令CM8、传输T3与指令CM9)以将第3个主机写入指令的数据D3传输至第一缓冲区404(即,传输T3)。接着,在传输数据D3之后,当第0闪存晶粒400完成数据D2的数据程序化后,第0闪存晶粒400会依据指令CM9将数据D3从第一缓冲区404搬移至第二缓冲区406,并且在完成将数据D3从第一缓冲区404搬移至第二缓冲区406之后,将数据D3从第二缓冲区406中程序化至储存区402。类似地,在第0闪存晶粒400开始执行指令CM9时,第0闪存晶粒400会处于忙碌状态,并且在完成将数据D3从第一缓冲区404搬移至第二缓冲区406之后即回复为待命状态(即,忙碌时间B3)。值得一提的是,在内存管理单元208从第0闪存晶粒400中收到回复为待命状态的确认信息中会包括快取状态位与实际忙碌状态位,其中快取状态位是表示第0闪存晶粒400是否已准备好再接收下一个写入资料,而实际忙碌状态位是表示第0闪存晶粒400目前是否正处于实际忙碌状态。由此,闪存控制器204通过确认信息中的信息可正确地判断第0闪存晶粒400是否正在程序化数据。在图4A与图4B的范例中,在忙碌时间B3之后,虽然第0闪存晶粒400已回复处于待命状态,然由于内存管理单元208已对此次通过NCQ协议所接收的所有主机写入指令完成下达程序化指令的动作,因此内存管理单元208会持续确认第0闪存晶粒400已完成所有数据的程序化(即,内存管理单元208会确认第0闪存晶粒400已处于非实际忙碌状态)之后,向主机系统290回复每一主机写入指令的执行状态。图5是根据本发明范例实施例所图示的下达程序化指令的流程图。请参照图5,首先,在步骤S501中闪存储存装置200从主机系统290中接收主机写入指令。具体来说,在本范例实施例中,主机系统290是使用NCQ协议来传送多个主机写入指令(如图4A所述的2个主机写入指令)。因此,在步骤S501中闪存储存装置200会先接收到主机系统290预计下达的多个主机写入指令。接着,在步骤S503中内存管理单元208会依据所接收的主机写入指令所对应的逻辑地址来产生一下达指令顺序。具体来说,在本实施例中,当内存管理单元208使用NCQ协议从主机系统290中接收到多个主机写入指令时,内存管理单元208会依据主机写入指令中的逻辑地址来排序以决定预期的执行主机写入指令的顺序。值得一提的是,在本范例另一范例实施例中,内存管理单元208也可不重新排列所接收到主机写入指令的顺序,而以主机系统290原本下达主机写入指令的顺序来产生下达指令顺序。在步骤S505中内存管理单元208会将所产生的下达指令顺序传送给主机系统。之后,在步骤S507中内存管理单元208会依据下达指令顺序一个接着一个地从主机系统290中接收此些主机写入指令与对应此些主机写入指令的写入数据。之后,在步骤S509中内存管理单元208会向闪存芯片220下达快取程序化指令(例如,以“指令W1”、“实体地址”、“写入数据”与“指令W3”等字符串所组成程序化指令)。之后,在步骤S511中内存管理单元208会等候与接收闪存芯片220的确认信息,并且在步骤S513中判断是否已完成在步骤S501中主机系统290欲下达的所有主机写入指令。倘若在步骤S513中判断还未完成在步骤S501中主机系统290欲下达的所有主机写入指令时,则执行步骤S507继续接收下一个主机写入指令。倘若在步骤S513中判断已完成在步骤S501中主机系统290欲下达的所有主机写入指令时,则在步骤S515中判断闪存芯片220是否处于实际忙碌状态。倘若在步骤S515中判断闪存芯片220非处于实际忙碌状态,则执行步骤S517响应主机系统290并结束图5的流程,反之,则继续执行步骤S511。基于上述,在使用NCQ协议来接收来自于主机系统290的多个主机写入指令的例子中,内存管理单元208会于此批依据NCQ协议所下达的所有主机写入指令都执行完成后,向主机系统290回报所有主机写入指令的执行状态(例如,是否有发生程序化错误)。特别是,内存管理单元208会等候闪存芯片220从执行最后一个主机写入指令的实际忙碌状态回复为待命状态时,才向主机系统290回报所有主机写入指令的执行状态。综上所述,本发明范例实施例的下达程序化指令方法仅使用快取程序化指令来对闪存芯片程序化,由此可大幅缩短执行主机写入指令的时间。此外,本发明范例实施例的下达程序化指令方法更利用NCQ协议来于主机系统与闪存储存装置之间传送指令,由此可避免主机系统无法正确地判断每一个主机写入指令的实际执行状态。再者,在上述范例实施例中,更利用NCQ协议来依据主机写入指令所欲写入的逻辑地址来重新排列下达主机写入指令的顺序,由此可更缩短执行主机写入指令所需的时间。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求1.一种对闪存下达程序化指令的方法,用于将来自于一主机系统的数据写入至一闪存芯片中,所述下达程序化指令的方法包括提供一闪存控制器;由所述闪存控制器使用一原生指令排序协议从所述主机系统中接收多个主机写入指令;由所述闪存控制器依据所述主机写入指令传送一下达指令顺序给所述主机系统;以及依据所述下达指令顺序从所述主机系统中依序地接收所述主机写入指令与对应所述主机写入指令的多个写入数据,并且分别地向所述闪存芯片下达一快取程序化指令以将所述写入数据写入至所述闪存芯片中。2.根据权利要求1所述的对闪存下达程序化指令的方法,其中由所述闪存控制器依据所述主机写入指令传送所述下达指令顺序给所述主机系统的步骤包括由所述闪存控制器依据所述主机系统下达所述主机写入指令的顺序来决定所述下达指令顺序;以及将所述下达指令顺序传送所述主机系统。3.根据权利要求1所述的对闪存下达程序化指令的方法,其中由所述闪存控制器依据所述主机写入指令传送所述下达指令顺序给所述主机系统的步骤包括由所述闪存控制器依据对应所述主机写入指令的多个逻辑地址来决定所述下达指令顺序;以及将所述下达指令顺序传送所述主机系统。4.根据权利要求1所述的对闪存下达程序化指令的方法,还包括在所述闪存控制器完成所有所述主机写入指令后传送对应所述主机写入指令的执行状态给所述主机系统。5.根据权利要求4所述的对闪存下达程序化指令的方法,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则由所述闪存控制器从所述主机系统重新接收所述主机写入指令之中对应所述至少一程序化错误的主机写入指令与写入数据。6.根据权利要求4所述的对闪存下达程序化指令的方法,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则由所述闪存控制器从所述主机系统重新接收所有所述主机写入指令与所述写入数据。7.根据权利要求1所述的对闪存下达程序化指令的方法,其中所述闪存芯片包括一第一缓冲区、一第二缓冲区与一储存区,其中依据所述下达指令顺序从所述主机系统中依序地接收所述主机写入指令与对应所述主机写入指令的所述写入数据,并且分别地向所述闪存芯片下达所述快取程序化指令以将所述写入数据写入至所述闪存芯片中的步骤包括从所述主机系统中接收所述主机写入指令之中的一第一主机写入指令以及所述写入数据之中对应所述第一主机写入指令的一第一写入数据;由所述闪存控制器向所述闪存芯片下达所述快取程序化指令将所述第一写入数据传输至所述第一缓冲区,其中所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区;从所述主机系统中接收所述主机写入指令之中的一第二主机写入指令以及所述写入数据之中对应所述第二主机写入指令的一第二写入数据;以及由所述闪存控制器向所述闪存芯片下达所述快取程序化指令以将所述第二写入数据传输至所述第一缓冲区,其中所述第二写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区,其中当所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区之后,所述第二写入数据被传输至所述第一缓冲区中。8.—种闪存控制器,用于将来自于一主机系统的数据写入至一闪存芯片中,所述闪存控制器包括一微处理器单元;一缓冲存储器,电性连接至所述微处理器单元;一闪存接口单元,电性连接至所述微处理器单元,用以连接所述闪存芯片;一主机接口单元,电性连接至所述微处理器单元,用以连接所述主机系统,其中所述主机接口单元支持一原生指令排序协定;以及一内存管理单元,电性连接至所述微处理器单元,用以通过所述主机接口单元使用所述原生指令排序协议从所述主机系统中接收多个主机写入指令,其中所述内存管理单元通过所述主机接口单元依据所述主机写入指令传送一下达指令顺序给所述主机系统,其中所述内存管理单元透过所述主机接口单元依据所述下达指令顺序从所述主机系统中依序地接收所述主机写入指令与对应所述主机写入指令的多个写入数据,并且分别地向所述闪存芯片下达一快取程序化指令以将所述写入数据写入至所述闪存芯片中。9.根据权利要求8所述的闪存控制器,其中所述内存管理单元依据所述主机系统下达所述主机写入指令的顺序来决定所述下达指令顺序。10.根据权利要求8所述的闪存控制器,其中所述内存管理单元依据对应所述主机写入指令的多个逻辑地址来决定所述下达指令顺序。11.根据权利要求8所述的闪存控制器,其中所述内存管理单元在完成所有所述主机写入指令后传送对应所述主机写入指令的执行状态给所述主机系统。12.根据权利要求11所述的闪存控制器,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则所述内存管理单元从所述主机系统中重新接收所述主机写入指令之中对应所述至少一程序化错误的主机写入指令与写入数据。13.根据权利要求11所述的闪存控制器,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则所述内存管理单元从所述主机系统中重新接收所述主机写入指令与所述写入数据。14.根据权利要求11所述的闪存控制器,其中所述闪存芯片包括一第一缓冲区、一第二缓冲区与一储存区,其中所述内存管理单元从所述主机系统中接收所述主机写入指令之中的一第一主机写入指令以及所述写入数据之中对应所述第一主机写入指令的一第一写入数据,其中所述内存管理单元向所述闪存芯片下达所述快取程序化指令将所述第一写入数据从所述缓冲存储器中传输至所述第一缓冲区,其中所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区,其中所述内存管理单元从所述主机系统中接收所述主机写入指令之中的一第二主机写入指令以及所述写入数据之中对应所述第二主机写入指令的一第二写入数据,其中所述内存管理单元向所述闪存芯片下达所述快取程序化指令以将所述第二写入数据从所述缓冲存储器中传输至所述第一缓冲区,其中所述第二写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区,以及其中当所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区之后,所述第二写入数据被传输至所述第一缓冲区中。15.—种闪存储存系统,用于储存来自于一主机系统的数据,包括一连接器,用以电性连接所述主机系统,其中所述连接器支持一原生指令排序协定;一闪存芯片;以及一闪存控制器,电性连接至所述连接器与所述闪存芯片,用以通过所述连接器使用所述原生指令排序协议从所述主机系统中接收多个主机写入指令,其中所述闪存控制器依据所述主机写入指令传送一下达指令顺序给所述主机系统,其中所述闪存控制器通过所述连接器依据所述下达指令顺序从所述主机系统中依序地接收所述主机写入指令与对应所述主机写入指令的多个写入数据,并且分别地向所述闪存芯片下达一快取程序化指令以将所述写入数据写入至所述闪存芯片中。16.根据权利要求15所述的闪存储存系统,其中所述闪存控制器依据所述主机系统下达所述主机写入指令的顺序来决定所述下达指令顺序。17.根据权利要求15所述的闪存储存系统,其中所述闪存控制器依据对应所述主机写入指令的多个逻辑地址来决定所述下达指令顺序。18.根据权利要求15所述的闪存储存系统,其中所述闪存控制器在完成所有所述主机写入指令后传送对应所述主机写入指令的执行状态给所述主机系统。19.根据权利要求18所述的闪存储存系统,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则所述闪存控制器从所述主机系统中重新接收所述主机写入指令之中对应所述至少一程序化错误的主机写入指令与写入数据。20.根据权利要求18所述的闪存储存系统,其中当对应所述主机写入指令的执行状态之中包括至少一程序化错误时,则所述闪存控制器从所述主机系统中重新接收所述主机写入指令与所述写入数据。21.根据权利要求15所述的闪存储存系统,其中所述闪存芯片包括一第一缓冲区、一第二缓冲区与一储存区,其中所述闪存控制器从所述主机系统中接收所述主机写入指令之中的一第一主机写入指令以及所述写入数据之中对应所述第一主机写入指令的一第一写入数据,其中所述闪存控制器向所述闪存芯片下达所述快取程序化指令将所述第一写入数据从所述缓冲存储器中传输至所述第一缓冲区,其中所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区,其中所述闪存控制器从所述主机系统中接收所述主机写入指令之中的一第二主机写入指令以及所述写入数据之中对应所述第二主机写入指令的一第二写入数据,其中所述闪存控制器向所述闪存芯片下达所述快取程序化指令以将所述第二写入数据从所述缓冲存储器中传输至所述第一缓冲区,其中所述第二写入数据从所述第一缓冲区被搬移至所述第二缓冲区并且从所述第二缓冲区被写入至所述储存区,以及其中当所述第一写入数据从所述第一缓冲区被搬移至所述第二缓冲区之后,所述第二写入数据被传输至所述第一缓冲区中。全文摘要本发明实施例提供了一种对闪存下达程序化指令的方法、控制器与储存系统,该方法用于将来自于主机系统的数据写入至闪存芯片中。本方法包括使用原生指令排序(NativeCommandQueuing,NCQ)协议从主机系统接收多个主机写入指令与对应这些主机写入指令的写入数据,并且向闪存芯片下达快取程序化指令以将写入数据写入至闪存芯片中。基此,通过仅使用快取程序化指令与原生指令排序协议来执行数据的写入可有效地缩短执行主机写入指令的时间。文档编号G06F3/06GK102023811SQ20091017216公开日2011年4月20日申请日期2009年9月10日优先权日2009年9月10日发明者叶志刚申请人:群联电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1