Patent Description:
Semiconductor memories are classified into volatile memory devices and non-volatile memory devices. Volatile memory devices lose data stored therein when power thereto is cut off, but the non-volatile memory devices may retain data stored therein even in the case that power thereto is cut off. Non-volatile memories include a read only memory (ROM), a programmable ROM (PROM), an electrically programmable ROM (EPROM), an electrically erasable and programmable ROM (EEPROM), a flash memory, a phase-change random access memory (PRAM), a magnetic RAM (MRAM), a resistive RAM (RRAM), a ferroelectric RAM (FRAM), and the like.

The non-volatile memory is used as a storage device in a computing system. In the computing system, the storage device may communicate with a host device using a predetermined interface protocol. <CIT> discloses an operation method of a controller which controls a memory device including an operation parameter register. The operation method includes receiving a write request from a host, the write request including a write command, a write address and write data; extracting from the write data a parameter change internal command for changing an operation parameter value of the memory device based on whether the write address is a specific address, the extracted parameter change internal command including an operation parameter address and operation parameter data; and setting an operation parameter of the memory device by controlling the memory device to store the operation parameter data in the operation parameter register corresponding to the operation parameter address, the operation parameter data corresponding to the operation parameter value. <CIT> discloses a first transmitting device including a controller that generates setting information concerning transmission and reception of data in the first and second transmitting devices and transmits the generated setting information to the second transmitting device; a detector that detects whether an error is included in data which is transmitted from the second transmitting device and received based on the setting information; and a storage unit that stores information on the error detected by the detector. A second transmitting device includes: a setting unit that sets transmission of data to be transmitted to the first transmitting device based on the setting information received from the controller; and a generator that generates data in accordance with the setting by the setting unit to transmit the data to the first transmitting device.

Example embodiments provide a storage device communicating with a host device using a predetermined interface protocol and supporting a method capable of setting parameters therein indicating connection characteristics between the storage device and the host upon request from the host.

The invention provides a storage device as claimed in claim <NUM> and a method as claimed in claim <NUM>.

The above and other features of the invention are set out in the claims.

Hereinafter, preferred example embodiments of the present disclosure will be described with reference to the accompanying drawings.

<FIG> is a block diagram illustrating a computing system according to the present disclosure.

A computing system <NUM> may include a host <NUM> and a storage device <NUM>.

The host <NUM> may include electronic devices, for example, portable electronic devices such as mobile phones, MP3 players, and laptop computers or various types of electronic devices such as desktop computers, game consoles, TVs, and projectors.

The storage device <NUM> may communicate with the host <NUM> to perform an operation under the control of the host <NUM>. The storage device <NUM> may include a non-volatile memory such as a flash memory, a phase-change random access memory (PRAM), a magnetic random access memory (MRAM), or a resistive random access memory (RRAM). For example, the storage device <NUM> may be implemented as any one of various types of storage devices such as a solid state drive (SSD), a multimedia card (MMC), an embedded MMC (eMMC), a reduced size MMC (RS-MMC), a micro-MMC, a secure digital (SD) card, a mini-SD card, a micro-SD card, a universal serial bus (USB) storage device, a universal flash storage (UFS) device, a compact flash (CF) card, a smart media card, and a memory stick.

The storage device <NUM> may communicate with the host <NUM> according to a predetermined interface protocol. For example, the storage device <NUM> and the host <NUM> may communicate with each other according to a peripheral component interconnect express (PCIe) protocol. The host <NUM> may include a storage interface <NUM> for communicating with the storage device <NUM> according to the predetermined interface protocol, and the storage device <NUM> may include a host interface <NUM> for communicating with the host <NUM> according to the predetermined interface protocol.

Various types of electronic devices and storage devices may communicate with each other according to the predetermined interface protocol. Optimal connection characteristics between the host <NUM> and the storage device <NUM> communicating with each other may vary depending on various connection environments. For example, a pre-emphasis level and a de-emphasis level for optimizing a signal-to-noise ratio (SNR) of a signal transmitted by the storage device <NUM> to the host <NUM> may vary depending on the connection environments.

The storage device <NUM> may have various parameters defining connection characteristics between the storage device <NUM> and the host <NUM>. The storage device <NUM> may optimize the connection characteristics between the storage device <NUM> and the host <NUM> by optimizing parameter values. An operation of the storage device <NUM> for optimizing its connection characteristics may be referred to as an interface tuning operation.

If the storage device <NUM> can acquire optimized parameter values from the outside and applying the acquired parameter values identically to parameters therein, the storage device <NUM> may quickly and easily perform interface tuning. For example, a manufacturer (vendor) of the storage device <NUM> may find optimal parameter values according to the connection environment. Then, if the storage device <NUM> receives the optimal parameter values transmitted from the outside and applies the received optimal parameter values to parameters therein, the storage device <NUM> may optimize its connection characteristics without directly finding the optimized parameter values.

The storage device <NUM> may include a register storing parameter values. The interface protocol for communication between the host <NUM> and the storage device <NUM> may not provide an interface for the host <NUM> to access the register. If the manufacturer needs to produce firmware to which the optimized parameter values are applied and support firmware update in the storage device <NUM> to apply the optimal parameter values to the storage device <NUM>, it is difficult to apply the optimal parameter values.

According to an example embodiment of the present disclosure, the storage device <NUM> may support a parameter change command. For example, when the storage device <NUM> conforms to a non-volatile memory express (NVMe) standard, the parameter change command may be an NVMe administrator (Admin) command. The parameter change command may include one or more descriptors respectively including a register address and a parameter value corresponding to a target parameter to be changed.

When receiving a parameter change command from the host <NUM>, the storage device <NUM> may tune the interface by writing the parameter value into a region indicated by the register address included in the parameter change command. Therefore, even when the host <NUM> is not allowed to access the register according to the interface protocol, the storage device <NUM> may tune the interface using the optimal parameter value acquired from the outside.

<FIG> is a flowchart illustrating an operation of the computing system according to an example embodiment of the present disclosure.

In step S11, the host provides a parameter change command including one or more descriptors. As described above, each of the descriptors may include a register address and a parameter value corresponding to a target parameter to be changed.

Meanwhile, the optimized parameter value may be determined by the manufacturer. The manufacturer may configure the host to tune the interface between the host and the storage device by generating a parameter change command including the optimized parameter value and transmitting the parameter change command to the host.

In an implementation, the manufacturer may improve the security of parameter and the parameter value by transmitting the parameter change command to the host in an encrypted state. For example, when the storage device conforms to the NVMe standard, the host may provide an encrypted parameter change command to the storage device according to a security protocol supported under the NVMe standard. When receiving the encrypted parameter change command, the storage device may decrypt the parameter change command in step S12. Step S12 is, therefore, optional and is shown in a box having broken lines.

In step S13, the storage device extracts the one or more descriptors from the parameter change command, for example, by parsing the parameter change command.

In step S14, the storage device performs interface tuning by executing the extracted descriptors and writing the parameter values into the register. For example, the storage device may apply an optimal parameter value to the target parameter by writing the parameter value included into the descriptor in a register region indicated by the register address included in the descriptor.

Hereinafter, a storage device and a parameter change command according to an example embodiment of the present disclosure will be described in more detail with reference to <FIG>.

<FIG> is a block diagram illustrating a storage device according to the present disclosure.

A storage device <NUM> may correspond to the storage device <NUM> described with reference to <FIG>. The storage device <NUM> includes a storage controller <NUM> and a main non-volatile memory <NUM>.

The storage controller <NUM> controls the main non-volatile memory <NUM> according to a request of a host <NUM>. The storage controller <NUM> may transmit a control signal to the main non-volatile memory <NUM> and exchange data with the main non-volatile memory <NUM>.

The storage controller <NUM> includes a special function register (SFR) <NUM>. The SFR <NUM> includes storage regions for storing parameter values indicating connection characteristics between the storage device <NUM> and the host <NUM> according to an interface protocol. Meanwhile, the interface protocol may not support access of the host <NUM> to the SFR <NUM>.

The main non-volatile memory <NUM> may perform a read operation, a program operation, and an erase operation under the control of the storage controller <NUM>. The main non-volatile memory <NUM> may include a NAND flash memory. However, in the present disclosure, the main non-volatile memory <NUM> is not limited to the NAND flash memory and the main non-volatile memory <NUM> may include at least one of various non-volatile memories such as a PRAM, an MRAM, an RRAM, and a ferroelectric random access memory (FeRAM).

The storage device <NUM> receives a parameter change command from the host <NUM> through an interface protocol for communicating with the host <NUM>. The storage controller <NUM> performs interface tuning by storing a parameter value in a storage region of the SFR <NUM> in response to the parameter change command received from the host <NUM>.

<FIG> are diagrams illustrating a parameter change command according to an example embodiment of the present disclosure.

<FIG> is a diagram exemplifying a data structure of a parameter change command.

The parameter change command may have a form supported by an interface protocol for communication between a storage device and a host. For example, the parameter change command may have a packet form.

Referring to <FIG>, the parameter change command may include a signature field, a target power cycle field, and a descriptor field.

The signature field may indicate the validity of the parameter change command. For example, the storage device may perform interface tuning using the parameter change command only when the signature field of the parameter change command includes a valid signature.

The target power cycle field may indicate an expiration condition of the parameter change command. Specifically, when receiving the parameter change command from the host, the storage device may store the parameter change command therein and perform interface tuning based on optimized parameters using the parameter change command even upon a power-on reset of the storage device.

The target power cycle field may include information on the number of times of power cycling as an expiration condition of the parameter change command. The power cycle may refer to a cycle in which the storage device is powered on after being powered off, and the number of times of power cycling may refer to the number of times the storage device is powered on after being powered off.

After the storage device receives the parameter change command, the parameter change command expires when the power cycle is repeated the number of times indicated for power cycling in the target power cycle field. The expiration of the parameter change command may mean that the storage device no longer performs interface tuning according to the parameter change command upon a power-on reset of the storage device.

If the storage device performs interface tuning using a parameter change command including incorrect parameter values, it may not be possible for the storage device and the host to normally communicate with each other. According to an example embodiment of the present disclosure, a parameter change command including incorrect parameter values may expire under its expiration condition. Accordingly, after the parameter change command expires, communication between the storage device and the host may be resumed.

Meanwhile, it is exemplified in <FIG> that two target power cycle fields, each having a size of <NUM> bytes, indicate upper <NUM> bytes and lower <NUM> bytes, respectively, for a value of the number of times of power cycling. However, the size and the number of target power cycle fields are not limited to what is exemplified in <FIG>.

In the example of <FIG>, the parameter change command may include N descriptor fields (where N is a natural number). Each of the descriptor fields may include information for specifying a target parameter to be changed and a value to which the target parameter is to be changed. That is, the parameter change command exemplified in <FIG> may change values of the N target parameters.

<FIG> is a diagram illustrating a descriptor included in a parameter change command in more detail.

Referring to <FIG>, descriptor fields may include a group field, an address field, and a value field. The group field and the address field may specify a target parameter, and the value field may indicate a value to which the target parameter is to be changed.

Specifically, the group field may refer to a code block affected by the target parameter. The code block may refer to a set of firmware source codes, for example, a function. The target parameter may be a local parameter applied within a specific function, and the group field may specify a code block to which the target parameter is applied.

The address field includes an address of a region in which the target parameter is stored for the SFR, that is, an SFR address. In an implementation, the SFR address may be a memory map address, which is an address allocated to allow the storage controller to access the SFR.

The value field may include a value of the target parameter to be written into the region indicated by the SFR address.

Referring to <FIG>, the parameter change command may include a plurality of descriptor fields. In a case where the parameter change command includes a plurality of descriptor fields, the storage device may change values of a plurality of target parameters by sequentially executing the plurality of descriptors in response to the parameter change command.

<FIG> is a diagram illustrating an order in which descriptors are executed according to an example embodiment of the present disclosure.

<FIG> exemplifies N descriptors (where N is a natural number) included in the parameter change command of <FIG> and groups, addresses, and parameter values included in the respective descriptors.

According to an example embodiment of the present disclosure, the storage device may execute the descriptors in an order listed in a packet. In the example of <FIG>, the storage device may execute descriptor no. <NUM> to descriptor no. N, for example, in an order in which descriptor nos. <NUM> and <NUM> are executed first to change values of target parameters included in group no. <NUM> and then descriptor no. <NUM> is executed to change a value of a target parameter included in group no.

In the parameter change command, the plurality of descriptors may be listed in an order capable of efficiently changing the plurality of target parameters. For example, the plurality of descriptors may be listed in group order. For example, the group order may be an order in which code blocks are executed with respect to firmware source codes for controlling the connection with the host. To change target parameters applied to the code blocks executed in the predetermined order, the storage device may execute the plurality of descriptors, which are listed in the group order, simply in an order listed. Accordingly, an amount of computation required to change the plurality of target parameters may be reduced.

<FIG> is a flowchart illustrating an operation of the storage device according to an example embodiment of the present disclosure.

In step S21, the storage controller included in the storage device may receive a parameter change command from the host. As described with reference to <FIG>, the parameter change command may include validity information, expiration conditions, and one or more descriptors.

In step S22, the storage controller extracts one or more descriptors from the parameter change command. As described with reference to <FIG>, each of the one or more descriptors may include a group in which a target parameter is included, an address indicating a region in which the target parameter is stored for an SFR, and a value of the target parameter.

In step S23, the storage controller may execute the extracted one or more descriptors in an order as listed to write the parameter values into the SFR. As described with reference to <FIG>, the one or more descriptors in the parameter change command may be listed in group order.

According to the present disclosure described with reference to <FIG>, the storage device supports a parameter change command. The host may control the storage device to change a value of a parameter included in the SFR, which the host is not allowed to access, through an interface protocol by using the parameter change command. The storage device may perform interface tuning by acquiring optimal parameter values determined externally, for example by a manufacturer, and writing the optimal parameter values into regions of the SFR, and the storage device and the host may transmit and receive signals quickly and accurately.

Meanwhile, as described above, the storage device may store a parameter change command received from the host therein and may perform interface tuning using the parameter change command upon a power-on reset of the storage device. According to an example embodiment of the present disclosure, the storage device may store a parameter change command in a sub non-volatile memory storing data required for an operation of the storage controller, instead of a boot region of the main non-volatile memory. Hereinafter, a storage device according to an example embodiment of the present disclosure will be described in more detail with reference to <FIG>.

<FIG> is a block diagram illustrating a storage device according to an example embodiment of the present disclosure.

A storage device <NUM> includes a storage controller <NUM>, a sub non-volatile memory <NUM>, a buffer memory <NUM>, and a main non-volatile memory <NUM>. The storage controller <NUM> and the main non-volatile memory <NUM> may correspond to the storage controller <NUM> and the main non-volatile memory <NUM> described with reference to <FIG>.

The storage controller <NUM> includes an SFR <NUM>. As described with reference to <FIG>, the SFR <NUM> includes parameters defining connection characteristics with respect to the storage device and a host.

The main non-volatile memory <NUM> may further include a boot region <NUM> as well as a normal region for storing data from the host. The boot region <NUM> may store a boot loader, which is data required for booting the storage device <NUM>. The boot region <NUM> may be accessed by the storage controller <NUM> upon a power-on reset of the storage device <NUM>. The boot region <NUM> may also be referred to as a boot block, a boot sector, or the like and may have a limited size of, for example, about <NUM> KB.

The sub non-volatile memory <NUM> may store data required for an operation of the storage controller <NUM>. For example, the sub non-volatile memory <NUM> may include an electrically erasable programmable read-only memory (EEPROM), a NOR flash memory, a serial NOR (SNOR) flash memory, or the like. In an implementation, the sub non-volatile memory <NUM> may have a size of several megabytes (MB).

The buffer memory <NUM> may buffer data to be programmed into the main non-volatile memory <NUM> or buffer data read from the main non-volatile memory <NUM>. The buffer memory <NUM> may be implemented as a volatile memory. For example, the buffer memory <NUM> may be implemented as a static random access memory (SRAM), a dynamic random access memory (DRAM), or the like.

Meanwhile, when the main non-volatile memory <NUM> is a NAND flash memory, it may be difficult for the storage controller <NUM> to read and write data on a certain address from and into the main non-volatile memory <NUM>. For example, in the NAND flash memory, data may be read in units of pages, each being a set of memory cells connected to one word line. The storage controller <NUM> may control the data stored in the main non-volatile memory <NUM> to be read in units of pages, and the data stored in the main non-volatile memory <NUM> may be used by the storage controller <NUM> after being buffered by the buffer memory <NUM>.

On the other hand, the storage controller <NUM> may read and write data on a certain address from and into the sub non-volatile memory <NUM>. Specifically, the storage controller <NUM> may select one memory cell by specifying a row address and a column address in the sub non-volatile memory <NUM> using an external address.

As described above, a parameter change command may be stored in the storage device <NUM> and interface tuning may be performed using the parameter change command upon a power-on reset of the storage device <NUM>, that is, during a booting operation. It is preferable that the parameter change command is accessed quickly during the booting operation. However, the size of the boot region <NUM> may be limited and to relax the size limitation of the boot region <NUM>, it may be needed to significantly modify the design of the firmware in the storage device.

Thus, it may be difficult to store a parameter change command together with a boot loader in the boot region <NUM> and load the parameter change command together with the boot loader during the booting operation. In addition, if a parameter change command is stored in the normal region of the main non-volatile memory <NUM> and both the boot region <NUM> and the normal region are accessed during a booting operation, a booting completion time may be delayed.

According to an example embodiment of the present disclosure, the storage controller <NUM> may store a parameter change command in the sub non-volatile memory <NUM> and acquire the parameter change command from the sub non-volatile memory <NUM> during a booting operation. The main non-volatile memory <NUM> may be difficult for the storage controller <NUM> to directly access, whereas the sub non-volatile memory <NUM> may be easily accessed by the storage controller <NUM> using an address. Accordingly, the storage controller <NUM> may quickly acquire a parameter change command and quickly perform interface tuning during a booting operation.

Hereinafter, a method in which the storage device <NUM> stores a parameter change command and uses the parameter change command upon a power-on reset of the storage device <NUM> according to an example embodiment of the present disclosure will be described in detail with reference to <FIG> and <FIG>.

<FIG> and <FIG> are flowcharts respectively illustrating an operation of the storage device according to an example embodiment of the present disclosure.

<FIG> is a flowchart illustrating an operation performed by the storage device in response to a parameter change command. Steps S31 to S33 in <FIG> may be like steps S21 to S23 described with reference to <FIG>.

After performing interface tuning using the parameter change command, the storage controller may store the parameter change command in the sub non-volatile memory in step S34. The stored parameter change command may be used for interface tuning upon a power-on reset of the storage device.

<FIG> is a flowchart illustrating an operation performed by the storage device upon a power-on reset thereof.

When the storage device detects power supply in step S41, the storage device may perform a power-on reset operation in steps S42 to S47.

In step S42, the storage device may load a boot loader stored in the main non-volatile memory into the buffer memory. For example, a processor included in the storage controller may control the main non-volatile memory to load data in a predetermined size from a predetermined address of the main non-volatile memory into the buffer memory.

In step S43, the storage device may initialize the SFR using the boot loader loaded into the buffer memory. For example, the boot loader may include initial parameter values before interface tuning is performed and the storage controller may initialize connection characteristic parameters by writing the initial parameter values to the SFR.

In step S44, the storage device may determine whether a parameter change command is stored in the sub non-volatile memory. For example, the storage controller may directly access the sub non-volatile memory using an address, not through the buffer memory. Since the parameter change command can be stored in the sub non-volatile memory, the storage controller may quickly determine whether the parameter change command is stored.

In step S45, the storage device may determine whether it is necessary to change the initialized connection characteristic parameters. For example, when a parameter change command including a valid signature is stored in the sub non-volatile memory, if the parameter change command has not expired, the storage controller may determine that it is necessary to change the parameters. On the other hand, when a parameter change command is not stored in the sub non-volatile memory, the stored command is invalid or the stored command has expired, the storage controller may determine that it is not necessary to change the parameters.

When it is necessary to change the parameters ("Yes" in step S45), the storage controller may extract one or more descriptors from the parameter change command in step S46. Then, in step S47, the storage controller may execute the one or more descriptors in an order listed, such that optimal parameter values are written into regions where the initial parameter values are stored of the SFR.

According to an example embodiment of the present disclosure, the storage device may support a parameter change command complying with a predetermined interface protocol. By receiving the parameter change command, the storage device may acquire optimal parameter values to change the parameter values in the SFR that the host is not allowed to access. Accordingly, the host and the storage device may transmit and receive signals quickly and accurately.

The storage device may store a parameter change command in an auxiliary non-volatile memory that the controller is allowed to directly access. Even when it is difficult for the storage device to store the parameter change command in the boot region of the main non-volatile memory, the storage controller may quickly access the parameter change command upon a power-on reset of the storage device. Accordingly, interface tuning may be quickly performed upon the power-on reset of the storage device.

Hereinafter, an example of a computing system to which an example embodiment of the present disclosure is applied will be described in detail with reference to <FIG>.

<FIG> is a block diagram illustrating a computing system according to an example embodiment of the present disclosure.

The computing system <NUM> may include a host <NUM> and a storage device <NUM>. In addition, the storage device <NUM> may include a storage controller <NUM>, a sub non-volatile memory <NUM>, a buffer memory <NUM>, and a main non-volatile memory <NUM>. The host <NUM> and the storage device <NUM> may be like the host <NUM> and the storage device <NUM> described with reference to <FIG>. Also, the storage controller <NUM>, the sub non-volatile memory <NUM>, the buffer memory <NUM>, and the main non-volatile memory <NUM> may be like the storage controller <NUM>, the sub non-volatile memory <NUM>, the buffer memory <NUM>, and the main non-volatile memory <NUM> described with reference to <FIG>.

The storage device <NUM> may include storage media for storing data according to a request from the host <NUM>. As an example, the storage device <NUM> may include at least one of an SSD, an embedded memory, and a removable external memory. When the storage device <NUM> is an SSD, the storage device <NUM> may be a device conforming to the NVMe standard. When the storage device <NUM> is an embedded memory or an external memory, the storage device <NUM> may be a device conforming to a UFS standard or an eMMC standard. The host <NUM> and the storage device <NUM> may generate and transmit packets according to the respective standard protocols employed.

The main non-volatile memory <NUM> may retain stored data even though power is not supplied thereto. The main non-volatile memory <NUM> may store data provided from the host <NUM> through a program operation and may output data stored in the main non-volatile memory <NUM> through a read operation.

When the main non-volatile memory <NUM> includes a flash memory, the flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array. As another example, the storage device <NUM> may include various other types of non-volatile memories. Examples of the various other types of non-volatile memories applicable to the storage device <NUM> may include an MRAM, a spin-transfer torque MRAM, a conductive bridging RAM (CBRAM), an FeRAM, a PRAM, and an RRAM.

The storage controller <NUM> may control the main non-volatile memory <NUM> in response to a request from the host <NUM>. For example, the storage controller <NUM> may provide data read from the main non-volatile memory <NUM> to the host <NUM> and store data provided from the host <NUM> in the main non-volatile memory <NUM>. For such operations, the storage controller <NUM> may support the main non-volatile memory <NUM> to perform a read operation, a program operation, an erase operation, and the like.

The sub non-volatile memory <NUM> may store data necessary for an operation of the storage controller <NUM>. The sub non-volatile memory <NUM> may be directly accessed by the storage controller <NUM> using an address. The sub non-volatile memory <NUM> may include an EEPROM, a NOR flash memory, an SNOR flash memory, or the like.

The buffer memory <NUM> may buffer data to be programmed in the main non-volatile memory <NUM> or buffer data read from the main non-volatile memory <NUM>.

The storage controller <NUM> may include a host interface <NUM>, a main memory interface <NUM>, and a central processing unit (CPU) <NUM>. In addition, the storage controller <NUM> may further include a packet manager <NUM>, a sub memory interface <NUM>, a buffer memory interface <NUM>, an error correction code (ECC) engine <NUM>, and an advanced encryption standard (AES) engine <NUM>. The storage controller <NUM> may further include a working memory (not shown) into which a flash translation layer (FTL) is loaded, and the CPU <NUM> may execute the flash translation layer to control the operations of the main non-volatile memory <NUM> for writing and reading data.

The host interface <NUM> may transmit and receive packets to and from the host <NUM> through a predetermined interface protocol. The packet transmitted from the host <NUM> to the host interface <NUM> may include a command, data to be written into the main non-volatile memory <NUM> or the like, and the packet transmitted from the host interface <NUM> to the host <NUM> may include a response to the command, data read from the main non-volatile memory <NUM>, or the like.

The main memory interface <NUM> may transmit data to be written into the main non-volatile memory <NUM> to the main non-volatile memory <NUM> or may receive data read from the main non-volatile memory <NUM>. Such a main memory interface <NUM> may be implemented to comply with a standard protocol such as a toggle or an open NAND flash interface (ONFI).

The flash translation layer driven by the CPU <NUM> may perform several functions such as address mapping, wear-leveling, and garbage collection. The address mapping is an operation of converting a logical address received from the host <NUM> into a physical address used to store data in the main non-volatile memory <NUM>. The wear-leveling is a technology for preventing an excessive deterioration of a specific block by allowing blocks in the main non-volatile memory <NUM> to be uniformly used and may be implemented through, for example, a firmware technology for balancing erase counts of physical blocks. The garbage collection is a technology for securing an available capacity of the main non-volatile memory <NUM> by copying valid data of a block to a new block and then erasing the existing block.

Meanwhile, the CPU <NUM> may include an SFR <NUM> for storing parameter values used for an operation of the storage device <NUM>. For example, the SFR <NUM> may store parameters indicating connection characteristics between the storage device and the host.

The packet manager <NUM> may generate a packet according to an interface protocol predetermined between the host <NUM> and the storage device <NUM> or parse various information through a packet received from the host <NUM>.

The sub memory interface <NUM> may transmit and receive data to and from the sub non-volatile memory <NUM> disposed outside the storage controller <NUM>. In addition, the buffer memory interface <NUM> may transmit and receive data to and from the buffer memory <NUM> disposed outside the storage controller <NUM>. In the example of <FIG>, the sub non-volatile memory <NUM> and the buffer memory <NUM> are disposed outside the storage controller <NUM> but may be disposed inside the storage controller <NUM>.

The ECC unit <NUM> may perform an error detection and correction function for read data read from the main non-volatile memory <NUM>. More specifically, the ECC unit <NUM> may generate parity bits for write data to be written into the main non-volatile memory <NUM> and the parity bits generated as described above may be stored in the main non-volatile memory <NUM> together with the write data. At the time of reading data from the main non-volatile memory <NUM>, the ECC unit <NUM> may correct an error of the read data using the parity bits read from the main non-volatile memory <NUM> together with the read data and output the read data of which the error has been corrected.

The AES engine <NUM> may perform at least one of an encryption operation and a decryption operation for data input to the storage controller <NUM> using a symmetric-key algorithm. For example, the AES engine <NUM> may decode a command received by the storage controller <NUM> according to a security protocol.

Meanwhile, the storage controller <NUM> may further include an encryption engine for encrypting data stored in the main non-volatile memory <NUM>. However, the storage controller <NUM> may store data stored in the sub non-volatile memory <NUM> in plain text without encryption. According to an example embodiment of the present disclosure, the storage controller <NUM> may directly store the command received according to the security protocol in the sub non-volatile memory <NUM>.

Since the command received according to the security protocol may be an encrypted command, even though the command is directly stored in the sub non-volatile memory <NUM> without additional encryption, the security of descriptors included in the command may be maintained. The storage controller <NUM> may acquire the encrypted command from the sub non-volatile memory <NUM> upon a power-on reset of the storage device, decrypt the encrypted command, and then perform interface tuning using the decrypted command.

<FIG> is a block diagram illustrating an example of the main non-volatile memory of <FIG>. Referring to <FIG>, a main non-volatile memory <NUM> may include a control logic circuit <NUM>, a memory cell array <NUM>, a page buffer <NUM>, a voltage generator <NUM>, and a row decoder <NUM>. Although not illustrated in FIG. <NUM>, the main non-volatile memory <NUM> may further include a memory interface circuit <NUM> illustrated in <FIG> and may further include a column logic, a pre-decoder, a temperature sensor, a command decoder, an address decoder, and the like.

The control logic circuit <NUM> may generally control various operations within the main non-volatile memory <NUM>. The control logic circuit <NUM> may output various control signals in response to a command CMD and/or an address ADDR from the memory interface circuit <NUM>. For example, the control logic circuit <NUM> may output a voltage control signal CTRL_vol, a row address X-ADDR, and a column address Y-ADDR.

The memory cell array <NUM> may include a plurality of memory blocks BLK1 to BLKz (z is a positive integer), and each of the plurality of memory blocks BLK1 to BLKz may include a plurality of memory cells. The memory cell array <NUM> may be connected to the page buffer unit <NUM> through bit lines BL and may be connected to the row decoder <NUM> through word lines WL, string selection lines SSL, and ground selection lines GSL.

In an example embodiment, the memory cell array <NUM> may include a three-dimensional (3D) memory cell array and the 3D memory cell array may include a plurality of NAND strings. Each of the NAND strings may include memory cells vertically stacked on a substrate while being connected to word lines respectively. <CIT>, <CIT>, <CIT>, <CIT>, and <CIT> describe relevant arrangements. In an example embodiment, the memory cell array <NUM> may include a two-dimensional (2D) memory cell array and the 2D memory cell array may include a plurality of NAND strings arranged along row and column directions.

The page buffer <NUM> may include a plurality of page buffers PB1 to PBn (n is an integer of <NUM> or more), and the plurality of page buffers PB1 to PBn may be connected to the memory cells through a plurality of bit lines BL, respectively. The page buffer <NUM> may select one or more of the bit lines BL in response to the column address Y-ADDR. The page buffer <NUM> may operate as a write driver or a sense amplifier according to an operation mode. For example, during a program operation, the page buffer <NUM> may apply a bit line voltage corresponding to data (DATA), received from memory interface circuit <NUM>, to be programmed to the selected bit line. During a read operation, the page buffer <NUM> may detect a current or a voltage of the selected bit line to detect data stored in the memory cell.

The voltage generator <NUM> may generate various types of voltages for performing program, read, and erase operations based on voltage control signals CTRL_vol. For example, the voltage generator <NUM> may generate a program voltage, a read voltage, a program verification voltage, an erase voltage, or the like, as a word line voltage VWL.

The row decoder <NUM> may select one of the plurality of word lines WL and one of the plurality of string selection lines SSL in response to the row address X-ADDR. For example, the row decoder <NUM> may apply the program voltage and the program verification voltage to the selected word line during the program operation and may apply the read voltage to the selected word line during the read operation.

<FIG> is a diagram illustrating a 3D V-NAND structure applicable to the storage device according to an example embodiment of the present disclosure.

When the non-volatile memory of the storage device is implemented as a 3D V-NAND type flash memory, each of a plurality of memory blocks constituting the non-volatile memory may be represented by an equivalent circuit as illustrated in <FIG>.

A memory block BLKi illustrated in <FIG> is a three-dimensional memory block formed in a three-dimensional structure on a substrate. For example, a plurality of memory NAND strings included in a memory block BLKi may be formed in a direction perpendicular to the substrate.

Referring to <FIG>, the memory block BLKi may include a plurality of memory NAND strings NS11 to NS33 connected between bit lines BL1, BL2, and BL3 and a common source line CSL. Each of the plurality of memory NAND strings NS11 to NS33 may include a string selection transistor SST, a plurality of memory cells MC1, MC2,. , and MC8, and a ground selection transistor GST. Although it is illustrated in <FIG> that each of the plurality of memory NAND strings NS11 to NS33 includes eight memory cells MC1, MC2,. , and MC8, the number of memory cells included in each memory NAND string is not necessarily limited thereto.

The string selection transistor SST may be connected to a corresponding string selection line SSL1, SSL2, or SSL3. The plurality of memory cells MC1, MC2,. , and MC8 may be connected to corresponding gate lines GTL1, GTL2,. , and GTL8, respectively. The gate lines GTL1, GTL2,. , and GTL8 may correspond to word lines, and some of the gate lines GTL1, GTL2,. , and GTL8 may correspond to dummy word lines. The ground selection transistor GST may be connected to a corresponding ground selection line GSL1, GSL2, or GSL3. The string selection transistors SST may be connected to corresponding bit lines BL1, BL2, and BL3, respectively, and the ground selection transistors GST may be connected to the common source line CSL.

Word lines (e.g., WL1) having the same height may be connected to each other in common, while the ground selection lines GSL1, GSL2, and GSL3 may be separated from each other and the string selection lines SSL1, SSL2, and SSL3 may be separated from each other. Although it is illustrated in <FIG> that the memory block BLK is connected to the eight gate lines GTL1, GTL2,. , and GTL8 and the three bit lines BL1, BL2, and BL3, the respective numbers of gate lines and bit lines to which the memory block is connected are not necessarily limited thereto.

<FIG> is a diagram illustrating a system <NUM> to which the storage device according to an example embodiment of the present disclosure is applied.

The system <NUM> of <FIG> may be basically a mobile system such as a mobile phone, a smartphone, a tablet personal computer (PC), a wearable device, a healthcare device, or an Internet of things (lOT) device. However, the system <NUM> of <FIG> is not necessarily limited to the mobile system and may be a personal computer, a laptop computer, a server, a media player, an automotive device such as a navigation system, or the like.

Referring to <FIG>, the system <NUM> may include a main processor <NUM>, memories 1200a and 1200b, and storage devices 1300a and 1300b and may further include one or more of an image capturing device <NUM>, a user input device <NUM>, a sensor <NUM>, a communication device <NUM>, a display <NUM>, a speaker <NUM>, a power supplying device <NUM>, and a connecting interface <NUM>.

The main processor <NUM> may control an overall operation of the system <NUM> and more specifically operations of the other components constituting the system <NUM>. Such a main processor <NUM> may be implemented as a general-purpose processor, a dedicated processor, an application processor, or the like.

The main processor <NUM> may include one or more CPU cores <NUM> and may further include a controller <NUM> for controlling the memories 1200a and 1200b and/or the storage devices 1300a and 1300b. In an example embodiment, the main processor <NUM> may further include an accelerator <NUM> that is a dedicated circuit for high-speed data operations such as artificial intelligence (Al) data operations. Such an accelerator <NUM> may include a graphics processing unit (GPU), a neural processing unit (NPU), a data processing unit (DPU), and/or the like and may also be implemented as a separate chip physically independent from the other components of the main processor <NUM>.

The memories 1200a and 1200b may be used as main memory units of the system <NUM> and may include volatile memories such as an SRAM and/or a DRAM but may also include non-volatile memories such as a flash memory, a PRAM, and/or an RRAM. The memories 1200a and 1200b may be implemented in the same package as the main processor <NUM>.

The storage devices 1300a and 1300b may function as non-volatile storage devices that store data regardless of whether power is supplied thereto and may have a larger storage capacity than the memories 1200a and 1200b. The storage devices 1300a and 1300b may include storage controllers (not illustrated) and non-volatile memories (NVMs) (not illustrated) storing data under the control of the storage controllers, respectively. The non-volatile memories may include flash memories having a 2D structure or a 3D V-NAND structure but may also include other types of non-volatile memories such as a PRAM and/or an RRAM.

The storage devices 1300a and 1300b may be included in the system <NUM> in a state where they are physically separated from the main processor <NUM> or may be implemented in the same package as the main processor <NUM>. In addition, the storage devices 1300a and 1300b may be of a solid state device (SSD) type or a memory card type and may be detachably coupled to the other components of the system <NUM> through an interface such as the connecting interface <NUM>, which will be described below. Such storage devices 1300a and 1300b may be devices to which a standard protocol such as UFS, eMMC, or NVMe is applied, but are not necessarily limited thereto.

According to an example embodiment of the present disclosure, the storage devices 1300a and 1300b may support parameter change commands complying with a predetermined interface protocol. The main processor <NUM> may provide to the storage devices 1300a and 1300b parameter change commands including optimal parameter values for connection characteristics between the main processor <NUM> and the storage devices 1300a and 1300b, thereby easily changing parameter values stored in the storage devices 1300a and 1300b. Accordingly, signal transmission quality between the main processor <NUM> and the storage devices 1300a and 1300b may be improved.

The image capturing device <NUM> may capture a still image or a moving image and may be a camera, a camcorder, a webcam, and/or the like.

The user input device <NUM> may receive various types of data input from a user of the system <NUM> and may be a touch pad, a keypad, a keyboard, a mouse, a microphone, and/or the like.

The sensor <NUM> may detect various types of physical quantities that may be acquired from the outside of the system <NUM> and convert the detected physical quantities into electrical signals. Such a sensor <NUM> may be a temperature sensor, a pressure sensor, an illuminance sensor, a position sensor, an acceleration sensor, a biosensor, a gyroscope sensor, and/or the like.

The communication device <NUM> may transmit and receive signals to and from other devices outside the system <NUM> according to various communication protocols. Such a communication device <NUM> may be implemented as an antenna, a transceiver, a modem, and/or the like.

The display <NUM> and the speaker <NUM> may function as output devices that output visual information and auditory information, respectively, to a user of the system <NUM>.

The power supplying device <NUM> may appropriately convert power supplied from a battery (not shown) built in the system <NUM> and/or an external power source and supply the converted power to each of the components of the system <NUM>.

The connecting interface <NUM> may provide a connection between the system <NUM> and an external device connected to the system <NUM> to exchange data with the system <NUM>. The connecting interface <NUM> may be implemented in various interface types such as an advanced technology attachment (ATA), a serial ATA (SATA), an external SATA (e-SATA), a small computer small interface (SCSI), a serial attached SCSI (SAS), a peripheral component interconnection (PCI), a PCI express (PCIe), an NVM express (NVMe) , an institute of electrical and electronic engineers (IEEE) <NUM>, a USB, an SD card, an MMC, an eMMC, a UFS, an embedded UFS (eUFS), and a CF card interface.

The storage device according to an embodiment of the present disclosure may support a parameter change command to externally change a value of a parameter stored in the SFR that the host is not allowed to access through the interface protocol. Accordingly, the storage device may easily perform interface tuning by applying the externally provided parameter value.

The storage device according to an embodiment of the present disclosure may store a parameter change command in the sub non-volatile memory that allows the storage controller to directly access, instead of the boot region of the main non-volatile memory. Accordingly, the storage device may perform interface tuning by quickly loading the parameter change command from the sub non-volatile memory upon a power-on reset thereof.

As is traditional in the field, embodiments may be described and illustrated in terms of blocks which carry out a described function or functions. These blocks, which may be referred to herein as units or modules or the like, are physically implemented by analog and/or digital circuits such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hardwired circuits and the like, and may optionally be driven by firmware and/or software. The circuits may, for example, be embodied in one or more semiconductor chips, or on substrate supports such as printed circuit boards and the like. The circuits constituting a block may be implemented by dedicated hardware, or by a processor (e.g., one or more programmed microprocessors and associated circuitry), or by a combination of dedicated hardware to perform some functions of the block and a processor to perform other functions of the block. Each block of the embodiments may be physically separated into two or more interacting and discrete block. Likewise, the blocks of the embodiments may be physically combined into more complex blocks. An aspect of an embodiment may be achieved through instructions stored within a non-transitory storage medium and executed by a processor.

Claim 1:
A storage device comprising:
a main non-volatile memory (<NUM>); and
a controller (<NUM>) configured to communicate with a host (<NUM>) according to a predetermined interface protocol and to control the main non-volatile memory (<NUM>), wherein:
the controller (<NUM>) includes a special function register, SFR, (<NUM>) for storing parameters indicating connection characteristics between the storage device (<NUM>) and the host (<NUM>), and
the controller (<NUM>) is configured to receive a parameter change command according to the interface protocol from the host (<NUM>), to extract one or more descriptors, respectively including an SFR address and a parameter value corresponding to a target parameter to be changed, from the parameter change command, execute the descriptor to store the parameter value into a target location of the special function register (<NUM>), disposed within the controller (<NUM>), that is identified by the register address and to configure a communication interface of the storage device (<NUM>) to communicate with the host (<NUM>) in accordance with a value stored in the target location of the SFR (<NUM>),
wherein the parameter change command includes information on a target number of times of power cycling of the storage device (<NUM>), and
after the parameter change command is received from the host (<NUM>), when a power cycle is repeated as many as the target number of times of power cycling, the controller (<NUM>) is configured to expire the parameter change command.