CN110647288A - 数据储存装置及其快取分流方法 - Google Patents
数据储存装置及其快取分流方法 Download PDFInfo
- Publication number
- CN110647288A CN110647288A CN201810669304.5A CN201810669304A CN110647288A CN 110647288 A CN110647288 A CN 110647288A CN 201810669304 A CN201810669304 A CN 201810669304A CN 110647288 A CN110647288 A CN 110647288A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- cache space
- cache
- write command
- 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.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims description 15
- 230000015654 memory Effects 0.000 claims abstract description 82
- 230000004044 response Effects 0.000 claims abstract description 5
- 238000009826 distribution Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 9
- 239000007787 solid Substances 0.000 description 7
- 101000840469 Arabidopsis thaliana Isochorismate synthase 1, chloroplastic Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 101100256921 Ajellomyces capsulatus SID3 gene Proteins 0.000 description 2
- 101100064323 Arabidopsis thaliana DTX47 gene Proteins 0.000 description 2
- 101150026676 SID1 gene Proteins 0.000 description 2
- 101100366400 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spg1 gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据储存装置,包括:一闪存,具有多个区块用以储存数据;一动态随机存取内存;以及一控制器,用以依据来自一主机的一写入指令的至少一数据特征以由该动态随机存取内存中配置相应的一快取空间,其中,该控制器是将该写入指令中的数据写入相应的该快取空间;其中,响应来自该主机的一读取指令,该控制器是判断在该快取空间中是否储存有该读取指令欲读取的所有数据;当该快取空间中储存有该读取指令欲读取的所有数据,该控制器是直接由该快取空间读取该读取指令欲读取的所有数据。
Description
【技术领域】
本发明是有关于一种数据储存装置,特别是有关于一种数据储存装置及其快取分流方法。
【背景技术】
闪存为一种普遍的非挥发性数据储存媒体,是以电性方式抹除与程序化。以非与门型的闪存(即NAND FLASH)为例,常用作存储卡(memory card)、通用串行总线闪存装置(USB flash device)、固态硬盘(SSD)、嵌入式闪存模块(eMMC)…等的储存媒体。
闪存(如,NAND FLASH)的储存数组包括多个区块(blocks),而各区块包括多个页(pages)。由于闪存中的区块的数量有限,所以如何有效利用闪存中的区块是一个重要的课题。
【发明内容】
本发明提供一种数据储存装置,包括:一闪存,具有多个区块用以储存数据;一动态随机存取内存;以及一控制器,用以依据来自一主机的一写入指令的至少一数据特征以由该动态随机存取内存中配置相应的一快取空间,其中,该控制器是将该写入指令中的数据写入相应的该快取空间;其中,响应来自该主机的一读取指令,该控制器是判断在该快取空间中是否储存有该读取指令欲读取的所有数据;当该快取空间中储存有该读取指令欲读取的所有数据,该控制器是直接由该快取空间读取该读取指令欲读取的所有数据。
本发明更提供一种快取分流方法,用于一数据储存装置,该数据储存装置包括一闪存及一动态随机存取内存,该方法包括:依据来自一主机的一写入指令的至少一数据特征以由该动态随机存取内存中配置相应的一快取空间;将该写入指令中的数据写入相应的该快取空间;响应来自该主机的一读取指令,判断在该快取空间中是否储存有该读取指令欲读取的所有数据;当该快取空间中储存有该读取指令欲读取的所有数据,直接由该快取空间读取该读取指令欲读取的所有数据。
【附图说明】
图1为本发明的一实施例的电子系统的方块图。
图2A为本发明一实施例中的快取控制器写入数据至快取空间的示意图。
图2B为本发明图2A的实施例中的快取控制器由快取空间读取数据的示意图。
图2C是显示依据本发明一实施例中将多个串流指令的数据混合写入闪存的示意图。
图2D是显示依据本发明一实施例中依据多个串流指令的串流标识符将数据分别写入闪存的示意图。
图2E是显示依据本发明一实施例中依据多个串流指令的串流标识符将数据分别写入闪存的示意图。
图3是显示依据本发明一实施例中的用于数据储存装置的快取分流方法的流程图。
【符号说明】
100~电子系统
120~主机
140~数据储存装置
160~控制器
162~运算单元
164~永久内存
166~动态随机存取内存
168~高速缓存
180~闪存
181~区块
182~页面
181A-181F~区块
1821-1823~页面
1620~快取控制器
1621~串流分类器
1622~数据搜寻器
1623~数据存取器
1630~快取空间
1631~范围
1661~H2F表
1662~快取空间
1663~数据缓冲器
LBA6-LBA102~逻辑地址
211-213~快取空间
S310-S330~步骤
【具体实施方式】
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照申请专利范围界定的。
非挥发式内存可以是闪存(flash memory)、磁阻式随机存取内存(Magnetoresistive RAM)、铁电随机存取内存(Ferroelectric RAM)、电阻式内存(Resistive RAM,RRAM)、自旋转移力矩随机存取内存(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的储存媒体,可用于实现数据储存装置、或应用于数据中心。以下特别以闪存(Flash Memory)为例进行讨论。
现今数据储存装置常以闪存为储存媒体,用来实现存储卡(Memory Card)、通用串行总线闪存装置(USB Flash Device)、固态硬盘(SSD)…等产品。有一种应用是采多芯片封装、将闪存与其控制器包装在一起─称为嵌入式闪存模块(如eMMC)。
以闪存为储存媒体的数据储存装置可应用于多种电子装置上。所述电子装置包括智能型手机、穿戴装置、平板计算机、虚拟现实设备…等。电子装置的运算模块可视为主机(Host),操作电子装置所使用的数据储存装置,以存取数据储存装置中的闪存。
闪存实现的数据储存装置也可用于建构数据中心(Data Center)。例如,服务器可操作固态硬盘(SSD)数组形成数据中心。服务器即可视为一主机(Host),操作所链接的固态硬盘,以存取其中闪存。
主机(Host)端是以逻辑地址(例如,逻辑区块地址LBA、全局主机页编号GHP、主机区块HBlk、主机页HPage…等)区别用户数据。用户数据写入闪存后,其逻辑地址与闪存的物理空间的映像关系由控制单元闪存记录下来,将来主机读取用户数据时,控制单元即根据此映像关系自闪存提供用户数据。
闪存可作为数据储存装置的储存媒体,储存空间包括多个区块(Blocks),其中,各区块包括多页(Pages)。闪存以区块为抹除(Erasing)动作的最小单位。区块(数据区块)经抹除后成为闲置区块,闲置区块写入用户数据后成为数据区块。随着用户数据逐页写入一区块时,该区块各页储存的用户数据的逻辑地址需动态整理成一物理至逻辑映像表(F2HTable)。一种实施方式中,配置来接收用户数据的闲置区块又称为有源区块(ActiveBlock),在垃圾回收程序(Garbage Collection Procedure)中用以接收来源区块(SourceBlock)的用户数据的闲置区块又称为目的区块(Destination Block),有源区块和目的区块的物理至逻辑映像表(F2H Table)可动态地在一挥发式内存上进行动态整理。例如,数据储存装置的控制单元/控制器所使用的静态随机存取内存(SRAM)即可用于物理至逻辑映像表的动态整理,之后,将物理地址至逻辑地址的映像信息进行反向转换并用以更新逻辑至物理映像表(H2F Table)。控制单元将整个逻辑至物理映像表或仅更新的部分逻辑至物理映像表储存至闪存上。一般称动态随有源区块或目的区块于挥发式内存上更新的物理至逻辑映像表为小表,且称在闪存上非挥发式保存的逻辑至物理映像表为大表。控制单元将整个或部分小表所记录的映像信息整合至大表,最后,控制器再以大表作为用户数据存取的依据。
图1为本发明的一实施例的电子系统的方块图。电子系统100例如可为个人计算机(Personal Computer)、数据服务器(Data Server)、网络附加储存装置(Network-AttachedStorage,NAS),可携式电子装置(Portable Electronic Device)等等,但本发明并不限于此。可携式电子装置例如可为笔记本电脑、手持移动电话、智能型手机、平板计算机、个人数字助理(Personal Digital Assistant,PDA)、数字相机(Digital Camera)、数字摄影机(Digital Video Camera)、可携式多媒体播放器(Portable Multimedia Player)、个人导航装置(Personal Navigation Device)、手持游戏主机(Handheld Game Console)、电子书(e-Book)等等,但本发明并不限于此。
电子系统100包括主机120以及数据储存装置140。数据储存装置140包括闪存180以及控制器160,且可根据主机120所下达的命令操作。控制器160包括运算单元162、永久内存(例如:只读存储器ROM)164、动态随机存取内存(Dynamic Random access Memory,DRAM)166。运算单元162例如可为通用处理器(General-Purpose Processor)、或微控制器(Microcontroller),但本发明并不限于此。
永久内存164与所载的程序代码及数据组成固件(Firmware),由运算单元162执行,使控制器160基于该固件控制该闪存180。动态随机存取内存(RAM)166用以加载程序代码与参数以提供控制器160根据所加载的程序代码与参数动作。在一实施例中,动态随机存取内存166更可做为数据缓冲器(Data Buffer)1663,用以储存来自主机120的写入数据。待在动态随机存取内存166所储存的数据达到预定大小时,即将数据写入闪存180。此外,运算单元162可由闪存180读取其储存的全部或部分的逻辑至对象映像表(H2F表)1661至动态随机存取内存166。
在一些实施例中,数据储存装置140可更包括一高速缓存168,其是为一挥发性内存,例如是一静态随机存取内存(Static Random Access Memory,SRAM)或是其他类型的静态内存,可用于快速存取数据,且其数据访问速度比动态随机存取内存快。高速缓存168是用以储存闪存180中的经常存取的数据(Frequently Accessed Data)或热门数据(HotData)。在一些实施例中,高速缓存168可与控制器160结合在一芯片包装中,此外,动态随机存取内存166可结合于同一芯片包装中,或是可独立于控制器160的芯片包装之外。
在一些实施例中,动态随机存取内存166可取代高速缓存168。意即,动态随机存取内存166是可做为高速缓存使用。在一些实施例中,动态随机存取内存166是可配置(Allocate)一或多个快取空间用以储存不同类型的数据,其细节将详述于后。为了便于说明,在后述实施例中,均是以动态随机存取内存166配置一或多个快取空间1662为例进行说明。
闪存180例如包括多个区块(Blocks)181,其中,各区块181包括多个页面(Pages)182用以储存数据。
在一实施例中,主机120及数据储存装置140之间例如可通过一快捷外设互联标准(Peripheral Component Interconnect Express,PCIe)总线或序列进阶技术附加装置(Serial Advanced Technology Attachment,SATA)总线互相通讯。此外,数据储存装置140例如支持非挥发性内存快捷接口(Non-Volatile Memory Express,NVMe)标准。
主机120可写入数据至数据储存装置140或读取储存在数据储存装置140中的数据。详细而言,主机120可产生写入指令(Write Command),可请求数据储存装置140以写入数据,或是可产生读取指令(Read Command),其可请求读取储存于数据储存装置140中的数据。写入指令或读取指令均可视为输入/输出(I/O)指令。
当主机120发出读取指令欲从数据储存装置140读取数据时,运算单元162是检查欲读取的数据是否存在于动态随机存取内存166的快取空间中。若欲读取的数据存在于动态随机存取内存166的快取空间中,则运算单元162会直接由动态随机存取内存166的相应的快取空间取出欲读取的数据,并将取出的数据传送回主机120以完成读取指令。
当主机120发出写入指令欲写入数据至数据储存装置140时,运算单元162是检查写入指令的属性,并依据写入指令的属性将写入指令中的数据储存于动态随机存取内存166中相应的快取空间中。
图2A为本发明一实施例中的快取控制器写入数据至快取空间的示意图。图2B为本发明图2A的实施例中的快取控制器由快取空间读取数据的示意图。
如图2A所示,运算单元162例如包括快取控制器1620,且快取控制器1620包括:串流分类器(Stream Classifier)1621、数据搜寻器(Search Engine)1622、数据存取器(TrigEngine)1623。在一些实施例中,快取控制器1620例如可为单独的控制电路,且电性连接至运算单元162及动态随机存取内存166。
串流分类器1621是用以将来自主机120的输入/输出指令进行分类,例如可利用串流标识符(Stream ID)、命名空间标识符(Namespace ID)、或是数据属性以将来自主机120的输入/输出指令进行分类,但本发明并不限于此。
数据搜寻器1622是用以在搜寻已储存于各个快取空间中的数据,并可传送一开始地址及长度至数据存取器1623。
数据存取器1623是依据来自数据搜寻器1622的输入/输出指令所表示的快取开始地址(例如为逻辑地址)及长度,从串流分类器1621接收写入指令以写入数据至相应的快取空间(例如图2A中的快取空间1630)、或是从串流分类器1621接收读取指令并由相应的快取空间中读取所要的数据。
详细而言,数据搜寻器1622例如可在动态随机存取内存166中另外建立一个快取查找表(Cache Lookup Table)(未绘示),其是记录了在不同快取空间中的逻辑地址与快取地址的映像关系。举例来说,在一实施例中,数据储存装置140是处于初始状态时,且各快取空间中尚未储存数据。当主机120发送写入指令(例如可为串流写入指令或其他类型的写入指令)至数据储存装置140时,串流分类器1621是用以将来自主机120的写入指令进行分类,例如可利用串流标识符(Stream ID)、命名空间标识符(Namespace ID)、或是数据属性(例如逻辑地址分布、数据大小等等)以将来自主机120的写入指令进行分类。例如各个命名空间标识符是具有不同的快取空间,意即各快取空间在动态随机存取内存166中具有不同的逻辑地址(LBA)范围。
在一些实施例中,串流分类器1621例如可依据主机120的写入指令中的逻辑地址或传输数据的大小以进行分类。例如写入指令的数据大小可分为4K、16K、或128K(非限定),故可分为不同类型。串流分类器1621亦可统计来自主机120中的各写入指令中的逻辑地址的分布,并将逻辑地址划分为多个群组,且各群组即对应一个串流。此外,串流分类器1621亦可综合考虑来自主机120的写入指令的逻辑地址及传输数据的大小来进行分类。
简单来说,串流分类器1621可依据主机120的写入指令中的至少一数据特征以进行分类,并由动态随机存取内存166配置相应于各分类的快取空间。前述实施例中所揭示的串流标识符、命名空间标识符、数据大小、逻辑地址分布,串流分类器1621可单独依据其中一种数据特征进行分类,或是可利用其组合进行分类。
若写入指令为串流写入指令(Stream Write Command),则其可带有串流标识符。因此,串流分类器1621可依据串流标识符进行分类,并通知数据存取器1623在动态随机存取内存166中对每个不同的串流标识符配置相应的快取空间。此外,数据搜寻器1622是将串流写入指令中的开始逻辑地址及扇区数目转换为相应的快取空间中的快取写入地址及其范围(例如为连续的逻辑地址)。
在一些实施例中,因为在各个快取空间尚未储存数据,故数据存取器1623除了会依据来自数据搜寻器1622的快取写入地址及其范围将串流写入指令的数据写入相应的快取空间之外,数据存取器1623更依据动态随机存取内存166中所储存的逻辑至对象映像表以查找在串流写入指令中的写入逻辑地址所相应的物理地址,并依据所查找的物理地址,将串流写入指令中的数据写入闪存180。在另一些实施例中,快取控制器1620并不将数据先写入闪存180,而是在需要清除快取空间的数据或是数据储存装置140断电前才将数据快速写入(Flush)闪存180中。
当主机120持续对数据储存装置140写入数据时,运算单元162可依据类似方式将来自主机120的数据写入相应的快取空间及闪存180中。若快取空间的容量足够大,数据存取器1623可将串流写入指令中的数据完全写入快取空间中,以便于后续的读取指令可由快取空间中读取数据。若快取空间的容量不足以储存串流写入指令中的所有数据,数据存取器1623可依据一判断机制(例如:数据的写入顺序或冷门/热门数据)来决定那些部分数据需写入快取空间中。
在电子系统100运作一段时间后,运算单元162累计数据或页面的读取次数而判断在闪存180中那些部分的数据是经常存取的数据或是热门数据,并将该多个数据自闪存180中读出并暂存在各个快取空间中以利后续读取动作。相反地,已储存在快取空间中但读取次数较低的数据(冷门数据)会被替代(清除)以空出快取空间来暂存热门数据。
举例来说,在数据储存装置140中可具有多个命名空间,其中,会有几个命名空间具有较高的优先级,且读写频繁。例如其中的第一命名空间的大小为20MB,快取控制器1620可由动态随机存取内存166配置至少10MB的第一快取空间以储存第一命名空间的数据,例如是操作最频繁的10MB的数据可常驻于第一快取空间中,且其他10MB的部分则储存于闪存180中。因此,若主机120欲读取第一命名空间中的数据,则通过第一快取空间进行读取时,第一快取空间的快取命中率可至少达到50%,意即用于第一命名空间的闪存的使用寿命可延长至2倍以上,且数据读取的效能亦会有明显提升。
若快取控制器1620可由动态随机存取内存166配置至少20MB的第一快取空间,则第一命名空间中的所有数据均可储存于第一快取空间中,意即不需从闪存180读取数据。因此,第一命名空间的闪存180的使用寿命可以得到显著的提升。此外,因为对于第一命名空间的所有读写动作均是对第一快取空间操作,读写动作的反应速度亦大幅提高。
在一实施例中,当主机120发出一读取指令时,数据搜寻器1622可由快取查找表中搜寻该读取指令所要读取的数据是否已储存在快取空间中,例如可依据读取指令中所表示的开始逻辑地址(Start LBA)及扇区数目(Sector Count)以在快取查找表中进行搜寻。若读取指令欲读取的数据均全部储存于相应的快取空间中,则数据搜寻器1622则发送一快取开始地址(Cache Start Address)及长度(Length)至数据存取器1623。接着,数据存取器1623则可依据快取开始地址及长度从相应的快取空间中取出欲读取的数据,并将从快取空间读取出的数据传送至主机120。
若读取指令欲读取的数据仅有部分储存于相应的快取空间中,则数据搜寻器1622则同样发送快取开始地址(Cache Start Address)及长度(Length)至数据存取器1623,使得数据存取器1623可依据快取开始地址及长度从相应的快取空间中取出欲读取的第一部分数据。此外,数据存取器1623再由动态随机存取内存166中所储存的逻辑至对象映像表中查找欲读取且不在快取空间中第二部分数据的物理地址,并依据所取得的物理地址由闪存180中读取第二部分数据。接着,数据存取器1623是将第一部分数据(来自快取空间)及第二部分数据(来自闪存180)传送至主机120。
如图2A所示,若来自主机120的写入指令具有开始逻辑地址16及扇区数目8、并具有串流标识符SID0,则数据存取器1623可依据来自数据搜寻器1622的快取开始地址及长度以写入数据至快取空间1630,且写入的数据在快取空间1630中具有连续的逻辑地址范围,例如范围1631。
如图2B所示,若来自主机120的读取指令同样具有开始逻辑地址16及扇区数目8以及串流标识符SID0,则串流分类器1621可辨识出此串流标识符SID0,且数据搜寻器1622可取得或计算出串流标识符SID0所储存的快取空间1630中的快取开始地址及长度,并将其传送至数据存取器1623。数据存取器1623则可依据来自数据搜寻器1622的快取开始地址及长度由快取空间1630中取得欲读取的数据,并将所取得的数据传送至主机120以完成读取动作。
举例来说,当主机120及数据储存装置140均支持NVMe1.3或以上的标准,主机120可启用指令及串流(Directives and Streams)的功能以发出输入/输出指令至数据储存装置140。详细而言,在先前的固态硬盘的架构下,当固态硬盘承载多数据流的写入作业时,写入作业是冷热无序的,意即固态硬盘控制器并不管写入指令的来源为何,均是直接把数据连续写入至闪存中。因为所有负载均混合了,会导致不同来源的数据交错分布在闪存的各个区域的中,这对于垃圾回收作业来说相当不利。
在一实施例中,当主机120启用指令及串流(Directives and Streams)的功能并发出输入/输出指令至数据储存装置140时,该输入/输出指令即带有一个串流标识符(Stream ID),其中,不同的串流标识符例如代表不同类型的数据,循序数据或随机数据,其中,循序数据例如可分为记录数据(Log Data)、数据库(DataBase)、多媒体数据(Multimedia Data),随机数据例如可为元数据(Meta Data)、系统档案(System Files)等等,但本发明并不限于此。在一些实施例中,主机120是依据不同数据的更新频率以分配串流标识符,
图2C是显示依据本发明一实施例中将多个串流指令的数据混合写入闪存的示意图。
如图2C所示,若主机120或数据储存装置140不支持或未开启指令及串流功能、且未使用快取空间,则来自主机120的串流1、串流2、及串流3(例如分别为循序写入、循序写入、及随机写入)在传送至运算单元162后,运算单元162会将不同串流的数据混合写入闪存180中的不同区块181,例如区块181A、181B、181D、及181E。在此例子中,区块181C及181F未被写入数据。然而,可看出在区块181A、181B、181D、及181E中的数据均是混合类型的数据,这种类型的数据摆放方式并不利于垃圾回收。
图2D是显示依据本发明一实施例中依据多个串流指令的串流标识符将数据分别写入闪存的示意图。
如图2D所示,若主机120或数据储存装置140支持且开启指令及串流功能、且未使用快取空间,则来自主机120的串流1、串流2、及串流3(例如分别为循序写入、循序写入、及随机写入)在传送至运算单元162后,运算单元162会依据不同串流所相应的串流标识符(例如分别为SID1、SID2、及SID3)将不同串流的数据分别写入闪存180中的不同区块181中,例如区块181A中各页面1821是储存串流1的数据,区块181B中各页面1822是储存串流2的数据,且区块181C中各页面1823是储存串流3的数据。在此例子中,区块181D~181F并未写入数据。
图2E是显示依据本发明一实施例中依据多个串流指令的串流标识符将数据分别写入闪存的示意图。
如图2E所示,若主机120或数据储存装置140支持且开启指令及串流功能、且使用快取空间,则来自主机120的串流1、串流2、及串流3(例如分别为循序写入、循序写入、及随机写入)在传送至运算单元162后,运算单元162会依据不同串流所相应的串流标识符(例如分别为SID1、SID2、及SID3)将不同串流的数据写入闪存180中的不同区块181中,例如区块181A中各页面1821是储存串流1的数据,区块181B中各页面1822是储存串流2的数据,且区块181C中各页面1823是储存串流3的数据。在此例子中,区块181D~181F并未写入数据。
此外,快取控制器1620更将串流1、串流2、及串流3的数据分别写入各自的串流标识符所相应的快取空间211、212、及213。如图2E所示,快取空间211是储存了方块181A中的页面1821的数据,快取空间212是储存了方块181B中的页面1822的数据,快取空间213是储存了方块181C中的页面1823的数据。当快取控制器1620接收到来自主机120的串流读取指令(例如其串流标识符为SID2),则快取控制器1620可判断出串流标识符SID2的数据已写入快取空间212中,故可直接由快取空间212读取所要的数据,并将读取出的数据传送至主机120以完成读取动作。
图3是显示依据本发明一实施例中的用于数据储存装置的快取分流方法的流程图。
在步骤S310,依据来自主机120的写入指令的至少一数据特征以由动态随机存取内存中配置相应的快取空间。其中,上述至少一数据特征包括该写入指令的串流标识符、命名空间标识符、数据大小、逻辑地址分布、或其组合。
在步骤S320,将该写入指令中的数据写入相应的该快取空间。需注意的是,若快取空间的大小足够储存写入指令中的所有数据,则快取控制器1620可将该写入指令中的数据全部写入该快取空间,而不需将数据写入闪存180。若快取空间的大小不足够储存写入指令中的所有数据,则快取控制器1620会将该写入指令中的部分数据写入该快取空间,并将剩余数据写入闪存180。写入该快取空间中的数据例如为经常存取的数据或热门数据。
在步骤S330,响应来自主机120的读取指令,判断在该快取空间中是否储存有该读取指令欲读取的所有数据。
在步骤S340,当该快取空间储存有该读取指令欲读取的所有数据时,直接由该快取空间读取相应于该读取指令的数据,并将读取的数据传送至主机120以完成读取动作。
需注意的是,当该快取空间并未储存有该读取指令欲读取的所有数据时,快取控制器1620是进一步判断在快取空间中是否有该读取指令欲读取的部分数据。若是,则快取控制器1620是由快取空间读取该读取指令欲读取的部分数据,并由闪存180读取该读取指令欲读取的剩余数据。若否,则快取控制器1620是由闪存180读取该读取指令欲读取的全部数据。
惟以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明申请专利范围及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所揭露的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻的用,并非用来限制本发明的权利范围。
Claims (10)
1.一种数据储存装置,其特征在于,包括:
一闪存,具有多个区块用以储存数据;
一动态随机存取内存;以及
一控制器,用以依据来自一主机的一写入指令的至少一数据特征以由该动态随机存取内存中配置相应的一快取空间,
其中该控制器是将该写入指令中的数据写入相应的该快取空间;
其中,响应来自该主机的一读取指令,该控制器是判断在该快取空间中是否储存有该读取指令欲读取的所有数据;
当该快取空间中储存有该读取指令欲读取的所有数据,该控制器是直接由该快取空间读取该读取指令欲读取的所有数据。
2.如权利要求1所述的数据储存装置,其特征在于,上述至少一数据特征包括该写入指令的一串流标识符、命名空间标识符、数据大小、一逻辑地址分布、或其组合。
3.如权利要求1所述的数据储存装置,其特征在于:
若该快取空间的大小足够储存该写入指令中的所有数据,该控制器是将该写入指令中的数据全部写入该快取空间,而不将该写入指令中的数据写入该闪存;
若该快取空间的大小不足够储存该写入指令中的所有数据,该控制器是将该写入指令中的部分数据写入该快取空间,并将该写入指令中的剩余数据写入该闪存。
4.如权利要求3所述的数据储存装置,其特征在于,写入该快取空间中的数据例如为经常存取的数据或热门数据。
5.如权利要求1所述的数据储存装置,其特征在于:
当该快取空间并未储存有该读取指令欲读取的所有数据时,该控制器是判断在该快取空间中是否有该读取指令欲读取的部分数据,
若是,该控制器是由该快取空间读取该读取指令欲读取的部分数据,并由该闪存读取该读取指令欲读取的剩余数据;
若否,该控制器是由该闪存读取该读取指令欲读取的全部数据。
6.一种快取分流方法,其特征在于,用于一数据储存装置,该数据储存装置包括一闪存及一动态随机存取内存,该方法包括:
依据来自一主机的一写入指令的至少一数据特征以由该动态随机存取内存中配置相应的一快取空间;
将该写入指令中的数据写入相应的该快取空间;
响应来自该主机的一读取指令,判断在该快取空间中是否储存有该读取指令欲读取的所有数据;以及
当该快取空间中储存有该读取指令欲读取的所有数据,直接由该快取空间读取该读取指令欲读取的所有数据。
7.如权利要求6所述的快取分流方法,其特征在于,上述至少一数据特征包括该写入指令的一串流标识符、命名空间标识符、数据大小、一逻辑地址分布、或其组合。
8.如权利要求6所述的快取分流方法,其特征在于,更包括:
若该快取空间的大小足够储存该写入指令中的所有数据,将该写入指令中的数据全部写入该快取空间,而不将该写入指令中的数据写入该闪存;以及
若该快取空间的大小不足够储存该写入指令中的所有数据,将该写入指令中的部分数据写入该快取空间,并将该写入指令中的剩余数据写入该闪存。
9.如权利要求8所述的快取分流方法,其特征在于,写入该快取空间中的数据例如为经常存取的数据或热门数据。
10.如权利要求6所述的快取分流方法,其特征在于,更包括:
当该快取空间并未储存有该读取指令欲读取的所有数据时,判断在该快取空间中是否有该读取指令欲读取的部分数据;
若是,由该快取空间读取该读取指令欲读取的部分数据,并由该闪存读取该读取指令欲读取的剩余数据;以及
若否,由该闪存读取该读取指令欲读取的全部数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810669304.5A CN110647288A (zh) | 2018-06-26 | 2018-06-26 | 数据储存装置及其快取分流方法 |
US16/112,900 US20190391756A1 (en) | 2018-06-26 | 2018-08-27 | Data storage device and cache-diversion method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810669304.5A CN110647288A (zh) | 2018-06-26 | 2018-06-26 | 数据储存装置及其快取分流方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110647288A true CN110647288A (zh) | 2020-01-03 |
Family
ID=68981329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810669304.5A Pending CN110647288A (zh) | 2018-06-26 | 2018-06-26 | 数据储存装置及其快取分流方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190391756A1 (zh) |
CN (1) | CN110647288A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114493069A (zh) * | 2020-11-12 | 2022-05-13 | 财团法人工业技术研究院 | 基于对话类型的快取管理方法及系统 |
TWI814590B (zh) * | 2022-09-26 | 2023-09-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347058B (zh) | 2016-05-06 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 数据加密方法、数据解密方法、装置及系统 |
CN109450620B (zh) | 2018-10-12 | 2020-11-10 | 创新先进技术有限公司 | 一种移动终端中共享安全应用的方法及移动终端 |
US11429519B2 (en) * | 2019-12-23 | 2022-08-30 | Alibaba Group Holding Limited | System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive |
KR20210099930A (ko) * | 2020-02-05 | 2021-08-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11467730B1 (en) * | 2020-12-31 | 2022-10-11 | Lightbits Labs Ltd. | Method and system for managing data storage on non-volatile memory media |
CN117501229B (zh) * | 2021-04-16 | 2024-07-05 | 美光科技公司 | 高速缓存分配技术 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080069018A (ko) * | 2007-01-22 | 2008-07-25 | 삼성전자주식회사 | 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치 |
CN104020959A (zh) * | 2013-03-01 | 2014-09-03 | 慧荣科技股份有限公司 | 数据储存装置与快闪存储器控制方法 |
US20140310574A1 (en) * | 2012-12-28 | 2014-10-16 | Super Talent Technology, Corp. | Green eMMC Device (GeD) Controller with DRAM Data Persistence, Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files for Enhanced Flash Endurance |
US20160139982A1 (en) * | 2008-06-18 | 2016-05-19 | Frank Yu | Green nand ssd application and driver |
US20170344486A1 (en) * | 2016-05-25 | 2017-11-30 | Samsung Electronics Co., Ltd. | Method of controlling storage device and random access memory and method of controlling nonvolatile memory device and buffer memory |
US20180285282A1 (en) * | 2017-04-01 | 2018-10-04 | Intel Corporation | Method and apparatus for erase block granularity eviction in host based caching |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018041204A (ja) * | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
US10216630B1 (en) * | 2017-09-26 | 2019-02-26 | EMC IP Holding Company LLC | Smart namespace SSD cache warmup for storage systems |
-
2018
- 2018-06-26 CN CN201810669304.5A patent/CN110647288A/zh active Pending
- 2018-08-27 US US16/112,900 patent/US20190391756A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080069018A (ko) * | 2007-01-22 | 2008-07-25 | 삼성전자주식회사 | 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치 |
US20160139982A1 (en) * | 2008-06-18 | 2016-05-19 | Frank Yu | Green nand ssd application and driver |
US20140310574A1 (en) * | 2012-12-28 | 2014-10-16 | Super Talent Technology, Corp. | Green eMMC Device (GeD) Controller with DRAM Data Persistence, Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files for Enhanced Flash Endurance |
CN104020959A (zh) * | 2013-03-01 | 2014-09-03 | 慧荣科技股份有限公司 | 数据储存装置与快闪存储器控制方法 |
US20170344486A1 (en) * | 2016-05-25 | 2017-11-30 | Samsung Electronics Co., Ltd. | Method of controlling storage device and random access memory and method of controlling nonvolatile memory device and buffer memory |
US20180285282A1 (en) * | 2017-04-01 | 2018-10-04 | Intel Corporation | Method and apparatus for erase block granularity eviction in host based caching |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114493069A (zh) * | 2020-11-12 | 2022-05-13 | 财团法人工业技术研究院 | 基于对话类型的快取管理方法及系统 |
TWI814590B (zh) * | 2022-09-26 | 2023-09-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20190391756A1 (en) | 2019-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647288A (zh) | 数据储存装置及其快取分流方法 | |
US11055230B2 (en) | Logical to physical mapping | |
US11042487B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
US9355027B2 (en) | Zone-based defragmentation methods and user devices using the same | |
US20160253257A1 (en) | Data processing system and operating method thereof | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
CN113282234B (zh) | 存储装置、存储系统、及其操作方法 | |
US20210026763A1 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
US20240231663A1 (en) | Storage device and method of operating the same | |
CN114077389A (zh) | 控制器、存储器系统以及数据处理系统 | |
US9880930B2 (en) | Method for operating controller and method for operating device including the same | |
US20230273878A1 (en) | Storage device for classifying data based on stream class number, storage system, and operating method thereof | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US11269534B2 (en) | Data storage device and non-volatile memory control method | |
US20240241835A1 (en) | Storage device supporting multi-namespace and method of operating the same | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200103 |
|
WD01 | Invention patent application deemed withdrawn after publication |