CN114860623A - 存储器控制器以及伺服器 - Google Patents
存储器控制器以及伺服器 Download PDFInfo
- Publication number
- CN114860623A CN114860623A CN202210005208.7A CN202210005208A CN114860623A CN 114860623 A CN114860623 A CN 114860623A CN 202210005208 A CN202210005208 A CN 202210005208A CN 114860623 A CN114860623 A CN 114860623A
- Authority
- CN
- China
- Prior art keywords
- command
- flash memory
- read
- arbiter
- specific
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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]
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明揭露一种存储器控制器以及伺服器,该存储器控制器用来存取多个通道,其中每一个通道包含多个快闪存储器芯片,以及该存储器控制器包含一快闪转换层以及多个控制模块。快闪转换层用来产生具有多个通道之其一之相对应实体地址的命令,多个控制模块分别连接于多个通道,以及每一个控制模块独立地操作以自快闪转换层接收具有相对应的实体地址的相对应的命令,以存取在相对应的通道中的快闪存储器芯片。
Description
技术领域
本发明有关于存储器控制,尤指一种应用于一全快闪阵列(all flash array,AFA)伺服器的控制方法以及控制电路。
背景技术
快闪存储器已被广泛应用于各种数据储存装置诸如固态硬碟(solid statedrive,SSD),并且名为全快闪阵列伺服器的一伺服器可能仅包含固态硬碟,而不具有传统硬碟(spinning-disk drive)。在全快闪阵列伺服器中,每一个固态硬碟包含多个快闪存储器芯片,并且每一个快闪存储器芯片在读取/写入操作的期间需要一固定的繁忙时间(busytime),也就是说,快闪存储器芯片不可在该繁忙时间的期间进行另一读取或写入操作,因此,如果全快闪阵列伺服器需要在一短时间于固态硬碟上进行大量的读取/写入操作的话,由于上述繁忙时间的影响,该读取/写入操作会被延误。此外,伴随着快速外部组件互连(Peripheral Component Interconnect Express,PCIe)版本的更新,来自主机装置的传输速率的需求也越来越高,以及来自主机装置的读取/写入命令的数量也可能显著增加,因此,如何有效地存取固态硬碟是一个重要的议题。
发明内容
因此,本发明的目的之一在于揭露一种在全快闪阵列伺服器中的存储器控制器的新架构,以解决上述问题。
根据本发明之一实施例,揭露了一种用来存取多个通道的存储器控制器。该存储器控制器包含有一快闪转换层以及一控制模块,其中该快闪转换层用来产生具有多个通道的至少一通道的相对应的实体地址的命令,该控制模块连接于多个快闪存储器芯片,并且包含有一中央处理单元、多个命令伫列、一仲裁器以及直接存储器存取引擎以及一编解码器。该多个命令伫列分别对应于该多个快闪存储器芯片,并且每一个命令伫列仅储存具有一相对应的快闪存储器芯片的实体地址的命令,该仲裁器以及直接存储器存取引擎用来执行储存于该多个命令伫列的该命令,其中当该仲裁器以及直接存储器存取引擎执行在一特定命令伫列中的一读取命令,以自该多个快闪存储器芯片的一特定快闪存储器芯片读取一原始数据时,该编解码器接收该原始数据并且对该原始数据进行解码,以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元将一重试命令传送至该特定命令,以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取一软数据。
根据本发明的另一实施例,揭露了一种包含有一网络模块、一处理器、至少一通道以及一存储器控制器的伺服器。该网络模块用来透过网络连接客户端装置,该处理器用来控制该伺服器的操作,以及该至少一通道包含有多个快闪存储器芯片。该存储器控制器耦接于该处理器以及该至少一通道之间,并且该存储器控制器包含有一快闪转换层以及一控制模块,其中该快闪转换层用来产生具有该至少一通道的相对应的实体地址的命令,以及该控制模块连接于该多个快闪存储器芯片。该控制模块包含有一中央处理单元、多个命令伫列、一仲裁器以及直接存储器存取引擎以及一编解码器。该多个命令伫列分别对应于该多个快闪存储器芯片,并且每一个命令伫列仅储存具有一相对应的快闪存储器芯片的实体地址的命令,该仲裁器以及直接存储器存取引擎用来执行储存于该多个命令伫列的命令,其中当该仲裁器以及直接存储器存取引擎执行在一特定命令伫列中的一读取命令,以自该多个快闪存储器芯片的一特定快闪存储器芯片读取一原始数据时,该编解码器接收该原始数据并且对该原始数据进行解码,以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元将一重试命令传送至该特定命令,以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取一软数据。
附图说明
图1为根据本发明一实施例的伺服器的示意图。
图2绘示根据本发明一实施例的快闪存储器芯片的示意图。
图3绘示根据本发明一实施例的控制模块的示意图。
图4绘示根据本发明一实施例的位于多个控制模块的一控制模块中的伫列以及缓冲器的配置的示意图。
图5为根据本发明一实施例的控制方法的流程图。
图6为根据本发明一实施例的三阶细胞区块的一存储器细胞的多个状态(编程状态)以及相对应的读取电压的示意图。
图7为供软解码方法使用的读取电压的示意图。
【符号说明】
100:伺服器
112:网络模块
114:处理器
116:动态随机存取存储器
120:存储器控制器
121,350:接口电路
122:快闪转换层
123:主要中央处理单元
125:静态随机存取存储器
126_1~126_N,300:控制模块
130_1~130_N:通道
131_1~131_A,132_1~132_B,138_1~138_C,200:快闪存储器芯片
B_1~B_K:区块
P1~P256:页面
310:命令处理器
320:中央处理单元
330,430:缓冲器
340:编解码器
410:第一缓冲器
420:第二缓冲器
431_1~431_A:命令伫列
440:仲裁器以及直接存储器存取引擎
500~518:步骤
S0~S7:状态
VR1~VR7,VR11~VR14,VR51~VR54:读取电压
具体实施方式
以下实施方式和发明申请专利范围中使用某些术语来指代特定系统组件,如本领域技术人员可以理解的,制造商可以用不同的名称来指代一组件,本文件无意区分名称不同但功能相同的组件,在以下实施方式以及发明申请专利范围中,术语“包含有”以开放式方式使用,因此应解释为“包含但不限于…”,术语“耦接”旨在表示间接或直接的电连接,因此,如果一第一装置耦接于一第二装置,则该连接可以是通过一直接电连接,或通过经由其他装置和连接的一间接电连接。
图1为根据本发明一实施例的伺服器100的示意图,其中伺服器100为一全快闪阵列伺服器。如图1所示,伺服器100包含有网络模块112、处理器114、动态随机存取存储器(dynamic random access memory,DRAM)116(为简便起见,标记为“DRAM”)、存储器控制器120以及多个通道130_1~130_N,其中‘N’可以为任一大于或等于二的正整数。存储器控制器120包含有接口电路121、快闪转换层(flash translation layer,FTL)122(为简便起见,标记为“FTL”)以及多个控制模块126_1~126_N,其中快闪转换层122包含有主要中央处理单元(central processing unit,CPU)123(为简便起见,标记为“主要CPU”)以及静态随机存取存储器(static random access memory,SRAM)125(为简便起见,标记为“SRAM”)。多个通道130_1~130_N分别连接于多个控制模块126_1~126_N,并且每一个通道包含有多个快闪存储器芯片,举例来说,通道130_1包含有多个快闪存储器芯片131_1~131_A,通道130_2包含有多个快闪存储器芯片132_1~132_B,通道130_N包含有多个快闪存储器芯片138_1~138_C,此外,多个通道130_1~130_N的每一个通道可被视为一可插拔固态硬碟。
图2绘示根据本发明一实施例的快闪存储器芯片200的示意图,其中快闪存储器芯片200可用来实作每一个快闪存储器芯片131_1~131_A、132_1~132_B以及138_1~138_C。如图2所示,快闪存储器芯片200包含有多个区块(block)B_1~B_K,其中一区块为快闪存储器芯片200的最小抹除(erase)单元,并且多个区块B_1~B_K的每一个区块可具有一单阶细胞(single-level cell,SLC)阵列、一多阶细胞(multiple-level cell,MLC)阵列、一三阶细胞(triple-level cell,TLC)阵列或一四阶细胞(quad-level cell,QLC)阵列,每一个区块包含有多个页面(page)诸如P1~P256,其中一个页面为快闪存储器芯片200的最小写入单元。此外,在快闪存储器芯片200中的多个区块B_1~B_K可被区分成为平行操作的多个平面(plane)。
伺服器100用来通过互联网或乙太网络来连接至少一个客户端装置,网络模块112作为一接口以自客户端装置接收数据并且将数据传送至客户端装置,处理器114用来控制伺服器100的操作,举例来说,当处理器114自客户端装置接收一读取命令时,处理器114参考该读取命令中的一逻辑地址以传送一要求至存储器控制器120,以要求读取对应于该读取命令的该逻辑地址的数据,并且处理器114传送自多个通道130_1~130_N之至少一个通道读取的数据至客户端装置。此外,当处理器114自客户端装置接收一写入命令以及相对应的数据时,该数据可被暂存于动态随机存取存储器116,并且处理器114可在该数据上进行压缩及/或重复数据删除(de-duplication)操作,处理器114再将该数据通过存储器控制器120储存至多个通道130_1~130_N的至少一个通道。
存储器控制器120可藉由一单一芯片来实作,并且可用来进行伺服器100的处理器114以及多个通道130_1~130_N之间的操作,针对存储器控制器120中的元件,接口电路121连接至处理器114,以及接口电路121可符合非挥发性存储器储存装置(Non-VolatileMemory Express,NVMe)标准以及快速外部组件互连标准。快闪转换层122用来执行操作诸如基础映射方案、垃圾回收(garbage collection)、耗损平均(wear-leveling)机制、区块管理、以及有关多个通道130_1~130_N的管理的任一其它操作,具体来说,逻辑地址至实体地址映射表(之后简称为L2P表)及/或实体地址至逻辑地址映射表(之后简称为P2L表)被储存于静态随机存取存储器125或动态随机存取存储器116,并且主要中央处理单元123可参考L2P或P2L表来在读取命令中的逻辑地址上进行映射方案,以取得多个通道130_1~130_N的实体地址,以自多个通道130_1~130_N取得数据,静态随机存取存储器125或动态随机存取存储器116另可为垃圾回收、耗损平均机制及/或区块管理储存健康相关(health-related)资讯,其中健康相关资讯可包含纪录每一个区块的读取次数的读取计数表、记录每一个区块的抹除次数的抹除计数表、纪录在每一个区块中有效页面的数量的有效页面表、以及记录每一个区块的写入时间的数据保持(data retention)表。
如本发明的背景说明中所描述,伴随着快速外部组件互连版本的更新,来自主机装置的传输速率的需求也越来越高,以及来自主机装置的读取/写入命令的数量也可能显著增加,因此,存储器控制器120分别设计对应于多个通道130_1~130_N的多个控制模块126_1~126_N,并且此内部平行性(internal parallelism)使存储器控制器120能够平行处理多个传入的读取/写入命令以及达到更高的频宽。具体来说,主要中央处理单元123可具有一仲裁器(arbiter)其用来传送读取/写入命令以及多个通道130_1~130_N的相关实体地址至多个控制模块126_1~126_N,并且多个控制模块126_1~126_N的每一个控制模块独立地运作以及传送回应至主要中央处理单元123,举例来说,当主要中央处理单元123分别传送一第一读取命令以及一第二读取命令至控制模块126_1以及控制模块126_2时,控制模块126_1参考该第一读取命令的实体地址以至通道130_1取得数据并且将数据传送至主要中央处理单元123,以及控制模块126_2参考该第二读取命令的实体地址以至通道130_2取得数据并且将数据传送至主要中央处理单元123。要注意的是,多个控制模块126_1~126_N接收到的实体地址指示通道的一芯片编号(chip number)、一区块编号(blocknumber)以及一页面编号(page number),也就是说,多个控制模块126_1~126_N不需要进行任何地址映射机制。
图3绘示根据本发明一实施例的控制模块300的示意图,其中控制模块300可用来实作图1所示的多个控制模块126_1~126_N的每一个控制模块,如图3所示,控制模块300包含有命令处理器310、中央处理单元320(为简便起见,标记为“CPU”)、缓冲器330、编解码器340(包含有一编码器以及一解码器)、以及接口电路350。命令处理器310用来自快闪转换层122接收命令以及通知中央处理单元320以进行相对应的操作,具体来说,如果命令处理器310自快闪转换层122接收到具有相对应的实体地址的一读取命令,中央处理单元320可控制接口电路350以要求储存于多个通道130_1~130_N之至少一个通道的实体地址的数据;以及在接口电路350自多个通道130_1~130_N的至少一个通道取得原始数据(raw data)之后,编解码器340对该原始数据进行解码以产生解码数据(decoded data),并且中央处理单元320通过命令处理器310将该解码数据传送至快闪转换层122。如果命令处理器310自快闪转换层122接收到具有相对应的实体地址以及相对应的数据的一写入命令,编解码器340对该数据进行编码以产生编码数据(encoded data),中央处理单元320可控制接口电路350以将该编码数据写入至该多个通道130_1~130_N的至少一个通道的实体地址;以及在该编码数据成功地被写入至该多个通道130_1~130_N的至少一个通道之后,中央处理单元320或命令处理器310通知快闪转换层122该写入命令已经完成。如果命令处理器310自快闪转换层122接收到具有相对应的实体地址(例如芯片编号以及区块编号)的一抹除命令,中央处理单元320可控制接口电路350以通知多个通道130_1~130_N的至少一个通道来抹除具有该实体地址的区块;以及在该区块成功地被抹除之后,中央处理单元320或命令处理器310通知快闪转换层122该抹除命令已经完成。
在一实施例中,快闪转换层122的主要中央处理单元123用来进行事件驱动(event-driven)操作,以及在控制模块300中的中央处理单元320用来进行时序驱动(timing-driven)操作。详细地来说,因为快闪转换层122具有关于区块的健康的许多表,诸如读取计数表、抹除计数表、有效页面表以及数据保持表,主要中央处理单元123可参考这些表以判断可能有着品质问题的特定区块,举例来说,主要中央处理单元123可判断读取次数高于一门槛值(threshold value)的区块可能有读取障碍问题,主要中央处理单元123可判断有效页面低于一门槛值的区块需要被进行垃圾回收操作,主要中央处理单元123可判断写入时间早于一特定时间的区块可能有数据保持问题;然后主要中央处理单元123可对这些区块进行垃圾回收操作或耗损平均操作以改善数据品质。此外,主要中央处理单元123可藉由将读取命令(垃圾回收读取命令)以及写入命令(垃圾回收写入命令)传送至多个控制模块126_1~126_N的至少一个控制模块来执行垃圾回收操作或耗损平均操作,并且多个控制模块126_1~126_N会执行该些读取/写入命令。
控制模块300可周期性地扫描在相对应的通道中的区块,以判断任一个区块是否有品质问题,其中该周期可以是几分钟或任一其它适当时间。详细地来说,控制模块300可读取一区块中的某些页面以判断该区块是否有着不良品质,其中编解码器340可对自页面读取的数据进行解码,以取得解码资讯诸如一错误位元数或解码时间,并且中央处理单元320藉由该错误位元数高于一门槛或该解码时间长于预定时间来判断该区块有着不良品质。此外,在控制模块300藉由周期性地扫描区块来决定健康资讯之后,中央处理单元320可主动地处理有着较差品质的这些区块,或者中央处理单元320可将该健康资讯传送至快闪转换层122。具体来说,如果控制模块300判断相对应的通道的三个区块有较差品质,中央处理单元320可主动地分别将这三个区块的数据移动至空白区块,而不通知快闪转换层122;以及在成功地移动该数据之后,中央处理单元320在旧区块(例如上述有着较糟品质的三个区块)以及新区块(例如上述用来储存来自旧区块的数据的空白区块)中创建数据的地址映射表,并且该地址映射表被传送至快闪转换层122以更新储存于静态随机存取存储器125或动态随机存取存储器116的P2L表或L2P表;以及仅当主要中央处理单元123成功地藉由控制模块300所产生的地址映射表来更新P2L表或L2P表时,该些旧区块才允许被抹除。在另一范例中,如果控制模块300判断相对应的通道的三个区块有较糟品质,中央处理单元320可直接地将健康资讯传送至快闪转换层122,以使主要中央处理单元123创建纪录有着较差品质的区块的一表;以及主要中央处理单元123可以优先处理在该些区块上的垃圾回收操作。
鉴于以上所述,藉由设计在存储器控制器120中的多个控制模块126_1~126_N以分别处理多个通道130_1~130_N的存取,存储器控制器120可以有效地处理大量的读取/写入命令,此外,藉由配置主要中央处理单元123以执行事件驱动操作,以及配置多个控制模块126_1~126_N以执行时序驱动操作,主要中央处理单元123可以在执行上变得更有效率并且在设计上变得更简单。
另外,多个控制模块126_1~126_N的每一个控制模块可能在一短时间内自主机(例如伺服器100的处理器114)接收许多命令,从而导致内部缓冲器拥塞,因此,本发明另揭露了图4所示的另一实施例以克服该命令拥塞问题。图4绘示根据本发明一实施例的位于多个控制模块126_1~126_N的一控制模块中的伫列(queue)以及缓冲器的配置(configuration)的示意图,其中有着图3所示结构的控制模块126_1作为一范例。如图4所示,控制模块126_1包含有第一缓冲器410、第二缓冲器420、包含有多个命令伫列431_1~431_A的缓冲器430、以及仲裁器以及直接存储器存取(direct memory access,DMA)引擎440,其中仲裁器以及直接存储器存取引擎440耦接于多个快闪存储器芯片131_1~131_A。在此实施例中,第一缓冲器410以及第二缓冲器420可位于图3所示的命令处理器310或缓冲器330内,多个命令伫列431_1~431_A以及仲裁器以及直接存储器存取引擎440可位于接口电路350内。
第一缓冲器410以及第二缓冲器420用来接收自快闪转换层122的命令以及自生命令(self-generated command)(例如中央处理单元320所产生的读取/写入命令,以进行时序驱动操作),在一实施例中,第一缓冲器410用来储存写入命令,以及第二缓冲器420用来储存读取命令。在另一实施例中,第一缓冲器410用来储存有着高优先度(priority)的命令,以及第二缓冲器420用来储存有着较低优先度的命令,其中有着较高优先度的命令可包含来自主机的读取命令(例如来自处理器114的读取命令),以及有着较低优先度的命令可包含来自主机的写入命令、快闪转换层122所产生的写入命令(例如有关垃圾回收操作的写入命令)、快闪转换层122所产生的读取命令(例如有关垃圾回收操作的读取命令)及/或自生命令(例如中央处理器320所产生的读取/写入命令,以进行时序驱动操作)。
多个命令伫列431_1~431_A分别对应于通道130_1的多个平面,在此实施例中,假设多个快闪存储器芯片131_1~131_A的每一个快闪存储器芯片仅具有一平面,因此多个命令伫列431_1~431_A分别对应于多个快闪存储器芯片131_1~131_A,也就是说,命令伫列430_1仅储存具有快闪存储器芯片131-_1的实体地址的命令,命令伫列430_2仅储存具有快闪存储器芯片131-_2的实体地址的命令,…,以及命令伫列430_A仅储存具有快闪存储器芯片131-_A的实体地址的命令。因此,命令处理器310或中央处理单元320参考在第一缓冲器410以及第二缓冲器420中的命令的实体地址,以将该命令传送至相对应的命令伫列,举例来说,如果第一缓冲器410有着具有快闪存储器芯片131_2的实体地址的一写入命令,则命令处理器310或中央处理单元320会将该写入命令移动至命令伫列131_2;以及如果第一缓冲器420有着具有快闪存储器芯片131_A的实体地址的一读取命令,则命令处理器310或中央处理单元320会将该读取命令移动至命令伫列131_A。
在一实施例中,命令处理器310或中央处理单元320可根据第一缓冲器410以及第二缓冲器420的配置来决定命令储存至命令伫列的顺序,举例来说,如果第一缓冲器410用来储存有着较高优先度的命令,以及第二缓冲器420用来储存有着较低优先度的命令,则即使第二缓冲器410有着更多命令或第二缓冲器420中的命令停留时间比第一缓冲器410中的命令停留时间长,命令处理器310或中央处理单元320可优先将第一缓冲器410中的命令移动至多个命令伫列431_1~431_A。
仲裁器以及直接存储器存取引擎440用来不停扫描多个快闪存储器芯片131_1~131_A,以判断多个快闪存储器芯片131_1~131_A的状态,以及一旦仲裁器以及直接存储器存取引擎440判断一快闪存储器芯片不忙碌且能够被存取,则仲裁器以及直接存储器存取引擎440立即执行在相对应的命令伫列中的命令,具体来说,每当快闪存储器芯片接收一命令时,快闪存储器芯片需要一繁忙时间以执行该命令,其中该繁忙时间可为针对读取命令的一固定时间(诸如60微秒或80微秒),或该繁忙时间可为针对写入命令的另一固定时间。因此,仲裁器以及直接存储器存取引擎440周期性地扫描多个快闪存储器芯片131_1~131_A(例如循环扫描(round-robin scan)),以判断哪一个快闪存储器能够被存取,其中仲裁器以及直接存储器存取引擎440可检测每一个快闪存储器芯片的一引脚(pin),以及该引脚具有能够指示该快闪存储器芯片是否忙碌的一讯号。举例来说,如果仲裁器以及直接存储器存取引擎440检测快闪存储器芯片131_1为忙碌,则仲裁器以及直接存储器存取引擎440立即检测下一个快闪存储器芯片131_2;以及如果仲裁器以及直接存储器存取引擎440检测快闪存储器芯片131_2为不忙碌,则仲裁器以及直接存储器存取引擎440执行在命令伫列431_2中的命令以存取快闪存储器芯片131_2,其中如果写入命令被执行,则仲裁器以及直接存储器存取引擎440可直接将数据写入至快闪存储器芯片131_2,以及如果读取命令被执行,则仲裁器以及直接存储器存取引擎440可直接自快闪存储器芯片131_2读取数据;再者,如果仲裁器以及直接存储器存取引擎440检测下一个快闪存储器芯片为忙碌,则不考虑快闪存储器芯片131_2的处理。
鉴于以上所述,由于在控制模块123_1/300中的多个命令伫列431_1~431_A的每一个命令伫列对应于一专用(dedicated)快闪存储器芯片或在一快闪存储器芯片中的一专用平面,即使控制模块126_1/300在一短时间内接收许多命令,仲裁器以及直接存储器存取引擎440可利用此内部平行性以有效地存取多个快闪存储器芯片131_1~131_A。
在仲裁器以及直接存储器存取引擎440的扫描操作中,仲裁器以及直接存储器存取引擎440会不断地依序检测多个快闪存储器芯片131_1~131_A,也就是说,每一个快闪存储器芯片在一扫描周期中仅会被检测一次。在另一实施例中,仲裁器以及直接存储器存取引擎440可在扫描周期中为一特定快闪存储器芯片进行更多次检测操作,举例来说,如果命令伫列431_2有着具有较高优先度的读取命令,仲裁器以及直接存储器存取引擎440会增加快闪存储器芯片131_2的检测率(亦即快闪存储器芯片131_2的检测率高于其它快闪存储器芯片的检测率),或者仲裁器以及直接存储器存取引擎440可仅检测快闪存储器芯片131_2,直到具有较高优先度的读取命令被执行。
在图3以及图4所示的控制模块126_1/130中,由于仲裁器以及直接存储器存取引擎440利用此内部平行性(亦即多个命令伫列431_1~431_A)以存取多个快闪存储器芯片131_1~131_A,因此每一个快闪存储器芯片可以独立地运作而不被其它快闪存储器芯片的失败操作所影响。图5为根据本发明一实施例的控制方法的流程图,在以下描述中,命令伫列431_1以及相对应的快闪存储器芯片131_1用作为一范例。在步骤500中,流程开始,并且命令伫列431_1储存一读取命令。在步骤502中,仲裁器以及直接存储器存取引擎440检测快闪存储器芯片131_1为不忙碌,并且仲裁器以及直接存储器存取引擎440执行在命令伫列431_1中的该读取命令,并针对快闪存储器芯片131_1设置一繁忙时间(例如80微秒)。在步骤504中,仲裁器以及直接存储器存取引擎440根据该读取命令中的实体地址来自快闪存储器芯片131_1读取一原始数据。在步骤506中,编解码器340自仲裁器以及直接存储器存取引擎440接收该原始数据,并且编解码器340利用一硬解码(hard decoding)方法来对该原始数据进行解码。在此实施例中,该硬解码方法可为一BCH(Bose-Chaudhuri-Hocquenghem)解码方法,并且该原始数据藉由利用预设读取电压来获得,详细地来说,假设待读取区块为一三阶细胞区块(亦即在该区块中的每一个存储器细胞储存三个位元),图6为根据本发明一实施例的三阶细胞区块的一存储器细胞(memory cell)的多个状态(编程状态)以及相对应的读取电压的示意图,如图6所示,每一个存储器细胞可具有8个状态,并且每一个状态代表三个位元(命名为最低有效位元(least significant bit,LSB)、中间有效位元(centersignificant bit,CSB)以及最高有效位元(most significant bit,MSB))的不同组合。在图6所示的实施例中,当存储器细胞被编程以具有状态S0时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(1,1,1);当存储器细胞被编程以具有状态S1时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(1,1,0);当存储器细胞被编程以具有状态S2时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(1,0,0);当存储器细胞被编程以具有状态S3时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(0,0,0);当存储器细胞被编程以具有状态S4时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(0,1,0);当存储器细胞被编程以具有状态S5时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(0,1,1);当存储器细胞被编程以具有状态S6时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(0,0,1);以及当存储器细胞被编程以具有状态S7时,储存在存储器细胞中的最低有效位元、中间有效位元、最高有效位元为(1,0,1)。
当仲裁器以及直接存储器存取引擎440要读取最低有效位元时,仲裁器以及直接存储器存取引擎440可控制快闪存储器芯片131_1套用两个读取电压VR3、VR7来读取存储器细胞,若该存储器细胞于套用读取电压VR7时为导通或者该存储器细胞于套用读取电压VR3时为非导通,则判断这个最低有效位元为“1”;若该存储器细胞于套用读取电压VR7时为非导通,且套用读取电压VR3时为导通,则判断这个最低有效位元为“0”。当仲裁器以及直接存储器存取引擎440要读取中间有效位元时,仲裁器以及直接存储器存取引擎440可控制快闪存储器芯片131_1套用三个读取电压VR2、VR4以及VR6来读取该存储器细胞,若该存储器细胞于套用读取电压VR2时为非导通,则判断这个中间有效位元为“1”;若该存储器细胞于套用读取电压VR4时为非导通,且套用读取电压VR2时为导通,则判断这个中间有效位元为“0”;若该存储器细胞于套用读取电压VR6时为非导通,且套用读取电压VR4时为导通,则判断这个中间有效位元为“1”;以及,若该存储器细胞于套用读取电压VR6时为导通,则判断这个中间有效位元为“0”。当仲裁器以及直接存储器存取引擎440要读取最高有效位元时,仲裁器以及直接存储器存取引擎440可控制快闪存储器芯片131_1套用两个读取电压VR1、VR5来读取该存储器细胞,若该存储器细胞于套用读取电压VR5时为导通,或者该存储器细胞于套用读取电压VR1时为非导通,则判断这个最高有效位元为“1”;若该存储器细胞于套用读取电压VR5时为非导通,且若该存储器细胞于套用读取电压VR1时为导通,则判断这个最高有效位元为“0”。
在图6所示的实施例中,单一字元线上所有存储器细胞的最低有效位元构成了一最低有效位元数据页面(逻辑页面),单一字元线上所有存储器细胞的中间有效位元构成了一中间有效位元数据页面(逻辑页面),以及单一字元线上所有存储器细胞的最高有效位元构成了一最高有效位元数据页面(逻辑页面),也就是说,该三阶细胞区块的每一字元线具有三个数据页面:最低有效位元数据页面、中间有效位元数据页面以及最高有效位元数据页面。
值得注意的是,图6所示的格雷码(gray code)仅作为说明之用,而并非作为本发明的限制,任何适当的格雷码皆可应用于快闪存储器芯片131_1,且用于判断最低有效位元、中间有效位元以及最高有效位元的读取电压可随的改变。
在步骤504中获得的该原始数据仅利用多个读取电压VR1~VR7来产生。
在步骤508中,编解码器340判断该原始数据是否成功地被解码,如果是,流程进入步骤510;如果否,则流程进入步骤512。
在步骤510中,编解码器340输出该解码数据至命令处理器310或中央处理单元320,如果该读取命令来自快闪转换层122或主机(例如处理器114),则命令处理器310或中央处理单元320另将该解码数据传送至快闪转换层122。
在步骤512中,中央处理单元320将一重试(retry)命令传送至命令伫列431_1,其中该重试命令具有与上一个读取命令相同的实体地址,以及该重试命令对应于两倍的繁忙时间(例如160微秒),值得注意的是,在步骤504中获得的该原始数据仍被储存于编解码器340。
在步骤514中,仲裁器以及直接存储器存取引擎440检测快闪存储器芯片131_1为不忙碌,并且仲裁器以及直接存储器存取引擎440执行在命令伫列431_1中的该重试命令,并针对快闪存储器芯片131_1设置两倍的繁忙时间,仲裁器以及直接存储器存取引擎440根据在该读取命令中的实体地址来自快闪存储器芯片131_1读取一软数据(soft data)。
在步骤516中,编解码器340自仲裁器以及直接存储器存取引擎440接收该软数据,并且编解码器340利用一软解码(soft decoding)方法来使用该软数据以对该原始数据进行解码。在此实施例中,该软解码方法可为低密度奇偶校验码(low-density parity-checkcode,LDPC)解码方法,以及该软数据藉由利用不同于图6所示的预设读取电压VR1~VR7的读取电压来获得,具体来说,参考图7,图7为供软解码方法使用的读取电压的示意图,快闪存储器芯片131_1可利用读取电压VR1周围的多个读取电压VR11~VR14来读取字元线的每一个存储器细胞,以分别产生多个第一位元(亦即4个第一位元);以及快闪存储器芯片131_1可另利用多个读取电压VR51~VR54来读取字元线的每一个存储器细胞,以分别产生多个第二位元(亦即4个第二位元)。在此实施例中,字元线的每一个存储器细胞的该些第一位元以及该些第二位元可作为软数据。
在步骤518中,编解码器340输出该解码数据至命令处理器310或中央处理单元320,如果该读取命令来自快闪转换层122或主机,则命令处理器310或中央处理单元320另将该解码数据传送至快闪转换层122。
值得注意的是,步骤502、504、506、508、512、514以及516仅在控制模块126_1内部被执行,而无需自快闪转换层122接收任何指令,也就是说,如果编解码器340无法对在步骤504中获得的该原始数据进行解码,控制模块126_1中的中央处理单元320可主动地产生该重试命令至命令伫列131_1,而无需通知快闪转换层122来接收该指令,因此,该解码流程更有效率。
此外,如果编解码器340无法在步骤504中对快闪存储器芯片131_1的该原始数据进行解码,则其它快闪存储器芯片131_2~131_A仍正常运作而不受快闪存储器芯片131_1的解码失败的影响。
总结来说,在本发明的存储器控制器中,藉由设计分别对应于多个通道的多个控制模块,以及藉由设计分别对应于通道的多个平面/芯片的多个命令伫列,存储器控制器可有效地在一短时间内处理许多命令,以克服在先前技术中的命令拥塞问题。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (14)
1.一种存储器控制器,用来存取多个快闪存储器芯片,并且包含有:
一快闪转换层,用来产生多个通道中至少一通道的相对应的实体地址的命令;以及
一控制模块,耦接于该快闪转换层,其中该控制模块连接至该多个快闪存储器芯片,以及该控制模块包含有:
一中央处理单元;
多个命令伫列,其中该多个命令伫列分别对应于多个快闪存储器芯片,以及该多个命令伫列的每一命令伫列仅储存具有一相对应的快闪存储器芯片的实体地址的命令;
一仲裁器以及直接存储器存取引擎,耦接于该多个命令伫列,并且用来执行储存于该多个命令伫列的命令;以及
一编解码器,耦接于该仲裁器以及直接存储器存取引擎;
其中当该仲裁器以及直接存储器存取引擎执行在一特定命令伫列中的一读取命令,以自该多个快闪存储器芯片的一特定快闪存储器芯片读取一原始数据时,该编解码器接收该原始数据并且对该原始数据进行解码;以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元将一重试命令传送至该特定命令,以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取一软数据。
2.如权利要求1所述的存储器控制器,其特征在于,该读取命令以及该重试命令具有该特定快闪存储器芯片的相同实体地址,以及用来执行该读取命令以自该特定快闪存储器芯片读取该原始数据的多个读取电压与用来执行该重试命令以自该特定快闪存储器芯片读取该软数据的多个读取电压不相同;以及在该重试命令被执行之后,该编解码器利用该软数据对该原始数据进行解码,以产生一解码数据至该快闪转换层。
3.如权利要求1所述的存储器控制器,其特征在于,倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元传送该重试命令至该特定命令伫列以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取该软数据,而无需自该快闪转换层接收一指令。
4.如权利要求1所述的存储器控制器,其特征在于,当该仲裁器以及直接存储器存取引擎在该特定命令伫列中执行该读取命令以自该特定快闪存储器芯片读取该原始数据时,该仲裁器以及直接存储器存取引擎为该读取命令设置一第一繁忙时间;以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元传送该重试命令至该特定命令伫列,以及当该仲裁器以及直接存储器存取引擎在该特定命令伫列中执行该重试命令以自该特定快闪存储器芯片读取该软数据时,该仲裁器以及直接存储器存取引擎为该重试命令设置不同于该第一繁忙时间的一第二繁忙时间。
5.如权利要求4所述的存储器控制器,其特征在于,该第二繁忙时间长于该第一繁忙时间。
6.如权利要求1所述的存储器控制器,其特征在于,该仲裁器以及直接存储器存取引擎用来扫描该多个快闪存储器芯片来判断该多个快闪存储器芯片的状态,以决定是否要执行储存于该多个命令伫列的命令;以及该多个快闪存储器芯片的任一快闪存储器芯片的存取独立于其它快闪存储器芯片。
7.如权利要求1所述的存储器控制器,其特征在于,倘若该编解码器无法成功地对该原始数据进行解码,其它快闪存储器芯片仍正常运作而不受该特定快闪存储器芯片的解码失败的影响。
8.一种伺服器,包含有:
一网络模块,用来通过网络连接客户端;
一处理器,用来控制该伺服器的操作;
至少一通道,包含有多个快闪存储器芯片;以及
一存储器控制器,耦接于该处理器以及该至少一通道之间,其中该存储器控制器包含有:
一快闪转换层,用来产生具有该至少一通道的相对应的实体地址的命令;以及
一控制模块,耦接于该快闪转换层,其中该控制模块连接于该负数个快闪存储器芯片,以及该控制模块包含有:
一中央处理单元;
多个命令伫列,其中该多个命令伫列分别对应于该多个快闪存储器芯片,以及该多个命令伫列的每一命令伫列仅储存具有一相对应的快闪存储器芯片的实体地址的命令;
一仲裁器以及直接存储器存取引擎,耦接于该多个命令伫列,并且用来执行储存于该多个命令伫列的命令;以及
一编解码器,耦接于该仲裁器以及直接存储器存取引擎;
其中当该仲裁器以及直接存储器存取引擎执行在一特定命令伫列中的一读取命令,以自该多个快闪存储器芯片的一特定快闪存储器芯片读取一原始数据时,该编解码器接收该原始数据并且对该原始数据进行解码;以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元将一重试命令传送至该特定命令,以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取一软数据。
9.如权利要求8所述的伺服器,其特征在于,该读取命令以及该重试命令具有该特定快闪存储器芯片的相同实体地址,以及用来执行该读取命令以自该特定快闪存储器芯片读取该原始数据的多个读取电压与用来执行该重试命令以自该特定快闪存储器芯片读取该软数据的多个读取电压不相同;以及在该重试命令被执行之后,该编解码器利用该软数据对该原始数据进行解码,以产生一解码数据至该快闪转换层。
10.如权利要求8所述的伺服器,其特征在于,倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元传送该重试命令至该特定命令伫列以使该仲裁器以及直接存储器存取引擎自该特定快闪存储器芯片读取该软数据,而无需自该快闪转换层接收一指令。
11.如权利要求8所述的伺服器,其特征在于,当该仲裁器以及直接存储器存取引擎在该特定命令伫列中执行该读取命令以自该特定快闪存储器芯片读取该原始数据时,该仲裁器以及直接存储器存取引擎为该读取命令设置一第一繁忙时间;以及倘若该编解码器无法成功地对该原始数据进行解码,则该中央处理单元传送该重试命令至该特定命令伫列,以及当该仲裁器以及直接存储器存取引擎在该特定命令伫列中执行该重试命令以自该特定快闪存储器芯片读取该软数据时,该仲裁器以及直接存储器存取引擎为该重试命令设置不同于该第一繁忙时间的一第二繁忙时间。
12.如权利要求11所述的伺服器,其特征在于,该第二繁忙时间长于该第一繁忙时间。
13.如权利要求8所述的伺服器,其特征在于,该仲裁器以及直接存储器存取引擎用来扫描该多个快闪存储器芯片来判断该多个快闪存储器芯片的状态,以决定是否要执行储存于该多个命令伫列的命令;以及该多个快闪存储器芯片的任一快闪存储器芯片的存取独立于其它快闪存储器芯片。
14.如权利要求8所述的伺服器,其特征在于,倘若该编解码器无法成功地对该原始数据进行解码,其它快闪存储器芯片仍正常运作而不受该特定快闪存储器芯片的解码失败的影响。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/168,119 US11372592B1 (en) | 2021-02-04 | 2021-02-04 | Memory controller having a plurality of control modules and associated server for coding and decoding raw data from flash memory chips |
US17/168,119 | 2021-02-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860623A true CN114860623A (zh) | 2022-08-05 |
Family
ID=82320268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210005208.7A Pending CN114860623A (zh) | 2021-02-04 | 2022-01-05 | 存储器控制器以及伺服器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11372592B1 (zh) |
CN (1) | CN114860623A (zh) |
TW (1) | TWI782659B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US8621138B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
KR20110138076A (ko) * | 2010-06-18 | 2011-12-26 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 쓰기 방법 |
US9645177B2 (en) * | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
US10860508B2 (en) * | 2017-05-25 | 2020-12-08 | Western Digital Technologies, Inc. | Offloaded disaggregated storage architecture |
CN111723409B (zh) * | 2019-03-22 | 2023-06-06 | 旺宏电子股份有限公司 | 集成电路、存储器电路以及用于操作集成电路的方法 |
-
2021
- 2021-02-04 US US17/168,119 patent/US11372592B1/en active Active
- 2021-08-11 TW TW110129576A patent/TWI782659B/zh active
-
2022
- 2022-01-05 CN CN202210005208.7A patent/CN114860623A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI782659B (zh) | 2022-11-01 |
TW202232326A (zh) | 2022-08-16 |
US11372592B1 (en) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI692762B (zh) | 快閃記憶體控制器、快閃記憶體模組以及電子裝置 | |
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
CN113168875B (zh) | 读取干扰扫描合并 | |
US11693734B2 (en) | Nonvolatile semiconductor memory device | |
CN112053730A (zh) | 用于存储器子系统的冗余云存储器存储装置 | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
US11675714B2 (en) | Memory sub-system including an in package sequencer separate from a controller | |
US11567817B2 (en) | Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller | |
CN114341815A (zh) | 在存储器组件上执行错误控制操作以用于垃圾收集 | |
CN114341985A (zh) | 依序slc读取优化 | |
US11507319B2 (en) | Memory controller having a plurality of control modules and associated server | |
US11372592B1 (en) | Memory controller having a plurality of control modules and associated server for coding and decoding raw data from flash memory chips | |
TWI769040B (zh) | 記憶體控制器以及伺服器 | |
TW202314526A (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 |