CN109328343B - 具有用以加速大数据应用的计算引擎的非易失性存储系统 - Google Patents
具有用以加速大数据应用的计算引擎的非易失性存储系统 Download PDFInfo
- Publication number
- CN109328343B CN109328343B CN201780037965.XA CN201780037965A CN109328343B CN 109328343 B CN109328343 B CN 109328343B CN 201780037965 A CN201780037965 A CN 201780037965A CN 109328343 B CN109328343 B CN 109328343B
- Authority
- CN
- China
- Prior art keywords
- memory
- compute engine
- engine
- end processor
- data
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 345
- 238000004891 communication Methods 0.000 claims abstract description 20
- 239000000758 substrate Substances 0.000 claims description 17
- 238000012937 correction Methods 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 14
- 238000013519 translation Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 2
- 239000004744 fabric Substances 0.000 claims 1
- 239000007787 solid Substances 0.000 abstract description 22
- 229920009441 perflouroethylene propylene Polymers 0.000 description 42
- 238000010586 diagram Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 150000002500 ions Chemical class 0.000 description 2
- 230000005415 magnetization Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007784 solid electrolyte Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910017629 Sb2Te3 Inorganic materials 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical group [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
- 229910052721 tungsten Inorganic materials 0.000 description 1
- 239000010937 tungsten Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- 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/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Semiconductor Memories (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种存储器系统(例如,固态驱动器),所述存储器系统包括一个或多个非易失性存储器管芯,与所述存储器管芯通信的控制器,以及在所述存储器系统内的计算引擎,所述计算引擎靠近数据位置并且可用于执行公用数据操纵操作。
Description
背景技术
非易失性半导体存储器用于固态驱动器(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/Intel Atom;以及/或者
3.可重配置的硬件电路,诸如FPGA。
与SSD中的主要便于从SSD读取数据/向SSD写入数据的其他部件不同,计算引擎操纵数据的内容。例如,它可以搜索寻找特定密钥(一组字节)的数据流,或者可以按照主机指定的某种顺序对数据进行排序。计算引擎的概念包括但不限于SSD中有时可用的压缩/解压缩引擎。
在下面考虑的设计中,存储器封装是指包含一个或多个存储器管芯(例如,NAND快闪存储器管芯、ReRAM管芯、NAND和ReRAM、或其他非易失性技术)的结构。术语存储器封装还可以指管理存储器,即包含一个或多个存储器管芯的存储器封装,该存储器管芯具有嵌入式纠错码(“ECC”)引擎/控制器,以校正在对存储器的读取操作期间检测到的错误。
图1是SSD 10的一个实施方案的框图,该SSD包括控制器(SSD控制器)12,用于存储数据的非易失性存储器封装14,DRAM/ReRAM 16,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎22。图1呈现了高级设计,其中计算引擎22集成在SSD控制器12内。计算引擎22可以是例如作为SSD控制器片上系统(“SoC”)的一部分的ASIC,或者可被(更深地)集成为SSD控制器内的硬件电路。图1示出SSD控制器12,SoC,包括现有SSD控制器部件,该SSD控制器部件包括FTL引擎32、ECC引擎34和用于控制DRAM/ReRAM 16的DDR存储器控制器36。包括在SSD控制器12内的是新提出的计算引擎22,该计算引擎可用于对存储在存储器封装的非易失性存储器中的数据执行计算操作。计算操作的示例包括扫描数据,搜索,过滤,排序,聚合数据,将数据连接在一起,以及数据上的其他功能。图1示出与DRAM/ReRAM 16通信并且与一组一个或多个存储器封装14通信的SSD控制器12。在一个实施方案中,SSD控制器12使用切换模式接口与存储器封装(和/或存储器管芯)通信,该切换模式接口是能够以32GB/s通信的异步接口。可供选择的实施方案可使用ONFI接口(开放NAND快闪接口),该接口是同步的并且利用时钟。
存储器封装包括一个或多个存储器管芯。在一个实施方案中,每个存储器管芯将包括其本身的芯片使能,该芯片使能可由SSD控制器12控制。在其他实施方案中,多个存储器管芯可共享芯片使能,这要求SSD控制器12使用寻址来在共享芯片使能的存储器管芯之间进行选择。在一个实施方案中,存储器封装14中的存储器管芯使用NAND快闪存储器。在其他实施方案中,存储器封装可包括交叉点ReRAM非易失性存储器,其在下文中有所讨论。
图2是固态驱动器100的一个实施方案的框图,该固态驱动器包括控制器102,用于存储数据的非易失性存储器104,DRAM/ReRAM 106以及数据位置附近的可用于执行公用数据操纵操作的计算引擎114。图2的实施方案包括SSD控制器102,该SSD控制器包括前端处理器电路(FEP)110以及一个或多个后端处理器电路(BEP)112。在一个实施方案中,FEP电路110在ASIC上实现。在一个实施方案中,每个BEP电路112在单独ASIC上实现。用于BEP电路112和FEP电路110中的每个的ASIC在相同半导体上实现,使得SSD控制器102被制造为SoC。FEP 110和BEP 112均包括其本身的处理器。在一个实施方案中,FEP 110和BEP 112用作主从配置,其中FEP 110是主设备,并且每个BEP 112是从设备。例如,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被设计为FEP 110内的硬件电路。计算引擎可使用DDR接口访问高速、高带宽存储器以访问DRAM 106。在该实施方式中,计算引擎可用的带宽受到将FEP 110连接到BEP 112的带宽的限制。
图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提供增强的性能(诸如吞吐量)和可扩展性。连接到NOC 154并且与NOC 154通信的是存储器处理器156、计算引擎114、SRAM 160和DRAM控制器162。DRAM控制器162用于操作DRAM(例如,DRAM 106)并且与该DRAM通信。SRAM 160是由计算引擎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与两个NOC 202和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用于对数据进行异或,使得可在存在编程错误的情况下以可恢复的方式组合和存储数据。数据路径控制器连接到接口模块,以用于通过四个信道与存储器封装进行通信。因此,顶部NOC 202与用于与存储器封装通信的四个信道的接口228相关联,并且底部NOC 204与用于与存储器封装通信的四个附加信道的接口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的三维存储器阵列的一个示例可见于名称为“High Endurance Non-Volatile Storage(高耐久性非易失性存储)”的美国专利申请2016/0133836,该申请全文以引用方式并入本文。
在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。
磁阻存储器(MRAM)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化以存储内存。该配置称为自旋阀,并且是MRAM位的最简单结构。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。
相变存储器(PCRAM)利用了硫属化物玻璃的独特行为。一个实施方案使用GeTe-Sb2Te3超晶格通过简单地用激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。应当注意,在该文件中使用“脉冲”不需要矩形脉冲,但包括声音、电流、电压光或其他波的(连续或非连续)振动或脉冲串。
图7是固态驱动器400的一个实施方案的框图,该固态驱动器包括控制器402,用于存储数据的非易失性存储器封装404,DRAM/ReRAM 406,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎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/ReRAM 456,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎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、NOC 154、存储器处理器156、SRAM 160、DRAM控制器162,以及PCIe接口164和166。在图9的实施方案中,SSD控制器将包括两个BEP电路;因此,存在两个PCIe接口。每个PCIe接口与BEP电路中的一个通信。在其他实施方案中,可存在多于或少于两个BEP电路;因此,可存在多于或少于两个PCIe接口。
图10是固态驱动器600的一个实施方案的框图,该固态驱动器包括控制器602,用于存储数据的非易失性存储器封装604,DRAM/ReRAM 606,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎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的部件相同,但是还包括连接到顶部NOC 202的计算引擎702和连接到底部NOC 204的第二计算引擎704。在另一个实施方案中,一个计算引擎可连接到两个NOC。在另一个实施方案中,两个NOC连接在一起,并且组合的NOC将连接到一个、两个或多个计算引擎。在图11的实施方案中,每组四个信道有一个计算引擎。在其他实施方案中,分组在一起的信道可包括多于或少于四个信道。
图12是固态驱动器800的一个实施方案的框图,该固态驱动器包括控制器802,用于存储数据的非易失性存储器封装804,DRAM/ReRAM 806,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎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/ReRAM 856,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎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/ReRAM 886。控制器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/ReRAM 954,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎。控制器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控制器要实现为包含BEP ASIC和FEP ASIC的两个ASIC解决方案,但是SSD控制器也可以用多于或少于两个的ASIC来实现。在该情况下,可扩展设计空间以将计算引擎放置在ASIC中的任意一个或多个内。另外,计算引擎可被放置在ASIC外部。在其他实施方案中,除了FE/BEP体系结构之外,SSD控制器可包括不同的体系结构。即使在其他体系结构中,SSD控制器仍然可被配置为在ASIC或电路或模块中的一者中包括计算引擎。另外,可将计算引擎添加到未使用ASIC实现但使用其他硬件实现的SSD。
图15的实施方案包括将计算引擎集成在存储器管芯(诸如NAND存储器管芯或ReRAM存储器管芯)内。图17是提供用于实现图15的系统的实施方案的附加细节的框图。具体地讲,图17示出与SSD 1100(在印刷电路板上实现)通信的主机,该SSD包括大的NVM控制器1102和小的NVM控制器1114。大的NVM控制器1102与DRAM 1104和存储器封装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)通信。任选DRAM 1112用于小的NVM控制器1114以存储工作数据集。通过用计算机引擎(CE)1114和存储器管芯1110的简单CE将计算从大的NVM控制器1102卸载到小的NVM控制器,外部DRAM要求和通信开销可减少。
图17示出大的NVM控制器1102、DRAM 1104、存储器管芯1110、DRAM 1112和小的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(硬件加速器/计算引擎)时,配置存储(存储器阵列)可仅用作普通的非易失性存储,从而节省空闲功率。
一个实施方案包括非易失性存储系统,该非易失性存储系统包括:控制器,以及与控制器分离并且连接到该控制器的存储器封装。存储器封装包括:一个或多个非易失性存储器管芯,被配置为对存储在存储器封装中的数据的内容执行数据操纵操作的计算引擎,以及纠错引擎。
在一些示例性实施方案中,控制器被配置为暴露应用编程接口,该应用编程接口可由主机应用程序使用以由计算引擎对存储在存储器封装中的数据的内容执行数据操纵操作,并且控制器被配置为在控制器和存储器封装之间传输命令和数据。在一些实施方式中,纠错引擎被配置为解码存储在存储器封装中的数据,并将解码的数据呈现给计算引擎,以便计算引擎对解码的数据执行数据操纵操作。在一些实施方式中,计算引擎被配置为搜索存储在存储器封装中的数据流,并且计算引擎被配置为以由主机应用程序指定的顺序对存储在存储器封装中的数据流进行排序。
一个实施方案包括非易失性存储系统,该非易失性存储系统包括:前端处理器电路;连接到前端处理器电路的后端处理器电路;连接到后端处理器电路的非易失性存储器封装;以及在非易失性存储系统内的计算引擎,该计算引擎被配置为对存储在非易失性存储器封装中的数据执行操作。
一个实施方案包括非易失性存储系统,该非易失性存储系统包括:控制器,该控制器包括连接到后端处理器电路的前端处理器电路;以及连接到后端处理器电路的非易失性存储器封装,该非易失性存储器封装包括用于对存储在非易失性存储器封装中的数据进行解码和执行操作的装置。
一个实施方案包括操作非易失性存储系统的方法,该方法包括:与主机接合,该接合由控制器执行;响应于控制器而访问非易失性存储器封装中的数据,该存储器封装与控制器分离并且连接到控制器,该存储器封装包括一个或多个非易失性存储器管芯、计算引擎和纠错引擎;使用存储器封装的纠错引擎解码访问的数据;以及使用存储器封装的计算引擎对解码的数据执行数据操作。在各种替代形式中,计算引擎和纠错引擎定位在存储器管芯上,计算引擎和纠错引擎定位在存储器管芯之外并且在印刷电路板上,控制器包括前端处理器电路以及连接到前端处理器电路的后端处理器电路,该后端处理器电路定位在存储器封装中,控制器执行来自主机的代码到计算引擎的机器代码的即时编译。
出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接到另一个元件,或者经由居间元件间接连接到另一个元件。当元件被提及直接连接到另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。
出于本文档的目的,术语“基于”可理解为“至少部分地基于”。
出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。
出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。
出于说明和描述的目的已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。
Claims (14)
1.一种非易失性存储系统,包括:
控制器;以及
存储器管芯,所述存储器管芯包括:
衬底;
单片三维非易失性存储器结构,其中多个存储器级作为所述存储器管芯的部分形成在所述衬底上方,在所述存储器级之间没有居间衬底;
计算引擎,所述计算引擎被配置为对存储在所述存储器结构中的数据的内容执行数据操纵操作,以及
纠错引擎,所述计算引擎和所述纠错引擎在所述衬底的顶部表面上并且在所述存储器管芯的存储器结构下方实现。
2.根据权利要求1所述的非易失性存储系统,其中:
所述控制器被配置为暴露应用编程接口,所述应用编程接口可由主机应用程序使用以由所述计算引擎对存储在所述存储器结构中的数据的内容执行数据操纵操作;并且
所述控制器进一步被配置为在所述控制器和所述计算引擎之间传输命令。
3.根据权利要求2所述的非易失性存储系统,其中:
所述纠错引擎被配置为解码存储在所述存储器管芯中的数据,并将所述解码的数据呈现给所述计算引擎,以便所述计算引擎对所述解码的数据执行数据操纵操作。
4.根据权利要求2所述的非易失性存储系统,其中:
所述计算引擎被进一步配置为搜索存储在所述存储器结构中的数据流;并且
所述计算引擎被进一步配置为以由所述主机应用程序指定的顺序对存储在所述存储器结构中的数据流进行排序。
5.根据权利要求1所述的非易失性存储系统,其中:
所述控制器包括附加计算引擎。
6.根据权利要求5所述的非易失性存储系统,其中:
所述附加计算引擎被配置为执行快闪转换层。
7.根据权利要求1所述的非易失性存储系统,其中:
所述计算引擎由多个非易失性FPGA实现,所述多个非易失性FPGA由所述非易失性存储器结构配置。
8.根据权利要求1所述的非易失性存储系统,其中:
所述控制器包括前端处理器电路以及连接到所述前端处理器电路的后端处理器电路,所述存储器管芯连接到所述后端处理器电路。
9.根据权利要求8所述的非易失性存储系统,其中:
所述前端处理器电路被配置为实现快闪转换层,包括执行存储器管理、逻辑到物理地址转换、与主机的通信、本地易失性存储器的管理以及所述非易失性存储系统的操作的管理。
10.根据权利要求8所述的非易失性存储系统,其中:
所述后端处理器电路被配置为应所述前端处理器电路的请求管理所述存储器管芯中的存储器操作,包括编程、读取和擦除所述存储器管芯。
11.根据权利要求8所述的非易失性存储系统,还包括:
附加后端处理器电路;以及
附加存储器管芯,所述附加后端处理器电路中的每个附加后端处理器电路与所述前端处理器电路以及所述附加存储器管芯中的一个或多个附加存储器管芯通信;并且
其中,所述前端处理器电路是所述后端处理器电路和所述附加后端处理器电路的主电路,所述后端处理器电路是所述前端处理器电路的从电路,所述附加后端处理器电路是所述前端处理器电路的从电路。
12.根据权利要求8所述的非易失性存储系统,其中:
所述控制器包括本地易失性存储器和附加计算引擎;
所述附加计算引擎连接到所述本地易失性存储器以及所述后端处理器电路和所述存储器管芯之间的接口。
13.根据权利要求8所述的非易失性存储系统,其中
所述前端处理器电路包括到主机的接口,所述计算引擎定位在到所述主机的所述接口的存储系统侧上。
14.一种操作非易失性存储系统的方法,包括:
与主机接合,所述接合由控制器执行;
响应于所述控制器而访问存储器管芯的单片三维非易失性存储器结构中的数据,,所述存储器管芯包括衬底、单片三维非易失性存储器结构、计算引擎和纠错引擎,其中多个存储器级作为所述存储器管芯的部分形成在所述衬底上方,在所述存储器级之间没有居间衬底,所述计算引擎和所述纠错引擎在所述衬底的顶部表面上并且在所述存储器管芯的存储器结构下方实现;
使用所述存储器管芯的所述纠错引擎解码所述访问的数据;以及
使用所述存储器管芯的所述计算引擎对所述解码的数据执行数据操作。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662375866P | 2016-08-16 | 2016-08-16 | |
US62/375,866 | 2016-08-16 | ||
US15/673,143 | 2017-08-09 | ||
US15/673,143 US10387303B2 (en) | 2016-08-16 | 2017-08-09 | Non-volatile storage system with compute engine to accelerate big data applications |
PCT/US2017/046211 WO2018034923A1 (en) | 2016-08-16 | 2017-08-10 | Non-volatile storage system with compute engine to accelerate big data applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109328343A CN109328343A (zh) | 2019-02-12 |
CN109328343B true CN109328343B (zh) | 2022-04-29 |
Family
ID=61191717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780037965.XA Active CN109328343B (zh) | 2016-08-16 | 2017-08-10 | 具有用以加速大数据应用的计算引擎的非易失性存储系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10387303B2 (zh) |
CN (1) | CN109328343B (zh) |
WO (1) | WO2018034923A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
JP7242634B2 (ja) | 2017-07-30 | 2023-03-20 | ニューロブレード リミテッド | メモリチップ |
US10346346B1 (en) * | 2017-12-21 | 2019-07-09 | Xilinx, Inc. | Inline ECC function for system-on-chip |
US20190042480A1 (en) * | 2018-02-05 | 2019-02-07 | Intel Corporation | Method for non-volatile memory and memory controller secured and authenticated pairing |
US10585819B2 (en) * | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
US10592463B2 (en) | 2018-03-05 | 2020-03-17 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
US11320995B2 (en) | 2018-10-31 | 2022-05-03 | Western Digital Technologies, Inc. | Transferring computational operations to controllers of data storage devices |
CN111198836B (zh) * | 2018-11-20 | 2024-05-07 | 阿里巴巴集团控股有限公司 | 数据处理装置和计算设备 |
US11112972B2 (en) | 2018-12-05 | 2021-09-07 | Samsung Electronics Co., Ltd. | System and method for accelerated data processing in SSDs |
US11133059B2 (en) | 2018-12-06 | 2021-09-28 | Western Digital Technologies, Inc. | Non-volatile memory die with deep learning neural network |
EP3789925A1 (en) * | 2018-12-06 | 2021-03-10 | Western Digital Technologies, Inc. | Non-volatile memory die with deep learning neural network |
US11520521B2 (en) | 2019-06-20 | 2022-12-06 | Western Digital Technologies, Inc. | Storage controller having data augmentation components for use with non-volatile memory die |
US11501109B2 (en) | 2019-06-20 | 2022-11-15 | Western Digital Technologies, Inc. | Non-volatile memory die with on-chip data augmentation components for use with machine learning |
US11397694B2 (en) * | 2019-09-17 | 2022-07-26 | Micron Technology, Inc. | Memory chip connecting a system on a chip and an accelerator chip |
US11216696B2 (en) | 2020-02-06 | 2022-01-04 | Western Digital Technologies, Inc. | Training data sample selection for use with non-volatile memory and machine learning processor |
US11269645B2 (en) * | 2020-03-11 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array |
US11321167B2 (en) | 2020-05-09 | 2022-05-03 | Western Digital Technologies, Inc. | Adaptive folding for integrated memory assembly |
US11301321B2 (en) | 2020-05-28 | 2022-04-12 | Western Digital Technologies, Inc. | Data shaping for integrated memory assembly |
US10991444B1 (en) | 2020-05-28 | 2021-04-27 | Western Digital Technologies, Inc. | Tiered read reference calibration |
US11170870B1 (en) | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
US11188268B1 (en) | 2020-05-28 | 2021-11-30 | Western Digital Technologies, Inc. | Programmable processor in an integrated memory assembly |
US11068342B1 (en) | 2020-06-01 | 2021-07-20 | Western Digital Technologies, Inc. | Redundancy data in integrated memory assembly |
US11482296B2 (en) | 2020-06-03 | 2022-10-25 | Sandisk Technologies Llc | ECC in integrated memory assembly |
US11256591B2 (en) | 2020-06-03 | 2022-02-22 | Western Digital Technologies, Inc. | Die memory operation scheduling plan for power control in an integrated memory assembly |
US11488682B2 (en) | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
US11392327B2 (en) | 2020-09-09 | 2022-07-19 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US11650932B2 (en) | 2020-10-25 | 2023-05-16 | Western Digital Technologies, Inc. | Integrated non-volatile memory assembly with address translation |
US11977915B2 (en) | 2020-12-15 | 2024-05-07 | Western Digital Technologies, Inc. | Non-volatile memory with intelligent compute task distribution |
US11481154B2 (en) | 2021-01-15 | 2022-10-25 | Sandisk Technologies Llc | Non-volatile memory with memory array between circuits |
US11809327B2 (en) | 2021-11-16 | 2023-11-07 | Western Digital Technologies, Inc. | Data auto-relocation in an integrated memory assembly |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930661B1 (en) * | 2008-08-04 | 2011-04-19 | Xilinx, Inc. | Software model for a hybrid stacked field programmable gate array |
CN102640225A (zh) * | 2009-12-31 | 2012-08-15 | 英特尔公司 | 用于混合存储器的系统、方法和装置 |
US9003109B1 (en) * | 2014-05-29 | 2015-04-07 | SanDisk Technologies, Inc. | System and method for distributed computing in non-volatile memory |
Family Cites Families (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6401185B1 (en) | 1999-05-27 | 2002-06-04 | Oracle Corp. | Method and apparatus for accessing paged objects using a fast division technique |
US7660941B2 (en) | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
US6446062B1 (en) | 1999-12-23 | 2002-09-03 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values |
US6728705B2 (en) | 2000-09-01 | 2004-04-27 | Disney Enterprises, Inc. | System and method for selecting content for displaying over the internet based upon some user input |
WO2002069172A1 (en) | 2001-02-22 | 2002-09-06 | Didera, Inc. | Systems and methods for managing distributed database resources |
JP2003044230A (ja) | 2001-05-23 | 2003-02-14 | Hitachi Ltd | 記憶装置システム |
US6549977B1 (en) | 2001-05-23 | 2003-04-15 | 3Ware, Inc. | Use of deferred write completion interrupts to increase the performance of disk operations |
US7055015B2 (en) | 2002-02-25 | 2006-05-30 | Ricoh Company, Ltd. | Information processing apparatus in which processes can reduce overhead of memory access and efficiently share memory |
WO2004025475A1 (ja) | 2002-09-10 | 2004-03-25 | Annex Systems Incorporated | データベースの再編成システム、並びに、データベース |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7219264B2 (en) | 2003-05-09 | 2007-05-15 | Tekelec | Methods and systems for preserving dynamic random access memory contents responsive to hung processor condition |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7685194B2 (en) | 2006-08-31 | 2010-03-23 | Microsoft Corporation | Fine-grained access control in a database by preventing information leakage and removing redundancy |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
WO2008070812A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for data storage using progressive raid |
US20080140918A1 (en) | 2006-12-11 | 2008-06-12 | Pantas Sutardja | Hybrid non-volatile solid state memory system |
US9153337B2 (en) | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
CN101681309A (zh) * | 2007-06-15 | 2010-03-24 | 富士通株式会社 | 纠错方法以及运算器 |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
EP2124174A1 (en) | 2008-05-19 | 2009-11-25 | Accenture Global Services GmbH | Service exception resolution framework |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8824492B2 (en) | 2010-05-28 | 2014-09-02 | Drc Computer Corporation | Accelerator system for remote data storage |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
CN102651007A (zh) | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US8760922B2 (en) | 2012-04-10 | 2014-06-24 | Sandisk Technologies Inc. | System and method for micro-tiering in non-volatile memory |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US20140047159A1 (en) * | 2012-08-10 | 2014-02-13 | Sandisk Technologies Inc. | Enterprise server with flash storage modules |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US8780634B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | CAM NAND with OR function and full chip search capability |
US8817541B2 (en) | 2012-11-09 | 2014-08-26 | Sandisk Technologies Inc. | Data search using bloom filters and NAND based content addressable memory |
US8773909B2 (en) | 2012-11-09 | 2014-07-08 | Sandisk Technologies Inc. | CAM NAND with or function and full chip search capability |
US8634247B1 (en) | 2012-11-09 | 2014-01-21 | Sandisk Technologies Inc. | NAND flash based content addressable memory |
US8780632B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | De-duplication techniques using NAND flash based content addressable memory |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
EP2755142B1 (en) * | 2013-01-09 | 2016-03-16 | Sony Mobile Communications AB | Data storage in a mobile device with embedded mass storage device |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9286948B2 (en) * | 2013-07-15 | 2016-03-15 | Advanced Micro Devices, Inc. | Query operations for stacked-die memory device |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9105333B1 (en) | 2014-07-03 | 2015-08-11 | Sandisk Technologies Inc. | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
US9542119B2 (en) * | 2014-07-09 | 2017-01-10 | Toshiba Corporation | Solid-state mass storage media having data volumes with different service levels for different data types |
US9472758B2 (en) | 2014-11-11 | 2016-10-18 | Sandisk Technologies Llc | High endurance non-volatile storage |
KR102290020B1 (ko) * | 2015-06-05 | 2021-08-19 | 삼성전자주식회사 | 스택드 칩 구조에서 소프트 데이터 페일 분석 및 구제 기능을 제공하는 반도체 메모리 장치 |
US9343156B1 (en) | 2015-06-25 | 2016-05-17 | Sandisk Technologies Inc. | Balancing programming speeds of memory cells in a 3D stacked memory |
US11079936B2 (en) * | 2016-03-01 | 2021-08-03 | Samsung Electronics Co., Ltd. | 3-D stacked memory with reconfigurable compute logic |
US10025522B2 (en) * | 2016-04-15 | 2018-07-17 | Sandisk Technologies Llc | Memory interface command queue throttling |
-
2017
- 2017-08-09 US US15/673,143 patent/US10387303B2/en active Active
- 2017-08-10 WO PCT/US2017/046211 patent/WO2018034923A1/en active Application Filing
- 2017-08-10 CN CN201780037965.XA patent/CN109328343B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930661B1 (en) * | 2008-08-04 | 2011-04-19 | Xilinx, Inc. | Software model for a hybrid stacked field programmable gate array |
CN102640225A (zh) * | 2009-12-31 | 2012-08-15 | 英特尔公司 | 用于混合存储器的系统、方法和装置 |
US9003109B1 (en) * | 2014-05-29 | 2015-04-07 | SanDisk Technologies, Inc. | System and method for distributed computing in non-volatile memory |
Also Published As
Publication number | Publication date |
---|---|
WO2018034923A1 (en) | 2018-02-22 |
US10387303B2 (en) | 2019-08-20 |
CN109328343A (zh) | 2019-02-12 |
US20180052766A1 (en) | 2018-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109328343B (zh) | 具有用以加速大数据应用的计算引擎的非易失性存储系统 | |
CN109791519B (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
US10565123B2 (en) | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module | |
US11599475B2 (en) | Apparatuses and methods for compute enabled cache | |
US20180358989A1 (en) | Non-volatile Storage Systems With Application-Aware Error-Correcting Codes | |
US20190042611A1 (en) | Technologies for structured database query for finding unique element values | |
TW201602900A (zh) | 記憶體模組 | |
US11397885B2 (en) | Vertical mapping and computing for deep neural networks in non-volatile memory | |
US10553285B2 (en) | Single-port memory with opportunistic writes | |
US20160011813A1 (en) | Atomic Non-Volatile Memory Data Transfer | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
US11392494B2 (en) | Technologies for performant column read operations on clustered data in a dimm architecture | |
US9830108B2 (en) | Write redirect | |
EP3929923A1 (en) | Memory array with shorting structure on a dummy array thereof, and method of providing same | |
US10474366B2 (en) | Non-volatile storage system with in-drive data analytics | |
US20190294567A1 (en) | Technologies for adding computational ability to memory devices without changing media layers | |
KR20200032764A (ko) | 메모리에서의 감지 동작 | |
US11656994B2 (en) | Non-volatile memory with optimized read | |
US20230289099A1 (en) | Apparatus, method and system to implement a dual vdm scheme on a three-dimensional memory architecture | |
US20230393978A1 (en) | Half latch level shifting circuit for non-volatile memory architectures | |
US20230354723A1 (en) | Structure and method of depositing memory cell electrode materials with low intrinsic roughness |
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 |