CN107783916B - 数据传输方法、存储控制器与清单管理电路 - Google Patents
数据传输方法、存储控制器与清单管理电路 Download PDFInfo
- Publication number
- CN107783916B CN107783916B CN201610728853.6A CN201610728853A CN107783916B CN 107783916 B CN107783916 B CN 107783916B CN 201610728853 A CN201610728853 A CN 201610728853A CN 107783916 B CN107783916 B CN 107783916B
- Authority
- CN
- China
- Prior art keywords
- list
- memory
- entries
- buffer
- page
- 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
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据传输方法、存储控制器与清单管理电路。所述方法包括从所述主机系统接收传输指令,其中所述传输指令包括起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标,其中所述传输指令用以指示于可复写式非易失性存储器模块的至少一目标逻辑区块与主机存储器的至少一目标存储器页面之间传输目标数据;若所述第二存储器页面地址为对应所述传输指令的第一实体区域页面指标清单的第一清单起始地址,缓存对应所述传输指令的至少一实体区域页面指标清单的多个条目;以及根据所缓存的所述条目传输对应的数据。本发明技术方案提高了数据传输的速度,并且增进存储装置与其所进行的数据传输操作的工作效率。
Description
技术领域
本发明是有关于一种数据传输方法,且特别是有关于一种数据传输方法及使用所述方法的存储控制器与清单管理电路。
背景技术
数码相机、手机与MP3在这几年来的成长十分迅速,使得消费者对存储介质的需求也急速增加。由于可复写式非易失性存储器(rewritable non-volatile memory)具有数据非易失性、省电、体积小、无机械结构、读写速度快等特性,最适于此些电子产品。因此,近年闪存存储器产业成为电子产业中相当热门的一环。例如,广泛用于移动电子装置上的嵌入式多媒体卡(embeded Multi Media Card,eMMC)就是一种以闪存存储器作为存储媒体的存储装置。
为了配合可复写式非易失性存储器的存储装置(如,固态硬盘)的较高的写入/读取速度,许多数据传输接口(例如,快捷外设互联标准接口,PCIe接口)也开始支持更高阶的数据传输协定,例如,快速非易失性存储器接口标准(Non-Volatile Memory express,NVMe),以发挥高速的可复写式非易失性存储器存储装置的工作效率。
快速非易失性存储器接口标准定义了用于使用者数据传输的多个存取指令。此些存取指令具有许多指令参数。一般来说,当前的可复写式非易失性存储器存储装置的存储控制器会根据所接收存取指令的所述指令参数来循序地在主机系统的主机存储器与可复写式非易失性存储器之间存取数据。在存取数据时,会从主机存储器读取对应存取指令的清单,以获得主机存储器中对应被存取的数据的存储器地址。然而,从主机存储器所存储的对应存取指令的清单中找寻对应的存储器地址会导致系统延迟的发生,进而降低存取数据的效率。
因此,要如何减少上述的系统延迟的发生,进而增进存取数据的效率,是此领域技术人员所致力的目标。
发明内容
本发明提供一种数据传输方法,以及使用此方法的存储控制器与清单管理电路,可减少读取清单所导致的系统延迟,以增进数据传输的效率。
本发明的一实施例提供适用于可复写式非易失性存储器模块与主机系统的主机存储器之间的数据传输操作的一种数据传输方法,其中所述可复写式非易失性存储器模块被配置多个逻辑区块,并且所述主机存储器具有多个存储器页面。所述方法包括从所述主机系统接收传输指令,其中所述传输指令包括起始逻辑区块地址(SLBA)、逻辑区块数目(NLB)、第一实体区域页面指标(PRP1)与一第二实体区域页面指标(PRP2),其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的第二存储器页面地址;若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单(PRP List)中的第一实体区域页面指标清单的第一清单起始地址,根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分;以及根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
本发明的一实施例提供用于控制配置有可复写式非易失性存储器模块的存储装置的一种存储控制器。所述存储控制器包括连接接口电路、存储器接口控制电路、处理器、数据传输管理电路与清单管理电路。所述连接接口电路用以电性连接至主机系统,其中所述主机系统配置有主机存储器,其中所述主机存储器具有多个存储器页面。所述存储器接口控制电路用以电性连接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块被配置多个逻辑区块。所述处理器电性连接至所述连接接口电路单元及所述存储器接口控制电路。所述数据传输管理电路电性连接至所述处理器、所述连接接口电路单元及所述存储器接口控制电路。所述清单管理电路电性连接至所述数据传输管理电路、所述处理器、所述连接接口电路单元及所述存储器接口控制电路。所述处理器用以从所述主机系统接收传输指令,其中所述传输指令包括一起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标,其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的第二存储器页面地址,其中若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的第一实体区域页面指标清单的第一清单起始地址。所述清单管理电路用以根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分。所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
本发明的一实施例提供被配置于存储装置的存储控制器中的一种清单管理电路,其中所述存储控制器还包括连接接口电路、存储器接口控制电路与处理器。其中所述连接接口电路用以电性连接至主机系统,其中所述主机系统配置有主机存储器,其中所述主机存储器具有多个存储器页面。所述存储器接口控制电路用以电性连接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块被配置多个逻辑区块。所述处理器电性连接至所述连接接口电路单元及所述存储器接口控制电路。所述数据传输管理电路,电性连接至所述处理器、所述连接接口电路单元及所述存储器接口控制电路。所述清单管理电路电性连接至所述数据传输管理电路、所述处理器、所述连接接口电路单元及所述存储器接口控制电路。所述清单管理电路包括清单控制器、清单缓冲存储器与清单获取电路。清单缓冲存储器电性连接至所述清单控制器。清单获取电路电性连接至所述清单控制器与所述清单缓冲存储器。所述处理器用以从所述主机系统接收传输指令,其中所述传输指令包括起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标,其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的第二存储器页面地址。若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的第一实体区域页面指标清单的第一清单起始地址,所述清单控制器用以根据所述传输指令指示所述清单获取电路从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且所述清单控制器还用以缓存所读取的所述至少一实体区域页面指标清单的所述部分至所述清单缓冲存储器。所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
基于上述,本发明的实施例所提供的数据传输方法以及使用此方法的存储控制器与清单管理电路,可利用硬件来缓存对应传输指令的实体区域页面指标清单,以让数据传操操作可通过所缓存的实体区域页面指标清单来进行,进而减少了存储装置与主机系统之间的延迟,增加了数据传输的速度,并且增进了存储装置与其所进行的数据传输操作的工作效率。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图
图2是根据本发明一实施例所示出的清单管理电路的方块示意图。
图3是根据本发明一实施例所示出的数据传输方法的流程图。
图4是根据本发明的一实施例所示出的存储器页面的示意图。
图5是根据本发明一实施例所示出的数据传输的示意图。
图6是根据本发明的一实施例所示出的缓存实体区域页面指标清单的流程图。
图7是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。
图8是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。
图9是根据本发明的另一实施例所示出的缓存实体区域页面指标清单的示意图。
图10是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。
图11是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。
图12是根据本发明的一实施例所示出的对应读取指令的清单获取操作与数据传输操作的示意图。
图13是根据本发明的一实施例所示出的对应写入指令的清单获取操作与数据传输操作的示意图。
附图标号说明:
10:主机系统;
20:存储装置;
110、211:处理器;
120:主机存储器;
130:数据传输接口电路;
210:存储控制器;
212:数据传输管理电路;
213:存储器接口控制电路;
214:清单管理电路;
220:可复写式非易失性存储器模块;
230:连接接口电路;
2141:清单控制器;
2142:清单缓冲存储器;
2143:清单获取电路;
S310、S320、S330、S340、S350:数据传输方法的流程步骤;
S610、S620、S630、S640:缓存实体区域页面指标清单的流程步骤;
400(0)、400(1)、400(2)、400(3)、400(5)、400(6)、400(7)、400(8)、400(9)、400(N):存储器页面;
SA400(0)、SA400(1)、SA400(2)、SA400(3)、SA400(N):起始地址;
EA400(0)、EA400(1)、EA400(N):结束地址;
500(0)、500(1)、500(2):逻辑区块;
5001、701、702、703、704:实体区域页面指标清单;
501(0)、501(1)、501(P)、701(0)、701(1)、701(2)、701(3)、703(0)、703(1)、703(2)、703(3)、704(0)、704(1)、704(2):条目;
SLBA:起始逻辑区块地址;
NLB:逻辑区块数目;
PRP1:第一实体区域页面指标;
PRP2:第二实体区域页面指标;
710、711、712、713:缓冲区;
SA_710、SA_711、SA_712:缓冲区起始地址;
PLE#_710、PLE#_711、PLE#_712:缓冲区条目数目;
PLF_711_1、PLF_712_2、PLF_711_3、PLF_712_4:清单获取操作;
DT_711_1、DT_712_2、DT_711_3、DT_712_4:数据传输操作。
具体实施方式
一般而言,存储装置包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与存储装置控制器(也称,存储控制器或存储控制电路)。通常存储装置是与主机系统一起使用,以使主机系统可对存储装置进行数据传输操作。例如,将数据写入至存储装置或从存储装置中读取数据。
图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。
请参照图1,主机系统(Host System)10包括处理器(Processor)110、主机存储器(Host Memory)120及数据传输接口电路(Data Transfer Interface Circuit)130。在本实施例中,数据传输接口电路130电性连接(也称,电性连接)至处理器110与主机存储器120。在另一实施例中,处理器110、主机存储器120与数据传输接口电路130之间利用系统总线(System Bus)彼此电性连接。
存储装置20包括存储控制器(Storage Controller)210、可复写式非易失性存储器模块(Rewritable Non-Volatile Memory Module)220及连接接口电路(ConnectionInterface Circuit)230。其中,存储控制器210包括处理器211、数据传输管理电路(DataTransfer Management Circuit)212与存储器接口控制电路(Memory Interface ControlCircuit)213。
在本实施例中,主机系统10是通过数据传输接口电路130与存储装置20的连接接口电路230电性连接至存储装置20来进行数据的存取操作。例如,主机系统10可通过数据传输接口电路130将数据存储至存储装置20或从存储装置20中读取数据。
在本实施例中,处理器110、主机存储器120及数据传输接口电路130可设置在主机系统10的主机板上。数据传输接口电路130的数目可以是一或多个。通过数据传输接口电路130,主机板可以通过有线或无线方式电性连接至存储装置20。存储装置20可例如是U盘、内存卡、固态硬盘(Solid State Drive,SSD)或无线存储器存储装置。无线存储器存储装置可例如是近距离无线通讯(Near Field Communication,NFC)存储器存储装置、无线保真(WiFi)存储器存储装置、蓝牙(Bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,iBeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板20也可以通过系统总线电性连接至全球定位系统(Global Positioning System,GPS)模块、网络接口卡、无线传输装置、键盘、屏幕、喇叭等各式I/O装置。
在本实施例中,数据传输接口电路130与连接接口电路230是相容于高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准的接口电路。并且,数据传输接口电路130与连接接口电路230之间是利用快速非易失性存储器接口标准(Non-Volatile Memory express,NVMe)通讯协定来进行数据的传输。
然而,必须了解的是,本发明不限于此,数据传输接口电路130与连接接口电路230也可以是符合并列先进附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、序列先进附件(Serial Advanced Technology Attachment,SATA)标准、通用串行总线(Universal Serial Bus,USB)标准、SD接口标准、超高速一代(Ultra High Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、记忆棒(MemoryStick,MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体存储卡(MultiMedia Card,MMC)接口标准、eMMC接口标准、通用闪存存储器(Universal Flash Storage,UFS)接口标准、eMCP接口标准、CF接口标准、整合式驱动电子接口(Integrated DeviceElectronics,IDE)标准或其他适合的标准。此外,在另一实施例中,连接接口电路230可与存储控制器210封装在一个芯片中,或者连接接口电路230是布设于一包含存储控制器210的芯片外。
在本实施例中,主机存储器120用以暂存处理器110所执行的指令或数据。例如,在本范例实施例中,主机存储器120可以是动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)等。然而,必须了解的是,本发明不限于此,主机存储器120也可以是其他适合的存储器。更详细来说,在本实施例中,主机存储器120被划分为多个存储器页面(Memory Page),以供指令与数据的存储管理。每个存储器页面具有起始地址(Starting Address of Memory Page,SAMP)与结束地址(Ending Address of Memory Page,EAMP)。在本实施例中,每个存储器页面是利用16比特大小的地址来进行定位,例如,排序为第一个的存储器页面的起始地址(SAMP)可设定为“0000”,并且结束地址(EAMP)可设定为“0FFF”。每个存储器页面的大小为4096比特组(Bytes)(即,4KB)。主机存储器用来进行数据传输的存储器页面的总空间为64KB,即,共16个存储器页面。然而,本发明并不限于主机存储器的地址定位方式。例如,在另一实施例中,主机存储器可具有更多或是更少的空间,并且可对应地使用适合的定位方式来进行地址定位。
存储控制器210用以执行以硬件或软件实作的多个逻辑门或控制指令并且根据主机系统10的指令在可复写式非易失性存储器模块220中进行数据的写入、读取与抹除等运作。
更详细来说,存储控制器210中的处理器211为具备运算能力的硬件,其用以控制存储控制器210的整体运作。具体来说,处理器211具有多个控制指令,并且在存储装置20运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。
值得一提的是,在本实施例中,处理器110与处理器211例如是中央处理单元(Central Processing Unit,CPU)、微处理器(micro-processor)、或是其他可编程化的处理单元(Microprocessor)、数字信号处理器(Digital Signal Processor,DSP)、可编程化控制器、特殊应用积体电路(Application Specific Integrated Circuits,ASIC)、可编程化逻辑装置(Programmable Logic Device,PLD)或其他类似电路元件,本发明并不限于此。
在一实施例中,存储控制器210还具有只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(boot code),并且当存储控制器210被致能时,处理器211会先执行此开机码来将存储于可复写式非易失性存储器模块220中的控制指令载入至存储控制器210的随机存取存储器中。之后,处理器211会运转此些控制指令以进行数据的写入、读取与抹除等运作。在另一实施例中,处理器211的控制指令也可以程序码型式存储于可复写式非易失性存储器模块220的特定区域,例如,可复写式非易失性存储器模块220中专用于存放系统数据的实体存储单元中。
在本实施例中,如上所述,存储控制器210还包括数据传输管理电路212、存储器接口控制电路213与清单管理电路214。
其中,数据传输管理电路212电性连接至处理器211、存储器接口控制电路213与连接接口电路230。数据传输管理电路212用以接受处理器211的指示来进行数据的传输。例如,通过连接接口电路230从主机系统10(如,主机存储器120)读取数据,并且将所读取的数据通过存储器接口控制电路213写入至可复写式非易失性存储器模块220中。又例如,通过存储器接口控制电路213从可复写式非易失性存储器模块220读取数据,并且将所读取的数据通过连接接口电路230写入至主机系统10(如,主机存储器120)中。
存储器接口控制电路213用以接受处理器211的指示,配合数据传输管理电路212来进行对于可复写式非易失性存储器模块220的数据的写入(也称,编程化,Programming)、读取操作。存储器接口控制电路213也可对可复写式非易失性存储器模块220进行抹除操作。
举例来说,处理器211可执行写入指令序列,以指示存储器接口控制电路213将数据写入至可复写式非易失性存储器模块220中;处理器211可执行读取指令序列,以指示存储器接口控制电路213从可复写式非易失性存储器模块220中读取数据;处理器211可执行抹除指令序列,以指示存储器接口控制电路213对可复写式非易失性存储器模块220进行抹除操作。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示对可复写式非易失性存储器模块220执行相对应的写入、读取及抹除等操作。在一实施例中,处理器211还可以下达其他类型的指令序列给存储器接口控制电路213,以对可复写式非易失性存储器模块220执行相对应的操作。
此外,欲写入至可复写式非易失性存储器模块220的数据会通过存储器接口控制电路213转换为可复写式非易失性存储器模块220所能接受的格式。具体来说,若处理器211要存取可复写式非易失性存储器模块220,处理器211会传送对应的指令序列给存储器接口控制电路213以指示存储器接口控制电路213执行对应的操作。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变读取电压准位或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的辨识码、存储器地址等信息。
在本实施例中,存储器接口控制电路213还会辨识配置给可复写式非易失性存储器模块220的逻辑区块的状态。存储器接口控制电路213也可辨识可复写式非易失性存储器模块220的实体区块的状态。
更详细来说,当存储器接口控制电路213根据读取/写入指令发出读取/写入请求给可复写式非易失性存储器模块220后,存储器接口控制电路213会辨识对应的可复写式非易失性存储器模块220的存储单元(如,实体区块、实体页面,或是对应的逻辑区块、逻辑页面)的状态是否为就绪状态(readiness)。
在本实施例中,清单管理电路214用以管理对应传输指令的清单。通过所述清单的信息来定址传输指令所指示欲传输的数据在主机存储器中的地址。
图2是根据本发明一实施例所示出的清单管理电路的方块示意图。请参照图2,在本实施例中,清单管理电路214包括清单控制器2141、清单缓冲存储器2142与清单获取电路2143。清单缓冲存储器电性连接至清单控制器2141。清单获取电路2143电性连接至清单控制器2141。
清单控制器2141为具备运算能力的硬件,其用以控制清单管理电路214的整体运作。在本实施例中,清单控制器2141例如是中央处理单元(Central Processing Unit,CPU)、微处理器(micro-processor)、或是其他可编程化的处理单元(Microprocessor)、数字信号处理器(Digital Signal Processor,DSP)、可编程化控制器、特殊应用积体电路(Application Specific Integrated Circuits,ASIC)、可编程化逻辑装置(ProgrammableLogic Device,PLD)或其他类似电路元件,本发明并不限于此。
清单缓冲存储器2142用以暂存来自主机存储器120或清单控制器2141的数据与指令。清单缓冲存储器2142例如是动态随机存取存储器(Dynamic Random Access Memory,DRAM)或静态随机存取存储器(Static Random Access Memory,SRAM)等。然而,必须了解的是,本发明不限于此,清单缓冲存储器2142也可以是其他适合的存储器。
清单获取电路2143用以从主机存储器120读取(也称,获取,Fetch)清单。清单控制器2141会将清单获取电路2143所读取(获取)的清单存储(也称,缓存,Buffer)至清单缓冲存储器2142中。以下会再配合多个附图与实施例来详细说明本发明中清单管理电路214的各元件的详细功能与操作。
可复写式非易失性存储器模块220是电性连接至存储器控制电路单元404并且用以存储主机系统10所写入的数据。可复写式非易失性存储器模块220可以是单阶存储单元(Single Level Cell,SLC)NAND型闪存存储器模块(即,一个存储单元中可存储1个比特的闪存存储器模块)、多阶存储单元(Multi Level Cell,MLC)NAND型闪存存储器模块(即,一个存储单元中可存储2个比特的闪存存储器模块)、复数阶存储单元(Triple Level Cell,TLC)NAND型闪存存储器模块(即,一个存储单元中可存储3个比特的闪存存储器模块)、其他闪存存储器模块或其他具有相同特性的存储器模块。可复写式非易失性存储器模块220中的存储单元是以阵列的方式设置。
在本实施例中,可复写式非易失性存储器模块220的存储单元会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体区块(也称,实体抹除单元)。具体来说,同一条字节线(或同一个字节线层)上的存储单元会组成一或多个实体程序化单元。若每一个存储单元被用以存储2个以上的比特,则同一条字节线(或同一个字节线层)上的实体程序化单元至少可被分类为一个下(lower)实体程序化单元与一个上(upper)实体程序化单元。
在一实施例中,若每一个存储单元被用以存储2个比特,则同一条字节线(或同一个字节线层)上的实体程序化单元可被分类为一个下实体程序化单元与一个上实体程序化单元。例如,一存储单元的最低有效比特(Least Significant Bit,LSB)是属于下实体程序化单元,并且一存储单元的最高有效比特(Most Significant Bit,MSB)是属于上实体程序化单元。一般来说,下实体程序化单元的写入速度会大于上实体程序化单元的写入速度,和/或下实体程序化单元的可靠度会高于上实体程序化单元的可靠度。在另一实施例中,若每一个存储单元被用以存储3个比特,则同一条字节线(或同一个字节线层)上的实体程序化单元可被分类为一个下实体程序化单元、一个上实体程序化单元及一个额外(extra)实体程序化单元。例如,一存储单元的最低有效比特是属于下实体程序化单元,一存储单元的中间有效比特(Central Significant Bit,CSB)是属于上实体程序化单元,并且一存储单元的的最高有效比特是属于额外实体程序化单元。
在本实施例中,数据是以实体区块为单位作为写入数据(编程化)的存储单元。实体区块也可称为实体抹除单元或实体单元。实体抹除单元为抹除的最小单位。也即,每一实体抹除单元含有最小数目的一并被抹除的存储单元。每一实体区块会具有多个实体程序化单元。实体程序化单元为实体页面(page)或是实体扇(sector)。若实体程序化单元为实体页面,则此些实体程序化单元通常包括数据比特区与冗余(redundancy)比特区。数据比特区包含多个实体扇,用以存储使用者数据,而冗余比特区用以存储系统数据(例如,错误更正码)。
然而,本发明不限于此。例如,在另一实施例中,也可变化本实施例所述的数据传输方法,应用至以实体程序化单元为单位作为写入数据的存储单元的可复写式非易失性存储器模块220。
在一实施例中,存储控制器210是基于实体单元来管理可复写式非易失性存储器模块220中的存储单元。例如,在以下实施例中,是以一个实体区块作为一个实体单元的范例。然而,在另一实施例中,一个实体单元也可以是指任意数目的存储单元组成,视实务上的需求而定。此外,必须了解的是,当存储控制器211对可复写式非易失性存储器模块220中的存储单元(或实体单元)进行分组以执行对应的管理操作时,此些存储单元(或实体单元)是被逻辑地分组,而其实际位置并未更动。
存储控制器210会配置多个逻辑单元来映射可复写式非易失性存储器模块220的用以存储使用者数据的多个实体单元,并且主机系统10是通过逻辑单元来存取用以存储使用者数据的多个实体单元中的使用者数据。在此,每一个逻辑单元可以是由一或多个逻辑地址组成。例如,逻辑单元可以是逻辑区块(logical block)、逻辑页面(logical page)或是逻辑扇区(logical sector)。一个逻辑单元可以是映射至一或多个实体单元,其中实体单元可以是一或多个实体地址、一或多个实体扇、一或多个实体程序化单元或者一或多个实体抹除单元。在本实施例中,逻辑单元为逻辑区块。
此外,存储控制器210会建立逻辑转实体地址映射表(logical to physicaladdress mapping table)与实体转逻辑地址映射表(physical to logical addressmapping table),以记录配置给可复写式非易失性存储器模块220的逻辑单元(如,逻辑区块、逻辑页面或逻辑扇区)与实体单元(如,实体抹除单元、实体程序化单元、实体扇区)之间的映射关系。换言之,存储控制器210可通过逻辑转实体地址映射表来查找一逻辑单元所映射的实体单元,并且存储控制器210可通过实体转逻辑地址映射表来查找一实体单元所映射的逻辑单元。然而,上述有关逻辑单元与实体单元映射的技术概念为本领域技术人员的惯用技术手段,不再赘述于此。
在一实施例中,存储控制器210还包括缓冲存储器与电源管理电路。缓冲存储器是电性连接至处理器211并且用以暂存来自于主机系统10的数据与指令、来自于可复写式非易失性存储器模块220的数据或其他用以管理存储装置20的系统数据。电源管理电路是电性连接至处理器211并且用以控制存储装置20的电源。
在本实施例中,对应快速非易失性存储器接口标准的数据传输指令也称为快速非易失性存储器输入输出指令(NVMe I/O Command)。其中,快速非易失性存储器输入输出指令又可分为快速非易失性存储器输入输出读取指令(NVMe I/O Read Command)与快速非易失性存储器输入输出写入指令(NVMe I/O Write Command)。快速非易失性存储器输入输出指令的指令叙述的主要栏位(field)为起始逻辑区块地址(Starting Logical BlockAddress,SLBA)、逻辑区块数目(Number of Logical Blocks)、第一实体区域页面指标(Physical Region Page Pointer 1,PRP1)与第二实体区域页面指标(Physical RegionPage Pointer2,PRP2)。
起始逻辑区块地址用以指示地址(最大为64比特),此地址为所欲进行数据传输的多个逻辑区块地址范围中的排序最前面(第一个)的逻辑区块的地址。逻辑区块数目用以指示所欲进行数据传输的多个逻辑区块地址范围中逻辑区块的总数量。
应注意的是,在本实施例中,当逻辑区块数目的数值为“0”时,其表示逻辑区块数目为“1”个。换句话说,欲进行数据传输的多个逻辑区块地址范围中逻辑区块的总数量会为逻辑区块数目的数值加1。
配合起始逻辑区块地址及逻辑区块数目便可得知欲进行数据存取的逻辑区块(地址)的范围。举例来说,假设目前可复写式非易失性存储器模块220配置有6个逻辑区块LBA(0)~LBA(5)。当接受到快速非易失性存储器输入输出指令(如,其指令叙述为,SLBA=“LBA(0)”,NLB=“2”),则可知道起始逻辑区块地址对应逻辑区块LBA(0)且逻辑区块LBA(0)为所欲存取的逻辑区块中排序最前面的逻辑区块,并且逻辑区块数目指示目前要存取的逻辑区块的总数量为3个。换句话说,在此例子中的快速非易失性存储器输入输出指令可表示为以逻辑区块LBA(0)~LBA(2)为目标来进行数据的存取(传输)。
第一实体区域页面指标与第二实体区域页面指标用以指示主机存储器中的存储器页面地址,所述存储器页面地址会被用来指示数据存取的来源(对应写入指令)/目的地(对应读取指令)。由于对应快速非易失性存储器(NVMe)接口标准的指令叙述的每一个栏位的详细规范为现有技术,在此不再赘述。
以下开始会配合图1与后续的附图来详细说明本发明实施例所提供的对应快速非易失性存储器接口标准的数据传输指令的数据传输方法。
图3是根据本发明一实施例所示出的数据传输方法的流程图。在本实施例中,请同时参见图1与图3,在步骤S310中,处理器211从主机系统10接收传输指令,其中所述传输指令包括起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标,其中所述传输指令用以指示于可复写式非易失性存储器模块的至少一目标逻辑区块与主机存储器的至少一目标存储器页面之间传输目标数据。
具体来说,主机系统10会对存储装置20的存储控制器210下达例如是多个读取指令或写入指令的多个传输指令,以存取存储装置20中的数据。存储控制器210在接收(或读取)到主机系统10所下达的传输指令后,会对存储装置20中的可复写式非易失性存储器模块220进行数据的传输操作。
举例来说,在一实施例中,假设主机系统10的处理器110会在主机存储器120中划分暂存数据区及指令阵列区(Command Queue Area),并且存储控制器210还包括指令管理单元(Command management unit)。指令管理单元例如是具有指令缓冲器(CommandBuffer)、指令状态登录器(Command Status Register)与指令获取电路(CommandFetching Circuit)的电路元件。主机系统10会将所述读取指令或写入指令存储至主机存储器120中的命令阵列区,指令获取电路会从命令阵列区读取多个读取/写入指令,将所读取的指令存储至指令缓冲器。处理器211可根据固件或是软件的预定规则来选择要处理的指令。接着,处理器211会执行被选择的指令,并且根据所选择的指令(如,快速非易失性存储器输入输出指令)指示存储器接口控制电路213对可复写式非易失性存储器模块220来进行对应的数据传输操作。然而,本发明并不限于上述存储控制器211从主机系统10接收读取/写入指令的方式。
在本实施例中,存储控制器210也可预先读取(Prefetch)或是获取(Fetch)在主机存储器120的暂存数据区中的对应所述传输指令的数据/信息。例如,存储控制器210的清单管理电路214可获取对应所述传输指令并且存储在主机存储器120的清单(例如,实体区域页面指标清单,Physical Region Page pointer List,PRPL),并且将的存储在清单管理电路214中。
如上所述,所述传输指令例如是快速非易失性存储器输入输出读取指令,其包括起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标。其中,通过起始逻辑区块地址与逻辑区块数目可获得在可复写式非易失性存储器模块220中欲读取的(至少一个)逻辑区块(也称,目标逻辑区块)地址的范围;以及通过第一实体区域页面指标与第二实体区域页面指标,可获得至少一存储器页面地址(如,第一实体区域页面指标所指示的第一存储器页面地址与第二实体区域页面指标所指示的第二存储器页面地址)。此外,存储控制器210可通过第一存储器页面地址与第二存储器页面地址来存储从所述目标逻辑区块中读取的数据(也称,目标数据)。
又例如,所述传输指令例如是快速非易失性存储器输入输出写入指令,其包括起始逻辑区块地址、逻辑区块数目、第一实体区域页面指标与第二实体区域页面指标。其中,通过起始逻辑区块地址与逻辑区块数目可获得在可复写式非易失性存储器模块220中欲写入的(至少一个)逻辑区块(也称,目标逻辑区块)地址的范围;以及通过第一实体区域页面指标与第二实体区域页面指标,可获得至少一存储器页面地址(如,第一实体区域页面指标所指示的第一存储器页面地址与第二实体区域页面指标所指示的第二存储器页面地址)。此外,存储控制器210可通过第一存储器页面地址与第二存储器页面地址来读取对应写入指令的(欲被写入至目标逻辑区块的)数据(也称,目标数据),并且写入至对应的目标逻辑区块中。换句话说,存储控制器210可根据所述写入指令的指示,从主机存储器120的至少一目标存储器页面读取目标数据且将所读取的所述目标数据写入至可复写式非易失性存储器模块220的至少一目标逻辑区块。
在一实施例中,数据传输管理电路212会根据所述起始逻辑区块地址、所述逻辑区块数目、所述第一实体区域页面指标与所述第二实体区域页面指标来计算用以传输数据的信息,并且根据所计算出的信息来辨识出所述目标逻辑区块(范围)中的每一个目标逻辑区块所对应的主机存储器中的存储器页面(也称,目标存储器页面)的地址,以在后续步骤中,读取目标逻辑区块所存储的目标数据,且将目标数据写入至对应的目标存储器页面地址。
此外,在步骤S320中,数据传输管理电路212会判断第二实体区域页面指标的第二存储器页面地址是否为对应所述传输指令的至少一实体区域页面指标清单中的第一实体区域页面指标清单的第一清单起始地址。以下会通过图4与图5来说明相关的细节。
图4是根据本发明的一实施例所示出的存储器页面的示意图。请参照图4,假设主机存储器120划分多个存储器页面400(0)~400(N)。“N”例如是15的正整数。其中,如图所示,存储器页面400(0)、400(1)、…、400(N)分别具有起始地址SA400(0)、SA400(1)、…、SA400(N)以及结束地址EA400(0)、EA400(1)、…、EA400(N)。假设所述存储器页面是由16进制来进行定址,则起始地址SA400(0)为“0000”;起始地址SA400(1)为“1000”;以及起始地址SA400(N)为“F000”。结束地址EA400(0)为“0FFF”;结束地址EA400(1)为“1FFF”;以及结束地址SA400(N)为“FFFF”。在此例子中,存储器页面400(0)~400(N)的大小为4096比特组(Bytes)。
图5是根据本发明一实施例所示出的数据传输的示意图。
请参照图5,存储器页面400(0)~400(N)如上方所述,不再赘述于此。此外,可复写式非易失性存储器模块220被配置有逻辑区块500(0)~500(M),其中“M”为正整数,其大小是根据厂商自身的需求而设定。为了方便说明,在本实施例中,逻辑区块的大小为4096比特组。如图5左方表格所示,假设从主机系统10所接收的传输指令中的起始逻辑区块地址(SLBA)的值为“500(0)”、所述逻辑区块数目(NLB)的值为“2”、第一实体区域页面指标(PRP1)的值为“0000”以及第二实体区域页面指标(PRP2)的值为“1000”。为了简便说明,以下将传输指令视为读取指令来说明。
在本实施例中,数据传输管理电路212会根据逻辑区块500(0)~500(M)的每一个逻辑区块的大小(Logical Block Size,LBS)、存储器页面400(0)~400(N)的每一个存储器页面的大小(Memory Page Size,MPS)、起始逻辑区块地址、逻辑区块数目与第一实体区域页面指标(PRP1)判断是否需使用第二实体区域页面指标(PRP2)。
举例来说,根据上述图5的传输指令(读取指令),可知道目标逻辑区块(的范围)为逻辑区块500(0)~500(2),并且目标数据的大小为12288比特组(如,4096(Bytes)*3=12288(Bytes))。数据传输管理电路212会判定第一存储器页面地址(如,“0000”)所属的存储器页面(如,存储器页面400(0))的结束地址(如,“0FFF”),并且将通过结束地址与第一存储器页面地址之间的空间作为初始存储器页面空间。数据传输管理电路212会辨识初始存储器页面空间的大小为4096比特组(如,“0FFF”-“0000”+1=“1000”(16进制)=4096(10进制))。
接着,数据传输管理电路212会判断目标数据的大小是否大于所述初始存储器页面空间的大小。在此例子中,由于目标数据的大小大于初始存储器页面空间的大小(12288>4096)。因此,数据传输管理电路212会判定需使用第二实体区域页面指标(PRP2)。
接着,在判定需使用第二实体区域页面指标(PRP2)后,数据传输管理电路212会判断第二实体区域页面指标(PRP2)所指示的第二存储器页面地址的信息是否表示实体区域页面指标清单(PRP List)的清单起始地址。具体来说,若目标数据在写入初始存储器页面空间后的剩余的目标数据的大小大于一个存储器页面的大小,则需要使用多个存储器页面来存储剩余的目标数据。此时,第二实体区域页面指标(PRP2)的第二存储器页面地址会用来表示一个实体区域页面指标清单(PRP List)的清单起始地址。所述实体区域页面指标清单会具有许多条目。其中,所述条目中的每一个条目记录不同的存储器页面的起始地址。应注意的是,若所述差值不大于一个存储器页面的大小,数据传输管理电路212会判定第二实体区域页面指标的第二存储器页面地址不为实体区域页面指标清单(PRP List)的清单起始地址,而为一存储器页面的起始地址。
更详细来说,数据传输管理电路212会计算目标数据的大小减去初始存储器页面空间的大小的差值,并且判断此差值是否大于一个存储器页面的大小。所述差值也可表示目标数据在写满初始存储器空间后所剩余的(还未被存储至主机存储器的)目标数据。若所述差值大于一个存储器页面的大小,数据传输管理电路212会辨识第二实体区域页面指标的第二存储器页面地址为实体区域页面指标清单(PRP List)的清单起始地址(因为,需要实体区域页面指标清单来记录用以存储剩余的目标数据的两个以上的存储器页面的起始地址)。应注意的是,所述清单起始地址是表示所述实体区域页面指标清单的第一个条目(如,条目501(0))的起始地址,并且所述清单起始地址可不为存储器页面的起始地址。
在本实施例中,数据传输管理电路212会将所述差值除以每个存储器页面的大小(Memory Page Size,MPS)的商,再对的无条件进制所获得的值作为实体区域页面指标清单所记录的条目的数目。也就是说,数据传输管理电路212会判断(除了初始存储器页面空间外)还需要多少存储器页面来存储目标数据,并且对应地顺序记录(除了初始存储器页面空间外)所述要存储目标数据的所述存储器页面的起始地址至实体区域页面指标清单的条目中。每个条目的大小为适合的可记录地址信息的空间,本发明不限于此。
应注意的是,每个实体区域页面指标清单的最大容量为一个存储器页面的大小。也就是说,实体区域页面指标清单最多可记录的条目数量最大为一个存储器页面的大小除以每个条目的大小所获得的商。每个实体区域页面指标清单的大小为对应的清单起始地址至实体区域页面指标清单所属的存储器页面的结束地址之间的空间的大小。例如,实体区域页面指标清单501可具有条目501(0)~501(P),其中P为正整数。
在一实施例中,若(除了初始存储器页面空间外)所述要存储目标数据的所述存储器页面的数目超过了一个实体区域页面指标清单最多可记录的条目数量,则数据传输管理电路212会辨识到所述实体区域页面指标清单的最后一个条目会用来记录(接续的)另一个实体区域页面指标清单的起始地址。借此,数据传输管理电路212可通过读取所述另一个实体区域页面指标清单,以继续获得其他的存储器页面的起始地址。
在此例子中,读取指令指示要读取的目标逻辑区块为逻辑区块500(0)~500(2)。并且,根据第一实体区域页面指标所指示的第一存储器页面地址(如,“0000”),可得知逻辑区块500(0)所存储的目标数据将会从主机存储器120的存储器页面400(0)中的为“0000”的存储器页面地址开始写入。此外,除了欲写入至初始存储器页面空间的目标数据,对于其他部分的目标数据,可根据第二实体区域页面指标所指示的第二存储器页面地址(如,“1000”),开始从为“1000”的所述第二存储器页面地址(如图5所示的起始地址SA400(1))来读取实体区域页面指标清单501中的条目,以获得其他部分的目标数据所欲存储的存储器页面的地址。
在本实施例中,目标数据的大小为3个逻辑区块的大小(NLB为“2”),即12288比特组。除了写入至初始存储器页面的部分目标数据(大小为4096比特组,存储于逻辑区块500(0))的外,其他的目标数据(大小为8192比特组,存储于逻辑区块500(1)、500(2))会需要两个存储器页面来存储。基此,实体区域页面指标清单501的条目501(0)、501(1)中所记录的地址,是对应逻辑区块500(1)、500(2)的2个存储器页面的起始地址(如图5所示,条目501(0)、501(1)分别记录起始地址SA400(2)“2000”、起始地址SA400(3)“3000”)。
值得一提的是,再回到图3,在本实施例中,若在步骤S320中,数据传输管理电路212判定所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的第一实体区域页面指标清单的第一清单起始地址,在步骤S330中,清单管理电路214会根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且缓存所读取的所述部分。以下会配合图6来说明步骤S330的细节。
图6是根据本发明的一实施例所示出的缓存实体区域页面指标清单的流程图。请参照图6,步骤S330包括步骤S610、S620、S630、S640。在步骤S610中,清单控制器2141会根据传输指令来计算至少一实体区域页面指标清单的多个条目的数目。以下会配合图7来说明关于计算至少一实体区域页面指标清单的多个条目的数目的细节。
图7是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。请参照图7,为了简化说明,假设每个存储器页面可存储4个条目(如,每个条目的大小为存储器页面的四分的一)。假设从主机系统10所接收的传输指令中的起始逻辑区块地址(SLBA)的值为“500(0)”、所述逻辑区块数目(NLB)的值为“4”、第一实体区域页面指标(PRP1)的值为“0000”以及第二实体区域页面指标(PRP2)的值为“1000”。可知道,目标逻辑区块(的范围)为逻辑区块500(0)~500(4),目标数据的大小为12288比特组(如,4096(Bytes)*5=20480(Bytes)),初始存储器页面空间的大小为4096比特组。如上所述,会判定需使用第二实体区域页面指标,并且第二实体区域页面指标是表示实体区域页面指标清单701的存储器页面起始地址SA400(1)。
清单控制器2141会将所述目标数据大小减去初始存储器空间的差值除以每个存储器页面的大小(Memory Page Size,MPS)以获得的一个商值,再对此商值无条件进制所获得的值做为其他用以传输目标数据的目标存储器页面的数目。此数目即是实体区域页面指标清单中的多个条目的数目。此数目不会记入用来指向至其他实体区域页面指标清单的起始地址的条目的数目。也就是说,清单控制器2141会判断(除了初始存储器页面空间外)还需要多少存储器页面来存储目标数据,并且计算(除了初始存储器页面空间外)所述用来记录要传输目标数据的所述目标存储器页面的条目的数目。
例如,在图7中的例子,实体区域页面指标清单701会具有4个记录目标存储器页面的地址的条目701(0)~701(3)。换句话说,清单控制器2141会计算出实体区域页面指标清单701的条目的数目为“4”个。
接着,在步骤S620中,清单控制器2141会判断所述条目的所述数目是否大于最大条目数目。具体来说,厂商会设定一个预设的最大条目数目,其用以限制清单缓冲存储器2142中对应一个传输指令的缓冲区的大小,其中所述缓冲区被规划来存储实体区域页面指标清单的条目。在一实施例中,清单控制器2141会也可根据不同的条件动态地决定最大条目数目的数值。在图7的例子中,最大条目数目被设定为“4”。换句话说,对应图7的传输指令,清单缓冲存储器2142会被规划一个缓冲区,其最大可存储的条目的数目为“4”个。
若在步骤S620中,清单控制器2141判定所述条目的所述数目不大于最大条目数目,接续至步骤S630,清单控制器2141会规划第一缓冲区,指示清单获取电路2143根据所述传输指令从主机存储器120中读取所述至少一实体区域页面指标清单的全部条目,并且清单控制器2141缓存所读取的所述全部条目至所述第一缓冲区。
举例来说,在图7的例子中,实体区域页面指标清单701的条目的数目(如,“4”)不大于最大条目数目(如,“4”)。清单控制器2141会在清单缓冲存储器中规划一个缓冲区710(也称,第一缓冲区)来存储所有的实体区域页面指标清单701的条目701(0)~701(3)。清单控制器2141会指示第一缓冲区710的缓冲区起始地址SA_710以规划第一缓冲区710的起始位置,并且指示第一缓冲区710的缓冲区条目数目PLE#_710,以规划第一缓冲区710的大小。在图7的例子中,缓冲区条目数目PLE#_710的值为“4”,其表示第一缓冲区710被规划存储4个条目。
此外,清单控制器2141会指示清单获取电路2143根据所述传输指令从主机存储器120中读取实体区域页面指标清单701的全部条目701(0)~701(3)。接着,清单控制器2141会缓存(存储)所读取的全部条目701(0)~701(3)至第一缓冲区710中。
若在步骤S620中,清单控制器2141判定所述条目的所述数目大于最大条目数目,接续至步骤S640。清单控制器2141规划第二缓冲区与第三缓冲区,清单控制器2141指示清单获取电路2143根据所述传输指令从主机存储器120中读取所述至少一实体区域页面指标清单的第一部分与第二部分,清单控制器2141缓存所读取的所述第一部分至所述第二缓冲区,并且缓存所读取的所述第二部分至所述第三缓冲区。以下会配合图8、图9来做说明。
图8是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。请参照图8,为了简化说明,假设每个存储器页面可存储4个条目(如,每个条目的大小为存储器页面的四分的一)。假设从主机系统10所接收的传输指令中的起始逻辑区块地址(SLBA)的值为“500(0)”、所述逻辑区块数目(NLB)的值为“7”、第一实体区域页面指标(PRP1)的值为“0000”以及第二实体区域页面指标(PRP2)的值为“1000”。可知道,目标逻辑区块(的范围)为逻辑区块500(0)~500(7),目标数据的大小为12288比特组(如,4096(Bytes)*8=32768(Bytes)),初始存储器页面空间的大小为4096比特组。如上所述,会判定需使用第二实体区域页面指标,并且第二实体区域页面指标是表示实体区域页面指标清单702的存储器页面起始地址SA400(1)。应注意的是,本发明并不限于每个条目的大小。
清单控制器2141会判定(除了初始存储器页面空间外)还需要7个存储器页面来存储目标数据,并且计算(除了初始存储器页面空间外)所述用来记录要传输目标数据的所述目标存储器页面的起始地址的条目为7个。
例如,在图7中的例子,实体区域页面指标清单702会具有3个记录目标存储器页面的地址的条目702(0)~702(2),并且具有1个记录实体区域页面指标清单703的起始地址的条目702(3)。实体区域页面指标清单703会具有4个记录目标存储器页面的地址的条目703(0)~703(3)。
简单来说,清单控制器2141会计算实体区域页面指标清单702、703中所存储的条目的数目(也称,第一数目),再计算实体区域页面指标清单的数目(也称,第二数目)。根据实体区域页面指标清单的数目,清单控制器2141会辨识出用来记录实体区域页面指标清单的起始地址的条目的数目(也称,第三数目)。在此例子中,清单控制器2141会将第一数目减去第三数目来计算出实体区域页面指标清单702、703的条目的数目为“7”个(如,第一数目-(第二数目-1)=第一数目-第三数目=8-1=7)。
接着,清单控制器2141会在清单缓冲存储器中规划两个缓冲区,分别为第二缓冲区711与第三缓冲区712来存储条目。例如,清单控制器2141会指示第二缓冲区711的缓冲区起始地址SA_711以规划第二缓冲区711的起始位置,并且指示第二缓冲区711的缓冲区条目数目PLE#_711,以规划第二缓冲区711的大小。相似地,清单控制器2141会指示第三缓冲区712的缓冲区起始地址SA_712以规划第三缓冲区712的起始位置,并且指示第三缓冲区712的缓冲区条目数目PLE#_712,以规划第三缓冲区712的大小。
值得一提的是,在本实施例中,第二缓冲区711的缓冲区条目数目PLE#_711与第三缓冲区712的缓冲区条目数目PLE#_712的总和等于最大条目数目(如,“4”)。此外,第二缓冲区711的缓冲区条目数目PLE#_711(如,“2”)等于第三缓冲区712的缓冲区条目数目PLE#_712(如,“2”)。应注意的是,在其他实施例中,清单控制器2141也可对应一个传输指令在清单缓冲存储器2142中规划多于2个的多个缓冲区。
此外,清单控制器2141会指示清单获取电路2143根据所述传输指令从主机存储器120中读取实体区域页面指标清单702、703的第一部分与第二部分。具体来说,请参照图10右方的表格,清单控制器2141会将实体区域页面指标清单702、703中用来记录目标存储器页面的条目702(2)~702(2)与条目703(0)~703(3)依序划分为多个部分。在本实施例中,每一个部分的条目的总数目会对应第二缓冲区或第三缓冲区的缓冲区条目数目。举例来说,第二缓冲区711与第三缓冲区712的缓冲区条目数目为“2”。基此,实体区域页面指标清单702、703的每个部分的条目的数量不会超过2个。在此例子中,清单控制器2141会将实体区域页面指标清单702、703中用来记录目标存储器页面的条目702(2)~702(2)与条目703(0)~703(3)划分为第一~第四部分。其中,第一部分为条目702(0)、702(1);第二部分为条目702(2)、703(0);第三部分为条目703(1)、703(2);第四部分为条目703(3)。
接着,清单控制器2141会指示清单获取电路2143根据所述传输指令从主机存储器120中读取实体区域页面指标清单702、703的第一部分(如,条目702(0)、702(1))与第二部分(如,条目702(2)、703(0))。具体来说,清单获取电路2143会根据所述传输指令定位到第一部分(如,条目702(0)、702(1))与第二部分(如,条目702(2)、703(0))的存储器页面地址,以读取第一部分与第二部分中所记录的内容(如,对应的存储器页面的起始地址)。
在完成读取第一部分与第二部分之后,清单控制器2141会将所读取的所述第一部分存储(缓存,Buffer)至清单缓冲存储器2142的所述第二缓冲区,并且将所读取的所述第二部分(缓存,Buffer)至清单缓冲存储器2142的所述第三缓冲区。
再回到图3,完成缓存实体区域页面指标清单的步骤(S330)后,接续至步骤S340,数据传输管理电路212会根据所缓存的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。具体来说,数据传输管理电路212会根据存储在清单缓冲存储器2142中的条目来判断对应的目标逻辑区块,以进行所述条目所对应的目标存储器页面与目标逻辑区块之间的目标数据的传输操作(如,写入/读取操作)。应注意的是,若对应一传输指令的实体区域页面指标清单的全部条目被一起缓存至清单缓冲存储器中(如图7的例子),数据传输管理电路212会根据已缓存至清单缓冲存储器2142的所述全部条目来进行对应的数据传输操作。
在本实施例中,清单控制器2141可以在清单缓冲存储器2142中规划给不同的传输指令的缓冲区。清单控制器2141可通过最大条目数目来设定每个缓冲区的大小。每个缓冲区的大小以及其对应的最大条目数目可相同或是不同。最大条目数目为正整数。最大条目数目较佳为偶数。
图9是根据本发明的另一实施例所示出的缓存实体区域页面指标清单的示意图。图9的硬件相同于图8,不赘述于此。以下仅说明图9与图8的不同的处。请参照图9,假设在图9的例子中,存储控制器210又从主机系统10接收了另一个传输指令,并且此另一传输指令的第二实体区域页面指标数值为“3000”,其指示了另个实体区域页面指标清单704的起始地址。实体区域页面指标清单704具有3个条目704(0)~704(2)。由于实体区域页面指标清单704的3个条目704(0)~704(2)的数目(如,3)小于最大条目数目,清单管理电路214会将条目704(0)~704(2)缓存至第四缓冲区,其中第四缓冲区的缓冲区条目数目对应地被规划为“3”。详细的缓存实体区域页面指标清单的条目的操作相似于上述实施例,不赘述于此。
请再回到图3,在本实施例中,若在步骤S320中,数据传输管理电路212判定所述第二存储器页面地址不为对应所述传输指令的至少一实体区域页面指标清单中的第一实体区域页面指标清单的第一清单起始地址,在步骤S350中,数据传输管理电路212会直接根据所述传输指令传输目标数据。具体来说,如上所述,数据传输管理电路212会直接根据所述传输指令辨识目标存储器页面的地址与对应的逻辑区块,借此传输目标数据。
在本实施例中,当数据传输管理电路212根据缓冲区的条目完成了对应的数据传输操作后,会清空缓冲区,以使缓冲区可以存储实体区域指标清单的其他条目。以下会配合图10~图13来说明相关的细节。
图10是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。图11是根据本发明的一实施例所示出的缓存实体区域页面指标清单的示意图。图12是根据本发明的一实施例所示出的对应读取指令的清单获取操作与数据传输操作的示意图。
请同时参考图10与图12,假设传输指令为读取指令。对应所述读取指令的实体区域页面指标清单具有8个条目702(0)~702(3)、703(0)~703(3),其中实体区域页面指标清单702的条目702(3)用以指示另个实体区域页面指标清单703的起始地址。实体区域页面指标清单702、703中用来记录目标存储器页面的条目702(2)~702(2)与条目703(0)~703(3)被划分为第一~第四部分。其中,第一部分为条目702(0)、702(1);第二部分为条目702(2)、703(0);第三部分为条目703(1)、703(2);第四部分为条目703(3)。条目702(2)~702(2)与条目703(0)~703(3)所对应的存储器页面地址与目标存储器页面如图10右方表格所示。
请参照图12,清单获取操作用以表示如同图3的步骤S330的整体操作。即,根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分(或全部),并且缓存所读取的所述部分(或全部)。清单获取操作与数据传输操作的时间先后顺序如图12所示出,其时间先后由左至右排列(如下方的时间坐标轴所示)。
一开始,在清单获取操作PLF_711_1中,清单控制器2141会规划第二缓冲区711,指示清单获取电路2143从主机存储器120中读取第一部分的条目702(0)、702(1),并且缓存所读取的条目702(0)、702(1)至清单缓冲存储器2142中的第二缓冲区711(如,图10的箭头PLF_711_1所示);在清单获取操作PLF_712_2中,清单控制器2141会规划第三缓冲区712,指示清单获取电路2143从主机存储器120中读取第二部分的条目702(2)、703(0),并且缓存所读取的条目702(2)、703(0)至清单缓冲存储器2142中的第三缓冲区712(如,图10的箭头PLF_712_2所示)。
由于NVMe协定可以进行全双工的双向传输模式,即,可以同时进行数据读取操作与数据写入操作。在执行清单获取操作PLF_712_2的同时,数据传输管理电路212可以执行第一数据传输(读取)操作DT_711_1。更详细来说,在传输指令是读取指令的情况下,由于清单获取操作PLF_712_2是从主机存储器120读取数据,并且第一数据传输(读取)操作DT_711_1是写入数据至主机存储器120。因此,两个操作可以同时进行。其中,第一数据传输操作DT_711_1是数据传输管理电路212根据第二缓冲区中的条目702(0)、702(1)来执行在条目702(0)、702(1)所记录的目标存储器页面与对应条目702(0)、702(1)的目标逻辑区块之间的数据传输操作。即,在传输指令是读取指令的情况下,数据传输管理电路212根据第二缓冲区中的条目702(0)、702(1)来执行将对应条目702(0)、702(1)的目标逻辑区块中的数据读取至条目702(0)、702(1)所记录的目标存储器页面。
请参照图11、图12,在完成第一数据传输(读取)操作DT_711_1后,清单管理电路214会执行清单获取操作PLF_711_3。
详细来说,清单控制器2141会清空清单缓冲存储器2142中的第二缓冲区711。接着,清单控制器2141会从实体区域页面指标清单702中选择未被缓存的一部分做为第三部分(如,图10所示的第三部分的条目703(1)、703(2)),并且指示清单获取电路2143从主机存储器120中读取第三部分。清单控制器2141会缓存所读取的第三部分至第二缓冲区711(如,图11的箭头PLF_711_3所示)。尔后,数据传输管理电路212会根据第二缓冲区711中所缓存的第三部分的条目703(1)、703(2)来进行第三数据传输操作DT_711_3。
此外,在完成第一数据传输(读取)操作DT_711_1后,数据传输管理电路212会根据第三缓冲区中的条目702(2)、703(0)来执行第二数据传输(读取)操作DT_712_2。细节相似于上述的第一数据传输操作的说明,不再赘述于此。应注意的是,如上所述,在传输指令是读取指令的情况下,清单获取操作PLF_711_3与第二数据传输操作DT_712_2可以同时进行。
接着,请参照图11、图12,在第二数据传输操作DT_712_2完成后,相似地,清单管理电路214会执行清单获取操作PLF_712_4。
详细来说,清单控制器2141会清空清单缓冲存储器2142中的第三缓冲区712。接着,清单控制器2141会从实体区域页面指标清单702中选择第四部分(如,图10所示的第四部分的条目703(3)),并且指示清单获取电路2143从主机存储器120中读取第四部分。清单控制器2141会缓存所读取的第四部分至第三缓冲区712(如,图11的箭头PLF_712_4所示)。尔后,数据传输管理电路212会根据第三缓冲区712中所缓存的第四部分的条目703(3)来进行第四数据传输操作DT_712_4。
此外,相似地,在完成第二数据传输(读取)操作DT_712_2后,数据传输管理电路212会根据第二缓冲区中的条目703(1)、703(2)来执行第三数据传输(读取)操作DT_711_3。细节相似于上述的第一数据传输操作的说明,不再赘述于此。应注意的是,如上所述,在传输指令是读取指令的情况下,清单获取操作PLF_712_4与第三数据传输操作DT_711_3可以同时进行。
在第三数据传输操作DT_711_3完成后,清单管理电路214会判断对应传输指令的实体区域页面指标清单的多个部分是否都已被缓存。若还有没有被缓存的部分,清单管理电路214会选择一个还没有被缓存的部分来进行缓存操作。在图10与图12的例子中,清单控制器2141会判定实体区域页面指标清单的所有部分都已被缓存过,清单控制器2141会清空第二缓冲区711。
相似地,在第四数据传输操作DT_712_4完成后,清单控制器2141会判定实体区域页面指标清单的所有部分都已被缓存过,清单控制器2141会清空第三缓冲区712。
从图12的例子中,本实施例所提供的数据传输方法,可利用NVMe的全双工特性来缓存实体区域页面指标清单,以让数据传输管理电路212可以不需要从主机存储器120中读取实体区域页面指标清单。如此一来,数据传输管理电路212可直接从清单缓冲存储器2142中读取实体区域页面指标清单,进而减少了数据传输接口电路130与连接接口电路230之间的延迟。
图13是根据本发明的一实施例所示出的对应写入指令的清单获取操作与数据传输操作的示意图。
请参照图13,在图13中,清单获取操作与数据传输操作的细节相似于图12。然而,图13与图12不同的处在于,图13的传输指令是写入指令。基此,清单获取操作与数据传输操作不可以同时进行。不同的清单获取操作与数据传输操作都必须等待前一个操作。
请参照图13,举例来说,清单管理电路214执行完清单获取指令PLF_711_1、PLF_712_2以缓存第一、第二部分的条目至第二、第三缓冲区后,数据传输管理电路212会根据所缓存的条目来执行第一数据传输操作DT_711_1。完成第一数据传输(写入)操作DT_711_1后,清单管理电路214才可执行清单获取操作PLF_711_3以缓冲第三部分的条目至第二缓冲区。接着,清单管理电路214执行完清单获取指令PLF_711_3后,数据传输管理电路212才可根据所缓存的第二部分的条目来执行第二数据传输(写入)操作DT_712_2。以此类推,直到所有部分的条目都缓存完毕并且对应的数据也传输(写入)完毕,最后清除第二缓冲区711与第三缓冲区712。
虽然在图13的例子中,对应写入指令的清单获取操作与数据传输操作并不能如同图12那样利用NVMe的全双工特性,进而达到大幅减少数据传输接口电路130与连接接口电路230之间的延迟的效果。但是,从清单缓冲存储器2142读取实体区域页面指标清单的条目依然可以改善数据传输接口电路130与连接接口电路230之间的延迟。
综上所述,本发明的实施例所提供的数据传输方法以及使用此方法的存储控制器与清单管理电路,可利用硬件来缓存对应传输指令的实体区域页面指标清单,以让数据传操操作可通过所缓存的实体区域页面指标清单来进行,进而减少了存储装置与主机系统之间的延迟,增加了数据传输的速度,并且增进了存储装置与其所进行的数据传输操作的工作效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (21)
1.一种数据传输方法,适用于可复写式非易失性存储器模块与一主机系统的一主机存储器之间的一数据传输操作,其中所述可复写式非易失性存储器模块被配置多个逻辑区块,并且所述主机存储器具有多个存储器页面,所述方法包括:
从所述主机系统接收一传输指令,其中所述传输指令包括一起始逻辑区块地址、一逻辑区块数目、一第一实体区域页面指标与一第二实体区域页面指标,其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输一目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的一第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的一第二存储器页面地址;
若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的一第一实体区域页面指标清单的一第一清单起始地址,根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分;以及
根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
2.根据权利要求1所述的数据传输方法,还包括:
根据所述多个逻辑区块的每一个逻辑区块的大小与所述逻辑区块数目计算所述目标数据的大小;
根据所述多个存储器页面的每一个存储器页面的大小与所述第一实体区域页面指标判断所述第一存储器页面地址所属的存储器页面的一结束地址,并且将通过所述结束地址与所述第一存储器页面地址之间的空间作为一初始存储器页面空间;
计算所述目标数据的所述大小减去所述初始存储器页面空间的所述大小的一差值;
若所述差值大于所述多个存储器页面的每一个存储器页面的所述大小,判定所述第二实体区域页面指标的所述第二存储器页面地址为所述第一实体区域页面指标清单的所述第一清单起始地址。
3.根据权利要求1所述的数据传输方法,其中对应所述传输指令的所述至少一实体区域页面指标清单的每一个实体区域页面指标清单存储多个条目,其中所述多个条目中的每一个条目分别记录不同的存储器页面地址,其中所述多个条目依序被划分为多个部分,其中上述根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的所述部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分的步骤包括:
根据所述传输指令来计算所述至少一实体区域页面指标清单的所述多个条目的数目;
判断所述多个条目的所述数目是否大于一最大条目数目;
若所述多个条目的所述数目不大于所述最大条目数目,规划一第一缓冲区,根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的全部条目,并且缓存所读取的所述全部条目至所述第一缓冲区;以及
若所述多个条目的所述数目大于所述最大条目数目,规划一第二缓冲区与一第三缓冲区,根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一第一部分与一第二部分,缓存所读取的所述第一部分至所述第二缓冲区,并且缓存所读取的所述第二部分至所述第三缓冲区。
4.根据权利要求3所述的数据传输方法,
其中上述若所述多个条目的所述数目不大于所述最大条目数目,规划所述第一缓冲区的步骤包括:在一清单缓冲存储器中规划一个存储器空间作为对应所述传输指令的所述第一缓冲区,其中所述第一缓冲区的大小等于所述至少一实体区域页面指标清单的所述全部条目的大小,
其中上述若所述多个条目的所述数目大于所述最大条目数目,规划所述第二缓冲区与所述第三缓冲区的步骤包括:在所述清单缓冲存储器中规划两个存储器空间分别作为对应所述传输指令的所述第二缓冲区与所述第三缓冲区,其中所述第二缓冲区或所述第三缓冲区的大小皆小于或等于一预定大小。
5.根据权利要求4所述的数据传输方法,其中所述预定大小是数目为一半的所述最大条目数目的多个条目的总大小,其中所述第一部分中或所述第二部分中的多个条目的数目小于或等于所述最大条目数目的一半。
6.根据权利要求3所述的数据传输方法,其中上述根据所缓存的所述实体区域页面指标清单的所述部分进行所述数据传输操作的步骤包括:
若所述多个条目的所述数目不大于所述最大条目数目,根据所述第一缓冲区中所缓存的所述全部条目来进行所述数据传输操作;以及
若所述多个条目的所述数目大于所述最大条目数目,根据所述第二缓冲区中所缓存的所述第一部分的多个条目来进行一第一数据传输操作,并且根据所述第三缓冲区中所缓存的所述第二部分的多个条目来进行一第二数据传输操作,其中所述第一部分的所述多个条目中的每一个条目分别记录不同的一第一存储器页面地址,并且所述第二部分的所述多个条目中的每一个条目分别记录不同的一第二存储器页面地址,
其中所述第一数据传输操作是根据所述传输指令在所述主机存储器的所述多个第一存储器页面地址与所述至少一目标逻辑区块中对应所述多个第一存储器页面地址的多个第一目标逻辑区块之间传输对应的数据,并且所述第二数据传输操作是根据所述传输指令在所述主机存储器的所述多个第二存储器页面地址与所述至少一目标逻辑区块中对应所述多个第二存储器页面地址的多个第二目标逻辑区块之间传输对应的数据。
7.根据权利要求6所述的数据传输方法,还包括:
在完成所述第一数据传输操作后,清空所述第二缓冲区,从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第三部分,并且从所述主机存储器中读取所述第三部分,缓存所读取的所述第三部分至所述第二缓冲区,并且根据所述第二缓冲区中所缓存的所述第三部分的多个条目来进行一第三数据传输操作;以及
在完成所述第二数据传输操作后,清空所述第三缓冲区,从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第四部分,并且从所述主机存储器中读取所述第四部分,缓存所读取的所述第四部分至所述第三缓冲区,并且根据所述第三缓冲区中所缓存的所述第四部分的多个条目来进行一第四数据传输操作。
8.一种存储控制器,用于控制配置有一可复写式非易失性存储器模块的一存储装置,所述存储控制器包括:
一连接接口电路,用以电性连接至一主机系统,其中所述主机系统配置有一主机存储器,其中所述主机存储器具有多个存储器页面;
一存储器接口控制电路,用以电性连接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块被配置多个逻辑区块;
一处理器,电性连接至所述连接接口电路单元及所述存储器接口控制电路;
一数据传输管理电路,电性连接至所述处理器、所述连接接口电路单元及所述存储器接口控制电路;
一清单管理电路,电性连接至所述数据传输管理电路、所述处理器、所述连接接口电路单元及所述存储器接口控制电路,
其中所述处理器用以从所述主机系统接收一传输指令,其中所述传输指令包括一起始逻辑区块地址、一逻辑区块数目、一第一实体区域页面指标与一第二实体区域页面指标,其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输一目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的一第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的一第二存储器页面地址,
其中若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的一第一实体区域页面指标清单的一第一清单起始地址,所述清单管理电路用以根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分,
其中所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
9.根据权利要求8所述的存储控制器,
其中所述数据传输管理电路根据所述多个逻辑区块的每一个逻辑区块的大小与所述逻辑区块数目计算所述目标数据的大小,
其中所述数据传输管理电路根据所述多个存储器页面的每一个存储器页面的大小与所述第一实体区域页面指标判断所述第一存储器页面地址所属的存储器页面的一结束地址,并且将通过所述结束地址与所述第一存储器页面地址之间的空间作为一初始存储器页面空间,
其中所述数据传输管理电路计算所述目标数据的所述大小减去所述初始存储器页面空间的所述大小的一差值,
其中若所述差值大于所述多个存储器页面的每一个存储器页面的所述大小,所述数据传输管理电路判定所述第二实体区域页面指标的所述第二存储器页面地址为所述第一实体区域页面指标清单的所述第一清单起始地址。
10.根据权利要求8所述的存储控制器,其中对应所述传输指令的所述至少一实体区域页面指标清单的每一个实体区域页面指标清单存储多个条目,其中所述多个条目中的每一个条目分别记录不同的存储器页面地址,其中所述多个条目依序被划分为多个部分,其中在上述所述清单管理电路用以根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的所述部分,并且缓存所读取的所述至少一实体区域页面指标清单的所述部分的运作中,
所述清单管理电路根据所述传输指令来计算所述至少一实体区域页面指标清单的所述多个条目的数目,
其中所述清单管理电路判断所述多个条目的所述数目是否大于一最大条目数目,
其中若所述多个条目的所述数目不大于所述最大条目数目,所述清单管理电路规划一第一缓冲区,并且根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的全部条目,其中所述清单管理电路缓存所读取的所述全部条目至所述第一缓冲区,
其中若所述多个条目的所述数目大于所述最大条目数目,所述清单管理电路规划一第二缓冲区与一第三缓冲区,并且根据所述传输指令从所述主机存储器中读取所述至少一实体区域页面指标清单的一第一部分与一第二部分,其中所述清单管理电路缓存所读取的所述第一部分至所述第二缓冲区,并且缓存所读取的所述第二部分至所述第三缓冲区。
11.根据权利要求10所述的存储控制器,其中在上述若所述多个条目的所述数目不大于所述最大条目数目,所述清单管理电路规划所述第一缓冲区的运作中,所述清单管理电路在一清单缓冲存储器中规划一个存储器空间作为对应所述传输指令的所述第一缓冲区,其中所述第一缓冲区的大小等于所述至少一实体区域页面指标清单的所述全部条目的大小,
其中在上述若所述多个条目的所述数目大于所述最大条目数目,所述清单管理电路规划所述第二缓冲区与所述第三缓冲区的运作中,所述清单管理电路在所述清单缓冲存储器中规划两个存储器空间分别作为对应所述传输指令的所述第二缓冲区与所述第三缓冲区,其中所述第二缓冲区或所述第三缓冲区的大小皆小于或等于一预定大小。
12.根据权利要求11所述的存储控制器,其中所述预定大小是数目为一半的所述最大条目数目的多个条目的总大小,其中所述第一部分中或所述第二部分中的多个条目的数目小于或等于所述最大条目数目的一半。
13.根据权利要求10所述的存储控制器,其中在上述所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分进行所述数据传输操作的运作中,
若所述多个条目的所述数目不大于所述最大条目数目,所述数据传输管理电路根据所述第一缓冲区中所缓存的所述全部条目来进行所述数据传输操作,
其中若所述多个条目的所述数目大于所述最大条目数目,所述数据传输管理电路根据所述第二缓冲区中所缓存的所述第一部分的多个条目来进行一第一数据传输操作,并且根据所述第三缓冲区中所缓存的所述第二部分的多个条目来进行一第二数据传输操作,其中所述第一部分的所述多个条目中的每一个条目分别记录不同的一第一存储器页面地址,并且所述第二部分的所述多个条目中的每一个条目分别记录不同的一第二存储器页面地址,
其中所述第一数据传输操作是根据所述传输指令在所述主机存储器的所述多个第一存储器页面地址与所述至少一目标逻辑区块中对应所述多个第一存储器页面地址的多个第一目标逻辑区块之间传输对应的数据,并且所述第二数据传输操作是根据所述传输指令在所述主机存储器的所述多个第二存储器页面地址与所述至少一目标逻辑区块中对应所述多个第二存储器页面地址的多个第二目标逻辑区块之间传输对应的数据。
14.根据权利要求13所述的存储控制器,
其中在完成所述第一数据传输操作后,所述清单管理电路清空所述第二缓冲区,从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第三部分,并且从所述主机存储器中读取所述第三部分,其中所述清单管理电路缓存所读取的所述第三部分至所述第二缓冲区,并且所述数据传输管理电路根据所述第二缓冲区中所缓存的所述第三部分的多个条目来进行一第三数据传输操作,
其中在完成所述第二数据传输操作后,所述清单管理电路清空所述第三缓冲区,从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第四部分,并且从所述主机存储器中读取所述第四部分,其中所述清单管理电路缓存所读取的所述第四部分至所述第三缓冲区,并且所述数据传输管理电路根据所述第三缓冲区中所缓存的所述第四部分的多个条目来进行一第四数据传输操作。
15.一种清单管理电路,被配置于一存储装置的一存储控制器中,其中所述存储控制器还包括:一连接接口电路、一存储器接口控制电路、一数据传输管理电路与一处理器,
其中所述连接接口电路用以电性连接至一主机系统,其中所述主机系统配置有一主机存储器,其中所述主机存储器具有多个存储器页面,其中所述存储器接口控制电路用以电性连接至所述存储装置的可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块被配置多个逻辑区块,其中所述处理器电性连接至所述连接接口电路单元及所述存储器接口控制电路,其中所述数据传输管理电路,电性连接至所述处理器、所述连接接口电路单元及所述存储器接口控制电路,
其中所述清单管理电路电性连接至所述数据传输管理电路、所述处理器、所述连接接口电路单元及所述存储器接口控制电路,所述清单管理电路包括:
一清单控制器;
一清单缓冲存储器,电性连接至所述清单控制器;以及
一清单获取电路,电性连接至所述清单控制器与所述清单缓冲存储器,
其中所述处理器用以从所述主机系统接收一传输指令,其中所述传输指令包括一起始逻辑区块地址、一逻辑区块数目、一第一实体区域页面指标与一第二实体区域页面指标,其中所述传输指令用以指示于所述可复写式非易失性存储器模块的至少一目标逻辑区块与所述主机存储器的至少一目标存储器页面之间传输一目标数据,其中所述起始逻辑区块地址用以指示所述至少一目标逻辑区块中排序第一个的目标逻辑区块的地址,所述逻辑区块数目用以指示所述至少一目标逻辑区块中用以存储所述目标数据的逻辑区块的数目,所述第一实体区域页面指标用以指示所述主机存储器的一第一存储器页面地址,并且所述第二实体区域页面指标用以指示所述主机存储器的一第二存储器页面地址,
其中若所述第二存储器页面地址为对应所述传输指令的至少一实体区域页面指标清单中的一第一实体区域页面指标清单的一第一清单起始地址,所述清单控制器用以根据所述传输指令指示所述清单获取电路从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且所述清单控制器还用以缓存所读取的所述至少一实体区域页面指标清单的所述部分至所述清单缓冲存储器,
其中所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分传输对应的数据,其中所传输的所述数据为所述目标数据的一部分。
16.根据权利要求15所述的清单管理电路,
其中所述数据传输管理电路根据所述多个逻辑区块的每一个逻辑区块的大小与所述逻辑区块数目计算所述目标数据的大小,
其中所述数据传输管理电路根据所述多个存储器页面的每一个存储器页面的大小与所述第一实体区域页面指标判断所述第一存储器页面地址所属的存储器页面的一结束地址,并且将通过所述结束地址与所述第一存储器页面地址之间的空间作为一初始存储器页面空间,
其中所述数据传输管理电路计算所述目标数据的所述大小减去所述初始存储器页面空间的所述大小的一差值,
其中若所述差值大于所述多个存储器页面的每一个存储器页面的所述大小,所述数据传输管理电路判定所述第二实体区域页面指标的所述第二存储器页面地址为所述第一实体区域页面指标清单的所述第一清单起始地址。
17.根据权利要求15所述的清单管理电路,其中对应所述传输指令的所述至少一实体区域页面指标清单的每一个实体区域页面指标清单存储多个条目,其中所述多个条目中的每一个条目分别记录不同的存储器页面地址,其中所述多个条目依序被划分为多个部分,其中在上述所述清单控制器用以根据所述传输指令指示所述清单获取电路从所述主机存储器中读取所述至少一实体区域页面指标清单的一部分,并且所述清单控制器还用以缓存所读取的所述至少一实体区域页面指标清单的所述部分至所述清单缓冲存储器的运作中,
所述清单控制器根据所述传输指令来计算所述至少一实体区域页面指标清单的所述多个条目的数目,
其中所述清单控制器判断所述多个条目的所述数目是否大于一最大条目数目,
其中若所述多个条目的所述数目不大于所述最大条目数目,所述清单控制器在所述清单缓冲存储器中规划一第一缓冲区,并且指示所述清单获取电路从所述主机存储器中读取所述至少一实体区域页面指标清单的全部条目,其中所述清单控制器缓存所读取的所述至少一实体区域页面指标清单的所述全部条目至所述第一缓冲区,
其中若所述多个条目的所述数目大于所述最大条目数目,所述清单管理电路在所述清单缓冲存储器中规划一第二缓冲区与一第三缓冲区,并且指示所述清单获取电路从所述主机存储器中读取所述至少一实体区域页面指标清单的一第一部分与一第二部分,其中所述清单控制器缓存所读取的所述第一部分至所述第二缓冲区,并且缓存所读取的所述第二部分至所述第三缓冲区。
18.根据权利要求17所述的清单管理电路,
其中在上述若所述多个条目的所述数目不大于所述最大条目数目,所述清单控制器在所述清单缓冲存储器中规划所述第一缓冲区的运作中,所述清单管理电路在所述清单缓冲存储器中规划一个存储器空间作为对应所述传输指令的所述第一缓冲区,其中所述第一缓冲区的大小等于所述至少一实体区域页面指标清单的所述全部条目的大小,
其中在上述若所述多个条目的所述数目大于所述最大条目数目,所述清单控制器在所述清单缓冲存储器中规划所述第二缓冲区与所述第三缓冲区的运作中,所述清单控制器在所述清单缓冲存储器中规划两个存储器空间分别作为对应所述传输指令的所述第二缓冲区与所述第三缓冲区,其中所述第二缓冲区或所述第三缓冲区的大小皆小于或等于一预定大小。
19.根据权利要求18所述的清单管理电路,其中所述预定大小是数目为一半的所述最大条目数目的多个条目的总大小,其中所述第一部分中或所述第二部分中的多个条目的数目小于或等于所述最大条目数目的一半。
20.根据权利要求17所述的清单管理电路,其中在上述所述数据传输管理电路用以根据所缓存的所述实体区域页面指标清单的所述部分进行所述数据传输操作的运作中,
若所述多个条目的所述数目不大于所述最大条目数目,所述数据传输管理电路根据所述第一缓冲区中所缓存的所述全部条目来进行所述数据传输操作,
其中若所述多个条目的所述数目大于所述最大条目数目,所述数据传输管理电路根据所述第二缓冲区中所缓存的所述第一部分的多个条目来进行一第一数据传输操作,并且根据所述第三缓冲区中所缓存的所述第二部分的多个条目来进行一第二数据传输操作,其中所述第一部分的所述多个条目中的每一个条目分别记录不同的一第一存储器页面地址,并且所述第二部分的所述多个条目中的每一个条目分别记录不同的一第二存储器页面地址,
其中所述第一数据传输操作是根据所述传输指令在所述主机存储器的所述多个第一存储器页面地址与所述至少一目标逻辑区块中对应所述多个第一存储器页面地址的多个第一目标逻辑区块之间传输对应的数据,并且所述第二数据传输操作是根据所述传输指令在所述主机存储器的所述多个第二存储器页面地址与所述至少一目标逻辑区块中对应所述多个第二存储器页面地址的多个第二目标逻辑区块之间传输对应的数据。
21.根据权利要求20所述的清单管理电路,
其中在完成所述第一数据传输操作后,所述清单控制器清空所述清单缓冲存储器中的所述第二缓冲区,所述清单控制器从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第三部分,并且指示所述清单获取电路从所述主机存储器中读取所述第三部分,其中所述清单控制器缓存所读取的所述第三部分至所述第二缓冲区,并且所述数据传输管理电路根据所述第二缓冲区中所缓存的所述第三部分的多个条目来进行一第三数据传输操作,
其中在完成所述第二数据传输操作后,所述清单控制器清空所述清单缓冲存储器中的所述第三缓冲区,所述清单控制器从所述至少一实体区域页面指标清单的所述多个部分中选择未被缓存的一部分做为一第四部分,并且指示所述清单获取电路从所述主机存储器中读取所述第四部分,其中所述清单控制器缓存所读取的所述第四部分至所述第三缓冲区,并且所述数据传输管理电路根据所述第三缓冲区中所缓存的所述第四部分的多个条目来进行一第四数据传输操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610728853.6A CN107783916B (zh) | 2016-08-26 | 2016-08-26 | 数据传输方法、存储控制器与清单管理电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610728853.6A CN107783916B (zh) | 2016-08-26 | 2016-08-26 | 数据传输方法、存储控制器与清单管理电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783916A CN107783916A (zh) | 2018-03-09 |
CN107783916B true CN107783916B (zh) | 2020-01-31 |
Family
ID=61439958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610728853.6A Active CN107783916B (zh) | 2016-08-26 | 2016-08-26 | 数据传输方法、存储控制器与清单管理电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107783916B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908717B (zh) * | 2018-09-14 | 2023-11-24 | 深圳大心电子科技有限公司 | 指令处理方法及使用所述方法的存储控制器 |
CN111045961B (zh) * | 2018-10-12 | 2023-10-20 | 深圳大心电子科技有限公司 | 数据处理方法及使用所述方法的存储控制器 |
CN111324294B (zh) * | 2018-12-17 | 2023-11-07 | 地平线(上海)人工智能技术有限公司 | 存取张量数据的方法和装置 |
CN111831213B (zh) * | 2019-04-19 | 2024-07-16 | 北京京东乾石科技有限公司 | 数据记录方法和装置 |
CN112231241B (zh) * | 2019-07-15 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | 一种数据读取方法和装置、计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101740100A (zh) * | 2008-11-27 | 2010-06-16 | 威刚科技股份有限公司 | 具平均抹除机制的闪存装置及其控制方法 |
CN103577344A (zh) * | 2012-07-20 | 2014-02-12 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN105068953A (zh) * | 2014-05-07 | 2015-11-18 | Hgst荷兰公司 | 用于对等高速外围组件互联存储传输的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
-
2016
- 2016-08-26 CN CN201610728853.6A patent/CN107783916B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101740100A (zh) * | 2008-11-27 | 2010-06-16 | 威刚科技股份有限公司 | 具平均抹除机制的闪存装置及其控制方法 |
CN103577344A (zh) * | 2012-07-20 | 2014-02-12 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN105068953A (zh) * | 2014-05-07 | 2015-11-18 | Hgst荷兰公司 | 用于对等高速外围组件互联存储传输的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107783916A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237769B2 (en) | Memory system and method of controlling nonvolatile memory | |
TWI592865B (zh) | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 | |
US10324651B2 (en) | Data transmission method, and storage controller and list management circuit using the same | |
CN107665091B (zh) | 数据读取方法、数据写入方法及其存储控制器 | |
CN107783916B (zh) | 数据传输方法、存储控制器与清单管理电路 | |
US9135167B2 (en) | Controller, data storage device and data storage system having the controller, and data processing method | |
US10802733B2 (en) | Methods and apparatus for configuring storage tiers within SSDs | |
US10120615B2 (en) | Memory management method and storage controller using the same | |
US10101914B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
US8984219B2 (en) | Data storage device and method of writing data in the same | |
CN106681654B (zh) | 映射表载入方法与存储器存储装置 | |
US10635358B2 (en) | Memory management method and storage controller | |
CN111459844B (zh) | 数据储存装置及用于存取逻辑至物理地址映射表的方法 | |
US20110004723A1 (en) | Data writing method for flash memory and control circuit and storage system using the same | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
US20200356491A1 (en) | Data storage device and method for loading logical-to-physical mapping table thereof | |
CN107943710B (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
CN118092807A (zh) | 缓存空间调配方法及存储器存储装置 | |
CN106874223B (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
CN107103930B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
US10203886B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus for writing data from buffer memory and moving valid data | |
US10824340B2 (en) | Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus | |
TWI760697B (zh) | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN110162493B (zh) | 存储器管理方法及使用所述方法的储存控制器 | |
CN110286846B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190403 Address after: Room 609, 6th Floor, Taibang Science and Technology Building, Nanshan District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Da Xin Electronic Technology Co., Ltd. Address before: 2nd Floor, No. 5, 91 Lane, Dongmei Road, Xinzhu, Taiwan, China Applicant before: Big heart electronic Limited by Share Ltd |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |