伪异步多平面独立读取的制作方法

文档序号:24306101发布日期:2021-03-17 00:58阅读:153来源:国知局
伪异步多平面独立读取的制作方法

概括地说,本申请描述了与半导体存储器件有关的实施例。



背景技术:

半导体存储器件可以分类为易失性存储器件和非易失性存储器件。通常,易失性存储器件在断电时会丢失数据,而非易失性存储器件即使在断开电源时也可以保留存储的数据。为了实现更高的数据存储密度,半导体制造商开发了垂直器件技术,诸如三维(3d)nand闪存技术等。这样的3dnand闪存是一种非易失性存储器件。多平面nand闪存可以具有多个平面,可以对其进行同步或异步读取。



技术实现要素:

本公开内容的一些方面提供了一种接口,所述接口可以设置在主机与多平面闪存之间或安装在所述闪存中。例如,接口可以包括第一存储单元、第二存储单元以及控制器。所述第一存储单元可以被配置为接收和存储从所述主机发出的第一平面管线命令,并且将所述第一平面管线命令输出到所述闪存的第一平面。所述第二存储单元可以被配置为接收和存储从所述主机发出的第二平面管线命令,并将所述第二平面管线命令输出到所述闪存的第二平面。所述控制器可以电连接到所述第一存储单元和所述第二存储单元,并且被配置为当没有读取过程在所述闪存的所述第一平面和所述第二平面上执行时,将所述第一平面管线命令输出到所述第一平面,并且将所述第二平面管线命令输出到所述第二平面。例如,所述第一存储单元和所述第二存储单元可以构成单个存储器。

在一些实施例中,所述第一平面管线命令可以包括第一平面管线读取命令和第一平面管线读取结束命令。例如,第一存储单元可以被配置为:一次存储第一平面管线读取命令或第一平面管线读取结束命令。又例如,第一存储单元被配置为一次只存储第一平面管线读取命令中的一个。

在其它实施例中,所述控制器可以包括第一开关。所述第一开关的一端电连接到所述第一存储单元,并且另一端电连接到所述主机,以接收所述第一平面管线命令。在其它实施例中,所述第一开关可以被配置为在所述第一存储单元为空之后闭合。

所述第一存储单元可以是队列。在其它实施例中,所述闪存可以是nand闪存。在各个实施例中,所述闪存可以在所述第一平面和所述第二平面上同步地执行读取过程。在一些其它实施例中,所述主机可以异步地发出所述第一平面管线命令和所述第二平面管线命令。

本公开内容的一些方面还可以提供一种将从主机发出的命令输出到多平面闪存的方法。例如,所述方法可以包括从所述主机发出的第一平面管线命令和第二平面管线命令分别存储在第一存储单元和第二存储单元中。所述方法还可以包括:在当没有读取过程在所述闪存的第一平面和第二平面上执行时,将所述第一平面管线命令和所述第二平面管线命令分别输出到所述闪存的所述第一平面和所述第二平面。在一些实施例中,在所述第一存储单元为空之后,将所述第一平面管线命令存储在所述第一存储单元中。

附图说明

当结合附图来阅读时,从以下具体实施方式将最好地理解本公开内容的示例性实施例。应该指出的是:根据行业中的标准实践,各种特征未按比例绘制。实际上,为了讨论的清楚性,各种特征的尺寸可以任意增加或减小。

图1示出了根据本公开内容的一些实施例的示例性nand闪存单元。

图2示出了根据本公开内容的一些实施例的示例性nand闪存块。

图3示出了根据本公开内容的一些实施例的示例性多平面nand闪存管芯。

图4示出了根据本公开内容的一些实施例的示例性固态驱动器(ssd)。

图5示出了说明根据本公开内容的一些实施例的伪异步多平面读取过程的示例性时序图。

图6示出了根据本公开内容的一些实施例的实现伪异步多平面读取过程的示例性接口的功能框图。

图7示出了根据本公开内容的一些实施例的示例性方法的流程图。

具体实施方式

以下公开内容提供了用于实现所提供的发明主题的不同特征的许多不同的实施例或示例。下文描述了组件和布置的特定示例以简化本公开内容。当然,这些仅仅是示例,而非意在进行限制。例如,在下面的描述中,在第二特征上方或其上的第一特征的形成可以包括在其中第一和第二特征是通过直接接触而形成的实施例,并且还可以包括这样的实施例:在其中,第一特征和第二特征之间可以形成其它特征,使得第一特征和第二特征可以不直接接触。另外,本公开内容可以在各个示例中重复引用数字和/或字母。该重复是出于简单和清楚的目的,并且其本身并不指示所讨论的各种实施例和/或配置之间的关系。

此外,本文中可以使用空间相对术语,例如“下方”、“下面”、“下部”、“上方”、“上部”等以便于描述,来描述一个元件或特征与另一个元件或特征如图所示的关系。空间相对术语旨在包括除了图中所描绘的方位之外的使用或操作中的设备的不同方位。装置可以以其它方式定向(旋转90度或在其它方位上),并且在本文中使用的空间相对描述符可以同样相应地被解释。

根据本公开内容的一些实施例,可以提出伪异步多平面独立(pampi)读取方案。在伪异步多平面独立读取方案中,可以由主机同步或异步发出的第一平面管线命令和第二平面管线命令可以在多平面闪存的第一平面和第二平面上同步执行。根据本公开内容的一些实施例,可以提出接口以实现伪异步多平面读取过程。例如,该接口可以设置在主机和多平面闪存之间。在其它实施例中,当在第一平面和/或第二平面上执行读取过程时,接口可以存储第一平面管线命令和第二平面管线命令,并且将第一平面管线命令和第二平面管线命令同步输出到第一平面和第二平面。因此,可以在第一平面和第二平面上同步执行第一和第二平面管线命令,即使这些命令是由主机异步发出的。

与传统的硬盘驱动器(hdd)(其通过使用必须物理移动以存取在快速旋转的磁盘上的位置的机械驱动器头来工作)相比,固态驱动器(ssd)只是闪存的薄楔形物,并且没有活动部件,并且存储在闪存中的数据可以在ssd上的任何位置以相同快的速度和精度来存取。因此,ssd随机读取过程可以比传统hdd随机读取过程快10至50倍地执行。

一般而言,存在两种类型的闪存,nor和nand。有几个因素有利于使用nand而非nor闪存单元。例如,由于nor闪存单元需要单独的金属接触的事实,因此标准nand闪存单元比标准nor闪存单元要小,例如4f2对10f2,并且可以被制造得比nor闪存单元更密集并且因此更便宜。

图1示出了根据本公开内容的一些实施例的示例性nand闪存单元100。nand单元100可以在浮置栅极130中存储电荷,该浮置栅极130分别由上氧化物绝缘层140和下氧化物绝缘层120在上方和下方隔离。当浮置栅极130被充电时,nand单元100可以被编程,表示二进制值“0”。当浮置栅极130没有电荷时,nand单元100可以被擦除,代表二进制值“1”。为了对nand单元100进行编程,可以向上氧化物绝缘层140上方的控制栅极150施加高电压,并且电子将通过“隧穿”穿过下氧化物绝缘层120,从下氧化物绝缘层120下方的硅衬底110移动到浮置栅极130。然后,电子可以被捕获在浮置栅极130中长达数年。为了擦除nand单元100,可以向硅衬底110施加高电压,并且电子将从浮置栅极130移动到硅衬底110。为了读取nand单元100,可以将读取参考电压施加到控制栅极150。当在源极160和漏极170之间存在电流时,浮置栅极130不被充电,并且二进制值“1”将被读取。当在源极160和漏极170之间不存在电流时,浮置栅极130被充电并且二进制值“0”将被读取。

图1所示的示例是单级单元(slc)nand单元,其可以存储一比特数据。还存在多级单元(mlc)nand单元、三级单元(tlc)nand单元和四级单元(qcl)nand单元,它们可以分别存储两比特、三比特和四比特数据。一比特、两比特、三比特和四比特数据分别与两个、四个、八个和十六个不同的电压电平相对应。施加到每个nand单元的最大电压大致相同。因此,slcnand单元可以在其两个电压电平之间具有足够大的保护带,并且能够承受极端温度和其它不利影响(诸如降级速度),这要比mlc、tlc和qlcnand单元好得多。

图2示出了根据本公开内容的示例性实施例的示例性nand闪存块200。块是要擦除的最小单元。nand块200可以包括以阵列布置的多个slcnand单元100。在其它实施例中,nand块200可以包括多个mlc、tlc或qlcnand单元。nand块200中的串210(示为列)是要读取的最小单元,并且每个串通常可以包括彼此串联连接的32或64个nand单元100,其中每个nand单元100代表一比特数据(二进制值“0”或“1”)。

如图所示,串210中的每个串的一端经由地选择线260控制的地选择线(gsl)晶体管220连接到公共源极线250,而另一端经由串选择线280控制的串选择线(ssl)晶体管230连接到位线270。串210中的每个串的操作可以通过导通或截止其gsl晶体管220和ssl晶体管230来控制。例如,ssl晶体管230可用于启用串的操作,并且gsl晶体管230可用于在读取过程中将串接地。为了读取串的单个nand单元,必须打开(例如,通过对其施加导通电压)同一串的所有其余nand单元(即,未读取的nand单元),以允许正在被读取的单个nand单元的二进制值传递到连接到该串的感测放大器(未示出)。nand块200中的页240(显示为行)是要编程的最小单元,并且各自通常可以包括共享同一字线290的至少32,768(即4k)个nand单元100。

图3示出了根据本公开内容的示例性实施例的示例性多平面nand闪存管芯300。nand管芯300可以包括可以彼此堆叠的多个nand闪存平面_0至_n-1。例如,nand管芯300可以包括两个平面,例如,平面_0310和平面_1311。nand管芯300还可包括四个或六个平面。nand平面_0至_n-1中的每个nand平面可以包括多个nand块200,例如,nand块#0至#m-1。nand管芯300中的一个或多个可以形成nand闪存芯片。ssd可以包括多个nand芯片,这些芯片使用多个沟道连接到nand闪存控制器。

图4示出了根据本公开内容的示例性实施例的示例性ssd400。ssd400可以经由主机总线420与主机410通信。例如,主机410可以经由主机总线420向ssd400发送命令和数据,并且ssd400可以经由主机总线420向主机410发送数据。主机410可以是计算机。主机总线420可以是通用串行总线(usb)、串行高级技术附件(sata)、并行高级技术附件(pata)或外围组件快速互连(pcie)。ssd400可以包括nand管芯300(例如,平面_0310和平面_1311),i/o和逻辑控制器430以及外围电路440。

外围电路440可以包括地址寄存器、状态寄存器、逻辑控制电路、i/o电路、就绪/繁忙控制电路(未示出)等,并且耦合在i/o和逻辑控制器430与行解码器401和411、列解码器402和412、平面_0310和平面_1311之间。外围电路440可以从i/o和逻辑控制器430接收各种控制信号,诸如芯片使能信号、命令锁存器使能信号、地址锁存器使能信号、写使能信号、读使能信号等。外围电路440还可以将来自i/o和逻辑控制器430的写入数据发送到平面_0310和平面_1311,并且从平面_0310和平面_1311读取数据到i/o和逻辑控制器430。行解码器401和411可以分别选择与平面_0310和平面_1311的目标存储单元相对应的字线,并且将期望的电压施加到选择的字线和其它未选择的字线。页面寄存器403和413可以在平面_0310和平面_1311的操作期间保存数据。高速缓存器_0404和高速缓存器_1414可以被包括在各自的感测放大器(未示出)中,并且可以分别从平面_0310和平面_1311读取数据,并且将数据输出到i/o和逻辑控制器430,并且分别从i/o和逻辑控制器430发送写入数据到平面_0310和平面_1311。

i/o和逻辑控制器430可以具有多种功能,诸如损耗均衡、错误检查和校正、中止写入、缺陷管理以及垃圾收集。i/o和逻辑控制器430还可以响应于从主机410发送的命令来控制nand管芯300的平面_0310和平面_1311以进行读取、写入、擦除等。i/o和逻辑430控制器还可以向平面_0310和平面_1311发送输入/输出信号以及从平面_0310和平面_1311接收输入/输出信号。例如,i/o和逻辑控制器430可以向平面_0310和/或平面_1311发送各种控制信号,并且分别从平面_0310和平面_1311接收就绪/繁忙信号(例如,图5所示的true_rbn_p0和true_rbn_p1)。就绪/繁忙信号可用于指示平面_0310和平面_1311处于就绪状态还是繁忙状态。就绪状态可以指在其中平面_0310和平面_1311可以接收命令的状态。繁忙状态可以指例如在平面_0310和平面_1311上在执行读取过程并且平面_0310和平面_1311可能不接收命令的另一种状态。例如,当平面_0310正忙于执行读取过程并且可能未接收到命令时,true_rbn_p0可以被认为处于“l”电平。又例如,当平面_1311完成读取过程并准备接收命令时,true_rbn_p1可以被认为处于“h”级别。

i/o和逻辑控制器430还可以向主机410发送以及从主机410接收各种控制信号。例如,从平面_0310和平面_1311读取的数据可以临时存储在高速缓存(例如,高速缓存器_0404和高速缓存器_1414)中,并且高速缓存器_rbn_p0和高速缓存器_rbn_p1(如图5所示)可以用于向主机410通知高速缓存器_0404和高速缓存器_1414是处于就绪状态还是繁忙状态。例如,当在平面_0310上执行的读取过程未完成,在平面_0310中存储的数据尚未完全高速缓存到高速缓存器_0404中并且不允许主机410取得高速缓存器_0404中缓存的数据时,高速缓存器_rbn_p0可以被认为处于“l”电平。对于另一实施例,当在平面_1311上执行的读取过程完成,存储在平面_1311中的数据已经被完全高速缓存在高速缓存器_1中,并且现在可以允许主机410取得高速缓存器_1414中缓存的数据时,高速缓存器_rbn_p1可以被认为处于“h”电平。

可以一次对nand管芯300的平面_0310和平面_1311中的一个执行读取过程,例如,单平面读取过程。例如,主机410可以发出读取命令“00h”,并且经由主机总线420将其发送到i/o和逻辑控制器430。读取命令“00h”可以等效于用于读取的地址输入接收命令,并且用于指示nand管芯300执行读取过程。接下来,主机410可以将包括用于指定平面_0310的信息的地址信息add0_p0发送到i/o和逻辑控制器430,并且i/o和逻辑控制器430可以将地址信息add0_p0发送到nand管芯300的平面_0310。然后,主机410可以发出读取开始命令“30h”并将其发送到i/o和逻辑控制器430,以指示平面_0310基于读取开始命令和地址信息add0_p0开始读取过程。然后,平面_0310可以从就绪状态进入繁忙状态,这由从“h”电平改变为“l”电平的true_rbn_p0表示。当读取过程结束时,平面_0310可以进入就绪状态(由“h”电平的true_rbn_p0表示),可以将由地址信息add0_p0指定的存储在平面_0310中的数据高速缓存在高速缓存器_0404中,并且主机410然后可以取得存储在高速缓存器_0404中的数据。

还可以在多平面读取过程期间同步或异步地读取nand管芯300的平面_0310和平面_1311,以提高读取吞吐量,从而导致高芯片吞吐量。例如,在同步多平面独立(mpi)读取方案中,i/o和逻辑控制器430可以将(从主机410发出的)读取命令“00h”发送到nand管芯300。然后,i/o和逻辑控制器430可以发送地址信息add0_p0,其包括用于指定平面_0310的信息。接下来,i/o和逻辑控制器430可以向nand管芯300发送多平面读取命令“32h”,该命令用于指示同步mpi过程并且指示到目前为止所发送的命令和地址信息对应于一个平面。随后,i/o和逻辑控制器430可以将读取命令“00h”、包括用于指定平面_1311的信息的地址信息add1_p1以及读取开始命令“30h”依次发送到平面_1311。可以同时在平面_0310和平面_1311上执行多平面读取过程,在此过程中,平面_0310和平面_1311可以进入繁忙状态,这可以分别由“l”电平的true_rbn_p0和“l”电平的true_rbn_p1来指示。

当同步mpi过程结束时,平面_0310和平面_1311可以进入就绪状态,这可以分别由“h”电平的true_rbn_p0和“h”电平的true_rbn_p1来指示,并且存储在由地址信息add0_p0指定的平面_0310中的数据和存储在由地址信息add1_p1指定的平面_1311中的数据可以分别被高速缓存在高速缓存器_0404和高速缓存器_1414中。为了实现同步mpi过程,读取命令在被输出到平面_0310和平面_1310之前必须彼此对齐,这为主机410带来了额外的固件复杂性。

在异步多平面独立(ampi)读取方案中,主机410可以在不同时间向i/o和逻辑控制器430发出并发送两个读取命令以及针对平面_0310和平面_1311的相应地址信息,并且i/o和逻辑控制器430可以将这两个异步读取命令发送到平面_0310和平面_1311,以对平面_0310和平面_1311中的每个平面执行读取过程。为了实现ampi过程,需要额外的电路来支持针对平面_0310和平面_1311的独立字线偏置。此外,平面_0310和平面_1311必须具有它们自己的各自的电荷泵和调节器,以便减轻噪声注入。先进的3dnand闪存设计已经采用了阵列下电路(cua)或x焊接来隐藏阵列下的互补金属氧化物半导体(cmos)电路,以减小总体芯片尺寸。在小的密集管芯上执行cua或x焊接变得困难,甚至不可能,因为这样的管芯无法隐藏所有外围电路。

图5示出了示例性时序图,其示出了根据本公开内容的示例性实施例的伪异步多平面独立(pampi)读取方案。在伪异步多平面独立读取方案中,可以在ssd400上同步执行读取命令,这些读取命令可以被发出以从主机410同步或异步地在不同的平面上执行。例如,当在平面_0310和/或平面_1311上执行读取过程时,将要在平面_0310和平面_1311上执行的同步或异步读取命令可以分别存储在不同的存储单元中,例如,队列_0和队列_1,然后当在平面_0310和平面_1311上没有执行读取过程时,将要在平面_0310和平面_1311上执行的同步或异步读取命令输出到平面_0和平面_1311并在平面_0和平面_1311上同步执行。

最初,队列_0和队列_1可以为空,而队列_rbn_p0和队列_rbn_p1(它们指示队列_0和队列_1处于繁忙状态还是就绪状态)二者都可以处于“h”电平,这指示队列_0和队列_1二者处于就绪状态并且准备好了接收并存储读取命令;没有读取过程在平面_0310和平面_1311上执行,并且true_rbn_p0和true_rbn_p1(它们指示平面_0310和平面_1311处于繁忙状态还是就绪状态)二者都处于“h”电平,这指示平面_0310和平面_1311处于就绪状态并且准备好了对它们执行读取过程;并且高速缓存器_rbn_p0和高速缓存器_rbn_p1也处于“h”电平。

在阶段#1,可以接收读取命令add0_p0“38h”,并将在平面_0310上执行该读取命令。例如,图5所示的读取命令add0_p0“38h”可以包括平面_0管线读取命令和相应的平面_0地址信息。由于没有读取命令,并且没有在平面_0310和平面_1311上执行任何读取过程,并且队列_0和队列_1二者都为空,因此在平面_0310上执行读取命令add0_p0“38h”。由于在队列_0和队列_1中未存储任何读取命令,因此队列_0和队列_1仍为空,并且队列_rbn_p0和队列_rbn_p1仍处于“h”电平。在一些实施例中,如虚线所示,队列_rbn_p0将变为“l”电平并立即返回到“h”电平。当在平面_0310上执行读取命令add0_p0“38h”时,true_rbn_p0变为“l”电平,而高速缓存器_rbn_p0也变为“l”电平,这指示存储在由平面_0地址信息寻址的平面_0310中的数据正被高速缓存到高速缓存器_0404中,并且高速缓存器_0404处于繁忙状态并且尚未准备好由主机410访问。由于没有在平面_1311上执行读取命令,因此true_rbn_p1仍处于“h”电平,并且高速缓存器_rbn_p1也仍处于“h”电平。

在阶段#2,可以接收读取命令add1_p1“38h”,并将在平面_1311上执行该读取命令。例如,图5所示的读取命令add1_p1“38h”可以包括平面_1管线读取命令和相应的平面_1地址信息。由于读取命令add0_p0“38h”以及相应的读取过程在平面_0310上被执行,因此将不执行读取命令add1_p1“38h”,而是将其存储在队列_1中。因此,队列_rbn_p1变为“l”电平,这指示队列_1不为空,并且高速缓存器_rbn_p1变为“l”电平,这指示没有数据准备好可供主机410从其获取。

在阶段#3,可以接收读取命令add2_p0“38h”,并将在平面_0310上执行该读取命令。例如,图5所示的读取命令add2_p0“38h”可以包括平面_0管线读取命令和相应的平面_0地址信息。由于读取命令add0_p0“38h”以及相应的读取过程在平面_0310上被执行,因此将不执行读取命令add2_p0“38h”,而是将其存储在队列_0中。因此,队列_rbn_p0变为“l”电平,这指示队列_0不为空。

在阶段#4,在平面_0310上由读取命令add0_p0“38h”执行的读取过程完成,并且高速缓存器_rbn_p0变为“h”电平,这指示存储在由平面_0地址信息寻址的平面_0310中的数据被高速缓存到高速缓存器_0404中,并且高速缓存器_0404处于就绪状态并且准备好被主机410访问。在一些实施例中,在平面_0310上由读取命令add0_p0“38h”执行的读取过程完成之后,如虚线所示,true_rbn_p0可以变为“h”电平。在其它实施例中,由于分别存储在高速缓存器_0404和高速缓存器_1414中的读取命令add2_p0“38h”和add1_p1“38h”是在读取命令add0_p0“38h”被完全执行之后立即被执行的,因此,在平面_0310上执行的放电过程尚未完成,并且true_rbn_p0可以仍然处于“l”电平。在分别在平面_0和平面_1上执行读取命令add2_p0“38h”和add1_p1“38h”之后,队列_rbn_p0和队列_rbn_p1再次变为“h”电平,这指示它们为空并准备好了存储读取命令。此外,当在平面_1311上执行读取命令add1_p1“38h”时,true-rbn_p1变为“l”电平。因此,尽管读取命令add2_p0“38h”和add1_p1“38h”是异步接收的,但它们可以同步执行。

在阶段#5,可以将队列_0中高速缓存的数据输出到主机410,并且可以接收读取命令add3_p1“38h”。例如,图5所示的读取命令add3_p1“38h”可以包括平面_1管线读取命令和相应的平面_1地址信息。由于读取命令add2_p0“38h”和add1_p1“38h”分别在平面_0310和平面_1上被执行,并相应地进行了读取过程,因此将不执行读取命令add3_p1“38h”,而是将其存储在队列_1中。因此,队列_rbn_p1变为“l”电平,这指示队列_1不为空。

在阶段#6,可以接收读取命令add4_p0“38h”。例如,图5所示的读取命令add4_p0“38h”可以包括平面_0管线读取命令和相应的平面_0地址信息。由于读取命令add2_p0“38h”和add1_p1“38h”分别在平面_0310和平面_1上被执行,并相应地进行了读取过程,因此将不执行读取命令add4_p0“38h”,而是将其存储在队列_0中。因此,队列_rbn_p0变为“l”电平,这指示队列_0不为空。在接收到读取命令add4_p0“38h”之后,由于队列_0将要对存储在由平面_0地址信息寻址的平面_0中的数据进行高速缓存并且不能被主机410访问,因此高速缓存器_rbn_p0也变为“l”电平。

在阶段#7,可以分别完成在平面_0310和平面_1上由读取命令add2_p0“38h”和add1_p1“38h”执行的读取过程,并且高速缓存器_rbn_p0和高速缓存器_rbn_p1可以处于“h”电平,这指示存储在由平面_0地址信息寻址的平面_0310中的数据和存储在由平面_1地址信息寻址的平面_1311中的数据被分别高速缓存到高速缓存器_0404和高速缓存器_1414,并且高速缓存器_0404和高速缓存器_1414二者都处于就绪状态并且准备好了由主机410访问。在完成了由读取命令add2_p0“38h”和add1_p1“38h”执行的读取过程之后,输出并执行分别存储在高速缓存器_0404和高速缓存器_1414中的读取命令add4_p0“38h”和add3_p1“38h”,并且队列_rbn_p0和队列_rbn_p1变成处于“h”电平,这指示队列_0和队列_1为空并且准备好了接收和存储读取命令。尽管读取命令add4_p0“38h”和add3_p1“38h”是异步接收的,但它们也可以同步执行。

在阶段#8,可以将高速缓存在队列_0和队列_1中的数据输出到主机410。图5示出了响应于读取命令add1_p1“38h”而从平面_1311读取并被高速缓存在队列_1中的数据可以在响应于读取命令add2_p0“38h”而从平面_0310读取并被高速缓存在队列_0中的数据之前被输出。在一些实施例中,响应于读取命令add2_p0“38h”而从平面_0310读取并被高速缓存在队列_0中的数据也可以在响应于读取命令add1_p1“38h”而从平面_1311读取并被高速缓存在队列_1中的数据之前被输出。

在阶段#9,可以接收读取命令addx_p0“3dh”,并将在平面_0310上执行该读取命令。例如,图5所示的读取命令addx_p0“3dh”可以包括平面_0管线读取结束命令。在一些实施例中,读取命令addx_p0“3dh”不对应于任何地址信息。由于读取过程分别在平面_0310和平面_1311上由读取命令add4_p0“38h”和add3_p1“38h”执行,因此将不执行读取命令addx_p0“3dh”,而是将其存储在队列_0中。因此,队列_rbn_p0变为“l”电平,其指示队列_0不为空,并且高速缓存器_rbn_p0变为“l”电平,其指示没有数据准备好可供主机410从其获取。

在阶段#10,可以接收读取命令add5_p1“38h”。例如,图5所示的读取命令add5_p1“38h”可以包括平面_1管线读取命令和相应的平面_1地址信息。由于读取命令add4_p0“38h”和add3_p1“38h”分别在平面_0310和平面_1上被执行,并相应地进行读取过程,因此将不执行读取命令add5_p0“38h”,而是将其存储在队列_1中。因此,队列_rbn_p1变为“l”电平,这指示队列_1不为空。在接收到读取命令add5_p1“38h”之后,由于高速缓存器_1414将要对在由读取命令add3_p1“38h”执行的读取过程期间存储在平面_1311中的数据进行高速缓存并且不能被主机410访问,因此高速缓存器_rbn_p1也变为“l”电平。

在阶段#11,可以分别完成由在平面_0和平面_1上由读取命令add4_p0“38h”和add3_p1“38h”执行的读取过程,并且然后高速缓存器_rbn_p0和高速缓存器_rbn_p1变成处于“h”电平,这指示存储在由平面_0地址信息寻址的平面_0310中的数据和存储在由平面_1地址信息寻址的平面_1311中的数据被分别高速缓存到高速缓存器_0404和高速缓存器_1414中,并且高速缓存器_0404和高速缓存器_1414二者都处于就绪状态并且准备好了由主机410访问。然后,可以分别在平面_0310和平面_1311上执行存储在队列_0中的读取命令addx_p0“3dh”和存储在队列_1中的读取命令add5_p1“38h”。因此,队列_rbn_p0和队列_rbn_p1变成处于“h”电平,这指示队列_0和队列_1为空并准备好了接收和存储读取命令。在读取命令addx_p0“3dh”在平面_0上被执行之后,没有读取命令被存储在队列_0中并且将被执行,可以在平面_0310上完全执行放电过程,并且true_rbn_p0此后变为“h”电平。

在阶段#12,将在队列_0和队列_1中高速缓存的数据输出到主机410。图5示出了响应于读取命令add4_p0“38h”从平面_0310读取并被高速缓存在队列_0中的数据可以在响应于读取命令add3_p1“38h”从平面_1311读取并被高速缓存在队列_1中的数据之前被输出。在一些实施例中,响应于读取命令add3_p1“38h”从平面_1311读取并被高速缓存在队列_1中的数据也可以在响应于读取命令add4_p0“38h”从平面_0310读取并被高速缓存在队列_0中的数据之前被输出。

在阶段#13,接收读取命令addx_p1“3dh”,并将在平面_1311上执行该读取命令。例如,图5所示的读取命令addx_p1“3dh”可以包括平面_1管线读取结束命令。在一些实施例中,读取命令addx_p1“3dh”不对应于任何地址信息。由于读取过程仍然正在由读取命令add5_p1“38h”在平面_1311上执行,因此将不执行读取命令addx_p1“3dh”,而是将其存储在队列_1中。因此,队列_rbn_p1变为“l”电平,这指示队列_1不为空,并且高速缓存器_rbn_p1变为“l”电平,这指示队列_1将对响应于读取命令add5_p1“38h”从平面_1读取的数据进行高速缓存,并且没有数据准备好可供主机410从其获取。

在阶段#14,由读取命令add5_p1“38h”执行的读取过程完成,并且高速缓存器_rbn_p1变为“h”电平,这指示存储在由平面_1地址信息寻址的平面_1311中的数据被高速缓存到高速缓存器_1414中,并且高速缓存器_1414处于就绪状态并且准备好被主机410访问。然后,在平面_1311上执行存储在队列_1中的读取命令addx_p1“3dh”。因此,队列_rbn_p1变为“h”电平,这指示队列_1为空并准备接收好了和存储读取命令,并且true_rbn_1也变为“h”电平。

pampi读取方案可用于不同的平面配置。表1列出了多平面闪存400的一些可能配置。多平面闪存400的面积成本向下增加,这表明闪存400采用的pampi处理越多,闪存400的成本越小。

表1

因此,与传统的ampi读取方案相比,根据本公开内容的一些实施例的pampi读取方案可以具有大大降低的电路面积成本。此外,主机410不需要对准针对不同平面的读取请求,这涉及主机410的额外固件复杂性和开销。pampi读取方案还可以大大提高随机读取性能。与ampi读取方案不同,pampi读取方案不会受到不同平面之间的噪声干扰,因为不同平面上的读取过程是在内部同步执行的。

图6示出了根据本公开内容的一些实施例的示例性接口600的功能框图。接口600可以实现伪异步多平面读取过程。在一些实施例中,接口600可以是独立的并且被布置在主机410和ssd400之间。例如,主机410可以是计算机,并且可以同步或异步地发出第一平面管线命令和第二平面管线命令。在其它实施例中,接口600可以安装在ssd400中。例如,ssd400可以是闪存,诸如nand闪存。在一些实施例中,闪存400可以在第一平面310和第二平面311上同步地执行读取过程。接口600可以包括第一存储单元610(例如,第一存储器)、第二存储单元620(例如,第二存储器)以及控制器630。在一实施例中,控制器630可以与i/o和逻辑控制器430不同。在另一个实施例中,控制器630以及i/o和逻辑控制器430可以包括在单个处理芯片中。在一些实施例中,第一存储单元610可以与第二存储单元620不同。在其它实施例中,第一存储单元610和第二存储单元620可以被包括在单个存储单元中。例如,第一存储单元610可以是队列(例如,图6所示的队列_0),第二存储单元620也可以是队列(例如,图6所示的队列_1)。在各个实施例中,第一存储单元610和第二存储单元620中的至少一个可以包括在闪存400中。

第一存储单元610可以被配置为接收和存储从主机410发出的第一平面管线命令,并且将第一平面管线命令输出到闪存400的第一平面(例如,平面_0311)。例如,第一平面管线命令可以包括第一平面管线读取命令(例如,add0_p0“38h”、add2_p0“38h”和add4_p0“38h”)和第一平面管线读取结束命令(例如,addx_p0“3dh”)。在一些实施例中,当第一存储单元610不为空时,第一存储单元610可以不再存储第一平面管线命令。例如,第一存储单元610可以一次存储第一平面管线读取命令或第一平面管线读取结束命令。又例如,第一存储单元610一次只能存储第一平面管线读取命令中的一个。

第二存储单元620可以被配置为接收和存储从主机410发出的第二平面管线命令,并将第二平面管线命令输出到闪存400的第二平面(例如,平面_1311)。例如,第二平面管线命令可以包括第二平面管线读取命令(例如,add1_p1“38h”、add3_p1“38h”以及add5_p1“38h”)和第二平面管线读取结束命令(例如,addx_p1“3dh”)。在一些实施例中,当第二存储单元620不为空时,第二存储单元620可以不再存储第二平面管线命令。例如,第二存储单元620可以一次存储第二平面管线读取命令或第二平面管线读取结束命令。又例如,第二存储单元620一次只能存储第二平面管线读取命令中的一个。

控制器630可以电连接到第一存储单元610和第二存储单元620,并且被配置为当没有读取过程在闪存400的第一平面310和第二平面311上执行时,将第一平面管线命令输出到第一平面310,并且将第二平面管线命令输出到第二平面311。例如,当接收到信号“平面_0上的读取过程”指示没有读取过程在闪存400的平面_0310上执行,以及信号“平面_1上的读取过程”指示没有读取过程在闪存400的平面_1311上没执行时,控制器630可以控制第一存储单元610中存储的第一平面管线命令和第二存储单元620中存储的第二管线命令分别被同步输出到平面_0310和平面_1311上以及在其上执行。在一些实施例中,控制器630可以包括与门633,其可以接收信号“平面_0上的读取过程”和“平面_1上的读取过程”,并且当信号“平面_0上的读取过程”指示没有读取过程在闪存400的平面_0310上执行(例如,信号“平面_0上的读取过程”处于“h”电平)并且信号“平面_1上的读取过程”指示没有读取过程在闪存400的平面_1311上执行(例如,信号“平面_1上的读取过程”处于“h”电平)时,控制存储在第一存储单元610中的第一平面管线命令和存储在第二存储单元620中的第二管线命令分别被同步输出到平面_0310和平面_1311上以及在其上执行。

在一些实施例中,控制器630还可以包括第一开关631和/或第二开关632。例如,第一开关631的一端可以电连接到第一存储单元610,以及另一端电连接到主机410,以接收第一平面管线命令;并且第二开关632的一端可以电连接到第二存储单元620,以及另一端电连接到主机410,以接收第二平面管线命令。在第一存储单元610为空之后第一开关631可以闭合,例如通过接收处于“h”电平的队列_rbn_p0,以及第一平面管线命令,第一平面管线读取命令中的任一个(例如,add0_p0“38h”、add2_p0“38h”和add4_p0“38h”)或第一平面管线读取结束命令(例如,addx_p0“3dh”)可以存储在第一存储单元610中。在第二存储单元620为空之后第二开关632可以闭合,例如通过接收处于“h”电平的队列_rbn_p1,以及第二平面管线命令,第二平面管线读取命令中的任一个(例如,add1_p1“38h”、add3_p1“38h”和add5_p1“38h”)或第二平面管线读取结束命令(例如,addx_p1“3dh”)可以存储在第二存储单元620中。

在根据本公开内容的各种实施例中,接口600的控制器630可以包括被配置为结合软件或不结合软件来执行本文描述的功能和过程的电路。在各种示例中,控制器630可以是数字信号处理器(dsp)、专用集成电路(asic)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、数字增强电路或相当的设备或它们的组合。在根据本公开内容的一些其它实施例中,控制器630可以是中央处理单元(cpu),其被配置为执行程序指令以执行本文描述的各种功能和过程。

接口600可以可选地包括其它组件,例如输入和输出设备,附加或信号处理电路等。因此,接口600可能能够执行其它附加功能,例如执行应用程序,以及处理另外的通信协议。

图7示出了根据本公开内容的一些实施例的示例性方法700的流程图。方法700可以将从主机410同步或异步发出的命令同步输出到多平面闪存400。在各种实施例中,所示方法700的一些步骤可以并行执行或以与所示顺序不同的顺序执行,可以被其它方法步骤代替,或者可以被省略。还可以根据需要执行其它方法步骤。方法700的各方面可以由电子设备来实现,例如在前述附图中示出和针对前述附图描述的接口600。

在步骤710处,第一存储单元610可以接收和存储从主机410发出的第一平面管线命令。例如,第一平面管线命令可以包括第一平面管线读取命令(例如,add0_p0“38h”、add2_p0“38h”和add4_p0“38h”)和第一平面管线读取结束命令(例如,addx_p0“3dh”)。在一些实施例中,第一存储单元610可以一次存储第一平面管线读取命令或第一平面管线读取结束命令。在其它实施例中,第一存储单元610一次只能存储第一平面管线读取命令中的一个。

在步骤720处,第二存储单元620可以接收和存储从主机410发出的第二平面管线命令。例如,第二平面管线命令可以包括第二平面管线读取命令(例如,add1_p1“38h”、add3_p1“38h”以及add5_p1“38h”)和第二平面管线读取结束命令(例如,addx_p1“3dh”)。在一些实施例中,第二存储单元620可以一次存储第二平面管线读取命令或第二平面管线读取结束命令。在其它实施例中,第二存储单元610一次只能存储第二平面管线读取命令中的一个。在图7所示的示例中,步骤710之后是步骤720。在一些实施例中,步骤710可以在步骤720之后,即,在存储第二平面管线命令之后存储第一平面管线命令。在其它实施例中,步骤710和步骤720可以被同步执行,即,将第一和第二平面管线命令分别同步存储在第一存储器和第二存储器中。

在步骤730处,当没有读取过程在闪存400的第一平面310和第二平面311上执行时,可以将存储在第一存储单元610中的第一平面管线命令和存储在第二存储单元620中的第二平面管线命令同步输出到闪存400的第一平面310(即,平面_0310)和第二平面311(即,平面_1311)并在其上执行。例如,第一平面管线命令和第二平面管线命令可以被同步地输出到第一平面310和第二平面311并在其上执行,而不管它们是否由主机410同步或异步发出以及在第一存储单元610和第二存储单元620中同步还是异步接收。在一些实施例中,在第一存储单元610为空之后,可以将第一平面管线命令存储在第一存储单元610中。在其它实施例中,在第二存储单元620为空之后,可以将第二平面管线命令存储在第二存储单元620中。

本文描述的过程和功能可以被实现为一种计算机程序,当由一个或多个处理器执行时,该计算机程序可以使一个或多个处理器执行相应的过程和功能。该计算机程序可以被存储或分布在合适的介质上,例如与其它硬件一起提供或作为其一部分提供的光学存储介质或固态介质。该计算机程序还可以以其它形式分发,例如经由互联网或其它有线或无线电信系统。例如,可以获取计算机程序并将其加载到装置中,包括通过物理介质或分布式系统(包括例如从连接到互联网的服务器)来获取计算机程序。

可以从提供程序指令的计算机可读介质访问计算机程序,该程序指令供计算机或任何指令执行系统使用或与其结合使用。计算机可读介质可以包括存储、传送、传播或传输计算机程序以供指令执行系统、装置或设备使用或与其结合使用的任何装置。该计算机可读介质可以是磁性、光学、电子、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质可以包括计算机可读非暂时性存储介质,例如半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、磁盘和光盘等。计算机可读非暂时性存储介质可以包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。

前述概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开内容的方面。本领域技术人员应该理解,他们可以容易地将本公开内容用作设计或修改其它过程和结构的基础,以实现与本文介绍的实施例相同的目的和/或实现相同的优点。本领域技术人员还应该认识到,这样的等效构造不脱离本公开内容的精神和范围,并且在不脱离本公开内容的精神和范围的情况下,他们可以进行各种改变、替换和变更。

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