KR102509646B1 - Storage device - Google Patents

Storage device Download PDF

Info

Publication number
KR102509646B1
KR102509646B1 KR1020220016769A KR20220016769A KR102509646B1 KR 102509646 B1 KR102509646 B1 KR 102509646B1 KR 1020220016769 A KR1020220016769 A KR 1020220016769A KR 20220016769 A KR20220016769 A KR 20220016769A KR 102509646 B1 KR102509646 B1 KR 102509646B1
Authority
KR
South Korea
Prior art keywords
storage device
change command
parameter change
volatile memory
controller
Prior art date
Application number
KR1020220016769A
Other languages
Korean (ko)
Inventor
오재림
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US17/835,761 priority Critical patent/US20230152993A1/en
Priority to EP22186674.2A priority patent/EP4180977A1/en
Priority to CN202211409308.2A priority patent/CN116126755A/en
Application granted granted Critical
Publication of KR102509646B1 publication Critical patent/KR102509646B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

The present invention relates to a storage device that communicates with a host device using a defined interface protocol and supports a method of setting internal parameters indicating connection characteristics with the host upon request from the host. The storage device comprises: a main non-volatile memory; and a controller that communicates with a host according to a predetermined interface protocol and controls the main non-volatile memory. The controller includes a special function register (SFR) that stores parameters indicating connection characteristics with the host, receives a parameter change command according to the interface protocol from the host, extracts, from the parameter change command one or more descriptors, each containing an SFR address and a parameter value corresponding to a target parameter to be changed, and tunes the interface by executing the one or more descriptors and writing the parameter value to the SFR.

Description

스토리지 장치{STORAGE DEVICE}Storage device {STORAGE DEVICE}

본 발명은 비휘발성 메모리를 포함하는 스토리지 장치에 관한 것이다.The present invention relates to a storage device including a non-volatile memory.

반도체 메모리는 휘발성 메모리 장치 및 비휘발성 메모리 장치로 구분된다. 휘발성 메모리 장치는 파워가 차단되면 저장된 데이터를 잃지만, 비휘발성 메모리는 파워가 차단되더라도 저장된 데이터를 보존할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함한다.Semiconductor memories are classified into volatile memory devices and non-volatile memory devices. A volatile memory device loses stored data when power is cut off, but a non-volatile memory device can preserve stored data even when power is cut off. Non-volatile memory includes read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable and programmable ROM (EEPROM), flash memory, phase-change RAM (PRAM), magnetic RAM (MRAM), Resistive RAM (RRAM), Ferroelectric RAM (FRAM), and the like.

비휘발성 메모리는 컴퓨팅 시스템의 스토리지 장치로 이용된다. 컴퓨팅 시스템에서, 스토리지 장치는 호스트 장치와 정해진 인터페이스 프로토콜을 이용하여 통신할 수 있다. Non-volatile memory is used as a storage device in a computing system. In a computing system, a storage device may communicate with a host device using a defined interface protocol.

본 발명은 호스트 장치와 정해진 인터페이스 프로토콜을 사용하여 통신하며, 호스트의 요청 하에 호스트와의 연결 특성을 나타내는 내부 파라미터를 설정할 수 있는 방법을 지원하는 스토리지 장치를 제공하고자 한다.SUMMARY OF THE INVENTION An object of the present invention is to provide a storage device that communicates with a host device using a predetermined interface protocol and supports a method of setting internal parameters indicating connection characteristics with the host at the request of the host.

본 발명의 실시 예에 따른 스토리지 장치는, 메인 비휘발성 메모리; 및 정해진 인터페이스 프로토콜에 따라 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하고, 상기 호스트로부터 상기 인터페이스 프로토콜에 따른 파라미터 변경 커맨드를 수신하고, 각각이 변경하려는 타겟 파라미터에 대응하는 SFR 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 상기 파라미터 변경 커맨드로부터 추출하고, 상기 하나 이상의 디스크립터를 실행하여 상기 SFR에 상기 파라미터 값을 기록함으로써 상기 인터페이스를 튜닝한다.A storage device according to an embodiment of the present invention includes a main non-volatile memory; and a controller communicating with a host according to a predetermined interface protocol and controlling the main non-volatile memory, wherein the controller includes a special function register (SFR) storing parameters representing connection characteristics with the host, Receiving a parameter change command according to the interface protocol from a host, extracting one or more descriptors including SFR addresses and parameter values corresponding to target parameters to be changed from the parameter change command, and executing the one or more descriptors, Tune the interface by writing the parameter values to the SFR.

본 발명의 실시 예에 따른 스토리지 장치는, 메인 비휘발성 메모리; 및 정해진 인터페이스 프로토콜에 따라 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하고, 상기 호스트로부터의 파라미터 변경 커맨드에 응하여 상기 SFR에 포함된 파라미터의 값을 변경함으로써 인터페이스를 튜닝하며, 상기 SFR은 상기 인터페이스 프로토콜에서 호스트의 접근을 지원하지 않는 영역이다.A storage device according to an embodiment of the present invention includes a main non-volatile memory; and a controller communicating with a host according to a predetermined interface protocol and controlling the main non-volatile memory, wherein the controller includes a special function register (SFR) storing parameters representing connection characteristics with the host, The interface is tuned by changing parameter values included in the SFR in response to a parameter change command from the host, and the SFR is an area that does not support access by the host in the interface protocol.

본 발명의 실시 예에 따른 스토리지 장치는, 메인 비휘발성 메모리; 정해진 인터페이스 프로토콜을 이용하여 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하며, 상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하는 컨트롤러; 상기 메인 비휘발성 메모리로부터 독출되는 데이터를 버퍼링한 후 상기 컨트롤러로 제공하는 버퍼 메모리; 및 상기 컨트롤러의 동작에 필요한 데이터를 저장하고, 어드레스를 이용하여 상기 컨트롤러에 의해 직접 접근되는 서브 비휘발성 메모리를 포함하고, 상기 컨트롤러는 전원 공급이 감지되면 상기 메인 비휘발성 메모리의 부트 영역에 저장된 부트 로더를 상기 버퍼 메모리로 로드하고, 상기 버퍼 메모리에 로드된 부트 로더를 이용하여 상기 SFR을 초기화하고, 상기 서브 비휘발성 메모리로부터 각각이 SFR 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 획득하고, 상기 획득된 디스크립터를 실행하여 상기 SFR을 업데이트함으로써 상기 인터페이스를 튜닝한다.A storage device according to an embodiment of the present invention includes a main non-volatile memory; a controller including a special function register (SFR) that communicates with a host using a predetermined interface protocol, controls the main non-volatile memory, and stores parameters representing connection characteristics with the host; a buffer memory buffering data read from the main non-volatile memory and providing the data to the controller; and a sub non-volatile memory that stores data necessary for the operation of the controller and is directly accessed by the controller using an address, wherein the controller boots stored in a boot area of the main non-volatile memory when power supply is sensed. Loading a loader into the buffer memory, initializing the SFR using the boot loader loaded into the buffer memory, acquiring one or more descriptors each including an SFR address and a parameter value from the sub non-volatile memory, and Tune the interface by executing the obtained descriptor to update the SFR.

본 발명의 실시 예에 따른 컴퓨팅 시스템은, 호스트; 및 상기 호스트와 정해진 인터페이스 프로토콜을 통해 통신하여 상기 호스트의 데이터를 저장하고, 상기 프로토콜의 연결 특성을 나타내는 파라미터들을 저장하는 레지스터를 포함하는 스토리지 장치를 포함하고, 상기 호스트는 값을 변경하려는 타겟 파라미터의 레지스터 어드레스 및 파라미터 값을 각각 포함하는 하나 이상의 디스크립터를 포함하는 파라미터 변경 커맨드를 상기 스토리지 장치로 제공하며, 상기 스토리지 장치는 상기 호스트와의 인터페이스를 통해 상기 파라미터 변경 커맨드를 수신하고, 상기 수신된 파라미터 변경 커맨드를 복호화하며, 상기 복호화된 커맨드로부터 상기 하나 이상의 디스크립터를 추출하고, 상기 추출된 디스크립터를 실행하여 상기 레지스터에 상기 파라미터 값을 기록함으로써 상기 인터페이스를 튜닝한다.A computing system according to an embodiment of the present invention includes a host; and a storage device including a register configured to communicate with the host through a predetermined interface protocol to store data of the host and to store parameters representing connection characteristics of the protocol, wherein the host determines a value of a target parameter whose value is to be changed. A parameter change command including one or more descriptors each including a register address and a parameter value is provided to the storage device, the storage device receives the parameter change command through an interface with the host, and changes the received parameter. Tune the interface by decrypting a command, extracting the one or more descriptors from the decrypted command, and executing the extracted descriptors to write the parameter values to the registers.

본 발명의 실시 예에 따른 스토리지 장치는, 호스트와의 인터페이스 프로토콜을 통해 접근될 수 없는 SFR(Special Function Register)에 저장된 파라미터의 값을 외부에서 변경할 수 있도록 파라미터 변경 커맨드를 지원할 수 있다. 따라서, 스토리지 장치는 외부에서 제공되는 파라미터 값을 적용함으로써 인터페이스 튜닝을 용이하게 수행할 수 있다.A storage device according to an embodiment of the present invention may support a parameter change command to externally change a parameter value stored in a special function register (SFR) that cannot be accessed through an interface protocol with a host. Accordingly, the storage device can easily perform interface tuning by applying an externally provided parameter value.

본 발명의 실시 예에 따른 스토리지 장치는, 파라미터 변경 커맨드를 메인 비휘발성 메모리의 부트 영역에 저장하는 대신에 스토리지 컨트롤러가 직접 접근할 수 있는 서브 비휘발성 메모리에 저장할 수 있다. 따라서, 스토리지 장치는 파워 온 리셋 시에 상기 서브 비휘발성 메모리로부터 상기 파라미터 변경 커맨드를 신속하게 로드하여 인터페이스 튜닝을 수행할 수 있다. A storage device according to an embodiment of the present invention may store a parameter change command in a sub nonvolatile memory directly accessible by a storage controller instead of storing it in a boot region of a main nonvolatile memory. Accordingly, the storage device may perform interface tuning by quickly loading the parameter change command from the sub nonvolatile memory upon power-on reset.

본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작을 나타내는 흐름도이다.
도 3은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 4 내지 도 6은 본 발명의 실시 예에 따른 파라미터 변경 커맨드를 설명하기 위한 도면들이다.
도 7은 본 발명의 실시 예에 따른 스토리지 장치의 동작을 나타내는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 9 내지 도 10은 본 발명의 실시 예에 따른 스토리지 장치의 동작을 나타내는 흐름도들이다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 12는 도 11의 메인 비휘발성 메모리를 나타내는 예시적인 블록도이다.
도 13은 본 발명의 일 실시 예에 따른 스토리지 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 도시한 도면이다.
1 is a block diagram illustrating a computing system according to an embodiment of the present invention.
2 is a flowchart illustrating the operation of a computing system according to an embodiment of the present invention.
3 is a block diagram illustrating a storage device according to an exemplary embodiment of the present invention.
4 to 6 are diagrams for explaining a parameter change command according to an embodiment of the present invention.
7 is a flowchart illustrating an operation of a storage device according to an exemplary embodiment of the present invention.
8 is a block diagram illustrating a storage device according to an exemplary embodiment of the present invention.
9 to 10 are flowcharts illustrating operations of a storage device according to an embodiment of the present invention.
11 is a block diagram illustrating a computing system according to an embodiment of the present invention.
FIG. 12 is an exemplary block diagram illustrating a main non-volatile memory of FIG. 11 .
13 is a diagram for explaining a 3D V-NAND structure applicable to a storage device according to an embodiment of the present invention.
14 is a diagram illustrating a system to which a storage device according to an embodiment of the present invention is applied.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a computing system according to an embodiment of the present invention.

컴퓨팅 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다.The computing system 10 may include a host 100 and a storage device 200 .

호스트(100)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 다양한 유형의 전자 장치들을 포함할 수 있다.The host 100 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.

스토리지 장치(200)는 호스트(100)와 통신하여 호스트(100)의 제어에 따른 동작을 수행할 수 있다. 스토리지 장치(200)는 플래시 메모리, PRAM, MRARM, RRAM과 같은 비휘발성 메모리를 포함할 수 있다. 예를 들어, 스토리지 장치(200)는 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 유형의 스토리지 장치들 중 어느 하나로 구현될 수 있다.The storage device 200 may communicate with the host 100 and perform operations under the control of the host 100 . The storage device 200 may include non-volatile memory such as flash memory, PRAM, MRARM, and RRAM. For example, the storage device 200 may include a solid state drive (SSD), MMC, embedded MMC (eMMC), reduced size MMC (RS-MMC), and a multi-media card (MMC) in the form of micro-MMC. Media Card), Secure Digital (SD) card in the form of SD, mini-SD, and micro-SD, USB (Universal Serial Bus) storage device, UFS (Universal Flash Storage) device, CF (Compact Flash) card, smart It may be implemented as one of various types of storage devices such as a smart media card, a memory stick, and the like.

스토리지 장치(200)는 호스트(100)와 정해진 인터페이스 프로토콜에 따라 통신할 수 있다. 예를 들어, 스토리지 장치(200)와 호스트(100)는 PCIe(Peripheral Component Interconnect Express) 프로토콜에 따라 통신할 수 있다. 호스트(100)는 정해진 인터페이스 프로토콜에 따라 스토리지 장치(200)와 통신을 수행하기 위한 스토리지 인터페이스(111)를 포함할 수 있으며, 스토리지 장치(200)는 정해진 인터페이스 프로토콜에 따라 호스트(100)와 통신을 수행하기 위한 호스트 인터페이스(211)를 포함할 수 있다.The storage device 200 may communicate with the host 100 according to a predetermined interface protocol. For example, the storage device 200 and the host 100 may communicate according to a Peripheral Component Interconnect Express (PCIe) protocol. The host 100 may include a storage interface 111 for communicating with the storage device 200 according to a predetermined interface protocol, and the storage device 200 communicates with the host 100 according to a predetermined interface protocol. It may include a host interface 211 to perform.

다양한 유형의 전자 장치들과 스토리지 장치들이 정해진 인터페이스 프로토콜에 따라 통신할 수 있다. 서로 통신하는 호스트(100)와 스토리지 장치(200)의 다양한 연결 환경에 따라 최적의 연결 특성은 달라질 수 있다. 예를 들어, 스토리지 장치(200)가 호스트(100)로 전송하는 신호의 신호 대 잡음비(SNR: Signal to Noise Ratio)가 최적화될 수 있는 프리-엠퍼시스(Pre-Emphasis) 수준과 디-엠퍼시스(De-Emphasis) 수준은 연결 환경에 따라 달라질 수 있다. Various types of electronic devices and storage devices may communicate according to a defined interface protocol. Optimal connection characteristics may vary according to various connection environments of the host 100 and the storage device 200 communicating with each other. For example, a pre-emphasis level and a de-emphasis level at which a signal to noise ratio (SNR) of a signal transmitted from the storage device 200 to the host 100 can be optimized. (De-Emphasis) level may vary depending on the connection environment.

스토리지 장치(200)는 호스트(100)와의 연결 특성을 정의하는 다양한 파라미터들을 가질 수 있다. 스토리지 장치(200)는 파라미터들의 값을 최적화함으로써 호스트(100)와의 연결 특성을 최적화할 수 있다. 스토리지 장치(200)가 연결 특성을 최적화하는 동작은, 인터페이스 튜닝 동작으로 지칭될 수도 있다.The storage device 200 may have various parameters defining connection characteristics with the host 100 . The storage device 200 may optimize connection characteristics with the host 100 by optimizing parameter values. An operation of optimizing connection characteristics of the storage device 200 may be referred to as an interface tuning operation.

만약 스토리지 장치(200)가 외부로부터 최적화된 파라미터 값들을 획득하고, 상기 획득된 파라미터 값들을 내부 파라미터에 그대로 적용할 수 있다면, 스토리지 장치(200)는 신속하고 용이하게 인터페이스 튜닝을 수행할 수 있다. 예를 들어, 스토리지 장치(200)의 제조사(vendor)가 연결 환경에 따른 최적 파라미터 값들을 찾을 수 있다. 그리고 스토리지 장치(200)가 상기 최적 파라미터 값들을 외부로부터 전달받아서 내부 파라미터에 적용한다면, 스토리지 장치(200)는 최적화된 파라미터 값을 직접 찾지 않고도 연결 특성을 최적화할 수 있다. If the storage device 200 acquires externally optimized parameter values and applies the obtained parameter values to internal parameters as they are, the storage device 200 can quickly and easily perform interface tuning. For example, a vendor of the storage device 200 may find optimal parameter values according to a connection environment. In addition, if the storage device 200 receives the optimal parameter values from the outside and applies them to the internal parameters, the storage device 200 can optimize the connection characteristics without directly finding the optimized parameter values.

스토리지 장치(200)는 파라미터 값들을 저장하는 레지스터를 포함할 수 있다. 호스트(100)와 스토리지 장치(200) 간의 통신을 위한 인터페이스 프로토콜은, 상기 호스트(100)가 레지스터에 접근하기 위한 인터페이스를 제공하지 않을 수 있다. 만약 스토리지 장치(200)에 최적 파라미터 값을 적용하기 위해 제조사가 상기 최적화된 파라미터 값이 적용된 펌웨어를 제작하고 스토리지 장치(200)에 펌웨어 업데이트를 지원해야 한다면, 상기 최적 파라미터 값을 적용하는 것에 어려움이 있다.The storage device 200 may include registers for storing parameter values. An interface protocol for communication between the host 100 and the storage device 200 may not provide an interface for the host 100 to access registers. If, in order to apply the optimal parameter value to the storage device 200, a manufacturer has to produce firmware to which the optimized parameter value is applied and support firmware update to the storage device 200, it is difficult to apply the optimal parameter value. there is.

본 발명의 실시 예에 따르면, 스토리지 장치(200)는 파라미터 변경 커맨드를 지원할 수 있다. 예를 들어, 스토리지 장치(200)가 NVMe(Non-Volatile Memory Express) 규격을 따르는 경우, 상기 파라미터 변경 커맨드는 NVMe 관리자(Admin) 커맨드일 수 있다. 상기 파라미터 변경 커맨드는, 변경하려는 타겟 파라미터에 대응하는 레지스터 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 포함할 수 있다. According to an embodiment of the present invention, the storage device 200 may support a parameter change command. For example, when the storage device 200 complies with the Non-Volatile Memory Express (NVMe) standard, the parameter change command may be an NVMe Admin command. The parameter change command may include one or more descriptors including a register address corresponding to a target parameter to be changed and a parameter value.

스토리지 장치(200)는 호스트(100)로부터 파라미터 변경 커맨드를 수신하면, 상기 파라미터 변경 커맨드에 포함된 레지스터 어드레스 영역에 파라미터 값을 기록함으로써 인터페이스를 튜닝할 수 있다. 따라서, 호스트(100)가 인터페이스 프로토콜에 따라 레지스터에 접근할 수 없는 경우에도 스토리지 장치(200)는 외부의 최적 파라미터 값을 이용하여 인터페이스를 튜닝할 수 있다.When receiving a parameter change command from the host 100, the storage device 200 may tune the interface by recording a parameter value in a register address area included in the parameter change command. Accordingly, even when the host 100 cannot access the register according to the interface protocol, the storage device 200 may tune the interface using an external optimal parameter value.

도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작을 나타내는 흐름도이다.2 is a flowchart illustrating the operation of a computing system according to an embodiment of the present invention.

단계 S11에서, 호스트는 하나 이상의 디스크립터를 포함하는 파라미터 변경 커맨드를 제공할 수 있다. 앞서 설명된 바와 같이, 각각의 디스크립터는 변경하려는 타겟 파라미터에 대응하는 레지스터 어드레스 및 파라미터 값을 포함할 수 있다. In step S11, the host may provide a parameter change command including one or more descriptors. As described above, each descriptor 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. A manufacturer may generate a parameter change command including an optimized parameter value and transmit the command to the host so that the host can tune an interface with the storage device.

구현에 따라, 제조사는 파라미터 변경 커맨드를 암호화된 상태로 호스트에 전달함으로써 파라미터 및 파라미터 값에 대한 보안성을 향상시킬 수 있다. 예를 들어, 스토리지 장치가 NVMe 규격을 따르는 경우, 호스트는 NVMe 규격에서 지원하는 시큐리티 프로토콜에 따라 스토리지 장치로 암호화된 파라미터 변경 커맨드를 제공할 수 있다. 스토리지 장치가 암호화된 파라미터 변경 커맨드를 수신한 경우, 스토리지 장치는 단계 S12에서 상기 파라미터 변경 커맨드를 복호화할 수 있다. Depending on the implementation, the manufacturer may improve the security of parameters and parameter values by transmitting the parameter change command to the host in an encrypted state. For example, when the storage device complies with the NVMe standard, the host may provide an encrypted parameter change command to the storage device according to a security protocol supported by the NVMe standard. When the storage device receives the encrypted parameter change command, the storage device may decrypt the parameter change command in step S12.

단계 S13에서, 스토리지 장치는 상기 파라미터 변경 커맨드를 파싱(parsing)함으로써 상기 로부터 하나 이상의 디스크립터를 추출할 수 있다.In step S13, the storage device may extract one or more descriptors from the parameter change command by parsing the parameter change command.

단계 S14에서, 스토리지 장치는 추출된 디스크립터를 실행하여 레지스터에 파라미터 값을 기록함으로써 인터페이스 튜닝을 수행할 수 있다. 예를 들어, 스토리지 장치는 상기 디스크립터에 포함된 레지스터 어드레스가 가리키는 레지스터 영역에, 상기 디스크립터에 포함된 파라미터 값을 기록함으로써 최적 파라미터 값을 상기 타겟 파라미터에 적용할 수 있다.In step S14, the storage device may perform interface tuning by executing the extracted descriptor and writing a parameter value to a register. For example, the storage device may apply an optimal parameter value to the target parameter by recording the parameter value included in the descriptor in a register area indicated by a register address included in the descriptor.

이하에서, 도 3 내지 도 6을 참조하여 본 발명의 실시 예에 따른 스토리지 장치 및 파라미터 변경 커맨드에 대해 더욱 자세히 설명된다.Hereinafter, a storage device and a parameter change command according to an embodiment of the present invention will be described in more detail with reference to FIGS. 3 to 6 .

도 3은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.3 is a block diagram illustrating a storage device according to an exemplary embodiment of the present invention.

스토리지 장치(200)는 도 1을 참조하여 설명된 스토리지 장치(200)에 대응할 수 있다. 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 메인 비휘발성 메모리(240)를 포함할 수 있다.The storage device 200 may correspond to the storage device 200 described with reference to FIG. 1 . The storage device 200 may include a storage controller 210 and a main non-volatile memory 240 .

스토리지 컨트롤러(210)는 호스트(100)의 요청에 따라 메인 비휘발성 메모리(240)를 제어할 수 있다. 스토리지 컨트롤러(210)는 메인 비휘발성 메모리(240)로 제어 신호를 전송하고, 메인 비휘발성 메모리(240)와 데이터를 교환할 수 있다. The storage controller 210 may control the main nonvolatile memory 240 according to a request of the host 100 . The storage controller 210 may transmit a control signal to the main nonvolatile memory 240 and exchange data with the main nonvolatile memory 240 .

스토리지 컨트롤러(210)는 특수 기능 레지스터(SFR: Special Function Register, 219)를 포함할 수 있다. SFR(219)은 인터페이스 프로토콜에 따른 호스트(100)와의 연결 특성을 나타내는 파라미터 값들을 저장할 수 있는 저장 영역을 포함할 수 있다. 한편, 상기 인터페이스 프로토콜에서 호스트(100)가 SFR(219)에 접근하는 것은 지원되지 않을 수 있다.The storage controller 210 may include a special function register (SFR) 219. The SFR 219 may include a storage area capable of storing parameter values representing connection characteristics with the host 100 according to an interface protocol. Meanwhile, access by the host 100 to the SFR 219 may not be supported in the interface protocol.

메인 비휘발성 메모리(240)는 스토리지 컨트롤러(210)의 제어에 따라 리드, 프로그램 및 이레이즈 동작을 수행할 수 있다. 메인 비휘발성 메모리(240)는 NAND 플래시 메모리를 포함할 수 있다. 그러나, 본 발명은 메인 비휘발성 메모리(240)가 NAND 플래시 메모리를 포함하는 것으로 제한되지 않으며, 메인 비휘발성 메모리(240)는 PRAM, MRAM, RRAM, FeRAM 등과 같은 다양한 비휘발성 메모리들 중 적어도 하나를 포함할 수 있다.The main nonvolatile memory 240 may perform read, program, and erase operations under the control of the storage controller 210 . The main non-volatile memory 240 may include a NAND flash memory. However, the present invention is not limited to the main non-volatile memory 240 including a NAND flash memory, and the main non-volatile memory 240 includes at least one of various non-volatile memories such as PRAM, MRAM, RRAM, and FeRAM. can include

본 발명의 실시 예에 따르면, 스토리지 장치(200)는 호스트(100)와 통신하기 위한 인터페이스 프로토콜을 통해 호스트(100)로부터 파라미터 변경 커맨드를 수신할 수 있다. 스토리지 컨트롤러(210)는 호스트(100)로부터 수신된 파라미터 변경 커맨드에 응하여 SFR(219)의 저장 영역에 파라미터 값을 저장함으로써 인터페이스 튜닝을 수행할 수 있다. According to an embodiment of the present invention, the storage device 200 may receive a parameter change command from the host 100 through an interface protocol for communication with the host 100 . The storage controller 210 may perform interface tuning by storing parameter values in a storage area of the SFR 219 in response to a parameter change command received from the host 100 .

도 4 내지 도 6은 본 발명의 실시 예에 따른 파라미터 변경 커맨드를 설명하기 위한 도면들이다.4 to 6 are diagrams for explaining a parameter change command according to an embodiment of the present invention.

도 4는 파라미터 변경 커맨드의 데이터 구조를 예시하는 도면이다.4 is a diagram illustrating a data structure of a parameter change command.

파라미터 변경 커맨드는 스토리지 장치와 호스트의 통신을 위한 인터페이스 프로토콜에서 지원되는 형태를 가질 수 있다. 예를 들어, 파라미터 변경 커맨드는 예를 들어 패킷 형태를 가질 수 있다. The parameter change command may have a form supported by an interface protocol for communication between the storage device and the host. For example, the parameter change command may have a packet form, for example.

도 4를 참조하면, 파라미터 변경 커맨드는 서명(signature) 필드, 타겟 파워 사이클(target power cycle) 필드 및 디스크립터(descriptor) 필드를 포함할 수 있다. Referring to FIG. 4 , 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 a parameter change command is received from the host, the storage device internally stores the parameter change command, and performs interface tuning by optimized parameters using the parameter change command even when the storage device is powered on and reset. can

본 발명의 실시 예에 따르면, 타겟 파워 사이클 필드는 파라미터 변경 커맨드의 만료조건으로서 파워 사이클링 횟수 정보를 포함할 수 있다. 파워 사이클은 스토리지 장치의 파워가 오프(off)된 후 온(on) 되는 한 주기를 지칭할 수 있으며, 파워 사이클링 횟수는 스토리지 장치의 파워가 오프된 후 온 되는 횟수를 지칭할 수 있다.According to an embodiment of the present invention, the target power cycle field may include power cycling number information as an expiration condition of a parameter change command. A power cycle may refer to one cycle in which power of the storage device is turned off and then turned on, and the number of times of power cycling may refer to the number of times the power of the storage device is turned off and then turned on.

스토리지 장치는 상기 파라미터 변경 커맨드가 수신된 후, 상기 타겟 파워 사이클 필드에 포함된 파워 사이클링 횟수만큼 파워 사이클이 반복되면 상기 파라미터 변경 커맨드를 만료시킬 수 있다. 상기 파라미터 변경 커맨드가 만료된다는 것은, 스토리지 장치가 파워 온 리셋된 후에도 더 이상 상기 파라미터 변경 커맨드에 따라 인터페이스 튜닝을 수행하지 않는다는 것을 지칭할 수 있다.After receiving the parameter change command, the storage device may expire the parameter change command when power cycles are repeated as many times as the number of power cycles included in the target power cycle field. Expiration of the parameter change command may indicate that interface tuning is not performed according to the parameter change command any more even after the storage device is powered-on reset.

스토리지 장치가 잘못된 파라미터 값들을 포함하는 파라미터 변경 커맨드를 이용하여 인터페이스 튜닝을 수행한 경우, 스토리지 장치와 호스트의 정상적인 통신이 불가능해질 수 있다. 본 발명의 실시 예에 따르면, 잘못된 파라미터 값들을 포함하는 파라미터 변경 커맨드는 만료조건 하에서 만료될 수 있다. 따라서, 상기 파라미터 변경 커맨드가 만료된 후 스토리지 장치와 호스트의 통신이 재개될 수 있다.When the storage device performs interface tuning using a parameter change command including incorrect parameter values, normal communication between the storage device and the host may become impossible. According to an embodiment of the present invention, a parameter change command including invalid parameter values may expire under an expiration condition. Accordingly, communication between the storage device and the host may be resumed after the parameter change command expires.

한편, 도 4는 2개의 타겟 파워 사이클 필드가 4바이트 크기를 갖고, 각각이 파워 사이클링 횟수의 상위 4바이트 및 하위 4바이트 값을 나타내는 경우를 예시한다. 그러나, 타겟 파워 사이클 필드의 크기 및 개수는 도 4의 예시로 제한되지 않는다.Meanwhile, FIG. 4 illustrates a case in which two target power cycle fields have a size of 4 bytes and each indicates values of upper 4 bytes and lower 4 bytes of the number of power cycling. However, the size and number of target power cycle fields are not limited to the example of FIG. 4 .

도 4의 예에서, 파라미터 변경 커맨드는 N(N은 자연수)개의 디스크립터 필드를 포함할 수 있다. 각각의 디스크립터 필드는 변경하려는 타겟 파라미터를 특정하기 위한 정보와, 타겟 파라미터의 변경될 값을 포함할 수 있다. 즉, 도 4에 예시된 파라미터 변경 커맨드는 N개의 타겟 파라미터의 값을 변경할 수 있다.In the example of FIG. 4 , the parameter change command may include N (N is a natural number) descriptor fields. Each descriptor field may include information for specifying a target parameter to be changed and a value of the target parameter to be changed. That is, the parameter change command illustrated in FIG. 4 may change values of N target parameters.

도 5는 파라미터 변경 커맨드에 포함된 디스크립터를 더욱 자세히 설명하기 위한 도면이다.5 is a diagram for explaining in detail a descriptor included in a parameter change command.

도 5를 참조하면, 디스크립터 필드는 그룹 필드, 어드레스 필드 및 값 필드를 포함할 수 있다. 그룹 필드 및 어드레스 필드는 타겟 파라미터를 특정할 수 있으며, 값 필드는 상기 타겟 파라미터의 변경될 값을 나타낼 수 있다.Referring to FIG. 5 , the descriptor field 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 be changed of the target parameter.

구체적으로, 그룹 필드는 상기 타겟 파라미터에 의해 영향을 받는 코드 블록을 지칭할 수 있다. 코드 블록은 펌웨어 소스 코드의 집합, 예를 들어 함수(function)를 지칭할 수 있다. 타겟 파라미터는 특정 함수 내에서 적용되는 로컬 파라미터일 수 있으며, 그룹 필드는 타겟 파라미터가 적용되는 코드 블록을 특정할 수 있다.Specifically, the group field may refer to a code block affected by the target parameter. A code block may refer to a set of firmware source code, 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.

어드레스 필드는 SFR에서 상기 타겟 파라미터가 저장되는 영역의 어드레스, 즉 SFR 어드레스를 포함할 수 있다. 구현에 따라, 상기 SFR 어드레스는 스토리지 컨트롤러가 상기 SFR에 접근하기 위해 할당된 어드레스인 메모리 맵 어드레스일 수 있다. The address field may include an address of an area where the target parameter is stored in the SFR, that is, an SFR address. Depending on implementation, the SFR address may be a memory map address, which is an address allocated by a storage controller to access the SFR.

값 필드는 상기 SFR 어드레스 영역에 기록하기 위한, 상기 타겟 파라미터의 값을 포함할 수 있다.The value field may include a value of the target parameter to be written to the SFR address area.

다시 도 4를 참조하면, 파라미터 변경 커맨드는 복수의 디스크립터 필드를 포함할 수 있다. 파라미터 변경 커맨드가 복수의 디스크립터 필드들을 포함하는 경우, 스토리지 장치는 상기 파라미터 변경 커맨드에 응하여 복수의 디스크립터를 순차적으로 실행함으로써 복수의 타겟 파라미터들의 값을 변경할 수 있다.Referring back to FIG. 4 , the parameter change command may include a plurality of descriptor fields. When 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 a plurality of descriptors in response to the parameter change command.

도 6은 본 발명의 실시 예에 따른 디스크립터들의 실행 순서를 설명하기 위한 도면이다.6 is a diagram for explaining an execution sequence of descriptors according to an embodiment of the present invention.

도 6은 도 4의 파라미터 변경 커맨드에 포함되는 N(N은 자연수)개의 디스크립터들 및 각 디스크립터에 포함되는 그룹, 어드레스 및 파라미터 값을 예시한다. FIG. 6 illustrates N (N is a natural number) descriptors included in the parameter change command of FIG. 4 and groups, addresses, and parameter values included in each descriptor.

본 발명의 실시 예에 따르면, 스토리지 장치는 패킷에 나열된 순서대로 디스크립터를 실행할 수 있다. 도 6의 예에서, 스토리지 장치는 1번 및 2번 디스크립터를 먼저 실행함으로써 0번 그룹들에 포함된 타겟 파라미터들의 값을 변경하고, 3번 디스크립터를 실행함으로써 1번 그룹에 포함된 타겟 파라미터의 값을 변경하는 등의 순서로 1번 디스크립터부터 N번 디스크립터까지 실행할 수 있다.According to an embodiment of the present invention, the storage device may execute descriptors in the order listed in the packet. In the example of FIG. 6 , the storage device changes the value of target parameters included in groups 0 by first executing descriptors 1 and 2, and the value of target parameters included in group 1 by executing descriptor 3. You can execute from descriptor 1 to descriptor N in the order of changing the .

파라미터 변경 커맨드에서 복수의 디스크립터들은 복수의 타겟 파라미터를 효율적으로 변경할 수 있는 순서대로 나열될 수 있다. 예를 들어, 복수의 디스크립터들은 그룹 순서대로 나열될 수 있다. 예를 들어, 그룹 순서는 호스트와의 연결을 제어하는 펌웨어 소스 코드에서 코드 블록들이 실행되는 순서일 수 있다. 스토리지 장치는 정해진 순서대로 실행되는 코드 블록들에 적용되는 타겟 파라미터들을 변경하기 위해, 그룹 순서대로 나열된 복수의 디스크립터들을 단순히 나열된 순서대로 실행할 수 있다. 따라서, 복수의 타겟 파라미터들을 변경하기 위해 요구되는 연산량이 감소할 수 있다.In the parameter change command, a plurality of descriptors may be listed in an order capable of efficiently changing a plurality of target parameters. For example, a plurality of descriptors may be arranged in group order. For example, the group order may be the order in which code blocks are executed in the firmware source code that controls the connection to the host. The storage device may simply execute a plurality of descriptors listed in group order in order to change target parameters applied to code blocks executed in a predetermined order. Accordingly, the amount of computation required to change a plurality of target parameters can be reduced.

도 7은 본 발명의 실시 예에 따른 스토리지 장치의 동작을 나타내는 흐름도이다.7 is a flowchart illustrating an operation of a storage device according to an exemplary embodiment of the present invention.

단계 S21에서, 스토리지 장치에 포함된 스토리지 컨트롤러는 호스트로부터 파라미터 변경 커맨드를 수신할 수 있다. 도 4를 참조하여 설명된 것과 같이, 파라미터 변경 커맨드는 유효성 정보, 만료조건 및 하나 이상의 디스크립터를 포함할 수 있다.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. 4 , the parameter change command may include validity information, an expiration condition, and one or more descriptors.

단계 S22에서, 상기 스토리지 컨트롤러는 상기 파라미터 변경 커맨드로부터 하나 이상의 디스크립터를 추출할 수 있다. 도 5를 참조하여 설명된 것과 같이, 하나 이상의 디스크립터는 타겟 파라미터가 포함된 그룹, SFR에서 타겟 파라미터가 저장된 영역을 가리키는 어드레스 및 타겟 파라미터 값을 포함할 수 있다.In step S22, the storage controller may extract one or more descriptors from the parameter change command. As described with reference to FIG. 5 , one or more descriptors may include a group including a target parameter, an address indicating a region in which the target parameter is stored in the SFR, and a value of the target parameter.

단계 S23에서, 상기 스토리지 컨트롤러는 상기 추출된 하나 이상의 디스크립터를 나열된 순서대로 실행함으로써 SFR에 파라미터 값을 기록할 수 있다. 도 6을 참조하여 설명된 것과 같이, 파라미터 변경 커맨드 내에서 하나 이상의 디스크립터는 그룹 순서대로 나열될 수 있다.In step S23, the storage controller may record parameter values in the SFR by executing the one or more extracted descriptors in the listed order. As described with reference to FIG. 6 , one or more descriptors within the parameter change command may be listed in group order.

도 3 내지 도 7을 참조하여 설명된 본 발명의 실시 예에 따르면, 스토리지 장치는 파라미터 변경 커맨드를 지원할 수 있다. 호스트는 상기 파라미터 변경 커맨드를 이용하여, 호스트가 인터페이스 프로토콜을 통해 접근할 수 없는 SFR에 포함된 파라미터의 값을 변경하도록 스토리지 장치를 제어할 수 있다. 스토리지 장치는 제조사 등의 외부에서 결정된 최적의 파라미터 값을 획득하여 SFR 영역에 기록함으로써 인터페이스 튜닝을 수행할 수 있으며, 스토리지 장치와 호스트가 신속하고 정확하게 신호를 주고받을 수 있게 된다.According to embodiments of the present disclosure described with reference to FIGS. 3 to 7 , a storage device may support a parameter change command. The host may control the storage device to change a parameter value included in an SFR that the host cannot access through an interface protocol by using the parameter change command. The storage device may perform interface tuning by obtaining optimal parameter values determined outside the manufacturer and recording them in the SFR area, and the storage device and the host may exchange signals quickly and accurately.

한편, 앞서 설명된 바에 따르면, 스토리지 장치는 호스트로부터 수신된 파라미터 변경 커맨드를 내부에 저장할 수 있으며, 스토리지 장치의 파워 온 리셋 시에 상기 파라미터 변경 커맨드를 이용하여 인터페이스 튜닝을 수행할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 장치는 파라미터 변경 커맨드를 메인 비휘발성 메모리의 부트 영역에 저장하는 대신, 스토리지 컨트롤러의 동작에 필요한 데이터를 저장하는 서브 비휘발성 메모리에 저장할 수 있다. 이하에서, 도 8 내지 도 10을 참조하여 본 발명의 실시 예에 따른 스토리지 장치가 더욱 자세히 설명된다.Meanwhile, as described above, the storage device may internally store the parameter change command received from the host, and may perform interface tuning using the parameter change command when the storage device is powered on and reset. According to an embodiment of the present invention, the storage device may store data necessary for the operation of the storage controller in a sub nonvolatile memory instead of storing a parameter change command in a boot area of the main nonvolatile memory. Hereinafter, a storage device according to an embodiment of the present invention will be described in more detail with reference to FIGS. 8 to 10 .

도 8은 본 발명의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.8 is a block diagram illustrating a storage device according to an exemplary embodiment of the present invention.

스토리지 장치(200)는 스토리지 컨트롤러(210), 서브 비휘발성 메모리(220), 버퍼 메모리(230) 및 메인 비휘발성 메모리(240)를 포함할 수 있다. 스토리지 컨트롤러(210) 및 메인 비휘발성 메모리(240)는 도 3을 참조하여 설명된 스토리지 컨트롤러(210) 및 메인 비휘발성 메모리(240)에 대응할 수 있다.The storage device 200 may include a storage controller 210 , a sub nonvolatile memory 220 , a buffer memory 230 and a main nonvolatile memory 240 . The storage controller 210 and the main nonvolatile memory 240 may correspond to the storage controller 210 and the main nonvolatile memory 240 described with reference to FIG. 3 .

스토리지 컨트롤러(210)는 SFR(219)를 포함할 수 있다. 도 3을 참조하여 설명된 것과 같이, SFR(219)는 호스트와의 연결 특성을 정의하는 파라미터들을 포함할 수 있다.The storage controller 210 may include a SFR 219 . As described with reference to FIG. 3, the SFR 219 may include parameters defining connection characteristics with the host.

메인 비휘발성 메모리(240)는 호스트로부터의 데이터를 저장하기 위한 노멀 영역뿐만 아니라, 부트 영역(241)을 더 포함할 수 있다. 부트 영역(241)은 스토리지 장치(200)의 부팅에 필요한 데이터인 부트 로더를 저장할 수 있다. 부트 영역(241)은 스토리지 장치(200)의 파워 온 리셋 시에, 스토리지 컨트롤러(210)에 의해 접근될 수 있다. 부트 영역(241)은 부트 블록, 부트 섹터 등으로 지칭될 수도 있으며, 예를 들어 4KB 정도의 제한된 크기를 가질 수 있다. The main nonvolatile memory 240 may further include a boot area 241 as well as a normal area for storing data from the host. The boot area 241 may store a boot loader, which is data necessary for booting the storage device 200 . The boot area 241 may be accessed by the storage controller 210 when the storage device 200 is powered on and reset. The boot area 241 may also be referred to as a boot block or boot sector, and may have a limited size, for example, about 4 KB.

서브 비휘발성 메모리(220)는 스토리지 컨트롤러(210)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 서브 비휘발성 메모리(220)는 EEPROM, NOR 플래시 메모리, SNOR(Serial NOR) 플래시 메모리 등을 포함할 수 있다. 구현에 따라, 서브 비휘발성 메모리(220)는 수 MB 정도의 크기를 가질 수 있다.The sub nonvolatile memory 220 may store data necessary for the operation of the storage controller 210 . For example, the sub nonvolatile memory 220 may include EEPROM, NOR flash memory, SNOR (Serial NOR) flash memory, and the like. Depending on the implementation, the sub non-volatile memory 220 may have a size of several megabytes.

버퍼 메모리(230)는 메인 비휘발성 메모리(240)에 프로그램될 데이터를 버퍼링하거나, 메인 비휘발성 메모리(240)로부터 독출된 데이터를 버퍼링할 수 있다. 버퍼 메모리(230)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 버퍼 메모리(230)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다.The buffer memory 230 may buffer data to be programmed into the main nonvolatile memory 240 or data read from the main nonvolatile memory 240 . The buffer memory 230 may be implemented as a volatile memory. For example, the buffer memory 230 may be implemented as static random access memory (SRAM) or dynamic random access memory (DRAM).

한편, 메인 비휘발성 메모리(240)가 NAND 플래시 메모리인 경우, 스토리지 컨트롤러(210)에 의해 메인 비휘발성 메모리(240)의 임의 어드레스에 대한 데이터 리드 및 라이트가 어려울 수 있다. 예를 들어, NAND 플래시 메모리에서는 하나의 워드라인에 연결된 메모리 셀들의 집합인 페이지 단위로 데이터가 리드될 수 있다. 스토리지 컨트롤러(210)는 메인 비휘발성 메모리(240)에 저장된 데이터를 페이지 단위로 리드하도록 제어할 수 있으며, 메인 비휘발성 메모리(240)에 저장된 데이터는 버퍼 메모리(230)에 버퍼링된 후에 스토리지 컨트롤러(210)에 의해 이용될 수 있다.Meanwhile, when the main nonvolatile memory 240 is a NAND flash memory, it may be difficult to read and write data to an arbitrary address of the main nonvolatile memory 240 by the storage controller 210 . For example, in a NAND flash memory, data may be read in units of a page, which is a set of memory cells connected to one word line. The storage controller 210 may control data stored in the main nonvolatile memory 240 to be read in page units, and the data stored in the main nonvolatile memory 240 is buffered in the buffer memory 230, and then the storage controller ( 210) can be used.

반면에, 서브 비휘발성 메모리(220)에서는 스토리지 컨트롤러(210)에 의해 임의의 어드레스에 대한 데이터 리드, 라이트가 가능할 수 있다. 구체적으로, 스토리지 컨트롤러(210)는 외부 어드레스를 이용하여 서브 비휘발성 메모리(220)의 로우 어드레스 및 컬럼 어드레스를 특정함으로써 한 개의 메모리 셀을 선택할 수 있다. On the other hand, in the sub nonvolatile memory 220 , data reading and writing to an arbitrary address may be possible by the storage controller 210 . Specifically, the storage controller 210 may select one memory cell by specifying a row address and a column address of the sub nonvolatile memory 220 using an external address.

앞서 설명된 바와 같이, 스토리지 장치(200) 내에 파라미터 변경 커맨드가 저장되고, 스토리지 장치(200)의 파워 온 리셋 시, 즉 부팅 동작 시에 상기 파라미터 변경 커맨드를 이용하여 인터페이스 튜닝을 수행할 수 있다. 파라미터 변경 커맨드는 부팅 동작 시에 신속하게 접근될 수 있는 것이 바람직하다. 그러나, 부트 영역(241)의 크기는 제한적일 수 있으며, 부트 영역(241)의 크기 제한을 완화하기 위해서는 스토리지 장치의 펌웨어 설계가 크게 수정되어야 할 수 있다. As described above, a parameter change command is stored in the storage device 200, and interface tuning may be performed using the parameter change command during a power-on reset of the storage device 200, that is, during a booting operation. It is desirable that the parameter change command can be quickly accessed at boot time. However, the size of the boot area 241 may be limited, and in order to alleviate the size limitation of the boot area 241, the firmware design of the storage device may need to be significantly modified.

따라서, 파라미터 변경 커맨드를 부트 영역(241)에 부트 로더와 함께 저장하고, 부팅 동작 시에 부트 로더와 파라미터 변경 커맨드를 함께 로드하는 것은 어려울 수 있다. 그리고, 파라미터 변경 커맨드를 비휘발성 메모리 장치(240)의 노멀 영역에 저장하고, 부팅 동작 시에 상기 부트 영역(241)뿐만 아니라 노멀 영역에 접근하는 것은 부팅 완료 시간을 지연시킬 수 있다.Accordingly, it may be difficult to store the parameter change command together with the boot loader in the boot area 241 and load the boot loader and parameter change command together during a booting operation. In addition, storing the parameter change command in the normal area of the non-volatile memory device 240 and accessing the normal area as well as the boot area 241 during a booting operation may delay booting completion time.

본 발명의 실시 예에 따르면, 스토리지 컨트롤러(210)는 파라미터 변경 커맨드를 서브 비휘발성 메모리(220)에 저장하고, 부팅 동작 시에 상기 파라미터 변경 커맨드를 서브 비휘발성 메모리(220)로부터 획득할 수 있다. 메인 비휘발성 메모리(240)는 스토리지 컨트롤러(210)에 의해 직접 접근되기 어려운 반면, 서브 비휘발성 메모리(220)는 어드레스를 이용하여 스토리지 컨트롤러(210)에 의해 쉽게 접근될 수 있다. 따라서, 스토리지 컨트롤러(210)는 파라미터 변경 커맨드를 신속하게 획득하고, 부팅 동작 시에 인터페이스 튜닝을 신속하게 수행할 수 있다.According to an embodiment of the present invention, the storage controller 210 may store a parameter change command in the sub nonvolatile memory 220 and obtain the parameter change command from the sub nonvolatile memory 220 during a booting operation. . While the main nonvolatile memory 240 is difficult to directly access by the storage controller 210 , the sub nonvolatile memory 220 can be easily accessed by the storage controller 210 using an address. Accordingly, the storage controller 210 can quickly obtain a parameter change command and quickly perform interface tuning during a booting operation.

이하에서, 본 발명의 실시 예에 따라 스토리지 장치(200)가 파라미터 변경 커맨드를 저장하고, 파워 온 리셋 시에 파라미터 변경 커맨드를 이용하는 방법이 도 9 내지 도 10을 참조하여 자세히 설명된다. Hereinafter, a method of storing a parameter change command in the storage device 200 and using the parameter change command during a power-on reset according to an embodiment of the present invention will be described in detail with reference to FIGS. 9 to 10 .

도 9 내지 도 10은 본 발명의 실시 예에 따른 스토리지 장치의 동작을 나타내는 흐름도들이다.9 to 10 are flowcharts illustrating operations of a storage device according to an embodiment of the present invention.

도 9는 스토리지 장치가 파라미터 변경 커맨드에 응하여 수행하는 동작을 나타내는 흐름도이다. 도 9의 단계 S31 내지 단계 S33은 도 7을 참조하여 설명된 단계 S21 내지 단계 S23과 유사할 수 있다.9 is a flowchart illustrating an operation performed by a storage device in response to a parameter change command. Steps S31 to S33 of FIG. 9 may be similar to steps S21 to S23 described with reference to FIG. 7 .

스토리지 컨트롤러는 파라미터 변경 커맨드를 이용하여 인터페이스 튜닝을 수행한 후, 단계 S34에서 상기 파라미터 변경 커맨드를 서브 비휘발성 메모리에 저장할 수 있다. 저장된 파라미터 변경 커맨드는 파워 온 리셋 시에 인터페이스 튜닝을 위해 이용될 수 있다.After performing interface tuning using the parameter change command, the storage controller may store the parameter change command in the sub nonvolatile memory in step S34. The stored parameter change command can be used for interface tuning at power-on reset.

도 10은 스토리지 장치가 파워 온 리셋 시 수행하는 동작을 나타내는 흐름도이다.10 is a flowchart illustrating an operation performed by a storage device upon power-on reset.

단계 S41에서 스토리지 장치는 전원 공급을 감지하고, 단계 S42 내지 단계 S47의 파워 온 리셋 동작을 수행할 수 있다.In step S41, the storage device may detect power supply and perform power-on reset operations of steps S42 to S47.

단계 S42에서, 스토리지 장치는 메인 비휘발성 메모리에 저장된 부트 로더를 버퍼 메모리로 로드할 수 있다. 예를 들어, 스토리지 컨트롤러에 포함된 프로세서가 메인 비휘발성 메모리의 정해진 어드레스부터 정해진 크기의 데이터를 버퍼 메모리에 로드하도록 상기 메인 비휘발성 메모리를 제어할 수 있다.In step S42, the storage device may load the 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 nonvolatile memory to load data having a predetermined size from a predetermined address of the main nonvolatile memory into a buffer memory.

단계 S43에서, 스토리지 장치는 버퍼 메모리에 로드된 부트 로더를 이용하여 SFR을 초기화할 수 있다. 예를 들어, 부트 로더에는 인터페이스 튜닝이 수행되기 전의 초기 파라미터 값들이 포함될 수 있으며, 스토리지 컨트롤러는 상기 초기 파라미터 값들을 SFR에 기록함으로써 연결 특성 파라미터들을 초기화할 수 있다.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 recording the initial parameter values in the SFR.

단계 S44에서, 스토리지 장치는 서브 비휘발성 메모리에서 파라미터 변경 커맨드가 저장되었는지 여부를 판단할 수 있다. 예를 들어, 스토리지 컨트롤러는 버퍼 메모리를 경유하지 않고, 어드레스를 이용하여 서브 비휘발성 메모리에 직접 액세스할 수 있다. 파라미터 변경 커맨드는 서브 비휘발성 메모리에 저장될 수 있으므로, 스토리지 컨트롤러는 파라미터 변경 커맨드가 저장되었는지 여부를 신속하게 판단할 수 있다.In step S44, the storage device may determine whether a parameter change command is stored in the sub nonvolatile memory. For example, the storage controller may directly access the sub nonvolatile memory using an address without going through a buffer memory. Since the parameter change command can be stored in the sub non-volatile memory, the storage controller can quickly determine whether the parameter change command has been stored.

단계 S45에서, 스토리지 장치는 초기화된 연결 특성 파라미터들의 변경이 필요한지 여부를 판단할 수 있다. 예를 들어, 스토리지 컨트롤러는 유효한 서명을 포함하는 파라미터 변경 커맨드가 서브 비휘발성 메모리에 저장된 경우, 상기 파라미터 변경 커맨드가 만료되지 않았다면 파라미터들의 변경이 필요한 것으로 판단할 수 있다. 반면에, 스토리지 컨트롤러는 서브 비휘발성 메모리에 파라미터 변경 커맨드가 저장되지 않았거나, 저장된 커맨드가 유효하지 않거나, 저장된 커맨드가 만료된 경우 파라미터들의 변경이 필요하지 않은 것으로 판단할 수 있다.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 nonvolatile memory, the storage controller may determine that parameters need to be changed if the parameter change command has not expired. On the other hand, the storage controller may determine that parameters do not need to be changed when the parameter change command is not stored in the sub nonvolatile memory, the stored command is invalid, or the stored command has expired.

파라미터들의 변경이 필요한 경우(단계 S45에서, "예"), 스토리지 컨트롤러는 단계 S46에서 파라미터 변경 커맨드로부터 하나 이상의 디스크립터를 추출할 수 있다. 그리고, 단계 S47에서 스토리지 컨트롤러는 상기 하나 이상의 디스크립터를 나열된 순서대로 실행하여 SFR의 초기 파라미터 값이 저장된 영역에 최적 파라미터 값을 덮어쓰기할 수 있다.If parameters need to be changed (Yes in step S45), the storage controller may extract one or more descriptors from the parameter change command in step S46. In step S47, the storage controller may overwrite the optimal parameter value in the area where the initial parameter value of the SFR is stored by executing the one or more descriptors in the listed order.

본 발명의 실시 예에 따르면, 스토리지 장치는 정해진 인터페이스 프로토콜을 준수하는 파라미터 변경 커맨드를 지원할 수 있다. 스토리지 장치는 상기 파라미터 변경 커맨드를 수신함으로써 최적 파라미터 값들을 획득함으로써, 호스트의 접근이 허용되지 않는 SFR의 파라미터 값들을 변경할 수 있다. 따라서, 호스트와 스토리지 장치가 신속하고 정확하게 신호를 주고받을 수 있다.According to an embodiment of the present invention, a storage device may support a parameter change command conforming to a predetermined interface protocol. The storage device may change parameter values of SFRs to which the host is not allowed to access by acquiring optimal parameter values by receiving the parameter change command. Accordingly, the host and the storage device can exchange signals quickly and accurately.

스토리지 장치는 파라미터 변경 커맨드를 컨트롤러가 직접 접근할 수 있는 보조 비휘발성 메모리에 저장할 수 있다. 스토리지 장치가 메인 비휘발성 메모리의 부트 영역에 상기 파라미터 변경 커맨드를 저장하기 어려운 경우에도, 파워 온 리셋 시에 스토리지 컨트롤러가 상기 파라미터 변경 커맨드에 신속하게 액세스할 수 있다. 따라서, 스토리지 장치의 파워 온 리셋 시에 인터페이스 튜닝이 신속하게 수행될 수 있다.The storage device may store parameter change commands in secondary non-volatile memory directly accessible by the controller. Even when it is difficult for the storage device to store the parameter change command in the boot region of the main nonvolatile memory, the storage controller can quickly access the parameter change command during power-on reset. Accordingly, interface tuning can be quickly performed upon power-on reset of the storage device.

이하에서, 도 11 내지 도 14를 참조하여 본 발명의 실시 예가 적용된 컴퓨팅 시스템의 예가 자세히 설명된다.Hereinafter, an example of a computing system to which an embodiment of the present invention is applied will be described in detail with reference to FIGS. 11 to 14 .

도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.11 is a block diagram illustrating a computing system according to an embodiment of the present invention.

컴퓨팅 시스템(30)은 호스트(300) 및 스토리지 장치(400)를 포함할 수 있다. 또한, 스토리지 장치(400)는 스토리지 컨트롤러(410), 서브 메인 비휘발성 메모리(440), 버퍼 메모리(430) 및 메인 비휘발성 메모리(440)를 포함할 수 있다. 호스트(300) 및 스토리지 장치(400)는 도 1을 참조하여 설명된 호스트(100) 및 스토리지 장치(200)와 유사할 수 있다. 그리고, 스토리지 컨트롤러(410), 서브 메인 비휘발성 메모리(440), 버퍼 메모리(430) 및 메인 비휘발성 메모리(440)는 도 8을 참조하여 설명된 스토리지 컨트롤러(210), 서브 비휘발성 메모리(220), 버퍼 메모리(230) 및 메인 비휘발성 메모리(240)와 유사할 수 있다.The computing system 30 may include a host 300 and a storage device 400 . Also, the storage device 400 may include a storage controller 410 , a sub main nonvolatile memory 440 , a buffer memory 430 and a main nonvolatile memory 440 . The host 300 and the storage device 400 may be similar to the host 100 and the storage device 200 described with reference to FIG. 1 . Also, the storage controller 410, the sub main nonvolatile memory 440, the buffer memory 430, and the main nonvolatile memory 440 are the storage controller 210 and the sub nonvolatile memory 220 described with reference to FIG. 8 . ), the buffer memory 230 and the main non-volatile memory 240 may be similar.

스토리지 장치(400)는 호스트(300)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(400)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(400)가 SSD인 경우, 스토리지 장치(400)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(400)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(400)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(300)와 스토리지 장치(400)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다. The storage device 400 may include storage media for storing data according to a request from the host 300 . As an example, the storage device 400 may include at least one of a solid state drive (SSD), an embedded memory, and a removable external memory. When the storage device 400 is an SSD, the storage device 400 may be a device conforming to the non-volatile memory express (NVMe) standard. When the storage device 400 is an embedded memory or an external memory, the storage device 400 may be a device conforming to a universal flash storage (UFS) standard or an embedded multi-media card (eMMC) standard. The host 300 and the storage device 400 may respectively generate and transmit packets according to adopted standard protocols.

메인 비휘발성 메모리(440)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메인 비휘발성 메모리(440)는 프로그램 동작을 통해 호스트(300)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 메인 비휘발성 메모리(440)에 저장된 데이터를 출력할 수 있다. The main non-volatile memory 440 may retain stored data even when power is not supplied. The main nonvolatile memory 440 may store data provided from the host 300 through a program operation, and output data stored in the main nonvolatile memory 440 through a read operation.

메인 비휘발성 메모리(440)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(400)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(400)에는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.When the main nonvolatile memory 440 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 400 may include other various types of non-volatile memories. For example, the storage device 400 includes magnetic RAM (MRAM), spin-transfer torque MRAM (Spin-Transfer Torgue MRAM), conductive bridging RAM (CBRAM), ferroelectric RAM (FeRAM), phase RAM (PRAM), resistive memory ( Resistive RAM) and other various types of memory may be applied.

스토리지 컨트롤러(410)는 호스트(300)로부터의 요청에 응답하여 메인 비휘발성 메모리(440)를 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)로부터 리드된 데이터를 호스트(300)로 제공하고, 호스트(300)로부터 제공된 데이터를 메인 비휘발성 메모리(440)에 저장할 수 있다. 이러한 동작을 위해, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 지원할 수 있다.The storage controller 410 may control the main nonvolatile memory 440 in response to a request from the host 300 . For example, the storage controller 410 may provide data read from the main nonvolatile memory 440 to the host 300 and store the data provided from the host 300 in the main nonvolatile memory 440 . For this operation, the storage controller 410 may support read, program, and erase operations of the main nonvolatile memory 440 .

서브 비휘발성 메모리(420)는 스토리지 컨트롤러(410)의 동작에 필요한 데이터를 저장할 수 있다. 서브 비휘발성 메모리(420)는 어드레스를 이용하여 스토리지 컨트롤러(410)에 의해 직접 액세스될 수 있다. 서브 비휘발성 메모리(420)는 EEPROM, NOR 플래시 메모리, SNOR(Serial NOR) 플래시 메모리 등을 포함할 수 있다.The sub nonvolatile memory 420 may store data necessary for the operation of the storage controller 410 . The sub nonvolatile memory 420 may be directly accessed by the storage controller 410 using an address. The sub nonvolatile memory 420 may include EEPROM, NOR flash memory, SNOR (Serial NOR) flash memory, and the like.

버퍼 메모리(430)는 메인 비휘발성 메모리(440)에 프로그램될 데이터를 버퍼링하거나, 메인 비휘발성 메모리(440)로부터 독출된 데이터를 버퍼링할 수 있다.The buffer memory 430 may buffer data to be programmed into the main nonvolatile memory 440 or data read from the main nonvolatile memory 440 .

스토리지 컨트롤러(410)는 호스트 인터페이스(411), 메인 메모리 인터페이스(412) 및 CPU(central processing unit)(413)를 포함할 수 있다. 또한, 스토리지 컨트롤러(410)는 패킷 매니저(414), 서브 메모리 인터페이스(415), 버퍼 메모리 인터페이스(416), ECC(error correction code)(417) 엔진 및 AES(advanced encryption standard) 엔진(418)을 더 포함할 수 있다. 스토리지 컨트롤러(410)는 플래시 변환 레이어(FTL) 가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(413)가 플래시 변환 레이어를 실행하는 것에 의해 메인 비휘발성 메모리(440)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.The storage controller 410 may include a host interface 411 , a main memory interface 412 , and a central processing unit (CPU) 413 . In addition, the storage controller 410 includes a packet manager 414, a sub memory interface 415, a buffer memory interface 416, an error correction code (ECC) engine 417 and an advanced encryption standard (AES) engine 418. can include more. The storage controller 410 may further include a working memory (not shown) into which a flash translation layer (FTL) is loaded, and the CPU 413 executes the flash translation layer so that the memory for the main non-volatile memory 440 is stored. Data writing and reading operations can be controlled.

호스트 인터페이스(411)는 정해진 인터페이스 프로토콜을 통해 호스트(300)와 패킷(packet)을 송수신할 수 있다. 호스트(300)로부터 호스트 인터페이스(411)로 전송되는 패킷은 커맨드(command) 혹은 메인 비휘발성 메모리(440)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(411)로부터 호스트(300)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 메인 비휘발성 메모리(440)로부터 독출된 데이터 등을 포함할 수 있다.The host interface 411 may transmit/receive packets with the host 300 through a predetermined interface protocol. A packet transmitted from the host 300 to the host interface 411 may include a command or data to be written to the main non-volatile memory 440, and is transmitted from the host interface 411 to the host 300. The packet may include a response to a command or data read from the main nonvolatile memory 440 .

메인 메모리 인터페이스(412)는 메인 비휘발성 메모리(440)에 기록될 데이터를 메인 비휘발성 메모리(440)로 송신하거나, 메인 비휘발성 메모리(440)로부터 독출된 데이터를 수신할 수 있다. 이러한 메인 메모리 인터페이스(412)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The main memory interface 412 may transmit data to be written in the main nonvolatile memory 440 to the main nonvolatile memory 440 or may receive data read from the main nonvolatile memory 440 . Such a main memory interface 412 may be implemented to comply with standards such as Toggle or Open NAND Flash Interface (ONFI).

CPU(413)가 구동하는 플래시 변환 레이어는 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(300)로부터 수신한 논리 어드레스(logical address)를, 메인 비휘발성 메모리(440) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 메인 비휘발성 메모리(440) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 메인 비휘발성 메모리(440) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.The flash conversion layer driven by the CPU 413 may perform various functions such as address mapping, wear-leveling, and garbage collection. The address mapping operation is an operation of changing a logical address received from the host 300 into a physical address used to actually store data in the main nonvolatile memory 440 . Wear-leveling is a technique for preventing excessive deterioration of a specific block by uniformly using blocks in the main non-volatile memory 440. For example, firmware balancing erase counts of physical blocks It can be realized through technology. Garbage collection is a technique for securing usable capacity in the main non-volatile memory 440 by copying valid data of a block to a new block and then erasing the old block.

한편, CPU(413)는 스토리지 장치(400)의 동작을 위해 사용되는 파라미터 값들을 저장하기 위한 SFR(419)을 포함할 수 있다. 예를 들어, SFR(419)은 호스트와의 연결 특성을 나타내는 파라미터들을 저장할 수 있다.Meanwhile, the CPU 413 may include an SFR 419 for storing parameter values used for the operation of the storage device 400 . For example, the SFR 419 may store parameters representing connection characteristics with the host.

패킷 매니저(414)는 호스트(300)와 협의된 인터페이스 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(300)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. The packet manager 414 may generate a packet according to an interface protocol negotiated with the host 300 or parse various types of information from a packet received from the host 300 .

서브 메모리 인터페이스(415)는 스토리지 컨트롤러(410) 외부에 배치되는 서브 비휘발성 메모리(420)와 데이터를 송수신할 수 있다. 그리고, 버퍼 메모리 인터페이스(416)는 스토리지 컨트롤러(410) 외부에 배치되는 버퍼 메모리(430)와 데이터를 송수신할 수 있다. 도 11의 예에서 서브 비휘발성 메모리(420) 및 버퍼 메모리(430)는 스토리지 컨트롤러(410)의 외부에 배치될 수 있으나, 스토리지 컨트롤러(410)의 내부에 배치되어도 무방하다.The sub memory interface 415 may transmit/receive data with the sub nonvolatile memory 420 disposed outside the storage controller 410 . Also, the buffer memory interface 416 may transmit and receive data to and from the buffer memory 430 disposed outside the storage controller 410 . In the example of FIG. 11 , the sub nonvolatile memory 420 and the buffer memory 430 may be disposed outside the storage controller 410 , but may be disposed inside the storage controller 410 .

ECC부(417)는 메인 비휘발성 메모리(440)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC부(417)는 메인 비휘발성 메모리(440)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 메인 비휘발성 메모리(440) 내에 저장될 수 있다. 메인 비휘발성 메모리(440)로부터의 데이터 독출 시, ECC부(417)는 독출 데이터와 함께 메인 비휘발성 메모리(440)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The ECC unit 417 may perform error detection and correction functions for read data read from the main nonvolatile memory 440 . More specifically, the ECC unit 417 may generate parity bits for write data to be written in the main non-volatile memory 440, and the parity bits generated in this way are used together with the write data in the main non-volatile memory 440. may be stored in memory 440 . When data is read from the main non-volatile memory 440, the ECC unit 417 corrects an error in the read data using parity bits read from the main non-volatile memory 440 together with the read data, and the error is corrected. Read data can be output.

AES 엔진(418)은, 스토리지 컨트롤러(410)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다. 예를 들어, AES 엔진(418)은 스토리지 컨트롤러(410)가 시큐리티 프로토콜에 따라 수신한 커맨드를 복호화할 수 있다. The AES engine 418 may perform at least one of an encryption operation and a decryption operation on data input to the storage controller 410 using a symmetric-key algorithm. . For example, the AES engine 418 may decrypt a command received by the storage controller 410 according to a security protocol.

한편, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)에 저장되는 데이터를 암호화하기 위한 암호화 엔진을 더 포함할 수 있다. 그러나, 스토리지 컨트롤러(410)는 서브 비휘발성 메모리(420)에 저장되는 데이터는 암호화하지 않고 평문으로 저장할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 컨트롤러(410)는 시큐리티 프로토콜에 따라 수신한 커맨드를 서브 비휘발성 메모리(420)에 그대로 저장할 수 있다. Meanwhile, the storage controller 410 may further include an encryption engine for encrypting data stored in the main nonvolatile memory 440 . However, the storage controller 410 may store data stored in the sub nonvolatile memory 420 in plain text without encryption. According to an embodiment of the present invention, the storage controller 410 may store a command received according to a security protocol in the sub nonvolatile memory 420 as it is.

시큐리티 프로토콜에 따라 수신된 커맨드는 암호화된 커맨드일 수 있으므로, 상기 커맨드가 추가적인 암호화 없이 서브 비휘발성 메모리(420)에 그대로 저장되더라도 상기 커맨드에 포함된 디스크립터에 대한 보안은 유지될 수 있다. 스토리지 컨트롤러(410)는 파워 온 리셋 시에 서브 비휘발성 메모리(420)로부터 상기 암호화된 커맨드를 획득하고, 상기 암호화된 커맨드를 복호화한 후 상기 복호화된 커맨드를 이용하여 인터페이스 튜닝을 수행할 수 있다.Since the command received according to the security protocol may be an encrypted command, even if the command is stored as it is in the sub non-volatile memory 420 without additional encryption, security of the descriptor included in the command may be maintained. The storage controller 410 may obtain the encrypted command from the sub nonvolatile memory 420 during power-on reset, decrypt the encrypted command, and perform interface tuning using the decrypted command.

도 12는 도 11의 메인 비휘발성 메모리를 나타내는 예시적인 블록도이다. 도 12를 참조하면, 메인 비휘발성 메모리(500)는 제어 로직 회로(520), 메모리 셀 어레이(530), 페이지 버퍼(540), 전압 생성기(550), 및 로우 디코더(560)를 포함할 수 있다. 도 15에는 도시되지 않았으나, 메인 비휘발성 메모리(500)는 도 12에 도시된 메모리 인터페이스 회로(510)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.FIG. 12 is an exemplary block diagram illustrating a main non-volatile memory of FIG. 11 . Referring to FIG. 12 , the main nonvolatile memory 500 may include a control logic circuit 520, a memory cell array 530, a page buffer 540, a voltage generator 550, and a row decoder 560. there is. Although not shown in FIG. 15, the main non-volatile memory 500 may further include the memory interface circuit 510 shown in FIG. 12, and may also include a column logic, a pre-decoder, a temperature sensor, a command decoder, an address decoder, and the like. may further include.

제어 로직 회로(520)는 메인 비휘발성 메모리(500) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(520)는 메모리 인터페이스 회로(510)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(520)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The control logic circuit 520 may generally control various operations within the main nonvolatile memory 500 . The control logic circuit 520 may output various control signals in response to the command CMD and/or the address ADDR from the memory interface circuit 510 . For example, the control logic circuit 520 may output a voltage control signal CTRL_vol, a row address X-ADDR, and a column address Y-ADDR.

메모리 셀 어레이(530)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(530)는 비트 라인들(BL)을 통해 페이지 버퍼부(540)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(560)에 연결될 수 있다.The memory cell array 530 may include a plurality of memory blocks BLK1 to BLKz (where z is a positive integer), and each of the plurality of memory blocks BLK1 to BLKz may include a plurality of memory cells. there is. The memory cell array 530 may be connected to the page buffer unit 540 through bit lines BL, and may include word lines WL, string select lines SSL, and ground select lines GSL. It can be connected to the row decoder 560 through

예시적인 실시 예에서, 메모리 셀 어레이(530)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(530)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.In an exemplary embodiment, the memory cell array 530 may include a 3D memory cell array, and the 3D memory cell array may include a plurality of NAND strings. Each NAND string may include memory cells respectively connected to word lines vertically stacked on a substrate. U.S. Patent Publication No. 7,679,133, U.S. Patent Publication No. 8,553,466, U.S. Patent Publication No. 8,654,587, U.S. Patent Publication No. 8,559,235, and U.S. Patent Application Publication No. 2011/0233648 are incorporated herein by reference. are combined In an exemplary embodiment, the memory cell array 530 may include a 2D memory cell array, and the 2D memory cell array may include a plurality of NAND strings disposed along row and column directions.

페이지 버퍼(540)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(540)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 하나 이상의 비트 라인을 선택할 수 있다. 페이지 버퍼(540)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(540)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(540)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.The page buffer 540 may include a plurality of page buffers PB1 to PBn (where n is an integer greater than or equal to 3), and the plurality of page buffers PB1 to PBn may be configured through a plurality of bit lines BL. Each of the memory cells may be connected. The page buffer 540 may select one or more bit lines from among the bit lines BL in response to the column address Y-ADDR. The page buffer 540 may operate as a write driver or a sense amplifier according to an operation mode. For example, during a program operation, the page buffer 540 may apply a bit line voltage corresponding to data to be programmed to a selected bit line. During a read operation, the page buffer 540 may detect data stored in a memory cell by sensing a current or voltage of a selected bit line.

전압 생성기(550)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(550)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.The voltage generator 550 may generate various types of voltages for performing program, read, and erase operations based on the voltage control signal CTRL_vol. For example, the voltage generator 550 may generate a program voltage, a read voltage, a program verify voltage, an erase voltage, and the like as the word line voltage VWL.

로우 디코더(560)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(560)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다The row decoder 560 may select one of the plurality of word lines WL and select one of the plurality of string select lines SSL in response to the row address X-ADDR. For example, during a program operation, the row decoder 560 may apply a program voltage and a program verify voltage to a selected word line, and during a read operation, may apply a read voltage to the selected word line.

도 13은 본 발명의 일 실시 예에 따른 스토리지 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다. 13 is a diagram for explaining a 3D V-NAND structure applicable to a storage device according to an embodiment of the present invention.

스토리지 장치의 비휘발성 메모리가 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 비휘발성 메모리를 구성하는 복수의 메모리 블록 각각은 도 13에 도시된 바와 같은 등가 회로로 표현될 수 있다.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 expressed as an equivalent circuit as shown in FIG. 13 .

도 13에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.The memory block BLKi shown in FIG. 13 represents a three-dimensional memory block formed in a three-dimensional structure on a substrate. For example, a plurality of memory NAND strings included in the memory block BLKi may be formed in a direction perpendicular to the substrate.

도 13을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 13에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.Referring to FIG. 13 , the memory block BLKi may include a plurality of memory NAND strings NS11 to NS33 connected between the bit lines BL1 , BL2 , and BL3 and the common source line CSL. Each of the plurality of memory NAND strings NS11 to NS33 may include a string select transistor SST, a plurality of memory cells MC1, MC2, ..., MC8, and a ground select transistor GST. 13 shows that each of the plurality of memory NAND strings NS11 to NS33 includes eight memory cells MC1, MC2, ..., MC8, but is not necessarily limited thereto.

스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인들(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.The string select transistor SST may be connected to corresponding string select lines SSL1 , SSL2 , and SSL3 . The plurality of memory cells MC1 , MC2 , ..., MC8 may be connected to corresponding gate lines GTL1 , GTL2 , ... , and GTL8 , respectively. The gate lines GTL1 , GTL2 , ..., GTL8 may correspond to word lines, and some of the gate lines GTL1 , GTL2 , ... , GTL8 may correspond to dummy word lines. The ground select transistor GST may be connected to corresponding ground select lines GSL1 , GSL2 , and GSL3 . The string select transistor SST may be connected to corresponding bit lines BL1 , BL2 , and BL3 , and the ground select transistor GST may be connected to the common source line CSL.

동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 13에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.Word lines (eg, WL1) having the same height may be commonly connected, and ground select lines GSL1, GSL2, and GSL3 and string select lines SSL1, SSL2, and SSL3 may be separated from each other. 13 shows that the memory block BLK is connected to eight gate lines GTL1, GTL2, ..., GTL8 and three bit lines BL1, BL2, BL3, but is not necessarily limited thereto. no.

도 14는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템(1000)을 도시한 도면이다. 14 is a diagram illustrating a system 1000 to which a storage device according to an embodiment of the present invention is applied.

도 14의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 14의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.The system 1000 of FIG. 14 is basically a mobile phone such as a mobile phone, a smart phone, a tablet personal computer (PC), a wearable device, a healthcare device, or an internet of things (IOT) device. (mobile) system. However, the system 1000 of FIG. 14 is not necessarily limited to a mobile system, and can be used for vehicles such as a personal computer, a laptop computer, a server, a media player, or a navigation system. It may be an automotive device or the like.

도 14를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.Referring to FIG. 14 , a system 1000 may include a main processor 1100, memories 1200a and 1200b, and storage devices 1300a and 1300b, and additionally includes an image capturing device. 1410, user input device 1420, sensor 1430, communication device 1440, display 1450, speaker 1460, power supplying device 1470 and connections It may include one or more of the connecting interfaces 1480 .

메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The main processor 1100 may control the overall operation of the system 1000, and more specifically, the operation of other components constituting the system 1000. The main processor 1100 may be implemented as a general-purpose processor, a dedicated processor, or an application processor.

메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.The main processor 1100 may include one or more CPU cores 1110 and may further include a controller 1120 for controlling the memories 1200a and 1200b and/or the storage devices 1300a and 1300b. Depending on embodiments, the main processor 1100 may further include an accelerator 1130 that is a dedicated circuit for high-speed data operations such as artificial intelligence (AI) data operations. Such an accelerator 1130 may include a graphics processing unit (GPU), a neural processing unit (NPU), and/or a data processing unit (DPU), and may be physically independent from other components of the main processor 1100. It may be implemented as a separate chip.

메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The memories 1200a and 1200b may be used as main memory devices of the system 1000 and may include volatile memories such as SRAM and/or DRAM, but may include non-volatile memories such as flash memory, PRAM, and/or RRAM. may be The memories 1200a and 1200b may also be implemented in the same package as the main processor 1100 .

스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. The storage devices 1300a and 1300b may function as non-volatile storage devices that store data regardless of whether or not power is supplied, and may have a relatively large storage capacity compared to the memories 1200a and 1200b. The storage devices 1300a and 1300b may include storage controllers 1310a and 1310b and non-volatile memories (NVMs) 1320a and 1320b that store data under the control of the storage controllers 1310a and 1310b. can The non-volatile memories 1320a and 1320b may include a 2D (2-dimensional) structure or a 3D (3-dimensional) V-NAND (vertical NAND) structure flash memory, but other types of memory such as PRAM and/or RRAM. It may also include non-volatile memory.

스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.The storage devices 1300a and 1300b may be included in the system 1000 while being physically separated from the main processor 1100 or may be implemented in the same package as the main processor 1100 . In addition, the storage devices 1300a and 1300b have a form such as a solid state device (SSD) or a memory card, so that other components of the system 1000 can be accessed through an interface such as a connection interface 1480 to be described later. It may be coupled to be detachable with the . The storage devices 1300a and 1300b may be devices to which standard rules such as UFS (Universal Flash Storage), eMMC (embedded multi-media card), or NVMe (non-volatile memory express) are applied, but are not necessarily limited thereto. It's not.

본 발명의 실시 예에 따르면, 스토리지 장치(1300a, 1300b)는 정해진 인터페이스 프로토콜을 준수하는 파라미터 변경 커맨드를 지원할 수 있다. 메인 프로세서(1100)는 스토리지 장치(1300a, 1300b)와의 연결 특성에 대한 최적 파라미터 값을 포함하는 파라미터 변경 커맨드를 스토리지 장치(1300a, 1300b)로 제공함으로써 스토리지 장치(1300a, 1300b) 내부에 저장된 파라미터 값을 용이하게 변경할 수 있다. 따라서, 메인 프로세서(1100)와 스토리지 장치(1300a, 1300b)간의 신호 전송 품질이 향상될 수 있다.According to an embodiment of the present invention, the storage devices 1300a and 1300b may support a parameter change command conforming to a predetermined interface protocol. The main processor 1100 provides a parameter change command including an optimal parameter value for connection characteristics with the storage devices 1300a and 1300b to the storage devices 1300a and 1300b, thereby changing the parameter values stored in the storage devices 1300a and 1300b. can be easily changed. Accordingly, signal transmission quality between the main processor 1100 and the storage devices 1300a and 1300b may be improved.

촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing device 1410 may capture a still image or a video, and may be a camera, a camcorder, and/or a webcam.

사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The user input device 1420 may receive various types of data input from a user of the system 1000, and may use a touch pad, a keypad, a keyboard, a mouse, and/or It may be a microphone or the like.

센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. The sensor 1430 can detect various types of physical quantities that can be acquired from the outside of the system 1000 and convert the detected physical quantities into electrical signals. The sensor 1430 may be a temperature sensor, a pressure sensor, an illuminance sensor, a position sensor, an acceleration sensor, a biosensor, and/or a gyroscope sensor.

통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The communication device 1440 may transmit and receive signals with other devices outside the system 1000 according to various communication protocols. Such a communication device 1440 may be implemented by including an antenna, a transceiver, and/or a modem (MODEM).

디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The display 1450 and the speaker 1460 may function as output devices that output visual information and auditory information to the user of the system 1000, respectively.

전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The power supply device 1470 may appropriately convert power supplied from a battery (not shown) and/or an external power source built into the system 1000 and supply the power to each component of the system 1000 .

연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다. The connection interface 1480 may provide a connection between the system 1000 and an external device connected to the system 1000 and capable of exchanging data with the system 1000. The connection interface 1480 is an Advanced Technology (ATA) Attachment), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection (PCI), PCI express (PCIe), NVMe, IEEE 1394, It can be implemented in various interface methods such as USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC, UFS, eUFS (embedded universal flash storage), CF (compact flash) card interface, etc. there is.

본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.The present invention is not limited by the above-described embodiments and accompanying drawings, but is intended to be limited by the appended claims. Therefore, various forms of substitution, modification, and change will be possible by those skilled in the art within the scope of the technical spirit of the present invention described in the claims, which also falls within the scope of the present invention. something to do.

100, 300: 호스트
200, 400: 스토리지 장치
210, 410: 스토리지 컨트롤러
220, 420: 서브 비휘발성 메모리
230, 430: 버퍼 메모리
240, 440: 메인 비휘발성 메모리
100, 300: host
200, 400: storage device
210, 410: storage controller
220, 420: sub non-volatile memory
230, 430: buffer memory
240, 440: main non-volatile memory

Claims (20)

스토리지 장치에 있어서,
메인 비휘발성 메모리; 및
정해진 인터페이스 프로토콜에 따라 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하는 컨트롤러를 포함하며,
상기 컨트롤러는
상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하고, 상기 호스트로부터 상기 인터페이스 프로토콜에 따른 파라미터 변경 커맨드를 수신하고, 각각이 변경하려는 타겟 파라미터에 대응하는 SFR 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 상기 파라미터 변경 커맨드로부터 추출하고, 상기 하나 이상의 디스크립터를 실행하여 상기 SFR에 상기 파라미터 값을 기록함으로써 인터페이스를 튜닝하며,
상기 파라미터 변경 커맨드는
상기 파라미터 변경 커맨드의 만료조건 정보를 포함하는
스토리지 장치.
In the storage device,
main non-volatile memory; and
A controller communicating with a host according to a predetermined interface protocol and controlling the main non-volatile memory;
The controller
It includes a special function register (SFR) for storing parameters representing connection characteristics with the host, receives a parameter change command according to the interface protocol from the host, and each SFR address and parameter corresponding to a target parameter to be changed. tune an interface by extracting one or more descriptors containing values from the parameter change command and executing the one or more descriptors to write the parameter values to the SFR;
The parameter change command is
Including expiration condition information of the parameter change command
storage device.
삭제delete 제1항에 있어서,
상기 만료조건 정보는
상기 스토리지 장치의 파워 사이클링(power cycling) 횟수 정보를 포함하며,
상기 컨트롤러는
상기 호스트로부터 상기 파라미터 변경 커맨드가 수신된 후 상기 파워 사이클링 횟수만큼 파워 사이클이 반복되면 상기 파라미터 변경 커맨드를 만료시키는
스토리지 장치.
According to claim 1,
The above expiration condition information
Includes information on the number of power cycling of the storage device;
The controller
Expiring the parameter change command when power cycles are repeated as many times as the number of power cycling after receiving the parameter change command from the host.
storage device.
제1항에 있어서,
상기 하나 이상의 디스크립터 각각은
상기 호스트와의 연결을 제어하는 펌웨어 소스 코드에서 상기 타겟 파라미터가 적용되는 코드 블록을 나타내는, 그룹 정보를 더 포함하는
스토리지 장치.
According to claim 1,
Each of the one or more descriptors is
Further comprising group information indicating a code block to which the target parameter is applied in the firmware source code for controlling the connection with the host
storage device.
제1항에 있어서,
상기 하나 이상의 디스크립터는 상기 파라미터 변경 커맨드에서 그룹 정보에 기초하여 나열되고,
상기 컨트롤러는
상기 파라미터 변경 커맨드에서 상기 하나 이상의 디스크립터가 나열된 순서대로 상기 SFR에 상기 파라미터 값을 기록하는
스토리지 장치.
According to claim 1,
The one or more descriptors are listed based on group information in the parameter change command,
The controller
Recording the parameter values in the SFR in the order in which the one or more descriptors are listed in the parameter change command
storage device.
제1항에 있어서,
상기 스토리지 장치는
상기 컨트롤러의 동작에 필요한 데이터를 저장하는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 수신된 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
According to claim 1,
the storage device
Further comprising a sub non-volatile memory for storing data necessary for the operation of the controller,
The controller
Storing the received parameter change command in the sub non-volatile memory
storage device.
제6항에 있어서,
상기 컨트롤러는
전원 공급이 감지되면 상기 메인 비휘발성 메모리로부터 획득한 부트 로더를 이용하여 상기 SFR을 초기화하고, 상기 서브 비휘발성 메모리에 저장된 파라미터 변경 커맨드의 만료조건 정보에 기초하여 상기 파라미터 변경 커맨드의 만료 여부를 결정하고, 상기 파라미터 변경 커맨드가 만료되지 않은 경우 상기 파라미터 변경 커맨드로부터 상기 하나 이상의 디스크립터를 추출하고, 상기 하나 이상의 디스크립터를 실행하여 상기 SFR에 상기 파라미터 값을 덮어쓰기함으로써 상기 인터페이스를 튜닝하는
스토리지 장치.
According to claim 6,
The controller
When power supply is detected, the SFR is initialized using a boot loader obtained from the main non-volatile memory, and based on expiration condition information of the parameter change command stored in the sub non-volatile memory, whether the parameter change command expires is determined. and tuning the interface by extracting the one or more descriptors from the parameter change command if the parameter change command has not expired, and overwriting the parameter values in the SFR by executing the one or more descriptors.
storage device.
제6항에 있어서,
상기 스토리지 장치는
상기 메인 비휘발성 메모리로부터 독출되는 데이터를 버퍼링한 후 상기 컨트롤러로 제공하는 버퍼 메모리를 더 포함하고,
상기 컨트롤러는
상기 버퍼 메모리를 경유하지 않고 상기 서브 비휘발성 메모리에 저장된 파라미터 변경 커맨드를 직접 획득하는
스토리지 장치.
According to claim 6,
the storage device
Further comprising a buffer memory buffering data read from the main non-volatile memory and providing the data to the controller;
The controller
Acquiring a parameter change command stored in the sub non-volatile memory directly without going through the buffer memory
storage device.
제1항에 있어서,
상기 수신된 파라미터 변경 커맨드는 암호화(encrypt)된 커맨드이며,
상기 컨트롤러는
상기 파라미터 변경 커맨드로부터 상기 하나 이상의 디스크립터를 추출하기 전에, 상기 암호화된 커맨드를 복호화(decrypt)하는
스토리지 장치.
According to claim 1,
The received parameter change command is an encrypted command,
The controller
Decrypting the encrypted command before extracting the one or more descriptors from the parameter change command.
storage device.
제9항에 있어서,
상기 스토리지 장치는
상기 컨트롤러의 동작에 필요한 데이터를 저장하는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 암호화된 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
According to claim 9,
the storage device
Further comprising a sub non-volatile memory for storing data necessary for the operation of the controller,
The controller
Storing the encrypted command in the sub non-volatile memory
storage device.
제1항에 있어서,
상기 인터페이스 프로토콜은
PCIe(Peripheral Component Interconnect Express)인
스토리지 장치.
According to claim 1,
The interface protocol is
Peripheral Component Interconnect Express (PCIe)
storage device.
제11항에 있어서,
상기 파라미터 변경 커맨드는
NVMe(Non-Volatile Memory Express) 관리자(Admin) 커맨드인
스토리지 장치.
According to claim 11,
The parameter change command is
NVMe (Non-Volatile Memory Express) Admin command
storage device.
스토리지 장치에 있어서,
메인 비휘발성 메모리; 및
정해진 인터페이스 프로토콜에 따라 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하는 컨트롤러를 포함하며,
상기 컨트롤러는
상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하고, 상기 호스트로부터의 파라미터 변경 커맨드에 응하여 상기 SFR에 포함된 파라미터의 값을 변경함으로써 인터페이스를 튜닝하며,
상기 SFR은 상기 인터페이스 프로토콜에서 호스트의 접근을 지원하지 않는 영역이고,
상기 파라미터 변경 커맨드는
상기 파라미터 변경 커맨드의 만료조건 정보를 포함하는
스토리지 장치.
In the storage device,
main non-volatile memory; and
A controller communicating with a host according to a predetermined interface protocol and controlling the main non-volatile memory;
The controller
a special function register (SFR) for storing parameters representing connection characteristics with the host, and tuning an interface by changing parameter values included in the SFR in response to a parameter change command from the host;
The SFR is an area that does not support access by a host in the interface protocol,
The parameter change command is
Including expiration condition information of the parameter change command
storage device.
제13항에 있어서,
상기 스토리지 장치는
상기 컨트롤러가 임의의 어드레스를 이용하여 직접 접근할 수 있는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
According to claim 13,
the storage device
Further comprising a sub non-volatile memory that the controller can directly access using an arbitrary address,
The controller
Storing the parameter change command in the sub non-volatile memory
storage device.
제14항에 있어서,
상기 컨트롤러는
상기 메인 비휘발성 메모리로부터 획득한 부트 로더를 이용하여 상기 SFR을 초기화하고, 상기 서브 비휘발성 메모리에 저장된 파라미터 변경 커맨드가 만료되지 않은 경우 상기 파라미터 변경 커맨드에 기초하여 상기 SFR에 포함된 파라미터의 값을 변경함으로써 인터페이스를 튜닝하는
스토리지 장치.
According to claim 14,
The controller
The SFR is initialized using the boot loader obtained from the main non-volatile memory, and the parameter value included in the SFR is changed based on the parameter change command when the parameter change command stored in the sub non-volatile memory has not expired. Tuning the interface by changing
storage device.
스토리지 장치에 있어서,
메인 비휘발성 메모리;
정해진 인터페이스 프로토콜을 이용하여 호스트와 통신하고, 상기 메인 비휘발성 메모리를 제어하며, 상기 호스트와의 연결 특성을 나타내는 파라미터들을 저장하는 SFR(Special Function Register)을 포함하는 컨트롤러;
상기 메인 비휘발성 메모리로부터 독출되는 데이터를 버퍼링한 후 상기 컨트롤러로 제공하는 버퍼 메모리; 및
상기 컨트롤러의 동작에 필요한 데이터를 저장하고, 어드레스를 이용하여 상기 컨트롤러에 의해 직접 접근되는 서브 비휘발성 메모리를 포함하고,
상기 컨트롤러는
전원 공급이 감지되면 상기 메인 비휘발성 메모리의 부트 영역에 저장된 부트 로더를 상기 버퍼 메모리로 로드하고, 상기 버퍼 메모리에 로드된 부트 로더를 이용하여 상기 SFR을 초기화하고, 상기 서브 비휘발성 메모리로부터 각각이 SFR 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 획득하고, 상기 획득된 디스크립터를 실행하여 상기 SFR을 업데이트함으로써 인터페이스를 튜닝하는
스토리지 장치.
In the storage device,
main non-volatile memory;
a controller including a special function register (SFR) that communicates with a host using a predetermined interface protocol, controls the main non-volatile memory, and stores parameters representing connection characteristics with the host;
a buffer memory buffering data read from the main non-volatile memory and providing the data to the controller; and
A sub non-volatile memory for storing data necessary for the operation of the controller and directly accessed by the controller using an address;
The controller
When power supply is sensed, the boot loader stored in the boot area of the main non-volatile memory is loaded into the buffer memory, the SFR is initialized using the boot loader loaded in the buffer memory, and each from the sub non-volatile memory is Tuning an interface by obtaining one or more descriptors including SFR addresses and parameter values, and executing the acquired descriptors to update the SFRs.
storage device.
제16항에 있어서,
상기 컨트롤러는
호스트로부터 하나 이상의 디스크립터를 포함하는 파라미터 변경 커맨드를 수신하면, 상기 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
According to claim 16,
The controller
When receiving a parameter change command including one or more descriptors from the host, storing the parameter change command in the sub non-volatile memory.
storage device.
제17항에 있어서,
상기 수신된 파라미터 변경 커맨드는 암호화(encrypt)된 커맨드이며,
상기 컨트롤러는
상기 암호화된 커맨드를 상기 서브 비휘발성 메모리에 저장하며, 상기 서브 비휘발성 메모리에 저장된 상기 암호화된 커맨드를 복호화(decrypt)함으로써 상기 하나 이상의 디스크립터를 획득하는
스토리지 장치.
According to claim 17,
The received parameter change command is an encrypted command,
The controller
Obtaining the one or more descriptors by storing the encrypted command in the sub nonvolatile memory and decrypting the encrypted command stored in the sub nonvolatile memory.
storage device.
제17항에 있어서,
상기 파라미터 변경 커맨드는 파워 사이클링(power cycling) 횟수 정보를 더 포함하며,
상기 컨트롤러는
상기 파라미터 변경 커맨드가 수신된 후 상기 스토리지 장치가 상기 파워 사이클링 횟수만큼 파워 사이클을 반복하면, 상기 파라미터 변경 커맨드를 만료시키는
스토리지 장치.
According to claim 17,
The parameter change command further includes power cycling number information,
The controller
Expiring the parameter change command when the storage device repeats power cycles as many times as the number of power cycling after receiving the parameter change command.
storage device.
제16항에 있어서,
상기 서브 비휘발성 메모리는
SNOR(Serial NOR) 메모리 및 EEPROM(Electrically Erasable Programmable Read-Only Memory) 중 적어도 어느 하나이고,
상기 메인 비휘발성 메모리는
NAND 플래시 메모리인
스토리지 장치.

According to claim 16,
The sub non-volatile memory is
At least one of SNOR (Serial NOR) memory and EEPROM (Electrically Erasable Programmable Read-Only Memory),
The main non-volatile memory is
NAND flash memory
storage device.

KR1020220016769A 2021-11-15 2022-02-09 Storage device KR102509646B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/835,761 US20230152993A1 (en) 2021-11-15 2022-06-08 Storage device
EP22186674.2A EP4180977A1 (en) 2021-11-15 2022-07-25 Parameter change command for storage device interface tuning
CN202211409308.2A CN116126755A (en) 2021-11-15 2022-11-10 Storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210156418 2021-11-15
KR20210156418 2021-11-15

Publications (1)

Publication Number Publication Date
KR102509646B1 true KR102509646B1 (en) 2023-03-15

Family

ID=85512202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220016769A KR102509646B1 (en) 2021-11-15 2022-02-09 Storage device

Country Status (1)

Country Link
KR (1) KR102509646B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150145854A (en) * 2014-06-19 2015-12-31 삼성전자주식회사 Host controller and system-on-chip
KR20170007103A (en) * 2015-07-08 2017-01-18 삼성전자주식회사 METHOD FOR IMPLEMENTING RDMA NVMe DEVICE
KR20170047999A (en) * 2015-10-26 2017-05-08 삼성전자주식회사 Semiconductor device having register sets and data processing device including the same
KR20170055748A (en) * 2015-11-12 2017-05-22 삼성전자주식회사 Multi-Processor System Including Memory Shared By Multi-Processor And Method there-of
KR20200088564A (en) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 Controller, operation method of controller, and memory system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150145854A (en) * 2014-06-19 2015-12-31 삼성전자주식회사 Host controller and system-on-chip
KR20170007103A (en) * 2015-07-08 2017-01-18 삼성전자주식회사 METHOD FOR IMPLEMENTING RDMA NVMe DEVICE
KR20170047999A (en) * 2015-10-26 2017-05-08 삼성전자주식회사 Semiconductor device having register sets and data processing device including the same
KR20170055748A (en) * 2015-11-12 2017-05-22 삼성전자주식회사 Multi-Processor System Including Memory Shared By Multi-Processor And Method there-of
KR20200088564A (en) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 Controller, operation method of controller, and memory system

Similar Documents

Publication Publication Date Title
US10891236B2 (en) Data storage device and operating method thereof
TW201716980A (en) Data storage device and operating method thereof
KR20170105760A (en) Data storage device and operating method thereof
KR20200095103A (en) Data storage device and operating method thereof
KR20200085967A (en) Data storage device and operating method thereof
KR20200049051A (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
KR20220085455A (en) Storage device and storage system including the same
KR20170094674A (en) Data storage device
EP4180977A1 (en) Parameter change command for storage device interface tuning
KR20200089939A (en) Memory system and operating method thereof
KR20190106005A (en) Memory system, operating method thereof and electronic apparatus
US20230195324A1 (en) Storage device
CN111913908A (en) Storage system with replay attack countermeasure and method of operating the same
KR102509646B1 (en) Storage device
KR20170109344A (en) Data storage device and operating method thereof
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
KR20230094110A (en) Storage device
KR20220122826A (en) Nonvolatile memory device, memory controller, and method of reading of storage device comprising the same
CN114254402A (en) Data storage device and operation method thereof
KR102557992B1 (en) Memory controller, storage device, and operating method of storage device
KR20200128825A (en) Storage system with separated rpmb sub-systems and method of operating the same
KR102545465B1 (en) Storage controller and storage device comprising the same
US11822800B2 (en) Storage system including host and storage device and operation method thereof
KR20190037659A (en) Nonvolatile memory device, operating method thereof and data storage device having the same
US20230195333A1 (en) Storage device and operation method of electronic system

Legal Events

Date Code Title Description
GRNT Written decision to grant