具有用以加速大数据应用的计算引擎的非易失性存储系统的制作方法

文档序号:16852524发布日期:2019-02-12 22:51阅读:188来源:国知局
具有用以加速大数据应用的计算引擎的非易失性存储系统的制作方法

非易失性半导体存储器用于固态驱动器(ssd)中。随着互联网规模的服务不断增长,通过对大量数据进行即席查询的实时数据处理和数据分析正在成为关键应用。另外,随着存储器密度不断扩大,ssd容量继续呈指数增长。当前的企业系统配备较差以致于无法管理这些趋势,因为它们依赖于将大量数据移入系统的主存储器以进行处理。这些解决方案依赖于将数据存储在一个位置(即,如同ssd的存储设备)处,并且将数据移动到不同的位置(通常是dram)以进行计算。虽然该方法适用于数据量有限的一些应用,但由于传输数据所浪费的时间以及在此类系统中包含大规模(例如,拍字节)dram容量的过高成本和功耗,具有大规模数据的应用无法使用该方法。

附图说明

相同编号的元件是指不同图中的共同部件。

图1是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图2是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图3是具有计算引擎的前端处理器电路的一个实施方案的框图。前端处理器电路是控制器的一部分。

图4是后端处理器电路的一个实施方案的框图。在一些实施方案中,后端处理器电路是控制器的一部分。

图5是存储器封装的一个实施方案的框图。

图6是存储器管芯的一个实施方案的框图。

图7是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图8是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图9是没有计算引擎的前端处理器电路的一个实施方案的框图。在一些实施方案中,前端处理器电路是控制器的一部分。

图10是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图11是具有计算引擎的后端处理器电路的一个实施方案的框图。在一些实施方案中,后端处理器电路是控制器的一部分。

图12是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图13是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图13a是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图14是具有计算引擎的存储器封装的一个实施方案的框图。

图15是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图16是具有计算引擎的存储器管芯的一个实施方案的框图。

图17是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器,用于存储数据的非易失性存储器以及数据位置附近的可用于执行公用数据操纵操作的计算引擎。

图18是具有存储器阵列下的电路的存储器管芯的一个实施方案的框图。

图19是具有存储器阵列下的电路的存储器管芯的一个实施方案的框图。

具体实施方式

提出了固态驱动器(“ssd”)或其他存储器系统,其可使用基于硬件加速器的方法来加速大数据应用的性能,该方法涉及将计算部件集成在数据位置附近,该计算部件可用于执行公用数据操纵操作,诸如扫描、过滤、聚合和连接(以及其他操作)。应用编程接口(“api”)可由存储器系统暴露(例如,由控制器暴露)并且由主机应用程序使用以执行有效的数据处理。该提议采用基于加速器的方法。提出的基于加速器的方法不是将要处理的数据打包为容器并运送到通用cpu核心,而是在数据位置附近执行计算。

例如,核心/硬件加速器是例如即时编译器的直接目标。未编译的代码可通过api从主机传输到存储器系统。在存储器系统处,即时编译器(在控制器上实现)在程序执行期间(在运行时)而不是在执行之前执行编译。通常,这包括将未编译的代码转换为机器代码,该机器代码然后由本地计算机引擎直接执行。

提出了存储器系统(例如,ssd),其包括一个或多个非易失性存储器管芯,与一个或多个非易失性存储器管芯通信的控制器,以及在系统内的计算引擎,该计算引擎可对存储器管芯中存储的数据进行搜索、排序和执行其他操作。在一个实施方案中,计算引擎是包括没有任何软件的专用硬件(例如,电子电路)的硬件加速器,或者可以是fpga。在一个实施方案中,计算引擎在一个或多个非易失性存储器管芯中的每个中实现。在一些实施方案中,计算引擎可包括硬件和软件的组合。

服务器群包含数百或数千台服务器以支持互联网应用程序。在一个实施方案中,服务器各自包括使用本文所述技术的一个或多个ssd。尽管下面讨论的实施方案是ssd,但是本文所述的技术适用于不同类型的非易失性存储设备。

随着计算操作移动得更靠近数据,可用的计算到数据带宽显著增加。例如,与计算位于i/o接口的主机侧上(以及ssd外部)的常规系统相比,在ssd内对计算操作进行集成可提供1.5倍-3.75倍的更高带宽,即使nand体系结构和i/o接口继续扩展。类似地,假设采用先进的封装技术,通过在存储器封装中或存储器管芯中移动计算,与该位更紧密地集成可提供未来几代nand存储器中的计算引擎可用的额外2.5倍-13倍的带宽增加。

计算引擎是硬件电路,该硬件电路可以是以下各项中的一者或多者:

1.用于数据访问和操纵操作(诸如过滤、聚合、压缩/解压缩、排序、分组以及连接表格或其他形式的数据)的硬件加速器;

2.通用cpu核心,诸如arm/arc/intelatom;以及/或者

3.可重配置的硬件电路,诸如fpga。

与ssd中的主要便于从ssd读取数据/向ssd写入数据的其他部件不同,计算引擎操纵数据的内容。例如,它可以搜索寻找特定密钥(一组字节)的数据流,或者可以按照主机指定的某种顺序对数据进行排序。计算引擎的概念包括但不限于ssd中有时可用的压缩/解压缩引擎。

在下面考虑的设计中,存储器封装是指包含一个或多个存储器管芯(例如,nand快闪存储器管芯、reram管芯、nand和reram、或其他非易失性技术)的结构。术语存储器封装还可以指管理存储器,即包含一个或多个存储器管芯的存储器封装,该存储器管芯具有嵌入式纠错码(“ecc”)引擎/控制器,以校正在对存储器的读取操作期间检测到的错误。

图1是ssd10的一个实施方案的框图,该ssd包括控制器(ssd控制器)12,用于存储数据的非易失性存储器封装14,dram/reram16,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎22。图1呈现了高级设计,其中计算引擎22集成在ssd控制器12内。计算引擎22可以是例如作为ssd控制器片上系统(“soc”)的一部分的asic,或者可被(更深地)集成为ssd控制器内的硬件电路。图1示出ssd控制器12,soc,包括现有ssd控制器部件,该ssd控制器部件包括ftl引擎32、ecc引擎34和用于控制dram/reram16的ddr存储器控制器36。包括在ssd控制器12内的是新提出的计算引擎22,该计算引擎可用于对存储在存储器封装的非易失性存储器中的数据执行计算操作。计算操作的示例包括扫描数据,搜索,过滤,排序,聚合数据,将数据连接在一起,以及数据上的其他功能。图1示出与dram/reram16通信并且与一组一个或多个存储器封装14通信的ssd控制器12。在一个实施方案中,ssd控制器12使用切换模式接口与存储器封装(和/或存储器管芯)通信,该切换模式接口是能够以32gb/s通信的异步接口。可供选择的实施方案可使用onfi接口(开放nand快闪接口),该接口是同步的并且利用时钟。

存储器封装包括一个或多个存储器管芯。在一个实施方案中,每个存储器管芯将包括其本身的芯片使能,该芯片使能可由ssd控制器12控制。在其他实施方案中,多个存储器管芯可共享芯片使能,这要求ssd控制器12使用寻址来在共享芯片使能的存储器管芯之间进行选择。在一个实施方案中,存储器封装14中的存储器管芯使用nand快闪存储器。在其他实施方案中,存储器封装可包括交叉点reram非易失性存储器,其在下文中有所讨论。

图2是固态驱动器100的一个实施方案的框图,该固态驱动器包括控制器102,用于存储数据的非易失性存储器104,dram/reram106以及数据位置附近的可用于执行公用数据操纵操作的计算引擎114。图2的实施方案包括ssd控制器102,该ssd控制器包括前端处理器电路(fep)110以及一个或多个后端处理器电路(bep)112。在一个实施方案中,fep电路110在asic上实现。在一个实施方案中,每个bep电路112在单独asic上实现。用于bep电路112和fep电路110中的每个的asic在相同半导体上实现,使得ssd控制器102被制造为soc。fep110和bep112均包括其本身的处理器。在一个实施方案中,fep110和bep112用作主从配置,其中fep110是主设备,并且每个bep112是从设备。例如,fep电路110实现快闪转换层,包括执行存储器管理(例如,垃圾收集、损耗均衡等)、逻辑到物理地址转换、与主机的通信、dram(本地易失性存储器)的管理以及ssd(或其他非易失性存储系统)的整体操作的管理。bep电路112根据fep电路110的请求来管理存储器封装/管芯中的存储器操作。例如,bep电路112可进行读取、擦除和编程过程。另外,bep电路112可执行缓冲器管理,设置fep电路110所需的特定电压电平,执行纠错(ecc),控制到存储器封装的切换模式接口等。在一个实施方案中,每个bep电路112负责其本身的一组存储器封装。图2示出以4gb/s的带宽与bep电路112中的每个通信的fep电路110。在图2的实施方式中,计算引擎114被设计为fep110内的硬件电路。计算引擎可使用ddr接口访问高速、高带宽存储器以访问dram106。在该实施方式中,计算引擎可用的带宽受到将fep110连接到bep112的带宽的限制。

图3是fep电路的一个实施方案的框图,其中计算引擎114被设计到电路中。图3的fep电路是图2的fep电路110的一个示例性实施方式。图3示出与主机通信的pcie接口150,以及与pcie接口通信的主机处理器152。主机处理器152可以是本领域中已知的适用于实现的任何类型的处理器。主机处理器152与片上网络(noc)154通信。noc是集成电路上的通信子系统,通常在soc中的核心之间。noc可跨越同步和异步时钟域,或者使用非时钟的异步逻辑。noc技术将网络理论和方法应用于片上通信,并且与常规总线和交叉开关互连相比带来了显著的改善。与其他设计相比,noc提高了soc的可扩展性以及复杂soc的功效。noc的导线和链路由许多信号共享。由于noc中的所有链路可在不同的数据包上同时运行,因此实现了高水平的并行性。因此,随着集成子系统的复杂性不断增长,与先前的通信体系结构(例如,专用的点对点信号线、共享总线或具有桥的分段总线)相比,noc提供增强的性能(诸如吞吐量)和可扩展性。连接到noc154并且与noc154通信的是存储器处理器156、计算引擎114、sram160和dram控制器162。dram控制器162用于操作dram(例如,dram106)并且与该dram通信。sram160是由计算引擎114或存储器处理器156使用的本地ram存储器。存储器处理器156用于运行fep电路并且执行各种存储器操作。与noc通信的还有两个pcie接口164和166。在图3的实施方案中,ssd控制器将包括两个bep电路;因此,存在两个pcie接口164/166。每个pcie接口与bep电路中的一个通信。在其他实施方案中,可存在多于或少于两个bep电路;因此,可存在不止两个pcie接口。在这些布置中,计算引擎114(从主机的角度来看)定位在到主机的接口150后面(例如,在到主机的接口的存储器系统侧上),并且在由控制器暴露(例如,由fep电路暴露)的api后面。

图4是bep电路的一个实施方案的框图。图4的bep电路是图2的bep电路112的一个示例性实施方式。图4示出用于与fep电路通信(例如,与图3的pcie接口164和166中的一个通信)的pcie接口200。pcie接口200与两个noc202和204通信。在一个实施方案中,两个noc可被组合成一个大的noc。每个noc(202/204)通过xor引擎(224/254)和ecc引擎(226/256)连接到sram(230/260)、缓冲器(232/262)、处理器(220/250)和数据路径控制器(222/252)。ecc引擎226/256用于执行纠错,如本领域所知。xor引擎224/254用于对数据进行异或,使得可在存在编程错误的情况下以可恢复的方式组合和存储数据。数据路径控制器连接到接口模块,以用于通过四个信道与存储器封装进行通信。因此,顶部noc202与用于与存储器封装通信的四个信道的接口228相关联,并且底部noc204与用于与存储器封装通信的四个附加信道的接口258相关联。每个接口228/258包括四个切换模式接口(tm接口)、四个缓冲器个四个调度器。对于信道中的每个存在一个调度器、缓冲器和tm接口。处理器可以是本领域中已知的任何标准处理器。数据路径控制器222/252可以是处理器、fpga、微处理器、或其他类型的控制器。xor引擎224/254和ecc引擎226/256是专用的硬件电路,称为硬件加速器。在其他实施方案中,xor引擎224/254和ecc引擎226/256可在软件中实现。调度器、缓冲器和tm接口是硬件电路。

图5是存储器封装的一个实施方案的框图。例如,图5的存储器封装是包括在图1的存储器封装14或图2的存储器封装104中的存储器封装的示例性实施方式。图5示出连接到存储器总线(数据线和芯片使能线)294的多个存储器管芯292。存储器总线294连接到切换模式接口296以用于与bep电路的tm接口进行通信(参见例如图4)。在一些实施方案中,存储器封装可包括连接到存储器总线和tm接口的小控制器。存储器封装可具有一个或多个存储器管芯。在一个实施方案中,每个存储器封装包括8或16个存储器管芯;然而,也可以实现其他数量的存储器管芯。本文描述的技术不限于任何特定数量的存储器管芯。

图6是存储器管芯300的一个实施方案的功能框图。应当注意,存储器是图5的存储器管芯292的一个示例性实施方式。图6中描绘的部件为电子电路。存储器管芯300包括存储器单元的三维存储器结构326(诸如存储器单元的3d阵列)、控制电路310和读取/写入电路328。在其他实施方案中,可使用存储器单元的二维阵列。存储器结构326通过行解码器324由字线来寻址,并且通过列解码器332由位线来寻址。读取/写入电路328包括多个感测块350并且允许存储器单元页面被并行读取或并行编程,该感测块包括sb1、sb2、……、sbp(感测电路)。命令和数据通过线路318在存储器管芯300之间来回传输。在一个实施方案中,存储器管芯300包括连接到线路318的一组输入和/或输出(i/o)引脚。

存储器结构326可包括一个或多个存储器单元阵列,该存储器单元阵列包括3d阵列。存储器结构可包括单片三维存储器结构,其中多个存储器级形成在诸如晶片的单个基板上方(不在其中),没有居间衬底。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅基板上方有源区域的存储器单元阵列的一个或多个物理层中单片地形成。存储器结构可在非易失性存储器设备中,该非易失性存储器设备具有与存储器单元的操作相关联的电路,无论相关联的电路在基板上方还是在基板内。

控制电路310与读取/写入电路328配合以在存储器结构326上执行存储器操作(例如,擦除、编程、读取等),并且包括状态机312、片上地址解码器314、功率控制模块316和温度检测电路318。状态机312提供存储器操作的管芯级控制。温度检测电路318(其在存储器管芯300上)被配置为检测存储器结构326处的温度,并且可以是本领域已知的任何合适的温度检测电路。在一个实施方案中,状态机312可由软件编程。在其他实施方案中,状态机312不使用软件并且完全以硬件(例如,电子电路)实现。在一个实施方案中,控制电路310包括寄存器、rom熔丝和用于存储默认值(诸如基准电压和其他参数)的其他存储设备。

片上地址解码器314将主机或控制器使用的地址之间的地址接口提供给解码器324和332使用的硬件地址。功率控制模块316控制在存储器操作期间提供给字线和位线的功率和电压。其可包括用于3d配置中的字线层(下文所讨论)的驱动器、选择晶体管(例如,下文所述的sgs和sgd晶体管)和源极线。功率控制模块316可包括用于产生电压的充电泵。感测块包括位线驱动器。

可配置存储器结构326中的多个存储器元件,使得它们串联连接或使得每个元件是可单独访问的。作为非限制性示例,nand配置(nand快闪存储器)中的快闪存储器设备通常包含串联连接的存储器元件。nand字符串是一组串联连接的存储器单元和选择栅晶体管的示例,其可用于将存储器结构326实现为三维存储器结构。

可配置nand快闪存储器阵列,使得阵列由多个的nand字符串构成,该nand字符串由多个共享单一位线并作为组访问的存储器单元构成。另选地,可配置存储器元件,使得每个元件可被单独访问,例如nor存储器阵列。nand和nor存储器配置是示例性的,并且可以其他方式配置存储器单元。

存储器单元可以有序阵列布置在单个存储器设备中,诸如以多个行和/或列布置。然而,存储器元件可以非规则配置或非正交配置排列,或者以不视作阵列的结构排列。

布置三维存储器阵列,使得存储器单元占据多个平面或多个存储器设备级,从而形成三维结构(即x,y和z方向,其中z方向基本上垂直,并且x方向和y方向基本上平行于基板的主表面)。

作为非限制性示例,三维存储器结构可被垂直地布置为多个二维存储器级的叠堆。作为另一个非限制性示例,三维存储器阵列可被布置为多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即沿y方向),每列具有多个存储器单元。垂直列可以二维配置布置,例如,在x-y平面中由存储器单元的三维布置产生的配置,其中存储器单元位于多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可构成三维存储器阵列。

作为非限制性示例,在三维nand存储器阵列中,存储器元件可耦接在一起以形成横穿多个水平存储器设备级的具有电荷捕集材料的垂直nand字符串。可用于实现存储器结构126的三维nand存储器阵列的一个示例可见于美国专利9,343,156,该专利全文以引用方式并入本文。

可设想到其他三维配置,其中一些nand字符串包含在单个存储器级中的存储器元件,而其他字符串则包含跨越多个存储器级的存储器元件。三维存储器阵列也可以nor配置以及reram配置来设计。

本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储器结构,但涵盖了在本文所述和如本领域普通技术人员所理解的技术实质与范围内的许多相关的存储器结构。

虽然示例性存储器系统是包括具有电荷捕集材料的垂直nand字符串的三维存储器结构,但是其他(2d和3d)存储器结构也可与本文所述的技术一起使用。例如,也可使用浮栅存储器(例如,nand型和nor型快闪存储器)、reram存储器、磁阻存储器(例如,mram)和相变存储器(例如,pcram)。

reram存储器的一个示例包括可逆电阻切换元件,其布置在由x线和y线(例如,字线和位线)访问的交叉点阵列中。可用于实现存储器结构126的三维存储器阵列的一个示例可见于名称为“highendurancenon-volatilestorage(高耐久性非易失性存储)”的美国专利申请2016/0133836,该申请全文以引用方式并入本文。

在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。

磁阻存储器(mram)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化以存储内存。该配置称为自旋阀,并且是mram位的最简单结构。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。

相变存储器(pcram)利用了硫属化物玻璃的独特行为。一个实施方案使用gete-sb2te3超晶格通过简单地用激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。应当注意,在该文件中使用“脉冲”不需要矩形脉冲,但包括声音、电流、电压光或其他波的(连续或非连续)振动或脉冲串。

图7是固态驱动器400的一个实施方案的框图,该固态驱动器包括控制器402,用于存储数据的非易失性存储器封装404,dram/reram406,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎412。控制器402包括fep电路410。在图7的实施方案中,将计算引擎412集成在fep电路410内,并且一个或多个bep电路422现在结合在存储器封装404内。在该实施方式中,ssd控制器包含用于fep电路的仅一个asic。也就是说,ssd控制器402与存储器封装404通信,其中每个存储器封装包括多个存储器管芯420以及一个或多个bep电路422。存储器管芯420的一个示例性实施方案在图6中描绘。bep电路422的一个示例在图4中描绘。具有集成计算引擎412的fep电路410的一个示例在图3中描绘。

图8是固态驱动器450的一个实施方案的框图,该固态驱动器包括控制器460,用于存储数据的非易失性存储器封装454,dram/reram456,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎464。在图8的实施方案中,计算引擎464是独立的asic(专用集成电路),其与ssd控制器460集成为soc。在该实施方式中,控制器460包括与一个或多个bep电路462通信的fep电路460。计算引擎464在fep电路462的外部并连接到fep电路462,连接到bep电路,并且通过单独的接口连接到高速dram存储器。计算引擎464可用的带宽低于或等于图2的实施方案的带宽。当fep电路462和计算引擎464的开发需要保持分离时,该实施方式是优选的。bep电路422的一个示例在图4中描绘。存储器封装454的一个示例在图5中描绘。

图9是没有计算引擎的fep电路的一个实施方案的框图,该fep电路适用于图8的实施方案(例如,fep电路460)。图9示出图3的所有部件,但是没有计算引擎。也就是说,图9描绘了pcie接口150、主机处理器152、noc154、存储器处理器156、sram160、dram控制器162,以及pcie接口164和166。在图9的实施方案中,ssd控制器将包括两个bep电路;因此,存在两个pcie接口。每个pcie接口与bep电路中的一个通信。在其他实施方案中,可存在多于或少于两个bep电路;因此,可存在多于或少于两个pcie接口。

图10是固态驱动器600的一个实施方案的框图,该固态驱动器包括控制器602,用于存储数据的非易失性存储器封装604,dram/reram606,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎616。控制器602包括连接到一个或多个bep电路614的fep电路612。在该实施方案中,计算引擎616与bep电路614集成。也就是说,计算引擎616在用于bep电路614的asic中实现。现在,计算引擎可用的带宽由每个bep电路中存在的切换模式信道的数量和切换模式信道的带宽确定。bep电路614还可包含任选的接口620以连接到dram/reram芯片。到高速存储器的直接接口为计算引擎616提供对存储器的快速访问以存储临时工作数据。在不存在直接接口的情况下,临时工作数据通过将bep电路连接到fep电路的接口流式传输。fep电路612的一个示例在图9中描绘。存储器封装604的一个示例在图5中描绘。

图11是包括计算引擎的bep电路的一个实施方案的框图。图11的bep电路的实施方案适用于图10的实施方案(例如,作为bep电路614)。图11的部件与图4的部件相同,但是还包括连接到顶部noc202的计算引擎702和连接到底部noc204的第二计算引擎704。在另一个实施方案中,一个计算引擎可连接到两个noc。在另一个实施方案中,两个noc连接在一起,并且组合的noc将连接到一个、两个或多个计算引擎。在图11的实施方案中,每组四个信道有一个计算引擎。在其他实施方案中,分组在一起的信道可包括多于或少于四个信道。

图12是固态驱动器800的一个实施方案的框图,该固态驱动器包括控制器802,用于存储数据的非易失性存储器封装804,dram/reram806,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎824。控制器802包括连接到一个或多个bep电路822的fep电路820。在图12的实施方案中,计算引擎824是独立的asic,其直接连接到来自bep电路的切换模式(tm)信道。在此类实施方式中,计算引擎应任选地包括ecc引擎,以便在由计算引擎处理之前解码和校正从快闪存储器(或存储器封装中的其他类型的非易失性存储器)读取的数据。计算引擎824还可通过到dram/reram芯片以及到fep电路820的标准ddr接口连接到高速、高带宽dram存储器806。fep电路820的一个示例在图9中描绘。存储器封装804的一个示例在图5中描绘。bep电路822的一个示例在图4中描绘。

下表列出了到目前为止所展示设计的特性:

上面讨论的实施方案示出了将计算引擎与控制器集成的各种实施方式。在一组不同的实施方式中,计算引擎可与存储器封装集成,称为存储器封装级集成。

图13是包括存储器封装级集成的固态驱动器850的一个实施方案的框图,该固态驱动器包括控制器852,用于存储数据的非易失性存储器封装854,dram/reram856,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎862。控制器852包括连接到一个或多个bep电路860的fep电路858。一个或多个bep电路860连接到非易失性存储器封装854。fep电路858的一个示例在图9中描绘。bep电路860的一个示例在图4中描绘。在图13中描绘的实施方案中,计算引擎与每个存储器封装集成。现在修改通常包括多个存储器管芯(例如,nand非易失性存储器或其他类型的非易失性存储器)的存储器封装,以在存储器封装内包括计算引擎asic。在一个实施方案中,存储器封装还应包括ecc引擎(或ecc引擎的至少解码器部分),以解码从存储器读取的代码字,并且在由计算引擎处理之前校正从非易失性存储器管芯读取的数据。因此,计算引擎862包括ecc引擎。在其他实施方案中,计算引擎可对未经过ecc解码的数据进行操作。存储器封装可任选地包括如同dram的高速存储器以支持计算引擎访问临时工作数据。由于数据管理操作在存储器封装内,因此计算引擎可用的带宽可远高于存储器封装外部可用的切换模式(tm)带宽。

图13a是固态驱动器880的一个实施方案的框图,该固态驱动器包括控制器882,用于存储数据的非易失性存储器封装884,以及dram/reram886。控制器882包括连接到一个或多个bep电路890的fep电路888。一个或多个bep电路890连接到非易失性存储器封装884。fep电路888的一个示例在图9中描绘。bep电路890的一个示例在图4中描绘。图13a中描绘的实施方案包括多个(或分布式)计算引擎,使得计算引擎892定位在控制器882中,并且一组计算引擎(具有内置ecc引擎)894定位在非易失性存储器封装884中。例如,计算引擎892是独立的asic,其直接连接到来自bep电路(bep电路和存储器封装/管芯之间的接口)的切换模式(tm)信道。计算引擎892还可通过到dram/reram芯片以及到fep电路888的标准ddr接口连接到高速、高带宽dram存储器886。计算引擎894与每个存储器封装集成。在一个实施方案中,存储器封装还包括ecc引擎(或ecc引擎的至少解码器部分),以解码从存储器读取的代码字,并且在由计算引擎处理之前校正从非易失性存储器管芯读取的数据。因此,计算引擎894包括ecc引擎。在其他实施方案中,计算引擎可对未经过ecc解码的数据进行操作。存储器封装可任选地包括如同dram的高速存储器以支持计算引擎访问临时工作数据。由于一些数据操纵操作在存储器封装内,因此计算引擎可用的带宽可远高于存储器封装外部可用的切换模式(tm)带宽。在一些实施方案中,计算引擎892和894将拆分对数据执行的工作。例如,来自主机的代码可对系统进行编程以对计算引擎892执行一些操作并且对计算引擎894执行其他操作。例如,计算引擎894可执行纠错编码(ecc)功能连同简单的应用程序级别测试,并且计算引擎892可执行针对顺序或索引顺序工作负载优化的快闪转换层(ftl),连同应用程序查询级别的更复杂的过滤、排序和分组功能。

图14是包括计算引擎的存储器封装的一个实施方案的框图。图14的实施方案可用于实现图13中的存储器封装854或图13a中的存储器封装884中的一个。图14的存储器封装包括连接到存储器总线906(类似于图5的存储器总线)的多个存储器管芯904。存储器总线906连接到tm接口908以用于与bep电路通信。另外,图14示出连接到存储器总线并且连接到ecc引擎912的计算引擎910。ecc引擎912还连接到存储器总线906。从存储器管芯读取的存储器可经历ecc解码(包括固定错误),然后呈现给计算引擎910以执行本文所讨论的计算操作中的任一个。

图15是固态驱动器950的一个实施方案的框图,该固态驱动器包括控制器952,用于存储数据的非易失性存储器封装956,dram/reram954,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎。控制器952包括连接到一个或多个bep电路962的fep电路960。一个或多个bep电路962连接到非易失性存储器封装956。fep电路960的一个示例在图9中描绘。bep电路962的一个示例在图4中描绘。图15的实施方案实现存储器封装级集成。例如,每个存储器封装包括多个存储器管芯以及集成在每个存储器管芯972内的计算引擎970。在一个实施方案中,计算引擎将包括ecc引擎以解码(包括校正)从存储器管芯读取的数据。ecc引擎可以是计算引擎的一部分,或者与计算引擎分离,但是以其他方式包括在存储器管芯中。

图16是包括计算引擎的存储器管芯1000的一个实施方案的框图。例如,存储器管芯1000是图15的存储器管芯972的示例性实施方式。图16的实施方案包括图6的实施方案的元件。例如,存储器管芯1000包括存储器单元的三维存储器结构326(诸如例如存储器单元的3d阵列)、控制电路310、读取/写入电路328、行解码器324和列解码器332。控制电路310包括状态机312、片上地址解码器314、功率控制模块316和温度检测电路318。另外,在图16的实施方案中,控制电路310还包括ecc引擎1017和计算引擎1019。使用ecc引擎1017对从存储器结构326读取的数据进行解码,并且将该数据提供给计算引擎1019以便执行各种计算操作,如本文所讨论。

虽然上面讨论的实施方案示出ssd控制器要实现为包含bepasic和fepasic的两个asic解决方案,但是ssd控制器也可以用多于或少于两个的asic来实现。在该情况下,可扩展设计空间以将计算引擎放置在asic中的任意一个或多个内。另外,计算引擎可被放置在asic外部。在其他实施方案中,除了fe/bep体系结构之外,ssd控制器可包括不同的体系结构。即使在其他体系结构中,ssd控制器仍然可被配置为在asic或电路或模块中的一者中包括计算引擎。另外,可将计算引擎添加到未使用asic实现但使用其他硬件实现的ssd。

图15的实施方案包括将计算引擎集成在存储器管芯(诸如nand存储器管芯或reram存储器管芯)内。图17是提供用于实现图15的系统的实施方案的附加细节的框图。具体地讲,图17示出与ssd1100(在印刷电路板上实现)通信的主机,该ssd包括大的nvm控制器1102和小的nvm控制器1114。大的nvm控制器1102与dram1104和存储器封装1106通信。

在一个实施方案中,存储器封装1106包括若干存储器管芯1110、任选dram(或mram/rram/pcm/edram)1112,以及小的nvm控制器1114。存储器管芯1110中的每个具有管芯上计算引擎(ce)。在一个实施方案中,管芯上计算引擎使用cmos技术在衬底的顶部表面上以及在单片三维存储器阵列下面实现。潜在地,可以集成edram/stt-mram/pcm以及sram。管芯上计算引擎(ce)可执行数据操纵操作中的一些。

在一个实施方案中,小的nvm控制器1114包括计算引擎(ce),该计算引擎可执行数据操纵操作中的一些。小的nvm控制器1114可与内部存储器管芯和外部芯片(即,图17中的大的nvm控制器和dram)通信。任选dram1112用于小的nvm控制器1114以存储工作数据集。通过用计算机引擎(ce)1114和存储器管芯1110的简单ce将计算从大的nvm控制器1102卸载到小的nvm控制器,外部dram要求和通信开销可减少。

图17示出大的nvm控制器1102、dram1104、存储器管芯1110、dram1112和小的nvm控制器1114中的每个可以在安装在一个印刷电路板上的三种不同的封装中的单独硅管芯上实现。因此,图17提供大的和小的nvm控制器体系结构。大的nvm控制器1102与主机和dram接合。小的nvm控制器1114可以在存储器封装中的任一个内。小的nvm控制器1114包括具有任选dram的计算引擎,并且管理多个nvm信道。映射表可存储在任选dram(或mram/pram)中。

图18是具有存储器阵列下的电路的存储器管芯1200的一个实施方案的框图。图18示出具有多个层的单片三维存储器结构1202。存储器结构1202下方是电路1204,该电路在衬底1206的顶部表面上以及在存储器阵列1202下面实现。在一个实施方案中,电路1204使用cmos技术实现。例如,可能用edram/stt-mram/pcm以及sram/锁存器将简单的计算逻辑集成在存储器阵列1204下面的cmos逻辑中。简单的电路逻辑(即,随机发生器、id发生器、puf或aes)和简单的错误管理逻辑(即,错误位置映射或简单的错误避免算法,诸如读取参考优化器)以及ecc可被集成在存储器阵列1202下面的cmos逻辑中,作为上面讨论的计算引擎的示例。这通过消除从存储器管芯到单独控制器管芯的数据传输开销而改善了延迟和性能。可以集成fpga,通过芯片上的单个系统支持多种配置,作为上述计算引擎。可以集成fpga,支持片上系统内的多种配置。

另外,其他功能可被集成为上述计算引擎。例如,cpu或并行计算引擎可被集成为上述计算引擎。还可使用simd引擎(“gpu”),神经网络,dsp引擎(例如,图像/音频处理),数字逻辑运算(乘法、加法、减法、xor等),数据挖掘(先验、k均值、网页排名、决策树)或模式匹配(即,汉明距离计算),支持存储器管芯中的多种配置的fpga架构,具有存储器均衡器的高速i/o电路,基于互连的光学或电容器/电感耦接的电路。在一个实施方案中,当针对特定应用程序绕过aes时,计算引擎需要能够处理加密数据。在一些实施方案中,当针对特定应用程序绕过ecc时,计算引擎可能需要处理错误数据。

图19是存储器管芯1300的一个实施方案的框图,该存储器管芯具有在存储器阵列1302下面的电路1304以将非易失性存储器管芯1300用作非易失性fpga。存储器管芯1300将包括三维单片存储器阵列1302。在衬底1306的顶部表面上以及在存储器阵列1302下面实现的将是cmos逻辑1304,该cmos逻辑将待使用的fpga实现为计算引擎(按照上述讨论)。该系统将使用存储器阵列1302(nand或其他类型的非易失性存储器)作为fpga的可重配置逻辑1304的配置存储。也就是说,存储在存储器阵列1302中的配置数据用于配置fpga。这将使fpga成为非易失性的。与常规fpga相比,这将允许快速启动,该常规fpga需要从分立的非易失性存储器设备到易失性fpga单元阵列读取配置数据。当不需要fpga(硬件加速器/计算引擎)时,配置存储(存储器阵列)可仅用作普通的非易失性存储,从而节省空闲功率。

一个实施方案包括非易失性存储系统,该非易失性存储系统包括:控制器,以及与控制器分离并且连接到该控制器的存储器封装。存储器封装包括:一个或多个非易失性存储器管芯,被配置为对存储在存储器封装中的数据的内容执行数据操纵操作的计算引擎,以及纠错引擎。

在一些示例性实施方案中,控制器被配置为暴露应用编程接口,该应用编程接口可由主机应用程序使用以由计算引擎对存储在存储器封装中的数据的内容执行数据操纵操作,并且控制器被配置为在控制器和存储器封装之间传输命令和数据。在一些实施方式中,纠错引擎被配置为解码存储在存储器封装中的数据,并将解码的数据呈现给计算引擎,以便计算引擎对解码的数据执行数据操纵操作。在一些实施方式中,计算引擎被配置为搜索存储在存储器封装中的数据流,并且计算引擎被配置为以由主机应用程序指定的顺序对存储在存储器封装中的数据流进行排序。

一个实施方案包括非易失性存储系统,该非易失性存储系统包括:前端处理器电路;连接到前端处理器电路的后端处理器电路;连接到后端处理器电路的非易失性存储器封装;以及在非易失性存储系统内的计算引擎,该计算引擎被配置为对存储在非易失性存储器封装中的数据执行操作。

一个实施方案包括非易失性存储系统,该非易失性存储系统包括:控制器,该控制器包括连接到后端处理器电路的前端处理器电路;以及连接到后端处理器电路的非易失性存储器封装,该非易失性存储器封装包括用于对存储在非易失性存储器封装中的数据进行解码和执行操作的装置。

一个实施方案包括操作非易失性存储系统的方法,该方法包括:与主机接合,该接合由控制器执行;响应于控制器而访问非易失性存储器封装中的数据,该存储器封装与控制器分离并且连接到控制器,该存储器封装包括一个或多个非易失性存储器管芯、计算引擎和纠错引擎;使用存储器封装的纠错引擎解码访问的数据;以及使用存储器封装的计算引擎对解码的数据执行数据操作。在各种替代形式中,计算引擎和纠错引擎定位在存储器管芯上,计算引擎和纠错引擎定位在存储器管芯之外并且在印刷电路板上,控制器包括前端处理器电路以及连接到前端处理器电路的后端处理器电路,该后端处理器电路定位在存储器封装中,控制器执行来自主机的代码到计算引擎的机器代码的即时编译。

出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。

出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接到另一个元件,或者经由居间元件间接连接到另一个元件。当元件被提及直接连接到另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。

出于本文档的目的,术语“基于”可理解为“至少部分地基于”。

出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。

出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。

出于说明和描述的目的已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。

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