Embodiments described herein relate generally to a memory system.
A memory system including a non-volatile memory such as a NAND-type flash memory, and a memory controller, is known.
In general, according to one embodiment, a memory system includes a non-volatile memory and a controller that includes a first toggle encoder configured to encode first data having a first bit length and a first number of toggles, into second data having a second bit length longer than the first bit length and a second number of toggles smaller than the first number of toggles, and transmit the second data to the non-volatile memory.
Hereinafter, embodiments will be described with reference to the drawings. In the following description, components having the same function and configuration will be denoted by the same reference numerals. In addition, each embodiment described hereinbelow is an example of an apparatus or a method for implementing the technical idea of the embodiment, and does not limit the materials, shapes, structures, arrangements, etc. of components described hereinbelow.
Each functional block may be implemented as hardware, computer software or a combination thereof. Thus, in order to clarify that each functional block is any one of hardware, software, and a combination thereof, descriptions will generally be made in view of functions. It is not necessary that the functional blocks are distinguished as in the examples described hereinafter. For example, some functions may be executed by functional blocks other than the functional blocks in the examples. Further, the functional block in the examples may be divided into more detailed functional sub-blocks.
The memory system 1000 may be a memory card in which the memory controller 100 and the non-volatile memory 200 are configured as one package, or a Solid State Drive (SSD).
The host apparatus 1500 may be, for example, an information processing apparatus such as a personal computer, a mobile phone, an image capturing device, a portable terminal such as a tablet computer or a smart phone, a game device, or an on-vehicle terminal such as a car navigation system.
The communication interface 320 connects the memory system 1000 to the host apparatus 1500. The communication interface 320 conforms to, for example, Serial Advanced Technology Attachment (SATA), Serial Attached SCSI (SAS), Peripheral Components Interconnect Express (PCIe) (registered trademark), or Non-Volatile Memory Express (NVMe) (registered trademark).
The memory controller 100 controls writing/reading of data to/from the non-volatile memory 200 in response to a request from the host apparatus 1500. In the present embodiment, the request is, for example, an instruction or a command. The memory controller is also referred to as a controller. The memory controller 100 is a semiconductor integrated circuit configured as, for example, a System on a Chip (SoC), a Field-Programmable Gate Array (FPGA), or an Application Specific Integrated Circuit (ASIC). Some or all of functions of the respective components of the memory controller 100 to be described below, including first toggle encoder, second toggle encoder, host interface, and memory interface, may be implemented by execution of firmware by a central processing unit (CPU), or may be implemented by hardware.
The non-volatile memory 200 is a semiconductor memory capable of storing data in a non-volatile manner. The non-volatile memory 200 is, for example, a NAND-type flash memory. In the NAND-type flash memory, writing and reading of data are executed on a per page basis. Further, in the NAND-type flash memory, erasing of data is executed on a per block basis. When the NAND-type flash memory is used for the non-volatile memory 200, the memory cell maybe a single-level cell in which data of 1 bit is to be stored, or may be a multi-level cell in which data of 2 or more bits is to be stored.
The non-volatile memory 200 includes, for example, a plurality of memory chips #1210-1, #2210-2, . . . , and #N 210-N that are operable independently of each other. In addition, the “N” is any natural number greater than 1.
In the following description, when one of the plurality of memory chips #1210-1, #2210-2, . . . , and #N 210-N needs to be specified, the reference numeral 210-1, 210-2 . . . , or 210-N will be used. On the other hand, when any one memory chip is referred to, or when one memory chip does not need to be distinguished from another memory chip, the reference numeral 210 will be used without the suffix -1, -2, . . . , or -N.
In addition, while the present embodiment shows an example in which a NAND-type flash memory is used as the non-volatile memory 200, the non-volatile memory 200 may also be a storage unit other than the NAND-type flash memory, such as a three-dimensional structure flash memory, a Resistance Random Access Memory (ReRAM), a Ferroelectric Random Access Memory (FeRAM), or a Magnetoresistive Random Access Memory (MRAM). Further, while the present embodiment shows an example in which a semiconductor memory is used as the non-volatile memory 200, a storage unit other than the semiconductor memory may also be used.
Each configuration of the memory controller 100 will be described. As illustrated in
In the present embodiment, descriptions are given for a case where the memory controller 100 includes the first toggle encoder 400 and the second toggle decoder 460. However, one of the first toggle encoder 400 and the second toggle decoder 460 may be present outside the memory controller 100, and the other maybe present inside the memory controller 100, or both of the first toggle encoder 400 and the second toggle decoder 460 may be present outside the memory controller 100.
The CPU 110 collectively controls the respective components of the memory system 1000. The CPU 110 reads firmware (a control program) stored in a ROM (not illustrated), and loads it into the first buffer memory 140 or on a RAM (not illustrated) when the memory system 1000 is started. Then, when the CPU 110 executes the firmware, each function implemented in the firmware is performed.
When a request is received from the host apparatus 1500 via the host I/F 120, the CPU 110 controls each unit of the memory controller 100 in response to the request. For example, the CPU 110 instructs the memory I/F 150 to write data to the non-volatile memory 200 in response to a write request from the host apparatus 1500. In addition, the CPU 110 instructs the memory I/F 150 to read data from the non-volatile memory 200 in response to a read request from the host apparatus 1500.
In addition, when a write request is received from the host apparatus 1500, the CPU 110 saves data designated by the write request, in the first buffer memory 140, and determines a storage area for the data, in the non-volatile memory 200. That is, the CPU 110 determines and manages a writing destination of data. The association relationship between a logical address of data received from the host apparatus 1500 and a physical address indicating a storage area in the non-volatile memory 200 in which the corresponding data is to be stored is stored as an address conversion table in, for example, the first buffer memory 140.
In addition, when a read request is received from the host apparatus 1500, the CPU 110 converts a logical address designated by the read request into a physical address of the non-volatile memory 200 by using the above-described address conversion table, and instructs the memory I/F 150 to read data from the corresponding physical address. Accordingly, the data read from the non-volatile memory 200 is temporarily stored in the first buffer memory 140, and transmitted to the host apparatus 1500 via the host I/F 120.
The host I/F 120 outputs a request, write data, etc. received from the host apparatus 1500 to the internal bus 160, and stores the request, the write data, etc. in the first buffer memory 140. Further, the host I/F 120 transmits, for example, the read data that has been read from the non-volatile memory 200 and stored in the first buffer memory 140, or a response from the CPU 110, to the host apparatus 1500.
The ECC unit 130 is, for example, an encoding/decoding circuit having an error correction function, and encodes data to be written to the non-volatile memory 200 by an error correction code (ECC) such as a Bose Chaudhuri Hocquenghem (BCH) code. Further, the ECC unit 130 corrects error in data read from the non-volatile memory 200.
The data received as write data from the host apparatus 1500 by the host interface 120 is temporarily stored in the first buffer memory 140. The CPU 110 determines a storage area for the data stored in the first buffer memory 140, in the non-volatile memory 200, and instructs the memory I/F 150 to write the data to the determined storage area.
For the first buffer memory 140, for example, a volatile memory such as a Dynamic Random Access Memory (DRAM) or a Static Random Access Memory (SRAM) maybe used. In addition, the first buffer memory 140 may be mounted inside or outside the memory controller 100.
The memory I/F 150 controls a process of writing data, etc. to the non-volatile memory 200 and a process of reading data, etc. from the non-volatile memory 200 based on an instruction from the CPU 110.
The memory I/F 150 transmits write data, etc. received from the first buffer memory 140 to the non-volatile memory 200 after encoding the write data using the first toggle encoder 400, based on an instruction from the CPU 110. Further, the memory I/F 150 transmits read data, etc. received from the non-volatile memory 200 to the first buffer memory 140 after decoding the read data using the second toggle decoder 460.
The internal bus 160 is a communication line that connects the CPU 110, the host I/F 120, the ECC unit 130, the first buffer memory 140, the memory I/F 150, the first toggle encoder 400, and the second toggle decoder 460 to each other.
Details of the first toggle encoder 400 and the second toggle decoder 460 will be described later.
Next, a configuration of the memory chip 210 will be described. The memory chip 210 is, for example, a NAND-type flash memory chip.
As illustrated in
The input/output circuit 220 is connected to the memory I/F 150 of the memory controller 100 via the memory bus 300. The input/output circuit 220 receives a plurality of control signals from the memory controller 100 via the memory bus 300, and supplies various internal control signals to the peripheral circuit 240 based on the received control signals.
The input/output circuit 220 receives write data from the memory controller 100, and supplies the received write data to the peripheral circuit 240. Further, the input/output circuit 220 receives data stored in a cell transistor of the memory cell array 260, from the peripheral circuit 240, and supplies the data to the memory controller 100 via the memory bus 300.
The peripheral circuit 240 includes a first toggle decoder 420 and a second toggle encoder 440, and also a sequencer, a driver, a sense amplifier, a low decoder, etc. (not illustrated). The peripheral circuit 240 receives various signals from the input/output circuit 220, and writes data to a cell transistor of the memory cell array 260 based on the received signals. Further, the peripheral circuit 240 reads data stored in the cell transistor of the memory cell array 260.
The peripheral circuit 240 writes write data, etc. received from the input/output circuit 220, to the memory cell array 260 after encoding the write data using the first toggle decoder 420. Further, the peripheral circuit 240 transmits read data, etc. received from the memory cell array 260, to the input/output circuit 220 after decoding the read data using the second toggle encoder 440.
In the present embodiment, descriptions are given for a case where the peripheral circuit 240 includes the first toggle decoder 420 and the second toggle encoder 440. However, one of the first toggle decoder 420 and the second toggle encoder 440 may be present outside the peripheral circuit 240, and the other may be present inside the peripheral circuit 240. Furthermore, both the first toggle decoder 420 and the second toggle encoder 440 may be present outside the peripheral circuit 240.
Details of the first toggle decoder 420 and the second toggle encoder 440 will be described later.
At the time of writing, the memory cell array 260 receives data from the peripheral circuit 240, and stores the received data in a cell transistor. In addition, at the time of reading, the memory cell array 260 supplies data stored in the cell transistor to the peripheral circuit 240.
As illustrated in
In addition, the first toggle encoder 400 encodes the first data pieces 700 corresponding to the width of a signal DQ to be described later, into the second data pieces 720.
In the present embodiment, the first data 700 encoded by the first toggle encoder 400 is, for example, write data. Other examples of the first data 700 include a command, an address, etc. In addition, the first data 700 may be not only data received as write data from the host apparatus 1500, but also data to be used for internal processing such as garbage collection (compaction), wear leveling, and refreshing.
The first toggle encoder 400 has a second buffer memory (not illustrated) that temporarily stores the first data 700 received from the first buffer memory 140. The first data 700 stored in the second buffer memory is encoded into the second data 720 by the first toggle encoder 400, and then, transmitted to the memory chip 210 by the memory I/F 150. For the second buffer memory, for example, a volatile memory such as a Static Random Access Memory (SRAM) or a register may be used.
In
In
In addition, although with regard to a specific first data piece 700 in the first data group, the number of toggles may be increased due to encoding, the average of the numbers of toggles of the second data group is smaller than the average of the numbers of toggles of the first data group. Further, the encoding at this time is not limited to a conversion from 9 bits into 10 bits, and may be, for example, a conversion from 9 bits into 11 bits.
In the second toggle encoder 440 as well, encoding is similarly performed by using the conversion table in
As illustrated in
In addition, the first toggle decoder 420 decodes the second data pieces 720 corresponding to the width of a signal DQ to be described later, into the first data pieces 700.
The first toggle decoder 420 has a third buffer memory (not illustrated) that temporarily stores the second data 720 received from the input/output circuit 220. The second data 720 stored in the third buffer memory is decoded into the first data 700 by the first toggle decoder 420, and then, written to the memory cell array 260 by the peripheral circuit 240. For the third buffer memory, for example, a volatile memory such as a SRAM or a register may be used.
As illustrated in
In the present embodiment, the third data 740 encoded by the second toggle encoder 440 is, for example, data read from the memory cell array 260. Other examples of the third data 740 maybe data to be used for an internal processing such as garbage collection, wear leveling, and refreshing. In addition, the third data 740 may be a status, etc. to be transmitted from the memory chip 210 to the memory controller 100.
In addition, the bit length of the third data 740 may be the same as or different from that of the first data 700. In addition, the number of toggles of the third data 740 may be the same as or different from that of the first data 700. In particular, when the first data 700 is written to the memory cell array 260 and is correctly readable as the third data 740, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
In addition, the bit length of the fourth data 760 may be the same as or different from that of the second data 720. In addition, the number of toggles of the fourth data 760 may be the same as or different from that of the second data 720. In particular, when the first data 700 is written to the memory cell array 260 and is correctly readable as the third data 740, the bit length and the number of toggles of the second data 720 are the same as those of the fourth data 760.
The second toggle encoder 440 includes a fourth buffer memory (not illustrated) that temporarily stores the third data 740 received from the memory cell array 260. A command for requesting to read the third data 740 from the memory cell array 260 is output from the memory controller 100 to the memory chip 210. The third data 740 stored in the fourth buffer memory is encoded into the fourth data 760 by the second toggle encoder 440, and then, transmitted to the memory controller 100 by the peripheral circuit 240. For the fourth buffer memory, for example, a volatile memory such as an SRAM or a register may be used.
As illustrated in
In addition, the second toggle decoder 460 decodes the fourth data pieces 760 corresponding to the width of a signal DQ to be described later, into the third data pieces 740.
The second toggle decoder 460 includes a fifth buffer memory (not illustrated) that temporarily stores the fourth data 760 received from the memory I/F 150. The fourth data 760 stored in the fifth buffer memory is decoded into the third data 740 by the second toggle decoder 460, and then, transmitted to the first buffer memory 140 by the memory I/F 150. For the fifth buffer memory, for example, a volatile memory such as an SRAM or a register may be used.
Referring back to
The memory bus 300 connects the memory controller 100 to the non-volatile memory 200. The memory I/F 150 and the input/output circuit 220 of each memory chip 210 transmit/receive data from/to each other via the memory bus 300. The memory bus 300 conforms to, for example, a Toggle Double Data Rate (DDR) or an Open NAND Flash Interface (ONFI). The memory bus 300 transmits/receives, for example, signals DQ, DQS, DQSn, RE, and REn. When a signal name has “n” as a suffix, the corresponding signal is negative logic. That is, this indicates that the corresponding signal is asserted at a “low (L)” level.
The signal DQ (DQ0 to DQ7) has, for example, a width of 8 bits, and includes data, such as a command, data to be written to the memory chip 210, data read from the memory chip 210, an address, or a status.
At the time of writing data to the memory cell array 260 in the memory chip 210, the first data 700 received from the host I/F 120 is encoded by the first toggle encoder 400, and input to the input/output circuit 220 of the memory chip 210 as the second data 720 (=signals DQ0 to DQ7) via the memory bus 300. The second data 720 input to the input/output circuit 220 is transmitted to the peripheral circuit 240, decoded into the first data 700 by the first toggle decoder 420, and then, written to the memory cell array 260. At the time of reading data, the third data 740 written to the memory cell array 260 is encoded into the fourth data 760 by the second toggle encoder 440. The fourth data 760 (=signals DQ0 to DQ7) is transmitted to the memory controller 100 via the memory bus 300, and decoded into the third data 740 by the second toggle decoder 460. In addition, the third data 740 may be the first data 700 written to the memory cell array 260. In this case, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
The signals DQS and DQSn are synchronous signals that are exchanged bidirectionally between the memory controller 100 and the memory chip 210. The signals DQS and DQSn directed from the memory controller 100 to the memory chip 210 notify the memory chip 210 of a timing for receiving the signal DQ. While the second data 720 is transmitted by the signal DQ, the number of timings notified by the signals DQS and DQSn corresponds to the second bit length of the second data 720.
Meanwhile, the signals DQS and DQSn directed from the memory chip 210 to the memory controller 100 notify the memory controller 100 of a timing for receiving the signal DQ. While the fourth data 760 is transmitted by the signal DQ, the number of timings notified by the signals DQS and DQSn corresponds to the fourth bit length of the fourth data 760.
At the time of reading data, the signals RE and REn directed from the memory controller 100 to the memory chip 210 instruct the memory chip 210 to output the signal DQ. In addition, the memory chip 210 that receives the signals RE and REn generates the signals DQS and DQSn in synchronization with the signal DQ output in response to the signals RE and REn. When the memory controller 100 instructs the memory chip 210 to output the fourth data 760 in the signal DQ, the memory I/F 150 sets the number of the instructions by the signals RE and REn, to a number corresponding to the number of timings to be notified by the signals DQS and DQSn.
A writing operation of the memory system 1000 will be described.
In
As indicated by 800 of
As indicated by 820 of
As indicated by 810 of
Likewise, ori DATA 1 that is the first data 700 with the 9-bit length is encoded into enc DATA 1 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_1.
The enc DATA 1 is transmitted by a signal DQ[1]. ori DATA 2 that is the first data 700 with the 9-bit length is encoded into enc DATA 2 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_2. The enc DATA 2 is transmitted by a signal DQ[2].
ori DATA 3 that is the first data 700 with the 9-bit length is encoded into enc DATA 3 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_3. The enc DATA 3 is transmitted by a signal DQ[3].
ori DATA 4 that is the first data 700 with the 9-bit length is encoded into enc DATA 4 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_4. The enc DATA 4 is transmitted by a signal DQ[4].
ori DATA 5 that is the first data 700 with the 9-bit length is encoded into enc DATA 5 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_5. The enc DATA 5 is transmitted by a signal DQ[5].
ori DATA 6 that is the first data 700 with the 9-bit length is encoded into enc DATA 6 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_6. The enc DATA 6 is transmitted by a signal DQ[6].
ori DATA 7 that is the first data 700 with the 9-bit length is encoded into enc DATA 7 that is the second data 720 with the 10-bit length, by the first toggle encoder 400_7. The enc DATA 7 is transmitted by a signal DQ[7].
The memory controller 100 outputs the enc DATA 0 to the enc DATA 7 as the signal DQ, and outputs signals DQS and DQSn to the memory chip 210.
The memory chip 210 receives the enc DATA 0 to the enc DATA 7 in synchronization with the number of timings indicated by the signals DQS and DQSn, and stores the enc DATA 0 to the enc DATA 7 in the third buffer memory of the first toggle decoder 420.
As indicated by 830 of
Likewise, the enc DATA 1 that is the second data 720 with the 10-bit length is decoded into the ori DATA 1 with the 9-bit length by the first toggle decoder 420_ 1.
The enc DATA 2 that is the second data 720 with the 10-bit length is decoded into the ori DATA 2 with the 9-bit length by the first toggle decoder 420_ 2.
The enc DATA 3 that is the second data 720 with the 10-bit length is decoded into the ori DATA 3 with the 9-bit length by the first toggle decoder 420_ 3.
The enc DATA 4 that is the second data 720 with the 10-bit length is decoded into the ori DATA 4 with the 9-bit length by the first toggle decoder 420_ 4.
The enc DATA 5 that is the second data 720 with the 10-bit length is decoded into the ori DATA 5 with the 9-bit length by the first toggle decoder 420_ 5.
The enc DATA 6 that is the second data 720 with the 10-bit length is decoded into the ori DATA 6 with the 9-bit length by the first toggle decoder 420_ 6.
The enc DATA 7 that is the second data 720 with the 10-bit length is decoded into the ori DATA 7 with the 9-bit length by the first toggle decoder 420_ 7.
The ori DATA 0 to ori DATA 7 are written to the memory cell array 260 by the peripheral circuit 240.
In this manner, the memory controller 100 is capable of writing data to the memory chip 210.
Next, a reading operation of the memory system 1000 will be described.
In
As indicated by 900 of
As indicated by 920 of
First, the memory controller 100 outputs a command (not illustrated) for instructing to read the ori DATA 0 from the memory cell array 260, to the memory chip 210. When the corresponding command is received from the memory controller 100, the memory chip 210 reads the ori DATA 0 from the memory cell array 260. The ori DATA 0 read from the memory cell array 260 is stored in the fourth buffer memory of the second toggle encoder 440.
When the memory controller 100 recognizes via a ready/busy signal (not illustrated) that the ori DATA 0 is stored in the fourth buffer memory, the memory controller 100 instructs the memory chip 210 to output the enc DATA 0 as a signal DQ[0] by using signals RE and REn. Here, the memory I/F 150 sets the number indicated by the signals RE and REn, as the number corresponding to the fourth bit length, that is, 10.
As indicated by 910 of
Likewise, ori DATA 1 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 1 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_1. The enc DATA 1 is transmitted by a signal DQ[1].
ori DATA 2 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 2 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_2. The enc DATA 2 is transmitted by a signal DQ[2].
ori DATA 3 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 3 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_3. The enc DATA 3 is transmitted by a signal DQ[3].
ori DATA 4 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 4 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_4. The enc DATA 4 is transmitted by a signal DQ[4].
ori DATA 5 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 5 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_5. The enc DATA 5 is transmitted by a signal DQ[5].
ori DATA 6 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 6 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_6. The enc DATA 6 is transmitted by a signal DQ[6].
ori DATA 7 that is the third data 740 with the 9-bit length is read from the memory cell array 260, and encoded into enc DATA 7 that is the fourth data 760 with the 10-bit length, by the second toggle encoder 440_7. The enc DATA 7 is transmitted by a signal DQ[7].
The memory chip 210 generates signals DQS and DQSn in response to the received signals RE and REn. The enc DATA 0 to the enc DATA 7 are received by the memory controller 100 in synchronization with timings indicated by the generated signals DQS and DQSn. More specifically, the enc DATA 0 to the enc DATA 7 are stored in the fifth buffer memory of the second toggle decoder 460.
As indicated by 930 of
Likewise, the enc DATA 1 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 1 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_1.
The enc DATA 2 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 2 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_2.
The enc DATA 3 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 3 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_3.
The enc DATA 4 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 4 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_4.
The enc DATA 5 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 5 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_5.
The enc DATA 6 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 6 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_6.
The enc DATA 7 that is the fourth data 760 with the 10-bit length is decoded into the ori DATA 7 that is the third data 740 with the 9-bit length, by the second toggle decoder 460_7.
The ori DATA 0 to ori DATA 7 are stored in the first buffer memory 140 by the memory I/F 150.
In this manner, the memory controller 100 is capable of reading data from the memory chip 210.
In the memory system 1000 according to the first embodiment, after data is encoded such that the number of toggles of the data is decreased, data transmission is performed between the memory controller 100 and the non-volatile memory 200. Thus, it is possible to reduce power consumption accompanied by data transmission.
Further, in the memory system 1000 according to the first embodiment, since synchronous signals notifying about a timing of receiving encoded data are transmitted in accordance with a bit length of the encoded data, it is possible to stably perform transmission/reception of the data even when the number of toggles of the data is reduced.
A memory system 2000 according to a second embodiment has the same configuration as the memory system 1000 according to the first embodiment, except that the memory system 2000 does not include the first toggle decoder 420 and the second toggle encoder 440.
At the time of writing data, first data 700 stored in the second buffer memory of the first toggle encoder 400 is encoded into second data 720 by the first toggle encoder 400. Then, the second data 720 is transmitted to the memory chip 210 via the memory bus 300 by the memory I/F 150. The second data 720 transmitted to the memory chip 210 is written to the memory cell array 260.
At the time of reading data, fourth data 760 read from the memory cell array 260 is transmitted to the memory controller 100 via the memory bus 300. In particular, when the second data 720 is written to the memory cell array 260, and the second data 720 is correctly readable as the fourth data 760, the bit length and the number of toggles of the second data 720 are the same as those of the fourth data 760.
The fourth data 760 transmitted to the memory controller 100 is decoded into the third data 740 by the second toggle decoder 460. In particular, when the second data 720 is written to the memory cell array 260, and the second data 720 is correctly readable as the fourth data 760, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
In the memory system 2000 according to the second embodiment, after data is encoded such that the number of toggles of the data is decreased, data transmission is performed between the memory controller 100 and the non-volatile memory 200. Thus, it is possible to reduce power consumption accompanied by data transmission.
The memory system 2000 according to the second embodiment does not include the first toggle decoder 420 and the second toggle encoder 440. Thus, there is no need to change the size of the memory chip 210 as compared to the example of the related art, and thus, it is possible to reduce the cost of the memory chip 210.
A memory system 3000 according to a third embodiment has the same configuration as the memory system 1000 according to the first embodiment, except that the memory system 3000 includes an interface (I/F) chip 500.
As illustrated in
At the time of writing data, the I/F chip 500 receives second data 720 from the memory controller 100 via a memory bus 300A. The received second data 720 is decoded into first data 700 by the first toggle decoder 420. Then, the I/F chip 500 transmits the first data 700 to the memory chip 210 via a memory bus 300B.
The memory bus 300A transmits/receives, for example, signals DQ, DQS, DQSn, RE, and REn from/to the memory controller 100 and the I/F chip 500. The memory bus 300B transmits/receives, for example, signals DQ, DQS, DQSn, RE, and REn from/to the I/F chip 500 and the memory chip 210.
At the time of reading data, the I/F chip 500 receives third data 740 stored in cell transistors of the memory cell array 260, from the memory chip 210, via the memory bus 300B.
The received third data 740 is encoded into fourth data 760 by the second toggle encoder 440. The bit length of the third data 740 may be the same as or different from that of the first data 700. The number of toggles of the third data 740 may be the same as or different from that of the first data 700. In particular, when the first data 700 is written to the memory cell array 260, and the first data 700 is correctly readable as the third data 740, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
Further, the bit length of the fourth data 760 may be the same as or different from that of the second data 720. In addition, the number of toggles of the fourth data 760 may be the same as or different from that of the second data 720. In particular, when the first data 700 is written to the memory cell array 260, and the first data 700 is correctly readable as the third data 740, the bit length and the number of toggles of the second data 720 are the same as those of the fourth data 760.
The I/F chip 500 transmits the encoded fourth data 760 to the memory controller 100 via the memory bus 300A.
As illustrated in
The memory controller package 100A is a package in which the memory controller 100 is provided. The memory package 210A is a package in which the memory chip 210 is provided. The interface package 500A is a package in which the I/F chip 500 is provided.
As illustrated in
In the memory system 3000 according to the third embodiment, after encoding is performed such that the number of toggles of data is decreased, data transmission is performed between the memory controller 100 and the I/F chip 500. Thus, it is possible to reduce power consumption accompanied by data transmission.
Further, in the memory system 3000 according to the third embodiment, the memory chip 210 does not include the first toggle decoder 420 and the second toggle encoder 440. Thus, there is no need to change the size of the memory chip 210 as compared to the example of the related art, and thus, it is possible to reduce the cost of the memory chip 210.
A memory system 4000 according to a fourth embodiment has the same configuration as the memory system 1000 according to the first embodiment, except that the memory controller 100 in the memory system 4000 includes a randomizer 600.
Write data, etc. received from the first buffer memory 140 is transmitted as fifth data having a first bit length to the randomizer 600 by the memory I/F 150. The randomizer 600 randomizes the fifth data having the first bit length to generate first data 700. The randomized first data 700 is encoded into second data 720 by the first toggle encoder 400. Then, the second data 720 is transmitted to the non-volatile memory 200.
In addition, third data 740 received from the memory cell array 260 is transmitted to the second toggle encoder 440 by the peripheral circuit 240. The third data 740 is encoded into fourth data 760 by the second toggle encoder 440. The fourth data 760 is transmitted to the memory controller 100. The fourth data 760 is decoded into the third data 740 by the second toggle decoder 460. Next, the third data 740 is transmitted to the randomizer 600. The randomizer 600 de-randomizes the third data 740 to generate the fifth data having the first bit length.
In addition, the bit length of the third data 740 may be the same as or different from that of the first data 700. In addition, the number of toggles of the third data 740 may be the same as or different from that of the first data 700. In particular, when the first data 700 is written to the memory cell array 260, and the first data 700 is correctly readable as the third data 740, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
Further, the bit length of the fourth data 760 may be the same as or different from that of the second data 720. The number of toggles of the fourth data 760 may be the same as or different from that of the second data 720. In particular, when the first data 700 is written to the memory cell array 260, and the first data 700 is correctly readable as the third data 740, the bit length and the number of toggles of the second data 720 are the same as those of the fourth data 760.
In the memory system 4000 according to the fourth embodiment, after encoding is performed such that the number of toggles of data is decreased, data transmission is performed between the memory controller 100 and the non-volatile memory 200. Thus, it is possible to reduce power consumption accompanied by data transmission.
In the present embodiment, it is expected that the first data pieces 700 in the first data group equally appear. Therefore, in the present embodiment, as described above with reference to
Meanwhile, when the first data pieces 700 in the first data group do not equally appear, the numbers of toggles of the first data pieces 700 are weighted by the appearance frequency, and these sums are compared to each other so that the number of toggles may be reduced. For example, in a case where data “010010000” appears more frequently than other data, when the data “010010000” is encoded, encoding is performed such that the number of toggles is smaller than those of other data having a low appearance frequency.
A memory system 5000 according to a fifth embodiment has the same configuration as the memory system 1000 according to the first embodiment, except that the non-volatile memory 200 in the memory system 5000 includes the randomizer 600. The randomizer 600 randomizes data to be written in order to improve the reliability of read data.
At the time of writing data, first data 700 stored in the second buffer memory of the first toggle encoder 400 is encoded into second data 720 by the first toggle encoder 400. Then, the second data 720 is transmitted to the memory chip 210 by the memory I/F 150 via the memory bus 300.
The second data 720 transmitted to the memory chip 210 is randomized into fifth data having the second bit length by the randomizer 600. The randomized fifth data is written to the memory cell array 260.
At the time of reading data, sixth data read from the memory cell array 260 is de-randomized by the randomizer 600 and becomes fourth data having the fourth bit length, and the fourth number of toggles. The de-randomized fourth data is transmitted to the memory controller 100 via the memory bus 300. The fourth data transmitted to the memory controller 100 is decoded into third data having the third bit length shorter than the fourth bit length and the third number of toggles larger than the fourth number of toggles by the second toggle decoder 460.
In addition, the bit length of the fourth data 760 may be the same as or different from that of the second data 720. The number of toggles of the fourth data 760 may be the same as or different from that of the second data 720. In particular, when the fifth data is written to the memory cell array 260, and the fifth data is correctly readable as the sixth data, the bit length and the number of toggles of the second data 720 are the same as those of the fourth data 760.
In addition, the bit length of the third data 740 may be the same as or different from that of the first data 700. In addition, the number of toggles of the third data 740 may be the same as or different from that of the first data 700. In particular, when the fifth data is written to the memory cell array 260, and the fifth data is correctly readable as the sixth data, the bit length and the number of toggles of the first data 700 are the same as those of the third data 740.
Further, the bit length of the sixth data maybe the same as or different from that of the fifth data. In addition, the number of toggles of the sixth data may be the same as or different from that of the fifth data. In particular, when the fifth data is written to the memory cell array 260, and the fifth data is correctly readable as the sixth data, the bit length and the number of toggles of the fifth data are the same as those of the sixth data.
In the memory system 5000 according to the fifth embodiment, after encoding is performed such that the number of toggles of data is decreased, data transmission is performed between the memory controller 100 and the non-volatile memory 200. Thus, it is possible to reduce power consumption accompanied by data transmission. Further, since the non-volatile memory 200 includes the randomizer 600, it is possible to maintain the reliability of the memory system 5000.
In the memory system according to at least one of the above described embodiments, after encoding is performed such that the number of toggles of data is decreased, data transmission is performed between the memory controller and the non-volatile memory. Thus, it is possible to reduce power consumption accompanied by data transmission.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein maybe made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2019-104682 | Jun 2019 | JP | national |
This application is a continuation of U.S. patent application Ser. No. 16/774,609, filed Jan. 28, 2020, which is based upon and claims the benefit of priority from Japanese Patent Application No. 2019-104682, filed on Jun. 4, 2019, the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 16774609 | Jan 2020 | US |
Child | 17519356 | US |