Electro-mirroring implemented by NAND flash memory controller
By implementing electron mirroring technology in NAND flash memory controller, the problem of signal integrity reduction caused by flip topology of NAND flash memory devices is solved, and a higher NAND interface speed and quality are achieved.
Patent Information
- Application Number
- CN202411513305.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-03
- Filing Date
- 2020-11-30
- Publication Date
- 2025-02-25
- Estimated Expiration
- 2040-11-30
AI Technical Summary
In the design of high-density SSDs, the flip topology of NAND flash memory devices leads to a decrease in signal integrity, especially due to the long pin trace length, which leads to a degradation of NAND performance.
By implementing the electromagnetic imaging technology in the NAND flash controller, the firmware configuration register bits are used to determine whether each NAND device enables electromagnetic imaging and reverses the data bit order before and after data transmission to match the inverted data pin order.
This technology significantly improves the quality of PCB layout, shortens the pin trace length, improves the signal integrity and speed of the NAND interface, and avoids performance degradation caused by excessive traces.
Smart Images

Figure CN119512452A_ABST
Abstract
Description
This application is a divisional application of the invention application with application date of November 30, 2020, application number 202011378509.1, and invention name “Electronic mirroring implemented by NAND flash memory controller”. Technical Field
[0001] The present disclosure relates to the architecture and implementation of a NAND flash memory controller, and more particularly to a multi-branch multi-load NAND interface topology in which multiple NAND flash memory devices share a common data bus with the NAND controller. Background Art
[0002] Modern computing systems have been driven in part by the advent of solid-state drives (SSDs), which offer higher speed and latency performance than traditional hard disks. Unlike hard disks, which rely on magnetism to store data, SSDs use NAND flash memory devices to store data. NAND flash devices are a family of integrated circuits manufactured using advanced process and assembly techniques that enable multiple layers of memory cells to be stacked vertically into a smaller package, enabling high storage capacity.
[0003] A typical SSD consists of a controller and multiple NAND flash devices placed on and connected to a printed circuit board (PCB) and has standard form factors for various consumer or enterprise applications. The interface between the controller and the NAND flash devices is grouped into channels, and modern controllers typically have 4, 8, or 16 NAND channels. To achieve higher storage capacity, SSDs need to integrate more NAND flash devices into the PCB, resulting in multiple NAND devices sharing one channel. As a result, multi-load or multi-point PCB topologies are often used for the design of high-density SSDs. Summary of the invention
[0004] A typical high-capacity SSD multi-load PCB, whether in an M.2 or U.2 form factor, typically employs a so-called clamshell topology for NAND flash devices. In this topology, the NAND devices on one side of the PCB can completely overlap the NAND devices on the other side. Because the pins of the NAND device may be located on one side of the NAND device, one of the two NAND devices can be flipped and placed. The pin order of the flipped NAND device will completely mirror the pin order of the non-flipped NAND device. For example, in terms of zero-based indexing of the eight-bit data bus of DQ[0…7], this means that DQ[0] of the flipped NAND device will be aligned with DQ[7] of the non-flipped NAND, DQ[1] of the flipped NAND device will be aligned with DQ[6] of the non-flipped NAND device, and so on.
[0005] However, this setup brings challenges to PCB layout and signal integrity. For example, the same DQ pins of the flipped NAND device and the non-flipped NAND device will always be in mirror-symmetric positions relative to the centerline of the NAND device. That is, for example, DQ[0] of the flipped NAND device and DQ[0] of the non-flipped NAND device will be on opposite sides of the symmetric position relative to the centerline of the NAND device. DQ[1] of the flipped NAND device and DQ[1] of the non-flipped NAND device will be on opposite sides of the symmetric position relative to the centerline of the NAND device, and so on. As a result, if two NAND devices arranged in a flip topology share a channel, the same two DQ pins (e.g., DQ[0] of the flipped NAND device and DQ[0] of the non-flipped NAND device) are normally connected by multiple vias placed along the centerline of the NAND device, and there will be two relatively long traces from the vias to the pins. These trace lengths are typically in the range of 300-mil to 500-mil. On the other hand, the signal integrity specification for high-speed NAND interfaces requires that these trace lengths be as short as possible, with a maximum length of less than 200-mil. Having such long trace lengths often results in NAND performance degradation by one to two speed grades, which is especially challenging for high-capacitance NAND devices with heavy capacitive loading.
[0006] One approach to addressing the signal integrity degradation issue may be to have two sets of pin maps for the same NAND device: a regular pin map and an inverted pin map. The inverted pin map may have an inverted data pin order. That is, the DQ[7] data pin in the inverted pin map may be set at the location of the DQ[0] data pin in the regular pin map, the DQ[6] data pin in the inverted pin map may be set at the location of the DQ[1] data pin in the regular pin map, and so on. Thus, a NAND device with a regular pin map may be matched with a NAND device with an inverted pin map, and the data pins of the two NAND devices may be matched and mirrored on both sides of the PCB. This will allow the via to be set next to the pin, and a very short trace of about 20-mil length may be routed from the via to the data pin. This solution will greatly improve the PCB layout quality and address the signal integrity degradation issue mentioned above to help enable the system to reach higher NAND interface speeds. This technique of inverting or mirroring the NAND data pin order may be referred to as electrical mirroring.
[0007] Existing solutions use a dedicated electrical mirroring command sent from the controller to the NAND flash device immediately after the device is initialized. The NAND device receives this command and then configures itself into mirroring mode, where the DQ pins are inverted from the regular pin map. That is, pin DQ0 is now configured as DQ7 inside the NAND device, DQ1 becomes DQ6, and so on. However, the NAND device must be configured to support this electrical mirroring feature.
[0008] Furthermore, the electrical mirror configuration command has zero fault tolerance. This message must be sent immediately after initialization. Since it is sent before any device training and commissioning occurs, the chances of error and failure are very high. Once it fails, because the NAND device does not have any RESET mechanism, the entire NAND device will be inaccessible until the next power cycle. And, no client or enterprise system user wants to cycle the power. In fact, this electrical mirroring feature is usually avoided due to the high failure rate.
[0009] Therefore, a more flexible and powerful electrical mirroring technology is needed in the art. New electrical mirroring technology can be developed and implemented in a NAND flash memory controller. In various embodiments, the NAND device that needs to be mirrored connects its data pins to the data pins of the controller in an inverted order. The controller can use firmware to determine whether electrical mirroring is enabled or disabled for each individual NAND device, and can use firmware to configure a set of registers having bits corresponding to each individual NAND device set by the firmware during the configuration process (e.g., power-on initialization). Once electrical mirroring is enabled for the NAND device, the controller can reverse the order of the data bits before sending the data to the NAND device with the inverted data pins, and can also reverse the data received from the NAND device with the inverted data pins.
[0010] In an exemplary embodiment, a method is provided that may include determining a system topology of a nonvolatile storage system and which targets are located in mirrored nonvolatile storage devices, and setting corresponding register bits in a storage controller for all targets in all mirrored nonvolatile storage devices.
[0011] In another exemplary embodiment, a nonvolatile storage system is provided. The nonvolatile storage system may include a plurality of nonvolatile storage devices and a storage controller. The storage controller may be configured to perform an electronic mirror configuration process, the electronic mirror configuration process including: determining a system topology of the nonvolatile storage system and which targets are located in the mirrored nonvolatile storage devices, and setting corresponding register bits in the storage controller for all targets in all the mirrored nonvolatile storage devices in the plurality of nonvolatile storage devices.
[0012] In yet another exemplary embodiment, a non-transitory machine-readable medium is provided. The non-volatile machine-readable medium may have computer instructions that, when executed by a hardware processor, may cause the hardware processor to perform determining a system topology of a non-volatile storage system and which targets are located in mirrored non-volatile storage devices, and setting corresponding register bits in a storage controller for all targets in all mirrored non-volatile storage devices. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] Figure 1 A nonvolatile storage system according to an embodiment of the present disclosure is schematically shown.
[0014] Figure 2 The figure schematically shows a mirroring configuration of two non-volatile storage devices according to an embodiment of the present disclosure.
[0015] Figure 3 The details of the mirror configuration of two non-volatile storage devices according to one embodiment of the present disclosure are schematically shown.
[0016] Figure 4 A 2-channel non-volatile storage system according to an embodiment of the present disclosure is schematically shown.
[0017] Figure 5 The diagram schematically shows read and write signaling for a 2-channel non-volatile storage system according to one embodiment of the present disclosure.
[0018] Figure 6 It is a flowchart of the electronic image configuration process in one embodiment of the present disclosure.
[0019] Figure 7 The present invention is a flowchart of a process of writing operations to a mirrored NAND device according to one embodiment of the present disclosure.
[0020] Figure 8 is a flowchart of a process of reading operations from a mirrored NAND device according to one embodiment of the present disclosure. DETAILED DESCRIPTION
[0021] Now, specific embodiments according to the present application will be described in detail with reference to the accompanying drawings. For consistency, the same elements in various figures are represented by the same reference numerals.
[0022] The present disclosure provides a system and method for performing electrical mirroring by a storage controller. In various embodiments, a nonvolatile storage device in a nonvolatile storage system such as an SSD can have its data pins connected to the data pins of a storage controller in an inverted order. The controller can allow the firmware to determine whether electrical mirroring is enabled or disabled for each individual nonvolatile storage device, and implement a set of registers (e.g., power-on initialization) using bits corresponding to each individual nonvolatile storage device that the firmware will set during the configuration process. Once electrical mirroring is enabled for the nonvolatile storage device, the controller can reverse the order of the data bits before sending them to the nonvolatile storage device using the inverted data pins, and can also reverse the order of the data bits received from the nonvolatile storage device with the inverted data pins.
[0023] As used herein, a non-volatile memory device may be a computer storage device that can retain stored information after power is removed and can retrieve the stored information after power is restored (turned off and back on). Non-volatile memory devices may include NAND flash memory, NOR flash memory, magnetoresistive random access memory (MRAM), resistive random access memory (RRAM), phase change random access memory (PCRAM), Nano-RAM, etc. NAND flash memory may be used as an example to demonstrate the electrical mirroring technology implemented by the controller. However, other types of non-volatile memory devices may be used to implement the technology according to various embodiments of the present disclosure.
[0024] Figure 1 A nonvolatile storage system 100 according to one embodiment of the present disclosure is schematically shown. The nonvolatile storage system 100 may include a nonvolatile storage controller 102 and a plurality of nonvolatile memories (NVMs) 104. When the nonvolatile storage system 100 is coupled to a host, the nonvolatile storage system 100 may provide data storage and / or access to stored data to the host. The plurality of NVMs 104 may be, for example, NAND devices. In some embodiments, a NAND device may include a NAND target that may be controlled by a chip enable (CE) signal. In some other embodiments, a NAND device may include a plurality of NAND targets (e.g., two targets), each of which may have its own CE signal. As used herein, a storage target in an NVM storage device may be a unit of a storage device accessed by a chip enable signal, and may be referred to simply as a target. The plurality of NVMs 104 may be connected to the nonvolatile storage controller 102 via a plurality of channels, wherein each target is connected to a channel, and a channel is shared by a plurality of targets.
[0025] At least two of the plurality of NVMs 104 may be placed in a mirror configuration, wherein one of the two NVMs is on one side of the PCB and the other of the two NVMs is at the same location of the PCB but on the opposite side. The data pins of one of the two NVMs in the mirror configuration may be connected to the data bus of the channel in a regular order, while the data pins of the other NVM in the mirror configuration may be connected to the data bus of the channel in an inverted order. As used herein, when the data pins of the NVMs are connected to the data bus in an inverted order, the NVMs may be referred to as being connected in an inverted order, and such an inverted connected NVM may also be referred to as a flipped NVM, a mirrored NVM, or an NVM in a mirror mode. In addition, an NVM connected in a regular data bit order may be referred to as a non-flipped NVM or a non-mirrored NVM.
[0026] The non-volatile storage controller 102 may include a processor 106, a non-volatile computer-readable storage medium 108, and a plurality of registers 110. The processor 106 may be a computer processor, such as but not limited to a microprocessor or a microcontroller. In some embodiments, each of the plurality of registers 110 may have a plurality of bits, so that each target in the plurality of NVMs 104 may have a corresponding bit in the plurality of registers 110. The plurality of registers 110 may be configured to indicate which target in the plurality of NVMs 104 may be connected in reverse order. In at least one embodiment, some or all of the processor 106, the storage medium 108, and the registers 110 may be integrated in one integrated circuit (IC) chip.
[0027] In one embodiment, each register in the plurality of registers 110 may be assigned to a channel (e.g., one register per channel), and each register bit may be assigned to a target of a NVM device of the channel (e.g., one bit per CE). In an example implementation, the register may be referred to as DQ_MIRROR_EN, as shown in Table 1 below, where a bit may be set (e.g., to 1) to enable an electrical mirroring mode for a corresponding NAND target. Table 1 Register definition of DQ_MIRROR_EN
[0028] In the example of Table 1, the register may be 16 bits wide. Each bit corresponds to a NAND target, so a 16-bit register may support up to 16 targets per channel. The register bits may be set based on the system topology. Once the DQ_MIRROR_EN register bit is set to 1, the controller 102 may be notified that the corresponding NAND device (e.g., the NAND device containing the corresponding target) has data pins connected in reverse order, so the controller may need to reverse the data bit order internally before sending data or after receiving data.
[0029] It should be noted that this example uses a register bit set to one (1) to indicate that the corresponding NVM targets can be connected in reverse order, but in some embodiments, a register bit set to zero (0) can be used to indicate that the corresponding NVM targets are connected in reverse order. In addition, it should be noted that the bit width of the register can be different compared to the data bus. In the example shown above, the data bus can have an 8-bit width, but the register can have a 16-bit width.
[0030] In some embodiments, register bits of the plurality of registers 110 corresponding to the inverted connected NVMs of the plurality of NVMs 104 may be set during an electrical mirror configuration process. For example, the electrical mirror configuration process may be part of an initialization process of the non-volatile storage system 100 that is performed when the non-volatile storage system 100 is powered on or reset. During the electrical mirror configuration process, the processor 106 may execute computer instructions (e.g., firmware) stored in the non-transitory computer-readable storage medium 108 to determine a system topology and set register bits based on the determined system topology. In some embodiments, the non-transitory computer-readable storage medium 108 may be a read-only memory (e.g., an erasable programmable read-only memory or other suitable ROM) typically used to store firmware, which may be low-level software instructions that, when executed by the processor 106, enable the processor 106 to directly access registers of the controller to configure, control, and program the behavior of the controller and the system.
[0031] In one embodiment, the processor 106 may execute computer instructions stored in the non-transitory computer-readable storage medium 108 to determine which NVMs of the plurality of NVMs may be connected in reverse order and set bits corresponding to the targets in the NVMs connected in reverse order in the plurality of registers 110. For example, the firmware may be programmed to designate one side as the regular order connection side (e.g., the top side) and the other side as the reverse order connection side (e.g., the bottom side), and the processor 106 may determine which NVMs of the plurality of NVMs 104 may be located on the regular order connection side and which NVMs of the plurality of NVMs 104 may be located on the reverse order connection side.
[0032] During operation of the nonvolatile storage system 100, the nonvolatile storage controller 102 may be configured to reverse the data bit order before sending data to a reversely connected target and after receiving data from a reversely connected target. In one embodiment, the processor 106 may execute software instructions to check the register 110 to determine whether the target is reversely connected and perform a data reversal operation if necessary. If the NAND target is connected in a conventional order, data may be sent to and received from the nonvolatile storage controller 102 without any data reversal operation.
[0033] If the NAND target is connected in reverse order (e.g., the electrical mirror register bit is enabled), for a write operation, the non-volatile storage controller 102 can reverse the data bit order from DQ[7:0] to DQ[0:7] before sending the data to the data bus. That is, the non-volatile storage controller 102 can swap data bits DQ[0] and DQ[7], swap data bits DQ[1] and DQ[6], and so on for all data bits. The NAND device can receive data in the original order of DQ[7:0]. That is, because the data pins of the NAND device are connected to the data bus in a reversed order, the data pin DQ[0] of the NAND device can receive the data bit of DQ[0] in the non-volatile storage controller before the inversion operation, the data pin DQ[1] of the NAND device can receive the data bit of DQ[1] in the non-volatile storage controller 102 before the inversion operation, and so on.
[0034] For a read operation performed with a mirrored NAND device, the non-volatile storage controller 102 may receive data of DQ[7:0] in a reversed order as DQ[0:7]. The non-volatile storage controller 102 may determine that the received data is in a reversed data bit order by checking the corresponding register bits in the register 110, and then perform a data bit order reversal to restore the data in the original order DQ[7:0].
[0035] Figure 2 Schematically illustrates two non-volatile storage devices 204 and 206 in a mirror configuration in one embodiment according to the present disclosure. The two non-volatile storage devices 204 and 206 can be attached to the same position of the substrate or base 202 but on two opposite sides. That is, the two non-volatile storage devices 204 and 206 can overlap each other in a clamshell topology. The substrate 202 can be a printed circuit board (PCB) or other suitable substrate. The two non-volatile storage devices 204 and 206 can be two of the multiple NVMs 104, and the substrate 202 can be a PCB in the non-volatile storage system 100.
[0036] Figure 3 Schematically illustrates details of two non-volatile storage devices 204 and 206 in a mirrored configuration according to one embodiment of the present disclosure. Figure 3 In the example of , the data bus of the channel can be 8 bits. However, in other embodiments, the data bus of the channel can be 16 bits, 32 bits, or other suitable number of bits. The non-volatile memory device 204 can be located on the top side of the PCB 202 and have data pins DQ[0] 302, DQ[1] 304, DQ[2] 306, DQ[3] 308, DQ[4] 310, DQ[5] 312, DQ[6] 314, and DQ[7] 316. The data pins DQ[0] 302, DQ[1] 304, DQ[2] 306, DQ[3] 308, DQ[4] 310, DQ[5] 312, DQ[6] 314, and DQ[7] 316 can be below the non-volatile memory device 204 and are shown in dotted lines. The non-volatile memory device 206 may be located on the bottom side of the PCB 202 and have data pins DQ[0] 318, DQ[1] 320, DQ[2] 324, DQ[3] 326, DQ[4] 328, DQ[5] 330, DQ[6] 332, and DQ[7] 334. The non-volatile memory device 206 and its data pins DQ[0] 318, DQ[1] 320, DQ[2] 324, DQ[3] 326, DQ[4] 328, DQ[5] 330, DQ[6] 332, and DQ[7] 334 may also be shown with dashed lines.
[0037] exist Figure 3In the mirror configuration, DQ[0]302 of the nonvolatile storage device 204 can be in a mirror position of DQ[7]334 of the nonvolatile storage device 206, DQ[1]304 of the nonvolatile storage device 204 can be in a mirror position of DQ[6]332 of the nonvolatile storage device 206, DQ[2]306 of the nonvolatile storage device 204 can be in a mirror position of DQ[5]330 of the nonvolatile storage device 206, and DQ[3]308 of the nonvolatile storage device 204 can be in a mirror position of DQ[4]328 of the nonvolatile storage device 206. Like positions, DQ[4] 310 of the nonvolatile memory device 204 may be in a mirror position of DQ[3] 326 of the nonvolatile memory device 206, DQ[5] 312 of the nonvolatile memory device 204 may be in a mirror position of DQ[2] 324 of the nonvolatile memory device 206, DQ[6] 314 of the nonvolatile memory device 204 may be in a mirror position of DQ[1] 320 of the nonvolatile memory device 206, and DQ[7] 316 of the nonvolatile memory device 204 may be in a mirror position of DQ[0] 318 of the nonvolatile memory device 206. As used herein, mirror positions may refer to the same position but opposite sides of a PCB.
[0038] like Figure 3 As shown, DQ[0] 302 of nonvolatile memory device 204 can be connected to via 336 via trace 340, and DQ[7] 334 of nonvolatile memory device 206 can be connected to via 336 via trace 342. Via 336 can be connected to trace 348 of DQ[0] of the data bus of the channel. DQ[7] 316 of nonvolatile memory device 204 can be connected to via 338 via trace 344, and DQ[0] 318 of nonvolatile memory device 206 can be connected to via 338 via trace 346. Via 338 can be connected to trace 350 of DQ[7] of the data bus of the channel. Because each pair of data pins connected by vias can be in mirrored positions, the traces connecting the data pins to the vias (e.g., traces 340, 342, 344, and 346) can be short. This can allow for high-quality PCB layout and higher-speed NAND interfaces. Data connections can be made at Figure 3 202. It should be noted that for simplicity, the Figure 3 Other data connections (e.g., vias and traces for other data pins) can be omitted.
[0039] Figure 4A 2-channel non-volatile storage system 400 in one embodiment according to the present disclosure is schematically shown. The 2-channel non-volatile storage system 400 may include a NAND controller 402, a first NAND device 404.1, and a second NAND device 404.2. The first NAND device 404.1 and the second NAND device 404.2 may be in a mirror configuration. For example, the first NAND device 404.1 may be on the top side of a PCB, and the second NAND device 404.2 may be on the bottom side of the PCB. The 2-channel non-volatile storage system 400 may be an embodiment of the non-volatile storage system 100.
[0040] The first NAND device 404.1 may include two NAND targets: NAND target 406.1 and NAND target 406.2. The second NAND device 404.2 may also include two NAND targets: NAND target 406.3 and NAND target 406.4. The NAND target 406.1 of the first NAND device 404.1 and the NAND target 406.3 of the second NAND device 404.2 may be connected to the first channel 410.1. The NAND target 406.2 of the first NAND device 404.1 and the NAND target 406.4 of the second NAND device 404.2 may be connected to the second channel 410.2. The NAND target 406.1 may be selected for data operation by a CE signal on a CE signal line 408.1. The NAND target 406.2 may be selected for data operation by a CE signal on a CE signal line 408.2. The NAND target 406.3 may be selected for data operation by a CE signal on a CE signal line 408.3. NAND target 406.4 may be selected for data operations by a CE signal on CE signal line 408.4. In one embodiment, NAND device 404.2 may be a mirror device. That is, the data pins of NAND device 404.2 may be connected to the data bus for channels 410.1 and 410.2 in an inverted order.
[0041] It should be noted that each channel can have its own data bus. In some embodiments, the NAND memory device may have two sets of data pins for two channels, and the two sets of data pins may be independent of each other. Figure 4In the example of , the NAND memory device can have two targets, so each target in one device can be coupled to one channel. In some other embodiments, the NAND memory device can have more than two targets, and some targets can share a set of data pins for the data bus. For example, if the device has 4 targets, each 2 targets can share a set of data pins for the data bus of the channel. If the device has 8 targets, each 4 targets can share a set of data pins for the data bus of the channel. However, no matter how many targets there are in the NAND memory device, if the NAND memory device is located on one side of the PCB where the data pins of the NAND memory device need to be connected in a reversed order, then all targets in the NAND memory device can have corresponding register bits set in the controller to indicate that they are connected in reverse order.
[0042] In one embodiment, the NAND controller 402 may include two electrical mirror registers: one for channel 410.1 and another for channel 410.2. In the electrical mirror register for channel 410.1, a bit corresponding to the NAND target 406.3 may be set during the electrical mirror configuration process. Additionally, in the electrical mirror register for channel 410.2, a bit corresponding to the NAND target 406.4 may be set during the electrical mirror configuration process. For write and read operations, the NAND controller 402 may check the electrical mirror register to determine whether the NAND target is an inverted connection and whether a data bit order inversion operation is necessary.
[0043] Figure 5 Schematically shows a method for Figure 4 4. The 2-channel non-volatile storage system 400 of FIG. 4 may be described with reference to FIG. ...
[0044] Signal line 504 may represent data in NAND controller 402. In blocks 524, 526, 528, and 530, the data in NAND controller 402 is all in regular bit order (eg, DQ[7:0]).
[0045] Signal line 506 may represent data on a data bus. In block 532, the data on the data bus may be in normal data bit order because the cycle type is a write operation cycle of a normal data bit order NAND target. In block 534, the data on the data cycle may be in an inverted data bit order (e.g., DQ[0:7]) because the cycle type is a write operation cycle of a NAND target in a mirrored NAND device. In block 536, the data on the data bus may be in normal data bit order because the cycle type is a read operation cycle of a normal data bit order NAND target. In block 538, the data on the data bus may be in an inverted data bit order because the cycle type is a read operation cycle of a NAND target in a mirrored NAND device.
[0046] Signal line 508 may represent data on NAND device 404.1 and signal line 510 may represent data on NAND device 404.2. In blocks 540 and 542, the data in NAND device 404.1 may be in normal data bit order. Because NAND controller 402 may reverse the data bit order before sending data to the mirrored NAND device and after receiving data from the mirrored NAND device, in blocks 544 and 546, the data in NAND device 404.2 may also be in normal data bit order. Signal line 512 may represent a CE signal line (e.g., CE signal line 408.1 or CE signal line 408.2) for NAND device 404.1 and illustrates that the CE signal may be set (e.g., pulled down) in signals 548 (e.g., writing to a normal data bit order NAND target) and 550 (e.g., reading from a normal data bit order NAND target). Signal line 514 may represent a CE signal line for NAND device 404.2 (e.g., CE signal line 408.3 or CE signal line 408.4), and illustrates that the CE signal may be set (e.g., pulled down) in signals 552 (e.g., writing to a NAND target in a mirrored NAND device) and 554 (e.g., reading from a NAND target in a mirrored NAND device).
[0047] like Figure 5 As shown, during a write operation to the NAND device 404.2 (e.g., a CE signal set on the signal line 408.3 or the signal line 408.4), the NAND controller 402 can convert the data bit order from the normal data bit order (e.g., DQ[7:0]) to the inverted data bit order (e.g., DQ[0:7]) before sending the data to the data bus. Because the order can be inverted again by the data pins connected to the data bus, the NAND device 404.2 can receive the data in the normal data bit order.
[0048] For a read operation from NAND device 404.2 (e.g., CE signal set on signal line 408.3 or signal line 408.4), controller 402 may receive data on the data bus in an inverted order (e.g., DQ[0:7]). By determining that electrical mirroring is enabled, controller 402 may perform another data bit order flip to restore the original data bit order DQ[7:0].
[0049] In read and write operations to a mirrored device (e.g., NAND device 404.2), the data on the NAND channel data bus may always have a data bit order that is reversed from the data bit order of the data inside the NAND controller 402. The NAND controller 402 may manage the data bit order by performing a round of data inversion on the electrically mirrored devices. The NAND device 404.1 may be connected to the data bus in a matching order from DQ[7:0] to DQ[7:0], and electrical mirroring may be disabled for the NAND device 404.1. Therefore, for the NAND device 404.1, the data on the data bus may always have the same order as the data inside the controller 402.
[0050] Figure 6 6 is a flow chart of an electrical mirror configuration process 600 according to an embodiment of the present disclosure. In block 602, a system topology of a non-volatile storage system and which targets are located in mirrored non-volatile storage devices may be determined. For example, in some embodiments, the NAND controller 102 may be configured to determine the system topology and which targets are located in mirrored non-volatile storage devices of the non-volatile storage system 100 during the electrical mirror configuration process. In one embodiment, the system topology may include: how many non-volatile storage devices are in the non-volatile storage system 100, how many channels the NVM 104 is connected to the controller 102, how many targets are in each NVM 104, and which targets in the NVM 104 belong to which channel.
[0051] In block 604, corresponding register bits may be set in the storage controller for all targets of all mirrored non-volatile storage devices. For example, in some embodiments, the NAND controller 102 may include multiple registers. In one embodiment, one register may be assigned to one channel, and each bit of the register corresponds to one target in the channel. The corresponding register bits of the targets of the mirrored non-volatile storage devices may be set (e.g., to enable electrical mirroring).
[0052] Figure 7700 is a flowchart of a process for a write operation to a mirrored NAND device according to one embodiment of the present disclosure. In box 702, it can be determined that a non-volatile storage device of a non-volatile storage system is connected in reverse based on the corresponding register bit set. In one embodiment, a register bit corresponding to a target in a mirrored NVM can be set to indicate that the data pin of the target can be connected in reverse. In box 704, the data bit order of the data to be stored in the non-volatile storage device can be reversed on the storage controller. The data to be stored in the non-volatile storage device can be in the original data bit order in the storage controller before the reversal. In box 706, the data to be stored in the non-volatile storage device can be sent on the data bus in the reversed data bit order. In various embodiments, since the target is located in the mirrored storage device, the data pin is in reverse connection, so the data can be received and stored in the mirrored storage device in its original data bit order.
[0053] Figure 8 8 is a flow chart of a process 800 for reading operations from a mirrored NAND device in accordance with one embodiment of the present disclosure. In block 802, data from a non-volatile storage device of a non-volatile storage system may be received at a storage controller. In block 804, the storage controller may determine that the non-volatile storage device is a mirrored non-volatile storage device based on corresponding register bits being set. In block 806, the storage controller may reverse the data bit order of the received data.
[0054] Each of the processes 600, 700, and 800 may be implemented using software (e.g., executable by a computer processor (CPU, GPU, or both)), hardware (e.g., a field programmable gate array (FPGA) or an application specific integrated circuit IC (ASIC)), firmware, or any suitable combination of the three. In one embodiment, for example, the electric mirror configuration process 600 may be implemented in a hardware circuit (e.g., an FPGA or an ASIC). In another embodiment, the electric mirror configuration process 600 may be implemented in firmware and stored in a read-only memory (e.g., memory 108), and executed by the processor 106 executing the firmware. In addition, the processes 700 and 800 may be programmed in computer processor executable instructions, stored in a non-transitory machine-readable medium (e.g., NVM 104, CD, DVD, etc.) and executed by a computer processor (e.g., a microprocessor or microcontroller) executing the executable instructions.
[0055] In an exemplary embodiment, a method is provided that may include determining a system topology of a nonvolatile storage system and which targets are located in mirrored nonvolatile storage devices, and setting corresponding register bits in a storage controller for all targets in all mirrored nonvolatile storage devices.
[0056] In one embodiment, the system topology may include how many nonvolatile storage devices are in the nonvolatile storage system, how many channels the nonvolatile storage devices are connected to the storage controller, how many targets are in each nonvolatile storage device, and which targets in the nonvolatile storage devices belong to which channel.
[0057] In one embodiment, the memory controller may include a plurality of registers, each register corresponding to a channel.
[0058] In one embodiment, the method may further include determining that the non-volatile storage device of the non-volatile storage system is a mirrored non-volatile storage device based on the corresponding register bits that are set, and for data to be stored in the non-volatile storage device in the original data bit order, reversing the data bit order of the data on the storage controller; and sending the data with the reversed data bit order to a data bus connected to the non-volatile storage device so that the data is stored in the non-volatile storage device in the original data bit order.
[0059] In one embodiment, the method may further include receiving data from a non-volatile storage device of the non-volatile storage system at the storage controller, determining that the non-volatile storage device is a mirrored non-volatile storage device based on the corresponding register bits set, and reversing the data bit order of the received data at the storage controller.
[0060] In one embodiment, each mirrored non-volatile memory device is paired with a non-mirrored non-volatile memory device in a mirrored configuration, wherein data pins of the mirrored non-volatile memory device are connected to data pins of the non-mirrored non-volatile memory device in reverse order through vias.
[0061] In another exemplary embodiment, a non-volatile storage system is provided. The non-volatile storage system may include a plurality of non-volatile storage devices and a storage controller. The storage controller may be configured to perform an electronic mirror configuration process, the electronic mirror configuration process including determining a system topology of the non-volatile storage system and which targets are located in the mirrored non-volatile storage devices, and setting corresponding register bits in the storage controller for all targets in all the mirrored non-volatile storage devices in the plurality of non-volatile storage devices.
[0062] In one embodiment, the system topology may include how many non-volatile storage devices there are in the non-volatile storage system, how many channels the non-volatile storage devices are connected to the storage controller, which non-volatile storage devices are mirrored non-volatile storage devices, and which targets in the non-volatile storage devices belong to which channel.
[0063] In one embodiment, the memory controller includes a plurality of registers, each register corresponding to a channel.
[0064] In one embodiment, the storage controller can also be configured to determine that a non-volatile storage device among the multiple non-volatile storage devices is a mirrored non-volatile storage device based on the corresponding register bits that are set, and for data to be stored in the non-volatile storage device in the original data bit order, reverse the data bit order of the data on the storage controller; and send the data with the reversed data bit order to a data bus connected to the non-volatile storage device so that the data is stored in the non-volatile storage device in the original data bit order.
[0065] In one embodiment, the storage controller may also be configured to receive data from a non-volatile storage device of the plurality of non-volatile storage devices on the storage controller, determine that the non-volatile storage device is a mirrored non-volatile storage device based on the corresponding register bits that are set, and reverse the data bit order of the received data on the storage controller.
[0066] In one embodiment, each mirrored non-volatile memory device is paired with a non-mirrored non-volatile memory device in a mirrored configuration, wherein data pins of the mirrored non-volatile memory device are connected to data pins of the non-mirrored non-volatile memory device in reverse order through vias.
[0067] In one embodiment, the storage controller may include a non-volatile computer-readable storage medium storing firmware and a processor configured to execute the firmware to perform the electronic mirroring configuration process.
[0068] In one embodiment, the storage controller may include a hardware circuit configured to perform the electronic mirror configuration process:
[0069] In yet another exemplary embodiment, a non-transitory machine-readable medium is provided. The non-volatile machine-readable medium may have computer instructions that, when executed by a hardware processor, may cause the hardware processor to perform operations to determine a system topology of a non-volatile storage system and which targets are located in mirrored non-volatile storage devices, and to set corresponding register bits in a storage controller for all targets in all mirrored non-volatile storage devices.
[0070] In one embodiment, the system topology may include how many nonvolatile storage devices are in the nonvolatile storage system, how many channels the nonvolatile storage devices are connected to the storage controller, how many targets are in each nonvolatile storage device, and which targets in the nonvolatile storage devices belong to which channel.
[0071] In one embodiment, the memory controller may include a plurality of registers, each register corresponding to a channel.
[0072] In one embodiment, when the computer instructions are executed by the hardware processor, the hardware processor is further caused to execute: determining that the non-volatile storage device of the non-volatile storage system is a mirrored non-volatile storage device based on the corresponding register bits that are set, and for data to be stored in the non-volatile storage device in the original data bit order, reversing the data bit order of the data on the storage controller; and sending the data with the reversed data bit order to a data bus connected to the non-volatile storage device so that the data is stored in the non-volatile storage device in the original data bit order.
[0073] In one embodiment, the computer instructions, when executed by the hardware processor, further cause the hardware processor to perform: receiving data from a non-volatile storage device of the non-volatile storage system at the storage controller, determining that the non-volatile storage device is a mirrored non-volatile storage device based on corresponding register bits being set, and reversing a data bit order of the received data at the storage controller.
[0074] In one embodiment, each mirrored non-volatile memory device is paired with a non-mirrored non-volatile memory device in a mirrored configuration, wherein data pins of the mirrored non-volatile memory device are connected to data pins of the non-mirrored non-volatile memory device in reverse order through vias.
[0075] Any disclosed methods and operations may be implemented as computer-executable instructions (e.g., software code of the operations described herein) stored on one or more computer-readable storage media (e.g., non-transitory computer-readable media, such as one or more optical disk media, volatile storage components (e.g., DRAM or SRAM), or non-volatile storage components (e.g., hard disk drives) and executed on a device controller (e.g., firmware executed by an ASIC). Any computer-executable instructions for implementing the disclosed techniques and any data created and used during implementation of the disclosed embodiments may be stored on one or more computer-readable media (e.g., non-transitory computer-readable media).
[0076] Although various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the appended claims.
Claims
1. A method comprising: enabling electrical mirroring of the non-volatile memory device by setting corresponding register bits for the non-volatile memory in the memory controller; receiving data to be stored in the non-volatile memory device, the data being received in original data bit order; Reversing the data bit order of the received data on the storage controller to generate data with reversed data bit order; The data with the reversed data bit order is sent to a data bus connected to the non-volatile memory device so that the received data is stored in the non-volatile memory device in the original data bit order.
2. The method according to claim 1, characterized in that The non-volatile memory device is a mirrored non-volatile memory device, and data pins of the mirrored non-volatile memory device are connected to the data bus in an inverted pin order.
3. The method according to claim 1, characterized in that The non-volatile storage device is part of a non-volatile storage system, and the method further comprises: determining a system topology of the non-volatile storage system, the system topology including which targets are located in the mirrored non-volatile storage devices, wherein a target is a storage unit controlled by a chip enable signal, respective data pins of all mirrored non-volatile storage devices are connected to the data bus in a reversed order, and each non-volatile storage device of the non-volatile storage system includes one or more targets; and Corresponding register bits are set in the storage controller for all targets in all mirrored non-volatile storage devices.
4. The method according to claim 3, characterized in that The system topology further includes: how many nonvolatile storage devices are there in the nonvolatile storage system, how many channels the nonvolatile storage devices are connected to the storage controller, how many targets are there in each nonvolatile storage device, and which targets in the nonvolatile storage devices belong to which channel.
5. The method according to claim 4, characterized in that Each mirrored non-volatile memory device is paired with a non-mirrored non-volatile memory device in a mirrored configuration, wherein data pins of the mirrored non-volatile memory device are connected to data pins of the non-mirrored non-volatile memory device in reverse order through vias.
6. The method according to claim 4, characterized in that The memory controller includes a plurality of registers, each register corresponding to a channel, and each register of the plurality of registers has a plurality of register bits, each register bit corresponding to a target.
7. The method according to claim 1, characterized in that Also includes: receiving, at the storage controller, storage data read from the non-volatile storage device; determining that the non-volatile storage device is a mirrored non-volatile storage device based on the corresponding register bits being set; and The data bit order of the storage data is reversed on the storage controller.
8. A non-volatile storage system, characterized in that: include: a plurality of non-volatile storage devices; and Storage controller, configured as: enabling electrical mirroring of the non-volatile memory device by setting corresponding register bits for the non-volatile memory in the memory controller; receiving data to be stored in the non-volatile memory device, the data being received in original data bit order; Reversing the data bit order of the received data on the storage controller to generate data with reversed data bit order; The data with the reversed data bit order is sent to a data bus connected to the non-volatile memory device so that the received data is stored in the non-volatile memory device in the original data bit order.
9. The non-volatile storage system according to claim 8, characterized in that: The non-volatile memory device is a mirrored non-volatile memory device, and data pins of the mirrored non-volatile memory device are connected to the data bus in an inverted pin order.
10. The non-volatile storage system according to claim 8, characterized in that: The storage controller is further configured to: Determining a system topology of the non-volatile storage system, the system topology including which targets are located in the mirrored non-volatile storage devices, wherein a target is a storage unit controlled by a chip enable signal, respective data pins of all mirrored non-volatile storage devices are connected to the data bus in a reversed order, and each non-volatile storage device of the non-volatile storage system includes one or more targets; and Corresponding register bits are set in the storage controller for all targets in all mirrored non-volatile storage devices.
11. The non-volatile storage system according to claim 10, characterized in that: The system topology further includes: how many nonvolatile storage devices are there in the nonvolatile storage system, how many channels the nonvolatile storage devices are connected to the storage controller, how many targets are there in each nonvolatile storage device, and which targets in the nonvolatile storage devices belong to which channel.
12. The non-volatile storage system according to claim 11, characterized in that: Each mirrored non-volatile memory device is paired with a non-mirrored non-volatile memory device in a mirrored configuration, wherein data pins of the mirrored non-volatile memory device are connected to data pins of the non-mirrored non-volatile memory device in reverse order through vias.
13. The non-volatile storage system according to claim 11, characterized in that: The memory controller includes a plurality of registers, each register corresponding to a channel, and each register of the plurality of registers has a plurality of register bits, each register bit corresponding to a target.
14. The non-volatile storage system according to claim 8, characterized in that: The storage controller is further configured to: receiving, at the storage controller, storage data read from the non-volatile storage device; determining that the non-volatile storage device is a mirrored non-volatile storage device based on the corresponding register bits being set; and The data bit order of the storage data is reversed on the storage controller.
15. A non-transitory machine-readable medium having computer instructions, characterized in that: When the computer instructions are executed by a hardware processor, the computer instructions cause the hardware processor to perform the steps as described in any one of claims 1-7.
Citation Information
Patent Citations
Storage control method, storage control device and solid-state storage system
CN103049220A
Data signal mirroring
CN103229241A
Data recovery method and system based on mirror image storage
CN110990191A
System and method for efficiently and reliably performing write cache mirroring
US20040117580A1
Full cache coherency across multiple raid controllers
US6321298B1