KR102509646B1 - Storage device - Google Patents
Storage device Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 244
- 230000006870 function Effects 0.000 claims abstract description 15
- 239000000872 buffer Substances 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 10
- 230000001351 cycling effect Effects 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims 5
- 238000000034 method Methods 0.000 abstract description 6
- 239000000284 extract Substances 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 9
- 101100449814 Arabidopsis thaliana GTL1 gene Proteins 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 2
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 2
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 2
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 2
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 2
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 101150062870 ssl3 gene Proteins 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI 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
Description
본 발명은 비휘발성 메모리를 포함하는 스토리지 장치에 관한 것이다.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
호스트(100)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 다양한 유형의 전자 장치들을 포함할 수 있다.The
스토리지 장치(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
스토리지 장치(200)는 호스트(100)와 정해진 인터페이스 프로토콜에 따라 통신할 수 있다. 예를 들어, 스토리지 장치(200)와 호스트(100)는 PCIe(Peripheral Component Interconnect Express) 프로토콜에 따라 통신할 수 있다. 호스트(100)는 정해진 인터페이스 프로토콜에 따라 스토리지 장치(200)와 통신을 수행하기 위한 스토리지 인터페이스(111)를 포함할 수 있으며, 스토리지 장치(200)는 정해진 인터페이스 프로토콜에 따라 호스트(100)와 통신을 수행하기 위한 호스트 인터페이스(211)를 포함할 수 있다.The
다양한 유형의 전자 장치들과 스토리지 장치들이 정해진 인터페이스 프로토콜에 따라 통신할 수 있다. 서로 통신하는 호스트(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
스토리지 장치(200)는 호스트(100)와의 연결 특성을 정의하는 다양한 파라미터들을 가질 수 있다. 스토리지 장치(200)는 파라미터들의 값을 최적화함으로써 호스트(100)와의 연결 특성을 최적화할 수 있다. 스토리지 장치(200)가 연결 특성을 최적화하는 동작은, 인터페이스 튜닝 동작으로 지칭될 수도 있다.The
만약 스토리지 장치(200)가 외부로부터 최적화된 파라미터 값들을 획득하고, 상기 획득된 파라미터 값들을 내부 파라미터에 그대로 적용할 수 있다면, 스토리지 장치(200)는 신속하고 용이하게 인터페이스 튜닝을 수행할 수 있다. 예를 들어, 스토리지 장치(200)의 제조사(vendor)가 연결 환경에 따른 최적 파라미터 값들을 찾을 수 있다. 그리고 스토리지 장치(200)가 상기 최적 파라미터 값들을 외부로부터 전달받아서 내부 파라미터에 적용한다면, 스토리지 장치(200)는 최적화된 파라미터 값을 직접 찾지 않고도 연결 특성을 최적화할 수 있다. If the
스토리지 장치(200)는 파라미터 값들을 저장하는 레지스터를 포함할 수 있다. 호스트(100)와 스토리지 장치(200) 간의 통신을 위한 인터페이스 프로토콜은, 상기 호스트(100)가 레지스터에 접근하기 위한 인터페이스를 제공하지 않을 수 있다. 만약 스토리지 장치(200)에 최적 파라미터 값을 적용하기 위해 제조사가 상기 최적화된 파라미터 값이 적용된 펌웨어를 제작하고 스토리지 장치(200)에 펌웨어 업데이트를 지원해야 한다면, 상기 최적 파라미터 값을 적용하는 것에 어려움이 있다.The
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 파라미터 변경 커맨드를 지원할 수 있다. 예를 들어, 스토리지 장치(200)가 NVMe(Non-Volatile Memory Express) 규격을 따르는 경우, 상기 파라미터 변경 커맨드는 NVMe 관리자(Admin) 커맨드일 수 있다. 상기 파라미터 변경 커맨드는, 변경하려는 타겟 파라미터에 대응하는 레지스터 어드레스 및 파라미터 값을 포함하는 하나 이상의 디스크립터를 포함할 수 있다. According to an embodiment of the present invention, the
스토리지 장치(200)는 호스트(100)로부터 파라미터 변경 커맨드를 수신하면, 상기 파라미터 변경 커맨드에 포함된 레지스터 어드레스 영역에 파라미터 값을 기록함으로써 인터페이스를 튜닝할 수 있다. 따라서, 호스트(100)가 인터페이스 프로토콜에 따라 레지스터에 접근할 수 없는 경우에도 스토리지 장치(200)는 외부의 최적 파라미터 값을 이용하여 인터페이스를 튜닝할 수 있다.When receiving a parameter change command from the
도 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
스토리지 컨트롤러(210)는 호스트(100)의 요청에 따라 메인 비휘발성 메모리(240)를 제어할 수 있다. 스토리지 컨트롤러(210)는 메인 비휘발성 메모리(240)로 제어 신호를 전송하고, 메인 비휘발성 메모리(240)와 데이터를 교환할 수 있다. The
스토리지 컨트롤러(210)는 특수 기능 레지스터(SFR: Special Function Register, 219)를 포함할 수 있다. SFR(219)은 인터페이스 프로토콜에 따른 호스트(100)와의 연결 특성을 나타내는 파라미터 값들을 저장할 수 있는 저장 영역을 포함할 수 있다. 한편, 상기 인터페이스 프로토콜에서 호스트(100)가 SFR(219)에 접근하는 것은 지원되지 않을 수 있다.The
메인 비휘발성 메모리(240)는 스토리지 컨트롤러(210)의 제어에 따라 리드, 프로그램 및 이레이즈 동작을 수행할 수 있다. 메인 비휘발성 메모리(240)는 NAND 플래시 메모리를 포함할 수 있다. 그러나, 본 발명은 메인 비휘발성 메모리(240)가 NAND 플래시 메모리를 포함하는 것으로 제한되지 않으며, 메인 비휘발성 메모리(240)는 PRAM, MRAM, RRAM, FeRAM 등과 같은 다양한 비휘발성 메모리들 중 적어도 하나를 포함할 수 있다.The main
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 호스트(100)와 통신하기 위한 인터페이스 프로토콜을 통해 호스트(100)로부터 파라미터 변경 커맨드를 수신할 수 있다. 스토리지 컨트롤러(210)는 호스트(100)로부터 수신된 파라미터 변경 커맨드에 응하여 SFR(219)의 저장 영역에 파라미터 값을 저장함으로써 인터페이스 튜닝을 수행할 수 있다. According to an embodiment of the present invention, the
도 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
파라미터 변경 커맨드에서 복수의 디스크립터들은 복수의 타겟 파라미터를 효율적으로 변경할 수 있는 순서대로 나열될 수 있다. 예를 들어, 복수의 디스크립터들은 그룹 순서대로 나열될 수 있다. 예를 들어, 그룹 순서는 호스트와의 연결을 제어하는 펌웨어 소스 코드에서 코드 블록들이 실행되는 순서일 수 있다. 스토리지 장치는 정해진 순서대로 실행되는 코드 블록들에 적용되는 타겟 파라미터들을 변경하기 위해, 그룹 순서대로 나열된 복수의 디스크립터들을 단순히 나열된 순서대로 실행할 수 있다. 따라서, 복수의 타겟 파라미터들을 변경하기 위해 요구되는 연산량이 감소할 수 있다.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
스토리지 컨트롤러(210)는 SFR(219)를 포함할 수 있다. 도 3을 참조하여 설명된 것과 같이, SFR(219)는 호스트와의 연결 특성을 정의하는 파라미터들을 포함할 수 있다.The
메인 비휘발성 메모리(240)는 호스트로부터의 데이터를 저장하기 위한 노멀 영역뿐만 아니라, 부트 영역(241)을 더 포함할 수 있다. 부트 영역(241)은 스토리지 장치(200)의 부팅에 필요한 데이터인 부트 로더를 저장할 수 있다. 부트 영역(241)은 스토리지 장치(200)의 파워 온 리셋 시에, 스토리지 컨트롤러(210)에 의해 접근될 수 있다. 부트 영역(241)은 부트 블록, 부트 섹터 등으로 지칭될 수도 있으며, 예를 들어 4KB 정도의 제한된 크기를 가질 수 있다. The main
서브 비휘발성 메모리(220)는 스토리지 컨트롤러(210)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 서브 비휘발성 메모리(220)는 EEPROM, NOR 플래시 메모리, SNOR(Serial NOR) 플래시 메모리 등을 포함할 수 있다. 구현에 따라, 서브 비휘발성 메모리(220)는 수 MB 정도의 크기를 가질 수 있다.The sub
버퍼 메모리(230)는 메인 비휘발성 메모리(240)에 프로그램될 데이터를 버퍼링하거나, 메인 비휘발성 메모리(240)로부터 독출된 데이터를 버퍼링할 수 있다. 버퍼 메모리(230)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 버퍼 메모리(230)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다.The
한편, 메인 비휘발성 메모리(240)가 NAND 플래시 메모리인 경우, 스토리지 컨트롤러(210)에 의해 메인 비휘발성 메모리(240)의 임의 어드레스에 대한 데이터 리드 및 라이트가 어려울 수 있다. 예를 들어, NAND 플래시 메모리에서는 하나의 워드라인에 연결된 메모리 셀들의 집합인 페이지 단위로 데이터가 리드될 수 있다. 스토리지 컨트롤러(210)는 메인 비휘발성 메모리(240)에 저장된 데이터를 페이지 단위로 리드하도록 제어할 수 있으며, 메인 비휘발성 메모리(240)에 저장된 데이터는 버퍼 메모리(230)에 버퍼링된 후에 스토리지 컨트롤러(210)에 의해 이용될 수 있다.Meanwhile, when the main
반면에, 서브 비휘발성 메모리(220)에서는 스토리지 컨트롤러(210)에 의해 임의의 어드레스에 대한 데이터 리드, 라이트가 가능할 수 있다. 구체적으로, 스토리지 컨트롤러(210)는 외부 어드레스를 이용하여 서브 비휘발성 메모리(220)의 로우 어드레스 및 컬럼 어드레스를 특정함으로써 한 개의 메모리 셀을 선택할 수 있다. On the other hand, in the sub
앞서 설명된 바와 같이, 스토리지 장치(200) 내에 파라미터 변경 커맨드가 저장되고, 스토리지 장치(200)의 파워 온 리셋 시, 즉 부팅 동작 시에 상기 파라미터 변경 커맨드를 이용하여 인터페이스 튜닝을 수행할 수 있다. 파라미터 변경 커맨드는 부팅 동작 시에 신속하게 접근될 수 있는 것이 바람직하다. 그러나, 부트 영역(241)의 크기는 제한적일 수 있으며, 부트 영역(241)의 크기 제한을 완화하기 위해서는 스토리지 장치의 펌웨어 설계가 크게 수정되어야 할 수 있다. As described above, a parameter change command is stored in the
따라서, 파라미터 변경 커맨드를 부트 영역(241)에 부트 로더와 함께 저장하고, 부팅 동작 시에 부트 로더와 파라미터 변경 커맨드를 함께 로드하는 것은 어려울 수 있다. 그리고, 파라미터 변경 커맨드를 비휘발성 메모리 장치(240)의 노멀 영역에 저장하고, 부팅 동작 시에 상기 부트 영역(241)뿐만 아니라 노멀 영역에 접근하는 것은 부팅 완료 시간을 지연시킬 수 있다.Accordingly, it may be difficult to store the parameter change command together with the boot loader in the
본 발명의 실시 예에 따르면, 스토리지 컨트롤러(210)는 파라미터 변경 커맨드를 서브 비휘발성 메모리(220)에 저장하고, 부팅 동작 시에 상기 파라미터 변경 커맨드를 서브 비휘발성 메모리(220)로부터 획득할 수 있다. 메인 비휘발성 메모리(240)는 스토리지 컨트롤러(210)에 의해 직접 접근되기 어려운 반면, 서브 비휘발성 메모리(220)는 어드레스를 이용하여 스토리지 컨트롤러(210)에 의해 쉽게 접근될 수 있다. 따라서, 스토리지 컨트롤러(210)는 파라미터 변경 커맨드를 신속하게 획득하고, 부팅 동작 시에 인터페이스 튜닝을 신속하게 수행할 수 있다.According to an embodiment of the present invention, the
이하에서, 본 발명의 실시 예에 따라 스토리지 장치(200)가 파라미터 변경 커맨드를 저장하고, 파워 온 리셋 시에 파라미터 변경 커맨드를 이용하는 방법이 도 9 내지 도 10을 참조하여 자세히 설명된다. Hereinafter, a method of storing a parameter change command in the
도 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
스토리지 장치(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
메인 비휘발성 메모리(440)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메인 비휘발성 메모리(440)는 프로그램 동작을 통해 호스트(300)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 메인 비휘발성 메모리(440)에 저장된 데이터를 출력할 수 있다. The main
메인 비휘발성 메모리(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
스토리지 컨트롤러(410)는 호스트(300)로부터의 요청에 응답하여 메인 비휘발성 메모리(440)를 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)로부터 리드된 데이터를 호스트(300)로 제공하고, 호스트(300)로부터 제공된 데이터를 메인 비휘발성 메모리(440)에 저장할 수 있다. 이러한 동작을 위해, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 지원할 수 있다.The
서브 비휘발성 메모리(420)는 스토리지 컨트롤러(410)의 동작에 필요한 데이터를 저장할 수 있다. 서브 비휘발성 메모리(420)는 어드레스를 이용하여 스토리지 컨트롤러(410)에 의해 직접 액세스될 수 있다. 서브 비휘발성 메모리(420)는 EEPROM, NOR 플래시 메모리, SNOR(Serial NOR) 플래시 메모리 등을 포함할 수 있다.The sub
버퍼 메모리(430)는 메인 비휘발성 메모리(440)에 프로그램될 데이터를 버퍼링하거나, 메인 비휘발성 메모리(440)로부터 독출된 데이터를 버퍼링할 수 있다.The
스토리지 컨트롤러(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
호스트 인터페이스(411)는 정해진 인터페이스 프로토콜을 통해 호스트(300)와 패킷(packet)을 송수신할 수 있다. 호스트(300)로부터 호스트 인터페이스(411)로 전송되는 패킷은 커맨드(command) 혹은 메인 비휘발성 메모리(440)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(411)로부터 호스트(300)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 메인 비휘발성 메모리(440)로부터 독출된 데이터 등을 포함할 수 있다.The
메인 메모리 인터페이스(412)는 메인 비휘발성 메모리(440)에 기록될 데이터를 메인 비휘발성 메모리(440)로 송신하거나, 메인 비휘발성 메모리(440)로부터 독출된 데이터를 수신할 수 있다. 이러한 메인 메모리 인터페이스(412)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The
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)는 스토리지 장치(400)의 동작을 위해 사용되는 파라미터 값들을 저장하기 위한 SFR(419)을 포함할 수 있다. 예를 들어, SFR(419)은 호스트와의 연결 특성을 나타내는 파라미터들을 저장할 수 있다.Meanwhile, the
패킷 매니저(414)는 호스트(300)와 협의된 인터페이스 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(300)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. The
서브 메모리 인터페이스(415)는 스토리지 컨트롤러(410) 외부에 배치되는 서브 비휘발성 메모리(420)와 데이터를 송수신할 수 있다. 그리고, 버퍼 메모리 인터페이스(416)는 스토리지 컨트롤러(410) 외부에 배치되는 버퍼 메모리(430)와 데이터를 송수신할 수 있다. 도 11의 예에서 서브 비휘발성 메모리(420) 및 버퍼 메모리(430)는 스토리지 컨트롤러(410)의 외부에 배치될 수 있으나, 스토리지 컨트롤러(410)의 내부에 배치되어도 무방하다.The
ECC부(417)는 메인 비휘발성 메모리(440)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC부(417)는 메인 비휘발성 메모리(440)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 메인 비휘발성 메모리(440) 내에 저장될 수 있다. 메인 비휘발성 메모리(440)로부터의 데이터 독출 시, ECC부(417)는 독출 데이터와 함께 메인 비휘발성 메모리(440)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The
AES 엔진(418)은, 스토리지 컨트롤러(410)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다. 예를 들어, AES 엔진(418)은 스토리지 컨트롤러(410)가 시큐리티 프로토콜에 따라 수신한 커맨드를 복호화할 수 있다. The
한편, 스토리지 컨트롤러(410)는 메인 비휘발성 메모리(440)에 저장되는 데이터를 암호화하기 위한 암호화 엔진을 더 포함할 수 있다. 그러나, 스토리지 컨트롤러(410)는 서브 비휘발성 메모리(420)에 저장되는 데이터는 암호화하지 않고 평문으로 저장할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 컨트롤러(410)는 시큐리티 프로토콜에 따라 수신한 커맨드를 서브 비휘발성 메모리(420)에 그대로 저장할 수 있다. Meanwhile, the
시큐리티 프로토콜에 따라 수신된 커맨드는 암호화된 커맨드일 수 있으므로, 상기 커맨드가 추가적인 암호화 없이 서브 비휘발성 메모리(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
도 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
제어 로직 회로(520)는 메인 비휘발성 메모리(500) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(520)는 메모리 인터페이스 회로(510)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(520)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The
메모리 셀 어레이(530)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(530)는 비트 라인들(BL)을 통해 페이지 버퍼부(540)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(560)에 연결될 수 있다.The
예시적인 실시 예에서, 메모리 셀 어레이(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
페이지 버퍼(540)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(540)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 하나 이상의 비트 라인을 선택할 수 있다. 페이지 버퍼(540)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(540)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(540)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.The
전압 생성기(550)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(550)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.The
로우 디코더(560)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(560)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다The
도 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
도 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
도 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
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The
메인 프로세서(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
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The
스토리지 장치(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
스토리지 장치(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
본 발명의 실시 예에 따르면, 스토리지 장치(1300a, 1300b)는 정해진 인터페이스 프로토콜을 준수하는 파라미터 변경 커맨드를 지원할 수 있다. 메인 프로세서(1100)는 스토리지 장치(1300a, 1300b)와의 연결 특성에 대한 최적 파라미터 값을 포함하는 파라미터 변경 커맨드를 스토리지 장치(1300a, 1300b)로 제공함으로써 스토리지 장치(1300a, 1300b) 내부에 저장된 파라미터 값을 용이하게 변경할 수 있다. 따라서, 메인 프로세서(1100)와 스토리지 장치(1300a, 1300b)간의 신호 전송 품질이 향상될 수 있다.According to an embodiment of the present invention, the
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. The sensor 1430 can detect various types of physical quantities that can be acquired from the outside of the
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The
연결 인터페이스(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
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.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.
상기 만료조건 정보는
상기 스토리지 장치의 파워 사이클링(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.
상기 하나 이상의 디스크립터 각각은
상기 호스트와의 연결을 제어하는 펌웨어 소스 코드에서 상기 타겟 파라미터가 적용되는 코드 블록을 나타내는, 그룹 정보를 더 포함하는
스토리지 장치.
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.
상기 하나 이상의 디스크립터는 상기 파라미터 변경 커맨드에서 그룹 정보에 기초하여 나열되고,
상기 컨트롤러는
상기 파라미터 변경 커맨드에서 상기 하나 이상의 디스크립터가 나열된 순서대로 상기 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.
상기 스토리지 장치는
상기 컨트롤러의 동작에 필요한 데이터를 저장하는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 수신된 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
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.
상기 컨트롤러는
전원 공급이 감지되면 상기 메인 비휘발성 메모리로부터 획득한 부트 로더를 이용하여 상기 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.
상기 스토리지 장치는
상기 메인 비휘발성 메모리로부터 독출되는 데이터를 버퍼링한 후 상기 컨트롤러로 제공하는 버퍼 메모리를 더 포함하고,
상기 컨트롤러는
상기 버퍼 메모리를 경유하지 않고 상기 서브 비휘발성 메모리에 저장된 파라미터 변경 커맨드를 직접 획득하는
스토리지 장치.
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.
상기 수신된 파라미터 변경 커맨드는 암호화(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.
상기 스토리지 장치는
상기 컨트롤러의 동작에 필요한 데이터를 저장하는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 암호화된 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
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.
상기 인터페이스 프로토콜은
PCIe(Peripheral Component Interconnect Express)인
스토리지 장치.
According to claim 1,
The interface protocol is
Peripheral Component Interconnect Express (PCIe)
storage device.
상기 파라미터 변경 커맨드는
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.
상기 스토리지 장치는
상기 컨트롤러가 임의의 어드레스를 이용하여 직접 접근할 수 있는 서브 비휘발성 메모리를 더 포함하며,
상기 컨트롤러는
상기 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
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.
상기 컨트롤러는
상기 메인 비휘발성 메모리로부터 획득한 부트 로더를 이용하여 상기 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.
상기 컨트롤러는
호스트로부터 하나 이상의 디스크립터를 포함하는 파라미터 변경 커맨드를 수신하면, 상기 파라미터 변경 커맨드를 상기 서브 비휘발성 메모리에 저장하는
스토리지 장치.
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.
상기 수신된 파라미터 변경 커맨드는 암호화(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.
상기 파라미터 변경 커맨드는 파워 사이클링(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.
상기 서브 비휘발성 메모리는
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.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/835,761 US12061808B2 (en) | 2021-11-15 | 2022-06-08 | Storage device for tuning an interface with a host |
EP22186674.2A EP4180977B1 (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 |
---|---|---|---|
KR20210156418 | 2021-11-15 | ||
KR1020210156418 | 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)
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 |
-
2022
- 2022-02-09 KR KR1020220016769A patent/KR102509646B1/en active IP Right Grant
Patent Citations (5)
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 |
---|---|---|
US20180314643A1 (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 | |
KR20220085455A (en) | Storage device and storage system including the same | |
US20230195324A1 (en) | Storage device | |
CN114254402A (en) | Data storage device and operation method thereof | |
KR20170094674A (en) | Data storage device | |
CN111913908A (en) | Storage system with replay attack countermeasure and method of operating the same | |
US20220197510A1 (en) | Storage device for executing processing code and operating method of the storage device | |
EP4180977B1 (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 | |
US12013778B2 (en) | Storage device configured to update hotnesses of received logical addresses and a method of operating the storage device | |
KR102509646B1 (en) | Storage device | |
KR20170109344A (en) | Data storage device and operating method thereof | |
KR20200128825A (en) | Storage system with separated rpmb sub-systems and method of operating the same | |
KR20230094110A (en) | Storage device | |
KR102692394B1 (en) | Nonvolatile memory device, memory controller, and method of reading of storage device comprising the same | |
KR20190037659A (en) | Nonvolatile memory device, operating method thereof and data storage device having the same | |
KR102557992B1 (en) | Memory controller, storage device, and operating method of storage device | |
KR102545465B1 (en) | Storage controller and storage device comprising the same | |
US11822800B2 (en) | Storage system including host and storage device and operation method thereof | |
US20230195333A1 (en) | Storage device and operation method of electronic system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |