CN109154917B - 存储系统和固态硬盘 - Google Patents

存储系统和固态硬盘 Download PDF

Info

Publication number
CN109154917B
CN109154917B CN201680003654.7A CN201680003654A CN109154917B CN 109154917 B CN109154917 B CN 109154917B CN 201680003654 A CN201680003654 A CN 201680003654A CN 109154917 B CN109154917 B CN 109154917B
Authority
CN
China
Prior art keywords
die
segment
controller
data
solid state
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
Application number
CN201680003654.7A
Other languages
English (en)
Other versions
CN109154917A (zh
Inventor
周猛
唐鲲
杨瑞耀
玄在雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN109154917A publication Critical patent/CN109154917A/zh
Application granted granted Critical
Publication of CN109154917B publication Critical patent/CN109154917B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种存储系统,包括控制器(100)和固态硬盘(200),所述固态硬盘(200)包含多个通道,每个通道连接多个DIE;所述控制器(100)预先创建多个段;从所述多个DIE中选择第一DIE;从所述多个段中选择第一段及确认所述第一段的可用偏移量;生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识、所述第一段的标识及所述可用偏移量;向所述固态硬盘(200)发送所述写请求;所述固态硬盘(200)接收所述写请求,根据写入地址及数据长度保存所述目标数据。通过该存储系统,控制器(100)可有效使用固态硬盘(200)的存储空间。

Description

存储系统和固态硬盘
技术领域
本申请涉及存储技术领域,特别是一种存储系统和固态硬盘。
背景技术
闪存阵列是指包含固态硬盘和控制器的存储系统。其中,控制器以段(英文:segment)的形式管理固态硬盘的存储空间。段是由控制器分配的一段连续逻辑地址的区域,其可以映射到固态硬盘上的一段连续的逻辑地址。在收到来自主机的写请求后,控制器会为所述写请求分配1个段,基于所分配的段生成新的写请求,所述新的写请求中携带与所分配的段对应的固态硬盘逻辑地址以及待写入数据,然后将所述新的写请求发送给固态硬盘。所述固态硬盘从所述控制器接收到的所述新的写请求后,基于自身策略选择物理存储资源,并将所述新的写请求中携带的数据写入所述物理存储资源中,然后在本地的记录所述固态硬盘逻辑地址与所述物理存储资源的映射关系作为后续数据查询的基础。
因为所述固态硬盘选择物理存储资源的过程完全基于自身的策略且对所述控制器透明,则可能导致出现控制器无法有效使用所述固态硬盘的存储空间的问题。
发明内容
本申请提出了一种存储系统和固态硬盘,可以更加有效合理的使用所述固态硬盘的存储空间。
本申请第一方面提供了一种存储系统,所述存储系统包括控制器和固态硬盘,所述固态硬盘和所述控制器可通信,所述固态硬盘包含多个通道,所述多个通道中的每一个通道连接多个晶粒(DIE);其中,所述控制器,用于预先创建多个段;从所述多个DIE中选择第一DIE;从所述多个段中选择第一段,以及确认所述第一段的可用偏移量;生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识、所述第一段的标识及所述可用偏移量,所述目标数据为待写入所述固态硬盘的数据;向所述固态硬盘发送所述写请求;
所述固态硬盘,用于接收所述写请求,根据所述写入地址及所述目标数据的数据长度保存所述目标数据。
在本发明实施例中,所述控制器在选择所述第一DIE之前,接收来自主机的一个或多个主机写请求,每一个主机写请求中携带有主机逻辑地址、数据和数据长度,所述主机逻辑地址是所述主机写入所述数据的起始逻辑地址;所述数据为待写入所述存储系统的数据;所述数据长度用于标识所述数据的长度。所述控制器可以缓存所述数据,进一步的还可以以所述固态硬盘的页的容量为单位对所述主机写请求所携带的数据进行拆分、和/或组合操作生成多个单位长度的数据块。所述控制器可以是在接收到所述主机写请求后就执行选择第一DIE的步骤,也可以是在满足第一条件时再启动执行选择第一DIE的步骤,所述第一条件可以是当缓存的所述数据的数据长度大于特定阈值,也可以是所述控制器进入新的一个数据写入周期。
在选择所述第一DIE之前,所述控制器100还可以先确定待写入固态硬盘的目标数据及所述目标数据的数据长度,其中所述目标数据可以是上述接收到的1个或多个主机写请求中携带的所述数据中的全部或部分,如可以是上述1个或多个单位长度的数据块,具体个数可以由所述控制器100灵活设置;可替代的,所述控制器100也可以是在选择了所述第一段及可用偏移量之后,再根据所述可用偏移量确定待写入固态硬盘的目标数据及所述目标数据的数据长度,这里所述数据长度应小于基于所述可用偏移量确认的所述第一段的可用存储空间,所述目标数据可以是上述1个或多个单位长度的数据块。
结合第一方面,在第一方面的第一种实现中,所述控制器还用于记录所述多个DIE的状态;则从所述多个DIE中选择第一DIE具体为:所述控制器,还用于从所述多个DIE中选择无状态的DIE作为第一DIE。
结合第一方面或者第一方面的第一种实现,在第一方面的第二种实现中,所述控制器还用于基于所述目标数据的主机逻辑地址确定所述目标数据的访问频度,若所述目标数据的访问频度大于访问频度阈值,则从所述多个DIE中选择第一DIE具体为:选择所包含的访问频度高于所述访问频度阈值的数据的量低于第一阈值的DIE作为所述第一DIE。
可选的,所述控制器还用于基于前述通过拆分、和/或组合操作得到的每一个单位长度的数据块的主机逻辑地址分别查询所述访问频度表以确认每一个数据块的访问频度,并从查询结果可以识别出上述每一个数据块属于热数据还是属于冷数据,然后所述控制器100查询所述冷热数据分布表,将所述冷热数据分布表记录的每一个DIE当前已保存的热数据的量与第一阈值进行比较,从热数据的量小于所述第一阈值的DIE中选择某个DIE作为第一DIE,该第一DIE可以用于保存上述识别为属于热数据的1个或多个单位长度的数据块;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100可以选择当前保存的热数据的量最少的DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100也可以进一步参照前述第一方面的第1种实现以及后面将要描述的第一方面的第三、四、五种实现的任何一个或多个从所述多个DIE中选择第一DIE;可选的,还可以选择多个第一DIE,每一个第一DIE用于承载上述多个属于热数据的单位长度的数据块中的一部分。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第三种实现中,所述控制器还用于记录所述多个DIE中的每个DIE存储的有效数据量;则从所述多个DIE中选择第一DIE具体为:所述控制器,还用于选择有效数据量低于第二阈值的DIE作为第一DIE。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第四种实现中,所述控制器还用于记录所述多个DIE中的每个DIE的磨损度;则从所述多个DIE中选择第一DIE具体为:所述控制器,还用于选择磨损度低于磨损度阈值的DIE作为第一DIE。
结合第一方面或者第一方面的第一种实现至第四种实现的任意一个,在第一方面的第五种实现中,所述控制器还用于记录所述多个DIE中的每个DIE的待处理读命令数;则从所述多个DIE中选择第一DIE具体为:所述控制器,还用于选择没有读命令需要处理的DIE作为第一DIE,或选择需要处理的读命令数低于第三阈值的DIE作为第一DIE。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第六种实现中,所述从所述多个段中选择第一段具体为:所述控制器,还用于确认是否有段已被分配给所述第一DIE,若有且该段还有可用存储空间,则选择该段作为第一段,否则从所述多个段中选择空白段作为第一段。
可选的,所述控制器选择所述第一段并确认可用偏移量之后,基于所述可用偏移量确定所述目标数据和所述数据长度,具体为:基于所述可用偏移量确认所述第一段当前还剩余的可用存储空间,则所述写请求中的所述目标数据的数据长度不能超过所述剩余的可用存储空间,并基于所确定的数据长度选择目标数据,所述目标数据可以是上述1个或多个单位长度的数据块。
可选的,如前所述,所述目标数据以及所述目标数据的数据长度也可以是在上述选择的第一DIE之前就由所述控制器确定,则在所述生成写请求之前,所述控制器可以先将所述已确认的所述目标数据的数据长度与基于所述第一段的可用偏移量确认的所述第一段的可用存储空间做比较,若所述目标数据的数据长度小于所述第一段的可用存储空间,则直接将所述目标数据以及所述目标数据的数据长度包含在所述写请求中;若目标数据的数据长度大于所述第一段的可用存储空间,则所述控制器需要根据所述第一段的可用存储空间将所述目标数据拆分为2个分块,其中第1分块的数据长度小于或等于所述第一段的可用存储空间,第2分块则为所述目标数据除所述第1分块外的剩余部分;则在执行所述生成写请求时,所述控制器将所述拆分后的第1分块以及其对应的数据长度分别作为目标数据以及所述目标数据的数据长度包含在所述写请求中;针对所述第2分块,则可以再重复执行所述选择第一段及确认可用偏移量、以及生成写请求的步骤;或者可选的,重复执行步骤选择第一DIE、选择第一段及确认可用偏移量、以及生成写请求的步骤。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第七种实现中,所述控制器还用于生成映射关系,所述映射关系用于记录所述目标数据的主机逻辑地址同与所述第一DIE相连接的通道、所述第一DIE、所述第一段和所述可用偏移量之间的映射;将所述映射关系保存到系统映射表。
结合第一方面或者第一方面的以上任意一种实现,在第一方面的第八种实现中,所述固态硬盘根据所述写入地址及所述目标数据的数据长度保存所述目标数据具体为:根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询本地映射表,其中所述本地映射表用于保存段与固态硬盘物理地址的映射关系;若所述本地映射表中记录有与所述第一段相对应的块,则根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块,根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块。
结合第一方面的第八种实现,在第一方面的第九种实现中,所述固态硬盘还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
可选的,所述本地映射表可以是多维数组本地映射表,也可以是多级本地映射表。
可选的,所述本地映射表也可以是保存“段+可用偏移量”与“固态硬盘物理地址”的映射关系,所述固态硬盘物理地址由块标识和页标识构成。
在本发明实施例中,在有数据需要被写入固态硬盘时,所述控制器要选择第一DIE,要求待写入的目标数据应该保存在所述第一DIE所包含的块中,后续固态硬盘要在所述第一DIE的范围内分配物理存储资源来保存所述目标数据,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。进一步的,所述控制器100在选择第一DIE时可以灵活使用选择策略,如DIE的状态、数据访问频度、DIE的有效数据量、DIE的磨损度、DIE待处理的读请求数量等因素中1个或多个,以此实现为待写入固态硬盘的数据选择较优的DIE,由此实现所述控制器有效的使用所述固态硬盘的存储空间。
本申请第二方面提供了另一种存储系统,所述存储系统包括控制器和固态硬盘,所述固态硬盘和所述控制器可通信,所述固态硬盘包含多个通道,所述多个通道中的每一个通道连接多个DIE;其中,所述控制器,用于创建多个段;从所述多个DIE中选择第一DIE;从所述多个段中选择第一段,以及确认所述第一段的可用偏移量;生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含所述第一段的标识及所述可用偏移量,其中所述第一段的标识包含有第一DIE的标识及与所述第一DIE相连的通道的标识;向所述第一DIE归属的固态硬盘发送所述写请求;所述固态硬盘,用于接收所述写请求,根据所述写入地址及所述目标数据的数据长度保存所述目标数据。
结合第二方面,本发明实施例还提供第二方面的第一种至第五种实现,其分别与上述第一方面的第一种至第五种实现相同,此处不再赘述。
结合第二方面或者第二方面的以上任意一种实现,在第二方面的第六种实现中,所述控制器还用于生成映射关系,所述映射关系用于记录所述目标数据的主机逻辑地址同所述第一段和所述可用偏移量之间的映射;将所述映射关系保存到系统映射表。
结合第二方面或者第二方面的以上任意一种实现,在第二方面的第七种实现中,所述固态硬盘根据所述写入地址及所述目标数据的数据长度保存所述目标数据具体为:根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询本地映射表,其中所述本地映射表用于保存段与固态硬盘物理地址的映射关系;若所述本地映射表中记录有与所述第一段相对应的块,则根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则根据所述第一段的标识解析出所述与所述第一DIE相连的通道的标识和所述第一DIE的标识,基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块,根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
本申请第三方面提供了一种固态硬盘,所述固态硬盘包含处理器,内存,通信接口、多个通道,所述处理器和内存分别通过多个通道中的每一个通道连接多个DIE,所述多个DIE中的每一个DIE包含多个块;其中所述处理器、所述内存和所述通信接口之间可通信;所述通信接口,用于接收写请求,所述写请求中包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含第一DIE的标识、与所述第一DIE相连的通道的标识、第一段的标识及可用偏移量;
所述内存用于保存本地映射表,所述本地映射表用于记录段与固态硬盘物理地址的映射关系,所述固态硬盘物理地址由块标识构成;
所述处理器,用于根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询所述本地映射表,若所述本地映射表中记录有与所述第一段相对应的块,则根据所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块;根据所述写入地址中包含的所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
结合第三方面,在第三方面的第一种实现中,所述处理器还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
可选的,所述本地映射表可以是多维数组本地映射表,也可以是多级本地映射表。
可选的,所述本地映射表也可以是保存“段+可用偏移量”与“固态硬盘物理地址”的映射关系,所述固态硬盘物理地址由块标识和页标识构成。
本申请第四方面提供了一种固态硬盘,所述固态硬盘包含处理器,内存,通信接口、多个通道,所述处理器和内存分别通过多个通道中的每一个通道连接多个DIE,所述多个DIE中的每一个DIE包含多个块;其中所述处理器、所述内存和所述通信接口之间可通信;
所述通信接口,用于接收写请求,所述写请求中包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含第一段的标识及可用偏移量,所述第一段的标识承载有第一DIE的标识、及与所述第一DIE相连的通道的标识;
所述内存用于保存本地映射表,所述本地映射表用于记录段与固态硬盘物理地址的映射关系,所述固态硬盘物理地址由块标识构成;
所述处理器,用于根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询所述本地映射表,若所述本地映射表中记录有与所述第一段相对应的块,则根据所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则
根据所述第一段的标识解析出所述第一DIE的标识、及与所述第一DIE相连的通道的标识,基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块;根据所述写入地址中包含的所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
结合第四方面,在第四方面的第一种实现中,所述处理器还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
可选的,所述本地映射表可以是多维数组本地映射表,也可以是多级本地映射表。
可选的,所述本地映射表也可以是保存“段+可用偏移量”与“固态硬盘物理地址”的映射关系,所述固态硬盘物理地址由块标识和页标识构成。
本申请第五方面提供了一种将数据写入固态硬盘的方法,所述方法适用于存储系统,所述存储系统包括控制器和所述固态硬盘,所述固态硬盘和所述控制器可通信,所述固态硬盘包含多个通道,所述多个通道中的每一个通道连接多个DIE;所述控制器预先创建多个段;该方法包括:
所述控制器从所述多个DIE中选择第一DIE;
所述控制器从所述多个段中选择第一段,以及确认所述第一段的可用偏移量;
所述控制器生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识,所述第一段的标识及所述可用偏移量;
所述控制器向所述固态硬盘发送所述写请求。
在本发明实施例中,所述控制器在选择所述第一DIE之前,接收来自主机的一个或多个主机写请求,每一个主机写请求中携带有主机逻辑地址、数据和数据长度,所述主机逻辑地址是所述主机写入所述数据的起始逻辑地址;所述数据为待写入所述存储系统的数据;所述数据长度用于标识所述数据的长度。所述控制器可以缓存所述数据,并以所述固态硬盘的页的容量为单位对所述主机写请求所携带的数据进行拆分、和/或组合操作生成多个单位长度的数据块。所述控制器可以是在接收到所述主机写请求后就执行选择第一DIE的步骤,也可以是在满足第一条件时再启动执行选择第一DIE的步骤,所述第一条件可以是当缓存的所述数据的数据长度大于特定阈值,也可以是所述控制器进入新的一个数据写入周期。
在选择所述第一DIE之前,所述控制器100还可以先确定待写入固态硬盘的目标数据及所述目标数据的数据长度,其中,所述目标数据可以是上述1个或多个单位长度的数据块,具体个数可以由所述控制器100灵活设置;可替代的,所述控制器100也可以是在选择了所述第一段及可用偏移量之后,再确定待写入固态硬盘的目标数据及所述目标数据的数据长度,这里所述数据长度应小于基于所述可用偏移量确认的所述第一段的可用存储空间,所述目标数据可以是上述1个或多个单位长度的数据块。
结合第五方面,在第五方面的第一种实现中,所述第一DIE为无状态DIE。
结合第五方面或第五方面的第一种实现,在第五方面的第二种实现中,所述控制器基于所述目标数据的主机逻辑地址确定所述目标数据的访问频度;则若所述目标数据的访问频度高于访问频度阈值,则所述第一DIE上所包含的访问频度高于所述访问频度阈值的数据的量低于第一阈值。
可选的,所述控制器还用于基于前述通过拆分、和/或组合操作得到的每一个单位长度的数据块的主机逻辑地址分别查询所述访问频度表以确认每一个数据块的访问频度,并从查询结果可以识别出上述每一个数据块属于热数据还是属于冷数据,然后所述控制器100查询所述冷热数据分布表,将所述冷热数据分布表记录的每一个DIE当前已保存的热数据的量与第一阈值进行比较,从热数据的量小于所述第一阈值的DIE中选择某个DIE作为第一DIE,该第一DIE可以用于保存上述识别为属于热数据的1个或多个单位长度的数据块;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100可以选择当前保存的热数据的量最少的DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100也可以进一步参照前述第一方面的第1种实现以及后面将要描述的第一方面的第三、四、五种实现的任何一个或多个从所述多个DIE中选择第一DIE;可选的,还可以选择多个第一DIE,每一个第一DIE用于承载上述多个属于热数据的单位长度的数据块中的一部分。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第三种实现中,所述第一DIE上所存储的有效数据量低于第二阈值。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第四种实现中,所述第一DIE的磨损度低于磨损度阈值。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第五种实现中,所述第一DIE没有读命令需要处理;或所述第一DIE需要处理的读命令的数量低于第三阈值。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第六种实现中,所述第一段为空白段。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第七种实现中,所述第一段已被分配给所述第一DIE,且所述第一段还有可用存储空间。
可选的,所述控制器选择所述第一段并确认可用偏移量之后,基于所述可用偏移量确定所述目标数据和所述数据长度,具体为:基于所述可用偏移量确认所述第一段当前还剩余的可用存储空间,则所述写请求中的所述目标数据的数据长度不能超过所述剩余的可用存储空间,并基于所确定的数据长度选择目标数据,所述目标数据可以是上述1个或多个单位长度的数据块。
可选的,如前所述,所述目标数据以及所述目标数据的数据长度也可以是在上述选择的第一DIE之前就由所述控制器确定,则在所述生成写请求之前,所述控制器可以先将所述已确认的所述目标数据的数据长度与基于所述第一段的可用偏移量确认的所述第一段的可用存储空间做比较,若所述目标数据的数据长度小于所述第一段的可用存储空间,则直接将所述目标数据以及所述目标数据的数据长度包含在所述写请求中;若目标数据的数据长度大于所述第一段的可用存储空间,则所述控制器需要根据所述第一段的可用存储空间将所述目标数据拆分为2个分块,其中第1分块的数据长度小于或等于所述第一段的可用存储空间,第2分块则为所述目标数据除所述第1分块外的剩余部分;则在执行所述生成写请求时,所述控制器将所述拆分后的第1分块以及其对应的数据长度分别作为目标数据以及所述目标数据的数据长度包含在所述写请求中;针对所述第2分块,则可以再重复执行所述选择第一段及确认可用偏移量、以及生成写请求的步骤;或者可选的,重复执行步骤选择第一DIE、选择第一段及确认可用偏移量、以及生成写请求的步骤。
结合第五方面或第五方面的上述任意一种实现,在第五方面的第八种实现中,所述控制器生成映射关系,所述映射关系用于记录所述目标数据的主机逻辑地址同与所述第一DIE相连接的通道、所述第一DIE、所述第一段和所述可用偏移量之间的映射;将所述映射关系保存到系统映射表。
在本发明实施例中,在有数据需要被写入固态硬盘时,所述控制器要选择第一DIE,表明待写入的目标数据应该保存在所述第一DIE所包含的块中,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。进一步的,所述控制器100在选择第一DIE时可以灵活使用选择策略,如DIE的状态、数据访问频度、DIE的有效数据量、DIE的磨损度、DIE待处理的读请求数量等因素中1个或多个,以此实现为待写入固态硬盘的数据选择较优的DIE,由此实现所述控制器有效的使用所述固态硬盘的存储空间。
本申请第六方面提供一种控制器,所述控制器包括处理器、存储器和第二通信接口,所述存储器中保存有程序指令,所述处理器用于执行所述程序指令以完成所述控制器的各种处理动作,具体如前述本申请第一、二、五方面所述。所述存储器还用于保存所述系统映射表。所述第二通信接口用于和所述固态硬盘通信,所述处理器可以通过所述第二通信接口将操作命令,如写请求、或读请求等发送给所述固态硬盘,接收来自固态硬盘的各类消息。所述控制器还包括第一通信接口,所述第一通信接口用于和主机通信,所述控制器可以通过所述第一通信接口接收主机的操作指令,如主机读请求、主机写请求等,并将其交由所述处理器处理;所述第一通信接口还用于向所述主机发送消息,如写成功消息、写失败消息、读失败消息、或读取的数据等;所述第一通信接口可以是主机总线适配器卡。所述存储器还可以用于缓存所述第一通信接口从主机接收的主机写请求中携带的数据、或缓存从所述固态硬盘所读取的数据。
本申请第七方面提供一种控制器,所述控制器包含第一通信模块、存储模块、DIE选择模块、段选择模块、处理模块和第二通信模块。所述第一通信模块用于和主机通信,接收所述主机的操作指令,如主机读请求、主机写请求等,还用于向所述主机发送消息,如写成功消息、写失败消息、读失败消息、或读取的数据等。
所述存储模块,用于可以用于缓存所述第一通信模块从主机接收的主机写请求中携带的数据。
所述处理模块,可用于对缓存的数据进行拆分、和/或组合操作,生成单位长度(如16KB)的数据块以及每个数据块的主机逻辑地址;可用于确定待写入固态硬盘的目标数据及所述目标数据的数据长度;还可用于创建多个段,可将所述创建的多个段的基本信息放在所述存储模块中保存。
所述DIE选择模块,用于选择第一DIE,具体参照本申请提供的第一方面的第一种至第五种实现,第二方面的第一种至第五种实现,以及第五方面的第一种至第五种实现。
所述段选择模块,用于选择第一段及确认可用偏移量,具体参照本申请提供的第一方面的第六种实现,第二方面的第六种实现,以及第五方面的第六、七种实现。
所述处理模块,还用于根据所述DIE选择模块选择的所述第一DIE、所述段选择模块选择的所述第一段及确认可用偏移量生成写请求;可选的,所述处理模块还用于根据所述第一段的可用偏移量的取值以确定所述目标数据以及所述目标数据的数据长度,并基于此生成所述写请求;还用于生成系统映射表并实时更新;具体参照前述本申请提供的第一、第二、第五方面的各种实现。
所述存储模块,还可用于保存所述系统映射表。
所述第二通信模块,用于同固态硬盘通信,所述处理模块可以通过所述第二通信模块将各类操作命令,如写请求、或读请求等,发送给固态硬盘,接收来自所述固态硬盘的各类消息。
所述处理模块,还用于根据所述第一通信模块接收的来自主机的主机读请求查询所述系统映射表并生成第二读请求,通过所述第二通信模块将其发送给固态硬盘。所述第二通信模块接收来自所述固态硬盘返回的需读取的数据;所述存储模块,还用于缓存所述需读取的数据;所述处理模块,还用于将所述需读取的数据通过所述第一通信模块发送给所述主机。
本申请第八方面提供一种固态硬盘,所述固态硬盘包含通信模块、缓存模块、处理模块和存储模块,其中:
所述通信模块,用于和所述控制器通信,接收接收来自所述控制器的消息,如可以是写请求、读请求或其它命令;还用于向所述控制器发送消息,如可以写成功消息、写失败消息、读成功消息、读失败消息等。
所述缓存模块,用于缓存所述通信模块从所述控制器接收的消息中承载的数据。
所述处理模块,用于预先生成本地映射表,所述本地映射表可以保存在所述缓存模块中,也可以是保存在所述存储模块中,在需要使用时由所述处理模块读取并缓存在所述缓存模块中;还用于对所述通信模块接收的写请求进行处理,具体参见本申请第一方面的第八种实现、第二方面的第七种实现、第三方面、第四方面。
所述处理模块,还用于生成新的映射关系并保存到所述本地映射表中,具体参见本申请第一方面的第九种实现。
所述处理模块,还用于基于所述通信模块接收的读请求查询所述本地映射表,并基于查询结果从所述存储模块读取数据,将所述读取的数据通过所述通信模块发送给主机。
本申请第九方面提供一种存储介质,该存储介质中存储了程序,该程序被计算设备运行时,该计算设备执行前述第一方面或第一方面的任一实现方式提供的存储系统中控制器的处理动作、或者执行前述第二方面或第二方面的任一实现方式提供的存储系统中控制器的处理动作、或者第五方面或第五方面的任一实现方式提供的将数据写入固态硬盘的方法、或者六方面或第六方面的任一实现方式提供的控制器所执行的动作、或者七方面或第七方面的任一实现方式提供的控制器所执行的动作。该存储介质包括但不限于快闪存储器、HDD或SSD。
本申请第十方面提供一种存储介质,该存储介质中存储了程序,该程序被计算设备运行时,该计算设备执行前述第一方面或第一方面的任一实现方式提供的存储系统中固态硬盘的处理动作、或者执行前述第二方面或第二方面的任一实现方式提供的存储系统中固态硬盘的处理动作、或者第三方面或第三方面的任一实现方式提供的固态硬盘的动作、或者第四方面或第四方面的任一实现方式提供的固态硬盘的动作、或者第八方面或第八方面的任一实现方式提供的固态硬盘的动作。该存储介质包括但不限于快闪存储器、HDD或SSD。
本申请第十一方面提供一种计算机程序产品,该计算机程序产品包括程序指令,当该计算机程序产品被计算机执行时,该计算机执行前述第一方面或第一方面的任一实现方式提供的存储系统中控制器的处理动作、或者执行前述第二方面或第二方面的任一实现方式提供的存储系统中控制器的处理动作、或者第五方面或第五方面的任一实现方式提供的将数据写入固态硬盘的方法、或者六方面或第六方面的任一实现方式提供的控制器所执行的动作、或者七方面或第七方面的任一实现方式提供的控制器所执行的动作。该计算机程序产品可以为一个软件安装包。
本申请第十一方面提供一种计算机程序产品,该计算机程序产品包括程序指令,当该计算机程序产品被计算机执行时,该计算机执行前述第一方面或第一方面的任一实现方式提供的存储系统中固态硬盘的处理动作、或者执行前述第二方面或第二方面的任一实现方式提供的存储系统中固态硬盘的处理动作、或者第三方面或第三方面的任一实现方式提供的固态硬盘的动作、或者第四方面或第四方面的任一实现方式提供的固态硬盘的动作、或者第八方面或第八方面的任一实现方式提供的固态硬盘的动作。
在本发明实施例中,在有数据需要被写入固态硬盘时,所述控制器要选择第一DIE,要求待写入的目标数据应该保存在所述第一DIE所包含的块中,后续固态硬盘要在所述第一DIE的范围内分配物理存储资源来保存所述目标数据,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。进一步的,所述控制器100在选择第一DIE时可以灵活使用选择策略,如DIE的状态、数据访问频度、DIE的有效数据量、DIE的磨损度、DIE待处理的读请求数量等因素中1个或多个,以此实现为待写入固态硬盘的数据选择较优的DIE,由此实现所述控制器有效的使用所述固态硬盘的存储空间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的应用场景图;
图2是本发明实施例提供的固态硬盘的结构图;
图3是本发明实施例提供的一种固态硬盘接入存储系统的初始化流程图;
图4是本发明实施例提供的控制器处理写请求的方法流程图;
图5是本发明实施例提供的固态硬盘处理写请求的方法流程图;
图6是本发明实施例提供的存储系统中处理读请求的方法流程图;
图7是本发明实施例提供的控制器的结构图;
图8是本发明实施例提供的另一种控制器的逻辑结构图;
图9是本发明实施例提供的另一种固态硬盘的逻辑结构图。
具体实施方式
本发明实施例提出了一种存储系统和固态硬盘,可以有效合理的使用所述固态硬盘的存储空间。
图1描绘了本发明实施例提供的存储系统的组成图,所述存储系统包括控制器100和固态硬盘200,在实际组网中,所述固态硬盘200可以有多个。
所述控制器100与主机(图中未示出)可通信,如可以是通过存储区域网络(英文:Storage Area Network,SAN),也可以通过其他网络,如以太网、局域网、广域网等与所述主机通信。所述控制器100可以是一种计算设备,如服务器、台式计算机等等,在所述控制器100上可以安装操作系统以及应用程序。所述控制器100可以接收来自主机的输入输出(I/O)请求。所述控制器100还可以存储所述I/O请求中携带的数据(如果有的话),并且将该数据写入任一固态硬盘200中。
图1仅是示例性说明,在实际应用中存储系统可包含多个控制器,每个控制器的物理结构和功能与控制器100类似,各个控制器之间、以及各个控制器和固态硬盘200之间能够相互通信。本实施例并不限定控制器的个数、各个控制器之间的连接方式、以及任意一个控制器与固态硬盘200之间的连接方式。
所述控制器100是所述存储系统的系统控制器,系统控制器一般是独立的设备,如无特别指明,本实施例中的控制器都是指系统控制器。
如图2所示,为本发明实施例提供的每一个所述固态硬盘200的结构示意图,所述固态硬盘200包括通信接口2001,处理器2002,内存2003,所述通信接口2001,处理器2002,内存2003之间可通信;所述固态硬盘200还包括多个闪存(Flash)芯片,所述闪存芯片是所述固态硬盘200的存储介质;所述固态硬盘200还包括多个通道(Channel),所述处理器2002和所述内存2003分别通过每一个通道与所述多个闪存芯片中的部分闪存芯片通信。
所述通信接口2001,用于与所述控制器100通信,接收来自所述控制器100的消息,如可以是写请求、读请求或其它命令;还用于向所述控制器100发送消息,如可以写成功消息、写失败消息、读成功消息、读失败消息等。
所述内存2003,用于缓存从所述控制器100接收的消息中承载的数据或从所述闪存芯片读取的数据。所述内存2003可以是RAM、ROM、闪存(Flashmemory)或固态硬盘(SolidState Disk,SSD)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定;所述内存中还可保存程序指令。
所述处理器2002,可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。在本发明实施例中,所述处理器2002可以用于执行所述内存2003所保存的程序指令以完成相应的处理:如可以是处理来自所述控制器100的消息(如读请求、写请求等)、以及所述固态硬盘自身的各种管理操作,如本地映射表的创建和更新、垃圾回收等,具体如下面各个方法实施例的具体描述。这里所述处理器2002通过运行所述程序指令所创建和更新的本地映射表可以保存在所述内存2003中。
如图2所示,在所述固态硬盘200内部,所述处理器2002、内存2003分别通过每一个通道与所述多个闪存芯片中的部分闪存芯片通信;各个通道之间相互独立,可以实现消息的并发处理,即所述处理器2002可以同时通过各个通道分别与不同的闪存芯片进行消息或数据的传输。图2的示例中所述固态硬盘有16个通道,但本领域技术人员可以理解的是本发明实施例不对固态硬盘内部的通道数做任何限制。
所述闪存芯片可以是单层单元(全称:Single Layer Cell,简称:SLC),也可以是多层单元(全称:Multi-Layer Cell,简称:MLC),还可以是其他存储单元。每一个所述闪存芯片包含1个或多个晶粒(DIE),每一个DIE包含M个块(Block),每一个块包含N个页(Page)。本领域普通技术人员可以理解的是,基于对闪存芯片、DIE、块、及页的容量设置的不同,所述固态硬盘中每个闪存芯片包含的DIE的数量、每个DIE所包含的块的数量M、以及每个块所包含的页的数量N的取值可以不同。举例说明,每个页的容量设置为16KB,每个块的容量若设置为8MB,则N的取值为512,即每个块可包含512个页;若每个DIE的容量设置为16GB,则M的取值为2048,即每个DIE可包含2048个块;以每个闪存芯片包含2个DIE为例进行说明,则每个闪存芯片的容量为32GB,若每个通道可连接4个闪存芯片,则表示该通道下可以连接8个DIE,则每个通道所管理的容量为128GB,参照图2,若所述固态硬盘包含16个通道,也即所述固态硬盘的总容量为2TB。本领域普通技术人员可以理解的是,在所述固态硬盘内部,每一次写操作是以页为单位进行数据写入;每一次读操作可以读整个页或部分页;DIE是所述固态硬盘内部的最小并发单位,也就是说每一个DIE在任一时刻只能处理1个消息,如读请求、写请求或擦除命令等,在该消息被处理的期间,其它消息不能被响应;以图2示例的所述固态硬盘为例,则每一个通道任一时刻最多处理8个消息,所述固态硬盘在任一时刻最多处理128个消息。
如图3所示,是本发明实施例提供的一种固态硬盘接入存储系统的初始化的流程图,在所述存储系统上电、或当有新的固态硬盘接入所述存储系统时执行所述流程,可以使得所述控制器100获取所述固态硬盘的基本信息,便于所述控制器100对所述固态硬盘的存储空间进行管理和调度。
步骤301、控制器向固态硬盘发送基本信息请求消息。
所述存储系统上电,所述控制器100可以是以广播、组播的方式向所述存储系统中的固态硬盘200发送基本信息请求消息,也可以是以单播的方式分别向所述存储系统中的每一个固态硬盘200发送基本信息请求消息。在所述存储系统运行过程中,所述控制器100还可以周期性的发送所述所述基本信息请求消息,这样可以用于发现新接入的固态硬盘。所述固态硬盘200的所述通信接口2001接收来自所述控制器100的所述基本信息请求消息。
步骤302、固态硬盘向所述控制器发送基本信息反馈消息。
所述固态硬盘200在收到所述基本信息请求消息后,将自身的基本信息承载在基本信息反馈消息中发送给所述控制器100,如可以是所述处理器2002将自身的基本信息承载在所述基本信息反馈消息中并通过所述通信接口2001发送给所述所述控制器100。本发明实施例中,所述基本信息可以包含如下信息中的一种或多种:固态硬盘标识、固态硬盘容量、通道数、每个通道内DIE的数量、每个DIE内块的数量、每个块内页的数量、每个页的容量等。可选的,所述固态硬盘200还可以把自身每一个通道的通道标识、各个通道下的每个DIE的DIE标识也一并上报给所述控制器100。
本发明实施例中,所述控制器100在收到来自各个固态硬盘200上报的基本信息反馈后,如果所述各个固态硬盘200仅仅上报了通道数、每个通道内DIE的数量、每个DIE内块的数量,则所述控制器100可以为每个固态硬盘200内的每个通道、每个DIE分配标识。可选的,所述控制器100可以是依照目前业界的通用实现来进行标识分配,假如固态硬盘200包含16个通道,每个通道包含8个DIE,则通道标识可以依次是通道0、通道1...通道15;各个通道内的每个DIE的DIE标识可以是DIE0、DIE1...DIE7,这样所述控制器100需要基于“固态硬盘标识、通道标识和DIE标识”来识别和区分每个固态硬盘内的全部128个DIE;可选的,所述控制器100也可以对所述固态硬盘内全部128个DIE分配全局标识,即依次为DIE0、DIE1、DIE2...DIE126、DIE127;可选的,所述控制器100在设置DIE标识时也可以把通道标识作为DIE标识的一部分,例如通道0所包含的第一个DIE的标识也可以设置为“通道0DIE0”,或在设置DIE标识时也可以把固态硬盘标识和通道标识共同作为DIE标识的一部分,如可以是“固态硬盘200通道0DIE0”。进一步的,所述控制器100对每个固态硬盘200内的通道和DIE分配标识后,可以将标识分配规则通知所述固态硬盘200,这样后续固态硬盘200可以基于所述控制器100分配的DIE标识准确识别出相应的DIE。
如果所述各个固态硬盘200在步骤302还反馈了其内部每个通道的通道标识、每个DIE的DIE标识,则所述控制器100可以直接使用来自固态硬盘200上报的“固态硬盘标识、通道标识和DIE标识”来识别和区分每个固态硬盘内的各个DIE,不用自己另行分配。
通过上述流程,每个固态硬盘在接入所述存储系统后,将其自身的基本信息反馈给所述控制器100,在所述控制器100收集到所述存储系统内各个固态硬盘200的基本信息后,可以对所有固态硬盘的存储空间进行管理并对主机提供存储服务。
本发明实施例中,所述控制器100以段(Segment)为单位来管理存储空间并对主机提供存储服务,所述控制器100创建多个段,本实施例建议段的容量可以设置为所述固态硬盘200中块的容量的整数倍,以块的容量为8MB为例,则段的容量可设置为8MB、16MB、24MB...,依次类推,需要强调的是本发明实施例不对段的容量大小进行具体限制,用户可以基于实际存储的需要灵活设置段的容量。在确定了段的容量后,进一步基于所述固态硬盘200的容量可以确定需要创建的段的数量,创建段后会为每个段配置基本信息。以固态硬盘的容量为2TB、段的容量为16MB为例说明,则所述控制器100需要创建128K个段(2TB/16MB=128K),并设置每个段的基本信息。本发明实施例中,每个段的基本信息可以包含如下字段:
段标识:用于唯一识别段,段标识可以是数字、字符或者符号,也可以是数字、字符或者符号之间的任意组合。
主机逻辑地址:用于表示段内各个偏移量所存放的数据所对应的主机逻辑地址。
段状态:表示段当前的状态,在本实施例中,可分为四种状态划,分别是空闲(Free)状态、待写入(Writing)状态、写满(Full)状态和垃圾回收(Garbage Collection)状态,所述空闲状态是指段当前未被写入任何数据,如可以是初始化后的段或刚做完垃圾回收的段;待写入状态是指段已经被分配的段,可用于写入数据;写满状态是指段的全部空间均已被写满;所述垃圾回收状态是指段当前处于垃圾回收中。
段内无效数据量:可选参数,用于记录段中无效数据的量,初始值为0,每当针对该段所记录的某一主机逻辑地址的数据做一次修改或删除操作,则所述段无效数据量的取值加1。
固态硬盘标识:可选参数,当段被分配时,用于表示该段对应的固态硬盘。
通道标识:可选参数,当段被分配时,用于表示该段对应的通道。
DIE标识:可选参数,当段被分配时,用于表示该段对应的DIE。
可用偏移量:可选参数,用于记录该段当前可用的偏移量的起始位,初始值可为0。基于段的容量设置的不同,段的偏移量取值范围有所不同,如前所述,本发明实施例建议所述段的容量为所述固态硬盘的块的容量的整数倍,此处以块的容量为8MB、段的容量为16MB为例说明,即每个段在固态硬盘中应该有2个块与其对应,如果每个块所包含的页为512个,则段的容量相当于1024个页,则所述段的偏移量取值可以为0-1023,则初始时所述段的可用偏移量取值为0,每个偏移量对应于块内的1个页,随着数据不断写入到所述段中,则可用偏移量取值变大。这里可以理解的是,所述可用偏移量取值0-511,分别对应于与该段相对应的2个块中的第一个块的512个页,所述可用偏移量取值512-1023,分别对应于与该段相对应的2个块中的第二个块的512个页。
在每一个段被创建时,为该段分配段标识,段的状态设置为空闲状态,可用偏移量和段内无效数据量设置为0,其它基本信息可以先空置,在该段后续被分配给主机进行数据写入后再设置该段的基本信息中的其它信息项。本实施例中,可选的,所述控制器100可以以数组或链表的方式来管理所有段,所述数组或链表的每一个节点就代表1个段,该节点用于记录该段的基本信息。可选的,本发明实施例中,还可以采用多个队列来分别管理上述段:
空白段队列:用于管理所有未被分配的段,在初始阶段,所有段都放在该队列进行管理。
满负载段队列:当某个段已被分配给用户且该段已经被写满,即没有可用空间,则将该段放在满负载段队列管理。
进一步的,还可以设置部分负载段队列:若某个段已被分配且被写入了整数倍块容量的空间、并且该段还有可用空间,则将该段放在部分负载段队列管理。可以理解的是,若所述段的基本信息中的可用偏移量取值没有达到所述段的偏移量的最大值,则说明所述该段还有可用空间,若根据公式“(可用偏移量取值+1)/每个块内包含的页数”而得出计算结果为正整数,则说明该段已被写入了整数倍块容量的空间,如前述举例,所述每个块内包含的页数可以是512,每个段可对应2个块的容量,则所述段的偏移量的最大值可以是1023。
所述存储系统保存数据的流程包含所述控制器100的处理流程以及所述固态硬盘200的处理流程,如图4所示,为本发明实施例提供的一种控制器将数据写入固态硬盘的方法流程图。
步骤400、控制器接收主机写请求。
所述控制器100会接收来自主机的一个或多个主机写请求,每一个主机写请求中携带有主机逻辑地址(Logical Block Address,LBA)、数据(Data)、数据长度(DataLength),所述主机逻辑地址是所述主机写入所述数据的起始逻辑地址;所述数据为待写入所述存储系统的数据;所述数据长度用于标识所述数据的长度。
可选的,所述控制器100在收到所述主机写请求后,可以将所述主机写请求所携带的所述数据缓存,然后向所述主机发送写完成消息(图中未画出),用于通知所述主机所述主机写请求处理成功,也可以是在完成后续处理并将所述数据发送给所述固态硬盘200并且在收到来自所述固态硬盘200的写成功消息后,再向所述主机发送写完成消息(图中未画出),用于通知所述主机所述主机写请求处理成功。
可选的,因为所述主机下发的不同主机写请求的数据长度可能各自不同,若直接将所述主机写请求的数据发送给所述固态硬盘200保存,可能会出现“页溢出”的现象,即所述固态硬盘可能需要分配1个或多个页用于保存所述数据,但最后1个页的空间又未被写满,由此会导致固态硬盘空间使用率低、地址管理复杂等问题。为了避免“页溢出”现象的发生,所述控制器100可以以所述固态硬盘200的页的容量为单位,对所述主机写请求所携带的数据进行拆分、和/或组合操作,拆分操作具体为:例如当某个主机写请求携带3MB长度的数据,基于前述举例,页的容量为16KB,则可以将该第一写请求的数据拆分为3MB/16KB=192个数据块,每个数据块的数据长度为16KB;组合操作具体为:若某个主机写请求携带的数据的数据长度为10KB,因为该数据的数据长度小于1个页的容量,则不用拆分,可以再与其它主机写请求的全部或部分数据组合成1个16KB的数据块;若某个主机写请求携带的数据长度为19KB,则可以先将该19KB的数据拆分为2个数据块,其中1个数据块的数据长度为16KB,另一个数据块的数据长度为3KB,再把该3KB的数据块与其它主机写请求的全部或部分数据组合生成数据长度为16KB的数据块。所述控制器100在收到多个主机写请求后可以灵活应用上述拆分和/或组合操作,将接收到的来自主机的一个或多个主机写请求的数据划分为多个数据长度为16KB的数据块,并且基于每个主机写请求所携带的主机逻辑地址计算得到拆分、和/或组合出来的每一个16KB数据块的主机逻辑地址。需要说明的是,本实施例仅是以1个页的容量(如16KB)为例进行说明,在实际应用中,可以是以页的容量的整数倍为单位对来自主机的数据进行拆分和/或组合操作,具体大小可以灵活设置。所述控制器100可以在接收到所述主机写请求后就启动下述流程,进入后续步骤的操作;也可以是如上所述将所述主机写请求所携带的数据缓存,在满足第一条件时再启动下述流程,进入后续步骤的操作。本实施例中,所述第一条件可以是当缓存的来自所述主机写请求所携带的数据的数据长度大于特定阈值;或者所述控制器100可以是周期性将其缓存的来自所述主机写请求所携带的数据写入所述固态硬盘200,因此所述第一条件也可以是当新的一个数据写入周期触发后启动下述流程,进入后续步骤的操作。
可选的,在进入步骤401之前,所述控制器100还可以先确定待写入固态硬盘的目标数据及所述目标数据的数据长度。其中,所述目标数据可以是上述1个或多个数据长度为16KB的数据块,具体个数可以由所述控制器100灵活设置;可替代的,所述控制器100也可以是在下述流程的步骤402之后再确定待写入固态硬盘的目标数据及所述目标数据的数据长度。
步骤401、所述控制器选择第一DIE。
所述控制器100先从多个DIE中选择第一DIE,本发明实施例中,所述控制器100可以基于多种准则选择所述第一DIE,具体如下所述:
准则1:随机原则
即所述控制器100可以在多个DIE中随机选择任意DIE作为第一DIE。
准则2:无状态优先原则
即所述控制器100可以从多个DIE中选择“无状态DIE”作为第一DIE,所谓的“无状态DIE”是指所述DIE当前没有任何消息需要处理。本实施例需要澄清的是,所谓“当前没有任何消息处理”可能是因为在所述控制器100做选择的动作之前从未发送过任何需要在所述第一DIE上处理的消息、或可能是因为在所述控制器100做选择的动作时所述第一DIE已经处理完历史消息。
可选的,所述控制器100可以实时维护状态表,所述状态表记录所述存储系统中每一个DIE的当前状态。每一个DIE的初始状态为“无状态”,当有消息被发送给某一个DIE,则将该DIE的状态修改为“有状态”,若后续有收到了来自所述固态硬盘返回的处理成功或处理失败的消息,则又把该DIE的状态修改为“无状态”。则在这种情况下,所述控制器100选择第一DIE时可以是查询其维护的状态表,挑选当前处于“无状态”的DIE作为第一DIE。
因为DIE是固态硬盘的最小并发单元,所以若在所述第一DIE为无状态DIE的情况下将数据保存到所述第一DIE上,所述第一DIE归属的固态硬盘处理该数据写入的实时性最高、处理时间最短,这样把数据写入固态硬盘的效率最高,从而有利于提升所述存储系统的整体处理效率,使所述控制器100能更加有效且合理的使用固态硬盘的存储空间。
准则3:性能优先原则
随着用户持续在所述存储系统保存数据、或基于用户需求反复从所述存储系统读取已保存的部分数据、或对已保存的部分数据进行修改,则可能会出现用户的部分数据会因为被频繁访问,如被读或被修改,而成为热数据,用户的部分数据会因为在一段时间内都没有被访问或被访问的次数很少而成为冷数据。可选的,所述控制器100可以维护访问频度表,以上述每一个16KB的数据块的主机逻辑地址为索引记录所述每一个16KB数据块的访问频度,当某数据块第一次被写入到所述固态硬盘时,该数据块的访问次数为1,后续每一次访问该数据块,如读或修改,则将该数据块的访问次数加1,若该数据块的访问次数大于访问频度阈值,则可认为该数据块为热数据,反之,若该数据块的访问次数小于所述访问频度阈值,则可认为该数据块为冷数据。进一步的,所述控制器100还可以记录并实时维护冷热数据分布表,所述冷热数据分布表用于记录每一个DIE的冷热数据分布,即记录每一个DIE上热数据的量(即访问频度大于所述访问频度阈值的数据的量)、以及记录每一个DIE上冷数据的量(即访问频度小于所述访问频度阈值的数据的量)。
可选的,若在进入步骤401之前,所述控制器100已经确定待写入固态硬盘的目标数据,则所述控制器100在选择所述第一DIE时,以所述目标数据的主机逻辑地址查询所述访问频度表以所述目标数据的访问频度,若确认所述目标数据属于热数据,则所述控制器100查询所述冷热数据分布表,将所述冷热数据分布表记录的每一个DIE当前已保存的热数据的量与第一阈值进行比较,从热数据的量小于所述第一阈值的DIE中选择某个DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100可以选择当前保存的热数据的量最少的DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100也可以进一步参照前述准则1、2以及后面将要描述的准则4-6的任何一个或多个准则从所述多个DIE中选择第一DIE。
可选的,若在进入步骤401之前,所述控制器100没有确定待写入固态硬盘的目标数据,则此步骤中,所述控制器100首先基于上述通过拆分、和/或组合操作得到的每一个16KB的数据块的主机逻辑地址分别查询所述访问频度表以确认每一个16KB的数据块的访问频度,并从查询结果可以识别出上述每一个16KB的数据块属于热数据还是属于冷数据。然后所述控制器100查询所述冷热数据分布表,将所述冷热数据分布表记录的每一个DIE当前已保存的热数据的量与第一阈值进行比较,从热数据的量小于所述第一阈值的DIE中选择某个DIE作为第一DIE,该第一DIE可以用于保存上述识别为属于热数据的1个或多个16KB数据块。可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100可以选择当前保存的热数据的量最少的DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都小于第一阈值,则所述控制器100也可以进一步参照前述准则1、2以及后面将要描述的准则4-6的任何一个或多个准则从所述多个DIE中选择第一DIE;可选的,还可以选择多个第一DIE,每一个用于承载上述多个属于热数据的16KB数据块中的一部分,极限情况是当有L个16KB的数据块是热数据,则可以选择L个第一DIE,每一个第一DIE保存1个16KB的数据。对于识别出来的1个或多个属于冷数据的16KB数据块,可选的,所述控制器100经查询所述冷热数据分布表从当前保存的热数据的量大于所述第一阈值的DIE中选择某个DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都大于第一阈值,则所述控制器100可以选择当前保存的热数据的量最多的DIE作为第一DIE;可选的,若经查询发现当前有多个DIE上保存的热数据的量都大于第一阈值,则所述控制器100也可以进一步参照前述准则1、2以及后面将要描述的准则4-6的任何一个或多个准则从所述多个DIE中选择第一DIE;可选的,还可以选择多个第一DIE,每一个用于保存上述多个属于冷数据的16KB数据块中的一部分,极限情况是当有L个16KB的数据块是冷数据,则可以选择L个第一DIE,每一个第一DIE保存1个16KB的数据;可选的,针对属于冷属于的16KB数据块,所述控制器100也可以不用再通过查询所述冷热数据表来选择DIE,而是直接参照前述准则1、2以及后面将要描述的准则4-6的任何一个或多个准则从所述多个DIE中选择第一DIE。
如前所述,因为DIE是所述固态硬盘的最小并发单元,针对热数据而言,当所述第一DIE上的热数据的量小于所述第一阈值时,将所述属于热数据的1个或多个16KB数据块写入到所述第一DIE上,可以预见所述所述第一DIE归属的固态硬盘处理的实时性较好,将其写入到所述第一DIE所包含的块上的处理时间会比较短,这样有利于提升所述存储系统整体的处理效率,使所述控制器100能更加有效的使用所述固态硬盘的存储空间。
进一步的,为了更加精细化的识别所述固态硬盘的每一个DIE的性能基于每一个DIE的性能做出合适的选择,本发明实施例中,可以在所述访问频度表中将用户的数据细分为多个冷热等级,相应的在统计每一个DIE的冷热数据分布时可以设立多个阈值,这样在选择所述第一DIE时可以参照其对应的的冷热等级选择合适的第一DIE。
准则4:有效数据量均衡原则
所述控制器100可以记录每一个DIE所保存的有效数据的量,则所述控制器100选择有效数据的量小于第二阈值的DIE作为第一DIE;若出现有多个DIE的有效数据的量都小于所述第二阈值的情况,则所述控制器100有多种处理方式:选择有效数据的量最小的DIE作为第一DIE、或进一步参考前述准则1-3及后面将要描述的准则5-6中的一个或多个准则在所述多个有效数据的量小于所述第二阈值的DIE中选择第一DIE。
通过该准则选择第一DIE,可以实现每一个DIE上保存的有效数据量相对均衡,由此可以使所述控制器100能更加有效的使用所述固态硬盘的存储空间。
准则5:磨损均衡原则
所述控制器100可以记录每一个DIE的磨损度,则所述控制器100选择磨损度小于第一磨损度阈值的DIE作为第一DIE;若出现有多个DIE的磨损度小于第一磨损度阈值的情况,则所述控制器100有多种处理方式:选择磨损度最小的DIE作为第一DIE、或进一步参考前述准则1-4及后面将要描述的准则6中的一个或多个准则在所述多个磨损度小于所述第一磨损度阈值的DIE中选择第一DIE。
所述控制器100基于所述磨损度均衡原则选择第一DIE,可以以DIE为粒度实现磨损均衡,从而提升所述固态硬盘的使用寿命,由此可以使所述控制器100能更加有效而合理地使用所述固态硬盘的存储空间。
准则6:读请求延时原则
所述控制器100可以维护消息队列,在所述消息队列上记录的是准备发送给所述固态硬盘的消息,如读请求、或写请求等;或者可以是针对每一个DIE分别维护1个上述消息队列;则所述控制器100在选择第一DIE时,查询消息队列,如果发现某个DIE当前没有读请求需要处理,则选择该DIE作为第一DIE;或者选择当前需要处理的读命令的数量小于第三阈值的DIE作为第一DIE。若出现有多个DIE都没有读命令需要处理,则所述控制器100可以进一步参考前述准则1-5中的一个或多个准则在所述没有读命令需要处理的多个DIE中选择第一DIE;若出现有多个DIE当前需要处理的读命令的数量小于所述第三阈值的情况,则所述控制器100有多种处理方式:选择当前需要处理的读命令的数量最少的DIE作为第一DIE、或在进一步基于前述准则1-5中的一个或多个准则来选择第一DIE。
通过准则6,可以避免将目标数据写入到当前可能有关键读命令需要处理的DIE上而由此导致的读延时,以此可以提升所述存储系统的整体性能,使所述控制器100能更加有效的使用所述固态硬盘的存储空间。
进一步的,本发明实施例中,在实际应用时,上述准则1-6中的每一条可以单独应用,也可以是其中任意一条或多条准则结合使用。
步骤402、所述控制器选择第一段并确认可用偏移量。
如前所述,所述控制器100预先创建了多个段,则所述控制器100还要选择第一段并确认所述第一段的可用偏移量。
可选的,所述控制器100可以预先以DIE为粒度分别记录已分配的段,如可以是分别为每个DIE维护一个已分配段数组或已分配段链表,所述已分配段数组或已分配段链表上的每一个节点用于记录已分配给该DIE的段的基本信息,初始时所述已分配段数据或已分配段链表为空。这样,当所述控制器100在选择第一段时,首先根据所述步骤401所选择的所述第一DIE来查询所述第一DIE对应的已分配段数组或已分配段链表,如果存在已分配给所述第一DIE的段,则进一步再确认该段是否还有可用存储空间,如可以是确认该段的基本信息中记录的可用偏移量的取值是否小于最大值(如前举例,最大值可以是1023),若是,则说明该段当前还有可用存储空间,则选择该段作为第一段,所述确认可用偏移量即为将所述第一段的基本信息中当前记载的可用偏移量读出,用于后续流程处理;如果经查询发现所述控制器100在这之前还没有给所述第一DIE分配任何段、或所有已分配给所述第一DIE的段都没有可用存储空间,如所有已分配给所述第一DIE的段的可用偏移量的取值都达到最大值,则表明需要为所述第一DIE再分配新的段,如可以是所述控制器100从前述的空白段队列中选择任意一个空白段作为所述第一段,此时所述第一段的可用偏移量是所述第一段的起始地址,即可用偏移量可以是0,本领域普通技术人员可以理解,如果段的偏移量是从1开始记录,则此时的可用偏移量是1,然后将所选择的第一段的基本信息从所述空白段队列移除并记录在与所述第一DIE对应的已分配段数组或已分配段链表上。
通常情况下,当某一个段被分配给某一个DIE后,该段所对应的整数倍个块应该都来自该DIE,但在实际应用中,为了满足所述存储系统更加灵活的管理和分配存储空间的目的,还有一种可选实现是段可以分配给多个DIE,那这种情况下,该段所对应的整数倍个块可以来自不同的DIE。为实现该灵活管理的目的,如前所述可以建立部分负载段队列,所述控制器100可以实时或周期性的检测上述为每个DIE维护的已分配段数组或已分配段链表上所记录的各个已分配段的可用偏移量,基于所述可用偏移量计算每个已分配段的存储空间使用情况,如可以是通过公式“(可用偏移量+1)/每个块包含的页数”计算,若计算结果为正整数,则表明该段当前已使用了整数个块的存储空间,则可以把该段的基本信息从所述已分配段数组或已分配段链表上移除,并把该段的基本信息记录在所述部分负载段队列上。那么在这种情况下,所述选择第一段并确认可用偏移量可以按照如下步骤执行:
所述控制器100首先在所述第一DIE对应的所述已分配段数组或已分配段链表查询,如果存在已分配给所述第一DIE的段且该段还有可用存储空间,则选择该段作为第一段;如果经查询发现所述控制器100在这之前还没有给所述第一DIE分配任何段、或所有已分配给所述第一DIE的段都没有可用存储空间,则所述控制器100可以到所述部分负载段队列上查询,若所述部分负载段队列上存在某个段,则可选择该段作为第一段,进一步的可以将选择的第一段的基本信息从所述部分负载队列移除并记录到所述第一DIE对应的所述已分配段数组或已分配段链表上;进一步的,若所述部分负载段队列为空,则再从前述的空白段队列中选择任意一个空白段作为所述第一段,然后将所选择的第一段的基本信息从所述空白段队列移除并记录在与所述第一DIE对应的已分配段数组或已分配段链表上。
可选的,所述控制器100也可以不用先查询为所述第一DIE已分配的段是否有可用空间,可以先直接从所述空白段队列上选择任意一个空白段作为第一段,然后将所选择的第一段的基本信息从所述空白段队列移除并记录在与所述第一DIE对应的已分配段数组或已分配段链表上。本领域技术人员可以理解的是,这样可能出现的一种情况是所述存储系统的空白段很快会被分配完,那么当无空白段可以分配时,所述控制器100可以选择启动垃圾回收机制以将每个DIE上的有效数据集中保存在部分段上,以此实现释放出部分段作为空白段以供后续分配;还有一种可能的实现是本段描述的段选择方法与前述描述的分配方法相结合使用。
本领域技术人员可以理解的是,这里所说的数组或链表仅仅是一种实施例,但在实际应用中,可以灵活采取各种其他可能的数据结构来记录为每个DIE分配的段的基本信息,如可以是树等,本发明实施例不对数据结构本身做具体限制。
步骤403、所述控制器生成写请求。
所述写请求用于将数据写入到固态硬盘中,所述控制器100在选择所述第一DIE、所述第一段并确认所述可用偏移量后,可以生成所述写请求,所述写请求中包含写入地址、目标数据及数据长度。
所述写入地址包含的内容可以有如下2种场景:
1)所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识、所述第一段的标识、所述可用偏移量;
2)所述写入地址包含所述第一DIE的标识、所述第一段的标识、所述可用偏移量。参照前述实施例中描述的所述控制器100分配DIE标识的记载,如果通道标识已经作为DIE标识的一部分被包含在DIE标识中,则所述写入地址可以适用所述场景2)。
所述目标数据即是待写入固态硬盘的数据,所述数据长度为所述目标数据的数据长度。如前所述,一种可能的实现是,所述控制器100在上述步骤402之后,基于所述第一段的可用偏移量的取值以确定所述目标数据和所述数据长度,具体为:基于所述可用偏移量的取值可以确认所述第一段当前还剩余的可用存储空间,则所述写请求中的所述数据长度不能超过所述剩余的可用存储空间,并基于所确定的数据长度选择目标数据。举例说明,如果所述可用偏移量的取值为1023,则说明所述第一段只有1个偏移量对应的存储空间可用,如前所述,1个偏移量对应1个页的容量,即是16KB,因此所述数据长度即为16KB,则所述目标数据应该是上述1个数据长度为16KB的数据块;同样道理,如果所述可用偏移量的取值为1022,则所述数据长度应为32KB,则所述目标数据可以是上述2个16KB的数据块;依次类推,极限情况为若所述可用偏移量的取值为0,则所述数据长度最大可以为1024乘以16KB,则所述目标数据最多可以是上述1024个16KB的数据块;本领域技术人员可以理解的是,在所述段还剩余足够可用空间的情况下,也即所述可用偏移量的取值还比较小的情况下,所述数据长度可以在所述足够可用空间范围内由所述控制器100灵活设置,本实施例在此不作任何限制。所述控制器100在基于所述可用偏移量确定所述数据长度后,可以从前述的经过拆分、和/或组合而得到的多个16KB数据块中选择相应数量的数据块作为目标数据,这里需要特别说明的是,如果在步骤401中是基于所述准则3来选择所述第一DIE,则此步骤中在选择所述目标数据时应该是从识别为属于热数据的1个或多个16KB数据块中选择。
可选的,如前所述,所述目标数据以及所述目标数据的数据长度也可以是在上述步骤401之前就由所述控制器100确定,则在所述步骤403之前,所述控制器100可以先将所述已确认的所述目标数据的数据长度与基于所述第一段的可用偏移量确认的所述第一段的可用存储空间做比较,若所述目标数据的数据长度小于所述第一段的可用存储空间,则直接将所述目标数据以及所述目标数据的数据长度包含在所述写请求中;若目标数据的数据长度大于所述第一段的可用存储空间,则所述控制器100需要根据所述第一段的可用存储空间对所述目标数据拆分为2个分块,其中第1分块的数据长度小于或等于所述第一段的可用存储空间,第2分块则为所述目标数据除所述第1分块外的剩余部分;则在此步骤中,所述控制器100将所述拆分后的第1分块以及其对应的数据长度分别作为目标数据以及所述目标数据的数据长度包含在所述写请求中并执行后续流程,针对所述第2分块,则可以再重复执行所述步骤402、403;或者可选的,重复执行步骤401、402、403。举例说明:若在步骤401之前所述控制器100确认的目标数据的数据长度是64KB,但步骤402中所选择的所述第一段的可用偏移量为1022,那就意味着所述第一段的剩余可用空间只能存储32KB的数据,那么在这种情况下,本发明实施例中,所述控制器100可以把所述64KB的目标数据拆分成数据长度为32KB的第1分块和第2分块,并把所述第1分块携带在所述写请求中并执行后续流程;针对所述第2分块,重复执行步骤402、403;可选的,针对第2分块,也可以是重复执行步骤401、402、403。
可选的,所述控制器100确定了目标数据后,可以基于所述目标数据更新所述第一段的基本信息,具体包括:查询所述第一段的基本信息中的主机逻辑地址字段是否包含所述目标数据的主机逻辑地址,如果不包含,则将所述目标数据的主机逻辑地址也记录到所述第一段的基本信息中的主机逻辑地址字段中,如果包含,则说明所述第一写请求是对历史已保存数据的修改,则将所述第一段的基本信息中的无效数据量取值加1;将所述第一段的状态更新为“待写入状态”;基于所述目标数据的数据长度更新所述第一段的基本信息中记录的可用偏移量的取值,如可以是用所述数据长度除以所述固态硬盘200的页的容量得出计算结果,将所述计算结果累加到所述第一段的基本信息中的当前可用偏移量取值以得出刷新后的可用偏移量取值,该刷新后的可用偏移量取值用作以后其它新的写请求的处理;可选的,所述基本信息中的固态硬盘标识可以记录为所述第一DIE所归属的固态硬盘的标识;所述通道标识可记录为所述第一DIE所归属的通道的标识;所述DIE标识为可记录为所述第一DIE的标识。进一步的,所述控制器100还利用所述目标数据的主机逻辑地址查询除所述第一段外的已分配给各个DIE的其它的段,如果在所述其它已分配的段中存在某个段,该段的基本信息中所记录的主机逻辑地址中包含所述待保存数据的主机逻辑地址,则从该段的基本信息中删除所述目标数据的主机逻辑地址,将该段的基本信息中的无效数据量取值加1。该刷新第一段基本信息的动作也可以是在下述步骤403之后再执行。
步骤404、所述控制器发送所述写请求。
所述控制器100生成所述写请求后,将所述写请求发送给所述第一DIE所归属的固态硬盘,以实现把数据写入所述固态硬盘。
进一步的,本发明实施例中,所述控制器100可以预先生成系统映射表,如下表1所示,所述系统映射表中的每一行记录可以代表一条映射关系,用于记录“主机逻辑地址”与“固态硬盘写入地址”的映射关系,所述固态硬盘写入地址可以通过“固态硬盘标识+通道标识+DIE标识+段标识+可用偏移量”表示。该映射关系里,初始状态下所述系统映射表可以为空。如下表1所示,为所述系统映射表的一种示例:
Figure GWB0000003075060000381
表1
可选的,在满足上述映射关系实质的情况下,具体每一行的记录形式有多种可变的实现,举例如下:
可变实施1:以所述主机逻辑地址的最后一位或多位来对应到固态硬盘标识,则上述表1的右侧栏中就可以再需要记录固态硬盘标识的信息;
可变实施2:参照前述DIE标识的分配规则,如果DIE标识已经把通道标识作为其一部分,则上述表1的右侧栏中就可以再需要记录通道标识的信息;进一步的,如果DIE标识已经把固态硬盘标识及通道标识作为其一部分,则上述表1的右侧栏中就可以不再需要记录固态硬盘标识和通道标识的信息。
本实施例不再一一列举其它可变实施方式,只要是满足上述映射关系实质的各种可变实施方式都在本发明实施例的保护范围中。
所述控制器100可以在进行完上述步骤402后、或步骤403后、或步骤404后,针对本次写入操作生成新的映射关系并保存到所述系统映射表中,在新生成的映射关系中,所述主机逻辑地址是所述写请求中携带的目标数据所对应的主机逻辑地址;所述固态硬盘标识是所选择的第一DIE所归属的固态硬盘的标识;所述通道标识是与所选择的第一DIE相连的通道的标识;所述DIE标识是所选择的第一DIE的标识;可用偏移量是所选择的第一段的所记录的可用偏移量。
进一步的,本发明实施例中,所述控制器100可以在上述生成新的映射关系之前、或者之后,基于所述写请求所携带的所述目标数据所对应的主机逻辑地址查询所述系统映射表,如果发现所述系统映射表中已经存在与所述目标数据所对应的主机逻辑地址相关联的映射关系,则表明本次所述写请求是针对历史已写入数据的修改,则在所述系统映射表中将已存在的映射关系标记为失效状态,本领域技术人员可以理解的是,如果是在上述生成新的映射关系之后做所述查询动作的话,所述新生成的映射关系不应在查询范围内,上述失效动作主要是针对历史已存在的映射关系而言。
需要说明的是,上述表1仅仅是保存所述映射关系的一种形式,在实际应用中,也可以采用类似数组、链表等多种形式来保存所述映射关系,本实施例不对此构成限制。
在本发明实施例中,在有数据需要被写入固态硬盘时,所述控制器100要选择第一DIE,要求待写入的目标数据应该保存在所述第一DIE所包含的块中,后续固态硬盘要在所述第一DIE的范围内分配物理存储资源来保存所述目标数据,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。进一步的,所述控制器100在选择第一DIE时可以灵活使用选择策略,如DIE的状态、数据访问频度、DIE的有效数据量、DIE的磨损度、DIE待处理的读请求数量等因素中1个或多个,以此实现为待写入固态硬盘的数据选择较优的DIE,由此实现所述控制器100有效的使用所述固态硬盘的存储空间。
如图5所示,是所述固态硬盘200接收到所述写请求后的处理流程图,结合图2所示的所述固态硬盘200的装置结构示意图,可以是所述通信接口2001接收来自所述控制器100的写请求,并由所述处理器2002进行后续的处理,具体如下:
步骤500、固态硬盘查询本地映射表,所述本地映射表用于记录“段”与“固态硬盘物理地址”的映射关系。
所述固态硬盘200预先生成本地映射表,如可以是所述处理器2002运行所述程序指令来创建所述本地映射表,所述本地映射表可以是保存在所述内存2003中,也可以是保存在存储介质中,在需要使用时读到所述内存2003中。所述本地映射表记录的映射关系用于表示“段”与“固态硬盘物理地址”的映射关系,初始时所述本地映射表可以为空。基于所述固态硬盘200内对通道、DIE及块的标识分配规则不同,本地映射表可以有多种实现方式:
实现方式1:如下表2所示,所述本地映射表中的固态硬盘物理地址可以用块标识表示:
固态硬盘物理地址
段1 块0
段1 块2
段2 块5
表2
实现方式2:所述固态硬盘物理地址用“DIE标识+块标识”来表示,或者用“通道标识+DIE标识+块标识”的方式来表示,具体采用哪一种方式则主要看DIE标识内是否有包含通道标识而定,如下表3所示:
固态硬盘物理地址
段1 DIE1+块0
段6 DIE2+块2
段2 DIE1+块5
表3
进一步的,所述本地映射表在上述映射关系中还可以进一步增加可用偏移量与页的信息,以形成“段+可用偏移量”与“固态硬盘物理地址”的映射,所述的固态硬盘物理地址中进一步包含页的标识,如表4所示,是在前述实施方式1的映射关系中增加可用偏移量和页的标识:
Figure GWB0000003075060000411
表4
如下表5所示,也可以是在上述实施方式2的映射关系中增加可用偏移量和页的标识:
Figure GWB0000003075060000412
Figure GWB0000003075060000421
表5
当所述固态硬盘200的所述通信接口2001收到来自所述控制器100的写请求后,所述处理器2002解析所述写请求,基于所述写请求中所携带的写入地址中所包含的第一段的标识及所述可用偏移量查询所述本地映射表。
在实际应用中,当每个段的容量为对应于2个或2个以上的块的容量时,如前面举例,块容量为8MB,段容量为16MB,因为每个块所包含的页为512个,但容量为16MB的段的偏移量为1024,分别对应于1024个页,则此时可以采用多维数组的方式来保存所述本地映射关系,如下表6所示的多维数组本地映射表,其中每一行用于记录一个段的全部映射关系,表中所述的固态硬盘物理地址1、固态硬盘物理地址2...固态硬盘物理地址X分别代表与所述段相对应的多个块的每一个块的映射,X的取值基于段的容量决定,如果段的容量是块的容量的2倍,则X取值为2,如果段的容量是块的容量的5倍,则X取值为5,以此类推。则在执行查表时,所述处理器2002先基于所述写请求中的写入地址包含的第一段的标识来查询,如果在所述本地映射表中没有找到任何一行所记录的段标识与所述第一段的标识相同,则说明在接收到所述写请求之前,所述固态硬盘还未给所述第一段分配过任何块;如果在所述本地映射表中找到有一行映射关系中所记录的段标识与所述第一段的标识相同,则进一步的,所述处理器2002基于所述写请求中的写入地址所包含的可用偏移量计算应该查询哪一栏的固态硬盘物理地址,如可以根据公式“X=(可用偏移量+1)/每个块所包含的页数”来计算,X向上取整数,即若0<X<=1,则X取值为1,若1<X<=2,则X取值为2,以此类推。如上举例,每个块所包含的页数可以为512,则可以知道若可用偏移量为0-511,则应该在固态硬盘物理地址1这一列查询,若可用偏移量为512-1023,则应该在固态硬盘物理地址2这一列查询,以此类推。在所述多维数组本地映射表中查询即为:确认所述第一段的标识相对应的行、与基于所述可用偏移量的计算出的固态硬盘物理地址X列相交叉的表格中是否有记录块的标识,如果有,则说明所述固态硬盘200的处理器2002已经为所述第一段分配了与所述可用偏移量相对应的块,如果查询结果为空,则表明所述固态硬盘200的处理器2002还没有为所述第一段分配与所述可用偏移量相对应的块。
Figure GWB0000003075060000431
表6
可选的,还可以采用多级本地映射表的方式来管理所述固态硬盘200的所有本地映射关系,每一级本地映射表用于管理段内可用偏移量对应于1个块的本地映射关系,如第一级本地映射表用于保存段内可用偏移量为0-511的本地映射关系,第二级本地映射表用于保存段内可用偏移量为512-1023的本地映射关系,如果段的容量更大,则相应建立更多级的本地映射表。则所述固态硬盘200的所述处理器2002查询本地映射表具体可以为首先基于所述第二写请求中的写入地址所包含的可用偏移量确认待查询的第X级本地映射表,如可以采用下述公式确认:
X=(可用偏移量+1)/每个块所包含的页数
X向上取整数,即若0<X<=1,则X取值为1,若1<X<=2,则X取值为2,以此类推。如上举例,每个块所包含的页数可以为512,则可以知道若可用偏移量为0-511,则对应于第一级本地映射表,若可用偏移量为512-1023,则对应于第二级本地映射表,以此类推。然后在相应级的本地映射表上基于所述写请求中的写入地址所包含的第一段的标识查询,若在相应级的本地映射表上能查询到映射关系,则说明所述固态硬盘200的处理器2002已经为所述第一段分配了与所述可用偏移量相对应的块,如果查询不到映射关系,则表明所述固态硬盘200的处理器2002还没有为所述第一段分配与所述可用偏移量相对应的块。
步骤501、固态硬盘确认是否有已分配的块?
根据上述步骤500的查询结果,如果确认已经为所述第一段分配了与所述可用偏移量相对应的块,则进入步骤502,若还没有为所述第一段分配与所述可用偏移量相对应的块,则进入步骤503。
步骤502、固态硬盘将数据写入所述已分配的块。
所述固态硬盘200的所述处理器2002将所述写请求中所携带的所述目标数据写入所述已分配的块中,具体可以是先用所述可用偏移量计算对应的页标识,如可以是采用如下公式计算:
页标识=可用偏移量%每个块所包含的页数,“%”表示取模运算。
则所述固态硬盘200的所述处理器2002将所述写请求中所携带的所述目标数据从所述页标识对应的页开始写入所述已分配块中。
步骤503、固态硬盘选择空白块。
参考前述步骤402的描述,若所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识,则本步骤中所述固态硬盘200的所述处理器2002根据所述与所述第一DIE相连的通道的标识和第一DIE的标识从所述第一DIE所包含的多个块中选择空白块;若所述写入地址包含第一DIE的标识,则所述固态硬盘200的所述处理器2002根据所述第一DIE的标识从所述第一DIE所包含的多个块中选择空白块;进一步的,本实施例中,如果所述第一DIE的标识以及与所述第一DIE相连的通道的标识是之前所述固态硬盘200上报给所述控制器100的,则此处所述控制器100可以直接根据第一DIE的标识,或与所述第一DIE相连的通道的标识和第一DIE的标识识别出所述第一DIE;如果所述与所述第一DIE相连的通道的标识和第一DIE的标识是所述控制器100自行分配,则如前所述,所述固态硬盘200的所述处理器2002可以根据之前所述控制器100发送的标识分配规则将所述第二写请求中携带的与所述第一DIE相连的通道的标识和第一DIE的标识转化为所述固态硬盘200自身的对通道和DIE的标识,并基于转化后的标识从所述第一DIE所包含的多个块中选择空白块。
步骤504、固态硬盘将数据写入所述空白块。
所述固态硬盘200的所述处理器2002将所述写请求中所携带的所述目标数据写入所述空白块中,具体也可以是先用所述可用偏移量计算对应的页,如可以是采用如下公式计算:
页标识=可用偏移量%每个块所包含的页数,“%”表示取模运算。
则所述固态硬盘200的所述处理器2002将所述第二写请求中所携带的所述数据从所述页标识对应的页开始写入所述空白块中。
进一步的,所述固态硬盘200的所述处理器2002生成新的映射关系,如果本地映射表是如前所述的“段”与“固态硬盘物理地址”的映射,则可以在步骤503或步骤504之后,所述处理器2002基于所述第一段的标识和所述选择的空白块的标识生成新的映射关系,并保存到所述本地映射表中;如果所述本地映射表是如前所述的“段+可用偏移量”与“固态硬盘物理地址”的映射,则可以是在所述步骤502之后,所述处理器2002基于所述第一段的标识、可用偏移量及所述已分配的块的标识、与所述可用偏移量对应的页标识生成新的映射关系并保存到所述本地映射表中;或者在步骤503或步骤504之后,所述处理器2002基于所述第一段的标识、可用偏移量及所述空白块的标识、与所述可用偏移量对应的页标识生成新的映射关系并保存到所述本地映射表中。
可选的,所述固态硬盘200的通信接口2001在收到来自所述控制器100的所述写请求后,所述处理器2002可先将所述写请求所携带的数据缓存在所述内存2003中,然后可以先向所述控制器100发送写成功消息,也可以是在步骤503或步骤505之后再向所述控制器100发送写成功消息(图中未示出)。
在本发明实施例中,因为所述固态硬盘是将所述写请求中的目标数据写入到所述控制器100指定的DIE所包含的块中,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。
如图6所示,为本发明实施例提供的所述存储系统中处理读请求的方法流程图。
步骤600、控制器接收第一读请求。
所述控制器100接收来自主机的第一读请求,所述第一读请求中携带有主机逻辑地址、数据长度,这里所述主机逻辑地址表示待读取数据的起始地址,所述数据长度用于表示待读取数据的长度。
步骤601、所述控制器查询系统映射表。
所述控制器100基于所述第一读请求中所携带的主机逻辑地址查询所述系统映射表,若能找到与所述主机逻辑地址对应的映射关系,则表明待读取的数据已被保存在所述存储系统中,继续后面的处理;否则,表明待读取的数据未被保存在所述存储系统中,所述控制器100可以向所述主机返回读失败消息(图中未示出)。
步骤602、所述控制器生成第二读请求。
所述控制器100生成第二读请求,所述第二读请求包含读取地址和数据长度,所述数据长度为所述第一读请求中所携带的数据长度,所述读取地址基于从所述系统映射表中查询到的映射关系生成。如前述实施例记载,所述映射关系用于记录“主机逻辑地址”与“固态硬盘标识+通道标识+DIE标识+段标识+可用偏移量”的映射,则所述控制器100基于所述第一读请求中所携带的主机逻辑地址查询到与所述主机逻辑地址相关联的映射关系后,则基于该映射关系来生成所述读取地址。可选的,所述读取地址可以包含与所述主机逻辑地址对应的映射关系中记载的通道标识、DIE标识、段标识和可用偏移量;可选的,如果前述实施例记载的系统映射表的多种可能的实现,因为DIE标识可能已经把通道标识作为其一部分,所以所述读取地址还可以不用包含通道标识,即这种情况下所述读取地址可以包含与所述主机逻辑地址对应的映射关系中记载的DIE标识、段标识和可用偏移量。
步骤603、所述控制器将所述第二读请求发送给固态硬盘。
所述控制器100在生成所述第二读请求后,基于前述查询到的映射关系中包含的固态硬盘标识将所述第二读请求发送给所述固态硬盘标识所对应的固态硬盘200。
步骤604、所述固态硬盘查询本地映射表。
所述固态硬盘200的通信接口2001在收到所述第二读请求后,所述固态硬盘200的所述处理器2002基于所述第二读请求所携带的读取地址以及数据长度进行数据读取。这里,首先会根据所述读取地址中携带的段标识查询所述本地映射表。若没有在所述本地映射表中查询到映射关系,则所述固态硬盘200的所述处理器2002可以通过所述通信接口2001向所述控制器100返回读失败消息(图中未示出),则流程结束。
步骤605、所述固态硬盘读取数据。
所述固态硬盘200的所述处理器2002基于所述第二读请求的读取地址中携带的DIE标识及步骤604中从所述本地映射表中查询到的映射关系所包含的固态硬盘物理地址读取数据;或者基于所述第二读请求的读取地址中携带的通道标识、DIE标识及步骤604中从所述本地映射表中查询到的映射关系所包含的固态硬盘物理地址读取数据。
可选的,在实际应用中可能发生因固态硬盘部分块或页的损坏等原因而导致在此步骤读取数据失败,如果出现这种情况,则所述固态硬盘200的所述处理器2002可以通过所述通信接口2001向所述控制器100返回读失败消息(图中未示出),则流程结束。
步骤606、所述固态硬盘向所述控制器发送所述读取的数据。
所述固态硬盘200的处理器2002读取数据后,通过所述通信接口2001向所述控制器100发送所述读取的数据。
步骤607、所述控制器向主机发送所述读取的数据。
所述控制器100在接收到来自所述固态硬盘200发送的所述读取的数据后,向所述主机发送所述读取的数据,至此完成读请求的处理。
在前面的实施例中,所述控制器100在创建段时,新创建的段与固态硬盘、通道、DIE没有任何关系,只有在选择了第一DIE并且选择了第一段后,才建立起第一DIE与第一段之间的关联关系。本发明实施例提供另一种可选的实施方式,即所述控制器100在创建段时,通过为段分配的段标识建立起该段与固态硬盘、通道及DIE之间的关联关系,如所述控制器100可以在为每个段分配段标识时就建立起段与DIE的关联关系,具体可以有多种实现方式,可选的,如段标识可以由3部分构成:通道标识+DIE标识+段编号,以表明该段的存储空间应该是来自于所述通道标识和DIE标识所对应的DIE上的块;可选的,还可以通过一种算法建立段标识与通道标识及DIE标识之间的映射关系,如可以是哈希(Hash)算法:通道标识=段标识%通道数,如前举例,所述通道数可以是16;DIE标识=(段标识%通道数)%每个通道内DIE的数量,如前举例,所述每个通道内DIE的数量可以是8,则所述控制器100可以基于上述哈希算法来设计每个段的标识。所述控制器100创建段后基于上述规则来配置段的基本信息中的段标识,所述段的基本信息中的其它项的配置参照前述实施例描述,此处不再赘述。在本实施例中,每一个段在建立并分配段标识后,就与DIE建立了关联关系,这时可以直接就把段挂载到与所述段关联的DIE的数组或链表上,所述数组或链表上的每一个节点用于记录与该DIE相关联的段的基本信息。
基于上述的段,本发明实施例提供另一种在所述存储系统中处理写请求的方法,在该方法中,所述控制器100执行选择第一DIE的步骤与图4及前述实施例步骤400相同,此处不再赘述。所述控制器100选择第一段及确认可用偏移量,这里所有不同的是,所述控制器100基于所选择的第一DIE的标识从与所述第一DIE关联的多个段中选择,选择的规则如图4及前述实施例步骤401的记载,此处不再赘述。然后所述控制器100生成写请求,所述写请求包含写入地址、目标数据及所述目标数据的数据长度,可选的,参照图4及步骤402的记载,这里所述写入地址的设置可以与步骤402相同,这样后续的各个处理环节与图4及步骤403、以及图5及相应实施例描述完全一样,此处不再赘述;可选的,因为本实施例中段标识已经包含了通道标识、DIE标识的信息,因此所述写入地址可以不需要再包含通道标识和DIE标识的信息,只需要包含段标识和可用偏移量。然后所述控制器100将所述写请求发送给固态硬盘200。本实施例中,所述控制器100维护并更新系统映射表,可选的,所述系统映射表的设置可与图4实施例记载的方式相同;可选的,因为段标识本身已经包含了通道标识、DIE标识的信息,所以在系统映射表每一条映射关系的固态硬盘写入地址部分也可以只记载段标识和可用偏移量。
所述固态硬盘200在接收到所述写请求后的处理与图5及相应实施例的描述基本相同,唯一的差别在于进行步骤503选择空白块的时候,所述固态硬盘200需要从所述写请求的写入地址所包含的段标识中解析出通道标识和DIE标识,并依据解析出来的通道标识和DIE标识从相应的第一DIE所包含的多个块中选择空白块。
进一步的,本发明实施例还提供另一种在所述存储系统中处理读请求的方法,该方法与图6及相应实施例的描述基本相同,唯一的差别在于步骤602生成第二读请求时,所述第二读请求中的读取地址可以只需要包含段标识及可用偏移量。
在本发明实施例中,在有数据需要被写入固态硬盘时,所述控制器100选择第一DIE并基于所述第一DIE选择与其关联的段,所述段的段标识中隐式承载了所述DIE及通道的标识,表明待写入的目标数据应该保存在所述第一DIE所包含的块中,这样避免了现有技术中完全由所述固态硬盘自己基于内部策略自主为写请求分配物理存储资源而可能出现数据分布不均衡、部分DIE拥塞等情况而导致的无法有效利用所述固态硬盘的存储资源的问题。进一步的,所述控制器100在选择第一DIE时可以灵活使用选择策略,如DIE的状态、数据访问频度、DIE的有效数据量、DIE的磨损度、DIE待处理的读请求数量等因素中1个或多个,以此实现为待写入固态硬盘的数据选择较优的DIE,由此实现所述控制器100有效的使用所述固态硬盘的存储空间。
图7是所述控制器100的结构示例图,如图7所示,所述控制器100包括第一通信接口7001、处理器7002、存储器7003和第二通信接口7004。
所述第一通信接口7001用于和主机通信,所述控制器100可以通过所述第一通信接口7001接收主机的操作指令,如主机读请求、主机写请求等,并将其交由所述处理器7002处理;所述第一通信接口7001还用于向所述主机发送消息,如写成功消息、写失败消息、读失败消息、或读取的数据等;所述第一通信接口7001可以是主机总线适配器(Host BusAdapter,HBA)卡。
所述处理器7002可能是一个中央处理器(英文:central processing unit,CPU),或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
所述存储器7003可以用于缓存所述第一通信接口7001从主机接收的主机写请求中携带的数据、或缓存从所述固态硬盘200所读取的数据。所述存储器7003可以是易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(英文:random-access memory,RAM)。非易失性存储器例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码或数据的机器可读介质。所述存储器7003可以具有保电功能,保电功能是指系统发生掉电又重新上电时存储器7003中存储的数据也不会丢失。
所述存储器7003中还可以保存有程序指令,所述处理器7002用于执行所述程序指令以完成所述控制器100的各种处理动作,具体参见上述图3-图6及相应实施例中控制器100的所有处理动作,本装置实施例不再赘述。可选的,所述处理器7002生成所述系统映射表后,也可以将所述系统映射表保存在所述存储器7003中。
所述第二通信接口7004,用于和所述固态硬盘200通信,所述控制器100的所述处理器7002可以通过所述第二通信接口7004将操作命令,如写请求、或读请求等,发送给所述固态硬盘200,接收来自固态硬盘200的各类消息。
如图8所示,为本发明实施例提供的一种控制器100的逻辑结构示意图,所述控制器100包含第一通信模块8001、存储模块8002、处理模块8003、DIE选择模块8004、段选择模块8005和第二通信模块8006,其中:
所述第一通信模块8001用于和主机通信,接收所述主机的操作指令,如主机读请求、主机写请求等,还用于向所述主机发送消息,如写成功消息、写失败消息、读失败消息、或读取的数据等。
所述存储模块8002,用于可以用于缓存所述第一通信模块8001从主机接收的写请求中携带的数据。
所述处理模块8003,可用于对缓存的数据进行拆分、和/或组合操作,生成单位长度(如16KB)的数据块以及每个数据块的主机逻辑地址;可用于确定待写入固态硬盘的目标数据及所述目标数据的数据长度;还可用于创建多个段,可将所述创建的多个段的基本信息放在所述存储模块8002中保存,具体保存的方式参照具体实现参照图4及实施例所述。
所述DIE选择模块8004,用于选择第一DIE,具体实现可参照图4及步骤400的详细描述。
所述段选择模块8005,用于选择第一段及确认可用偏移量,具体实现参照图4及步骤401的详细描述,或者上述另一种在所述存储系统中处理写请求的方法所描述。
所述处理模块8003,还用于根据所述DIE选择模块8004选择的所述第一DIE、所述段选择模块8005选择的所述第一段及确认可用偏移量生成写请求;可选的,所述处理模块8003还用于根据所述第一段的可用偏移量的取值以确定所述目标数据以及所述目标数据的数据长度,并基于此生成所述写请求;还用于生成系统映射表并实时更新,具体实现参照图4及步骤402的详细描述,或者上述另一种在所述存储系统中处理写请求的方法所描述。
所述存储模块8002,还可用于保存所述系统映射表。
所述第二通信模块8006,用于同固态硬盘通信,所述处理模块8003可以通过所述第二通信模块8006将各类操作命令,如写请求、或读请求等,发送给固态硬盘,接收来自所述固态硬盘的各类消息,所述存储模块8002,还可用于缓存所述第二通信模块8006接收到的来自所述固态硬盘的各类消息中携带的数据等。
所述处理模块8003,还用于根据所述第一通信模块8001接收的来自主机的读请求查询所述系统映射表并生成第二读请求,通过所述第二通信模块8006将其发送给固态硬盘。所述第二通信模块8006接收来自所述固态硬盘返回的需读取的数据;所述存储模块8002,还用于缓存所述需读取的数据;所述处理模块8003,还用于将所述需读取的数据通过所述第一通信模块8001发送给所述主机,具体如图6及实施例所述,或上述另一种在所述存储系统中处理读请求的方法的实施例所记载。
如图9所示,为本发明实施例提供的一种固态硬盘的逻辑结构示意图,所述固态硬盘包含通信模块9001、缓存模块9002、处理模块9003和存储模块9004,其中:
所述通信模块9001,用于和所述控制器100通信,接收接收来自所述控制器100的消息,如可以是写请求、读请求或其它命令;还用于向所述控制器100发送消息,如可以写成功消息、写失败消息、读成功消息、读失败消息等。
所述缓存模块9002,用于缓存所述通信模块9001从所述控制器100接收的消息中承载的数据。
所述处理模块9003,用于生成本地映射表,具体参见图5及实施例步骤500所述,所述本地映射表可以保存在所述缓存模块9002中,也可以是保存在所述存储模块9004中,在需要使用时由所述处理模块9003读取并缓存在所述缓存模块9002中;还用于对所述通信模块9001接收的写请求进行处理:查询所述本地映射表,若经查询发现已分配有块,则将所述写请求携带的数据写入所述存储模块9004的相应块中,具体如图5及实施例步骤500-502记载;若经查询发现未分配块,则选择所述存储模块9004中的空白块,将所述写请求携带的数据写入所述存储模块9004的所述空白块中,具体如图5及实施例步骤500、501及503、504记载,或者参考上述另一种在所述存储系统中处理写请求的方法的实施例记载。
所述处理模块9003,还用于生成新的映射关系并保存到所述本地映射表中,具体如图5及实施例记载。
所述处理模块9003,还用于基于所述通信模块9001接收的读请求查询所述本地映射表,并基于查询结果从所述存储模块9004读取数据,将所述读取的数据通过所述通信模块9001发送给主机,具体如图6及实施例所述。
本领域普通技术人员将会理解,本发明实施例的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明实施例的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (20)

1.一种存储系统,其特征在于,所述存储系统包括控制器和固态硬盘,所述固态硬盘和所述控制器可通信,所述固态硬盘包含多个通道,所述多个通道中的每一个通道连接多个DIE;其中,
所述控制器,用于创建多个段;从所述多个DIE中选择第一DIE;从所述多个段中选择第一段,以及确认所述第一段的可用偏移量;生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含与所述第一DIE相连的通道的标识、所述第一DIE的标识、所述第一段的标识及所述可用偏移量;向所述固态硬盘发送所述写请求;
所述固态硬盘,用于:
接收所述写请求,根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询本地映射表,其中所述本地映射表用于保存段与固态硬盘物理地址的映射关系;若所述本地映射表中记录有与所述第一段相对应的块,则根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则
基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块,根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块。
2.根据权利要求1所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE的状态;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于从所述多个DIE中选择无状态的DIE作为第一DIE。
3.根据权利要求1所述的存储系统,其特征在于,所述控制器还用于基于所述目标数据的主机逻辑地址确定所述目标数据的访问频度,若所述目标数据的访问频度大于访问频度阈值,则从所述多个DIE中选择第一DIE具体为:
选择所包含的访问频度高于所述访问频度阈值的数据的量低于第一阈值的DIE作为所述第一DIE。
4.根据权利要求1所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE存储的有效数据量;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择有效数据量低于第二阈值的DIE作为第一DIE。
5.根据权利要求1所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE的磨损度;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择磨损度低于磨损度阈值的DIE作为第一DIE。
6.根据权利要求1所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE的待处理读命令数;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择没有读命令需要处理的DIE作为第一DIE,或选择需要处理的读命令数低于第三阈值的DIE作为第一DIE。
7.根据权利要求1-6中任一所述的存储系统,其特征在于,所述从所述多个段中选择第一段具体为:
所述控制器,还用于确认是否有段已被分配给所述第一DIE,若有且该段还有可用存储空间,则选择该段作为第一段,否则从所述多个段中选择空白段作为第一段。
8.根据权利要求1-6中任一所述的存储系统,其特征在于,所述控制器还用于生成映射关系,所述映射关系用于记录所述目标数据的主机逻辑地址同与所述第一DIE相连接的通道、所述第一DIE、所述第一段和所述可用偏移量之间的映射;将所述映射关系保存到系统映射表。
9.根据权利要求1所述的存储系统,其特征在于,所述固态硬盘还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
10.一种存储系统,其特征在于,所述存储系统包括控制器和固态硬盘,所述固态硬盘和所述控制器可通信,所述固态硬盘包含多个通道,所述多个通道中的每一个通道连接多个DIE;其中,
所述控制器,用于创建多个段;从所述多个DIE中选择第一DIE;从所述多个段中选择第一段,以及确认所述第一段的可用偏移量;生成写请求,所述写请求包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含所述第一段的标识及所述可用偏移量,其中所述第一段的标识包含有第一DIE的标识及与所述第一DIE相连的通道的标识;向所述第一DIE归属的固态硬盘发送所述写请求;
所述固态硬盘,用于:
接收所述写请求,根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询本地映射表,其中所述本地映射表用于保存段与固态硬盘物理地址的映射关系;若所述本地映射表中记录有与所述第一段相对应的块,则根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则
根据所述第一段的标识解析出所述与所述第一DIE相连的通道的标识和所述第一DIE的标识,基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块,根据所述写入地址中包含的可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
11.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE的状态;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于从所述多个DIE中选择无状态的DIE作为第一DIE。
12.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于基于所述目标数据的主机逻辑地址确定所述目标数据的访问频度,若所述目标数据的访问频度大于访问频度阈值,则从所述多个DIE中选择第一DIE具体为:
选择所包含的访问频度高于所述访问频度阈值的数据的量低于第一阈值的DIE作为所述第一DIE。
13.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE存储的有效数据量;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择有效数据量低于第二阈值的DIE作为第一DIE。
14.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE的磨损度;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择磨损度低于磨损度阈值的DIE作为第一DIE。
15.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于记录所述多个DIE中的每个DIE的待处理读命令数;则从所述多个DIE中选择第一DIE具体为:
所述控制器,还用于选择没有读命令需要处理的DIE作为第一DIE,或选择需要处理的读命令数低于第三阈值的DIE作为第一DIE。
16.根据权利要求10所述的存储系统,其特征在于,所述控制器还用于生成映射关系,所述映射关系用于记录所述目标数据的主机逻辑地址同所述第一段和所述可用偏移量之间的映射;将所述映射关系保存到系统映射表。
17.一种固态硬盘,其特征在于,所述固态硬盘包含处理器,内存,通信接口、多个通道,所述处理器和内存分别通过多个通道中的每一个通道连接多个DIE,所述多个DIE中的每一个DIE包含多个块;其中所述处理器、所述内存和所述通信接口之间可通信;其特征在于:
所述通信接口,用于接收写请求,所述写请求中包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含第一DIE的标识、与所述第一DIE相连的通道的标识、第一段的标识及可用偏移量;
所述内存用于保存本地映射表,所述本地映射表用于记录段与固态硬盘物理地址的映射关系;
所述处理器,用于根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询所述本地映射表,若所述本地映射表中记录有与所述第一段相对应的块,则根据所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块;根据所述写入地址中包含的所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
18.根据权利要求17所述的固态硬盘,其特征在于,所述处理器还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
19.一种固态硬盘,其特征在于,所述固态硬盘包含处理器,内存,通信接口、多个通道,所述处理器和内存分别通过多个通道中的每一个通道连接多个DIE,所述多个DIE中的每一个DIE包含多个块;其中所述处理器、所述内存和所述通信接口之间可通信;其特征在于:
所述通信接口,用于接收写请求,所述写请求中包含写入地址、目标数据以及所述目标数据的数据长度,所述写入地址包含第一段的标识及可用偏移量,所述第一段的标识承载有第一DIE的标识、及与所述第一DIE相连的通道的标识;
所述内存用于保存本地映射表,所述本地映射表用于记录段与固态硬盘物理地址的映射关系;
所述处理器,用于根据所述写入地址包含的所述第一段的标识和所述可用偏移量查询所述本地映射表,若所述本地映射表中记录有与所述第一段相对应的块,则根据所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述块中;否则根据所述第一段的标识解析出所述第一DIE的标识、及与所述第一DIE相连的通道的标识,基于与所述第一DIE相连的通道的标识和所述第一DIE的标识从归属于所述第一DIE的多个块中选择空白块;根据所述写入地址中包含的所述可用偏移量确定页标识,基于所述目标数据的数据长度将所述目标数据从所述页标识对应的页开始写入所述空白块中。
20.根据权利要求19所述的固态硬盘,其特征在于,所述处理器还用于生成新的映射关系,所述新的映射关系用于记录所述第一段同所述空白块的映射;将所述新的映射关系保存到所述本地映射表中。
CN201680003654.7A 2016-12-29 2016-12-29 存储系统和固态硬盘 Active CN109154917B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/113088 WO2018119901A1 (zh) 2016-12-29 2016-12-29 存储系统和固态硬盘

Publications (2)

Publication Number Publication Date
CN109154917A CN109154917A (zh) 2019-01-04
CN109154917B true CN109154917B (zh) 2020-09-29

Family

ID=62710177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680003654.7A Active CN109154917B (zh) 2016-12-29 2016-12-29 存储系统和固态硬盘

Country Status (6)

Country Link
US (1) US10768857B2 (zh)
EP (1) EP3367251B1 (zh)
JP (1) JP6667629B2 (zh)
CN (1) CN109154917B (zh)
SG (1) SG11201802566PA (zh)
WO (1) WO2018119901A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520704B1 (en) * 2021-06-30 2022-12-06 International Business Machines Corporation Writing store data of multiple store operations into a cache line in a single cycle
CN108255414B (zh) * 2017-04-14 2020-04-03 新华三信息技术有限公司 固态硬盘访问方法及装置
US10664196B2 (en) * 2017-07-14 2020-05-26 Clipchamp Ip Pty Ltd Random access file management
CN112997162A (zh) * 2018-11-20 2021-06-18 华为技术有限公司 一种删除内存中索引项的方法、装置
CN109634873A (zh) * 2018-12-10 2019-04-16 浪潮(北京)电子信息产业有限公司 固态盘存储主机系统日志信息方法、装置、设备及介质
KR20200110863A (ko) * 2019-03-18 2020-09-28 에스케이하이닉스 주식회사 메모리 시스템, 컴퓨팅 장치 및 동작 방법
CN111949560B (zh) * 2019-05-16 2024-01-23 兆易创新科技集团股份有限公司 一种数据写入方法、装置及存储设备
CN110275800B (zh) * 2019-06-20 2021-06-08 深圳忆联信息系统有限公司 Ssd数据物理备份方法、装置、计算机设备及存储介质
CN110716699A (zh) * 2019-10-17 2020-01-21 北京百度网讯科技有限公司 用于写入数据的方法和装置
US11249896B2 (en) * 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US11221802B2 (en) * 2020-06-10 2022-01-11 Western Digital Technologies, Inc. Zone allocation for data storage device based on zone reset behavior
CN112363833B (zh) * 2020-11-10 2023-01-31 海光信息技术股份有限公司 一种网络数据包的内存分配方法、装置及相关设备
CN112433673B (zh) * 2020-11-13 2022-08-09 苏州浪潮智能科技有限公司 一种固态硬盘存储数据的方法和设备
JP2022120544A (ja) * 2021-02-05 2022-08-18 東芝テック株式会社 メモリ制御装置およびプログラム
US11803311B2 (en) * 2021-03-31 2023-10-31 Advanced Micro Devices, Inc. System and method for coalesced multicast data transfers over memory interfaces
US11907123B2 (en) * 2021-04-20 2024-02-20 International Business Machines Corporation Flash memory garbage collection
US12007998B2 (en) * 2021-05-27 2024-06-11 Sap Se Caching for disk based hybrid transactional analytical processing system
JP2023000085A (ja) * 2021-06-17 2023-01-04 キオクシア株式会社 メモリシステム及び情報処理システム
US20230088364A1 (en) * 2021-09-17 2023-03-23 Red Hat, Inc. Dynamically Switching A Software Service Between Stateful Mode And Stateless Mode
KR102688447B1 (ko) * 2021-10-08 2024-07-24 중앙대학교 산학협력단 Wan 환경에서의 데이터 사용률 기반의 데이터 관리 방법 및 장치
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法
CN116244225A (zh) * 2021-12-08 2023-06-09 华为技术有限公司 存储介质、存储元件、存储介质配置方法及数据传输方法
US11860811B2 (en) * 2022-03-23 2024-01-02 Arm Limited Message protocol for a data processing system
CN116991759B (zh) * 2023-09-25 2024-01-26 苏州元脑智能科技有限公司 片上存储空间的分配方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737742A (en) * 1994-06-29 1998-04-07 Hitachi, Ltd. Memory system using flash memory and method of controlling the memory system
CN1376980A (zh) * 2001-03-22 2002-10-30 松下电器产业株式会社 存储器
CN102428453A (zh) * 2009-04-08 2012-04-25 谷歌公司 用于在快闪存储器数据存储装置中存储数据的方法及设备
CN105745628A (zh) * 2014-06-27 2016-07-06 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
KR20080017982A (ko) * 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
KR101449524B1 (ko) * 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) * 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
US8321647B2 (en) * 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8402243B2 (en) * 2010-02-25 2013-03-19 Apple Inc. Dynamically allocating number of bits per cell for memory locations of a non-volatile memory
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
CN102567257B (zh) * 2011-12-26 2014-08-27 华中科技大学 一种控制多通道固态盘数据读写的方法
CN103218270B (zh) * 2013-03-11 2016-08-17 北京忆恒创源科技有限公司 具有多个固态盘的计算机
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
US9336129B2 (en) * 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
WO2015162758A1 (ja) 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム
CN104090847B (zh) * 2014-06-25 2017-01-11 华中科技大学 一种固态存储设备的地址分配方法
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
CN104461393B (zh) * 2014-12-09 2017-05-17 华中科技大学 一种闪存存储器的混合映射方法
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737742A (en) * 1994-06-29 1998-04-07 Hitachi, Ltd. Memory system using flash memory and method of controlling the memory system
CN1376980A (zh) * 2001-03-22 2002-10-30 松下电器产业株式会社 存储器
CN102428453A (zh) * 2009-04-08 2012-04-25 谷歌公司 用于在快闪存储器数据存储装置中存储数据的方法及设备
CN102428455A (zh) * 2009-04-08 2012-04-25 谷歌公司 快闪存储器数据存储装置中的数据分条
CN105745628A (zh) * 2014-06-27 2016-07-06 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统

Also Published As

Publication number Publication date
EP3367251A1 (en) 2018-08-29
SG11201802566PA (en) 2018-08-30
JP6667629B2 (ja) 2020-03-18
CN109154917A (zh) 2019-01-04
US20180232181A1 (en) 2018-08-16
WO2018119901A1 (zh) 2018-07-05
EP3367251A4 (en) 2019-04-10
US10768857B2 (en) 2020-09-08
JP2019508765A (ja) 2019-03-28
EP3367251B1 (en) 2023-06-21

Similar Documents

Publication Publication Date Title
CN109154917B (zh) 存储系统和固态硬盘
US10152501B2 (en) Rollover strategies in a n-bit dictionary compressed column store
CN103902474B (zh) 一种支持固态盘缓存动态分配的混合存储系统和方法
CN104090847B (zh) 一种固态存储设备的地址分配方法
US10241909B2 (en) Non-volatile memory device
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
US10303374B2 (en) Data check method and storage system
JP6968016B2 (ja) ストレージデバイスおよびコンピュータシステム
WO2018068714A1 (zh) 重删处理方法及存储设备
JP2014164769A (ja) ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体
CN107844436B (zh) 一种缓存中脏数据的组织管理方法、系统及存储系统
JP2019133391A (ja) メモリシステムおよび制御方法
JP2018536908A (ja) ストレージシステムおよびシステムガベージコレクション方法
CN104503703A (zh) 缓存的处理方法和装置
US10872015B2 (en) Data storage system with strategic contention avoidance
CN110825732A (zh) 数据查询方法、装置、计算机设备和可读存储介质
CN107688435B (zh) Io流调节方法与装置
CN111104435B (zh) 一种元数据组织方法、装置、设备及计算机可读存储介质
CN113535597A (zh) 内存管理方法、内存管理单元和物联网设备
CN117556088A (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
GR01 Patent grant
GR01 Patent grant