用于非易失性存储器中的分布式计算的系统和方法与流程

文档序号:11160829阅读:1018来源:国知局
用于非易失性存储器中的分布式计算的系统和方法与制造工艺

本申请要求(于2014年5月29日提交的)美国申请No.14/290,305的权益,将其全文通过引用并入于此。

技术领域

本申请总的来说涉及在系统中管理数据。更具体地,本申请涉及非易失性存储器中的分布式计算。



背景技术:

数据存储装置可以采取几种形式之一。一种形式是硬盘驱动器(HDD),其中在涂覆有磁性材料的盘上存储数据。通常,HDD包括多个快速地旋转的盘,布置在移动致动器臂上的磁头从盘表面读取数据和写入数据到盘表面。数据存储装置的另一形式是固态驱动器(SSD)。与在HDD中使用盘不同,SSD使用集成电路组件来存储数据。SSD可以使用与HDD的传统的块输入/输出(I/O)可兼容的电子接口。在这点上,SSD可以在常规应用中容易地替换HDD。



技术实现要素:

本发明公开了用于在存储器系统(例如固态驱动器(SSD))内并入数学和/或逻辑功能性的系统和方法。该数学和/或逻辑功能性可以包括运算逻辑单元(ALU)。ALU可以驻留在存储器系统的各种部分中。在SSD中,其可以包括SSD控制器和一个或者多个存储器芯片,一个或多个ALU可以位于一个或多个闪存存储器芯片或者SSD控制器之一或者两者中。当驻留在闪存存储器芯片中时,可以使用单个ALU或者多个ALU。例如,单个ALU可以被分配给闪存存储器芯片内的闪存存储器的一个块、某些块或者每个块。作为另一实例,ALU可以被分配给子块结构,例如块中每一位线。ALU驻留在例如SSD的存储器系统中使得能够在SSD内执行更多处理和减小发送数据到SSD外部以用于处理的需要。另外,ALU驻留在例如SSD的存储器系统中使存储器系统能够执行各种功能,例如数据库功能、图像处理功能和/或文件系统功能。

根据第一方面,公开了包括存储器的固态驱动器(SSD)。该SSD包括:配置为与主机装置通信的接口;和与接口通信的控制器,该控制器包括运算逻辑单元(ALU)。该控制器配置为:从主机装置接收命令;响应于接收到命令,使用ALU以生成一个或多个结果;和将一个或多个结果的至少一部分或者一个或多个结果的指示发送到主机装置。

在第二方面中,公开了电子集成电路与多个主机之一通信的方法。该方法包括:使用主机协议经由第一组电触点与第一主机通信,电子集成电路嵌入在第一主机内,该第一组电触点在电子集成电路的封装外部上;接收一个或多个信号以选择用于测试电子集成电路的至少一部分的第二组电触点,该第二组电触点在电子集成电路的封装外部上;和基于所接收的一个或多个信号,使用主机接口开关从与第一组电触点的某些或者全部的通信切换到使用主机协议的与第二组电触点的某些或者全部的通信,以使得第二主机测试电子集成电路的至少一部分。

在第三方面中,公开了配置用于固态驱动器(SSD)的存储器集成电路芯片。该存储器集成电路芯片包括:配置为与用于SSD的SSD控制器通信的接口;存储器;和与接口和存储器通信的控制器。控制器包括运算逻辑单元(ALU)且被配置为:从SSD控制器接收命令;响应于接收到命令,使用ALU以生成一个或多个结果;和将一个或多个结果的至少一部分或者一个或多个结果的指示发送到SSD控制器。

在第四方面中,提供了操作配置用于固态驱动器(SSD)的存储器集成电路芯片的方法。该方法包括:经由接口从SSD的SSD控制器接收命令;响应于接收到命令,使用运算逻辑单元(ALU)以生成一个或多个结果,该ALU驻留在存储器集成电路芯片中;和将一个或多个结果的至少一部分或者一个或多个结果的指示发送到SSD控制器。

在第五方面中,公开了配置用于固态驱动器(SSD)的存储器集成电路芯片。该存储器集成电路芯片包括:配置为与用于SSD的SSD控制器通信的接口;存储器;和与接口和存储器通信的控制器。该控制器包括数学功能性或逻辑功能性,该逻辑功能性包括异或(XOR)功能性和与(AND)功能性或者或(OR)功能性中的至少一个。该控制器配置为:从SSD控制器接收命令;响应于接收到命令,使用数学功能性或逻辑功能性以生成一个或多个结果;和将一个或多个结果的至少一部分或者一个或多个结果的指示发送到SSD控制器。更具体地,该存储器集成电路芯片可以包括控制器,该控制器包括数学功能性和逻辑功能性,其中逻辑功能性包括XOR功能性,AND功能性和OR功能性。

其他特征和优点将在浏览以下附图、详细说明和权利要求时变得明显。另外,公开了其他实施例,且每一个实施例可以单独使用或者组合地一起使用。现在将参考附图描述实施例。

附图说明

参考以下附图和描述可以更好地理解该系统。在附图中,相同的附图标记指示遍及不同的图中相应的部分。

图1示出与存储器装置连接的主机。

图2示出SSD的框图。

图3A示出闪存存储器芯片控制器的框图的第一实例。

图3B-图3C示出分配给闪存存储器阵列中的块的一个或多个ALU的框图的实例。

图3D是分配给闪存存储器区块的ALU的实例。

图3E示出SSD控制器芯片的框图的第一实例。

图4A-图4B分别示出闪存存储器芯片控制器和SSD控制器芯片的框图的第二实例。

图5示出SSD控制器芯片的第三实例的框图。

图6示出由闪存存储器芯片控制器执行的动作的流程图。

图7示出由SSD控制器芯片执行的动作的流程图。

具体实施方式

主机装置可以包括一个或多个外围装置。该外围装置可以与主机装置通信(例如连接到主机装置),从而扩展主机装置的功能性。一种类型的外围装置是存储装置,其增加主机装置的存储容量由此增加主机装置的功能性。如以下更详细地讨论的,存储装置可以包括在第一实施例中的固态驱动器(SSD)或者在第二实施例中的闪存驱动器。

通常,主机装置可以执行一个或多个功能。如以下更详细地讨论的,所述功能可以包括数据库功能、图像处理功能、和/或文件系统功能。所列出的功能仅用于说明目的。其他功能是可预期的。在本发明的一个方面中,一功能的某些或者全部在存储装置中执行。在这点上,该功能的部分(或者全部)的执行可以分配给存储装置。

在一个实施例中,一功能(或者一组功能)可以由存储装置执行。在一个方面中,仅存储装置的一部分执行该功能(或者该组功能)。如以下更详细地讨论的,SSD包括SSD控制器芯片和一个或多个闪存存储器芯片。在一种实现中,闪存存储器芯片(例如闪存存储器芯片内的控制器)执行该功能(或者该组功能)。作为另一种实现,SSD控制器芯片(例如SSD控制器芯片内的控制器)执行该功能(或者该组功能)。在另一方面中,存储装置的多个部分可以执行一功能(或者一组功能)。如以下更详细地讨论的,单个功能可以被划分为多个子功能,其中,存储装置的一部分(例如SSD控制器芯片)执行一个子功能,而存储装置的另一部分(例如闪存存储器芯片)执行另一子功能。

在替代实施例中,多个功能可以被划分以使得功能的第一子集由存储装置执行,且功能的第二子集由主机装置执行。例如,一组功能涉及文件系统管理,如以下讨论的。关于文件系统管理的功能的第一子集(例如较低复杂度文件系统功能)可以由存储装置执行,且关于文件系统管理的功能的第二子集(例如较高复杂度文件系统功能)可以由主机装置执行。在另一实施例中,一单个功能可以被划分为第一子功能和第二子功能,其中第一子功能由存储装置执行,且第二子功能由主机装置执行。例如,一个功能是处理图像。更具体地,图像处理可以包括第一图像处理步骤和第二图像处理步骤。如以下更详细地讨论的,存储装置(例如闪存存储器芯片内的控制器和/或SSD控制器芯片)可以执行第一图像处理步骤,并发送结果到主机装置以使得主机装置在该结果上执行第二图像处理步骤。在又一实施例中,通常由主机装置执行的多个功能可以全部由存储装置执行。

为了执行通常由主机装置执行的功能的部分(或者全部),存储装置可以包括附加的逻辑和/或计算性能。在一个实施例中,存储装置包括数学计算功能性和/或逻辑功能性。例如,数学计算功能性可以包括算术和/或代数计算功能性(例如加法、减法、乘法、除法等)。作为另一实例,逻辑功能性可以包括以下逻辑操作:AND(与)、NAND(与非)、OR(或)、NOR(或非)、XOR(异或)、NOT(非)等中的任何一个或者任何多个(包括全部)的组合。在这点上,存储装置可以分别执行具有数学计算功能性和/或逻辑功能性的数学计算操作和/或逻辑操作。由存储装置执行的数学计算操作和/或逻辑操作可以用于执行以上讨论的功能,例如数据库功能、图像处理功能和/或文件系统功能。如以下更详细地讨论的,特定功能(例如数据库功能)可以由一个或多个数学计算操作和/或逻辑操作组成。

使用数学计算功能性和/或逻辑功能性的数学计算操作和/或逻辑操作可以由存储装置使用一个或多个部件执行。在一个实施例中,存储装置包括运算逻辑单元(ALU)。如以下更详细地讨论的,ALU配置为执行整数运算和逻辑操作(例如AND、NAND、OR、NOR、XOR、NOT)。在替代实施例中,存储装置可以包括浮点单元(FPU),该浮点单元可以配置为执行非整数计算,例如除法操作,其可以生成分数或者“浮点”数。在另外的替代实施例中,存储装置可以包括ALU和FPU两者。

如上所述,在一个实施例中,一种类型的存储装置是固态驱动器(SSD)。SSD可以包括SSD控制器和存储器(例如NAND闪存非易失性存储器或者DRAM易失性存储器),以在SSD内存储数据。SSD控制器可以具体表现为集成电路芯片,而存储器(例如闪存非易失性存储器)可以具体表现为与SSD控制器集成电路芯片分开的一个或多个集成电路存储器芯片。在替代实施例中,另一类型的存储装置是闪存驱动器。

在一个实施例中,数学计算功能性和/或逻辑功能性可以驻留在集成电路存储器芯片中。例如,多个集成电路存储器芯片可以与SSD控制器通信。所述多个集成电路存储器中的一个、某些或者全部集成电路存储器可以包括ALU、FPU或者ALU/FPU。闪存存储器芯片因此可以应主机系统的请求执行计算或逻辑操作。在这点上,计算可以从主机系统分配至存储装置,例如分配至SSD上的集成电路存储器芯片。另外,集成电路存储器芯片的计算可以被更快地执行,因为数据不需要被发送到集成电路存储器芯片外部以用于处理,并且因为可以并行地(例如,在集成电路存储器芯片内)执行处理。

在替代实施例中,数学计算功能性和/或逻辑功能性可以驻留在SDD控制器集成电路芯片中。在另外的替代实施例中,数学计算功能性和/或逻辑功能性可以驻留在SDD控制器集成电路芯片和多个集成电路存储器芯片的一个、某些或者全部集成电路存储器芯片中。

图1示出主机系统100和存储器系统102。主机系统100可以包括任何类型的主机装置,例如静态计算机系统(例如台式计算机)或者移动计算机系统(例如膝上型计算机、智能电话、平板计算机等)。

图1的主机系统100在考虑存储器系统102的情况下可以被视为具有两个主要部分,该两个主要部分由电路和软件的组合构成。它们是应用部分108以及与存储器系统102的接口连接的驱动器部分110。在台式计算机、膝上型计算机、智能电话、平板计算机中,例如,应用部分110可以包括运行文字处理、图形、控制或者其他流行的应用软件的处理器(例如,CPU)112,以及用于管理主机系统100上的数据的文件系统114。在主要专用于执行单组功能的相机、蜂窝电话或者其他主机系统中,应用部分108包括操作相机以拍摄和存储画面、操作蜂窝电话以做出和接收呼叫等的软件。

存储器系统102可以是嵌入主机内的闪存存储器,例如安装在主机系统中的SSD的形式,配合部分104和106将主机系统100连接到SSD。替代地,存储器系统102可以具有通过机械和电连接器的配合部分104和106可拆卸地连接到主机系统100的卡的形式。被配置为用作内部或者嵌入SSD驱动器的闪存存储器可以与图1的示意看起来类似,主要差异是存储器系统102的位置在主机系统100内部。SSD可以具有用作旋转磁盘驱动器的插入式(drop-in)替换的分立模块的形式。

另外,在一个实施例中,例如闪存存储器的存储器可以包括二维存储器。在替代实施例中,存储器可以包括三维存储器。在另外的替代实施例中,存储器可以包括二维存储器和三维存储器的组合。

图1的存储器系统102可以包括半导体存储器装置,并包括非易失性存储器(例如一个或多个存储器芯片116)和存储器系统控制器118。在替代实施例中,存储器系统102可以包括易失性存储器和非易失性存储器两者。存储器系统控制器118与主机系统100接口连接,存储器系统102连接到主机系统100以来回传递数据,存储器系统控制器118控制存储器芯片116。

主机系统100可以为了多个目的与存储器系统通信。一个目的是主机系统102在存储器系统上存储数据、和/或从存储器系统读取数据。例如,主机系统100可以发送数据到存储器系统102,以用于存储数据在存储器系统102的一个或多个存储器芯片116上。作为另一实例,主机系统100可以从存储器系统102请求存储在一个或多个存储器芯片116上的数据。当与存储器系统通信时,主机系统100可以发送数据的逻辑地址,例如以逻辑块地址范围(LBA)的形式。存储器系统控制器118然后可以在一个或多个步骤中将LBA转换为存储器芯片116上的实际物理地址。存储器系统控制器118可以执行从逻辑地址到实际物理地址的转换以映射到实际物理地址。例如,来自主机系统100的LBA可以映射到存储器系统内部的逻辑地址,且存储器系统内部逻辑地址被映射到实际物理地址。作为另一实例,来自主机系统100的LBA可以直接映射到实际物理地址。

图1示出存储器芯片116可以包括多个存储器芯片,例如芯片0到N,其中N是整数。存储器芯片116内的每一个存储器芯片可以彼此相同(如图1所示),或者可以不同。例如,存储器芯片0(120)可以包括存储器芯片0控制器(122)和闪存存储器阵列(124)。同样地,存储器芯片N(126)可以包括存储器芯片N控制器(128)和闪存存储器阵列(130)。

如上所述,存储器系统102的一部分可以包括数学计算功能性和/或逻辑功能性。在一个实施例中,数学计算功能性和/或逻辑功能性可以驻留在存储器芯片116的一部分中,例如一个、某些或者全部存储器芯片(例如在存储器芯片0控制器122和存储器芯片N控制器128中)。在替代实施例中,数学计算功能性和/或逻辑功能性可以驻留在存储器系统控制器118中。在另外的替代实施例,数学计算功能性和/或逻辑功能性可以驻留在存储器芯片116的一部分中,例如在存储器芯片0控制器122和存储器芯片N控制器128中,和存储器系统控制器118中。

如上所述,一种类型的存储器系统102是SSD。在图2中示出了SSD 200的框图的实例。在美国专利公开No.2008/0113525中公开了SSD的实例,通过引用将其全文并入这里。SSD 200包括SSD控制器芯片202。如图2所示,SSD控制器芯片202包括主机系统接口204,该主机系统接口204可以包括电路和/或软件以与主机系统100通信。替代地,主机系统接口204可以在SSD控制器芯片202外部。SSD控制器芯片202另外包括配置为执行一个或多个功能的SSD控制器电路206,所述功能包括以下的任何一个、任何组合或者全部:纠错;损耗平衡;坏块映射;读取擦除和读取干扰管理;读和写高速缓存;无用单元收集;和加密。如以下更详细地讨论的,在一个实施例中,SSD控制器芯片202可以包括附加的功能性。SSD控制器芯片202中的附加的功能性可以辅助一个、某些或者全部闪存存储器芯片执行数学计算功能性和/或逻辑功能性,例如通过将从主机系统接收到的命令路由到闪存存储器芯片,以便于闪存存储器芯片执行数学计算功能性和/或逻辑功能性。在替代实施例中,SSD控制器芯片202中的附加的功能性可以包括数学计算功能性和/或逻辑功能性,以执行如上所述功能的之外的功能。

SSD 200另外包括一个或多个闪存存储器芯片,例如闪存存储器芯片0(210)到闪存存储器芯片N(216)。闪存存储器芯片0(210)可以包括闪存存储器芯片0控制器(212)和闪存存储器阵列214。同样地,闪存存储器芯片N(216)可以包括闪存存储器芯片N控制器(218)和闪存存储器阵列220。在一个实施例中,闪存存储器阵列214和220包括闪存存储器单元(例如单级单元和/或多级单元)。在替代实施例中,闪存存储器阵列214和220由闪存存储器单元构成,而没有任何计算功能性。如以下更详细地讨论的,在一个实施例中,一个、某些或者全部闪存存储器芯片,例如闪存存储器芯片0(210)和闪存存储器芯片N(216)可以包括数学计算功能性和/或逻辑功能性。

如上所述,数学计算功能性和/或逻辑功能性可以驻留在存储装置的不同部分中。如以下更详细地讨论的,图3A-图3E示出SSD内的数学计算功能性和/或逻辑功能性仅位于闪存存储器芯片控制器中。图4A-图4B示出SSD内的数学计算功能性和/或逻辑功能性位于闪存存储器芯片控制器和SSD控制器芯片两者中。图5示出SSD内的数学计算功能性和/或逻辑功能性仅位于SSD控制器芯片中。数学计算功能性和/或逻辑功能性可以位于SSD内何处的实例是用于说明目的。其他实例是可预期的。

图3A是闪存存储器芯片控制器300的框图。如上所述,闪存存储器芯片的一部分,例如闪存存储器芯片控制器300,通常可以执行数学操作和基元功能。SSD控制器芯片392可以辅助闪存存储器芯片控制器300执行数学操作和基元功能,如以下关于图3E讨论的。

数学操作可以包括一元操作或者二元操作。一元操作仅涉及一个值,例如求反和三角函数。二元操作采用两个值,且例如包括加法、减法、乘法、除法、取幂和取余。在一个实施例中,除数学操作之外,闪存存储器芯片还可以执行一个或多个逻辑操作,如以下更详细地讨论的。在替代实施例中,代替执行数学操作,闪存存储器芯片可以执行一个或多个逻辑操作。

闪存存储器芯片控制器300可以包括图2中示出的闪存存储器芯片0控制器(212)或者闪存存储器芯片N控制器(218)的扩展框图。闪存存储器芯片控制器300包括SSD控制器接口302以用于与例如SSD控制器芯片202通信。

闪存存储器芯片控制器300另外包括闪存存储器芯片处理器304。闪存存储器芯片处理器304可以包括微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列、逻辑数字电路或者其他现有技术已知的或者将来开发的逻辑处理性能。闪存存储器芯片处理器304可以包括一个或多个处理性能,例如比较器功能。如图3A所示,闪存存储器芯片处理器304包括不同功能性,例如ALU 306、计数器308和FPU 310。

在一个实施例中,ALU 306、计数器308和FPU 310中的任何一个、任何组合或者全部存在于闪存存储器芯片处理器304中。例如,闪存存储器芯片处理器304中可以包括ALU 306,而不包括计数器308和FPU 310。作为另一实例,闪存存储器芯片处理器304中可以包括ALU 306和计数器308,而不包括FPU 310。

图3A还包括存储器312。存储器312可以包括易失性存储器(例如随机存取存储器(RAM))和/或非易失性存储器。可由闪存存储器芯片处理器304执行的处理器可执行指令可以存储在存储器312中。处理器可执行指令的实例包括数据库功能软件314、图像处理软件316和文件系统软件318。以下讨论各种功能包括文件系统功能、图像处理功能和数据库功能,其分别可以使用文件系统软件318、图像处理软件316、和数据库功能软件314实现。

图3A示出闪存存储器芯片控制器300包括存储器312,其作为闪存存储器芯片控制器300的一部分。在这点上,存储器312可以专用于闪存存储器芯片控制器300的操作。替代地,存储器312可以是闪存存储器的一部分(例如闪存存储器阵列214或者闪存存储器阵列220)。因此,闪存存储器芯片控制器300可以动态地分配闪存存储器的一部分(例如闪存存储器阵列214或者闪存存储器阵列220)用于与闪存存储器芯片控制器300有关的操作,例如分配存储器用于数学计算功能性和逻辑功能性,或者分配闪存存储器的一部分用于数据存储。在另外的替代实施例,存储器312可以包括专用于闪存存储器芯片控制器300的操作的部分,例如用于存储用于由闪存存储器芯片控制器300执行的软件的存储器,以及被动态地分配的部分。

图3A示出了作为闪存存储器芯片控制器300的一部分的数学计算功能性和逻辑功能性的几个实例,包括ALU 306、计数器308和FPU 310。在一个实施例中,如图3A中示出的ALU 306作为闪存存储器芯片处理器304的一部分而被包括。例如,ALU 306可以是闪存存储器芯片处理器304的一部分,其中,闪存存储器芯片处理器304可以执行不同软件(其可以存储在存储器312中)以执行ALU 306的功能性。在替代实施例中,ALU 306可以是与闪存存储器芯片处理器304分开并与闪存存储器芯片处理器304通信的电子部件。在任一实施例中,ALU可以被包括在并驻留在闪存存储器芯片控制器中。输入和输出可以沿着电子路径(例如总线)流动。

如上所述,ALU 306可以执行各种操作,例如逻辑操作(例如以下的任何一个、任何组合或者全部:AND、OR、NOT、XOR、NOR、NAND);移位操作(例如将位的位置向右或者向左移位某个数目的地点,其可以考虑为乘法操作);和算术操作(例如,加法和减法)。

在一个实施例中,ALU 306可以被划分为两个单元,包括运算单元(AU)和逻辑单元(LU)。在替代实施例中,ALU 306由单个单元组成。另外,闪存存储器芯片控制器300可以包括一个或多个ALU。例如,在一个实施例中,闪存存储器芯片处理器304可以包括单个ALU。在替代实施例中,闪存存储器芯片处理器304可以包括多个ALU。

到ALU的输入可以包括指令字(例如机器指令字),该指令字包括操作码(例如“op码”)、一个或多个操作数和可能的格式码。如以下更详细地讨论的,ALU可以接收各种命令。该命令可以经由SSD控制器从主机系统发送。响应于接收到命令,闪存存储器芯片控制器可以确定执行一个或多个数学和/或逻辑操作。如上所述,执行一个或多个数学和/或逻辑操作,以用于执行例如图像处理、数据库功能和文件系统功能的功能的目的。在这点上,命令可以指示图像处理命令、数据库命令或者文件系统命令。其他命令是可预期的。因此,不同指令字可以用于各种操作。

命令可以包括操作码。操作码可以向ALU指示执行什么功能和在操作中使用的什么操作数。例如,两个操作数可以被加在一起或者被逻辑地比较。输出可以包括位于闪存存储器的一部分(例如被指定为存储寄存器的闪存存储器的一部分)中的结果,以及指示是否成功地执行了功能的设置。

如上所述,闪存存储器芯片中的存储器可以用于ALU操作,该ALU操作包括用于输入操作数、正在相加的操作数、(在累加器中存储的)累加结果和移位结果的存储地点。在闪存存储器芯片控制器300包括专用ALU的实施例中,ALU的子单元中的位流和关于它们执行的操作可以由选通电路控制。这些电路中的门可以由使用用于每一操作码的特定的算法或者序列的顺序逻辑单元控制。在运算单元中,可以通过一系列加法或者减法和移位操作执行乘法。另外,负数可以以多种方式在ALU中表示。在逻辑单元中,可以执行多个可能的逻辑操作之一,例如比较两个操作数并标识在哪些位不匹配。

可以另外使用计数器308以执行各种功能,例如文件系统功能、图像处理功能和数据库功能。计数器308可以使用寄存器类型的电路(例如触发电路)实现。可以使用不同计数器,包括但不限于:异步计数器;同步计数器;十进计数器;向上/向下计数器(在控制输入的命令下向上和向下地计数);环形计数器;约翰逊计数器;等等。类似于ALU,计数器308可以具体表现为专用硬件(例如触发器)或者可以具体表现为在闪存存储器芯片处理器304上执行的软件。

FPU 310配置为关于浮点数进行例如数学操作的操作。数学操作包括但不限于除法、平方根、移位和超越函数(例如指数或者三角测量计算)。类似于ALU 306,如图3A中示出的,FPU 310作为闪存存储器芯片处理器304的一部分被包括。因此,FPU 310可以是闪存存储器芯片处理器304的一部分,其中,闪存存储器芯片处理器304可以执行不同软件(该软件可以存储在存储器312中)以执行FPU 310的功能性。在替代实施例中,FPU 310可以是与闪存存储器芯片处理器304分开且与闪存存储器芯片处理器304通信的电子部件。输入和输出可以沿着电子路径(例如总线)流动。作为以下讨论的图像处理的实例的图形应用可以使用FPU 310。

在闪存存储器芯片控制器300中实施的数学计算功能性和逻辑功能性使闪存存储器芯片控制器300能够执行各种功能。所述功能的实例包括但不限于:数据库功能、图像处理功能和文件系统功能。如图3A所示,闪存存储器芯片控制器300可以分别通过使用数据库功能软件314、图像处理软件316和文件系统软件318来执行数据库功能、图像处理功能和文件系统功能。

例如,在闪存存储器芯片控制器300中实施的数学计算功能性和逻辑功能性(例如ALU 306)可以与闪存存储器芯片处理器304中的比较器一起使用。在一个实现中,在闪存存储器芯片内存储(例如在闪存存储器的数据高速缓存存储的)图案和页被读取,并使用比较器做出比较。

以下更详细地讨论的一个应用是将一个或多个页加载到高速缓存(例如动态数据高速缓存(DDC))中,并且在加载的页的部分或者全部上执行数学和/或逻辑功能性。例如,平面1可以被加载到动态数据高速缓存1(DDC1)中,且平面2可以被加载到动态数据高速缓存2(DDC2)中。可以考虑DDC1和DDC2是可以装进ALU中的操作数寄存器。ALU执行一个或多个操作,例如+、符号化、*、移位及其他操作。在操作数寄存器上执行运算器操作的结果可以被路由至数据高速缓存。数据高速缓存中的数据然后可以被复制到闪存存储器芯片上到另一平面。在这点上,平面1和平面2上的数据可以被代数地操作,且结果存储在平面3中。所有这些操作可以在闪存存储器芯片内做出,而不将数据移动到闪存存储器芯片外部,且可以以页宽格式做出。

数学和/或逻辑功能性的结果可以存储在闪存存储器芯片内。在一个实施例中,闪存存储器芯片可以具有用于存储结果的专用存储器。在替代实施例中,闪存存储器芯片可以不具有用于存储结果的专用存储器空间,且可以动态地分配用于存储结果的区域。在这点上,闪存存储器芯片控制器300可以分区闪存存储器芯片内存储器的一部分,例如闪存存储器内(例如,在闪存存储器阵列214内或者闪存存储器阵列220内)的一部分,以具有输入区块和输出区块。在实施例中,计算结果可以存储在混合存储器中,例如与相变存储器(PCM)混合的NAND闪存存储器。替代地,计算结果可以单独地存储在NAND闪存存储器中。

数据库功能

闪存存储器芯片的一部分,例如闪存存储器芯片控制器300,可以执行一个或多个数据库功能,以管理闪存存储器中存储的数据。例如,闪存存储器芯片0控制器212可以管理在闪存存储器芯片0(210)上存储的闪存存储器阵列214中存储的数据。替代地,闪存存储器芯片0控制器212可以管理不同芯片上存储的闪存存储器(例如闪存存储器芯片N(216)上存储的闪存存储器阵列220)中存储的数据。

在这点上,闪存存储器芯片控制器300可以执行各种数据库功能,例如:体系搜索;插入;删除;附加;及其他数据库功能。如以下讨论的,整个数据库、数据和功能可以存储在闪存存储器芯片上。在这点上,每一个闪存存储器芯片可以做出实际的搜索,这与在主机级别做出的相反。

数据的管理可以涉及定义用于存储信息的结构和提供用于操作信息的机制两者。例如,数据的管理可以向用户提供数据的概要浏览。也就是,数据库系统可以隐藏怎样存储和保持数据的某些细节。由此,可以以复杂数据结构存储数据,这允许有效率的检索,然而用户可以看到简化和易于使用的数据浏览。为了实现此,可以使用不同的概要级别。例如,最低概要级别可以是物理级,且可以描述实际上怎样存储数据和详述数据结构。下一较高概要级别可以是逻辑级,且可以描述存储什么数据,和在那些数据当中存在什么关系。最高概要级别可以是浏览级,且可以描述与每一用户相关的数据库的一部分;用于访问数据库的应用程序例如可以形成浏览级的一部分。

数据库的整体结构可以被称为数据库体系。该体系可以指定数据、数据关系、数据语义学和关于数据的一致性约束。在数据库的结构下面的是逻辑数据模型,其可以包括用于描述体系的概念性工具的集合。

一种类型的数据模型是实体关系数据模型,其基于被称为实体的基本对象和这些对象当中的关系的集合。实体是在实际世界中可与其他对象区分开的“事情”或者“物体”。关系是几个实体当中的关联。其他类型的模型无限制地包括面向对象的模型、基于记录的模型和关系模型。

逻辑地,关系数据库中的数据可以组织为一组关系,其中每一关系由一组记录构成。这是给予数据库用户的浏览。存储器装置(例如SSD)上的下层实现例如可以对于用户隐藏,并可以包括一组文件。每一文件包括一组固定尺寸的盘存储片,被称为块。关系的记录存储在块内。每一关系可以与一个或多个文件相关联。通常,文件包括仅来自一个关系的记录,但是因为性能原因,也使用其中文件包括来自多于一个关系的记录的组织。

检索关系数据库中的所需记录的一个方式是关于相应的关系执行扫描;扫描一次一个地从关系取出所有记录。如上所述,在一个实施例中,SSD由多个闪存存储器芯片组成,例如闪存存储器芯片0(210)和闪存存储器芯片N(216)。主机系统100可以发送命令到SSD 200以执行扫描。扫描可以用于SSD 200内存储的所有数据,或者可以用于SSD 200内存储的数据的子集(例如一个或多个LBA范围)。如以下更详细地讨论的,SSD控制器芯片202可以确定发送命令到哪个闪存存储器芯片。在扫描用于SSD 200内存储的所有数据的实例中,SSD控制器芯片202可以发送命令到每一个闪存存储器芯片以用于处理。在扫描用于SSD 200内存储的数据的子集的实例中,SSD控制器芯片202可以首先确定哪个闪存存储器芯片具有在其中存储的所述数据的子集(例如,基于一个或多个LBA范围确定存储所述数据的物理位置是什么),并将命令仅发送到确定为存储所述数据的子集的闪存存储器芯片。

通常,使用关于关系的扫描从较大关系访问所需记录是很耗时的。但是,因为可以在闪存存储器芯片级执行扫描,经历扫描的数据不需要被发送到芯片外,例如闪存存储器芯片外部。在这点上,在SSD内(例如在闪存存储器芯片内)执行数据库功能可以比在主机系统上执行功能更快。

存在数据操作的几个实例,例如,无限制地检索、插入、删除和修改数据库中存储的信息。数据操作语言使用户能够访问或者操作通过适当的数据模型组织的数据。数据操作语言的实例无限制地包括过程数据操作语言和非过程数据操作语言。

一个类型的数据库功能可以包括数据库查询。数据库查询可以包括发送到闪存存储器芯片的命令,其请求从闪存存储器芯片检索信息。如以下更详细地讨论的,响应于数据库查询,闪存存储器芯片可以使用ALU以搜索闪存存储器芯片中的闪存存储器,从而生成一个或多个结果。因此数据库查询可以用作从闪存存储器芯片内的闪存存储器检索信息的方式。

一个或多个数据库语言可以用于数据库命令。更具体地,数据库语言可以支持数据定义和数据操作功能两者。一个类型的数据库语言是SQL(结构化查询语言),其他数据库语言是可预期的。SQL包括数据定义语言和数据操作语言。SQL的范围包括例如数据插入、查询、更新和删除、体系创建和修改、和数据访问控制。

SQL可以在命令中使用一个或多个运算符。以下是运算符实例的表格:

可以使用以上示例运算符中的任何一个、任何组合或者全部。另外,其他运算符可预期。可以通过闪存存储器芯片处理器304解析数据库命令以用于运算符。此后,可以使用ALU 306以实现运算符。例如,数据库命令可以包括“BETWEEN”运算符。ALU 306可以用于确定闪存存储器中存储的数据是否满足“BETWEEN”命令。

如上所述,命令可以包括数据库查询。在SQL中,可以以说明性SELECT(选择)陈述执行数据库查询。SELECT从一个或多个表格或者表达中检索数据。标准SELECT陈述不具有关于数据库的永久效果。SELECT的某些非标准实现可以具有永久效果,例如某些数据库中存在的SELECT INTO语法。

查询可以包括列的列表,其要包括在紧跟在SELECT关键字之后的最终结果中。星号(“*”)也可以用于指定查询应该返回所查询的表的所有列。SELECT是SQL中的一个陈述,具有可选关键字和子句,包括:FROM子句,其指示要从其检索数据的一个或多个表;WHERE子句,其包括比较谓语,限制由查询返回的行;GROUP BY子句,用于将具有公共值的行投影到行的较小集合中;HAVING子句,其包括用于过滤从GROUP BY子句产生的行的谓语;和ORDER BY子句,其识别哪列用于分类所产生的数据,且应该在哪个方向上将它们分类(选项是升序或者降序)。

如上所述,SQL可以包括数据操作语言(DML)。DML可以用于添加、更新和删除数据。例如,INSERT(插入)添加行到现有的表,UPDATE(更新)修改一组现有的表行,DELETE(删除)从表除去现有的行,以及MERGE(合并)用于组合多个表的数据。另外,SQL可以包括管理表和索引结构的数据定义语言(DDL)。DDL的实例项包括以下陈述:CREATE(其创建数据库中的对象(例如,表)),ALTER(其以各种方式修改现有对象的结构,例如,添加一列到现有的表或者约束),RENAME,DROP(其删除数据库中的对象)和TRUNCATE(其以非常快的方式从表删除所有数据,从而删除表内的数据而非表本身)。

图像处理

闪存存储器芯片的一部分,例如闪存存储器芯片控制器300,可以关于闪存存储器中存储的数据执行一个或多个图像处理功能。例如,视频处理的图像处理是耗时的,这部分地由于大量数据要传送到闪存存储器芯片中和从闪存存储器芯片传出例如。代替地,闪存存储器芯片内的现场处理缓解该问题。

图像处理可以包括关于图像的任何形式的信号处理。可以预期不同类型的图像处理。一种类型包括关于输入图像(例如照片或者视频帧)执行一个或多个操作,以生成是图像、或者与图像有关的一组特性或者参数的输出。图像处理可以导致图像增强(例如,例如边界或者对比度的图像特征的强调或者锐化,以使得图形显示对显示和分析更有用);图像恢复(例如,滤波所观察的图像以最小化退化效果);或者图像压缩(例如,最小化表示图像需要的位的数目)。

如以下讨论的,闪存存储器芯片可以从SSD控制器芯片202接收命令以执行图像处理。该命令可以来源于主机系统100。响应于此,闪存存储器芯片(例如执行图像处理软件316的闪存存储器芯片处理器304)可以执行图像处理,并经由SSD控制器接口302将结果发送到SSD控制器芯片202。

文件系统功能

使用文件系统以控制怎样存储或者检索信息,例如从SDD 200存储或者检索。更具体地,用于管理信息和它们的名称的组的结构和逻辑规则可以被描述为“文件系统”。文件系统可以被视为包括每条数据在硬盘驱动器上的物理位置的索引或者数据库。文件系统的实例无限制地包括文件分配表(FAT)和新技术文件系统(NTFS)。

通常,文件系统位于主机系统上,且文件系统操作由主机系统执行。在一个实施例中,一个、某些或者全部文件系统操作可以由SSD执行,例如由闪存存储器芯片控制器300上的闪存存储器芯片处理器304执行。如以下更详细地讨论的,闪存存储器芯片处理器304可以从主机系统接收文件系统命令(经由SSD控制器芯片202中继),解析文件系统命令,并执行文件系统命令。

文件系统命令包括使能存储或者创建的文件的管理的实用程序。文件系统命令可以分段为不同级别,例如较低级的文件系统命令(例如,将扇区链接在一起以形成逻辑单元)和较高级的文件系统命令(例如,用户命令,例如创建目录、移动文件等)。较高级的文件系统命令可以由多个较低级的命令组成。例如,创建特定大小的文件的命令可以由多个较低级命令组成,例如发现空闲块,以及将它们链接在一起以形成容量,以使得在用户看来所述块是对用户连续的逻辑单元。

文件系统命令的实例包括但不限于:复制文件(例如,Unix中的cp);移动文件(例如,Unix中的mv);移除文件(例如,Unix中的rm);移除目录(例如,Unix中的rmdir);制作目录(例如,Unix中的mkdir);重命名文件(例如,Unix中的mv);等等。

在一个实施例中,闪存存储器芯片控制器300的一部分(例如闪存存储器芯片处理器304)配置为响应于所有文件系统命令执行操作。在替代实施例中,闪存存储器芯片控制器300的一部分(例如闪存存储器芯片处理器304)配置为响应于文件系统命令的子集(或者小于全部文件系统命令)执行操作。例如,闪存存储器芯片处理器304可以配置为仅执行较低级的文件系统命令。

如上所述,可以在闪存存储器芯片控制器300中找到一个或多个ALU。另外,一个或多个ALU可以位于存储器芯片控制器300内的不同部位。图3B-图3D示出存储器芯片控制器300内的ALU的配置的某些实例。在一个实施例中,单个ALU可以存在于闪存存储器芯片控制器300中。在替代实施例中,多个ALU可以存在于闪存存储器芯片控制器300中。

闪存存储器芯片控制器300中ALU的数目可以取决于闪存存储器阵列,例如如图2所示的闪存存储器阵列214或者220。在一个实施例中,ALU可以被分配给闪存存储器阵列中的一个、某些或者每一个块。在替代实施例中,ALU可以被分配给子块结构。例如,ALU可以被分配给闪存存储器阵列中的一个、某些或者每一位线。在另外的替代实施例,ALU可以被分配给闪存存储器阵列中的一个、某些或者每一平面。在这点上,ALU可以被分配给存储器单元阵列的不同细分部或者分区。

图3B是闪存存储器阵列中的块322的一个图示。闪存存储器阵列的实例包括上面讨论的闪存存储器阵列214和220。闪存存储器阵列可以由多个块组成。闪存存储器阵列中的每个块可以由页组成。图3B示出页0到页M。数据可以使用位线(例如如图3B所示的位线0到位线L)从块322读取。位线可以电连接到总线324,该总线324电连接到ALU 326。如上所述,ALU(例如ALU 326)可以包括数学和/或逻辑功能性。仅作为一个实例,ALU 326可以包括一个或多个寄存器,且可以包括以下功能性中的任何一个、任何组合或者全部:确定两个数据项(例如加载到第一寄存器中的第一数据和加载到第二寄存器中的第二数据)是否相等,或者是否一个数据项大于或者小于另一数据项;和执行加法或者减法;向左或者向右在寄存器中移位。如图3B所示,ALU 326与块322相关联。在这点上,各个ALU可以被分配给闪存存储器阵列中的各个块。在这点上,例如具有1000个块的闪存存储器阵列可以包括1000个ALU,其中每一ALU分配至各自的块。另外,在块的水平分配ALU容易地使能闪存存储器阵列内的处理的可缩放性。

图3C是闪存存储器阵列中的块322的另一图示。如上所述,ALU可以被分配给块中的一个、某些或者每一位线。如图3C所示,给块322中的每一位线(例如位线0到位线L)分配ALU 328。在这点上,存在分配给每个块的L+1个ALU 328。可以使用控制器以选择特定ALU用于处理。如图3C所示,使用用于选择ALU的控制器330。控制器330可以是闪存存储器芯片控制器300的一部分。如图3C所示的布置可以用于闪存存储器芯片的闪存存储器阵列中的单个块、闪存存储器芯片的闪存存储器阵列的多个块、或者闪存存储器芯片的闪存存储器阵列中的每一个块。在上文所述的闪存存储器阵列包括1000个块的实例中,ALU的数目可以包括1000*(L+1)。

图3D是适于作为闪存存储器区块之一的示例的一个闪存存储器区块。多区块闪存存储器中的一个区块可以包括一个或多个集成电路芯片,其中每一芯片可以包括组织成多个平面的存储器单元的阵列。在单个芯片上的存储器区块340的图示如图3D所示。为简单起见,图3D的存储器区块340示出了这种平面350和352,但是可以代替地使用更多个平面,例如四个或者八个。替代地,存储器区块的存储器单元阵列可以不被划分为平面。但是,当这样划分时,每一平面具有可彼此独立地操作的它自己的列控制电路354和356。电路354和356从系统总线342的地址部分346接收它们各自的存储器单元阵列的地址,并将其解码以寻址各个位线358和360中特定的一个或多个。响应于在地址总线上接收的地址,通过行控制电路364寻址字线362。源电压控制电路366和368也与各个平面连接,p阱电压控制电路370和372也与各个平面连接。如果区块340以具有存储器单元的单个阵列的存储器芯片的形式,且如果两个或更多这种芯片存在于存储器系统中,则每一芯片的阵列可以与如上所述的多平面芯片内的平面类似地操作。

数据通过与系统总线342的数据部分344连接的各自的数据输入/输出电路374和376传送到平面350和352之中和之外。电路374和376提供将数据编程为存储器单元,以及从它们各自的平面的存储器单元读取数据两者,电路374和376通过线378和380穿过各自的列控制电路354和356连接到平面。

每一区块中的每一存储器芯片包括执行来自处理器(例如闪存存储器芯片处理器304)的命令以执行这种功能的某些控制电路。接口电路381连接到系统总线342的控制和状态部分348。来自处理器(例如闪存存储器芯片处理器304)的命令被提供到状态机382,然后状态机382提供对其他电路的特定控制以执行这些命令。控制线383-387连接状态机382与如图3D所示的这些其他电路。来自状态机382的状态信息经线388通信到接口381以用于经总线部分348传输到处理器(例如闪存存储器芯片处理器304)。存储器单元阵列350和352可以由NAND架构组成,可以代替地单独或者组合地使用其他非易失性存储器架构或者技术,例如NOR。

如图3D所示,ALU可以被分配给存储器单元阵列中的每一平面,例如ALU1(389)分配给平面350且ALU2(390)分配给平面352。每一ALU可以电连接到各自的输入/输出电路,例如输入/输出电路374和376。在这点上,一ALU可以被分配给存储器单元阵列中的相应的平面,且可以与相应的输入/输出电路通信以控制相应的ALU。

图3E示出SSD控制器芯片(示出为SSD控制器芯片392)的一个实例的框图。如上所述,SSD可以包括一个或多个控制器芯片,以便与在一侧上的主机系统通信,并与驻留在另一侧上的SSD中的闪存存储器芯片通信。SSD控制器芯片392包括上面参考图2讨论的主机系统接口204。SSD控制器芯片392进一步包括SSD控制器芯片处理器393、SSD控制器存储器394和闪存存储器芯片接口396。SSD控制器存储器394可以包括用于由SSD控制器芯片处理器393执行的一个或多个软件程序或者代码。

如上所述,在一个实施例中,SSD控制器芯片392配置为辅助例如如图3A所示的闪存存储器芯片控制器,以执行数学和/或逻辑计算。在这点上,SSD控制器存储器394包括用于命令分析和闪存芯片选择的软件395。当SSD控制器芯片处理器393执行用于命令分析和闪存芯片选择的软件395时,SSD控制器芯片392可以进一步配置为分析从主机系统接收到的命令,并将该命令发送到一个或多个闪存存储器芯片。如以下更详细地讨论的,SSD控制器芯片处理器393可以解析该命令,确定命令内的一个或多个LBA范围,确定哪个闪存存储器芯片存储该命令中的LBA范围内的数据,并转发该命令到闪存存储器芯片。

如上所述,SSD内的多个装置可以包括数学计算功能性和/或逻辑功能性。图4A-B分别示出了数学计算功能性和/或逻辑功能性在闪存存储器芯片控制器400中以及在SSD控制器芯片中的实例。例如,闪存存储器芯片控制器400可以包括上文参考图3A所讨论的ALU 306、计数器308和FPU 310。同样地,闪存存储器芯片控制器可以包括存储器312。存储器312可以包括与数据库操作、图像处理和文件系统操作有关的软件。作为另一实例,SSD控制器芯片450可以包括驻留在SSD控制器芯片处理器452中的ALU 454、计数器456和FPU 458。ALU 454、计数器456和FPU 458可以分别类似于上面讨论的ALU 304、计数器308和FPU 310。

在一个实现中,可以执行多个功能。例如,数据库功能可以包括一组数据库功能,图像处理功能可以包括一组图像处理功能,且文件系统功能可以包括一组文件系统功能。功能组可以被划分以使得第一组功能可以由SSD控制器芯片450执行,而第二组功能可以由闪存存储器芯片控制器400执行。

在一个实施例中,高级功能(或较复杂的功能)可以由SSD控制器芯片执行,而低级功能(或者较不复杂的功能)可以由闪存存储器芯片控制器400执行。例如,闪存存储器芯片处理器304可以访问低级数据库功能软件402、低级图像处理软件404或者低级文件系统软件406,以分别执行用于数据库功能、图像处理或者文件系统功能的低级功能。作为另一实例,SSD控制器芯片处理器452可以访问SSD控制器存储器460中的高级数据库功能软件462、高级图像处理软件464,或者高级文件系统软件466,以分别执行用于数据库操作、图像处理或者文件系统操作的高级功能。如上所述,为了执行功能组(例如数据库功能组、图像处理功能组和文件系统功能组)中的一个、某些或者全部功能,SSD的一部分(例如闪存存储器芯片处理器304或者SSD控制器芯片处理器452)可以使用数学和/或逻辑操作,例如通过使用ALU、计数器和/或FPU。

在操作中,SSD控制器芯片450和闪存存储器芯片控制器400可以以主-从布置操作,在该主-从布置中,SSD控制器芯片450命令闪存存储器芯片控制器400执行一个或多个动作,例如执行如上所述的低级数据库功能、低级图像处理功能或者低级文件系统功能。在一个实例中,SSD控制器芯片450可以接收来自主机装置的通信(例如从主机系统100接收命令)。响应于接收通信(例如接收命令),SSD控制器芯片450可以响应于命令确定一个或多个功能,例如低级功能或者高级功能。SSD控制器芯片450可以确定要由SSD控制器芯片450执行哪个功能和要由闪存存储器芯片控制器400执行哪个功能。作为一个实例,命令可以包括数据库命令。SSD控制器芯片450(例如SSD控制器芯片处理器452)可以分析数据库命令并确定:(i)要响应于接收数据库命令而执行一个或多个高级数据库功能;(ii)要响应于接收数据库命令而执行一个或多个低级数据库功能;或者(iii)要响应于接收数据库命令而执行一个或多个高级数据库功能和一个或多个低级数据库功能。在(i)中,SSD控制器芯片处理器452可以执行全部高级数据库功能。例如,SSD控制器芯片处理器452可以对于特定的高级数据库功能确定为了执行特定的高级数据库功能需要的数学和/或逻辑操作。在(ii)中,SSD控制器芯片处理器452响应于确定执行低级功能,确定哪个闪存存储器芯片需要执行低级功能,且然后发送命令到所确定的闪存存储器芯片,以指令它们执行低级数据库功能。在(iii)中,SSD控制器芯片处理器452可以执行全部高级数据库功能,且SSD控制器芯片处理器452可以指令闪存存储器芯片控制器400执行全部低级数据库功能。

在特定实例中,高级数据库功能可以包括一个或多个低级数据库功能。在这点上,SSD控制器芯片处理器452可以指令闪存存储器芯片控制器400执行一个或多个低级数据库功能,并将执行一个或多个低级数据库功能的结果返回到SSD控制器芯片处理器452。

分级类型(hierarchy-type)的功能划分的一个实例是基于由SSD控制器芯片处理器452执行的高级功能而由闪存存储器芯片控制器400执行低级功能的功能划分。可以预期在SSD控制器芯片处理器452和闪存存储器芯片控制器400之间的其他分级类型的功能划分。

以下是用于数据库、图像处理和文件系统的高级和低级功能的某些实例。实例仅用于说明目的。其他实例可预期。关于数据库功能,低级功能的实例是用于特定条目的搜索命令,高级功能的实例是序联两个序列。实际上,SSD控制器芯片处理器452可以指令一个、某些或者全部闪存存储器芯片(例如存储器芯片0(120)到存储器芯片N(126))上的闪存存储器芯片控制器400来搜索特定的条目。因为可以在闪存存储器芯片级并行地执行命令,所以可以更快地执行搜索特定条目的低级功能。

关于图像处理,低级功能的实例是改变像素值,高级功能的实例是增加图像的对比度。实际上,因为执行增加对比度的高级功能包括改变像素值的低级功能,所以SSD控制器芯片处理器452可以确定为了增加对比度而改变哪个像素,且此后指令闪存存储器芯片控制器400。实际上,SSD控制器芯片处理器452可以指令存储要改变的像素值的一个、某些或者全部闪存存储器芯片上的闪存存储器芯片控制器400来执行改变像素值的功能。

关于文件系统功能,低级功能的实例包括搜索指针,从而找到文件的开始/结束以及移除文件的内容。高级功能的实例包括删除文件和打开文件。实际上,删除文件(高级功能)包括一个或多个低级功能。在这点上,响应于SSD控制器芯片处理器452接收删除文件的命令,SSD控制器芯片452可以确定该文件存储在哪个或哪些闪存存储器芯片中,并发送低级命令到存储文件的一个或多个闪存存储器芯片。因此,闪存存储器芯片执行低级命令以删除该文件。

图5的框图示出SSD控制器芯片的另一实例,其示出为SSD控制器芯片500。如上所述,一个或多个闪存存储器芯片可以包括数学计算功能性和/或逻辑功能性。在替代实施例中,SSD控制器可以包括数学计算功能性和/或逻辑功能性。在这点上,归属于关于图3A的闪存存储器芯片的全部数学计算功能性和/或逻辑功能性在本实施例中归属于SSD控制器。SSD控制器可以包括例如如图5所示的SSD控制器芯片500。SSD控制器芯片500包括上面参考图2讨论的主机系统接口204。另外,SSD控制器芯片500包括SSD控制器芯片处理器502,该SSD控制器芯片处理器502包括ALU 504、计数器506和FPU 508。ALU 504、计数器506和FPU 508除了驻留在SSD控制器芯片500内之外,类似于驻留在闪存存储器芯片控制器300中的ALU 306、计数器308和FPU 310。另外,SSD控制器芯片500包括SSD控制器存储器510。SSD控制器存储器510包括数据库操作软件512、图像处理软件514和文件系统软件516,其使得SSD控制器能够执行例如上面讨论的数据库操作、图像处理和文件系统操作。

在操作中,SSD控制器芯片500可以从主机系统接收通信,其中所述通信包括命令和一个或多个LBA范围。响应于此,SSD控制器芯片500可以响应于所述命令确定一个或多个功能。所述功能可以包括关于在一个或多个LBA范围存储的数据执行数学或者逻辑操作。基于所述一个或多个LBA范围,SSD控制器芯片500可以确定数据的物理地址,使用物理地址从闪存存储器芯片发送用于数据的请求,以及执行关于从闪存存储器芯片返回的数据的一个或多个操作。

图6示出由闪存存储器芯片的一部分(例如闪存存储器芯片控制器300)执行的动作的流程图600。在602处,从SSD控制器接收到通信。在604处,通信被解析以用于命令。如上所述,闪存存储器芯片控制器300可以接收不同类型的命令。命令可以涉及不同功能,无限制地包括数据库管理功能、图像处理功能和/或文件系统功能。在606处,基于所解析的命令确定一个或多个操作。例如,闪存存储器芯片控制器300可以解析通信以用于命令,以便标识命令。闪存存储器芯片控制器300然后可以将所标识的命令与一个或多个操作(例如一个或多个数学或者逻辑操作)关联。更具体地,闪存存储器芯片控制器300可以解析通信并和标识命令是体系搜索命令。通过使用将命令与操作关联的查询表,闪存存储器芯片控制器300可以使用所标识的体系搜索命令来确定闪存存储器芯片控制器300要执行哪一个或多个操作。该一个或多个操作可以包括使用ALU 306、计数器308或者FPU 310的一个或多个数学操作。

在608处,执行一个或多个标识的操作以生成一个或多个结果。如上所述,操作可以包括使用ALU(或者其他数学或者逻辑装置)。在一个方面中,ALU可以使用一个或多个操作数寄存器以执行数学或者逻辑操作。闪存存储器芯片控制器300可以指定存储器的一部分作为一个或多个操作数寄存器,并将数据加载到所述一个或多个操作数寄存器中。例如,闪存存储器芯片控制器300可以将一个或多个页加载到DDC中,并关于部分或者全部加载页执行数学和/或逻辑功能性。ALU的使用可以生成一个或多个结果,其可以存储在闪存存储器的一部分中。

在610处,该一个或多个结果(或者一个或多个结果的指示)可以可选地被发送到SSD控制器,该SSD控制器又可以将结果(或者结果的指示)发送到主机系统。例如,命令可以包括图像处理命令。ALU可以执行生成可以存储在闪存存储器中的结果的图像处理。可选地,从图像处理生成的结果可以被发送到SSD控制器。在从主机系统发送并由SSD控制器转发图像处理命令的实例中,闪存存储器芯片可以将执行图像处理的结果经由SSD控制器发送到主机系统。在文件系统命令的实例中,闪存存储器芯片可以执行文件系统命令,并发送结果的指示(例如成功地执行了文件系统命令的指示)

图7示出由闪存存储器芯片的一部分(例如SSD控制器芯片392)执行的动作的流程图700。在702处,从主机系统接收到通信。在704处,解析该通信以确定通信是否用于到一个或多个闪存存储器芯片的传输。例如,来自主机系统的某些通信可以指示用于SSD控制器执行的功能。作为另一实例,来自主机系统的其他通信可以指示用于闪存存储器芯片执行的功能(例如图像处理、数据库管理操作或者文件系统操作)。在后一情况下,SSD控制器可以将部分或者全部通信转发到闪存存储器芯片。在706处,确定要发送通信到哪个闪存存储器芯片。如上所述,通信可以包括一个或多个LBA范围。SSD控制器可以配置为将一个或多个LBA范围翻译为物理地址。转而,将物理地址与闪存存储器芯片关联的查询表可以基于物理地址指示要将通信发送至哪个闪存存储器芯片。在708处,该通信的部分或者全部被发送到闪存存储器芯片。

例如参考图1-5讨论的半导体存储器装置可以包括易失性存储器装置,例如动态随机存取存储器(“DRAM”)或者静态随机存取存储器(“SRAM”)装置,非易失性存储器装置,例如电阻性随机存取存储器(“ReRAM”)、电可擦可编程只读存储器(“EEPROM”)、闪存存储器(也可以考虑为EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”),及能够存储信息的其他半导体元件。此外,每一类型的存储器装置可以具有不同配置。例如,闪存存储器装置可以配置为NAND或者NOR配置。

存储器装置可以以任何组合由无源和/或有源元件形成。通过非限制实例的方式,无源半导体存储器元件包括ReRAM装置元件,其在一些实施例中包括电阻率开关存储元件,例如反熔丝、相变材料、等等,且可选地是控制元件,例如二极管等。另外通过非限制实例的方式,有源半导体存储器元件包括EEPROM和闪存存储器装置元件,其在一些实施例中包括包含电荷存储区域的元件,例如浮置栅极、导电纳米微粒或者电荷存储介电材料。

多个存储器元件可以配置为使得它们串联连接或者使得每个元件可单独地访问。通过非限制实例的方式,NAND装置包括串联连接的存储器元件(例如,包括电荷存储区域的装置)。例如,NAND存储器阵列可以配置为使得阵列由多个存储器串组成,其中每一存储器串由共享单个位线和作为整体存取的多个存储器元件组成。相反地,存储器元件可以配置为使得每个元件可单独地存取(例如,NOR存储器阵列)。本领域技术人员将意识到NAND和NOR存储器配置是示例性的,且可以以别的方式配置存储器元件。

单个装置的半导体存储器元件,例如位于同一衬底内和/或同一衬底上或者单个印模中的元件可以以二维或者三维分布,例如二维阵列结构或者三维阵列结构。

在二维存储器结构中,在单个平面或者单个存储器装置级中布置半导体存储器元件。通常,在二维存储器结构中,存储器元件位于实质上平行于支撑存储器元件的基底的主要表面延伸的平面中(例如,在x-z方向平面中)。该基底可以是其上沉积存储器元件的层和/或其中形成存储器元件的层的晶片,或者其可以是在形成存储器元件之后附于存储器元件的载体基底。

存储器元件可以以有序阵列(例如以多个行和/或列)在单一存储器装置级中布置例如。但是,如本领域技术人员理解的,存储器元件可以以非规则或者非正交配置布置。存储器元件每个可以具有两个或更多电极或者接触线,例如位线和字线。

组织三维存储器阵列以使得存储器元件占据多个平面或者多个器件级,由此形成三维空间(即,以x、y和z方向,其中y方向实质上垂直于基底的主表面,且x和z方向实质上平行于基底的主表面)中的结构。

作为非限制实例,三维存储器阵列结构中的每一平面可以物理上位于二维空间(一个存储器级)中,其中多个二维存储器级形成三维存储器阵列结构。作为另一非限制实例,三维存储器阵列可以物理地构造为多个垂直列(例如,沿y方向基本上垂直于基底的主表面延伸的列),该多个垂直列在每一列中具有多个元件且因此具有跨过几个垂直地堆叠的存储器平面的元件。所述列可以以二维配置布置,例如,在x-z平面中,由此产生存储器元件的三维布置。本领域技术人员将理解,三维的存储器元件的其他配置也构成三维存储器阵列。

通过非限制实例的方式,在三维NAND存储器阵列中,存储器元件可以连接在一起以形成在单个水平(例如,x-z)平面内的NAND串。替代地,存储器元件可以连接在一起以延伸通过多个水平面。可以设想其他三维配置,其中,某些NAND串包括单个存储器级中的存储器元件,而其他串包括延伸通过多个存储器级的存储器元件。三维存储器阵列也可以以NOR配置和以ReRAM配置设计。

单片三维存储器阵列是这样的三维存储器阵列:其中在单个基底(例如半导体晶片)之上和/或之内形成多个存储器级。在单片三维阵列中,阵列的每一级的层在阵列的每一在下面的级的层上形成。本领域技术人员将理解,单片三维存储器阵列的相邻级的层可以被共享或者具有在存储器级之间的介于其间的层。相反地,二维阵列可以分开地形成,且然后封装在一起以形成非单片存储器装置。例如,通过在分开的基底上形成存储器级且然后在彼此之上粘合存储器,即而构造非单片堆叠存储器。该基底在接合之前可以变薄或者移除存储器级,但是由于存储器级最初地形成在在分开的基底之上,所以这种存储器不是单片三维存储器阵列。另外,多个二维存储器阵列或者三维存储器阵列(单片或者非单片)可以分开地形成,且然后封装在一起以形成堆叠芯片的存储器装置。

本领域技术人员将认识到本发明不限于所描述的二维和三维示例性结构,而是覆盖如在这里所描述的、和本领域技术人员所理解的本发明的精神和保护范围内的所有相关的存储器结构。

另外,本公开描述各种功能,其可以以硬件、以软件或者以硬件和软件的组合实现。在一个实施例中,可以使用一个或多个指令集(例如嵌入的软件)实现功能。另外,指令可以执行如在这里描述的一个或多个方法或逻辑,例如图6-图7所示的。指令可以位于系统的各种部分中。例如,指令可以位于SSD控制器芯片(参见图3A、图3E、图5)中和/或闪存存储器芯片(例如闪存存储器芯片控制器,参见图4A-图4B)中。

该指令可以具体表现为计算机可读介质。计算机可读介质可以是单个介质,或者计算机可读介质可以是单个介质或者多个介质,例如集中式或者分布式数据库,和/或存储一个或多个指令集的相关联的高速缓存和服务器。术语“计算机可读介质”也可以包括能够存储、编码或者携带指令集的任何介质,该指令集用于由处理器执行或者可以使得计算机系统执行在这里公开的任何一个或多个方法或操作。

计算机可读介质可以包括例如存储卡的固态存储器、或者装有一个或多个非易失性只读存储器的其他封装。计算机可读介质也可以是随机存取存储器、或者其他易失性可重写存储器。另外,计算机可读介质可以包括磁光或者光介质,例如盘或者带或者其他存储装置以捕获载波信号,例如经传输介质传递的信号。附于电子邮件或者其他自包含信息档案或者档案集的数字文件可以考虑为可以是有形存储介质的分布式介质。计算机可读介质优选地是有形存储介质。因此,本公开可以考虑为包括其中可以存储数据或者指令的任何一个或多个计算机可读介质或者分布式介质及其他等效和后继介质。

替代地或者另外地,可以构造专用硬件实现(例如专用集成电路、可编程逻辑阵列及其他硬件装置)来实现本文所描述的一个或多个方法。可以包括各种实施例的设备和系统的应用可以广泛地包括各种电子和计算机系统。在这里描述的一个或多个实施例可以使用具有可以在模块之间和通过模块传递的相关控制和数据信号的两个或更多特定的互连硬件模块或装置,或者作为专用集成电路的部分实现功能。因此,本系统可以包含软件、固件和硬件实现。

在这里描述的说明意在提供对于各种实施例的结构的总的理解。说明不意在用作为对使用在这里描述的结构或者方法的设备、处理器和系统的全部元件和特征的完整描述。许多其他实施例对本领域技术人员在浏览本公开时是显而易见的。其他实施例可以使用并从本公开导出,从而可以做出结构和逻辑的替换和改变而不脱离本公开的范围。另外,说明仅是代表性的且可以不必按比例描绘。说明内的某些比例可以被放大,而其他比例可以最小化。因此,本公开和附图被认为是说明性的而不是限制性的。

以上公开的主题要考虑为说明性的,而不是限制性的,且所附权利要求意在覆盖落入说明书的真正精神和范围内的所有这种修改、增强及其他实施例。因此,达到法律允许的最大程度,范围要由以下权利要求及其等效的最宽的可允许解释来确定,而不应该由前述详细说明限制或者约束。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1