CN108735264A - 存储设备的位重新排序 - Google Patents
存储设备的位重新排序 Download PDFInfo
- Publication number
- CN108735264A CN108735264A CN201810224177.8A CN201810224177A CN108735264A CN 108735264 A CN108735264 A CN 108735264A CN 201810224177 A CN201810224177 A CN 201810224177A CN 108735264 A CN108735264 A CN 108735264A
- Authority
- CN
- China
- Prior art keywords
- sequence
- controller
- storage device
- bit sequence
- correspondence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Logic Circuits (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开公开了一种存储设备,包括用于位重新排序的控制器。控制器接收输入位序列,该输入位序列包括具有第一位顺序的多个位。控制器识别存储设备中的非易失性存储元件的物理位置,并基于所述物理位置确定第一位顺序和第二位顺序之间的对应关系。控制器基于该对应关系生成输出位序列,该输出位序列包括具有第二位顺序的多个位。
Description
技术领域
本公开的实施例总体上涉及诸如固态驱动器(SSD)之类的存储设备的位重新排序。
背景技术
与传统硬盘驱动器(HDD)相比,闪存SSD具有的优点在于,SDD具有更高的吞吐量、更低的读/写延迟和更低的功耗。与其他非易失性存储器(NVM)相比,NAND闪存尤其具有低的价格和大的容量。
在SSD系统中,NAND裸芯经由并行数据总线连接到存储器控制器,例如NAND控制器。每个数据总线包括多个总线线路,以将NAND裸芯连接至NAND控制器。总线线路的交叉可能需要额外的垂直互连访问(VIA)和板层,并且因此可能增加SSD系统的制造成本。为了避免总线线路的交叉,需要对在NAND裸芯和NAND控制器之间的数据总线上传输的位进行重新排序。
位重新排序可以在NAND裸芯上执行。位重新排序的一种方法是使用集成在每个NAND裸芯中的交换电路。交换电路可以根据预定的位顺序在NAND裸芯的总线接口处对位进行重新排序,例如,交换电路可以将最高有效位(MSB)重新排序为最低有效位(LSB)。然而,集成在每个NAND裸芯中的交换电路不能以任何任意位顺序对位进行重新排序。
因此,需要对在NAND裸芯和NAND控制器之间的数据总线上传输的位进行任意重新排序。
发明内容
本公开的一个实施例公开了一种存储设备。所述存储设备包括:多个非易失性存储元件,其被配置为处理多个读取和/或写入操作;和控制器,其经由一个或多个总线连接到所述多个非易失性存储元件,其中,所述一个或多个总线被配置为将所述多个非易失性存储元件中的至少两个连接到控制器。所述控制器被配置为:接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器将所述输入位序列写入到所述多个非易失性存储元件中的一个;识别所述存储设备中的非易失性存储元件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;和基于该对应关系生成包括具有第二位顺序的多个位的输出位序列。
本公开的另一实施例公开了一种存储设备。所述存储设备包括:多个处理器件,其被配置为处理多个读取和/或写入操作;和控制器件,其经由一个或多个总线连接到所述多个处理器件,其中,所述一个或多个总线中的每一个被配置为将所述多个处理器件中的至少两个连接到控制器件。所述控制器件被配置为:接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器件将所述输入位序列写入到所述多个处理器件中的一个;识别所述存储设备中的处理器件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;和基于该对应关系生成包括具有第二位顺序的多个位的输出位序列。
本公开的另一实施例公开了一种存储设备。所述存储设备包括:多个非易失性存储元件,其被配置为处理多个读取和/或写入操作;和控制器,其经由一个或多个总线连接到所述多个非易失性存储元件,其中,所述一个或多个总线中的每一个被配置为将所述多个非易失性存储元件中的至少两个连接到控制器。所述控制器被配置为:接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器从所述多个非易失性存储元件中的一个读取输入位序列;识别所述存储设备中的非易失性存储元件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;基于该对应关系生成包括具有第二位顺序的多个位的输出位序列;和将输出位序列传送到控制器中的处理器以供处理。
本公开的另一实施例公开了一种存储设备。所述存储设备包括:多个处理器件,其被配置为处理多个读取和/或写入操作;和控制器件,其经由一个或多个总线连接到所述多个处理器件,其中,所述一个或多个总线中的每一个被配置为将所述多个处理器件中的至少两个连接到控制器件。所述控制器件被配置为:接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器件从所述多个处理器件中的一个读取输入位序列;识别所述存储设备中的处理器件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;基于该对应关系生成包括具有第二位顺序的多个位的输出位序列;和将输出位序列传送到控制器件中的处理器以供处理。
本公开的另一个实施例公开了一种方法。所述方法包括:通过存储设备中的控制器接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器将所述输入位序列写入到存储设备中的多个非易失性存储元件中的一个;识别所述存储设备中的非易失性存储元件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;和基于该对应关系生成包括具有第二位顺序的多个位的输出位序列。
本公开的另一个实施例公开了一种方法。所述方法包括:通过存储设备中的控制器接收包括具有第一位顺序的多个位的输入位序列,其中,所述控制器从存储设备中的多个非易失性存储元件中的一个读取输入位序列;识别所述存储设备中的非易失性存储元件的物理位置;基于所述物理位置确定第一位顺序与第二位顺序之间的对应关系;基于该对应关系生成包括具有第二位顺序的多个位的输出位序列;和将输出位序列传送到控制器中的处理器以供处理。
附图说明
结果,能够详细理解本公开的上述特征的方式,上面简要总结的本公开的更具体的说明可以通过参考实施例来获得,其中一些实施例在附图中示出。然而,要注意的是,附图仅示出了本公开的典型实施例,并且因此不被认为是对其范围的限制,因为本公开可以允许其他等效实施例。其中:
图1示出了根据本文的一个实施例的包括NAND控制器的SSD系统;
图2示出了根据本文的另一实施例的包括NAND控制器的SSD系统;
图3示出了根据本文的一个实施例的查找表;
图4A示出了根据本文的一个实施例的交换电路;
图4B示出了根据本文的另一实施例的交换电路;
图5是示出了一流程图,该流程图示出根据本文的一个实施例的用于位重新排序的方法。
具体实施方式
为了便于理解,在可行的情况下使用相同的附图标记来表示附图中共有的相同元件。预期在一个实施例中公开的元件可以有利地用于其他实施例而无需特定的叙述。
在下文中,参考本公开的实施例。然而,应该理解,本公开不限于具体描述的实施例。相反,无论是否涉及不同的实施例,以下特征和元件的任何组合都被考虑以实施和实践本公开。此外,尽管本公开的实施例可以实现优于其他可行的解决方案和/或现有技术的优点,但是给定实施例是否实现特定优点并不是对本公开的限制。因此,以下方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。同样地,对“本公开”的引用不应被解释为本文公开的任何发明主题的概括,并且不应被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。应该理解的是,虽然将涉及NAND设备,但是本公开同样适用于其他NVM,并且因此不应该限于NAND设备,除非明确声明。
图1示出了根据本文的一个实施例的SSD系统100。如图1所示,SSD系统100包括控制器101和多个裸芯,例如两个裸芯111和112。在一个实施例中,控制器101是NAND控制器,裸芯111和112是NAND裸芯。裸芯111和112经由共享数据总线120连接到控制器101。也就是说,裸芯111和裸芯112在不同的时间段、而不是同时地经由总线120与控制器101通信数据。共享数据总线120包括在裸芯111、112和控制器101之间构建8位信道的8个总线线路。因此,在每个总线事务中(例如,在一时间段内经由总线120进行的一次数据传输),在总线120上从裸芯111、112到控制器101或从控制器101到裸芯111、112传输8位。
在每个总线事务中,裸芯111、112在裸芯111、112的总线接口处使用8个端点(例如I/O焊盘或端子)与控制器101通信8位。例如,如图1所示,裸芯111使用8个端点P30-P37经由总线120在每个总线事务中与控制器101通信8位。类似地,裸芯112使用8个端点P40-P47经由总线120在每个总线事务中与控制器101通信8位。
每个裸芯111、112使用的8个端点中的每一个对应于唯一的位有效值。例如,如图1所示,裸芯111上的P30对应于MSB,如DQ(7)所示,裸芯111上的P37对应于LSB,如DQ(0)所示。P31-P36分别对应于从DQ(6)到DQ(1)的位有效值。也就是说,P30-P37的位顺序是从MSB到LSB(从DQ(7)到DQ(0))。因此,例如,当裸芯111使用P30-P37经由总线120向控制器101发送8位序列“00100111”(具有十进制值39的字节)时(例如,读取操作),P30发送“0”,P31发送“0”,P32发送“1”,P33发送“0”,P34发送“0”,P35发送“1”,P36发送“1”,并且P37发送“1”。类似地,P40-P47中的每一个也具有相应的唯一的位有效值。在一个实施例中,裸芯111、112上的每个端点的位有效值由裸芯111、112的制造商预定或预先配置,其在裸芯111、112制造之后不可改变。
如图1所示,控制器101还使用总线接口处的8个端点P20-P27来与裸芯111、112上的8个端点通信数据。类似地,由控制器101使用的8个端点P20-P27中的每一个对应于唯一的位有效值。在一个实施例中,P20-P27中的每一个的位有效值由SSD系统100的制造商预定或预先配置,其在SSD系统被制造之后不可改变。在一个示例中,控制器101上的P20对应于LSB,并且控制器101上的P27对应于MSB。也就是说,如图1所示,P20-P27的位顺序是从LSB到MSB(从DQ(0)到DQ(7))。在这个示例中,为了在NAND裸芯111和控制器101之间正确地通信数据,一种方法是:使用总线120的总线线路将P20与P37连接,因为P20和P37都对应于LSB;并且使用总线120的另一个总线线路将P27与P30连接,因为P27和P30都对应于MSB。然而,上述方法导致将裸芯111连接到控制器101的总线线路的交叉,这是不期望的。
在本公开的一个实施例中,裸芯111或裸芯112上的8个端点可以以任意方式经由总线120连接到控制器101上的P20-P27,以避免或减少总线线路的交叉。这是通过由控制器101执行的位重新排序来实现的,这将在下面详细描述。
如图1所示,控制器101包括处理器102、存储器103和交换单元104。处理器102可以是能够执行本文描述的功能的任何计算机处理器。存储器103可以包括与物理地址相关联的一个或多个存储块,诸如随机存取存储器(RAM)。交换单元104对在裸芯111、112和控制器101之间的总线120上传输的8位进行重新排序。
如图1所示,在一个实施例中,为了避免总线线路的交叉,P30连接到P20,P31连接到P21,P32连接到P22,P33连接到P23,P34连接到P24,P35连接到P25,P36连接到P26,P37连接到P27。以这种方式,不存在将裸芯111连接到控制器101的总线线路的交叉。如图1所示,在裸芯111和控制器101之间只存在直的总线线路连接。类似地如图1所示,不存在将裸芯112连接到控制器101的总线线路的交叉。
然而,在图1所示的总线线路连接的情况下,在P20-P27处接收的8位不处于供处理器102处理的正确的位顺序。例如,当裸芯111使用P30-P37经由总线120向控制器101发送8位序列“00100111”时,P20接收“0”,P21接收“0”,P22接收“1”,P23接收“0”,P24接收“0”,P25接收“1”,P26接收“1”,P27接收“1”。因为P20-P27的位顺序是从DQ(0)到DQ(7),所以控制器101在P20-P27处接收8位序列“11100100”。因此,如果处理器102直接处理在P20-P27处接收到的8位序列,则处理器102将处理“11100100”(来自P27-P20),而裸芯111实际发送“00100111”(从P30-P37)到控制器101,这导致错误。
在一个实施例中,交换单元104以正确的位顺序将在P20-P27处接收到的8位序列重新排序以供处理器102处理。在一个实施例中,正确的位顺序与裸芯111、112的位顺序相同,例如裸芯111的P30-P37的位顺序。对于位顺序P30-P37,处理器102检查存储器103中的查找表(LUT)105。在一个实施例中,基于SSD系统100中的裸芯111的裸芯地址(即,物理位置),LUT 105存储P30-P37的位顺序和P20-P27的位顺序之间的映射或对应关系。
在一个实施例中,处理器102将裸芯111的裸芯地址作为输入发送到LUT 105,并且LUT 105将P30-P37的位顺序输出到交换单元104。交换单元104根据由LUT 105提供的P30-P37的位顺序对在P20-P27处接收到的8位序列进行重新排序。例如,根据P20-P27的位顺序,在P20-P27接收到的8位序列是“11100100”,交换单元104根据正确的位顺序(即,由LUT 105提供的P30-P37的位顺序)对“11100100”重新排序以生成“00100111”。例如,在P20接收到的LSB位“0”被重新排序为MSB(DQ(7)),而在P27接收到的MSB位“1”被重新排序为LSB(DQ(0))。这样,在重新排序之后,“11100100”被重新排序为“00100111”。
如图1所示,在生成重新排序的8位序列之后,交换单元104使用8个端点P10-P17将重新排序的8位序列发送到处理器102。在一个实施例中,如图1所示,P10-P17的位顺序是预定的,例如从DQ(7)到DQ(0)。因此,交换单元104从P10-P17向处理器102发送“00100111”。
图1仅示出一个实施例。在其他实施例中,P10-P17的位顺序可以从DQ(0)到DQ(7),P20-P27的位顺序可以从DQ(7)到DQ(0),并且P30-P37可以从DQ(0)到DQ(7)。在另一个实施例中,裸芯112经由总线120将8位序列从P40-P47发送到P20-P27。类似于上述,交换单元104对在P20-P27处接收到的8位序列进行重新排序。P40-P47的位顺序可以与P30-P37的位顺序相同或不同。在另一个实施例中,裸芯111或裸芯112的8个端点可以以任意方式连接到控制器101上的P20-P27,以避免或减少总线线路的交叉。
上面的实施例描述了读取操作的位重新排序,例如,8位序列从裸芯111传输到控制器101。在另一个实施例中,8位序列从控制器101传输到裸芯111、112,例如裸芯111,用于写入操作。在该实施例中,8位序列从处理器102传送到P10-P17,交换单元104以正确的位顺序重新排序在P10-P17处接收的8位序列,并使用P20-P27传送重新排序的8位序列到P30-P37,如下面详细描述的。
图2示出了根据本文的一个实施例的SSD系统200。SSD系统200包括控制器201。如图2所示,控制器201经由8个总线,即从BUS0到BUS7,连接到128个裸芯。在一个实施例中,如上所述,8个总线中的每一个构造8位信道。也就是说,图2中的每个总线都包含8个总线线路。
在一个实施例中,128个裸芯被封装在图2中表示为211、212、213和214的四个球栅阵列(BGA)封装中。每个BGA封装包括经由2个总线连接到控制器201的32个裸芯。例如,BGA封装211中的32个裸芯经由BUS0和BUS1连接到控制器201。在一个实施例中,每个BGA封装中的16个裸芯共享相同的总线。例如,BGA封装211的上部部分中的16个裸芯共享BUS0,并且BGA封装211的下部部分中的16个裸芯共享BUS1。在一个实施例中,128个裸芯中的每一个使用其相应的8个端点经由对应的共享总线连接到控制器201,类似于图1中描述的P30-P37和P40-P47。为了便于说明,图2中未示出每个裸芯上的端点。
在一个实施例中,对于每个总线,控制器201使用8个端点以连接到共享总线的16个裸芯中的每一个上的相应8个端点,类似于图1中描述的P20-P27。因此,在一个实施例中,控制器201总共具有用于8个总线的64个端点。为了简化说明,控制器201上的端点未在图2中示出。
在一个实施例中,对于每个总线,控制器201包括相应的LUT 220-227和相应的交换单元230-237。例如,对于BUS0,控制器201包括存储在SSD系统200的存储器中的LUT220和交换单元230。为了简化说明,SSD系统200的存储器未在图2中示出。通过对于每个总线使用LUT和交换单元,共享总线的16个裸芯中的每一个可以以任意方式连接到控制器201,以避免或减少将裸芯连接到控制器201的总线线路的交叉。
在一个实施例中,当16个裸芯中的一个裸芯经由共享总线向控制器201发送8位序列用于读取操作时,控制器201通过使用相应的LUT和交换单元重新排序所接收到的8位序列,类似地如上面图1中所述。例如,当共享BUS0的16个裸芯中的一个裸芯经由任意的总线线路连接向控制器201传送8位序列时。SSD系统200中的处理器(图2中未示出)将裸芯的裸芯地址作为输入发送到LUT 220,并且LUT 220将裸芯的正确位顺序输出到交换单元230。交换单元230重新排序所接收到的8位序列以生成具有正确位顺序的8位序列,并将重新排序的8位序列发送到处理器。
在另一个实施例中,当控制器201经由共享总线将8位序列传送到16个裸芯中的一个以用于写入操作时,控制器201通过使用相应的LUT和交换单元对所传送的8位序列重新排序,以生成具有正确位顺序的8位序列并将重新排序的8位序列发送到裸芯。
图2仅示出一个实施例。在其他实施例中,控制器201可以经由不同数量的总线连接到不同数量的裸芯。在其他实施例中,每个BGA封装可以包括不同数量的裸芯并且裸芯在BGA封装内部布线。在其他实施例中,每个总线由不同数量的裸芯共享。
图3示出了根据本文的一个实施例的LUT 300。在图3中,LUT 300用于一个总线。例如,假定LUT 300用于图1中的总线102。也就是说,LUT 300是图1中的LUT 105。在一个实施例中,LUT 300存储经由总线102连接到控制器101的多个裸芯(例如,裸芯111和112)中的每一个的输入位顺序和输出位顺序之间的对应关系。在一个实施例中,基于裸芯地址,即裸芯在SSD系统100中的物理位置来确定裸芯的输入位顺序和输出位顺序之间的对应关系。位于不同物理位置处的裸芯通过不同的总线连接而连接到控制器101,以避免或减少总线线路的交叉。因此,位于不同物理位置处的裸芯具有不同的输入位顺序和输出位顺序之间的对应关系。
在一个实施例中,LUT 300存储经由总线102连接到控制器101的裸芯中的每一个的输入位顺序和输出位顺序之间的对应关系,以用于读取操作。例如,当裸芯111向控制器101传送8位序列时,处理器102可以例如基于命令和/或地址周期(address phase)中的信息来识别8位序列来自裸芯111并且裸芯111具有地址1。处理器102将地址1发送给LUT300以检索裸芯111的对应关系。如图3所示,对于地址1,输入位顺序是从DQ(0)到DQ(7),表示为DQ(0 1 2 3 4 5 6 7),对应的输出位顺序为从DQ(7)到DQ(0),表示为DQ(7 6 5 4 3 2 1 0)。也就是说,输入位序列中的DQ(0)在输出位序列中被重新排序为DQ(7),输入位序列中的DQ(1)在输出位序列中被重新排序为DQ(6),输入位序列中的DQ(2)在输出位序列中被重新排序为DQ(5),输入位序列中的DQ(3)在输出位序列中被重新排序为DQ(4),输入位序列中的DQ(4)在输出位序列中被重新排序为DQ(3),输入位序列中的DQ(5)在输出位序列中被重新排序为DQ(2),输入位序列中的DQ(6)在输出位序列中被重新排序为DQ(1),和输入位序列中的DQ(7)在输出位序列中被重新排序为DQ(0)。因此,在一个实施例中,该对应关系是输入位序列中的每个位与输出位序列中的每个位之间的位对位的对应关系。
LUT 300将具有地址1的裸芯(即裸芯111)的对应关系提供给交换单元104,以对输入位序列重新排序,以生成正确的输出位序列。例如,裸芯111将8位序列“00100111”从P30-P37传送到控制器101。控制器101在P20-P27处从裸芯111接收8位输入序列“11100100”(在P27处接收到MSB“1”,在P20处接收到LSB“0”)。基于LUT 300中的地址1的对应关系,到处理器102的8位输出序列是“00100111”,这与来自裸芯111的实际传送的8位序列相同。因此,交换单元104向处理器102传送“00100111”(在P10处传送MSB“0”,在P17处传送LSB“1”)。
在另一个实施例中,LUT 300存储经由总线102连接到控制器101的裸芯中的每一个的输入位顺序和输出位顺序之间的对应关系,以用于写入操作。例如,当控制器101从处理器102向裸芯111传送8位序列“00100111”时,P10-P17接收8位输入序列“00100111”(在P10处接收到MSB“0”,并且在P17处接收到LSB“1”)。基于LUT 300中的地址1的对应关系,8位输出序列是“11100100”。因此,P20-P27向P30-P37传送“11100100”(在P27处传送MSB“1”,在P20处传送LSB“0”)。因此,P30-P37接收与来自处理器102的实际传送的8位序列相同的“00100111”。
在LUT 300中,地址2(裸芯112的地址)具有不同的对应关系。如图3所示,对于地址2,输入位顺序是从DQ(0)到DQ(7),表示为DQ(0 1 2 3 4 5 6 7),对应的输出位顺序也为从DQ(0)到DQ(7),表示为DQ(0 1 2 3 4 5 6 7)。如上所述,裸芯112可以使用不同的总线线路连接以连接到控制器101。因此,裸芯112具有与裸芯111不同的对应关系。
对应关系可以是任意的对应关系。例如,如图3所示,对于具有地址3的裸芯,输入位顺序可以为从DQ(0)到DQ(7),表示为DQ(0 1 2 3 4 5 6 7),并且对应的输出位顺序可以是:DQ(3),DQ(4),DQ(7),DQ(5),DQ(1),DQ(2),DQ(0),DQ(6),表示为DQ(3 4 7 5 1 2 0 6)。也就是说,输入位序列中的DQ(0)在输出位序列中被重新排序为DQ(3),并且输入位序列中的DQ(7)在输出位序列中被重新排序为的DQ(6)。
在一个实施例中,当设计SSD系统100的布局时,LUT 300被编程到NAND控制器101的存储器103中。例如,当设计SSD系统100的布局时,用以避免总线线路的交叉的用于每个裸芯的总线线路连接(例如,布线)的方式取决于SSD系统100中的裸芯的物理位置(裸芯地址)。而且,每个裸芯的总线线路连接方式决定了用于裸芯的位重新排序的对应关系。因此,当设计SSD系统100的布局时,用于位重新排序的裸芯地址和对应关系可以被确定并被存储在控制器101的存储器103中以供将来使用。当存储器103被初始化时,LUT 300准备好使用。因此,当NAND控制器101需要执行位重新排序时,控制器101不需要创建LUT 300。
图3仅示出了读取操作或写入操作的一个实施例。在其他实施例中,LUT 300包括分别用于读取操作和写入操作的两个不同的子表。在其他实施例中,LUT 300可以包括多于两个的裸芯的对应关系。例如,如图2所示,LUT 300可以包括经由BUS0连接到控制器201的BGA 211中的16个裸芯的16个对应关系。也就是说,LUT 300是图2中的LUT 220。在其他实施例中,LUT 300可以包括输入位顺序和输出位顺序之间的任何对应关系。
图4A示出了根据本文的一个实施例的用于读取操作的交换电路400。交换电路400包括在交换单元中,例如图1中的交换单元104或图2中的交换单元220。如图4A所示,交换电路400包括8个选择器,例如选择器401和选择器408(为简化说明,其它6个选择器未在图4A中示出)。在一个实施例中,8个选择器中的每一个包括8选1选择器以生成一个输出位。例如,选择器401生成8位输出序列中的DQ(0)(即,LSB)的输出位,并且选择器408生成8位输出序列中的DQ(7)(即,MSB)的输出位。在一个实施例中,交换电路400基于输入到LUT 300的一个或多个裸芯地址对8位输入序列重新排序。
在如下所述的一个示例中,假定交换电路400被包括在交换单元104中以用于裸芯111和控制器101之间的读取操作,如图1中所描述的。如图4A所示,以从DQ(7)到DQ(0)的位顺序将8位输入序列从裸芯111输入到交换电路400中的8个选择器中的每一个。在P20-P27处接收8位输入序列。处理器102可以识别裸芯111具有地址1并将地址1发送到LUT 300。LUT300向8个选择器中的每一个提供地址1的相应的位对位对应关系。例如,如箭头411所示,LUT 300向选择器401提供相应的位对位对应关系。如图3所示,对于地址1,输入8位序列中的输入位DQ(7)对应于输出8位序列中的输出位DQ(0)。因此,选择器401选择8位输入序列中的输入位DQ(7)作为8位输出序列中的输出位DQ(0)。类似地,如箭头418所示,LUT 300向选择器408提供相应的位对位对应关系。选择器408选择8位输入序列中的输入位DQ(0)作为8位输出序列中的输出位DQ(7)。例如,如果在P20-P27处接收到的8位输入序列是“11100100”,则选择器401选择“11100100”中的输入位1(DQ(7))作为8位的输出序列中的输出位DQ(0),并且选择器408选择“11100100”中的输入位0(DQ(0))作为8位输出序列中的输出位DQ(7)。其他6个选择器中的每一个都类似地生成相应的输出位。因此,交换电路400生成8位输出序列“00100111”,并将8位输出序列从P10-P17发送到处理器102以供读取操作。
图4A仅示出一个实施例。在其他实施例中,基于由LUT 300提供的位对位对应关系,交换电路400中的每个选择器可以根据输入位序列中的输入位与输出位序列中的输出位之间的任何任意位对位对应关系来生成输出位,如本领域普通技术人员所理解的那样。
图4B示出了根据本文的一个实施例的用于写入操作的交换电路420。交换电路420也包括在交换单元中,例如图1中的交换单元104或图2中的交换单元220。类似于图4A,交换电路420包括8个选择器,例如选择器421和选择器428,如图4B所示(为简化说明,其它6个选择器未在图4B中示出)。在一个实施例中,8个选择器中的每一个包括8选1选择器以生成一个输出位。例如,选择器421生成8位输出序列中的DQ(7)(即,MSB)的输出位,并且选择器428生成8位输出序列中的DQ(0)(即,LSB)的输出位。在一个实施例中,交换电路420基于输入到LUT 300的一个或多个裸芯地址对8位输入序列重新排序。
在如下所述的一个示例中,假定交换电路420被包括在交换单元104中以用于NAND裸芯111和NAND控制器101之间的写入操作,如图1中所描述的。如图4B所示,以从DQ(0)到DQ(7)的位顺序将8位输入序列从处理器102输入到交换电路420中的8个选择器中的每一个。在P10-P17处接收到8位输入序列。处理器102将NAND裸芯111的地址1发送到LUT300。LUT300向8个选择器中的每一个提供地址1的相应的位对位对应关系。例如,如箭头431所示,LUT 300向选择器421提供相应的位对位对应关系。基于位对位对应关系,选择器421选择8位输入序列中的输入位DQ(0)作为8位输出序列中的输出位DQ(7)。类似地,如箭头438所示,LUT 300向选择器428提供相应的位对位对应关系。选择器428选择8位输入序列中的DQ(7)作为8位输出序列中的输出位DQ(0)。例如,如果在P10-P17处接收的8位输入序列是“01000111”,则选择器421选择“01000111”中的输入位1(DQ(0))作为8位输出序列中的输出位DQ(7)并且选择器428选择“01000111”中的输入位0(DQ(7))作为8位输出序列中的输出位DQ(0)。其他6个选择器中的每一个都类似地生成相应的输出位。交换电路420生成8位输出序列“11100010”,并且将8位输出序列从P20-P27发送到NAND裸芯111用于写入操作。
图4B仅示出一个实施例。在其他实施例中,基于由LUT 300提供的位对位对应关系,交换电路420中的每个选择器可以根据输入位序列中的输入位与输出位序列中的输出位之间的任何任意位对位对应关系来生成输出位,如本领域普通技术人员所理解的那样。
在一个实施例中,对于读取操作,控制器首先将命令和地址周期中的位发送到裸芯,然后从裸芯接收数据周期中的位。当将命令和地址周期中的位发送到裸芯时,控制器使用交换电路420来生成用以发送到裸芯的输出位序列。当从裸芯接收数据周期中的位时,控制器使用交换电路400生成用以发送到控制器中的处理器的输出位序列。因此,对于读取操作,控制器使用交换单元中的交换电路400和交换电路420两者。在另一实施例中,对于写入操作,控制器通过使用交换电路420将命令、地址和数据周期中的位发送到裸芯。
图5是示出了一流程图,该流程图示出根据本文的一个实施例的用于位重新排序的方法500。在框501处,存储设备中的控制器接收输入位序列,该输入位序列包括具有第一位顺序的多个位。例如,SSD系统100中的控制器101从裸芯111接收具有第一位顺序的输入位序列(例如,“11100100”)。在框502处,控制器识别存储设备中的非易失性存储元件的物理位置。例如,控制器101中的处理器102识别出111具有地址1。在框503处,控制器基于物理位置确定第一位顺序和第二位顺序之间的对应关系。例如,控制器101中的LUT 105基于地址1确定第一位顺序和第二位顺序之间的对应关系,并将该对应关系提供给交换单元104。在框504处,控制器基于该对应关系生成输出位序列,该输出位序列包括具有第二位顺序的多个位。例如,交换单元104基于由LUT 105提供的对应关系对输入位序列重新排序,并且生成具有第二位顺序的输出位序列(例如“00100111”)。交换单元104将生成的输出位序列发送到处理器102。
通过使用交换单元和LUT,控制器可以对在裸芯和控制器之间的数据总线上传输的位任意地进行重新排序。因此,可以避免或减少总线线路的交叉,从而节省了SSD系统的制造成本。
虽然前述内容针对本公开的实施例,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和进一步的实施例,并且其范围由随后的权利要求确定。
Claims (28)
1.一种存储设备,包括:
多个非易失性存储元件,其被配置为处理多个读取和/或写入操作;和
控制器,其经由一个或多个总线连接到所述多个非易失性存储元件,其中,所述一个或多个总线中的每一个被配置为将所述多个非易失性存储元件中的至少两个非易失性存储元件连接到所述控制器;
其中,所述控制器被配置为:
接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器将所述输入位序列写入到所述多个非易失性存储元件中的一个非易失性存储元件;
识别所述存储设备中的非易失性存储元件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;和
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位。
2.根据权利要求1所述的存储设备,其中,所述第一位顺序和所述第二位顺序之间的对应关系表示所述输入位序列中的每个位与所述输出位序列中的每个位之间的位对位对应关系。
3.根据权利要求1所述的存储设备,其中,所述控制器进一步被配置为将所述第一位顺序和所述第二位顺序之间的所述对应关系存储在查找表中。
4.根据权利要求1所述的存储设备,其中,从所述控制器接收所述输入位序列,且将所述输出位序列传送到所述非易失性存储元件。
5.一种存储设备,包括:
多个处理器件,其被配置为处理多个读取和/或写入操作;和
控制器件,其经由一个或多个总线连接到所述多个处理器件,其中,所述一个或多个总线中的每一个被配置为将所述多个处理器件中的至少两个处理器件连接到所述控制器件;
其中,所述控制器件被配置为:
接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器件将所述输入位序列写入到所述多个处理器件中的一个处理器件;
识别所述存储设备中的处理器件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;和
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位。
6.根据权利要求5所述的存储设备,其中,所述存储设备包括固态驱动器(SSD)。
7.根据权利要求5所述的存储设备,其中,所述第一位顺序和所述第二位顺序之间的对应关系表示所述输入位序列中的每个位与所述输出位序列中的每个位之间的位对位对应关系。
8.根据权利要求5所述的存储设备,其中,所述控制器件进一步被配置为将所述第一位顺序和所述第二位顺序之间的所述对应关系存储在查找表中。
9.根据权利要求5所述的存储设备,其中,所述第一位顺序和所述第二位顺序之间的所述对应关系包括任意对应关系。
10.根据权利要求5所述的存储设备,其中,从所述控制器件接收所述输入位序列,且将所述输出位序列传送到所述处理器件。
11.一种存储设备,包括:
多个非易失性存储元件,其被配置为处理多个读取和/或写入操作;和
控制器,其经由一个或多个总线连接到所述多个非易失性存储元件,其中,所述一个或多个总线中的每一个被配置为将所述多个非易失性存储元件中的至少两个非易失性存储元件连接到所述控制器;
其中,所述控制器被配置为:
接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器从所述多个非易失性存储元件中的一个非易失性存储元件读取所述输入位序列;
识别所述存储设备中的非易失性存储元件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位;和
将所述输出位序列传送到所述控制器中的处理器以供处理。
12.根据权利要求11所述的存储设备,其中,从所述非易失性存储元件接收所述输入位序列。
13.根据权利要求11所述的存储设备,其中,所述控制器包括一个或多个选择器,以生成所述输出位序列。
14.根据权利要求11所述的存储设备,其中,所述一个或多个总线中的每一个构建所述控制器和所述多个非易失性存储元件之间的8位信道。
15.一种存储设备,包括:
多个处理器件,其被配置为处理多个读取和/或写入操作;和
控制器件,其经由一个或多个总线连接到所述多个处理器件,其中,所述一个或多个总线中的每一个被配置为将所述多个处理器件中的至少两个处理器件连接到所述控制器件;
其中,所述控制器件被配置为:
接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器件从所述多个处理器件中的一个处理器件读取所述输入位序列;
识别所述存储设备中的处理器件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位;和
将所述输出位序列传送到所述控制器件中的处理器以供处理。
16.根据权利要求15所述的存储设备,其中,所述存储设备包括固态驱动器(SSD)。
17.根据权利要求15所述的存储设备,其中,所述第一位顺序和所述第二位顺序之间的对应关系表示所述输入位序列中的每个位与所述输出位序列中的每个位之间的位对位对应关系。
18.根据权利要求15所述的存储设备,其中,所述控制器件进一步被配置为将所述第一位顺序和所述第二位顺序之间的所述对应关系存储在查找表中。
19.根据权利要求15所述的存储设备,其中,所述第一位顺序和所述第二位顺序之间的所述对应关系包括任意对应关系。
20.根据权利要求15所述的存储设备,其中,从所述处理器件接收所述输入位序列。
21.一种方法,包括:
通过存储设备中的控制器接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器将所述输入位序列写入到所述存储设备中的多个非易失性存储元件中的一个非易失性存储元件;
识别所述存储设备中的非易失性存储元件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;和
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位。
22.根据权利要求21所述的方法,其中,所述存储设备包括固态驱动器(SSD)。
23.根据权利要求21所述的方法,其中,所述非易失性存储元件中的每一个包括NAND裸芯。
24.根据权利要求21所述的方法,其中,所述控制器包括NAND控制器。
25.一种方法,包括:
通过存储设备中的控制器接收输入位序列,所述输入位序列包括具有第一位顺序的多个位,其中,所述控制器从所述存储设备中的多个非易失性存储元件中的一个非易失性存储元件读取所述输入位序列;
识别所述存储设备中的非易失性存储元件的物理位置;
基于所述物理位置,确定所述第一位顺序和第二位顺序之间的对应关系;
基于所述对应关系生成输出位序列,该输出位序列包括具有所述第二位顺序的多个位;和
将所述输出位序列传送到所述控制器中的处理器以供处理。
26.根据权利要求25所述的方法,其中,所述第一位顺序和所述第二位顺序之间的所述对应关系包括任意对应关系。
27.根据权利要求25所述的方法,其中,所述多个非易失性存储元件封装在一个或多个球栅阵列(BGA)封装中。
28.根据权利要求25所述的方法,其中,所述控制器经由多个总线连接到所述多个非易失性存储元件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/490,724 | 2017-04-18 | ||
US15/490,724 US10445259B2 (en) | 2017-04-18 | 2017-04-18 | Bit reordering for memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108735264A true CN108735264A (zh) | 2018-11-02 |
Family
ID=63679099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810224177.8A Pending CN108735264A (zh) | 2017-04-18 | 2018-03-19 | 存储设备的位重新排序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10445259B2 (zh) |
CN (1) | CN108735264A (zh) |
DE (1) | DE102018105684A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157278B2 (en) | 2019-05-27 | 2021-10-26 | Texas Instruments Incorporated | Histogram operation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010058542A (ko) * | 1999-12-30 | 2001-07-06 | 박종섭 | 데이터 전송 순서 변환 코딩 장치 및 그 방법 |
US20020199041A1 (en) * | 2001-06-21 | 2002-12-26 | Yamaha Corporation | Data storage with scrambling by crossing parallel bit bus |
CN106055493A (zh) * | 2015-04-14 | 2016-10-26 | 爱思开海力士有限公司 | 存储系统、存储模块及其操作方法 |
US20160371211A1 (en) * | 2015-06-16 | 2016-12-22 | Apple Inc. | Bus-bit-order ascertainment |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028186B2 (en) * | 2006-10-23 | 2011-09-27 | Violin Memory, Inc. | Skew management in an interconnection system |
US7864045B2 (en) * | 2008-09-12 | 2011-01-04 | Roundtrip Llc | Locator inventory system |
JP2014082245A (ja) * | 2012-10-15 | 2014-05-08 | J Devices:Kk | 半導体記憶装置及びその製造方法 |
WO2015138737A1 (en) * | 2014-03-12 | 2015-09-17 | Brass Roots Technologies, LLC | Bit plane memory system |
US10163467B2 (en) * | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
-
2017
- 2017-04-18 US US15/490,724 patent/US10445259B2/en active Active
-
2018
- 2018-03-12 DE DE102018105684.2A patent/DE102018105684A1/de active Granted
- 2018-03-19 CN CN201810224177.8A patent/CN108735264A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010058542A (ko) * | 1999-12-30 | 2001-07-06 | 박종섭 | 데이터 전송 순서 변환 코딩 장치 및 그 방법 |
US20020199041A1 (en) * | 2001-06-21 | 2002-12-26 | Yamaha Corporation | Data storage with scrambling by crossing parallel bit bus |
CN106055493A (zh) * | 2015-04-14 | 2016-10-26 | 爱思开海力士有限公司 | 存储系统、存储模块及其操作方法 |
US20160371211A1 (en) * | 2015-06-16 | 2016-12-22 | Apple Inc. | Bus-bit-order ascertainment |
Also Published As
Publication number | Publication date |
---|---|
US20180300266A1 (en) | 2018-10-18 |
US10445259B2 (en) | 2019-10-15 |
DE102018105684A1 (de) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104704563B (zh) | 具有双模式引脚的闪存存储器控制器 | |
US7558096B2 (en) | Stacked memory | |
KR101513771B1 (ko) | 스택 디바이스 리매핑 및 수리 | |
US8380943B2 (en) | Variable-width memory module and buffer | |
US11816055B2 (en) | Storage device performing peer-to-peer communication with external device without intervention of host | |
KR101457302B1 (ko) | 스토리지 장치 | |
KR20170102418A (ko) | 재구성 가능한 계산 로직을 포함하는 3차원-적층 메모리 | |
WO2018125518A2 (en) | Computer program product, system, and method to allow a host and a storage device to communicate using different fabric, transport, and direct memory access protocols | |
US8917110B2 (en) | Semiconductor package including multiple chips and memory system having the same | |
US7715269B2 (en) | Semiconductor memory device and semiconductor device comprising the same | |
CN102622192A (zh) | 一种弱相关多端口并行存储控制器 | |
TW201211775A (en) | Electronic device, a controller for accessing a plurality of chips via at least one bus and method for accessing a plurality of chips via at least one bus | |
CN114385240A (zh) | 组织可编程原子单元指令存储器的方法 | |
CN114385241A (zh) | 完成可编程原子事务的方法 | |
US8321649B2 (en) | Memory controller address and data pin multiplexing | |
CN108139989A (zh) | 配备有存储器中的处理和窄访问端口的计算机设备 | |
CN108735264A (zh) | 存储设备的位重新排序 | |
CN114049905A (zh) | 非易失三维存储单元、存储方法、芯片组件和电子设备 | |
CN114141279A (zh) | 存储器拓扑 | |
JP5549897B2 (ja) | マルチポート・メモリおよびその動作 | |
US11658922B2 (en) | Optional path ordering in packet-based network | |
KR102527832B1 (ko) | 호스트의 개입 없이 외부 장치와 피어-투-피어 통신을 수행하는 스토리지 장치 | |
CN216450386U (zh) | 非易失三维存储单元、芯片组件和电子设备 | |
CN216450387U (zh) | 三维存储单元、三维存储芯片组件和电子设备 | |
CN110837481A (zh) | 存储器控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |