Method and apparatus for writing data in memory system

A method of writing data in a memory system comprises determining a characteristic of write data and generating characteristic information according to the determined characteristic, generating a write command corresponding to the write data, and sending the write command, the characteristic information, and the write data to the memory system.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C §119 to Korean Patent Application No. 10-2011-0024427 filed on Mar. 18, 2011, the disclosure of which is hereby incorporated by reference.

BACKGROUND OF THE INVENTION

Embodiments of the inventive concept relate generally to electronic data storage technologies. More particularly, embodiments of the inventive concept relate to methods and apparatuses for writing data in a memory system.

There is a continuing demand for data storage devices having higher performance and data storage capacity. Examples of such data storage devices include hard disk drives (HDDs), optical disk drives (ODDs), and semiconductor memory devices.

Semiconductor memory devices can be roughly divided into two categories according to whether they retain stored data when disconnected from power. These categories include volatile memories, which lose stored data when disconnected from power, and nonvolatile memories, which retain stored data when disconnected from power. Examples of volatile memories include static random access memory (SRAM), dynamic random access memory (DRAM), and synchronous DRAM (SDRAM). Examples of nonvolatile memories include read only memory (ROM), a programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable and programmable ROM (EEPROM), and flash memory.

A data storage device is typically connected with a host such as a personal computer. The host typically stores, reads, and erases various types of data in the data storage device. Accordingly, one way to improve the performance of a data storage device is to improve the way it interoperates with a host.

SUMMARY OF THE INVENTION

In one embodiment of the inventive concept, a method is provided for writing data in a memory system. The method comprises determining a characteristic of write data and generating characteristic information according to the determined characteristic, generating a write command corresponding to the write data, and transmitting the write command, the characteristic information, and the write data to the memory system.

In another embodiment of the inventive concept, a method is provided for writing data in a memory system comprising a storage device and a controller configured to control the storage device. The method comprises receiving a write command, write data, and characteristic information indicating a characteristic of the write data, determining a write method of the received write data according to the received characteristic information, and writing the received write data in the storage device according to the determined write method.

In another embodiment of the inventive concept, a memory system comprises a storage device configured to store data, and a controller configured to control the storage device, wherein the controller receives a write command, write data, and characteristic information indicating a characteristic of the write data, determines a write method of the received write data according to the received characteristic information, and writes the received write data in the storage device according to the determined write method.

In another embodiment of the inventive concept, a method of writing data in a system including a host, a storage device and a controller comprises determining a characteristic of write data and generating characteristic information according to the determined characteristic by the host; generating a write command corresponding to the write data by the host; transmitting the write command, the characteristic information, and the write data from the host to the controller; determining a write method of the received write data according to the received characteristic information by the controller; and writing the received write data in the storage device according to the determined write method.

These and other embodiments of the inventive concept can potentially improve the performance of a memory system by modifying the way it performs write operations according to different circumstances.

DETAILED DESCRIPTION

Embodiments of the inventive concept are described below with reference to the accompanying drawings. These embodiments are presented as teaching examples and should not be construed to limit the scope of the inventive concept.

In the description that follows, the terms first, second, third, etc. may be used to describe various features, but these features should not be limited by these terms. Rather, these terms are used merely to distinguish between different features. Thus, a first feature discussed below could be termed a second feature without departing from the provided teachings.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the inventive concept. As used herein, the singular forms “a”, “an” and “the” are intended to encompass the plural forms as well, unless the context clearly indicates otherwise. Terms such as “comprises”, “comprising,” “includes” and “including”, when used in this specification, specify the presence of stated features, but they do not preclude the presence or addition of one or more other features. As used herein, the term “and/or” indicates any and all combinations of one or more of the associated listed items.

Where a feature is referred to as being “on”, “connected to”, “coupled to”, or “adjacent to” another feature, it can be directly on, connected, coupled, or adjacent to the other feature, or intervening features may be present. In contrast, where a feature is referred to as being “directly on,” “directly connected to”, “directly coupled to”, or “immediately adjacent to” another feature, there are no intervening features present.

FIG. 1is a block diagram illustrating a computing system100according to an embodiment of the inventive concept. Referring toFIG. 1, computing system100comprises a host110and a memory system120.

Host110is configured to store data in memory system120and to access data stored therein. This is typically accomplished by transferring a command CMD to memory system120and exchanging data with memory system120. For example, host110may send a read command, a write command, or an erase command to memory system120. Host110may also send attribute information representing an attribute of write data to the memory system together with the write command and write data. The attribute information may be an attribute command. Host110can also send a read command to memory system120and receive read data from memory system120.

Host100can be a data processing device such as a personal computer, a notebook computer, an Ultra Mobile PC (UMPC), a workstation, a net-book, a personal digital assistant (PDA), a web tablet, a wireless phone, a mobile phone, a smart phone, an e-book, a portable multimedia player (PMP), a digital camera, a digital audio recorder/player, a digital picture/video recorder/player, a portable game machine, a navigation system, a black box, a 3-dimensional television, a digital audio recorder, or a digital audio player.

Memory system120is configured to read, write, and erase data under the control of host110. Memory system120comprises a storage device130and a controller140.

Controller140is configured to control storage device130, and it functions as an interface between storage device130and host110. Controller140sends a control signal CTRL and an address ADDR to storage device130and exchanges data with storage device130.

Storage device130performs read, write, and erase operations in response to a control signal CTRL and an address ADDR input from controller140. Storage device130stores data transferred from controller140and outputs read data to controller140. Storage device130can send various response signals to controller140.

Storage device130can be, for instance, a hard disk drive (HDD), a magnetic tape, a solid state drive (SSD), an electrically programmable erasable read only memory (EEPROM), a flash memory device, a phase-change RAM (PRAM), a magnetic RAM (MRAM), a resistive RAM (RRAM), or a ferroelectric RAM (FRAM).

FIG. 2is a block diagram illustrating host110ofFIG. 1according to an embodiment of the inventive concept. Referring toFIGS. 1 and 2, host110comprises a CPU111, a RAM112, a user interface113, a power supply114, a modem115, a device interface116, and a system bus117.

CPU111controls overall operations of host110. RAM112stores data processed by CPU111. RAM112can be formed of a volatile memory such as an SRAM, a DRAM, or an SDRAM, or a nonvolatile memory such as a PRAM an MRAM, an RRAM, an FRAM, or a NOR flash memory.

User interface113allows a user to access host110. User interface113can include, for instance, a keyboard, a mouse, a touch pad, a button, a touch screen, a microphone, a camera, a sensor, and the like, and a user output interface such as a screen, a speaker, a motor, a ramp, or a beam projector.

Power supply114supplies power to host110.

Modem115allows host110to communicate with an external device. Modem115can communicate with the external device via a wireless or wired communication channel. Modem115can communicate with the external device using a protocol such as global system for mobile communication (GSM), code division multiple access (CDMA), asymmetric digital subscriber line (ADSL), Ethernet, wireless fidelity (Wi-Fi), very high-bit rate digital subscriber line (VDSL), world interoperability for microwave access (WiMAX), or long term evolution (LTE).

Device interface116provides an interface for an external device such as memory system120. For example, host110can transfer command CMD and data to memory system120via device interface116, and it can receive data from memory system120via device interface116.

System bus117provides a communication channel between other elements of host110.

FIG. 3is a block diagram illustrating storage device130ofFIG. 1according to an embodiment of the inventive concept. Storage device130can be a semiconductor memory, for example. Nevertheless, storage device130is not limited to being a semiconductor memory.

Referring toFIGS. 1 and 3, storage device130comprises a memory cell array132, an address decoder134, a read/write circuit136, and control logic138.

Memory cell array132is connected to address decoder134and read/write circuit136via a plurality of conductive lines. Memory cell array132comprises a plurality of memory cells. Memory cells arranged in a row direction are connected with address decoder134via a plurality of conductive lines. For example, these memory cells may be connected with address decoder134via word lines. Memory cells arranged in a column direction may be connected with read/write circuit136via a plurality of conductive lines. For example, these memory cells may be connected with read/write circuit136via bit lines.

Address decoder134is configured to operate under the control of control logic138. Address decoder134receives address ADDR from controller140, and it decodes a row address of address ADDR. Address decoder134then selects rows of memory cells of memory cell array132using the decoded row address.

Address decoder134also decodes a column address of input address ADDR, and it provides a decoded column address DCA to read/write circuit136. Address decoder134typically comprises a row decoder, a column decoder, an address buffer.

Read/write circuit136is operates under the control of control logic138. Read/write circuit136receives decoded column address DCA from address decoder134, and it selects columns of memory cells of memory cell array132based on decoded column address DCA.

Read/write circuit136receives data from controller140and writes the data in memory cell array110. Read/write circuit136can also read data from memory cell array110and outputs the read data to controller140. Read/write circuit136can also read data from a first storage area of memory cell array110to write it in a second storage area in a copy-back operation.

In some embodiments, read/write circuit136comprises a page buffer (or, a page register), a column selector circuit, and/or a data buffer. In other embodiments, read/write circuit136comprises a sense amplifier, a write driver, a column selector circuit, and/or a data buffer.

Control logic138is connected with address decoder134and read/write circuit136. Control logic138is configured to control overall operations of storage device130. Control logic138operates responsive to a control signal CTRL transferred from controller140.

FIG. 4is a diagram of software layers in computing system100ofFIG. 1.

Referring toFIG. 4, software layers within host110include an application111, an operating system113, a file system115, a device driver117, and a communication protocol119.

Application111can comprise various programs to be run by host110. For example, application111can include a word processor, a spread sheet, a file viewer, an image viewer, a sound player, or an image player.

File system115operates under the control of operating system113. File system115manages memory system120connected with host110and data stored in memory system120. File system115can be, for instance, File Allocation Table (FAT), FAT32, New Technology File System (NTFS), Hierarchical File System (HFS), XFS, Journaled File System (JFS), On-Disk Structure 2 (ODS-2), ODS-5, Universal Disk Format (UDF), Veritas, Quick File System (QFS), ZFS, Unix File System (UFS), second edition file system (ext2), ext3, ext4, ReiserFS, Reiser4, Global File System (GFS), GFS2, Oracle Cluster File System (OCFS), OCFS2, New Implementation of a Log-structured File System (NILFS), ISO 9660, Virtual File System (VFS), Gnome VFS, Be File System (BFS), or any of various other file systems.

Device driver117enables file system115to access memory system120.

Communication protocol119is used to implement communication between host110and memory system120. Communication protocol119can be, for instance, Universal Serial Bus (USB) protocol, multimedia card (MMC) protocol, peripheral component interconnection (PCI) protocol, PCI-express (PCI-E) protocol, Advanced Technology Attachment (ATA) protocol, Serial-ATA protocol, Parallel-ATA protocol, small computer small interface (SCSI) protocol, enhanced small disk interface (ESDI) protocol, Integrated Drive Electronics (IDE) protocol, Firewire protocol, or any of various other communication protocols.

Software layers within memory system120include a storage space121, firmware123, and a communication protocol125. Storage space121is a space where data is written. Firmware123controls storage space121in response to command CMD transferred from host110. Firmware123writes data transferred from host110in storage space121. Firmware123reads data written in storage space121to sends it to host110. Firmware123erases data written in storage space121.

Firmware123performs background operations on memory system120. For example, firmware123may manage wear leveling of storage space121or data retention. Where memory system120includes a NAND flash memory, firmware123may include a flash translation layer (FTL). In this case, firmware123can manage address mapping between logical block addresses and physical block addresses. Firmware123may further perform background operations such as merge operations or garbage collection operations.

Communication protocol125is used to implement communication between host110and memory system120. Communication protocol125can be, for example, a Universal Serial Bus (USB) protocol, a multimedia card (MMC) protocol, a peripheral component interconnection (PCI) protocol, a PCI-express (PCI-E) protocol, an Advanced Technology Attachment (ATA) protocol, a Serial-ATA protocol, Parallel-ATA protocol, small computer small interface (SCSI) protocol, an enhanced small disk interface (ESDI) protocol, an Integrated Drive Electronics (IDE) protocol, a Firewire protocol, or any of various other communication protocols.

FIG. 5is a flowchart illustrating a method of writing data in storage device130according to an embodiment of the inventive concept. In the description that follows, example method steps will be indicated by parentheses (SXXX).

Referring toFIGS. 4 and 5, host110determines a characteristic (or, attribute) of write data and generates characteristic information, such as a characteristic command, based on the determination (S110). The characteristic command may include information indicating whether the write data is duplication data, compressed data, multimedia data, or pattern data including an iterative pattern. Host110also generates a write command (S120). Operations S110and S120can be performed sequentially, simultaneously, in a reverse order, or such that their execution times are partially overlapped.

Host110sends the characteristic command, the write command, and the write data to memory system120(S130). Then, memory system120determines a write method to be used to write the data in memory system120(S140). For example, firmware123may determine a write method according to the characteristic command.

Next, memory system120writes the write data in storage space121according to the determined write method (S150), and then memory system120notifies host110that writing is completed (S160).

FIG. 6Ais a flowchart illustrating an operation of host110according to an embodiment of the inventive concept. More specifically, a method of determining a characteristic of write data and generating a characteristic command will be described with reference toFIGS. 4 and 6A.

Referring toFIG. 6A, the method determines whether write data is duplicated data (S210). For example, application111, operating system113, or file system115of host110may determine whether to store in memory system120a duplicate copy of source data already stored in memory system120. Where the write data is duplicated data (S210=Yes), a duplication characteristic is determined (S220). Application111, operating system113, or file system115of host110generates information indicating that the write data is determined to be duplicated data.

Where the write data is not duplicated data (S210=No), the method then determines whether the write data is compressed data (S230). For example, application111, operating system113, or file system115of host110may determine whether the write data is compressed data, based upon a header or an extension of the write data.

Where the write data is compressed data (S230=Yes), a compressed characteristic is determined (S240). Accordingly, application111, operating system113, or file system115of host110may generate information indicating that the write data is determined to be compressed data.

Where the write data is not compressed data (S230=No), the method determines whether the write data is multimedia data (S250). For example, application111, operating system113, or file system115of host110may determine whether the write data is multimedia data, based upon a header or an extension of the write data.

Where the write data is multimedia data (S250=Yes), a multimedia characteristic is determined (S260). Accordingly, application111, operating system113, or file system115of host110may generate information indicating that the write data is determined to be multimedia data.

Where the write data is not multimedia data (S250=No), the method determines whether the write data is pattern data including an iterative pattern (S270). Where the write data is pattern data (S270=Yes), a pattern characteristic is determined (S280). For example, where application111, operating system113, or file system115of host110generates data including an iterative pattern and writes such data in the memory system, the write data may be identified as pattern data. Accordingly, application111, operating system113, or file system115of host110may generate information indicating that the write data is determined to be pattern data.

Finally, a characteristic command is generated (S290). The characteristic command indicates whether write data is duplicated data, compressed data, multimedia data, or pattern data. For example, a communication protocol119generates the characteristic command based upon information generated by application111, operating system113, or file system115of host110.

FIG. 6Bis a flowchart illustrating an operation of a host according to another embodiment of the inventive concept. More specifically, a method of determining a characteristic of write data and generating a characteristic command will be described with reference toFIGS. 4 and 6B.

Referring toFIG. 6B, where write data is determined to be duplicated data (S310), a duplicated characteristic is determined (S320), and then a characteristic command is generated (S390). Where the write data is determined to be compressed data (S330), a compressed characteristic is determined (S340), and a characteristic command is generated (S390). Where the write data is determined to be multimedia data (S350), a multimedia characteristic is determined (S360) and a characteristic command is generated (S390). Where the write data is determined to be pattern data (S370), a pattern characteristic is determined (S380) and a characteristic command is generated (S390).

FIG. 7is a diagram illustrating a characteristic command generated by host110according to an embodiment of the inventive concept.

Referring toFIG. 7, the characteristic command comprises a command header portion and an attribute portion. The command header portion is formed of 32 bits. A first bit00indicates whether write data is duplicated data. Where the write data is duplicated data, first bit00is set to ‘1’. A second bit01indicates whether write data is multimedia data. Where the write data is multimedia data, second bit01is set to ‘1’. A third bit02indicates whether write data is compressed data. Where the write data is compressed data, third bit02is set to ‘1’. A fourth bit03indicates whether write data is pattern data. Where the write data is pattern data, fourth bit03is set to ‘1’. Remaining bits31:04are reserved bits.

The attribute portion is formed of 32 bits. First through eighth bits07:00include information of a starting logical address of source data. For example, if write data is duplicated data, the first through eighth bits07:00may be set up.

Ninth through sixteenth bits15:08include information of a starting logical address. The ninth through sixteenth bits15:08indicate a starting logical address of a memory system120in which write data is stored.

Seventeenth and eighteenth bits17:16include length information of a logical address. The seventeenth and eighteenth bits18:17indicate a length of a logical address of memory system120in which write data is stored.

Nineteenth through twenty sixth bits25:18include information of a data pattern. Where write data is pattern data, the nineteenth through twenty sixth bits25:18are set up. The nineteenth through twenty sixth bits25:18include information associated with an iterative pattern of write data. Remaining bits31:26are reserved bits.

The characteristic command described with reference toFIG. 7is one example of a characteristic command. However, characteristic commands are not limited to the example ofFIG. 7.

FIG. 8is a flowchart illustrating an operation of memory system120according to an embodiment of the inventive concept. More specifically, operations of determining a write method and writing write data according to the determined write method will be more fully described with reference toFIGS. 4 and 8.

The method first determines whether a characteristic command indicates duplication data (S410). For example, firmware123determines whether a characteristic command indicates duplication data, based upon a first bit00of a command header portion of the characteristic command.

Where the characteristic command indicates the duplication data, firmware123determines whether write data input with the characteristic command is duplication data. Firmware123detects logical addresses, in which source data is stored, based on first through eighth bits07:00of an attribute portion of the characteristic command. Firmware123detects logical addresses where write data is to be written based on ninth through eighteenth bits17:08of the attribute portion.

Next, firmware123determines a virtual write method (S420). Then, metadata is updated to indicate that write data is written into the same addresses as source data (S430). Firmware123maintains metadata used to manage a storage space of a storage device130. The metadata may include mapping information between an address input from a host110and an address of storage device130corresponding to the address input from a host. For example, the metadata may include mapping information between an address input from a host110and a physical address of storage device130corresponding to the address input from a host. The metadata may include information as illustrated in following Table 1.

TABLE 1Logical addresses from hostAddresses of storage deviceA1:A4DA5:DA8

Referring to Table 1, first through fourth addresses A1:A4input from host110may correspond to fifth through eighth addresses DA5:DA8of storage device130. Data stored at the first to fourth addresses A1:A4may be source data.

Fifth through eighth addresses DA5:DA8may correspond to write data. Firmware123may update the metadata as if write data is written at the same addresses as source data, without writing of write data in storage device130. The metadata is updated as illustrated in following Table 2.

TABLE 2Logical addresses from hostAddresses of storage deviceA1:A4DA5:DA8A5:A8DA5:DA8

As described with reference to operation S160ofFIG. 5, memory system120notifies host110that writing is completed. Firmware123updates the metadata without actual writing of write data in storage device130. Accordingly, it is possible to shorten a time taken to write duplication data.

FIG. 9is a flowchart illustrating an operation of a memory system according to another embodiment of the inventive concept. More specifically, operations of determining a write method and writing write data according to the determined write method will be more fully described with reference toFIGS. 4 and 9.

The method first determines whether a characteristic command indicates compressed data or multimedia data (S510). For example, firmware123determines whether a characteristic command indicates compressed data or multimedia data, based on second and third bits02:01of a command header portion of the characteristic command.

Where the characteristic command does not indicate compressed data or multimedia data, firmware123compresses write data (S520). Where the characteristic command indicates compressed data or multimedia data, firmware123can skip an operation of compressing write data. Next, a write operation is performed (S530). Firmware123writes the write data or the compressed write data in storage device130.

As described with reference to operation S160ofFIG. 5, afterwards, memory system120notifies host110that writing is completed.

Compressed data or multimedia data is data which is previously compressed. This means that a compression rate does not increase although compression is further made. Accordingly, it is possible to reduce a write time by skipping a compression operation executed by firmware123when write data is compressed data or multimedia data.

In the embodiment ofFIG. 9, where compression of write data is skipped, the firmware can add a flag to the metadata to indicate that the write data is uncompressed data. Accordingly, when uncompressed data is read, firmware123skips a decompression operation of the read data based upon the flag of the metadata.

FIG. 10is a flowchart illustrating an operation of memory system120according to another embodiment of the inventive concept. More specifically, operations of determining a write method and writing write data according to the determined write method will be more fully described with reference toFIGS. 4 and 10.

The method first determines whether a characteristic command indicates pattern data (S610). For example, firmware123determines whether the characteristic command indicates pattern data, based upon a fourth bit (03) of a command header portion of the characteristic command.

Next, an iterative pattern is extracted from the characteristic command (S620). For example, firmware123extracts iterative pattern based upon nineteenth through twenty sixth bits25:18of an attribute portion of the characteristic command.

Next, the method determines whether the extracted pattern coincides with one of previously stored patterns (S630). Firmware123adds pattern information of written pattern data to metadata whenever pattern data is written in storage device130. Accordingly, firmware123maintains a list on patterns of pattern data previously stored in storage device130.

Where the extracted pattern does not coincide with any one of previously stored patterns, the method then determines a pattern write method (S651). Thereafter, the extracted pattern is written in storage device130(S653). Firmware123writes the extracted pattern in storage device130, and updates the metadata such that a logical address LBA of the write data is mapped to an address of storage device130in which the extracted pattern is written (S655). For example, firmware123updates the metadata as shown in following Table 3.

TABLE 3Logical addresses from hostAddresses of storage deviceA1:A10DA1:DA2

The extracted pattern is a part of the write data, and iterations of data extraction are used to form the write data. Accordingly, if the extracted pattern and logical address LBA of the write data exist, the write data is recovered by iterating the extracted pattern by a value corresponding to logical address LBA of the write data. In Table 3, first through tenth addresses A1:A10are addresses transferred from host110, and the extracted pattern is data written at first and second addresses DA1:DA2of storage device130. This means that write data is recovered by iterating a pattern stored at the first and second addresses DA1:DA2of storage device130five times.

As described with reference to operation S160inFIG. 5, afterwards, memory system120notifies host110that writing is completed.

If the extracted pattern is matched with any one of previously stored patterns (S640=Yes), a virtual write method is determined (S661). Then, firmware123updates the metadata such that addresses of write data are mapped to addresses of storage devices130where the matched pattern is stored (S663). For example, firmware123updates the metadata as represented in following Table 4.

TABLE 4Logical addresses from hostAddresses of storage deviceA1:A10DA1:DA2A11:A30DA1:DA2

Referring to Table 4, addresses A11:A30are addresses transferred from host110, and the matched pattern is data previously written at addresses DA1:DA2of storage device130. This means that write data corresponding to addresses A11:A30is recovered by iterating a pattern stored at addresses DA1:DA2of storage device130ten times.

As described with reference to operation S160inFIG. 5, afterwards, memory system120notifies host110that writing is completed.

As described above, where write data is pattern data, a pattern of the write data is stored in storage device130, instead of all write data. Where a pattern of write data is identical to a pattern previously stored in storage device130, the pattern of the write data is not written in storage device130. Accordingly, it is possible to reduce a write time of pattern data.

In the embodiment ofFIG. 10, generation of a characteristic command is controlled by application111, operating system113, or file system115. Where write data requires high reliability, generation of a characteristic command may be limited. Consequently, although write data is pattern data or duplication data, memory system120writes all write data in storage device130.

Where the reliability is lowered due to deterioration of storage device130, application111, operating system113, or file system115may limit generation of a characteristic command.

Application111, operating system113, or file system115may limit generation of a characteristic command by checking whether a user limits the generation of the characteristic command.

FIG. 11is a block diagram illustrating a computing system200according to another embodiment of the inventive concept.

Referring toFIG. 11, a computing system200comprises a host210and a memory system220. Memory system220comprises a controller240and a storage device230. Storage device230comprises a plurality of storage media each formed of a memory chip. The storage media communicate with controller240via a plurality of channels CH1through CHk. Multiple storage media are connected in common with one channel.

In some embodiments, storage media of storage device230communicates with controller240via one channel connected with one storage media.

In the above embodiments, write data is included in a characteristic command. However, the inventive concept is not limited thereto. For example, addresses of write data can be sent to memory system120or220independent of a write command and a characteristic command. The characteristic command may be used to include addresses associated with a characteristic of write data such as an address of source data, an address of a portion formed of pattern data when a part of write data is pattern data and the like.

As indicated by the foregoing, a write method can be performed differently according to a characteristic of write data. Accordingly, a write method suitable for a characteristic of write data is used, and a write time is reduced.

The foregoing is illustrative of embodiments and is not to be construed as limiting thereof. Although a few embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible in the embodiments without materially departing from the novel teachings and advantages of the inventive concept. Accordingly, all such modifications are intended to be included within the scope of the inventive concept as defined in the claims.