WO2021230003A1 - メモリモジュール - Google Patents

メモリモジュール Download PDF

Info

Publication number
WO2021230003A1
WO2021230003A1 PCT/JP2021/015770 JP2021015770W WO2021230003A1 WO 2021230003 A1 WO2021230003 A1 WO 2021230003A1 JP 2021015770 W JP2021015770 W JP 2021015770W WO 2021230003 A1 WO2021230003 A1 WO 2021230003A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
address
controller
write
read
Prior art date
Application number
PCT/JP2021/015770
Other languages
English (en)
French (fr)
Inventor
晴彦 寺田
陽太郎 森
理市 西野
禎之 柴原
Original Assignee
ソニーセミコンダクタソリューションズ株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ソニーセミコンダクタソリューションズ株式会社 filed Critical ソニーセミコンダクタソリューションズ株式会社
Priority to US17/997,862 priority Critical patent/US20230229313A1/en
Publication of WO2021230003A1 publication Critical patent/WO2021230003A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Definitions

  • This disclosure relates to memory modules.
  • ReRAM Resistive RAM
  • the ReRAM records information according to the state of the resistance value of the cell that changes with the application of voltage.
  • the Xp-ReRAM crosspoint ReRAM
  • VR Resistance changing element
  • SE Selection element
  • a memory module provided with the above-mentioned semiconductor storage device and a controller for controlling access to the above-mentioned semiconductor storage device is required to have a high read speed comparable to that of a DRAM. Therefore, it is desirable to provide a memory module capable of obtaining a high read speed.
  • the memory module includes a non-volatile memory, address lookup information, and a controller.
  • the non-volatile memory has two address bus terminals and a plurality of writable non-volatile memory cells.
  • the address lookup information is mapping information showing a correspondence relationship between a physical address and a logical address that specifies a data storage area based on some of a plurality of memory cells.
  • the second physical address which is the rest of the physical addresses obtained by conversion, is used as the address bus terminal (second address bus terminal) of the other system of the two address bus terminals.
  • the data corresponding to the physical address obtained by the conversion is read from the non-volatile memory by inputting to the non-volatile memory.
  • the first physical address which is a part of the physical address
  • the second physical address is input to the non-volatile memory via the second address bus terminal, and then the rest of the physical addresses.
  • the data corresponding to the physical address is read out from the non-volatile memory.
  • the first logical address which is a part of the logical addresses included in the read command
  • the first physical address is non-volatile via the first address bus terminal.
  • the second logical address which is the rest of the logical addresses included in the read command, is converted into the second physical address.
  • the non-volatile memory only one address bus terminal is provided in the non-volatile memory, and at least the second logical address is used as compared with the case where address conversion and address input to the non-volatile memory are performed in order.
  • the time required for reading can be shortened by the time required for translating to the second physical address.
  • FIG. 5 is an enlarged perspective view showing a schematic configuration example of the memory cell array of FIG. It is a figure which shows the operation example of the memory cell of FIG. It is a figure which shows the functional block example of the memory module of FIG.
  • FIG. 1 shows a schematic configuration example of the memory module 200 according to the embodiment of the present disclosure.
  • the memory module 200 includes, for example, a controller 210, a DRAM 220, and a 3DXP package group 230.
  • the DRAM 220 is provided separately from the controller 210 and the 3DXP package group 230.
  • the DRAM 220 holds the Volume address lookup information 221 which is mapping information indicating the correspondence between the Volume address which is a part of the physical address and the logical address.
  • the controller 210 has a built-in SRAM 211.
  • the SRAM 211 holds the Row address lookup information 211A, which is mapping information indicating the correspondence between the Row address, which is a part of the physical address, and the logical address.
  • SRAM 211 corresponds to a specific example of the "first storage unit” of the present disclosure.
  • the DRAM 220 corresponds to a specific example of the “second storage unit” of the present disclosure.
  • the Row address corresponds to a specific example of the "first physical address” of the present disclosure.
  • the Volume address corresponds to a specific example of the "second physical address” of the present disclosure.
  • the Row address lookup information 211A and the Column address lookup information 221 correspond to a specific example of the "address lookup information" of the present disclosure.
  • the Row address lookup information 211A corresponds to a specific example of the "first address lookup information” of the present disclosure.
  • the Volume address lookup information 221 corresponds to a specific example of the "second address lookup information” of the present disclosure.
  • the 3DXP package group 230 stores user data and various control data input from the host computer 100.
  • the control data includes, for example, metadata, address management data, error correction data, and the like.
  • the 3DXP package group 230 has, for example, a plurality of (for example, 11) 3DXP packages 230-i (1 ⁇ i ⁇ x).
  • the 3DXP package 230-i corresponds to a specific example of the "nonvolatile memory" of the present disclosure.
  • the 3DXP package 230-i has, for example, a plurality of (eg, 4) 3DXP dies 230-j (1 ⁇ j ⁇ y), as shown in FIG.
  • Each 3DXP die 230-j controls access to a plurality of (for example, 16) banks 232-k (1 ⁇ k ⁇ z) and each bank 232-k, for example, as shown in FIG. It has a Periphery circuit 233 and an interface circuit 234 that communicates with the controller 210.
  • Each bank 232-k includes, for example, as shown in FIG. 4, a tile 235 including a memory cell array having a 1-bit access unit (for example, a memory cell array configured including a 32 Bbit memory cell MC), and these. It has a microcontroller 236 that controls the tile 235 of the.
  • Each bank 232-k cooperates with the tile 235 group under the control of the microcontroller 236 to realize access to a data block having a predetermined byte size (for example, 32 bytes) as a whole.
  • Each tile 235 has, for example, a memory cell array 241 composed of two layers of memory cell array 241a and 241b, as shown in FIGS. 5 and 6.
  • the memory cells 241a and 241b each have one bit at each intersection of the upper word line UWL and the bit line BL and each intersection of the lower word line LWL and the bit line BL, for example, as shown in FIG. It has a memory cell MC.
  • the memory cell MC is a writable non-volatile memory.
  • the memory cell MC has a series structure of a resistance changing element VR (Variable Resistor) that records 1-bit information depending on the state of high and low resistance values and a selection element SE (Selector Element) having bidirectional diode characteristics.
  • VR Variable Resistor
  • SE Switchector Element
  • Each tile 235 has, for example, a WL driver 242, a BL driver 243, an R / W voltage switch 244, an R / W latch 245 and a sense amplifier 246, as shown in FIG.
  • the WL driver 242 applies a predetermined voltage to each word line WL based on the control signal (word line address WLA) by the microcontroller 236.
  • the voltage Vinh_wl (for example, 0V) applied to the non-selected word line WL is input to the WL driver 242.
  • the BL driver 243 selects a plurality of bit line BLs from the plurality of bit line BLs based on the control signal (bit line address BLA) by the microcontroller 236.
  • the voltage Vinh_bl (for example, 0V) applied to the non-selected bit line BL is input to the BL driver 243.
  • the R / W voltage switch 244 is a node GWL, GBL to which the selected word line WL and bit line BL are connected based on the control signal Ctrl by the microcontroller 236 and the write data WDATA by the R / W latch 245. Switch the voltage.
  • the R / W latch 245 outputs the write data WDATA input from the Periphery circuit 233 and the interface circuit 234 to the R / W voltage switch 244.
  • the R / W latch 245 further outputs the read data RDATA input from the sense amplifier 246 to the Periphery circuit 233 and the interface circuit 234.
  • the sense amplifier 246 compares the voltage of the node GWL obtained from the WL driver 242 with the Vref (for example, about -1V) based on the control signal Ctrl of the microcontroller 236, and the resistance changing element VR is in a low resistance state (LRS). It is determined whether it is in a high resistance state (HRS). The sense amplifier 246 generates logic 0 when the resistance changing element VR is in the low resistance state (LRS), and generates logic 1 when the resistance changing element VR is in the high resistance state (HRS). Generates read data RDATA. The sense amplifier 246 outputs the generated read data RDATA to the R / W latch 245.
  • Vref for example, about -1V
  • FIG. 7 shows the IV characteristics of the memory cell MC. It is assumed that the voltage across the memory cell MC is swept from 0V when the resistance changing element VR is in the low resistance state (LRS). At this time, when the voltage across the memory cell MC drops at 4V and a current suddenly flows through the memory cell MC, this phenomenon is called snap, and the snap voltage Vth_LRS becomes 4V. When the resistance changing element VR is in the high resistance state (HRS), the snap voltage Vth_HRS becomes higher than the snap voltage Vth_LRS, for example, 6V.
  • HRS high resistance state
  • the resistance changing element VR snaps when the resistance changing element VR is in the low resistance state (LRS), and the resistance changing element VR is in the high resistance state (HRS). Sometimes the resistance changing element VR does not snap. Therefore, the memory cell MC can be read out by distinguishing the presence or absence of the snap.
  • HRS high resistance state
  • the resistance changing element VR is snapped and a current of about 50 ⁇ A is passed through the memory cell MC in a predetermined direction, the resistance changing element VR is in a low resistance state (HRS). It changes to LRS).
  • the resistance changing element VR When the resistance changing element VR is in the low resistance state (LRS), when the resistance changing element VR is snapped and a current of about 30 ⁇ A is passed through the memory cell MC in a predetermined direction, the resistance changing element VR is in the high resistance state (LRS). HRS).
  • the tile 235 When reading the memory cell MC, for example, the tile 235 is floated after charging the lower word line LWL0 to -2.5V. Further, the tile 235 applies + 2.5V to the bit line BL0, for example.
  • the resistance changing element VR of the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0 is in the low resistance state (LRS)
  • the resistance changing element VR snaps and the parasitic capacitance of the lower word line LWL0 becomes large.
  • the potential of the lower word line LWL0 rises to around 0V.
  • the resistance changing element VR of the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0 is in the high resistance state (HRS)
  • the resistance changing element VR does not snap and a slight leakage current is generated in the lower word line LWL0.
  • the potential of the lower word line LWL0 is kept around -2V just by flowing.
  • the tile 235 uses, for example, a sense amplifier 246 to compare the potential of the lower word line LWL0 with Vref (for example, about -1V), and the resistance changing element VR is in a low resistance state (LRS) or has a high resistance. Determine if it is a state (HRS).
  • the tile 235 generates, for example, logic 0 when the resistance changing element VR is in the low resistance state (LRS), and generates logic 1 when the resistance changing element VR is in the high resistance state (HRS). As a result, read data RDATA is generated.
  • the tile 235 outputs, for example, the generated read data RDATA to the Periphery circuit 233.
  • the Set Verify Latch and the Reset Verify Latch are set to 0.
  • (Set) For tile 235, for example, when Set Verify Set is 1, + 3.5 V is applied to the bit line BL0 and ⁇ 3.5 V is applied to the lower word line LWL0. As a result, the resistance changing element VR of the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0 changes from the high resistance state (HRS) to the low resistance state (LRS). In this way, the memory cell MC is set.
  • the tile 235 is, for example, Set Verif. When yLatch is 0, nothing is done to the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0.
  • (Reset) For tile 235, for example, when Set Verify Set is 1, ⁇ 3.0 V is applied to the bit line BL0 and + 3.0 V is applied to the lower word line LWL0. As a result, the resistance changing element VR of the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0 changes from the low resistance state (LRS) to the high resistance state (HRS). In this way, the memory cell MC is reset.
  • the tile 235 is, for example, Set Veri. When fyLatch is 0, nothing is done to the memory cell MC at the intersection of the lower word line LWL0 and the bit line BL0.
  • the tile 235 determines, for example, the state of the resistance changing element VR after reset, and compares the read data RDATA obtained as a result of the determination with the write data WDATA again.
  • the tile 235 sets the values of the Set Verify Latch and the Reset Verify Latch in the same manner as in the case of Pre-read, for example, based on the comparison result. For example, when both the Set Verify Latch and the Reset Verify Latch are 0, the tile 235 determines that the writing is successful. For example, when any one of the Set Verify Latch and the Reset Verify Latch is 1, the tile 235 determines that the writing has failed, and executes the Set operation, the Reset operation, and the Verify operation again. This series of operations is called Verify Loop.
  • FIG. 8 shows in detail an example of the internal configuration of the controller 210 in the memory module 200.
  • the data unit handled by each bank 232-k included in the 3DXP package 230-i is very small with respect to the data unit accessed by the host computer 100, for example, 32 bytes.
  • the controller 210 distributes the access granularity of the host computer 100 to a plurality of banks 232-k and reads / writes.
  • the controller 210 is periodically or every predetermined access.
  • BG background Read / Write
  • FG background Read / Write
  • the controller 210 first obtains existing data from each 3DXP package 230-i. The read data (read data) is partially rewritten, and the data generated by the rewriting (write data) is written in each 3DXP package 230-i.
  • the controller 210 is provided, for example, for each 3DXP package 230-i, and has a plurality of (for example, 11) interface units 219-i (1 ⁇ i ⁇ x) for communicating with the 3DXP package 230-i. It has a DRAM interface unit 212 that controls communication with the DRAM 220.
  • the controller 210 further includes, for example, an ECC control unit 218, an ECP control unit 217, an XOR control unit 216, a CRC & address check unit 215, a write buffer unit 214, and a wear leveling unit 213. Has.
  • the functions of the respective components will be described in detail when the functions of the controller 210 are described.
  • FIG. 9 shows an example of a sector which is a unit for encoding / decoding ECC and XOR parity.
  • the host computer 100 transmits, for example, 256 bytes of user data and 8 bytes of metadata to the controller 210.
  • the metadata is information for data management generally used in an enterprise memory system, and includes, for example, address information, a CRC checksum used by the host computer 100, a version number, a time stamp, and the like.
  • the controller 210 records, for example, 264 bytes of user data received from the host computer 100 with a 4-byte logical address added to the 3DXP package 230-i. There are two purposes for this. First, if the logical address is recorded in the 3DXP package 230-i for each write, the address lookup is recorded at the time of recovery (restart) from the power cutoff. The purpose is to restore the data on the DRAM 220 and the SRAM 211 where the data is erased, and the second is to check that the correct address can be accessed at the time of reading.
  • the 4-byte logical address was obtained by taking an XOR in bits by bit with the 32-bit CRC generated by the data part (256 bytes of user data and 8-byte metadata) in the sector and the logical address. It may be data.
  • the controller 210 uses the data unit (256 bytes of user data, 8 bytes of metadata) and the 4-byte logical address in the sector as the payload to generate 45 bytes of ECC parity based on the BCH code.
  • ECC parity There are two purposes of ECC parity, the first is to correct bit errors that occur randomly in the transmission line via the interface section, etc. when writing the 3DXP package 230-i, and the second is to correct 3DXP.
  • the occurrence of bit defects is allowed up to a predetermined number of bits, and data reliability is ensured by error correction at the time of reading. be.
  • the controller 210 further generates an ECP (Error-Correction Pointer) indicating a defective bit position when there are a predetermined number or more of write defects in a sector, and a 7-byte patch of a bit string that should be originally written to the defective position indicated by the ECP. Is added to the sector as.
  • the controller 210 further generates a 32-byte XOR parity by XOR operation based on a 320-byte code word consisting of user data, metadata, a logical address, an ECC parity, and a patch.
  • the controller 210 records the XOR parity on a channel different from the channel on which the user data in the sector is recorded.
  • the controller 210 records, for example, user data and XOR parity in a sector at different locations of the channel number, die ID, and bank address in the 3DXP package group 230.
  • XOR parity is a data protection means similar to RAID 5 used in HDDs (Hard Disk Drives) and SSDs (Solid State Drives), and the purpose of XOR parity is for multiple (for example, 11 channels) 3DXP packages 230-i.
  • the purpose is to prevent data loss even when all the bits are lost due to an accidental failure or the like.
  • ECC and ECP can deal with bit-wise defects, but cannot deal with large-grained failures as described above.
  • correct data can be decoded based on the data read from other channels that have not failed (for example, 3DXP packages 230-i of other 10 channels).
  • the controller 210 treats the above total of 352 bytes as one sector, divides the sector into 11 sectors by 32 bytes, and divides the 11 32-byte data obtained by the division into 3DXP packages 230-i via different interface units. Record in.
  • FIG. 10 shows an example of a pin configuration provided in each 3DXP package 230-i.
  • Each 3DXP package 230-i is provided with two address bus terminals, one address bus terminal (ca1) is provided with, for example, four, and the other address bus terminal (ca2) is provided with, for example, two. It is provided.
  • the address bus terminal ca1 corresponds to a specific example of the "first address bus terminal" of the present disclosure.
  • the address bus terminal ca2 corresponds to a specific example of the "second address bus terminal" of the present disclosure.
  • the controller 210 inputs the die ID, the command, the bank address, and the Row address in a plurality of clock cycles (for example, 6 clock cycles (6ns)) via the address bus terminal (ca1). , Send to each 3DXP package 230-i.
  • the controller 210 for example, as shown in FIG. 11, transfers the parity and the Colomn address via the address bus terminal (ca2) in a plurality of clock cycles (for example, 6 clock cycles (6ns)) in each 3DXP package 230-.
  • the controller 210 further has a common control pin for the address bus terminals (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230, for example, as shown in FIG. That is, the controller 210 transfers data (die ID, command, bank address, and Row address) to the address bus terminals (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230 via a common control pin. Send. Even if the controller 210 simultaneously transmits the same data (die ID, command, bank address, and Row address) to the address bus terminals (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230, for example. good.
  • the controller 210 for example, has data (die ID, command, bank address, and Row address) for one of the 3DXP packages 230-i with respect to the address bus terminals (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230. ), And then the data (die ID, command, bank address and Row address) for the other 3DXP package 230-i may be transmitted.
  • the controller 210 further has a common control pin for the address bus terminals (ca2) of the two 3DXP packages 230-i in the 3DXP package group 230, for example, as shown in FIG. That is, the controller 210 transmits data (parity and Colomn address) to the address bus terminals (ca2) of the two 3DXP packages 230-i in the 3DXP package group 230 via a common control pin. The controller 210 may simultaneously transmit the same data (parity and Colomn address) to, for example, the address bus terminals (ca2) of the two 3DXP packages 230-i in the 3DXP package group 230.
  • the controller 210 for example, has data (die ID, command, bank address, and Row address) for one of the 3DXP packages 230-i with respect to the address bus terminals (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230. ) Is transmitted, and then the data (parity and Controller address) for one of the 3DXP packages 230-i is transmitted to the address bus terminals (ca2) of the two 3DXP packages 230-i in the 3DXP package group 230. good.
  • the controller 210 for example, has data (die ID, command, bank address, and Row address) for the other 3DXP package 230-i with respect to the address bus terminal (ca1) of the two 3DXP packages 230-i in the 3DXP package group 230. ) Is transmitted, and then the data (parity and Controller address) for the other 3DXP package 230-i is transmitted to the address bus terminals (ca2) of the two 3DXP packages 230-i in the 3DXP package group 230. good.
  • each 3DXP package 230-i for example, a die ID, a command, a bank address, and a Row address for each 3DXP package 230-i.
  • Parity and Row addresses can be reduced in the number of pins in each 3DXP package 230-i as compared to the case where they are transmitted by separate pins.
  • FIG. 12 shows an example of the read operation in the 3DXP package group 230.
  • the controller 210 holds the Volume address lookup information 221 which is the mapping information indicating the correspondence between the Volume address which is a part of the physical address and the logical address on the DRAM 220.
  • the controller 210 further holds the Row address lookup information 211A, which is mapping information indicating the correspondence between the Row address, which is a part of the physical address, and the logical address, on the SRAM 211 built in the controller 210. ing.
  • the controller 210 refers to the Volume address lookup information 221 on the DRAM 220 at a predetermined timing (for example, for each Read), and changes the Volume address lookup information 221 based on a predetermined algorithm. The controller 210 performs address translation using the changed Volume address lookup information 221.
  • the controller 210 When the controller 210 receives a read command including a logical address from the host computer 100, the controller 210 converts the logical address included in the read command into a physical address by using the Volume address lookup information 221 and the Row address lookup information 211A. The controller 210 inputs the Row address, which is a part of the physical addresses obtained by the conversion, to each 3DXP package 230-i via one of the address bus terminals (ca1). The controller 210 then inputs the remaining Coreum address of the physical addresses obtained by the translation to each 3DXP package 230-i via the other address bus terminal (ca2). As a result, the controller 210 reads the data corresponding to the physical address obtained by the conversion from each 3DXP package 230-i.
  • the controller 210 when the controller 210 receives a read command including a logical address from the host computer 100, the controller 210 reads the Row address lookup information 211A from the SRAM 211 and is based on the read Row address lookup information 211A. Then, a part of the logical address is converted into a Row address.
  • the controller 210 inputs the Row address or the like obtained by the conversion to each 3DXP package 230-i via the address bus terminal (ca1). Each 3DXP package 230-i decodes the Row address or the like input via the address bus terminal (ca1) and sets it in the memory cell array 241.
  • the controller 210 reads and reads the Volume address lookup information 221 from the DRAM 220 within the period (for example, 20 ns + 50 ns) in which each 3DXP package 230-i decodes the Row address and the like and statically indeterminates the WL voltage of the memory cell array 241. Based on the Row address lookup information 211A, a part of the logical address is converted into a Volume address. The controller 210 inputs the Volume address or the like obtained by the conversion to each 3DXP package 230-i via the address bus terminal (ca2).
  • the controller 210 inputs the Volume address or the like to the address bus terminal (for example, after 50 ns) from the time when the Row address or the like is input to each 3DXP package 230-i via the address bus terminal (ca1). Input to each 3DXP package 230-i via ca2). Each 3DXP package 230-i decodes the Volume address or the like input via the address bus terminal (ca2), sets the Row address or the like in the memory cell array 241 and then statically indeterminates the WL voltage of the memory cell array 241. Let it be fixed.
  • each 3DXP package 230-i requires a period (for example, 50 nm + 20 nm) for the controller 210 to read the Volume address lookup information 221 from the DRAM 220 and each 3DXP package 230-i to decode the Volume address and the like. It is within the period (for example, 20 ns + 50 ns) in which the Row address and the like are decoded and the WL voltage of the memory cell array 241 is settled.
  • the process in the sense amplifier 246 for example, 20 ns
  • the process in the R / W latch 245 for example, 30 ns
  • the process of decoding the read data input from the R / W latch 245 in the controller 210 for example, 20 ns.
  • the time (read latency) required for the host computer 100 to read data from the memory module 200 is equal to or shorter than the average read latency (about 300 ns) of the DRAM (for example, 200 ns). ) Can be.
  • an 8 kbyte section is a conversion unit.
  • the conversion unit (for example, 8 kbyte section) of the Group address lookup information 221 accesses one bank 232-k of one die 231-j through one channel (3DXP package 230-i).
  • Data unit for example, 32 bytes
  • ⁇ number of 3DXP packages 230-i included in 3DXP package group 230 that is, number of channels
  • 3DXP package group 230 that is, number of channels
  • 11 channels for example, 11 channels
  • the memory cell MC on the same Row (word line WL) is targeted for recording because the address information obtained from the Row address lookup information 211A of the SRAM 211 is the Row address. Further, the reason why the 32 sectors are grouped together is that the DRAM capacity required for the Volume address lookup information 221 is set to a realistic value (for example, less than 4 Gb).
  • the controller 210 may define blocks for every 128 sections (for example, 512 kbytes) in the Volume address lookup information 221 and perform counter-based inter-block swap.
  • the controller 210 has, for example, a plurality of counters assigned to each block, and when any of the counters exceeds a predetermined threshold value, the block corresponding to the counter exceeding the predetermined threshold value is used.
  • Address translation may be performed based on a predetermined algorithm.
  • the controller 210 refers to, for example, the Volume address lookup information 221 on the DRAM 220 at a predetermined timing (for example, for each Read), and addresses the Volume address lookup information 221 based on a predetermined algorithm. The conversion may be performed.
  • the block size needs to be defined to be 512 kbytes or less.
  • the larger the block size the smaller the SRAM capacity required for the Row address lookup information 211A. Therefore, the block size is the memory cell MC provided on the same Row (word line WL) in one tile 235.
  • the total size of the above for example, 512 kbytes is preferable.
  • FIG. 13 shows an example of a read operation and a write operation in the 3DXP package group 230.
  • the controller 210 does not write all the write data including the user data to one 3DXP package 230-i, but distributes it to a plurality of 3DXP packages 230-i. And write.
  • the controller 210 receives the write command including the user data
  • the controller 210 distributes and writes the write data including the received user data to the plurality of 3DXP packages 230-i.
  • the controller 210 receives, for example, a write command including user data
  • the controller 210 distributes one sector (352 bytes) of write data including the received user data to 11 3DXP packages 230-i, for example, 32 bytes each. And write.
  • the controller 210 does not read all the read data including the user data from one 3DXP package 230-i, but distributes it to a plurality of 3DXP packages 230-i.
  • the 32-byte data written in the above is read from a plurality of 3DXP packages 230-i.
  • the controller 210 reads, for example, 32 bytes of data distributed and written in 11 3DXP packages 230-i from 11 3DXP packages 230-i.
  • the controller 210 performs parallel write to write to a plurality of 3DXP packages 230-i at the same timing at the time of writing. For example, the controller 210 performs parallel read reading from a plurality of 3DXP packages 230-i at the same timing at the time of reading.
  • the controller 210 may perform serial write for sequentially writing 32 bytes of data to a plurality of 3DXP packages 230-i, for example, when writing.
  • the controller 210 performs serial read to sequentially read 32 bytes of data distributed and written from a plurality of 3DXP packages 230-i to a plurality of 3DXP packages 230-i as needed at the time of reading. May be good.
  • the above-mentioned parallel write, parallel read, serial write, and serial read will be described in detail below.
  • the controller 210 When the controller 210 receives a user data read request from the host computer 100, for example, as shown in FIG. 13 (2), the controller 210 has 10 channels excluding the writing (Busy) channel (3DXP package 230-i). From (10 3DXP packages 230-i), data for 10 channels (10 3DXP packages 230-i) (for example, 320 bytes of data) among the sectors to which the address included in the read request belongs can be obtained at the same timing. Read (parallel read). That is, when the controller 210 receives a read command during serial write, the serial write busy among the data in the data unit including the data storage area corresponding to the logical address included in the received read command.
  • the data excluding the data obtained from the channel (3DXP package 230-i) is busy with the serial write channel (3DXP package 230-i).
  • Parallel read is performed to read from a plurality of channels (3DXP package 230-i) excluding.
  • the controller 210 uses the 32-byte XOR parity contained in the 10 data read from the 10 channels, for example, to read the data from the channel being written (Busy) (3DXP package 230-i).
  • Restore eg 32 bytes of data. That is, for example, the controller 210 uses the XOR parity contained in the data obtained by performing the parallel read, and the data scheduled to be read from the writing (Busy) channel (3DXP package 230-i) (for example, 32). Bytes of data) to restore.
  • the controller 210 extracts, for example, the data corresponding to the address included in the read request from the data including the data obtained by the restoration, and transmits the data to the host computer 100.
  • the controller 210 contains 256 bytes of user data, for example, as shown in FIG. 13 (3), without a request from the host computer 100 (ie, in the background) when certain conditions are met. Read the data of one sector. For example, as shown in (3) of FIG. 13, the controller 210 has 11 channels (11 3DXP packages 230-i) so that the bushies of a plurality of channels do not overlap each other with the data to be read. Read one channel at a time, for example, 32 bytes at a time (serial read).
  • the controller reads the data of the data unit including the data storage area corresponding to the predetermined address from the plurality of channels (3DXP package 230-i) so that the bushes of the plurality of non-volatile memories do not overlap each other. I do.
  • the controller 210 receives 64 bytes of user data from the host computer 100 while performing the background read (BGRead) in FIG. 13 (3).
  • BGRead background read
  • the controller 210 is, for example, from 10 channels (10 3DXP packages 230-i) excluding the channel being read (Busy) (3DXP package 230-i), as shown in FIG. 13 (4).
  • 10 channels (10 3DXP packages 230-i) of data are read at the same timing (parallel read).
  • the serial read causes busy among the data in the data unit including the data storage area where the received user data is to be written.
  • the data excluding the data obtained from the channel (3DXP package 230-i) is the channel (3DXP package 230-i) that is busy due to the serial read among the plurality of channels (3DXP package 230-i).
  • the controller 210 uses the 32-byte XOR parity contained in 10 data read from 10 channels (10 3DXP packages 230-i), for example, to read (Busy) channels (3DXP packages). Restore the data (for example, 32 bytes of data) that was planned to be read from 230-i). Subsequently, the controller 210 receives 64 bytes of data from the host computer 100 for 64 bytes of data corresponding to the address included in the write request among the data of one sector including the data obtained by restoration, for example. Overwrite user data.
  • the controller 210 writes, for example, the data of one sector obtained by overwriting in a distributed manner for each channel, for example, 32 bytes so that the bushes of the plurality of channels do not overlap each other (serial write). That is, for example, the controller 210 uses the XOR parity contained in the data obtained by performing the parallel read, and the data scheduled to be read from the channel being read (Busy) (3DXP package 230-i) (for example, 32). (Byte data) is restored, the received user data is overwritten on the data including the data obtained by the restoration, and the data obtained by the restoration is applied to a plurality of channels (3DXP package 230-i). Write in a distributed manner.
  • the controller 210 receives a write request including 128 bytes of user data from the host computer 100 while performing the serial write in FIG. 13 (4).
  • the controller 210 is, for example, from 10 channels (10 3DXP packages 230-i) excluding the writing (Busy) channel (3DXP package 230-i), as shown in FIG. 13 (5).
  • 10 channels (10 3DXP packages 230-i) of data are read at the same timing (parallel read).
  • the controller 210 uses the 32-byte XOR parity contained in the 10 data read from the 10 channels, for example, to read the data from the channel being written (Busy) (3DXP package 230-i). Restore (eg 32 bytes of data). Subsequently, the controller 210 receives 64 bytes of data from the host computer 100 for 128 bytes of data corresponding to the address included in the write request among the data of one sector including the data obtained by restoration, for example. Overwrite user data. Subsequently, the controller 210 transfers the data of one sector obtained by overwriting, for example, one channel at a time to 11 channels (11 3DXP packages 230-i) so that the bushes of a plurality of channels do not overlap each other. For example, 32 bytes are distributed and written (serial write).
  • the controller 210 receives a write request including 256 bytes of user data from the host computer 100 while performing the serial write in FIG. 13 (5). Suppose it is received. At this time, for example, as shown in FIG. 13 (6), the controller 210 generates write data of one sector including 256 bytes of user data, and then temporarily suspends the serial write that is already being executed. The generated write data of one sector may be written at the same timing (parallel write).
  • the controller 210 has a write buffer unit 214, for example, as shown in FIG.
  • the write buffer unit 214 is a buffer for storing data waiting to be written when a write request is received from the host computer 100.
  • the controller 210 receives a write request including 256 bytes of user data
  • the free space of the write buffer unit 214 is not sufficient for the received data.
  • the controller 210 receives, for example, a write request including 256 bytes of user data, and the write buffer unit 214 has sufficient free space for the received data, the serial write being executed is completed. After that, it is preferable to write the write data of one sector at the same timing.
  • the free space of the write buffer unit 214 is managed by, for example, the amount of unwritten data Que provided in the write buffer unit 214. For example, each time the controller 210 receives a write request from the host computer 100, the value of the unwritten data amount Que is increased according to the received data amount, and each time the write according to the write request is completed, the controller 210 writes. Decreases the value of the unwritten data amount Que according to the completed data amount. For example, when the numerical value of the unwritten data amount Que exceeds a predetermined threshold value, the controller 210 determines that the free space of the write buffer unit 214 is not sufficient, temporarily suspends the serial write during execution, and performs a new write process. Is executed by parallel write.
  • the controller 210 determines that there is sufficient free space in the write buffer unit 214, and after the serial write being executed is completed, a new one is newly created. Write processing is executed.
  • the controller 210 corrects errors by using two layers of ECC code words when writing data to the 3DXP package group 230 and reading data from the 3DXP package group 230.
  • FIG. 14 shows an example of a two-layer ECC codeword.
  • FIG. 15 shows an example of a functional block of a circuit that reads data using two layers of ECC codewords.
  • FIG. 15 illustrates an example of a functional block when reading data from any 10 channels out of 11 channels.
  • FIG. 16 shows an example of a functional block of a circuit that writes data using two layers of ECC codewords.
  • the smaller codeword (ECC1 codeword) includes parity that enables error correction with a relatively low number of bits.
  • the ECC1 codeword includes, for example, ECC1 parity that allows error correction up to a 2-bit error.
  • the ECC1 codeword is, for example, 286-bit data composed of 32 bytes of user data, 1 byte of metadata, a 4-bit logical address, and 18-bit ECC1 parity.
  • the 18-bit ECC1 parity enables error correction up to 2 bit errors in the ECC1 codeword.
  • the ECC2 codeword includes parity that allows error correction with a relatively high number of bits.
  • the ECC2 codeword includes, for example, ECC2 parity that allows error correction up to a 5-bit error.
  • the ECC2 codeword is composed of, for example, eight ECC1 codewords (ECC1 codeword A to ECC1 codeword H) and 278 bytes of ECC2 parity.
  • ECC1 codeword A to ECC1 codeword H ECC1 codeword A to ECC1 codeword H
  • 278 bytes of ECC2 parity The 278-byte ECC2 parity enables error correction up to a 5-bit error in an ECC2 codeword.
  • the controller 210 includes, for example, as shown in FIG. 15, an XOR control unit 216, an ECP control unit 217, an ECC control unit 218 including eight ECC1 decoders and one ECC2 decoder, a CRC & address check unit 215, and the like. It has a separation unit 222.
  • the XOR control unit 216 has the function of an XOR decoder.
  • the XOR control unit 216 receives a user data read request from the host computer 100, it receives a user data read request from 10 channels (10 3DXP packages 230-i) excluding the writing (Busy) channel (3DXP package 230-i).
  • 10 channels (10 3DXP packages 230-i) excluding the writing (Busy) channel (3DXP package 230-i).
  • data for 10 channels (10 3DXP packages 230-i) for example, 320 bytes of data
  • the XOR control unit 216 is scheduled to read from the writing (Busy) channel based on the 32-byte XOR parity included in the read data for 10 channels and the data Ch_info indicating the writing (Busy) channel. Restore the data (for example, 32 bytes of data). The XOR control unit 216 overwrites the restored 32 bytes of the restored 32 bytes of the input 10 channels of data with respect to the 32 bytes of XOR parity. The XOR control unit 216 outputs 320 bytes of data obtained by overwriting to the ECP control unit 217.
  • the ECP control unit 217 When 320 bytes of data are input from the XOR control unit 216, the ECP control unit 217 is based on a 7-byte patch included in the input 320 bytes of data and a data pointer indicating the position of a defective bit. Of the 320 bytes of data input from the XOR control unit 216, the data excluding the 7-byte patch (313 bytes of data) recovers the data lost due to the defective bit. The restored 313 bytes of data correspond to the ECC2 codeword shown in FIG. The ECP control unit 217 outputs 313 bytes of data (ECC2 codeword) to the ECC control unit 218.
  • ECC2 codeword 313 bytes of data
  • the ECC control unit 218 has eight ECC1 decoders and one ECC2 decoder.
  • the ECC control unit 218 extracts 27 bytes of ECC2 parity from the input ECC2 codeword.
  • the ECC control unit 218 further divides the data (286 bytes of data) excluding the 27 bytes of ECC2 parity among the input ECC2 codewords into eight data (286 bits of data).
  • the 286-bit data after division corresponds to the ECC1 codeword shown in FIG.
  • the ECC control unit 218 outputs eight 286-bit data (ECC1 codewords) to the ECC1 decoder one by one. Each ECC1 decoder corrects errors up to 2 bits in the input ECC1 codeword based on the 18-bit ECC1 parity contained in the input ECC1 codeword. Each ECC1 decoder outputs the corrected 286-bit data (ECC1 codeword) to the ECC2 decoder.
  • the ECC2 decoder is out of the eight ECC1 codewords (286 bytes of data) input based on the eight ECC1 codewords (286 bytes of data) input from each ECC1 decoder and the 27 bytes of ECC2 parity. , 27 bytes of data excluding ECC2 parity, corrects errors up to 5 bits.
  • the ECC2 decoder outputs the corrected 268 bytes of data to the CRC & address check unit 215.
  • the CRC & address check unit 215 compares the input 268 byte data address with the logical address to be accessed from the host computer 100, and makes an error. Check for the presence of. When the CRC & address check unit 215 confirms that there is no error, it outputs 268 bytes of data to the separation unit 222.
  • the separation unit 222 transmits data (user data + metadata) corresponding to the logical address to be accessed from the host computer 100 to the host computer 100 from the input 268 bytes of data.
  • the data to be transmitted to the host computer 100 is, for example, 66 bytes of data (64 bytes of user data + 2 bytes of metadata), 132 bytes of data (128 bytes of user data + 4 bytes of metadata), and 264 bytes of data (24 bytes of data). 258 bytes of user data + 8 bytes of metadata).
  • the controller 210 includes, for example, as shown in FIG. 16, a write buffer unit 214, a CRC & address check unit 215, an ECC control unit 218 including eight ECC1 encoders and one ECC2 encoder, and an ECP control unit 217. It has an XOR control unit 216 and a separation unit 222.
  • the write buffer unit 214 When a write request including data (user data + metadata) is input from the host computer 100, the write buffer unit 214 responds to the input write request when the size of the write request is 66 bytes or 132 bytes. Read the data part (256 bytes of user data, 8 bytes of metadata) in the sector to which the included address belongs. The write buffer unit 214 overwrites the read data unit with the data received from the host computer 100, and temporarily stores the 264 bytes of data obtained thereby. When the size of the write request is 264 bytes, the write buffer unit 214 does not perform the above reading, and temporarily stores the data received from the host computer 100 as it is in the write buffer unit 214. At this time, the write buffer unit 214 updates the unwritten data amount Que as necessary. The write buffer unit 214 outputs data (user data + metadata) to the CRC & address check unit 215 at a predetermined timing.
  • the CRC & address check unit 215 When 264 bytes of data are input from the write buffer unit 214, the CRC & address check unit 215 generates a 32-bit CRC based on the input 264 bytes of data.
  • the CRC & address check unit 215 takes an XOR in bits by bit with the generated 32-bit CRC and the logical address value, thereby generating a 4-byte logical address.
  • the CRC & address check unit 215 outputs 268 bytes of data consisting of 264 bytes of data input from the write buffer unit 214 and the generated 4-byte logical address to the ECC control unit 218.
  • the ECC control unit 218 has eight ECC1 encoders and one ECC2 encoder.
  • the ECC control unit 218 divides the input 268 bytes of data into eight data (268-bit data).
  • the ECC control unit 218 outputs eight divided data (268-bit data) to the ECC1 encoder one by one.
  • Each ECC1 encoder generates 18-bit ECC parity from the input 268-bit data based on the BCH code.
  • Each ECC1 encoder uses the input 268-bit data and the generated 18-bit ECC parity to generate 286-bit data.
  • the generated 286-bit data corresponds to the ECC1 codeword shown in FIG. That is, when the controller 210 receives a write command including user data, it uses the received user data and ECC parity that is generated based on the received user data and enables error correction with a relatively low number of bits. Generate multiple ECC1 codewords.
  • Each ECC1 encoder outputs the generated 286-bit data (ECC1 codeword) to the ECC2 encoder.
  • ECC1 codeword When an ECC1 codeword is input from each ECC1 encoder, the ECC2 encoder generates 27 bytes of ECC2 parity based on the eight input ECC1 codewords.
  • the ECC2 encoder uses eight ECC1 codewords input from each ECC1 encoder and 27 bytes of ECC2 parity to generate 313 bytes of ECC2 codewords. That is, the controller 210 uses an ECC2 codeword using a plurality of generated ECC1 codewords and an ECC2 parity generated based on the generated plurality of ECC1 codewords, which enables error correction with a relatively high number of bits. To generate.
  • the ECC2 encoder outputs the generated ECC2 codeword to the ECP control unit 217.
  • the ECP control unit 217 generates a 7-byte patch based on the 313-byte ECC2 codeword and the data pointer indicating the position of the defective bit.
  • the ECP control unit 217 generates 320 bytes of data using the 313-byte ECC2 codeword and the generated 7-byte patch.
  • the ECP control unit 217 outputs the generated 320 bytes of data to the XOR control unit 216.
  • the XOR control unit 216 generates 32 bytes of XOR parity based on the 320 bytes of data input from the ECP control unit 217.
  • the XOR control unit 216 generates 352 bytes of data (1 sector data) using 320 bytes of data input from the ECP control unit 217 and 32 bytes of XOR parity.
  • the XOR control unit 216 outputs the generated 352 bytes of data (data of one sector) to the separation unit 222. That is, the 352-byte data (1-sector data) is the write data written to the memory package group 230, and is 320 bytes of data including user data (313-byte ECC2 codeword + 7-byte patch) and 320 bytes. It is composed of XOR parity generated based on the data (313 bytes of ECC2 codeword + 7 bytes of patch).
  • the separation unit 222 includes, for example, 10 channels (10 3DXP packages 230) excluding one channel (11 3DXP packages 230-i) out of 11 channels (11 3DXP packages 230-i).
  • 320 bytes of data (313 bytes of ECC2 codeword + 7 bytes of patch) are distributed and written to -i), and the remaining one channel (the remaining one 3DXP package 230-i) is written.
  • the separation unit 222 extracts the data (user data + metadata) included in the write request and the data such as parity for the data from the input 352 bytes of data (data of one sector).
  • the extracted data is distributed and written to the number of channels according to the size of the extracted data.
  • the separation unit 222 is 160 bytes of data from the input 352 bytes of data (1 sector data).
  • the extracted data for example, ch. 0, ch. 1, ch. 8, ch. 9, ch. Write in a distributed manner on a total of 5 channels of 10.
  • the separation unit 222 selects 224 bytes of the input 352 bytes of data (1 sector data).
  • the extracted data is used, for example, ch. 0, ch. 1, ch. 2, ch. 3, ch. 8, ch. 9, ch. Write in a distributed manner on a total of 7 channels of 10.
  • the separation unit 222 uses the input 352 bytes of data, for example, ch. 0-ch. Write in a distributed manner on a total of 11 channels of 10.
  • FIG. 17 shows an example of arranging ECC codewords in two layers.
  • the controller 210 distributes the input user data to a number of channels (3DXP package 230-i) according to the size of the user data. And write.
  • the controller 210 shares the input 64 bytes of user data with two address bus terminals (ca1 and ca2). Write in distributed channels ( ⁇ ch.0, ch.1 ⁇ , ⁇ ch.2, ch.3 ⁇ , ⁇ ch.4, ch.5 ⁇ , or ⁇ ch.6, ch.7 ⁇ ). At this time, the controller 210, for example, provides metadata (2 bytes), logical address (8 bits), ECC1 parity (36 bits) and patch (2 bits) for the input 64 bytes of user data in one channel. Write to one 3DXP package 230-i via (eg, ch. 8).
  • the controller 210 when a write request including 64 bytes of user data is input from the host computer 100, the controller 210 has metadata about the input 64 bytes of user data and the input 64 bytes of user data.
  • Two ECC1 codewords composed of (2 bytes), a logical address (8 bits), ECC1 parity (36 bits) and a patch (2 bits) are distributed and written in three 3DXP packages 230-i.
  • controller 210 for example, ECC2 parity (27 bytes) and a patch (5 bytes) for the input 64 bytes of user data via one channel (eg, ch. 9) in one 3DXP package.
  • controller 210 writes, for example, XOR parity (32 bytes) for the input 64 bytes of user data to one 3DXP package 230-i via one channel (eg, ch. 9).
  • the controller 210 shares the input 128 bytes of user data with two sets in which the address bus terminals (ca1 and ca2) are shared.
  • Channel eg, ⁇ ch.0, ch.1, ch.2, ch.3 ⁇ , ⁇ ch.2, ch.3, ch.4, ch.5 ⁇ , or ⁇ ch.4, ch.5 , Ch.6, ch.7 ⁇
  • the controller 210 for example, provides metadata (4 bytes), a logical address (16 bits), ECC1 parity (72 bits), and a patch (2 bits) for the input 128 bytes of user data in one channel.
  • the four ECC1 codewords composed of (4 bytes), logical address (16 bits), ECC1 parity (72 bits) and patch (2 bits) are distributed and written in five 3DXP packages 230-i.
  • controller 210 for example, ECC2 parity (27 bytes) and a patch (5 bytes) for the input 128 bytes of user data via one channel (eg, ch. 9) in one 3DXP package.
  • controller 210 writes, for example, XOR parity (32 bytes) for the input 128 bytes of user data to one 3DXP package 230-i via one channel (eg, ch. 9).
  • FIG. 18 shows an example of arranging two layers of ECC codewords.
  • data different from user data for example, data such as parity
  • the data access is ch. 8, ch. 9, ch. Focus on 10.
  • data access is concentrated on ch. 8, ch. 9, ch.
  • the characteristics of each 3DXP package 230-i connected to 10 may deteriorate prematurely. Therefore, it is desirable to arrange two layers of ECC codewords so that data access is distributed.
  • the controller 210 divides the physical address (PA) input from the host computer 100 by the number of channels (for example, 11), and based on the remaining value obtained thereby, the controller 210 is used.
  • the channel for writing data different from the user data (for example, data such as parity) may be dynamically set.
  • PA mod (remainder value) 1, ch. 9, ch.
  • Data different from user data (for example, data such as parity) is written via 10 and 0.
  • the controller 210 has data different from the user data (for example, data such as parity) as the PA mod (remainder value) increases by one such as 2,3,4,5,6,7,8,9,10. ) To write the channel. In this way, by dynamically shifting the channel for writing data different from the user data (for example, data such as parity), it is possible to prevent data access from being concentrated on a specific channel.
  • a rewritable semiconductor storage device having non-volatility is known.
  • a resistance change type RAM (ReRAM) has been attracting attention as a rewritable semiconductor storage device having a storage capacity exceeding that of DRAM while having non-volatility.
  • the ReRAM records information according to the state of the resistance value of the cell that changes with the application of voltage.
  • the Xp-ReRAM has a cell structure in which a resistance changing element (VR) functioning as a storage element and a selection element (SE) having bidirectional diode characteristics are connected in series at the intersection of a word line and a bit line.
  • VR resistance changing element
  • SE selection element
  • a memory module provided with the above-mentioned semiconductor storage device and a controller for controlling access to the above-mentioned semiconductor storage device is required to have a high read speed comparable to that of a DRAM.
  • the Row address is input to the 3DXP package 230-i via the address bus terminal ca1
  • the Volume address is input to the 3DXP package 230-i via the address bus terminal ca2.
  • the data corresponding to the address and the Volume address is read from the 3DXP package 230-i.
  • the first logical address which is a part of the logical addresses included in the read command
  • the Row address is input to the 3DXP package 230-i via the address bus terminal ca1.
  • the second logical address which is the rest of the logical addresses included in the read command, is converted into a Volume address within the period (hereinafter referred to as “first period”).
  • the second logical address which is the rest of the logical addresses included in the read command, is converted into a Volume address within the first period.
  • the time required for reading (read latency) can be shortened by at least the time required for converting the second logical address to the address bus terminal ca1. Therefore, a high read speed can be obtained.
  • the Volume address lookup information 221 is read from the DRAM 220 and the second logical address is converted into the Volume address by using the read Volume address lookup information 221 within the first period. ..
  • the time required for reading can be shortened by at least the time required for converting the second logical address to the address bus terminal ca1. Therefore, a high read speed can be obtained.
  • the write data including the received user data is distributed and written to a plurality of 3DXP packages 230-i.
  • the write waiting time can be shortened when the write request is received from the host computer 100, as compared with the case where the write data including the received user data is written in one 3DXP package 230-i.
  • the code words are distributed and written to the plurality of second non-volatile memories excluding one first non-volatile memory among the plurality of 3DXP packages 230-i, and the first. Parity is written to the non-volatile memory of. As a result, even when the 3DXP package 230-i has write instability, data reading with few errors can be performed at high speed.
  • serial writing is performed in which the write data is distributed and written to the plurality of 3DXP packages 230-i so that the bushes of the plurality of 3DXP packages 230-i do not overlap each other.
  • the serial write causes busy among the data in the data unit including the data storage area corresponding to the logical address included in the received read command.
  • the second data excluding the first data obtained from the 3DXP package 230-i (third non-volatile memory) is a plurality of 3DXP packages 230-i excluding the third non-volatile memory.
  • Parallel read can be performed from the 3DXP package 230-i (fourth non-volatile memory) of the above.
  • the first data is restored by using the parity contained in the data obtained by performing the parallel read, and the data corresponding to the logical address among the first data and the second data is output. be able to. Therefore, a high read speed can be obtained.
  • a serial read that reads data in a data unit including a data storage area corresponding to a predetermined address from a plurality of 3DXP packages 230-i so that the bushes of the plurality of 3DXP packages 230-i do not overlap each other. Is done.
  • the serial read is used among the data in the data unit including the data storage area in which the received user data is to be written.
  • the second data excluding the first data obtained from the busy 3DXP package 230-i (first non-volatile memory) is used as the first non-volatile memory among the plurality of 3DXP packages 230-i.
  • Parallel read can be performed to read from a plurality of 3DXP packages 230-i (second non-volatile memory) excluding.
  • the first data is restored by using the parity contained in the data obtained by performing the parallel read, and the received user data is overwritten on the first data and the second data.
  • the third data thus obtained can be distributed and written to a plurality of 3DXP packages 230-i. Therefore, the time for waiting for writing can be shortened.
  • the serial write is temporarily suspended, and new write data including the user data included in the new write command is included. Is distributed and written to a plurality of 3DXP packages 230-i at the same timing. Therefore, the time for waiting for writing can be shortened.
  • the received user data and ECC1 parity generated based on the received user data which enables error correction with a relatively low number of bits, are used.
  • Multiple ECC1 codewords are generated.
  • an ECC2 codeword is generated using a plurality of generated ECC1 codewords and an ECC2 parity generated based on the generated ECC1 codeword that enables error correction with a relatively high number of bits.
  • the data including the generated ECC2 codeword is output as write data.
  • the user data in a plurality of ECC1 codewords are distributed and written in a number of 3DXP packages 230-i according to the size of the user data, and the ECC1 parity in the plurality of ECC1 codewords is one 3DXP package. It is written to 230-i and the ECC2 parity in the ECC2 codeword is written to one 3DXP package 230-i.
  • error correction can be performed more accurately than when a one-layer ECC codeword is used.
  • XOR parity is generated based on the ECC2 codeword, and the generated XOR parity is written in one 3DXP package 230-i.
  • error correction can be performed even more accurately.
  • the present disclosure may have the following structure.
  • a non-volatile memory having two address bus terminals and a plurality of writable non-volatile memory cells, Address lookup information, which is mapping information indicating the correspondence between physical addresses and logical addresses that specify a data storage area based on some of the plurality of memory cells, and When a read command including a logical address is received, the address lookup information is used to convert the logical address included in the read command into a physical address, which is a part of the physical address obtained by the conversion. The first physical address is input to the non-volatile memory via the first address bus terminal of one of the two address bus terminals, and then the rest of the physical addresses obtained by conversion is used.
  • the physical address obtained by conversion corresponds to the physical address.
  • the controller converts the first logical address, which is a part of the logical addresses included in the read command, into the first physical address, and converts the first physical address into the first physical address via the first address bus terminal.
  • the address lookup information is The first address lookup information, which is the first mapping information indicating the correspondence between the first physical address and the first logical address, and It is composed of second address lookup information, which is second mapping information indicating the correspondence between the second physical address and the second logical address.
  • the semiconductor storage device is A first storage unit that holds the first address lookup information, Further, a second storage unit for holding the second address lookup information is provided. The controller reads the second address lookup information from the second storage unit within the first period, and uses the read second address lookup information to obtain the second logical address.
  • the first storage unit is built in the controller.
  • the first physical address is a Row address in the non-volatile memory.
  • (6) Equipped with a plurality of the non-volatile memories
  • the controller receives a write command including user data
  • the controller distributes and writes the received write data including the user data to the plurality of non-volatile memories (1) to (5).
  • the write data is composed of a code word including the user data and a parity generated based on the code word.
  • the controller distributes and writes the code word to a plurality of second non-volatile memories excluding the first non-volatile memory which is one of the non-volatile memories.
  • the controller receives the read command while performing the serial write, the serial among the data in the data unit including the data storage area corresponding to the logical address included in the received read command.
  • the second data excluding the first data obtained from the third non-volatile memory which is busy by the write is used as a plurality of fourth data excluding the third non-volatile memory among the plurality of non-volatile memories.
  • the memory module according to (8) which performs parallel read reading from the non-volatile memory.
  • the controller restores the first data by using the parity contained in the data obtained by performing the parallel read, and the logical address of the first data and the second data.
  • the controller performs serial reading to read data in a data unit including a data storage area corresponding to a predetermined address from the plurality of non-volatile memories so that the bushes of the plurality of non-volatile memories do not overlap each other (1).
  • the controller When the controller receives a write command including user data during the serial read, the serial read among the data in the data unit including the data storage area to write the received user data.
  • the second data excluding the first data obtained from the first non-volatile memory which is busy can be obtained from a plurality of second non-volatile memories excluding the first non-volatile memory among the plurality of non-volatile memories.
  • Performs parallel read to read from memory The controller restores the first data using the parity contained in the data obtained by performing the parallel read, and receives the first data and the second data.
  • the memory module according to (11), wherein the user data is overwritten and the third data obtained by overwriting the user data is distributed and written to the plurality of non-volatile memories.
  • the controller has a buffer for storing the received user data, and when a new write command is received, if the free space of the buffer exceeds a predetermined threshold, the serial write is temporarily suspended and the new write command is received.
  • the memory module according to any one of (8) to (10), wherein new write data including user data included in the write command is distributed and written to a plurality of the non-volatile memories at the same timing.
  • (14) Equipped with a plurality of the non-volatile memories When the controller receives a write command including user data, the first error correction that enables error correction with a relatively low number of bits generated based on the received user data and the received user data.
  • the controller After generating a plurality of first code words using data, a relatively high number of bits generated based on the generated plurality of the first code words and the generated first code words.
  • a second code word is generated using the second error correction data that enables error correction, and the generated data including the second code word is output as write data (1) to (13).
  • the controller distributes and writes the user data in the plurality of first code words to a number of first non-volatile memories corresponding to the size of the user data, and writes the user data in the plurality of first code words.
  • the memory according to (14) wherein the first error correction data is written to one second non-volatile memory, and the second error correction data in the second code word is written to one third non-volatile memory. module.
  • (16) The memory module according to (15), wherein the controller generates an XOR parity based on the second code word, and writes the generated XOR parity to one fourth non-volatile memory.
  • the first physical address which is a part of the physical address
  • the first address is input to the non-volatile memory via the first address bus terminal, and then the physical address is used.
  • the data corresponding to the physical address is read from the non-volatile memory. Therefore, for example, it is included in the read command.
  • the first logical address which is a part of the logical address
  • the first physical address is converted to the first physical address, and the first physical address is sent to the read command within the period of input to the non-volatile memory via the first address bus terminal.
  • the second logical address which is the rest of the included logical addresses, can be converted into the second physical address.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Dram (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本開示の一実施形態に係るメモリモジュールにおいて、コントローラは、論理アドレスを含む読み出しコマンドを受信すると、アドレスルックアップ情報を用いて、読み出しコマンドに含まれる論理アドレスを物理アドレスに変換する。コントローラは、さらに、変換により得られた物理アドレスのうちの一部である第1物理アドレスを、第1アドレスバス端子を介して不揮発性メモリに入力した後、変換により得られた物理アドレスのうちの残りである第2物理アドレスを、第2アドレスバス端子を介して不揮発性メモリに入力することにより、変換により得られた物理アドレスに対応するデータを不揮発性メモリから読み出す。

Description

メモリモジュール
 本開示は、メモリモジュールに関する。
 従来、不揮発性を備える書き換え可能な半導体記憶装置が知られている。近年では、不揮発性を備えつつ、DRAMを超える記憶容量を備える書き換え可能な半導体記憶装置として、抵抗変化型RAM(ReRAM(Resistive RAM))が注目されている。ReRAMは、電圧の印加によって変化するセルの抵抗値の状態により情報を記録する。とりわけ、Xp-ReRAM(クロスポイントReRAM)は、ワード線とビット線との交差部に、記憶素子として機能する抵抗変化素子(VR:Variable Resistor)と双方向ダイオード特性を有する選択素子(SE:Selector Element)とが直列に接続されたセル構造を有する(例えば、特許文献1~4参照)。
特開2016-184402号公報 国際公開2012/140903号 国際公開2016/067846号 特開2013-239142号公報
 ところで、上述の半導体記憶装置と、上述の半導体記憶装置に対するアクセス制御を行うコントローラとを備えたメモリモジュールでは、DRAMに匹敵する高い読み出し速度が求められている。従って、高い読み出し速度を得ることの可能なメモリモジュールを提供することが望ましい。
 本開示の一実施形態に係るメモリモジュールは、不揮発性メモリと、アドレスルックアップ情報と、コントローラとを備える。不揮発性メモリは、2系統のアドレスバス端子と、書込み可能な不揮発性の複数のメモリセルとを有する。アドレスルックアップ情報は、複数のメモリセルの幾つかに基づくデータ記憶領域を特定する物理アドレスと論理アドレスとの間の対応関係を示すマッピング情報である。コントローラは、論理アドレスを含む読み出しコマンドを受信すると、アドレスルックアップ情報を用いて、読み出しコマンドに含まれる論理アドレスを物理アドレスに変換する。コントローラは、さらに、変換により得られた物理アドレスのうちの一部である第1物理アドレスを、2系統のアドレスバス端子のうちの一方の系統のアドレスバス端子(第1アドレスバス端子)を介して不揮発性メモリに入力した後、変換により得られた物理アドレスのうちの残りである第2物理アドレスを、2系統のアドレスバス端子のうちの他方の系統のアドレスバス端子(第2アドレスバス端子)を介して不揮発性メモリに入力することにより、変換により得られた物理アドレスに対応するデータを不揮発性メモリから読み出す。
 本開示の一実施形態に係るメモリモジュールでは、物理アドレスのうちの一部である第1物理アドレスが、第1アドレスバス端子を介して不揮発性メモリに入力された後、物理アドレスのうちの残りである第2物理アドレスが、第2アドレスバス端子を介して不揮発性メモリに入力されることにより、物理アドレスに対応するデータが不揮発性メモリから読み出される。これにより、例えば、読み出しコマンドに含まれる論理アドレスのうちの一部である第1論理アドレスが第1物理アドレスに変換されるとともに、第1物理アドレスが、第1アドレスバス端子を介して不揮発性メモリに入力される第1期間内に、読み出しコマンドに含まれる論理アドレスのうちの残りである第2論理アドレスが第2物理アドレスに変換される。その結果、例えば、1系統のアドレスバス端子しか不揮発性メモリに設けられておらず、アドレス変換や、不揮発性メモリへのアドレス入力が順番に行われる場合と比べて、少なくとも、第2論理アドレスを第2物理アドレスに変換するのに要する時間だけ、読み出しに要する時間(リードレイテンシ)を短縮することができる。
本開示の一実施の形態に係るメモリモジュールの概略構成例を表す図である。 図1の各3DXPパッケージの概略構成例を表す図である。 図2の3DXPダイの概略構成例を表す図である。 図3の各バンクの概略構成例を表す図である。 図4の各タイルの概略構成例を表す図である。 図5のメモリセルアレイの概略構成例を拡大して表す斜視図である。 図6のメモリセルの動作例を表す図である。 図1のメモリモジュールの機能ブロック例を表す図である。 ECCやXOR パリティの符号化/復号化を行う単位であるセクタの一例を表す図である。 図1の各3DXPパッケージに設けられたピン構成例を表す図である。 図10の2系統のアドレスバス端子に入力される信号例を表す図である。 図1の3DXPパッケージ群における読み出し動作の一例を表す図である。 図1の3DXPパッケージ群における読み出し動作および書き込み動作の一例を表す図である。 2階層のECC コードワードの一例を表す図である。 2階層のECC コードワードを用いたデータ読み出しを行う回路の機能ブロック例を表す図である。 2階層のECC コードワードを用いたデータ書き込みを行う回路の機能ブロック例を表す図である。 2階層のECC コードワードの配置例を表す図である。 2階層のECC コードワードの配置例を表す図である。 図1のメモリモジュールにおけるレイテンシの一例を表す図である。 図1のメモリモジュールにおけるレイテンシの一例を表す図である。
 以下、本開示を実施するための形態について、図面を参照して詳細に説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本技術は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
[構成]
 図1は、本開示の一実施の形態に係るメモリモジュール200の概略構成例を表したものである。メモリモジュール200は、例えば、コントローラ210と、DRAM220と、3DXPパッケージ群230とを備える。DRAM220は、コントローラ210および3DXPパッケージ群230とは別体に設けられている。DRAM220は、物理アドレスのうちの一部であるColumnアドレスと論理アドレスとの対応関係を示すマッピング情報であるColumnアドレスルックアップ情報221を保持している。コントローラ210には、SRAM211が内蔵されている。SRAM211は、物理アドレスのうちの一部であるRowアドレスと論理アドレスとの対応関係を示すマッピング情報であるRowアドレスルックアップ情報211Aを保持している。
 SRAM211は、本開示の「第1記憶部」の一具体例に相当する。DRAM220は、本開示の「第2記憶部」の一具体例に相当する。Rowアドレスは、本開示の「第1物理アドレス」の一具体例に相当する。Columnアドレスは、本開示の「第2物理アドレス」の一具体例に相当する。Rowアドレスルックアップ情報211AおよびColumnアドレスルックアップ情報221は、本開示の「アドレスルックアップ情報」の一具体例に相当する。Rowアドレスルックアップ情報211Aは、本開示の「第1アドレスルックアップ情報」の一具体例に相当する。Columnアドレスルックアップ情報221は、本開示の「第2アドレスルックアップ情報」の一具体例に相当する。
 3DXPパッケージ群230は、ホストコンピュータ100から入力されたユーザデータや各種の制御データを記憶する。制御データは、例えば、メタデータ、アドレス管理データおよびエラー訂正データ等を含む。3DXPパッケージ群230は、例えば、複数の(例えば11個の)3DXPパッケージ230-i(1≦i≦x)を有する。3DXPパッケージ230-iは、本開示の「不揮発性メモリ」の一具体例に相当する。3DXPパッケージ230-iは、例えば、図2に示したように、複数の(例えば4個の)の3DXPダイ230-j(1≦j≦y)を有する。各3DXPダイ230-jは、例えば、図3に示したように、複数の(例えば16個の)のバンク232-k(1≦k≦z)と、各バンク232-kに対するアクセス制御を行うPeriphery回路233と、コントローラ210との通信を行うインターフェース回路234とを有する。各バンク232-kは、例えば、図4に示したように、1ビットのアクセス単位をそれぞれ有するメモリセルアレイ(例えば32BbitのメモリセルMCを含んで構成されたメモリセルアレイ)を含むタイル235と、これらのタイル235を制御するマイクロコントローラ236とを有する。各バンク232-kは、マイクロコントローラ236の制御の下、タイル235群を協調動作させ、全体で所定のバイトサイズ(例えば32バイト)のデータブロックのアクセスを実現する。
 各タイル235は、例えば、図5、図6に示すように、2層のメモリセルアレイ241a,241bからなるメモリセルアレイ241を有する。メモリセルアレイ241a,241bは、それぞれ、例えば、図6に示すように、上部ワード線UWLとビット線BLとの各交点と、下部ワード線LWLとビット線BLとの各交点とに、1ビットのメモリセルMCを有する。メモリセルMCは、書込み可能な不揮発性のメモリである。メモリセルMCは、抵抗値の高低の状態により1ビットの情報を記録する抵抗変化素子VR(Variable Resistor)と、双方向ダイオード特性を有する選択素子SE(Selector Element)の直列構造となっている。以下では、上部ワード線UWLおよび下部ワード線LWLの総称としてワード線WLを適宜、用いるものとする。
 各タイル235は、例えば、図5に示すように、WLドライバ242、BLドライバ243、R/W電圧スイッチ244、R/Wラッチ245およびセンスアンプ246を有する。
 WLドライバ242は、マイクロコントローラ236による制御信号(ワードラインアドレスWLA)に基づいて、各ワード線WLに対して所定の電圧を印加する。WLドライバ242には、非選択のワード線WLに与える電圧Vinh_wl(例えば0V)が入力される。BLドライバ243は、マイクロコントローラ236による制御信号(ビット線アドレスBLA)に基づいて、複数のビット線BLの中から複数のビット線BLを選択する。BLドライバ243には、非選択のビット線BLに与える電圧Vinh_bl(例えば0V)が入力される。
 R/W電圧スイッチ244は、マイクロコントローラ236による制御信号Ctrlと、R/Wラッチ245による書き込みデータWDATAとに基づいて、選択されたワード線WLおよびビット線BLが接続されるノードGWL,GBLの電圧を切り換える。R/Wラッチ245は、Periphery回路233およびインターフェース回路234から入力された書き込みデータWDATAをR/W電圧スイッチ244に出力する。R/Wラッチ245は、さらに、センスアンプ246から入力された読み出しデータRDATAをPeriphery回路233およびインターフェース回路234に出力する。センスアンプ246は、マイクロコントローラ236による制御信号Ctrlに基づいて、WLドライバ242から得られたノードGWLの電圧をVref(例えば約-1V)と比較し、抵抗変化素子VRが低抵抗状態(LRS)であるか高抵抗状態(HRS)であるかを判別する。センスアンプ246は、抵抗変化素子VRが低抵抗状態(LRS)である場合には論理0を生成し、抵抗変化素子VRが高抵抗状態(HRS)である場合には論理1を生成し、これにより、読み出しデータRDATAを生成する。センスアンプ246は、生成した読み出しデータRDATAをR/Wラッチ245に出力する。
 図7は、メモリセルMCにおけるI-V特性を表したものである。抵抗変化素子VRが低抵抗状態(LRS)のとき、メモリセルMCの両端の電圧が0Vからスイープされたとする。このとき、4VでメモリセルMCの両端の電圧が低下し、メモリセルMCに急激に電流が流れた場合、この現象はスナップと呼ばれ、スナップ電圧Vth_LRSは4Vとなる。抵抗変化素子VRが高抵抗状態(HRS)のとき、スナップ電圧Vth_HRSは、スナップ電圧Vth_LRSよりも高くなり、例えば6Vとなる。状態を知りたいメモリセルMCに対して5Vが印加されると、抵抗変化素子VRが低抵抗状態(LRS)のときには抵抗変化素子VRがスナップし、抵抗変化素子VRが高抵抗状態(HRS)のときには抵抗変化素子VRがスナップしない。従って、スナップの有無を見分けることにより、メモリセルMCの読み出しが実現できる。抵抗変化素子VRが高抵抗状態(HRS)のときに、抵抗変化素子VRをスナップさせ、メモリセルMCに対して所定の方向に約50μAの電流を流すと、抵抗変化素子VRは低抵抗状態(LRS)に変化する。抵抗変化素子VRが低抵抗状態(LRS)のときに、抵抗変化素子VRをスナップさせ、メモリセルMCに対して所定の方向に約30μAの電流を流すと、抵抗変化素子VRは高抵抗状態(HRS)に変化する。上述の読み出しと、抵抗変化素子VRの抵抗変化を組み合わせることで、メモリセルMCの書き込みが実現できる。
 メモリセルMCの読み出しを行う場合、タイル235は、例えば、下部ワード線LWL0を-2.5Vに充電した後、フローティングにする。さらに、タイル235は、例えば、ビット線BL0に+2.5Vを印加する。その結果、下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCの抵抗変化素子VRが低抵抗状態(LRS)のときには、抵抗変化素子VRがスナップし、下部ワード線LWL0の寄生容量が放電し、下部ワード線LWL0の電位は0V付近まで上昇する。下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCの抵抗変化素子VRが高抵抗状態(HRS)のときには、抵抗変化素子VRがスナップせず、下部ワード線LWL0にわずかなリーク電流が流れるだけで、下部ワード線LWL0の電位は-2V付近に保たれる。このとき、タイル235は、例えば、センスアンプ246を用いて、下部ワード線LWL0の電位をVref(例えば約-1V)と比較し、抵抗変化素子VRが低抵抗状態(LRS)であるか高抵抗状態(HRS)であるかを判別する。タイル235は、例えば、抵抗変化素子VRが低抵抗状態(LRS)である場合には論理0を生成し、抵抗変化素子VRが高抵抗状態(HRS)である場合には論理1を生成し、これにより、読み出しデータRDATAを生成する。タイル235は、例えば、生成した読み出しデータRDATAをPeriphery回路233に出力する。
(Pre-read)
 メモリセルMCの書き込みを行う場合、タイル235は、例えば、現在の抵抗変化素子VRの状態を判別し、判別の結果得られた読み出しデータRDATAと、書き込みデータWDATAとを比較する。タイル235は、例えば、抵抗変化素子VRが高抵抗状態(HRS)(=論理0)であり、書き込みたい値が1のとき、Set Verify Latchを1に設定する。タイル235は、例えば、抵抗変化素子VRが低抵抗状態(LRS)(=論理1)であり、書き込みたい値が0のとき、Reset Verify Latchを1に設定する。タイル235は、例えば、抵抗変化素子VRが高抵抗状態(HRS)(=論理0)であり、書き込みたい値が0のとき、Set Verify LatchおよびReset Verify Latchを0に設定する。タイル235は、例えば、抵抗変化素子VRが低抵抗状態(LRS)(=論理1)であり、書き込みたい値が1のとき、Set Verify LatchおよびReset Verify Latchを0に設定する。
(Set)
 タイル235は、例えば、Set Verify Latchが1のとき、ビット線BL0に+3.5Vを印加するとともに、下部ワード線LWL0に-3.5Vを印加する。これにより、下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCの抵抗変化素子VRが高抵抗状態(HRS)から低抵抗状態(LRS)に変化する。このようにして、メモリセルMCがセットされる。タイル235は、例えば、Set Verif
y Latchが0のとき、下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCに対して何もしない。
(Reset)
 タイル235は、例えば、Set Verify Latchが1のとき、ビット線BL0に-3.0Vを印加するとともに、下部ワード線LWL0に+3.0Vを印加する。これにより、下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCの抵抗変化素子VRが低抵抗状態(LRS)から高抵抗状態(HRS)に変化する。このようにして、メモリセルMCがリセットされる。タイル235は、例えば、Set Veri
fy Latchが0のとき、下部ワード線LWL0とビット線BL0との交差点にあるメモリセルMCに対して何もしない。
(Verify)
 タイル235は、例えば、リセット後の抵抗変化素子VRの状態を判別し、判別の結果得られた読み出しデータRDATAと、書き込みデータWDATAとを再度、比較する。タイル235は、例えば、比較結果に基づいて、Pre-readのときと同様の方法で、Set Verify LatchおよびReset Verify Latchの値をセットする。タイル235は、例えば、Set Verify LatchおよびReset Verify Latchのいずれも0のとき、書き込み成功と判断する。タイル235は、例えば、Set Verify LatchおよびReset Verify Latchのいずれかが1のとき、書き込み失敗と判断し、再度、Set動作、Reset動作およびVerify動作を実行する。この一連の動作は、Verify Loopと呼ばれる。
 図8は、メモリモジュール200におけるコントローラ210の内部構成例を詳細に表したものである。ホストコンピュータ100がアクセスするデータ単位に対して、3DXPパッケージ230-iに含まれる各バンク232-kが扱うデータ単位は非常に小さく、例えば、32バイトとなっている。最小限の遅延で、ホストコンピュータ100の要求(特にリード要求)に応えるため、コントローラ210は、ホストコンピュータ100のアクセス粒度を、複数のバンク232-kに分散して読み書きする。データ信頼性の確保等(例えば、読み出しエラーの発生を抑制するためのリフレッシュや、摩耗を抑制するWear-Leveling処理を含む)を目的として、コントローラ210は、定期的に、または、所定のアクセス毎に、ホストコンピュータ100のRead/Write要求に依らない読み書きを3DXPパッケージ230-iに対して行う。これは、BG(バックグラウンド)Read/Writeと呼ばれる。なお、BG Read/Writeと区別をするために、ホストコンピュータ100要求によるRead/Writeは、FG(フォアグラウンド)Read/Writeと呼ばれる。コントローラ210は、例えば各3DXPパッケージ230-iの1つのバンク232-kが扱うデータ単位(例えば256バイト)未満の粒度のFG Writeについては、まず、各3DXPパッケージ230-iから、既存のデータを読み出し、読み出したデータ(読み出しデータ)を部分的に書き換え、書き換えにより生成されたデータ(書き込みデータ)を各3DXPパッケージ230-iに書き込む。
 コントローラ210は、例えば、3DXPパッケージ230-iごとに1つずつ設けられ、3DXPパッケージ230-iとの通信を行う複数(例えば11個)のインターフェース部219-i(1≦i≦x)と、DRAM220との通信を制御するDRAMインターフェース部212とを有する。コントローラ210は、さらに、例えば、ECC制御部218と、ECP制御部217と、XOR制御部216と、CRC&アドレスチェック部215と、書き込みバッファ部214と、摩耗平準化(Wear-Leveling)部213とを有する。各構成要素の機能については、コントローラ210の機能についての説明の際に詳細に説明する。
 図9は、ECCやXOR パリティの符号化/復号化を行う単位であるセクタの一例を表したものである。
 ホストコンピュータ100は、例えば、コントローラ210に対して、256バイトのユーザデータと、8バイトのメタデータとを送信する。メタデータは、エンタープライズ向けメモリシステムで一般に用いられるデータ管理のための情報であり、例えば、アドレス情報、ホストコンピュータ100が用いるCRCチェックサム、バージョン番号、タイムスタンプなどを含む。コントローラ210は、例えば、ホストコンピュータ100から受信した264バイトのユーザデータに、4バイトの論理アドレスを付加したものを3DXPパッケージ230-iに記録する。この目的は2つあり、1つ目は、書き込み毎に論理アドレスを3DXPパッケージ230-iに記録しておけば、電源遮断からの復帰(再起動)時に、アドレスルックアップを、電源遮断時に記録データが消去されてしまうDRAM220およびSRAM211上に復元することにあり、2つ目は、読み出し時に正しいアドレスにアクセスできていることをチェックすることにある。
 4バイトの論理アドレスは、セクタにおけるデータ部(256バイトのユーザデータ、8バイトのメタデータ)によって生成した32ビットCRCと、論理アドレスとで、ビット by ビットでXORをとり、それにより得られたデータであってもよい。コントローラ210は、セクタにおけるデータ部(256バイトのユーザデータ、8バイトのメタデータ)および4バイトの論理アドレスをペイロードとして、BCH符号に基づき45バイトのECC パリティを生成する。ECC パリティの目的は2つあり、1つ目は、3DXPパッケージ230-i書き込み時に、インターフェース部等を介した伝送路にランダムに発生するビット誤り訂正を行うことにあり、2つ目は、3DXPメモリ230-i書き込み時に、偶発的に、または摩耗によってビット不良が発生したときに、所定のビット数まではビット不良の発生を許容し、読み出し時の誤り訂正によりデータ信頼性を担保することにある。
 コントローラ210は、さらに、セクタに書き込み不良が所定数以上ある場合に、不良ビット位置を示すECP(Error-Correction Pointer)を生成し、ECPが指し示す不良位置に本来書き込まれるべきビット列を7バイトのパッチとしてセクタに付加する。コントローラ210は、さらに、ユーザデータ、メタデータ、論理アドレス、ECC パリティおよびパッチからなる320バイトのコードワードを元に、XOR演算による32バイトのXOR パリティを生成する。コントローラ210は、XOR パリティを、セクタにおけるユーザデータを記録するチャネルとは異なるチャネルに記録する。コントローラ210は、例えば、セクタにおけるユーザデータおよびXOR パリティを、3DXPパッケージ群230における、チャネル番号、ダイIDおよびバンクアドレスの互いに異なる箇所に記録する。
 XOR パリティは、HDD(Hard Disk Drive)やSSD(Solid State Drive)で用いられるRAID5と類似のデータ保護手段であり、XOR パリティの目的は、複数の(例えば11チャネルの)3DXPパッケージ230-iのうち、いずれか1つが偶発的故障等によって全ビットを喪失した場合であっても、データ喪失を防止することにある。ECCやECPはビット単位の不良に対応できるが、上述したような大きな粒度の故障等には対応できない。XOR パリティを設けることにより、故障していない他のチャネル(例えば他の10チャネルの3DXPパッケージ230-i)から読み出したデータを元に正しいデータを復号することができる。さらに、XOR パリティを設けることで、後述するSerial/Parallel Schedullingが可能となり、低レイテンシ性能にも大きく寄与することができる。コントローラ210は、上記の合計352バイトを1セクタとし、セクタを32バイトずつ11個に分割し、分割により得られた11個の32バイトのデータをそれぞれ異なるインターフェース部を介して3DXPパッケージ230-iに記録する。
 図10は、各3DXPパッケージ230-iに設けられたピン構成例を表したものである。各3DXPパッケージ230-iには、2系統のアドレスバス端子が設けられており、一方のアドレスバス端子(ca1)は例えば4つ設けられており、他方のアドレスバス端子(ca2)は例えば2つ設けられている。アドレスバス端子ca1は、本開示の「第1アドレスバス端子」の一具体例に相当する。アドレスバス端子ca2は、本開示の「第2アドレスバス端子」の一具体例に相当する。
 コントローラ210は、例えば、図11に示したように、ダイID、コマンド、バンクアドレスおよびRowアドレスを、アドレスバス端子(ca1)を介して、複数クロックサイクル(例えば6つのクロックサイクル(6ns))で、各3DXPパッケージ230-iに送信する。コントローラ210は、例えば、図11に示したように、パリティおよびColomnアドレスを、アドレスバス端子(ca2)を介して、複数クロックサイクル(例えば6つのクロックサイクル(6ns))で、各3DXPパッケージ230-iに送信する。
 コントローラ210は、さらに、例えば、図10に示したように、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、共通の制御ピンを有する。つまり、コントローラ210は、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、共通の制御ピンを介してデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を送信する。コントローラ210は、例えば、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、同一のデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を同時に送信してもよい。コントローラ210は、例えば、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、一方の3DXPパッケージ230-i向けのデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を送信した後、他方の3DXPパッケージ230-i向けのデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を送信してもよい。
 コントローラ210は、さらに、例えば、図10に示したように、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca2)に対して、共通の制御ピンを有する。つまり、コントローラ210は、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca2)に対して、共通の制御ピンを介してデータ(パリティおよびColomnアドレス)を送信する。コントローラ210は、例えば、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca2)に対して、同一のデータ(パリティおよびColomnアドレス)を同時に送信してもよい。コントローラ210は、例えば、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、一方の3DXPパッケージ230-i向けのデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を送信した後、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca2)に対して、一方の3DXPパッケージ230-i向けのデータ(パリティおよびColomnアドレス)を送信してもよい。コントローラ210は、例えば、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca1)に対して、他方の3DXPパッケージ230-i向けのデータ(ダイID、コマンド、バンクアドレスおよびRowアドレス)を送信した後、3DXPパッケージ群230における2つの3DXPパッケージ230-iのアドレスバス端子(ca2)に対して、他方の3DXPパッケージ230-i向けのデータ(パリティおよびColomnアドレス)を送信してもよい。
 図11に示したように、各3DXPパッケージ230-iに対して、パケットにしてデータを送信することにより、例えば、各3DXPパッケージ230-iに対して、ダイID、コマンド、バンクアドレス、Rowアドレス、パリティおよびRowアドレスを別々のピンで送信した場合と比べて、各3DXPパッケージ230-iのピン数を削減することができる。また、複数のダイ231-j、複数のバンク232-kに対して並列にアクセスする際に、RowアドレスおよびColumnアドレスの送信タイミングが衝突し、データ伝送の効率が低下するのを避けることができる。
 図12は、3DXPパッケージ群230における読み出し動作の一例を表したものである。コントローラ210は、DRAM220上に、物理アドレスのうちの一部であるColumnアドレスと論理アドレスとの対応関係を示すマッピング情報であるColumnアドレスルックアップ情報221を保持している。コントローラ210は、さらに、コントローラ210内に内蔵されたSRAM211上に、物理アドレスのうちの一部であるRowアドレスと論理アドレスとの対応関係を示すマッピング情報であるRowアドレスルックアップ情報211Aを保持している。
 各3DXPパッケージ230-iでは、書き換え回数の限界がDRAMと比べて少ない回数(つまり、有限)となっており、繰り返しの書き換えによる摩耗の平準化のためにアドレス変換が必要である。そのため、コントローラ210は、DRAM220上のColumnアドレスルックアップ情報221を、所定のタイミングで(例えば、Read毎に)参照し、所定のアルゴリズムに基づいて、Columnアドレスルックアップ情報221を変更する。コントローラ210は、変更後のColumnアドレスルックアップ情報221を用いて、アドレス変換を行う。
 コントローラ210は、ホストコンピュータ100から、論理アドレスを含む読み出しコマンドを受信すると、Columnアドレスルックアップ情報221およびRowアドレスルックアップ情報211Aを用いて、読み出しコマンドに含まれる論理アドレスを物理アドレスに変換する。コントローラ210は、変換により得られた物理アドレスのうちの一部であるRowアドレスを、一方のアドレスバス端子(ca1)を介して各3DXPパッケージ230-iに入力する。コントローラ210は、その後、変換により得られた物理アドレスのうちの残りであるColumnアドレスを、他方のアドレスバス端子(ca2)を介して各3DXPパッケージ230-iに入力する。これにより、コントローラ210は、変換により得られた物理アドレスに対応するデータを各3DXPパッケージ230-iから読み出す。
 コントローラ210は、例えば、図12に示したように、ホストコンピュータ100から、論理アドレスを含む読み出しコマンドを受信すると、Rowアドレスルックアップ情報211AをSRAM211から読み出し、読み出したRowアドレスルックアップ情報211Aに基づいて、論理アドレスの一部をRowアドレスに変換する。コントローラ210は、変換によって得られたRowアドレス等を、アドレスバス端子(ca1)を介して各3DXPパッケージ230-iに入力する。各3DXPパッケージ230-iは、アドレスバス端子(ca1)を介して入力されたRowアドレス等をデコードし、メモリセルアレイ241に設定する。
 コントローラ210は、各3DXPパッケージ230-iがRowアドレス等をデコードし、メモリセルアレイ241のWL電圧を静定させる期間(例えば、20ns+50ns)内に、Columnアドレスルックアップ情報221をDRAM220から読み出すとともに、読み出したRowアドレスルックアップ情報211Aに基づいて、論理アドレスの一部をColumnアドレスに変換する。コントローラ210は、変換によって得られたColumnアドレス等を、アドレスバス端子(ca2)を介して各3DXPパッケージ230-iに入力する。コントローラ210は、Rowアドレス等を、アドレスバス端子(ca1)を介して各3DXPパッケージ230-iに入力した時から、所定の期間(例えば、50ns後)に、Columnアドレス等を、アドレスバス端子(ca2)を介して各3DXPパッケージ230-iに入力する。各3DXPパッケージ230-iは、アドレスバス端子(ca2)を介して入力されたColumnアドレス等をデコードし、Rowアドレス等をメモリセルアレイ241に設定するのに続いて、メモリセルアレイ241のWL電圧を静定させる。つまり、コントローラ210がDRAM220からColumnアドレスルックアップ情報221を読み出したり、各3DXPパッケージ230-iがColumnアドレス等をデコードしたりするのに要する期間(例えば、50nm+20nm)は、各3DXPパッケージ230-iがRowアドレス等をデコードし、メモリセルアレイ241のWL電圧を静定させる期間(例えば、20ns+50ns)内に収まっている。
 従って、センスアンプ246における処理(例えば、20ns)や、R/Wラッチ245における処理(例えば、30ns)、R/Wラッチ245から入力された読み出しデータをコントローラ210においてデコードする処理(例えば、20ns)を考慮したとしても、ホストコンピュータ100がメモリモジュール200からデータの読み出しに要する時間(リードレイテンシ)を、DRAMの平均リードレイテンシ(300ns程度)と同等か、または、それよりも短い時間(例えば、200ns)にすることができる。
(Wear-Leveling)
 DRAM220に保存するColumnアドレスルックアップ情報221では、8kバイトのセクションが変換の単位となっている。このとき、Columnアドレスルックアップ情報221の変換単位(例えば、8kバイトのセクション)は、1つのチャネル(3DXPパッケージ230-i)を通じて1つのダイ231-jの1つのバンク232-kにアクセスする際のデータ単位(例えば、32バイト)×3DXPパッケージ群230に含まれる3DXPパッケージ230-iの数(つまりチャネル数)(例えば、11チャネル)×同一のダイ231-jに属するセクタの数(例えば、32セクタ)である。3DXPパッケージ群230において、同一のRow(ワード線WL)上の32個のメモリセルMCに、8kバイトのセクションに含まれる32個のセクタの各1ビットが記録される。このように、同一のRow(ワード線WL)上のメモリセルMCを記録対象にするのは、SRAM211のRowアドレスルックアップ情報211Aから得られるアドレス情報がRowアドレスだからである。また、32個のセクタをひとまとまりとしたのは、Columnアドレスルックアップ情報221に必要なDRAM容量を現実的な値(例えば4Gb未満)とするためである。
 コントローラ210は、Columnアドレスルックアップ情報221において128セクション(例えば、512kバイト)ごとにブロックを定義し、カウンタベースのブロック間スワップを行ってもよい。コントローラ210は、例えば、ブロックごとに1つずつ割り当てられた複数のカウンタを保有しており、いずれかのカウンタが所定の閾値を超えたとき、所定の閾値を超えたカウンタに対応するブロックについて、所定のアルゴリズムに基づいて、アドレス変換を行ってもよい。なお、コントローラ210は、例えば、DRAM220上のColumnアドレスルックアップ情報221を、所定のタイミングで(例えば、Read毎に)参照し、所定のアルゴリズムに基づいて、Columnアドレスルックアップ情報221に対してアドレス変換を行ってもよい。
 ここで、3DXPパッケージ群230において、同一のRow(ワード線WL)上の4096個のメモリセルMCに、ブロックに属する128セクションに含まれる4096個のセクタの各1ビットが記録される。1つのタイル235において、例えば、1本のワード線WLに対して4096本のビット線BLが交差しており、各交差点にメモリセルMCが設けられているとする。この場合、1つのタイル235において、同一のRow(ワード線WL)上には、4096個のメモリセルMCしか存在しない。従って、この場合には、ブロックサイズは、512kバイト以下で定義される必要がある。ブロックサイズが大きいほど、Rowアドレスルックアップ情報211Aに必要なSRAM容量を小さくすることができるので、ブロックサイズは、1つのタイル235における同一のRow(ワード線WL)上に設けられたメモリセルMCの合計サイズ(例えば、512kバイト)となっていることが好ましい。
 3DXPパッケージ群230の容量サイズは、3DXPパッケージ230-iあたりの容量サイズが64Gバイトのとき、704Gバイトとなる。この704Gバイトのうち、ユーザデータの記録に用いられる容量サイズが512Gバイトとなっており、残りがパリティなどに用いられるとする。このとき、3DXPパッケージ群230に含まれるブロック数は、512Gバイト/512kバイト=1M個となり、ブロックアドレスを20ビットで規定したとき、ブロックアドレスのテーブルサイズは、20ビット×1M個=2.5Mバイトとなる。14nm logic processのHigh Density 6-transistorSRAMの場合、2.5Mバイトの容量は、約2mm×約2mmで実現可能である。従って、ブロックアドレスのテーブルを記憶したSRAMをコントローラ210に実装することが可能である。
(Read/Write)
 図13は、3DXPパッケージ群230における読み出し動作および書き込み動作の一例を表したものである。コントローラ210は、書き込みに要する時間をできるだけ少なくするために、ユーザデータを含む書き込みデータを全て、1つの3DXPパッケージ230-iに書き込むことはせず、複数の3DXPパッケージ230-iに対して分散して書き込む。コントローラ210は、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータを含む書き込みデータを、複数の3DXPパッケージ230-iに対して分散して書き込む。コントローラ210は、例えば、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータを含む1セクタ(352バイト)の書き込みデータを、11個の3DXPパッケージ230-iに対して、例えば32バイトずつ分散して書き込む。
 また、コントローラ210は、読み出しに要する時間をできるだけ少なくするために、ユーザデータを含む読み出しデータを全て、1つの3DXPパッケージ230-iから読み出すことはせず、複数の3DXPパッケージ230-iに分散して書き込まれた32バイトのデータを、複数の3DXPパッケージ230-iから読み出す。コントローラ210は、例えば、11個の3DXPパッケージ230-iに分散して書き込まれた32バイトのデータを、11個の3DXPパッケージ230-iから読み出す。
 コントローラ210は、例えば、書き込みの際に、複数の3DXPパッケージ230-iに対して同じタイミングで書き込むパラレルライトを行う。コントローラ210は、例えば、読み出しの際に、複数の3DXPパッケージ230-iから同じタイミングで読み出すパラレルリードを行う。なお、コントローラ210は、例えば、書き込みの際に必要に応じて、複数の3DXPパッケージ230-iに対して、32バイトのデータを順次書き込むシリアルライトを行ってもよい。コントローラ210は、例えば、読み出しの際に必要に応じて、複数の3DXPパッケージ230-iから、複数の3DXPパッケージ230-iに分散して書き込まれた32バイトのデータを順次読み出すシリアルリードを行ってもよい。以下に、上述したパラレルライト、パラレルリード、シリアルライト、シリアルリードについて詳細に説明する。
 コントローラ210は、例えば、図13の(1)に示したように、ホストコンピュータ100から、256バイトのユーザデータを含む書き込み要求を受信すると、256バイトのユーザデータを含む1セクタの書き込みデータを生成し、生成した1セクタの書き込みデータを、複数のチャネルのbusyが互いに重ならないように、10個のチャネル(10個の3DXPパッケージ230-i)に1チャネルずつ、例えば32バイトずつ分散して書き込む(シリアルライト)。このとき、1セクタの書き込みデータの書き込みに対して、例えば、1.2μs×11ch=13.2μsの時間がかかる。
 コントローラ210は、例えば、図13の(2)に示したように、ホストコンピュータ100から、ユーザデータの読み出し要求を受信すると、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)を除く10チャネル(10個の3DXPパッケージ230-i)から、読み出し要求に含まれるアドレスが属するセクタのうち、10チャネル(10個の3DXPパッケージ230-i)分のデータ(例えば320バイトのデータ)を同じタイミングで読み出す(パラレルリード)。つまり、コントローラ210は、シリアルライトを行っている最中に、読み出しコマンドを受信すると、受信した読み出しコマンドに含まれる論理アドレスに対応するデータ記憶領域を含むデータ単位のデータのうち、シリアルライトによってbusyとなっているチャネル(3DXPパッケージ230-i)から得られるデータを除くデータを、複数のチャネル(3DXPパッケージ230-i)のうち、シリアルライトによってbusyとなっているチャネル(3DXPパッケージ230-i)を除く複数のチャネル(3DXPパッケージ230-i)から読み出すパラレルリードを行う。
 続いて、コントローラ210は、例えば、10チャネルから読み出した10個のデータに含まれる32バイトのXOR パリティを用いて、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)から読み出す予定だったデータ(例えば32バイトのデータ)を復元する。つまり、コントローラ210は、例えば、パラレルリードを行うことにより得られたデータに含まれるXOR パリティを用いて、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)から読み出す予定だったデータ(例えば32バイトのデータ)を復元する。続いて、コントローラ210は、例えば、復元により得られたデータを含むデータから、読み出し要求に含まれるアドレスに対応するデータを抽出し、ホストコンピュータ100に送信する。
 コントローラ210は、例えば、図13の(3)に示したように、所定の条件を満たしたときに、ホストコンピュータ100からの要求なしに(つまり、バックグラウンドで)、256バイトのユーザデータを含む1セクタのデータの読み出しを行う。コントローラ210は、例えば、図13の(3)に示したように、読み出し対象のデータを、複数のチャネルのbusyが互いに重ならないように、11個のチャネル(11個の3DXPパッケージ230-i)から1チャネルずつ、例えば32バイトずつ読み出す(シリアルリード)。つまり、コントローラは、所定のアドレスに対応するデータ記憶領域を含むデータ単位のデータを、複数の不揮発性メモリのbusyが互いに重ならないように、複数のチャネル(3DXPパッケージ230-i)から読み出すシリアルリードを行う。
 コントローラ210は、例えば、図13の(4)に示したように、図13の(3)のバックグラウンドリード(BG Read)を行っている最中に、ホストコンピュータ100から、64バイトのユーザデータを含む書き込み要求を受信したとする。このとき、コントローラ210は、例えば、図13の(4)に示したように、読み出し中(Busy)のチャネル(3DXPパッケージ230-i)を除く10チャネル(10個の3DXPパッケージ230-i)から、書き込み要求に含まれるアドレスが属するセクタのうち、10チャネル(10個の3DXPパッケージ230-i)分のデータ(例えば320バイトのデータ)を同じタイミングで読み出す(パラレルリード)。つまり、コントローラは、シリアルリードを行っている最中に、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータを書き込む予定のデータ記憶領域を含むデータ単位のデータのうち、シリアルリードによってbusyとなっているチャネル(3DXPパッケージ230-i)から得られるデータを除くデータを、複数のチャネル(3DXPパッケージ230-i)のうち、シリアルリードによってbusyとなっているチャネル(3DXPパッケージ230-i)を除く複数のチャネル(3DXPパッケージ230-i)から読み出すパラレルリードを行う。
 続いて、コントローラ210は、例えば、10チャネル(10個の3DXPパッケージ230-i)から読み出した10個のデータに含まれる32バイトのXOR パリティを用いて、読み出し中(Busy)のチャネル(3DXPパッケージ230-i)から読み出す予定だったデータ(例えば32バイトのデータ)を復元する。続いて、コントローラ210は、例えば、復元により得られたデータを含む1セクタのデータのうち、書き込み要求に含まれるアドレスに対応する64バイトのデータに対して、ホストコンピュータ100から受信した64バイトのユーザデータを上書きする。続いて、コントローラ210は、例えば、上書きにより得られた1セクタのデータを、複数のチャネルのbusyが互いに重ならないように1チャネルずつ、例えば32バイトずつ分散して書き込む(シリアルライト)。つまり、コントローラ210は、例えば、パラレルリードを行うことにより得られたデータに含まれるXOR パリティを用いて、読み出し中(Busy)のチャネル(3DXPパッケージ230-i)から読み出す予定だったデータ(例えば32バイトのデータ)を復元し、復元により得られたデータを含むデータに対して、受信したユーザデータを上書きし、それにより得られたデータを、複数のチャネル(3DXPパッケージ230-i)に対して分散して書き込む。
 コントローラ210は、例えば、図13の(5)に示したように、図13の(4)のシリアルライトを行っている最中に、ホストコンピュータ100から、128バイトのユーザデータを含む書き込み要求を受信したとする。このとき、コントローラ210は、例えば、図13の(5)に示したように、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)を除く10チャネル(10個の3DXPパッケージ230-i)から、書き込み要求に含まれるアドレスが属するセクタのうち、10チャネル(10個の3DXPパッケージ230-i)分のデータ(例えば320バイトのデータ)を同じタイミングで読み出す(パラレルリード)。続いて、コントローラ210は、例えば、10チャネルから読み出した10個のデータに含まれる32バイトのXOR パリティを用いて、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)から読み出す予定だったデータ(例えば32バイトのデータ)を復元する。続いて、コントローラ210は、例えば、復元により得られたデータを含む1セクタのデータのうち、書き込み要求に含まれるアドレスに対応する128バイトのデータに対して、ホストコンピュータ100から受信した64バイトのユーザデータを上書きする。続いて、コントローラ210は、例えば、上書きにより得られた1セクタのデータを、複数のチャネルのbusyが互いに重ならないように、11個のチャネル(11個の3DXPパッケージ230-i)に1チャネルずつ、例えば32バイトずつ分散して書き込む(シリアルライト)。
 コントローラ210は、例えば、図13の(6)に示したように、図13の(5)のシリアルライトを行っている最中に、ホストコンピュータ100から、256バイトのユーザデータを含む書き込み要求を受信したとする。このとき、コントローラ210は、例えば、図13の(6)に示したように、256バイトのユーザデータを含む1セクタの書き込みデータを生成した後、既に実行中のシリアルライトを一時中断して、生成した1セクタの書き込みデータを同じタイミングで書き込んでもよい(パラレルライト)。
 ところで、コントローラ210は、例えば、図8に示したように、書き込みバッファ部214を有している。この書き込みバッファ部214は、ホストコンピュータ100から書き込み要求を受信したときに書き込み待ちのデータを格納するためのバッファである。コントローラ210は、例えば、図13の(6)に示したように、256バイトのユーザデータを含む書き込み要求を受信した場合に、受信したデータに対して、書き込みバッファ部214の空き容量が十分でないときには(例えば、書き込みバッファ部214の空き容量が所定の閾値を超えるときには)、既に実行中のシリアルライトを一時中断して、1セクタの書き込みデータを同じタイミングで書き込むことが好ましい。一方、コントローラ210は、例えば、256バイトのユーザデータを含む書き込み要求を受信した場合に、受信したデータに対して、書き込みバッファ部214の空き容量が十分にあるときには、実行中のシリアルライトが完了した後に、1セクタの書き込みデータを同じタイミングで書き込むことが好ましい。
 書き込みバッファ部214の空き容量については、例えば、書き込みバッファ部214内に設けられた未書き込みデータ量Queによって管理される。コントローラ210は、例えば、ホストコンピュータ100からの書き込み要求を受信する度に、受信したデータ量に応じて、未書き込みデータ量Queの数値を増やし、書き込み要求に応じた書き込みが完了する度に、書き込みが完了したデータ量に応じて、未書き込みデータ量Queの数値を減らす。コントローラ210は、例えば、未書き込みデータ量Queの数値が所定の閾値を超えると、書き込みバッファ部214の空き容量が十分でないと判断して、実行中のシリアルライトを一時中断し、新たな書き込み処理をパラレルライトで実行する。コントローラ210は、例えば、未書き込みデータ量Queの数値が所定の閾値を超えない場合には、書き込みバッファ部214の空き容量が十分あると判断して、実行中のシリアルライトが完了した後に、新たな書き込み処理を実行する。
(ECC コードワード)
 本実施の形態では、コントローラ210は、3DXPパッケージ群230へのデータ書き込みや、3DXPパッケージ群230からのデータ読み出しに際して、2階層のECCコードワードを用いて、誤り訂正を行う。
 図14は、2階層のECC コードワードの一例を表したものである。図15は、2階層のECC コードワードを用いたデータ読み出しを行う回路の機能ブロック例を表したものである。図15には、11チャネル中の任意の10チャネルからデータを読み出すときの機能ブロック例が例示されている。図16は、2階層のECC コードワードを用いたデータ書き込みを行う回路の機能ブロック例を表したものである。
(2階層のECC コードワード)
 2階層のECC コードワードのうち、サイズの小さい方のコードワード(ECC1コードワード)は、相対的に低ビット数の誤り訂正を可能とするパリティを含む。ECC1コードワードは、例えば、2bit誤りまでの誤り訂正を可能とするECC1パリティを含む。ECC1コードワードは、例えば、32バイトのユーザデータと、1バイトのメタデータと、4ビットの論理アドレスと、18ビットのECC1パリティとによって構成された286ビットのデータである。18ビットのECC1パリティが、ECC1コードワードにおいて、2bit誤りまでの誤り訂正を可能とする。ECC2コードワードは、相対的に高ビット数の誤り訂正を可能とするパリティを含む。ECC2コードワードは、例えば、5bit誤りまでの誤り訂正を可能とするECC2パリティを含む。ECC2コードワードは、例えば、8つのECC1コードワード(ECC1コードワードA~ECC1コードワードH)と、278バイトのECC2パリティとによって構成されている。278バイトのECC2パリティが、ECC2コードワードにおいて、5bit誤りまでの誤り訂正を可能とする。
(データ読み出し)
 コントローラ210は、例えば、図15に示したように、XOR制御部216と、ECP制御部217と、8つのECC1デコーダおよび1つのECC2デコーダを含むECC制御部218と、CRC&アドレスチェック部215と、分離部222とを有している。
 XOR制御部216は、XORデコーダの機能を有している。XOR制御部216は、ホストコンピュータ100から、ユーザデータの読み出し要求を受信すると、書き込み中(Busy)のチャネル(3DXPパッケージ230-i)を除く10チャネル(10個の3DXPパッケージ230-i)から、読み出し要求に含まれるアドレスが属するセクタのうち、10チャネル(10個の3DXPパッケージ230-i)分のデータ(例えば320バイトのデータ)を同じタイミングで読み出す(パラレルリード)。
 XOR制御部216は、読み出した10チャネル分のデータに含まれる32バイトのXOR パリティと、書き込み中(Busy)のチャネルを示すデータCh_infoとに基づいて、書き込み中(Busy)のチャネルから読み出す予定だったデータ(例えば32バイトのデータ)を復元する。XOR制御部216は、入力された10チャネル分のデータのうち、32バイトのXOR パリティに対して、復元した32バイトのデータを上書きする。XOR制御部216は、上書きにより得られた320バイトのデータをECP制御部217に出力する。
 ECP制御部217は、XOR制御部216から320バイトのデータが入力されると、入力された320バイトのデータに含まれる7バイトのパッチと、不良ビットの位置を示すデータpointerとに基づいて、XOR制御部216から入力された320バイトのデータのうち、7バイトのパッチを除くデータ(313バイトのデータ)において、不良ビットにより喪失したデータを復元する。復元後の313バイトのデータは、図14に示したECC2コードワードに相当する。ECP制御部217は、313バイトのデータ(ECC2コードワード)をECC制御部218に出力する。
 ECC制御部218は、8つのECC1デコーダと、1つのECC2デコーダとを有している。ECC制御部218は、ECP制御部217からECC2コードワードが入力されると、入力されたECC2コードワードから27バイトのECC2パリティを抽出する。ECC制御部218は、さらに、入力されたECC2コードワードのうち、27バイトのECC2パリティを除くデータ(286バイトのデータ)を8つのデータ(286ビットのデータ)に分割する。分割後の286ビットのデータは、図14に示したECC1コードワードに相当する。
 ECC制御部218は、8つの286ビットのデータ(ECC1コードワード)をECC1デコーダに1つずつ出力する。各ECC1デコーダは、入力されたECC1コードワードに含まれる18ビットのECC1パリティに基づいて、入力されたECC1コードワードにおいて2ビットまでの誤りを訂正する。各ECC1デコーダは、訂正後の286ビットのデータ(ECC1コードワード)をECC2デコーダに出力する。ECC2デコーダは、各ECC1デコーダから入力された8つのECC1コードワード(286バイトのデータ)と、27バイトのECC2パリティとに基づいて、入力された8つのECC1コードワード(286バイトのデータ)のうち、27バイトのECC2パリティを除くデータにおいて、5ビットまでの誤りを訂正する。ECC2デコーダは、訂正後の268バイトのデータをCRC&アドレスチェック部215に出力する。
 CRC&アドレスチェック部215は、ECC制御部218から268バイトのデータが入力されると、入力された268バイトのデータのアドレスと、ホストコンピュータ100からアクセスしようとする論理アドレスとを対比して、誤りの有無を確認する。CRC&アドレスチェック部215は、誤りがないことを確認すると、268バイトのデータを分離部222に出力する。分離部222は、入力された268バイトのデータの中から、ホストコンピュータ100からアクセスしようとする論理アドレスに対応するデータ(ユーザデータ+メタデータ)をホストコンピュータ100に送信する。ホストコンピュータ100に送信するデータは、例えば、66バイトのデータ(64バイトのユーザデータ+2バイトのメタデータ)、132バイトのデータ(128バイトのユーザデータ+4バイトのメタデータ)、264バイトのデータ(258バイトのユーザデータ+8バイトのメタデータ)である。
(データ書き込み)
 コントローラ210は、例えば、図16に示したように、書き込みバッファ部214と、CRC&アドレスチェック部215と、8つのECC1エンコーダおよび1つのECC2エンコーダを含むECC制御部218と、ECP制御部217と、XOR制御部216と、分離部222とを有している。
 書き込みバッファ部214は、ホストコンピュータ100から、データ(ユーザデータ+メタデータ)を含む書き込み要求が入力されると、書き込み要求のサイズが66バイトまたは132バイトの場合には、入力された書き込み要求に含まれるアドレスが属するセクタにおけるデータ部(256バイトのユーザデータ、8バイトのメタデータ)を読み出す。書き込みバッファ部214は、読み出したデータ部に対して、ホストコンピュータ100から受信したデータを上書きし、それにより得られた264バイトのデータを一時的に保存する。書き込み要求のサイズが264バイトの場合には、書き込みバッファ部214は、上記読み出しを行わず、ホストコンピュータ100から受信したデータをそのまま書き込みバッファ部214に一時的に保存する。書き込みバッファ部214は、このとき、必要に応じて未書き込みデータ量Queを更新する。書き込みバッファ部214は、所定のタイミングで、データ(ユーザデータ+メタデータ)をCRC&アドレスチェック部215に出力する。
 CRC&アドレスチェック部215は、書き込みバッファ部214から264バイトのデータが入力されると、入力された264バイトのデータに基づいて、32ビットCRCを生成する。CRC&アドレスチェック部215は、生成した32ビットCRCと、論理アドレス値とで、ビット by ビットでXORをとり、それにより4バイトの論理アドレスを生成する。CRC&アドレスチェック部215は、書き込みバッファ部214から入力された264バイトのデータと、生成した4バイトの論理アドレスとからなる268バイトのデータをECC制御部218に出力する。
 ECC制御部218は、8つのECC1エンコーダと、1つのECC2エンコーダとを有している。ECC制御部218は、CRC&アドレスチェック部215から268バイトのデータが入力されると、入力された268バイトのデータを8つのデータ(268ビットのデータ)に分割する。ECC制御部218は、分割後の8つのデータ(268ビットのデータ)をECC1エンコーダに1つずつ出力する。各ECC1エンコーダは、BCH符号に基づき、入力された268ビットのデータから、18ビットのECC パリティを生成する。各ECC1エンコーダは、入力された268ビットのデータと、生成した18ビットのECC パリティとを用いて、286ビットのデータを生成する。生成した286ビットのデータは、図14に示したECC1コードワードに相当する。つまり、コントローラ210は、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータと、受信したユーザデータに基づいて生成した、相対的に低ビット数の誤り訂正を可能とするECC パリティとを用いて複数のECC1コードワードを生成する。
 各ECC1エンコーダは、生成した286ビットのデータ(ECC1コードワード)をECC2エンコーダに出力する。ECC2エンコーダは、各ECC1エンコーダからECC1コードワードが入力されると、入力された8つのECC1コードワードに基づいて、27バイトのECC2パリティを生成する。ECC2エンコーダは、各ECC1エンコーダから入力された8つのECC1コードワードと、27バイトのECC2パリティとを用いて、313バイトのECC2コードワードを生成する。つまり、コントローラ210は、生成した複数のECC1コードワードと、生成した複数のECC1コードワードに基づいて生成した、相対的に高ビット数の誤り訂正を可能とするECC2パリティとを用いてECC2コードワードを生成する。ECC2エンコーダは、生成したECC2コードワードをECP制御部217に出力する。
 ECP制御部217は、313バイトのECC2コードワードと、不良ビットの位置を示すデータpointerとに基づいて、7バイトのパッチを生成する。ECP制御部217は、313バイトのECC2コードワードと、生成した7バイトのパッチとを用いて、320バイトのデータを生成する。ECP制御部217は、生成した320バイトのデータをXOR制御部216に出力する。XOR制御部216は、ECP制御部217から入力された320バイトのデータに基づいて、32バイトのXOR パリティを生成する。XOR制御部216は、ECP制御部217から入力された320バイトのデータと、32バイトのXOR パリティとを用いて、352バイトのデータ(1セクタのデータ)を生成する。XOR制御部216は、生成した352バイトのデータ(1セクタのデータ)を分離部222に出力する。つまり、352バイトのデータ(1セクタのデータ)は、メモリパッケージ群230に書き込まれる書き込みデータであり、ユーザデータを含む320バイトのデータ(313バイトのECC2コードワード+7バイトのパッチ)と、320バイトのデータ(313バイトのECC2コードワード+7バイトのパッチ)に基づいて生成されたXOR パリティとにより構成される。
 分離部222は、例えば、11個のチャネル(11個の3DXPパッケージ230-i)のうち、1つのチャネル(11個の3DXPパッケージ230-i)を除く10個のチャネル(10個の3DXPパッケージ230-i)に対して、320バイトのデータ(313バイトのECC2コードワード+7バイトのパッチ)を分散して書き込むとともに、残りの1つのチャネル(残りの1つの3DXPパッケージ230-i)に対して、320バイトのデータ(313バイトのECC2コードワード+7バイトのパッチ)に基づいて生成したXOR パリティを書き込む。つまり、コントローラ210は、生成したECC2コードワードを含むデータを書き込みデータとして11個のチャネル(11個の3DXPパッケージ230-i)に出力する。
 分離部222は、入力された352バイトのデータ(1セクタのデータ)の中から、書き込み要求に含まれるデータ(ユーザデータ+メタデータ)と、そのデータについてのパリティなどのデータとを抽出し、抽出したデータを、抽出したデータのサイズに応じた数のチャネルに分散して書き込む。ここで、書き込み要求に含まれるデータ(ユーザデータ+メタデータ)のサイズが66バイトである場合、分離部222は、入力された352バイトのデータ(1セクタのデータ)の中から160バイトのデータを抽出し、抽出したデータを、例えばch.0,ch.1,ch.8,ch.9,ch.10の合計5個のチャネルに分散して書き込む。また、書き込み要求に含まれるデータ(ユーザデータ+メタデータ)のサイズが132バイトである場合、分離部222は、入力された352バイトのデータ(1セクタのデータ)の中から224バイトのデータを抽出し、抽出したデータを、例えばch.0,ch.1,ch.2,ch.3,ch.8,ch.9,ch.10の合計7個のチャネルに分散して書き込む。書き込み要求に含まれるデータ(ユーザデータ+メタデータ)のサイズが264バイトである場合、分離部222は、入力された352バイトのデータを、例えばch.0~ch.10の合計11個のチャネルに分散して書き込む。
(2階層のECC コードワードの配置)
 図17は、2階層のECC コードワードの配置例を表したものである。コントローラ210は、例えば、ホストコンピュータ100から、ユーザデータを含む書き込み要求が入力された場合、入力されたユーザデータを、ユーザデータのサイズに応じた数のチャネル(3DXPパッケージ230-i)に分散して書き込む。
 コントローラ210は、例えば、ホストコンピュータ100から、64バイトのユーザデータを含む書き込み要求が入力された場合、入力された64バイトのユーザデータを、アドレスバス端子(ca1,ca2)が共有された2つのチャネル({ch.0,ch.1},{ch.2,ch.3},{ch.4,ch.5},または{ch.6,ch.7})に分散して書き込む。このとき、コントローラ210は、例えば、入力された64バイトのユーザデータについてのメタデータ(2バイト)、論理アドレス(8ビット)、ECC1パリティ(36ビット)およびパッチ(2ビット)を、1つのチャネル(例えば、ch.8)を介して、1つの3DXPパッケージ230-iに書き込む。つまり、コントローラ210は、例えば、ホストコンピュータ100から、64バイトのユーザデータを含む書き込み要求が入力された場合、入力された64バイトのユーザデータと、入力された64バイトのユーザデータについてのメタデータ(2バイト)、論理アドレス(8ビット)、ECC1パリティ(36ビット)およびパッチ(2ビット)とにより構成された2つのECC1コードワードを、3つの3DXPパッケージ230-iに分散して書き込む。
 さらに、コントローラ210は、例えば、入力された64バイトのユーザデータについてのECC2パリティ(27バイト)およびパッチ(5バイト)を、1つのチャネル(例えば、ch.9)を介して、1つの3DXPパッケージ230-iに書き込む。さらに、コントローラ210は、例えば、入力された64バイトのユーザデータについてのXORパリティ(32バイト)を、1つのチャネル(例えば、ch.9)を介して、1つの3DXPパッケージ230-iに書き込む。
 コントローラ210は、例えば、ホストコンピュータ100から、128バイトのユーザデータを含む書き込み要求が入力された場合、入力された128バイトのユーザデータを、アドレスバス端子(ca1,ca2)が共有された2組のチャネル(例えば、{ch.0,ch.1,ch.2,ch.3}、{ch.2,ch.3,ch.4,ch.5}、または{ch.4,ch.5,ch.6,ch.7})を介して、2つの3DXPパッケージ230-iに書き込む。このとき、コントローラ210は、例えば、入力された128バイトのユーザデータについてのメタデータ(4バイト)、論理アドレス(16ビット)、ECC1パリティ(72ビット)およびパッチ(2ビット)を、1つのチャネル(例えば、ch.8)を介して、1つの3DXPパッケージ230-iに書き込む。つまり、コントローラ210は、例えば、ホストコンピュータ100から、128バイトのユーザデータを含む書き込み要求が入力された場合、入力された128バイトのユーザデータと、入力された128バイトのユーザデータについてのメタデータ(4バイト)、論理アドレス(16ビット)、ECC1パリティ(72ビット)およびパッチ(2ビット)とにより構成された4つのECC1コードワードを、5つの3DXPパッケージ230-iに分散して書き込む。
 さらに、コントローラ210は、例えば、入力された128バイトのユーザデータについてのECC2パリティ(27バイト)およびパッチ(5バイト)を、1つのチャネル(例えば、ch.9)を介して、1つの3DXPパッケージ230-iに書き込む。さらに、コントローラ210は、例えば、入力された128バイトのユーザデータについてのXORパリティ(32バイト)を、1つのチャネル(例えば、ch.9)を介して、1つの3DXPパッケージ230-iに書き込む。
 図18は、2階層のECC コードワードの配置例を表したものである。図17に示した配列では、ユーザデータとは異なるデータ(例えばパリティなどのデータ)が常に、ch.8,ch.9,ch.10に入力される場合、3DXPパッケージ群230にデータを書き込む際に、データアクセスがch.8,ch.9,ch.10に集中する。このとき、データアクセスが集中するch.8,ch.9,ch.10に接続された各3DXPパッケージ230-iの特性が早期に劣化する可能性がある。従って、データアクセスが分散するような2階層のECC コードワードの配置が望ましい。
 そこで、コントローラ210は、例えば、図18に示したように、ホストコンピュータ100から入力された物理アドレス(PA)をチャネル数(例えば11)で除算し、それにより得られる余りの値に基づいて、ユーザデータとは異なるデータ(例えばパリティなどのデータ)を書き込むチャネルを動的に設定してもよい。
 コントローラ210は、例えば、PA mod(余りの値)=0のとき、ch.8,ch.9,10を介して、ユーザデータとは異なるデータ(例えばパリティなどのデータ)を書き込む。コントローラ210は、例えば、PA mod(余りの値)=1のとき、ch.9,ch.10,0を介して、ユーザデータとは異なるデータ(例えばパリティなどのデータ)を書き込む。コントローラ210は、例えば、PA mod(余りの値)が2,3,4,5,6,7,8,9,10と1つずつ増えるにつれて、ユーザデータとは異なるデータ(例えばパリティなどのデータ)を書き込むチャネルをシフトする。このように、ユーザデータとは異なるデータ(例えばパリティなどのデータ)を書き込むチャネルを動的にシフトすることにより、データアクセスが特定のチャネルに集中するのが防止される。
[効果]
 次に、実施の形態に係るメモリモジュール200の効果について説明する。
 従来、不揮発性を備える書き換え可能な半導体記憶装置が知られている。近年では、不揮発性を備えつつ、DRAMを超える記憶容量を備える書き換え可能な半導体記憶装置として、抵抗変化型RAM(ReRAM)が注目されている。ReRAMは、電圧の印加によって変化するセルの抵抗値の状態により情報を記録する。とりわけ、Xp-ReRAMは、ワード線とビット線との交差部に、記憶素子として機能する抵抗変化素子(VR)と双方向ダイオード特性を有する選択素子(SE)とが直列に接続されたセル構造を有する。
 ところで、上述の半導体記憶装置と、上述の半導体記憶装置に対するアクセス制御を行うコントローラとを備えたメモリモジュールでは、DRAMに匹敵する高い読み出し速度が求められている。
 本実施の形態では、Rowアドレスがアドレスバス端子ca1を介して3DXPパッケージ230-iに入力された後、Columnアドレスがアドレスバス端子ca2を介して3DXPパッケージ230-iに入力されることにより、RowアドレスおよびColumnアドレスに対応するデータが3DXPパッケージ230-iから読み出される。これにより、例えば、読み出しコマンドに含まれる論理アドレスのうちの一部である第1論理アドレスがRowアドレスに変換されるとともに、Rowアドレスがアドレスバス端子ca1を介して3DXPパッケージ230-iに入力される期間(以下、「第1の期間」と称する。)内に、読み出しコマンドに含まれる論理アドレスのうちの残りである第2論理アドレスがColumnアドレスに変換される。その結果、例えば、1系統のアドレスバス端子しか不揮発性メモリに設けられておらず、アドレス変換や、不揮発性メモリへのアドレス入力が順番に行われる場合と比べて、少なくとも、第2論理アドレスをアドレスバス端子ca1に変換するのに要する時間だけ、読み出しに要する時間(リードレイテンシ)を短縮することができる。従って、高い読み出し速度を得ることができる。
 本実施の形態では、第1の期間内に、読み出しコマンドに含まれる論理アドレスのうちの残りである第2論理アドレスがColumnアドレスに変換される。これにより、少なくとも、第2論理アドレスをアドレスバス端子ca1に変換するのに要する時間だけ、読み出しに要する時間(リードレイテンシ)を短縮することができる。従って、高い読み出し速度を得ることができる。
 本実施の形態では、第1期間内に、DRAM220からColumnアドレスルックアップ情報221が読み出されるとともに、読み出されたColumnアドレスルックアップ情報221を用いて、第2論理アドレスがColumnアドレスに変換される。これにより、これにより、少なくとも、第2論理アドレスをアドレスバス端子ca1に変換するのに要する時間だけ、読み出しに要する時間(リードレイテンシ)を短縮することができる。従って、高い読み出し速度を得ることができる。
 本実施の形態では、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータを含む書き込みデータが、複数の3DXPパッケージ230-iに対して分散して書き込まれる。これにより、受信したユーザデータを含む書き込みデータが1つの3DXPパッケージ230-iに書き込まれる場合と比べて、ホストコンピュータ100から書き込み要求を受信したときに書き込み待ちの時間を短縮することができる。
 本実施の形態では、複数の3DXPパッケージ230-iのうち、1つの第1の不揮発性メモリを除く複数の第2の不揮発性メモリに対して、コードワードが分散して書き込まれるとともに、第1の不揮発性メモリに対して、パリティが書き込まれる。これにより、3DXPパッケージ230-iが書き込みの不安定性を持っている場合であっても、誤りの少ないデータ読み出しを高速で行うことができる。
 本実施の形態では、書き込みデータを、複数の3DXPパッケージ230-iのbusyが互いに重ならないように、複数の3DXPパッケージ230-iに分散して書き込むシリアルライトが行われる。これにより、例えば、シリアルライトを行っている最中に、読み出しコマンドを受信すると、受信した読み出しコマンドに含まれる論理アドレスに対応するデータ記憶領域を含むデータ単位のデータのうち、シリアルライトによってbusyとなっている3DXPパッケージ230-i(第3の不揮発性メモリ)から得られる第1のデータを除く第2のデータが、複数の3DXPパッケージ230-iのうち、第3の不揮発性メモリを除く複数の3DXPパッケージ230-i(第4不揮発性メモリ)から読み出すパラレルリードを行うことができる。その結果、パラレルリードを行うことにより得られたデータに含まれるパリティを用いて、第1のデータを復元し、第1のデータおよび第2のデータのうち、論理アドレスに対応するデータを出力することができる。従って、高い読み出し速度を得ることができる。
 本実施の形態では、所定のアドレスに対応するデータ記憶領域を含むデータ単位のデータを、複数の3DXPパッケージ230-iのbusyが互いに重ならないように、複数の3DXPパッケージ230-iから読み出すシリアルリードが行われる。これにより、例えば、シリアルリードを行っている最中に、ユーザデータを含む書き込みコマンドを受信した場合に、受信したユーザデータを書き込む予定のデータ記憶領域を含むデータ単位のデータのうち、シリアルリードによってbusyとなっている3DXPパッケージ230-i(第1の不揮発性メモリ)から得られる第1のデータを除く第2のデータを、複数の3DXPパッケージ230-iのうち、第1の不揮発性メモリを除く複数の3DXPパッケージ230-i(第2の不揮発性メモリ)から読み出すパラレルリードを行うことができる。その結果、パラレルリードを行うことにより得られたデータに含まれるパリティを用いて、第1のデータを復元し、第1のデータおよび第2のデータに対して、受信したユーザデータを上書きし、それにより得られた第3のデータを、複数の3DXPパッケージ230-iに対して分散して書き込むことができる。従って、書き込み待ちの時間を短縮することができる。
 本実施の形態では、新たな書き込みコマンドを受信すると、バッファの空き容量が所定の閾値を超える場合には、シリアルライトが一時中断され、新たな書き込みコマンドに含まれるユーザデータを含む新たな書き込みデータが、複数の3DXPパッケージ230-iに対して同じタイミングで分散して書き込まれる。従って、書き込み待ちの時間を短縮することができる。
 本実施の形態では、ユーザデータを含む書き込みコマンドを受信すると、受信したユーザデータと、受信したユーザデータに基づいて生成した、相対的に低ビット数の誤り訂正を可能とするECC1パリティとを用いて複数のECC1コードワードが生成される。その後、生成された複数のECC1コードワードと、生成されたECC1コードワードに基づいて生成した、相対的に高ビット数の誤り訂正を可能とするECC2パリティとを用いてECC2コードワードが生成され、生成されたECC2コードワードを含むデータが書き込みデータとして出力される。このように2階層のECCコードワードを用いることにより、1階層のECCコードワードを用いた場合と比べて、誤り訂正を的確に行うことができる。
 本実施の形態では、複数のECC1コードワードにおけるユーザデータが、ユーザデータのサイズに応じた数の3DXPパッケージ230-iに分散して書き込まれ、複数のECC1コードワードにおけるECC1パリティが1つの3DXPパッケージ230-iに書き込まれ、ECC2コードワードにおけるECC2パリティが1つの3DXPパッケージ230-iに書き込まれる。これにより、1階層のECCコードワードを用いた場合と比べて、誤り訂正を的確に行うことができる。
 本実施の形態では、ECC2コードワードに基づいて、XOR パリティが生成され、生成されたXOR パリティが1つの3DXPパッケージ230-iに書き込まれる。これにより、誤り訂正をより一層、的確に行うことができる。
 以上、複数の実施の形態およびそれらの変形例を挙げて本技術を説明したが、本開示は上記実施の形態等に限定されるものではなく、種々変形が可能である。なお、本明細書中に記載された効果は、あくまで例示である。本開示の効果は、本明細書中に記載された効果に限定されるものではない。本開示が、本明細書中に記載された効果以外の効果を持っていてもよい。
 また、例えば、本開示は以下のような構成を取ることができる。
(1)
 2系統のアドレスバス端子と、書込み可能な不揮発性の複数のメモリセルとを有する不揮発性メモリと、
 前記複数のメモリセルの幾つかに基づくデータ記憶領域を特定する物理アドレスと論理アドレスとの間の対応関係を示すマッピング情報であるアドレスルックアップ情報と、
 論理アドレスを含む読み出しコマンドを受信すると、前記アドレスルックアップ情報を用いて、前記読み出しコマンドに含まれる前記論理アドレスを物理アドレスに変換し、変換により得られた前記物理アドレスのうちの一部である第1物理アドレスを、前記2系統のアドレスバス端子のうちの一方の系統の第1アドレスバス端子を介して前記不揮発性メモリに入力した後、変換により得られた前記物理アドレスのうちの残りである第2物理アドレスを、前記2系統のアドレスバス端子のうちの他方の系統の第2アドレスバス端子を介して前記不揮発性メモリに入力することにより、変換により得られた前記物理アドレスに対応するデータを前記不揮発性メモリから読み出すコントローラと
 を備えた
 メモリモジュール。
(2)
 前記コントローラは、前記読み出しコマンドに含まれる前記論理アドレスのうちの一部である第1論理アドレスを前記第1物理アドレスに変換するとともに、前記第1物理アドレスを、前記第1アドレスバス端子を介して前記不揮発性メモリに入力する第1期間内に、前記読み出しコマンドに含まれる前記論理アドレスのうちの残りである第2論理アドレスを前記第2物理アドレスに変換する
 (1)に記載のメモリモジュール。
(3)
 前記アドレスルックアップ情報は、
 前記第1物理アドレスと前記第1論理アドレスとの対応関係を示す第1マッピング情報である第1アドレスルックアップ情報と、
 前記第2物理アドレスと前記第2論理アドレスとの対応関係を示す第2マッピング情報である第2アドレスルックアップ情報と
 により構成され、
 当該半導体記憶装置は、
 前記第1アドレスルックアップ情報を保持する第1記憶部と、
 前記第2アドレスルックアップ情報を保持する第2記憶部と
 を更に備え、
 前記コントローラは、前記第1期間内に、前記第2記憶部から前記第2アドレスルックアップ情報を読み出すとともに、読み出した前記第2アドレスルックアップ情報を用いて、前記第2論理アドレスを前記第2物理アドレスに変換する
 (2)に記載のメモリモジュール。
(4)
 前記第1記憶部は、前記コントローラに内蔵され、
 前記第2記憶部は、前記コントローラとは別体に設けられている
 (3)に記載のメモリモジュール。
(5)
 前記第1物理アドレスは、前記不揮発性メモリにおけるRowアドレスであり、
 前記第2物理アドレスは、前記不揮発性メモリにおけるColumnアドレスである
 (3)または(4)に記載のメモリモジュール。
(6)
 前記不揮発性メモリを複数備え、
 前記コントローラは、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータを含む書き込みデータを、複数の前記不揮発性メモリに対して分散して書き込む
 (1)ないし(5)のいずれか1つに記載のメモリモジュール。
(7)
 前記書き込みデータは、前記ユーザデータを含むコードワードと、前記コードワードに基づいて生成されたパリティとにより構成され、
 前記コントローラは、複数の前記不揮発性メモリのうち、1つの前記不揮発性メモリである第1の不揮発性メモリを除く複数の第2の不揮発性メモリに対して、前記コードワードを分散して書き込むとともに、前記第1の不揮発性メモリに対して、前記パリティを書き込む
 (6)に記載のメモリモジュール。
(8)
 前記コントローラは、前記書き込みデータを、複数の前記不揮発性メモリのbusyが互いに重ならないように、複数の前記不揮発性メモリに分散して書き込むシリアルライトを行う
 (7)に記載のメモリモジュール。
(9)
 前記コントローラは、前記シリアルライトを行っている最中に、前記読み出しコマンドを受信すると、受信した前記読み出しコマンドに含まれる前記論理アドレスに対応するデータ記憶領域を含むデータ単位のデータのうち、前記シリアルライトによってbusyとなっている第3の不揮発性メモリから得られる第1のデータを除く第2のデータを、複数の前記不揮発性メモリのうち、前記第3の不揮発性メモリを除く複数の第4不揮発性メモリから読み出すパラレルリードを行う
 (8)に記載のメモリモジュール。
(10)
 前記コントローラは、前記パラレルリードを行うことにより得られたデータに含まれる前記パリティを用いて、前記第1のデータを復元し、前記第1のデータおよび前記第2のデータのうち、前記論理アドレスに対応するデータを出力する
 (9)に記載のメモリモジュール。
(11)
 前記不揮発性メモリを複数備え、
 前記コントローラは、所定のアドレスに対応するデータ記憶領域を含むデータ単位のデータを、複数の前記不揮発性メモリのbusyが互いに重ならないように、複数の前記不揮発性メモリから読み出すシリアルリードを行う (1)ないし(10)のいずれか1つに記載のメモリモジュール。
(12)
 前記コントローラは、前記シリアルリードを行っている最中に、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータを書き込む予定のデータ記憶領域を含むデータ単位のデータのうち、前記シリアルリードによってbusyとなっている第1の不揮発性メモリから得られる第1のデータを除く第2のデータを、複数の前記不揮発性メモリのうち、前記第1の不揮発性メモリを除く複数の第2不揮発性メモリから読み出すパラレルリードを行い、
 前記コントローラは、前記パラレルリードを行うことにより得られたデータに含まれる前記パリティを用いて、前記第1のデータを復元し、前記第1のデータおよび前記第2のデータに対して、受信した前記ユーザデータを上書きし、それにより得られた第3のデータを、複数の前記不揮発性メモリに対して分散して書き込む
 (11)に記載のメモリモジュール。
(13)
 前記コントローラは、受信した前記ユーザデータを記憶するバッファを有し、新たな書き込みコマンドを受信すると、前記バッファの空き容量が所定の閾値を超える場合には、前記シリアルライトを一時中断し、前記新たな書き込みコマンドに含まれるユーザデータを含む新たな書き込みデータを、複数の前記不揮発性メモリに対して同じタイミングで分散して書き込む
 (8)ないし(10)のいずれか1つに記載のメモリモジュール。
(14)
 前記不揮発性メモリを複数備え、
 前記コントローラは、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータと、受信した前記ユーザデータに基づいて生成した、相対的に低ビット数の誤り訂正を可能とする第1の誤り訂正データとを用いて複数の第1のコードワードを生成した後、生成した複数の前記第1のコードワードと、生成した前記第1のコードワードに基づいて生成した、相対的に高ビット数の誤り訂正を可能とする第2の誤り訂正データとを用いて第2のコードワードを生成し、生成した前記第2のコードワードを含むデータを書き込みデータとして出力する
 (1)ないし(13)のいずれか1つに記載のメモリモジュール。
(15)
 前記コントローラは、複数の前記第1のコードワードにおける前記ユーザデータを、前記ユーザデータのサイズに応じた数の第1の不揮発性メモリに分散して書き込み、複数の前記第1のコードワードにおける前記第1の誤り訂正データを1つの第2の不揮発性メモリに書き込み、前記第2のコードワードにおける前記第2の誤り訂正データを1つの第3の不揮発性メモリに書き込む
 (14)に記載のメモリモジュール。
(16)
 前記コントローラは、前記第2のコードワードに基づいて、XOR パリティを生成し、生成した前記XOR パリティを1つの第4の不揮発性メモリに書き込む
 (15)に記載のメモリモジュール。
 本開示の一実施形態に係るメモリモジュールによれば、物理アドレスのうちの一部である第1物理アドレスを、第1アドレスバス端子を介して不揮発性メモリに入力した後、物理アドレスのうちの残りである第2物理アドレスを、第2アドレスバス端子を介して不揮発性メモリに入力することにより、物理アドレスに対応するデータを不揮発性メモリから読み出すようにしたので、例えば、読み出しコマンドに含まれる論理アドレスのうちの一部である第1論理アドレスを第1物理アドレスに変換するとともに、第1物理アドレスを、第1アドレスバス端子を介して不揮発性メモリに入力する期間内に、読み出しコマンドに含まれる論理アドレスのうちの残りである第2論理アドレスを第2物理アドレスに変換することができる。その結果、例えば、1系統のアドレスバス端子しか不揮発性メモリに設けられておらず、アドレス変換や、不揮発性メモリへのアドレス入力が順番に行われる場合と比べて、少なくとも、第2論理アドレスを第2物理アドレスに変換するのに要する時間だけ、読み出しに要する時間(リードレイテンシ)を短縮することができる。従って、高い読み出し速度を得ることができる。なお、本開示の効果は、ここに記載された効果に必ずしも限定されず、本明細書中に記載されたいずれの効果であってもよい。
 本出願は、日本国特許庁において2020年5月11日に出願された日本特許出願番号第2020-083231を基礎として優先権を主張するものであり、この出願のすべての内容を参照によって本出願に援用する。
 当業者であれば、設計上の要件や他の要因に応じて、種々の修正、コンビネーション、サブコンビネーション、および変更を想到し得るが、それらは添付の請求の範囲やその均等物の範囲に含まれるものであることが理解される。

Claims (16)

  1.  2系統のアドレスバス端子と、書込み可能な不揮発性の複数のメモリセルとを有する不揮発性メモリと、
     前記複数のメモリセルの幾つかに基づくデータ記憶領域を特定する物理アドレスと論理アドレスとの間の対応関係を示すマッピング情報であるアドレスルックアップ情報と、
     論理アドレスを含む読み出しコマンドを受信すると、前記アドレスルックアップ情報を用いて、前記読み出しコマンドに含まれる前記論理アドレスを物理アドレスに変換し、変換により得られた前記物理アドレスのうちの一部である第1物理アドレスを、前記2系統のアドレスバス端子のうちの一方の系統の第1アドレスバス端子を介して前記不揮発性メモリに入力した後、変換により得られた前記物理アドレスのうちの残りである第2物理アドレスを、前記2系統のアドレスバス端子のうちの他方の系統の第2アドレスバス端子を介して前記不揮発性メモリに入力することにより、変換により得られた前記物理アドレスに対応するデータを前記不揮発性メモリから読み出すコントローラと
     を備えた
     メモリモジュール。
  2.  前記コントローラは、前記読み出しコマンドに含まれる前記論理アドレスのうちの一部である第1論理アドレスを前記第1物理アドレスに変換するとともに、前記第1物理アドレスを、前記第1アドレスバス端子を介して前記不揮発性メモリに入力する第1期間内に、前記読み出しコマンドに含まれる前記論理アドレスのうちの残りである第2論理アドレスを前記第2物理アドレスに変換する
     請求項1に記載のメモリモジュール。
  3.  前記アドレスルックアップ情報は、
     前記第1物理アドレスと前記第1論理アドレスとの対応関係を示す第1マッピング情報である第1アドレスルックアップ情報と、
     前記第2物理アドレスと前記第2論理アドレスとの対応関係を示す第2マッピング情報である第2アドレスルックアップ情報と
     により構成され、
     当該半導体記憶装置は、
     前記第1アドレスルックアップ情報を保持する第1記憶部と、
     前記第2アドレスルックアップ情報を保持する第2記憶部と
     を更に備え、
     前記コントローラは、前記第1期間内に、前記第2記憶部から前記第2アドレスルックアップ情報を読み出すとともに、読み出した前記第2アドレスルックアップ情報を用いて、前記第2論理アドレスを前記第2物理アドレスに変換する
     請求項2に記載のメモリモジュール。
  4.  前記第1記憶部は、前記コントローラに内蔵され、
     前記第2記憶部は、前記コントローラとは別体に設けられている
     請求項3に記載のメモリモジュール。
  5.  前記第1物理アドレスは、前記不揮発性メモリにおけるRowアドレスであり、
     前記第2物理アドレスは、前記不揮発性メモリにおけるColumnアドレスである
     請求項3に記載のメモリモジュール。
  6.  前記不揮発性メモリを複数備え、
     前記コントローラは、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータを含む書き込みデータを、複数の前記不揮発性メモリに対して分散して書き込む
     請求項1に記載のメモリモジュール。
  7.  前記書き込みデータは、前記ユーザデータを含むコードワードと、前記コードワードに基づいて生成されたパリティとにより構成され、
     前記コントローラは、複数の前記不揮発性メモリのうち、1つの前記不揮発性メモリである第1の不揮発性メモリを除く複数の第2の不揮発性メモリに対して、前記コードワードを分散して書き込むとともに、前記第1の不揮発性メモリに対して、前記パリティを書き込む
     請求項6に記載のメモリモジュール。
  8.  前記コントローラは、前記書き込みデータを、複数の前記不揮発性メモリのbusyが互いに重ならないように、複数の前記不揮発性メモリに分散して書き込むシリアルライトを行う
     請求項7に記載のメモリモジュール。
  9.  前記コントローラは、前記シリアルライトを行っている最中に、前記読み出しコマンドを受信すると、受信した前記読み出しコマンドに含まれる前記論理アドレスに対応するデータ記憶領域を含むデータ単位のデータのうち、前記シリアルライトによってbusyとなっている第3の不揮発性メモリから得られる第1のデータを除く第2のデータを、複数の前記不揮発性メモリのうち、前記第3の不揮発性メモリを除く複数の第4不揮発性メモリから読み出すパラレルリードを行う
     請求項8に記載のメモリモジュール。
  10.  前記コントローラは、前記パラレルリードを行うことにより得られたデータに含まれる前記パリティを用いて、前記第1のデータを復元し、前記第1のデータおよび前記第2のデータのうち、前記論理アドレスに対応するデータを出力する
     請求項9に記載のメモリモジュール。
  11.  前記不揮発性メモリを複数備え、
     前記コントローラは、所定のアドレスに対応するデータ記憶領域を含むデータ単位のデータを、複数の前記不揮発性メモリのbusyが互いに重ならないように、複数の前記不揮発性メモリから読み出すシリアルリードを行う
     請求項1に記載のメモリモジュール。
  12.  前記コントローラは、前記シリアルリードを行っている最中に、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータを書き込む予定のデータ記憶領域を含むデータ単位のデータのうち、前記シリアルリードによってbusyとなっている第1の不揮発性メモリから得られる第1のデータを除く第2のデータを、複数の前記不揮発性メモリのうち、前記第1の不揮発性メモリを除く複数の第2不揮発性メモリから読み出すパラレルリードを行い、
     前記コントローラは、前記パラレルリードを行うことにより得られたデータに含まれる前記パリティを用いて、前記第1のデータを復元し、前記第1のデータおよび前記第2のデータに対して、受信した前記ユーザデータを上書きし、それにより得られた第3のデータを、複数の前記不揮発性メモリに対して分散して書き込む
     請求項11に記載のメモリモジュール。
  13.  前記コントローラは、受信した前記ユーザデータを記憶するバッファを有し、新たな書き込みコマンドを受信すると、前記バッファの空き容量が所定の閾値を超える場合には、前記シリアルライトを一時中断し、前記新たな書き込みコマンドに含まれるユーザデータを含む新たな書き込みデータを、複数の前記不揮発性メモリに対して同じタイミングで分散して書き込む
     請求項8に記載のメモリモジュール。
  14.  前記不揮発性メモリを複数備え、
     前記コントローラは、ユーザデータを含む書き込みコマンドを受信すると、受信した前記ユーザデータと、受信した前記ユーザデータに基づいて生成した、相対的に低ビット数の誤り訂正を可能とする第1の誤り訂正データとを用いて複数の第1のコードワードを生成した後、生成した複数の前記第1のコードワードと、生成した前記第1のコードワードに基づいて生成した、相対的に高ビット数の誤り訂正を可能とする第2の誤り訂正データとを用いて第2のコードワードを生成し、生成した前記第2のコードワードを含むデータを書き込みデータとして出力する
     請求項1に記載のメモリモジュール。
  15.  前記コントローラは、複数の前記第1のコードワードにおける前記ユーザデータを、前記ユーザデータのサイズに応じた数の第1の不揮発性メモリに分散して書き込み、複数の前記第1のコードワードにおける前記第1の誤り訂正データを1つの第2の不揮発性メモリに書き込み、前記第2のコードワードにおける前記第2の誤り訂正データを1つの第3の不揮発性メモリに書き込む
     請求項14に記載のメモリモジュール。
  16.  前記コントローラは、前記第2のコードワードに基づいて、XOR パリティを生成し、生成した前記XOR パリティを1つの第4の不揮発性メモリに書き込む
     請求項15に記載のメモリモジュール。
PCT/JP2021/015770 2020-05-11 2021-04-16 メモリモジュール WO2021230003A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/997,862 US20230229313A1 (en) 2020-05-11 2021-04-16 Memory module

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-083231 2020-05-11
JP2020083231A JP2021179672A (ja) 2020-05-11 2020-05-11 メモリモジュール

Publications (1)

Publication Number Publication Date
WO2021230003A1 true WO2021230003A1 (ja) 2021-11-18

Family

ID=78511600

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/015770 WO2021230003A1 (ja) 2020-05-11 2021-04-16 メモリモジュール

Country Status (3)

Country Link
US (1) US20230229313A1 (ja)
JP (1) JP2021179672A (ja)
WO (1) WO2021230003A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020100541A1 (de) * 2020-01-13 2021-07-15 Infineon Technologies Ag Bestimmung eines resultierenden datenworts beim zugriff auf einen speicher

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015522886A (ja) * 2012-07-18 2015-08-06 マイクロン テクノロジー, インク. 階層メモリシステムのためのメモリ管理
JP2015225608A (ja) * 2014-05-29 2015-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アドレス変換テーブルを書き込む装置及び方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2246001B (en) * 1990-04-11 1994-06-15 Digital Equipment Corp Array architecture for high speed cache memory
KR100596828B1 (ko) * 2004-12-24 2006-07-04 주식회사 하이닉스반도체 불휘발성 강유전체 메모리 장치
JP2011123955A (ja) * 2009-12-11 2011-06-23 Elpida Memory Inc 半導体システム
US11221764B2 (en) * 2010-01-29 2022-01-11 Mosys, Inc. Partitioned memory with shared memory resources and configurable functions
JP2012058860A (ja) * 2010-09-06 2012-03-22 Toshiba Corp メモリシステム
GB2497525A (en) * 2011-12-12 2013-06-19 St Microelectronics Ltd Controlling shared memory data flow
US9798620B2 (en) * 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
US20220156152A1 (en) * 2016-09-15 2022-05-19 Pure Storage, Inc. Dynamic data segment sizing
WO2018094620A1 (zh) * 2016-11-23 2018-05-31 华为技术有限公司 一种内存分配方法和设备
US20180188976A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Increasing read pending queue capacity to increase memory bandwidth
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US11086790B2 (en) * 2017-08-25 2021-08-10 Micron Technology, Inc. Methods of memory address verification and memory devices employing the same
US10592428B1 (en) * 2017-09-27 2020-03-17 Amazon Technologies, Inc. Nested page tables
US10877898B2 (en) * 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10553285B2 (en) * 2017-11-28 2020-02-04 Western Digital Technologies, Inc. Single-port memory with opportunistic writes
US10379950B2 (en) * 2017-11-30 2019-08-13 Western Digital Technologies, Inc. Updating write-in-place storage devices
GB2569604B (en) * 2017-12-21 2020-06-03 Advanced Risc Mach Ltd Controlling reading and writing of data streams in data processing systems
KR102469174B1 (ko) * 2018-01-11 2022-11-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10540100B2 (en) * 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory
US11226762B2 (en) * 2019-01-31 2022-01-18 Sony Group Corporation Memory command that specifies one of multiple possible write data values where the write data is not transported over a memory data bus
JP2021047712A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
KR20210074425A (ko) * 2019-12-11 2021-06-22 삼성전자주식회사 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015522886A (ja) * 2012-07-18 2015-08-06 マイクロン テクノロジー, インク. 階層メモリシステムのためのメモリ管理
JP2015225608A (ja) * 2014-05-29 2015-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アドレス変換テーブルを書き込む装置及び方法

Also Published As

Publication number Publication date
JP2021179672A (ja) 2021-11-18
US20230229313A1 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
US11704210B2 (en) Custom error recovery in selected regions of a data storage device
CN107957958B (zh) 存储器系统及其操作方法
KR101534888B1 (ko) 내고장성 비휘발성 집적 회로 메모리
KR101405741B1 (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
KR102533207B1 (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US20170039135A1 (en) High speed flash controllers
US8612836B2 (en) Non-volatile memory device with uncorrectable information region and operation method using the same
CN114730598A (zh) 利用分区命名空间简缩ssd中的逻辑到物理表指针
JP5259138B2 (ja) 記憶装置
CN112542201B (zh) 存储设备及操作该存储设备的方法
KR20210018615A (ko) 스토리지 장치 및 이를 포함하는 스토리지 시스템
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
KR20220022092A (ko) 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축
WO2021230003A1 (ja) メモリモジュール
US20240070062A1 (en) Nonvolatile memory, memory system, and control method of nonvolatile memory
US11294598B2 (en) Storage devices having minimum write sizes of data
US11537510B2 (en) Storage devices having minimum write sizes of data
KR20220077041A (ko) 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법
US11520491B2 (en) Parity protection in non-volatile memory
WO2021029143A1 (ja) 半導体記憶装置及び該装置における不良メモリセルに対するエラー処理方法
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
US10922025B2 (en) Nonvolatile memory bad row management
CN112711377A (zh) 分布式存储系统的存储节点及其操作方法
CN113450843B (zh) 电路布局结构与存储器存储装置
US20230259279A1 (en) Storage Device Optimizations in Proof of Space Blockchain Systems

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21803878

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21803878

Country of ref document: EP

Kind code of ref document: A1