KR20170081118A - Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device - Google Patents

Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device Download PDF

Info

Publication number
KR20170081118A
KR20170081118A KR1020160074700A KR20160074700A KR20170081118A KR 20170081118 A KR20170081118 A KR 20170081118A KR 1020160074700 A KR1020160074700 A KR 1020160074700A KR 20160074700 A KR20160074700 A KR 20160074700A KR 20170081118 A KR20170081118 A KR 20170081118A
Authority
KR
South Korea
Prior art keywords
controller
map data
host device
data
physical address
Prior art date
Application number
KR1020160074700A
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 KR1020160160792A priority Critical patent/KR102579938B1/en
Priority to US15/392,353 priority patent/US10229051B2/en
Priority to CN201611264261.XA priority patent/CN107015920B/en
Publication of KR20170081118A publication Critical patent/KR20170081118A/en

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems

Abstract

본 발명은 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 관한 것이다. 본 발명의 동작 방법은, 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치의 논리 어드레스들을 사상하는 맵 데이터를 호스트 장치에 전송하는 단계, 호스트 장치로부터 읽기 요청을 수신하는 단계, 읽기 요청이 물리 어드레스를 포함하면 물리 어드레스에 기반하여 데이터를 읽는 단계, 그리고 읽기 요청이 물리 어드레스를 포함하지 않으면 읽기 요청의 논리 어드레스를 제2 물리 어드레스로 변환하고 그리고 제2 물리 어드레스에 기반하여 데이터를 읽는 단계를 포함한다.The present invention relates to a nonvolatile memory device and a method of operating the storage device including a controller for controlling the nonvolatile memory device. The method of operation of the present invention comprises the steps of transmitting to the host device map data mapping physical addresses of the nonvolatile memory device and logical addresses of the host device, receiving a read request from the host device, Reading the data based on the physical address, and if the read request does not include the physical address, converting the logical address of the read request to the second physical address and reading the data based on the second physical address .

Description

불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법{STORAGE DEVICE INCLUDING NONVOLATILE MEMORY DEVICE AND CONTROLLER, OPERATING METHOD OF STORAGE DEVICE, AND ACCESS METHOD FOR ACCESSING STORAGE DEVICE}Technical Field [0001] The present invention relates to a storage device including a nonvolatile memory device and a controller, an operation method of the storage device, and an access method for accessing the storage device. BACKGROUND OF THE INVENTION 1. Field of the Invention [0001]

본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법에 관한 것이다.The present invention relates to semiconductor memory, and more particularly, to a storage device including a nonvolatile memory device and a controller, a method of operating the storage device, and an access method for accessing the storage device.

스토리지 장치는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불휘발성 메모리에 데이터를 저장하는 장치를 포함한다.A storage device is a device that stores data under the control of a host device such as a computer, a smart phone, a smart pad, or the like. The storage device stores data in a semiconductor memory, in particular, a nonvolatile memory such as a hard disk drive (HDD), a device storing data on a magnetic disk, a solid state drive (SSD) Lt; / RTI >

불휘발성 메모리는 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) 등을 포함한다.The non-volatile memory may be a ROM, a PROM, an EPROM, an EEPROM, a flash memory, a phase-change RAM (PRAM), a magnetic RAM (MRAM) RRAM (Resistive RAM), FRAM (Ferroelectric RAM), and the like.

스토리지 장치의 제조 단가를 감소시키기 위하여, 스토리지 장치로부터 DRAM (Dynamic Random Access Memory)와 같은 대용량의 버퍼 메모리를 제거하는 방안이 시도되고 있다. 통상적으로, 스토리지 장치의 버퍼 메모리는 스토리지 장치의 불휘발성 메모리 장치를 관리하는 데에 필요한 메타 데이터를 저장하는 데에 사용된다. 예를 들어, 메타 데이터는 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치에 의해 사용되는 논리 어드레스들 사이의 사상 정보를 포함하는 맵 데이터를 포함할 수 있다.In order to reduce the manufacturing cost of the storage device, attempts have been made to remove a large-capacity buffer memory such as a dynamic random access memory (DRAM) from the storage device. Typically, the buffer memory of the storage device is used to store the metadata necessary to manage the non-volatile memory device of the storage device. For example, the metadata may include map data that includes mapping information between the physical addresses of the non-volatile memory device and the logical addresses used by the host device.

스토리지 장치로부터 DRAM과 같은 대용량의 버퍼 메모리가 제거되면, 메타 데이터는 스토리지 장치의 컨트롤러의 내부에 제공되는 저용량 고속의 버퍼 메모리를 이용하여 관리되어야 한다. 그러나, 컨트롤러의 내부의 버퍼 메모리의 용량은 메타 데이터, 더 상세하게는 맵 데이터의 용량보다 적다. 따라서, 호스트 장치로부터의 쓰기 요청 또는 읽기 요청을 수행할 때에 필요한 맵 데이터가 컨트롤러 내부의 버퍼 메모리에 로드되어 있지 않은 경우, 필요한 맵 데이터를 불휘발성 메모리 장치로부터 컨트롤러 내부의 버퍼 메모리에 로드하는 동작이 수반된다. 이는 스토리지 장치가 호스트 장치의 쓰기 요청 또는 읽기 요청에 응답하는 시간을 증가시키며, 스토리지 장치 및 스토리지 장치를 채용한 컴퓨팅 장치의 동작 속도를 저하한다.When a large-capacity buffer memory such as DRAM is removed from the storage device, the metadata must be managed using a low-capacity, high-speed buffer memory provided inside the controller of the storage apparatus. However, the capacity of the buffer memory inside the controller is smaller than the capacity of the meta data, more specifically, the map data. Accordingly, when the map data necessary for performing a write request or a read request from the host device is not loaded in the buffer memory inside the controller, an operation of loading necessary map data from the nonvolatile memory device into the buffer memory inside the controller . This increases the time that the storage device responds to a write request or a read request of the host device and reduces the operation speed of the storage device and the computing device employing the storage device.

따라서, 스토리지 장치로부터 DRAM과 같은 대용량의 버퍼 메모리가 제거되어도, 스토리지 장치의 응답 속도 또는 동작 속도가 저하되는 것을 방지하는 장치들 및 방법들에 대한 연구가 요구되고 있다.Therefore, researches have been made on devices and methods that prevent a decrease in the response speed or the operation speed of a storage device even if a large-capacity buffer memory such as a DRAM is removed from the storage device.

본 발명의 목적은, 향상된 동작 속도를 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법을 제공하는 데에 있다.It is an object of the present invention to provide a storage device having an improved operation speed, a method of operating the storage device, and an access method for accessing the storage device.

본 발명의 실시 예들에 따른 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러를 포함하는 스토리지 장치의 동작 방법은, 스토리지 장치가 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치의 논리 어드레스들을 사상하는 맵 데이터를 호스트 장치에 전송하는 단계, 스토리지 장치가 상기 호스트 장치로부터 읽기 요청을 수신하는 단계, 읽기 요청이 물리 어드레스를 포함하면 물리 어드레스에 기반하여 불휘발성 메모리 장치로부터 데이터를 읽는 단계, 그리고 읽기 요청이 물리 어드레스를 포함하지 않으면 읽기 요청의 논리 어드레스를 제2 물리 어드레스로 변환하고 그리고 제2 물리 어드레스에 기반하여 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함한다.A method of operating a storage device including a controller configured to control a non-volatile memory device and a non-volatile memory device according to embodiments of the present invention is characterized in that the storage device stores the physical addresses of the non-volatile memory device and the logical addresses Reading data from the non-volatile memory device based on a physical address if the read request includes a physical address, and < RTI ID = 0.0 > Converting the logical address of the read request to a second physical address if the read request does not include the physical address, and reading data from the non-volatile memory device based on the second physical address.

본 발명의 실시 예들에 따른 스토리지 장치는, 불휘발성 메모리 장치, 그리고 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러를 포함한다. 컨트롤러는 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치의 논리 어드레스들을 사상하는 맵 데이터를 호스트 장치에 전송하도록 구성된다. 컨트롤러는 호스트 장치로부터 수신되는 읽기 요청이 맵 데이터와 연관된 물리 어드레스를 포함하면 물리 어드레스에 기반하여 불휘발성 메모리 장치로부터 데이터를 읽고, 호스트 장치로부터 수신되는 읽기 요청이 물리 어드레스를 포함하지 않으면 읽기 요청의 논리 어드레스에 기반하여 불휘발성 메모리 장치로부터 데이터를 읽도록 구성된다.A storage device according to embodiments of the present invention includes a non-volatile memory device and a controller configured to control the non-volatile memory device. The controller is configured to transmit map data to the host device to map the physical addresses of the non-volatile memory device and the logical addresses of the host device. The controller reads data from the non-volatile memory device based on the physical address if the read request received from the host device includes a physical address associated with the map data, and if the read request received from the host device does not contain a physical address, And to read data from the non-volatile memory device based on the logical address.

본 발명의 실시 예들에 따른 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 포함하는 스토리지 장치를 액세스하는 액세스 방법은, 불휘발성 메모리 장치의 물리 어드레스들과 논리 어드레스들을 사상하는 맵 데이터를 스토리지 장치로부터 읽는 단계, 읽기 대상의 논리 어드레스가 맵 데이터와 연관되면, 맵 데이터로부터 논리 어드레스와 사상된 물리 어드레스를 검출하고 물리 어드레스를 포함하는 읽기 요청을 스토리지 장치로 전송하는 단계, 그리고 읽기 대상의 논리 어드레스가 맵 데이터와 연관되지 않으면, 논리 어드레스를 포함하는 읽기 요청을 스토리지 장치로 전송하는 단계를 포함한다.A nonvolatile memory device according to embodiments of the present invention and an access method for accessing a storage device including the nonvolatile memory device are configured to read map data that maps physical addresses and logical addresses of a nonvolatile memory device from a storage device If the logical address of the read object is associated with the map data, detecting the logical address and the mapped physical address from the map data and sending a read request containing the physical address to the storage device, And if not associated with the data, sending a read request containing the logical address to the storage device.

본 발명의 실시 예들에 따르면, 스토리지 장치의 맵 데이터는 호스트 장치로 전송된다. 호스트 장치는 맵 데이터에 기반하여 물리 어드레스를 포함하는 읽기 요청을 스토리지 장치로 전송할 수 있다. 물리 어드레스를 포함하는 읽기 요청에 대해 어드레스 변환을 수행하거나 맵 데이터를 불휘발성 메모리 장치로부터 읽는 동작이 수반되지 않으므로, 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치의 동작 속도가 향상된다.According to embodiments of the present invention, the map data of the storage device is transmitted to the host device. The host device may send a read request containing the physical address to the storage device based on the map data. The operation speed of the computing device including the storage device and the storage device is improved because the address conversion is performed for the read request including the physical address or the operation for reading the map data from the nonvolatile memory device is not accompanied.

또한, 호스트 장치에 전송되는 맵 데이터에 대한 관리 권한은 스토리지 장치가 아닌 호스트 장치가 갖는다. 따라서, 호스트 장치의 메모리에 대한 관리 권한을 스토리지 장치로 전달할 필요가 없으므로, 호스트 장치와 스토리지 장치 사이의 인터페이스가 변경될 필요가 없이 기존의 인터페이스를 이용하여 본 발명의 실시 예들이 구현될 수 있다. 따라서, 본 발명의 실시 예들을 구현하는 데에 필요한 비용이 감소한다.Further, the management authority for the map data transmitted to the host device is owned by the host device, not by the storage device. Therefore, since the management authority for the memory of the host device does not need to be transferred to the storage device, embodiments of the present invention can be implemented using existing interfaces without requiring the interface between the host device and the storage device to be changed. Thus, the cost of implementing the embodiments of the present invention is reduced.

도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예들에 따른 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 파워-온 시에 스토리지 장치가 호스트 장치에 맵 데이터의 일부 또는 전부를 전송하는 방법을 보여주는 순서도이다.
도 4는 호스트 장치가 스토리지 장치(1300)에 맵 데이터를 요청하는 맵 데이터 요청의 예를 보여준다.
도 5는 호스트 장치가 스토리지 장치에 맵 데이터를 요청하는 맵 데이터 요청의 커맨드 디스크립터 블록의 예를 보여준다.
도 6은 호스트 장치가 스토리지 장치에 맵 데이터를 요청하는 맵 데이터 요청의 커맨드 디스크립터 블록의 다른 예를 보여준다.
도 7은 스토리지 장치가 도 5 또는 도 6의 요청에 응답하여 맵 데이터를 호스트 장치로 전송하는 응답의 예를 보여준다.
도 8은 불휘발성 메모리 장치, 컨트롤러, 그리고 호스트 장치의 RAM 에서 맵 데이터, 스토리지 맵 캐시 데이터, 그리고 호스트 맵 캐시 데이터가 각각 관리되는 예를 보여준다.
도 9는 호스트 장치가 스토리지 장치에 제1 모드로 맵 데이터를 요청하는 방법을 보여주는 순서도이다.
도 10은 호스트 장치가 스토리지 장치에 제2 모드로 맵 데이터를 요청하는 방법을 보여주는 순서도이다.
도 11은 호스트 장치가 스토리지 장치에 쓰기 요청을 전달하여 쓰기를 수행하는 방법을 보여주는 순서도이다.
도 12는 호스트 장치가 스토리지 장치에 읽기 요청을 전달하여 쓰기를 수행하는 방법을 보여주는 순서도이다.
도 13은 호스트 장치가 스토리지 장치에 읽기를 요청하는 읽기 요청의 커맨드 디스크립터 블록)의 예를 보여준다.
도 15는 호스트 장치가 별도의 커맨드 UPIU를 통해 복수의 물리 어드레스들 및 시그니처들을 전송하는 커맨드 디스크립터 블록의 예를 보여준다.
도 16은 컨트롤러가 시그니처를 관리하는 방법을 보여주는 순서도이다.
도 17은 컨트롤러가 맵 데이터를 호스트 장치에 전송할 때에 암호화를 수행하는 예를 보여주는 순서도이다.
도 18은 스토리지 장치가 조각 모음을 수행하는 예를 보여주는 순서도이다.
도 19는 컴퓨팅 장치가 스토리지 장치의 조각 모음을 지원하는 예를 보여주는 순서도이다.
도 20은 호스트 장치가 스토리지 장치를 액세스하는 방법을 보여주는 순서도이다.
도 21은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
1 is a block diagram illustrating a computing device in accordance with an embodiment of the present invention.
2 is a flowchart illustrating an operation method of a storage apparatus according to embodiments of the present invention.
3 is a flow chart showing how the storage device transmits some or all of the map data to the host device at power-on.
4 shows an example of a map data request in which the host apparatus requests map data to the storage apparatus 1300. FIG.
5 shows an example of a command descriptor block of a map data request in which a host device requests map data to a storage device.
6 shows another example of a command descriptor block of a map data request in which the host device requests map data to the storage device.
7 shows an example of a response in which the storage device transmits map data to the host device in response to the request of Fig. 5 or Fig.
8 shows an example in which map data, storage map cache data, and host map cache data are respectively managed in the RAM of the nonvolatile memory device, the controller, and the host device.
9 is a flowchart showing how the host apparatus requests map data to the storage apparatus in the first mode.
10 is a flow chart showing how a host device requests map data to a storage device in a second mode.
11 is a flowchart showing a method in which a host device transfers a write request to a storage device to perform writing.
12 is a flowchart showing a method in which a host device transfers a read request to a storage device to perform writing.
13 shows an example of a command descriptor block of a read request in which the host device requests reading from the storage device).
15 shows an example of a command descriptor block in which a host device transmits a plurality of physical addresses and signatures via a separate command UPIU.
Figure 16 is a flow chart showing how the controller manages signatures.
17 is a flowchart showing an example in which encryption is performed when the controller transmits map data to the host device.
18 is a flowchart showing an example in which the storage device performs defragmentation.
19 is a flowchart showing an example in which a computing device supports defragmentation of a storage device.
20 is a flow chart showing how a host device accesses a storage device;
21 is a block diagram illustrating a nonvolatile memory device according to an embodiment of the present invention.

이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, so that those skilled in the art can easily carry out the technical idea of the present invention. .

도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치(1000)를 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 장치(1000)는 프로세서(1100), 메모리(1200), 스토리지 장치(1300), 모뎀(1400), 그리고 사용자 인터페이스(1500)를 포함한다.1 is a block diagram illustrating a computing device 1000 in accordance with an embodiment of the present invention. Referring to Figure 1, a computing device 1000 includes a processor 1100, a memory 1200, a storage device 1300, a modem 1400, and a user interface 1500.

프로세서(1100)는 컴퓨팅 장치(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(1100)는 코드 또는 프로그램에 포함된 명령으로 표현되는 동작들을 실행하도록 물리적으로 구성된 회로를 포함하는 하드웨어 기반의 데이터 프로세싱 장치일 수 있다. 예를 들어, 프로세서(1100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(1100)는 범용 프로세서, 특수 목적 프로세서 또는 어플리케이션 프로세서일 수 있다.The processor 1100 may control all operations of the computing device 1000 and may perform logical operations. The processor 1100 may be a hardware-based data processing device that includes circuitry that is physically configured to execute code or operations represented by instructions contained in the program. For example, the processor 1100 may be configured as a system-on-chip (SoC). The processor 1100 may be a general purpose processor, a special purpose processor, or an application processor.

RAM (1200)은 프로세서(1100)와 통신할 수 있다. RAM (1200)은 프로세서(1100) 또는 컴퓨팅 장치(1000)의 메인 메모리일 수 있다. 프로세서(1100)는 RAM (1200)에 코드 또는 데이터를 임시로 저장할 수 있다. 프로세서(1100)는 RAM (1200)을 이용하여 코드를 실행하고, 데이터를 처리할 수 있다. 프로세서(1100)는 RAM (1200)을 이용하여 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 실행할 수 있다. 프로세서(1100)는 RAM (1200)을 이용하여 컴퓨팅 장치(1000)의 제반 동작을 제어할 수 있다. RAM (1200)은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리 장치를 포함할 수 있다.The RAM 1200 may communicate with the processor 1100. The RAM 1200 may be the processor 1100 or the main memory of the computing device 1000. The processor 1100 may temporarily store the code or data in the RAM 1200. [ The processor 1100 can execute the code using the RAM 1200 and process the data. The processor 1100 may use RAM 1200 to execute various software, such as an operating system and an application. The processor 1100 can use the RAM 1200 to control all operations of the computing device 1000. The RAM 1200 may be a volatile memory such as SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) or the like, or a random access memory such as a PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM Ferroelectric RAM), and the like.

스토리지 장치(1300)는 프로세서(1100)와 통신할 수 있다. 스토리지 장치(1300)는 장기적으로 보존되어야 하는 데이터를 저장할 수 있다. 즉, 프로세서(1100)는 장기적으로 보존되어야 하는 데이터를 스토리지 장치(1300)에 저장할 수 있다. 스토리지 장치(1300)는 컴퓨팅 장치(1000)를 구동하기 위한 부트 이미지를 저장할 수 있다. 스토리지 장치(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들의 소스 코드들을 저장할 수 있다. 스토리지 장치(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들에 의해 처리된 데이터를 저장할 수 있다.The storage device 1300 may communicate with the processor 1100. The storage device 1300 can store data that needs to be preserved in the long term. That is, the processor 1100 may store data to be stored in the storage device 1300 in the long term. The storage device 1300 may store a boot image for driving the computing device 1000. The storage device 1300 may store source codes of various software, such as an operating system and an application. The storage device 1300 may store data processed by various software, such as an operating system and an application.

예시적으로, 프로세서(1100)는 스토리지 장치(1300)에 저장된 소스 코드들을 RAM (1200)에 로드하고, RAM (1200)에 로드된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 프로세서(1100)는 스토리지 장치(1300)에 저장된 데이터를 RAM (1200)에 로드하고, RAM (1200)에 로드된 데이터를 처리할 수 있다. 프로세서(1100)는 RAM (1200)에 저장된 데이터 중 장기적으로 보존하고자 하는 데이터를 스토리지 장치(1300)에 저장할 수 있다.Illustratively, the processor 1100 can load the source codes stored in the storage device 1300 into the RAM 1200 and execute the loaded codes in the RAM 1200 to drive various software, such as an operating system, an application have. The processor 1100 may load data stored in the storage device 1300 into the RAM 1200 and process the data loaded into the RAM 1200. [ The processor 1100 may store in the storage device 1300 data to be stored in the RAM 1200 for a long period of time.

스토리지 장치(1300)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리 장치를 포함할 수 있다.The storage device 1300 may include non-volatile memory devices such as flash memory, Phase-change RAM (PRAM), Magnetic RAM (MRAM), Resistive RAM (RRAM), Ferroelectric RAM (FRAM)

모뎀(1400)은 프로세서(1100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(1400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(140)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), SDIO, UART (Universal Asynchronous Receiver Transmitter), SPI (Serial Peripheral Interface), HS-SPI (High Speed SPI), RS232, I2C (Inter-integrated Circuit), HS-I2C, I2S, (Integrated-interchip Sound), S/PDIF (Sony/Philips Digital Interface), MMC (MultiMedia Card), eMMC (embedded MMC) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.The modem 1400 may communicate with an external device under the control of the processor 1100. [ For example, the modem 1400 can perform wired or wireless communication with an external device. The modem 140 may be any one of long term evolution (LTE), WiMax, GSM, CDMA, Bluetooth, Near Field Communication (NFC), WiFi, (Serial Attachment), a High Speed Interchip (HSIC), a Small Computer System Interface (SCSI), a Firewire, and the like, as well as various wireless communication schemes such as RFID (Radio Frequency Identification) , PCI (PCI Express), Nonvolatile Memory Express (NVMe), Universal Flash Storage (UFS), SD (Secure Digital), SDIO, Universal Asynchronous Receiver Transmitter (UART), Serial Peripheral Interface (SPI) , HS-SPI (High Speed SPI), RS232, I2C (Integrated Circuit), HS-I2C, I2S, Integrated Digital Interchip Sound, Sony / Philips Digital Interface (MIC) based on at least one of various wired communication methods such as eMMC (embedded MMC) Can be performed.

사용자 인터페이스(1500)는 프로세서(1100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(1500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(1500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.The user interface 1500 may communicate with the user under the control of the processor 1100. For example, the user interface 1500 may include user input interfaces such as a keyboard, a keypad, a button, a touch panel, a touch screen, a touch pad, a touch ball, a camera, a microphone, a gyroscope sensor, The user interface 1500 may include user output interfaces such as a Liquid Crystal Display (LCD), an Organic Light Emitting Diode (OLED) display, an AMOLED (Active Matrix OLED) display, an LED, a speaker,

스토리지 장치(1300)는 불휘발성 메모리 장치(110) 및 컨트롤러(120)를 포함한다. 불휘발성 메모리 장치(110)는 컴퓨팅 장치(1300)에 메인 저장소를 제공할 수 있다. 컨트롤러(120)는 호스트 장치의 요청에 따라 불휘발성 메모리 장치(110)에 대해 쓰기, 읽기 및 소거 동작들을 수행할 수 있다. 컨트롤러(120)는 호스트 장치의 제어와 관계 없이, 불휘발성 메모리 장치(110)를 관리하는 데에 필요한 다양한 배경 동작들을 수행할 수 있다. 컨트롤러(120)는 불휘발성 메모리 장치(110)를 관리하는 데에 필요한 다양한 메타 데이터를 관리할 수 있다. 메타 데이터는 불휘발성 메모리 장치(110)에 저장되며, 컨트롤러(120)가 필요한 때에 불휘발성 메모리 장치(110)로부터 읽어 사용할 수 있다.The storage device 1300 includes a non-volatile memory device 110 and a controller 120. The non-volatile memory device 110 may provide a main storage to the computing device 1300. The controller 120 may perform write, read, and erase operations on the non-volatile memory device 110 at the request of the host device. The controller 120 can perform various background operations necessary to manage the nonvolatile memory device 110 regardless of the control of the host device. The controller 120 can manage various kinds of metadata necessary for managing the nonvolatile memory device 110. Metadata is stored in the non-volatile memory device 110 and can be read from the non-volatile memory device 110 when the controller 120 is needed.

예시적으로, 컨트롤러(120)에 의해 관리되는 메타 데이터는 맵 데이터(MD)를 포함할 수 있다. 맵 데이터(MD)는 불휘발성 메모리 장치(110)의 저장 공간의 물리 어드레스들 및 호스트 장치에 의해 스토리지 장치(1300)에 부여된 논리 어드레스들 사이의 사상 정보를 포함할 수 있다. 맵 데이터(MD)는 불휘발성 메모리 장치(110)에 저장될 수 있다. 컨트롤러(120)는 맵 데이터(MD) 중에서 호스트 장치로부터의 요청 또는 배경 동작을 수행하는 데에 필요한 부분을 스토리지 맵 캐시 데이터(MCD_S)로서 내부의 버퍼 메모리에 로드할 수 있다. 예를 들어, 내부의 버퍼 메모리는 SRAM (Static Random Access Memory)일 수 있다. 컨트롤러(120)는 호스트 장치의 요청에 따라 동작을 수행할 때에 또는 배경 동작을 수행할 때에 스토리지 맵 캐시 데이터(MCD_S)가 갱신되면, 갱신된 부분이 불휘발성 메모리 장치(110)의 맵 데이터(MD)에 반영되도록 갱신된 부분을 불휘발성 메모리 장치(110)에 기입할 수 있다.Illustratively, the metadata managed by the controller 120 may include map data MD. The map data MD may include mapping information between the physical addresses of the storage space of the non-volatile memory device 110 and the logical addresses assigned to the storage device 1300 by the host device. The map data (MD) may be stored in the nonvolatile memory device (110). The controller 120 may load a part of the map data MD necessary for performing a request or background operation from the host apparatus into the internal buffer memory as the storage map cache data MCD_S. For example, the internal buffer memory may be static random access memory (SRAM). When the storage map cache data (MCD_S) is updated at the time of performing an operation in response to a request from the host device or performing a background operation, the controller 120 updates the map data of the nonvolatile memory device 110 To the nonvolatile memory device 110. The nonvolatile memory device 110 may be a nonvolatile memory device.

컨트롤러(120)의 버퍼 메모리의 용량은 맵 데이터(MD)의 용량보다 적다. 따라서, 맵 데이터(MD) 전체가 컨트롤러(120)에 로드될 수 없다. 맵 데이터(MD) 중에서 호스트 장치로부터의 요청 또는 배경 동작을 수행하는 데에 필요한 부분이 스토리지 맵 캐시 데이터(MCD_S)로 컨트롤러(120)에 로드되어 있지 않으면, 컨트롤러(120)는 맵 캐시 데이터(MCD_S) 중 일부를 삭제 또는 불휘발성 메모리 장치(110)에 기입하고, 불휘발성 메모리 장치(110)로부터 필요한 부분을 읽어야 한다. 이는, 호스트 장치로부터의 요청 또는 배경 동작이 수행되는 시간을 증가시키는 요인이 된다.The capacity of the buffer memory of the controller 120 is smaller than that of the map data MD. Therefore, the entire map data MD can not be loaded into the controller 120. [ If the portion of the map data MD necessary for performing the request or the background operation from the host apparatus is not loaded into the controller 120 as the storage map cache data MCD_S, the controller 120 reads the map cache data MCD_S To be erased or written to the nonvolatile memory device 110 and read the necessary part from the nonvolatile memory device 110. [ This is a factor that increases the time during which a request or background operation from the host device is performed.

이와 같은 문제를 방지하기 위하여, 본 발명의 실시 예에 따른 스토리지 장치(1300)는 맵 데이터(MD)의 전체 또는 일부를 호스트 장치로 전송하도록 구성된다. 호스트 장치는 스토리 장치로부터 전송되는 맵 데이터(MD)의 전체 또는 일부를 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장하도록 구성된다. 이후에, 호스트 맵 캐시 데이터(MCD_H)를 참조하여, 호스트 장치는 물리 어드레스를 포함하는 읽기 요청을 스토리지 장치(1300)로 전송할 수 있다. 읽기 요청이 물리 어드레스를 포함하면, 컨트롤러(120)는 어드레스 변환을 수행하거나 또는 불휘발성 메모리 장치(110)로부터 맵 데이터(MD) 중 필요한 부분을 읽는 동작을 생략할 수 있다. 따라서, 스토리지 장치(1300)가 호스트 장치로부터의 요청을 수행하는 시간이 감소되며, 스토리지 장치(1300) 및 컴퓨팅 장치(1000)의 동작 속도가 향상된다.In order to prevent such a problem, the storage apparatus 1300 according to the embodiment of the present invention is configured to transmit all or a part of the map data MD to the host apparatus. The host device is configured to store all or part of the map data (MD) transmitted from the story device in the RAM 1200 as host map cache data (MCD_H). Thereafter, referring to the host map cache data (MCD_H), the host device can transmit a read request including the physical address to the storage device 1300. [ If the read request includes a physical address, the controller 120 may skip the operation of performing the address translation or reading the necessary portion of the map data (MD) from the nonvolatile memory device 110. Thus, the time when the storage apparatus 1300 performs the request from the host apparatus is reduced, and the operation speed of the storage apparatus 1300 and the computing apparatus 1000 is improved.

또한, 호스트 장치(1000)의 RAM (1200)에 저장되는 호스트 맵 캐시 데이터(MCD_H)는 스토리지 장치(1300)가 아닌 호스트 장치에 의해 관리된다. 호스트 장치의 RAM (1200)의 관리 권한을 스토리지 장치(1300)에 넘겨줄 필요가 없으므로, 호스트 장치와 스토리지 장치(1300) 사이의 인터페이스를 종래의 것들로부터 변경할 필요 없이 본 발명의 실시 예들이 적용될 수 있다. 따라서, 본 발명의 실시 예들을 적용하는 데에 필요한 비용이 감소된다.The host map cache data (MCD_H) stored in the RAM 1200 of the host apparatus 1000 is managed by the host apparatus, not by the storage apparatus 1300. The embodiments of the present invention can be applied without changing the interface between the host device and the storage device 1300 from the conventional ones since there is no need to transfer the management authority of the RAM 1200 of the host device to the storage device 1300 have. Thus, the cost of applying the embodiments of the present invention is reduced.

도 2는 본 발명의 실시 예들에 따른 스토리지 장치(1300)의 동작 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 스토리지 장치(1300)는 맵 데이터(MD)읠 적어도 일부를 호스트 장치로 전송할 수 있다. 예를 들어, 컨트롤러(120)는 내부의 버퍼 메모리에 로드된 스토리지 맵 캐시 데이터(MCD_S)를 호스트 장치로 전송할 수 있다. 컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 맵 데이터(MD) 중 일부를 읽어 스토리지 맵 캐시 데이터(MCD_S)로 저장하고, 저장된 스토리지 맵 캐시 데이터(MCD_S)를 호스트 장치로 전송할 수 있다.FIG. 2 is a flow chart illustrating a method of operating a storage device 1300 in accordance with embodiments of the present invention. Referring to FIGS. 1 and 2, in step S110, the storage device 1300 may transmit at least a portion of the map data (MD) to the host device. For example, the controller 120 may transmit storage map cache data (MCD_S) loaded in an internal buffer memory to the host device. The controller 120 may read some of the map data MD from the nonvolatile memory device 110 and store the storage map cache data MCD_S and the stored storage map cache data MCD_S to the host device.

S120 단계에서, 스토리지 장치(1300)는 호스트 장치로부터 읽기 요청을 수신할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 읽기 커맨드 및 어드레스를 포함하는 읽기 요청을 수신할 수 있다.In step S120, the storage apparatus 1300 may receive a read request from the host apparatus. For example, the controller 120 may receive a read request including a read command and an address from the host device.

S130 단계에서, 스토리지 장치(1300)는 호스트 장치로부터 수신된 읽기 요청이 물리 어드레스(PA)를 포함하는지 판별할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 수신되는 읽기 요청 중에서 물리 어드레스(PA)가 위치하도록 할당된 부분에 어드레스가 존재하면, 해당 어드레스를 물리 어드레스(PA)로 식별할 수 있다. 다른 예로서, 컨트롤러(120)는 호스트 장치로부터 수신되는 읽기 요청에 포함된 어드레스가 범위 밖(Out-of-Bound)인 때에, 범위 밖(Out-of-Bound)의 부분을 물리 어드레스(PA)로 식별할 수 있다. 읽기 요청이 물리 어드레스를 포함하면, S140 단계가 생략되고 S150 단계가 수행된다. 읽기 요청이 물리 어드레스를 포함하면, S140 단계가 수행된 후에 S150 단계가 수행된다.In step S130, the storage apparatus 1300 can determine whether the read request received from the host apparatus includes a physical address (PA). For example, the controller 120 can identify the address as a physical address (PA) if an address exists in a portion allocated to locate the physical address PA among the read requests received from the host device. As another example, when the address included in the read request received from the host device is Out-of-Bound, the controller 120 sets the Out-of-Bound portion to the physical address (PA) . If the read request includes the physical address, step S140 is skipped and step S150 is performed. If the read request includes the physical address, step S140 is performed, and step S150 is performed.

S140 단계에서, 컨트롤러(120)는 읽기 요청에 포함된 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 예를 들어, 맵 데이터(MD) 중에서 변환에 필요한 부분이 스토리지 맵 캐시 데이터(MCD_S)로 컨트롤러(120)에 로드되어 있는 경우, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S)를 참조하며 읽기 요청에 포함된 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 맵 데이터(MD) 중에서 변환에 필요한 부분이 스토리지 맵 캐시 데이터(MCD_S)로 컨트롤러(120)에 로드되어 있지 않은 경우, 컨트롤러(120)는 변환에 필요한 부분을 불휘발성 메모리 장치(110)로부터 읽을 수 있다. 컨트롤러(120)의 버퍼 메모리의 용량이 부족한 경우, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S) 중 일부 또는 전부를 삭제하고, 변환에 필요한 부분을 불휘발성 메모리 장치(110)로부터 읽을 수 있다. 스토리지 맵 캐시 데이터(MCD_S)에서 삭제 대상인 부분이 불휘발성 메모리 장치(110)로부터 읽힌 후에 갱신된 경우, 컨트롤러(120)는 갱신된 부분이 맵 데이터(MD)에 반영되도록 불휘발성 메모리 장치(110)에 기입한 후에 갱신된 부분을 삭제할 수 있다. 예를 들어, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S) 중에서 삭제 대상을 LRU (Least Recently Used) 방식에 기반하여 선택할 수 있다.In step S140, the controller 120 may convert the logical address LA included in the read request into a physical address (PA). For example, when a part necessary for the conversion in the map data MD is loaded into the controller 120 as the storage map cache data MCD_S, the controller 120 refers to the storage map cache data MCD_S, The logical address LA included in the physical address PA can be converted. The controller 120 can read the portion necessary for the conversion from the nonvolatile memory device 110 when the portion necessary for the conversion in the map data MD is not loaded into the controller 120 as the storage map cache data MCD_S have. When the capacity of the buffer memory of the controller 120 is insufficient, the controller 120 deletes some or all of the storage map cache data MCD_S and reads a portion necessary for the conversion from the nonvolatile memory device 110. [ When the portion to be deleted in the storage map cache data MCD_S is updated after being read from the nonvolatile memory device 110, the controller 120 causes the nonvolatile memory device 110 to update the updated map data MD, It is possible to delete the updated portion. For example, the controller 120 can select an object to be deleted from among the storage map cache data (MCD_S) based on the LRU (Least Recently Used) method.

S150 단계에서, 컨트롤러(120)는 호스트 장치로부터 수신된 또는 스토리지 맵 캐시 데이터(MCD_S)를 참조하여 변환된 물리 어드레스(PA)를 이용하여 불휘발성 메모리 장치(110)로부터 데이터를 읽을 수 있다.In step S150, the controller 120 can read data from the nonvolatile memory device 110 using the converted physical address (PA) received from the host device or referring to the storage map cache data (MCD_S).

상술된 바와 같이, 호스트 장치로부터 수신된 물리 어드레스(PA)에 기반하여 읽기가 수행되면, 컨트롤러(120)가 논리 어드레스(LA)를 물리 어드레스(PA)로 변환하는 동작이 필요치 않으며, 따라서 스토리지 장치(1300) 및 컴퓨팅 장치(1000)의 동작 속도가 향상된다.As described above, when reading is performed based on the physical address (PA) received from the host device, the controller 120 does not need an operation to convert the logical address LA to the physical address (PA) The operating speed of the computing device 1000 and the computing device 1000 is improved.

도 3은 파워-온 시에 스토리지 장치(1300)가 호스트 장치에 맵 데이터(MD)의 일부 또는 전부를 전송하는 방법을 보여주는 순서도이다. 도 1 및 도 3을 참조하면, S210 단계에서, 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치는 파워-온 트레이닝을 수행한다. 파워-온 트레이닝은 종단 저항(Termination Resistance)을 조절하는 ZQ 트레이닝, 싱크 또는 스큐를 조절하는 링크 트레이닝, 통신에 필요한 정보를 교환하는 초기화 통신 등을 포함할 수 있다.3 is a flow chart showing how the storage device 1300 transmits some or all of the map data MD to the host device at power-on. Referring to Figures 1 and 3, in step S210, the host device, the controller 120, and the non-volatile memory device perform power-on training. Power-on training can include ZQ training to adjust termination resistance, link training to adjust sink or skew, and initialization communication to exchange information needed for communication.

S220 단계에서, 호스트 장치는 컨트롤러(120)에 맵 데이터(MD)를 요청할 수 있다. 예를 들어, 호스트 장치는 맵 데이터(MD) 중에서 필요한 부분을 지정하여 요청할 수 있다. 예를 들어, 호스트 장치는 맵 데이터(MD) 중에서 파일 시스템, 부트 이미지, 운영 체제 등과 같이 컴퓨팅 시스템(1000)의 구동에 필요한 데이터가 저장된 부분을 지정하여 요청할 수 있다. 다른 예로서, 호스트 장치는 별도의 지정 없이 맵 데이터(MD)를 컨트롤러(120)에 요청할 수 있다.In step S220, the host device can request map data (MD) to the controller 120. [ For example, the host device can request a portion of the map data (MD) by specifying a necessary portion. For example, the host device can designate a portion of map data (MD) in which data necessary for driving the computing system 1000 is stored, such as a file system, a boot image, an operating system, and the like. As another example, the host device can request the map data (MD) to the controller 120 without specifying otherwise.

S231 단계에서, 컨트롤러(120)는 맵 데이터(MD) 중에서 제1 부분(MD1)을 불휘발성 메모리 장치(110)로부터 읽을 수 있다. 제1 부분(MD1)은 스토리지 맵 캐시 데이터(MCD_S)로서 컨트롤러(120)에 저장될 수 있다. S241 단계에서, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S)로 저장된 제1 부분(MD1)을 호스트 장치로 전송할 수 있다. 제1 부분(MD1)은 호스트 맵 캐시 데이터(MCD_H)로서 RAM (1200)에 저장될 수 있다.In step S231, the controller 120 can read the first part MD1 from the nonvolatile memory device 110 out of the map data MD. The first part MD1 may be stored in the controller 120 as the storage map cache data MCD_S. In step S241, the controller 120 may transmit the first part MD1 stored in the storage map cache data MCD_S to the host device. The first part MD1 may be stored in RAM 1200 as host map cache data MCD_H.

S232 단계에서, 컨트롤러(120)는 맵 데이터(MD) 중에서 제2 부분(MD2)을 불휘발성 메모리 장치(110)로부터 읽을 수 있다. 제2 부분(MD2)은 스토리지 맵 캐시 데이터(MCD_S)로서 컨트롤러(120)에 저장될 수 있다. S242 단계에서, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S)로 저장된 제2 부분(MD2)을 호스트 장치로 전송할 수 있다. 제2 부분(MD2)은 호스트 맵 캐시 데이터(MCD_H)로서 RAM (1200)에 저장될 수 있다.In step S232, the controller 120 can read the second portion MD2 from the nonvolatile memory device 110 out of the map data MD. The second portion MD2 may be stored in the controller 120 as the storage map cache data MCD_S. In step S242, the controller 120 may transmit the second part MD2 stored in the storage map cache data MCD_S to the host device. The second part MD2 may be stored in RAM 1200 as host map cache data MCD_H.

S23n 단계에서, 컨트롤러(120)는 맵 데이터(MD) 중에서 제n 부분(MDn)을 불휘발성 메모리 장치(110)로부터 읽을 수 있다. 제n 부분(MDn)은 스토리지 맵 캐시 데이터(MCD_S)로서 컨트롤러(120)에 저장될 수 있다. S24n 단계에서, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S)로 저장된 제n 부분(MDn)을 호스트 장치로 전송할 수 있다. 제n 부분(MDn)은 호스트 맵 캐시 데이터(MCD_H)로서 RAM (1200)에 저장될 수 있다.In step S23n, the controller 120 can read the n-th part MDn from the nonvolatile memory device 110 in the map data MD. The n-th portion MDn may be stored in the controller 120 as the storage map cache data MCD_S. In step S24n, the controller 120 may transmit the n-th part MDn stored in the storage map cache data MCD_S to the host device. The n-th portion MDn may be stored in the RAM 1200 as host map cache data (MCD_H).

S250 단계에서, 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치(110)는 초기화 업로드를 완료할 수 있다.In step S250, the host device, the controller 120, and the nonvolatile memory device 110 can complete the initialization upload.

상술된 바와 같이, 호스트 장치 및 스토리지 장치(1300)는 파워-온 트레이닝이 완료된 후에, 맵 데이터(MD)의 일부 또는 전부를 RAM (1200)에 업로드할 수 있다. 예를 들어, 맵 데이터(MD)의 일부 또는 전부는 복수회의 불휘발성 메모리 장치(110)에 대한 읽기들 및 호스트 장치에 대한 전송들을 포함할 수 있다. 그러나, 맵 데이터(MD)의 일부 또는 전부는 복수회에 걸쳐 수행되는 것으로 한정되지 않으며, 1회의 불휘발성 메모리 장치(110)에 대한 읽기 및 1회의 호스트 장치에 대한 전송으로 완료될 수 있다.As described above, the host device and storage device 1300 may upload some or all of the map data MD to the RAM 1200 after the power-on training is completed. For example, some or all of the map data MD may include readings to the non-volatile memory device 110 a plurality of times and transmissions to the host device. However, some or all of the map data MD is not limited to being executed a plurality of times, and can be completed by reading one non-volatile memory device 110 and transmitting to one host device.

초기화 업로드가 완료되면, 호스트 장치는 스토리지 장치(1300)에 대한 액세스를 정상적으로 시작할 수 있다. 그러나, 호스트 장치 및 스토리지 장치(1300)는 초기화 업로드를 수행하여야 하는 것으로 한정되지 않으며, 초기화 업로드는 생략될 수 있다. 호스트 장치는 초기화 업로드 없이 스토리지 장치(1300)에 대한 액세스를 정상적으로 수행할 수 있다.When the initialization upload is completed, the host device can normally start access to the storage device 1300. However, the host device and the storage device 1300 are not limited to performing the initialization upload, and the initialization upload may be omitted. The host device can normally perform access to the storage device 1300 without initialization upload.

도 4는 호스트 장치가 스토리지 장치(1300)에 맵 데이터(MD)를 요청하는 맵 데이터 요청의 예를 보여준다. 예시적으로, 맵 데이터 요청은 UFS (Universal Flash Storage)의 커맨드 UPIU (UFS Protocol Information Unit)를 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 전송하는 맵 데이터 요청은 UFS의 커맨드 UPIU로 한정되지 않는다. 맵 데이터 요청은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.4 shows an example of a map data request in which the host apparatus requests map data (MD) to the storage apparatus 1300. FIG. Illustratively, the map data request is described with reference to a command UPIU (UFS Protocol Information Unit) of UFS (Universal Flash Storage). However, the map data request that the host device sends to the storage device 1300 is not limited to the command UPIU of the UFS. The map data request may be suitably selected according to the type of interface between the host device and the storage device 1300. [

커맨드 UPIU는 제0 내지 제31 블록들(0~31), 예를 들어 제0 내지 제31 바이트들을 포함할 수 있다. 제0 블록(0)은 트랜잭션 타입을 가리킨다. 예를 들어, 커맨드 UPIU의 경우, 제0 블록(0)은 'xx00 0001b'일 수 있다.The command UPIU may include the 0th to 31st blocks (0 to 31), for example, the 0th to 31st bytes. The zeroth block (0) indicates the transaction type. For example, in the case of the command UPIU, the 0th block (0) may be 'xx00 0001b'.

제1 블록은 플래그(Flag)를 가리킨다. 플래그(Flag)는 읽기를 가리키는 읽기플래그, 쓰기를 가리키는 쓰기 플래그, 그리고 특성을 가리키는 특성 플래그를 포함할 수 있다. 예를 들어, 읽기 플래그는 커맨드 UPIU가 읽기와 연관된 것임을 가리킨다. 쓰기 플래그는 커맨드 UPIU가 쓰기와 연관된 것임을 가리킨다. 특성 플래그는 커맨드 UPIU가 단순한 것인지(simple), 순차 수행되어야 하는 것인지(ordered), 큐의 헤드로 인큐되어야 하는 것인지(head of queue) 등을 가리킬 수 있다.The first block indicates a flag (Flag). The flag may include a read flag indicating a read, a write flag indicating a write, and a property flag indicating a property. For example, the read flag indicates that the command UPIU is associated with a read. The write flag indicates that the command UPIU is associated with a write. The property flags may indicate whether the command UPIU is simple (simple), ordered (sequential), head of queue, or the like.

제2 블록(2)은 목표 장치의 논리 번호(LUN, Logical Unit Number)를 가리킨다. 제3 블록(3)은 작업 태그(Task Tag)를 가리킨다.The second block 2 indicates the logical number (LUN, Logical Unit Number) of the target device. The third block 3 indicates a task tag.

제4 블록(4)의 일부는 제1 옵션 블록(OB1)으로 사용되고, 나머지 일부는 커맨드 셋 타입을 가리킬 수 있다. 예를 들어, 커맨드 셋 타입은 스카시(SCSI) 커맨드 셋, UFS 특화 커맨드 셋(UFS specific command set), 벤더 특화 커맨드 셋(Vendor specific command set) 등을 포함할 수 있다.A part of the fourth block 4 may be used as the first option block OB1, and the remaining part may indicate the command set type. For example, the command set type may include a SCSI (SCSI) command set, a UFS specific command set, a vendor specific command set, and the like.

제5 내지 제7 블록들(5~7)은 제1 옵션 블록(OB)으로 사용될 수 있다. 제8 블록(8)은 EHS (Extra Header Segment)의 전체 길이를 가리킨다. 제9 블록(9)은 제1 옵션 블록(OB1)으로 사용될 수 있다. 제10 및 제11 블록들(10, 11)은 데이터 세그먼트 길이(Data Segment Length)를 가리키며, 최상위 비트(MSB) 내지 최하위 비트(LSB)를 가리킨다. 데이터 세그먼트 길이(Data Segment Length)는 데이터 세그먼트의 유효 바이트들의 수를 가리킨다.The fifth to seventh blocks 5 to 7 may be used as the first option block OB. The eighth block 8 indicates the total length of the EHS (Extra Header Segment). The ninth block 9 may be used as the first option block OB1. The tenth and eleventh blocks 10 and 11 indicate the data segment length and indicate the most significant bit (MSB) to the least significant bit (LSB). The data segment length indicates the number of valid bytes in the data segment.

제12 내지 제15 블록들(12~15)은 호스트 장치가 스토리지 장치(1300)로부터 수신할 데이터의 사이즈 또는 호스트 장치가 스토리지 장치(1300)에 전달할 데이터의 사이즈를 가리킨다.The twelfth to fifteenth blocks 12 to 15 indicate the size of data to be received from the storage device 1300 by the host device or the size of data to be transmitted to the storage device 1300 by the host device.

제16 내지 제31 블록들(16~31)은 0 내지 제15 커맨드 디스크립터 블록들(CDB[0]~CDB[15], command descriptor blocks)을 각각 포함할 수 있다. 제16 내지 제31 블록들(16~31)은 UFS 또는 SCSI (Small Computer System Interface)에 기반한 커맨드 및 어드레스를 포함할 수 있다.The 16th to 31st blocks 16 to 31 may include 0 to 15 command descriptor blocks (CDB [0] to CDB [15], command descriptor blocks), respectively. The 16th to 31st blocks 16 to 31 may include a command and an address based on UFS or Small Computer System Interface (SCSI).

커맨드 UPIU의 제31 블록(31) 이후에, 헤더의 단대단 순환중복검사(end-to-end CRC (Cyclic Redundancy Check)) 코드(Header E2ECRC)가 옵션으로 추가될 수 있다. 예를 들어, 제0 필드의 첫 번째 비트(HD)가 '0'인 경우, 헤더의 단대단 순환중복검사 코드는 생략될 수 있다.An end-to-end Cyclic Redundancy Check (CRC) code (Header E2ECRC) may be optionally added after the 31st block 31 of the command UPIU. For example, if the first bit (HD) of the 0th field is '0', the end-to-end cyclic redundancy check code of the header may be omitted.

제4 블록(4)의 일부, 제5 내지 제7 블록들(5~7), 그리고 제9 블록(9)은 제1 옵션 블록(OB1)으로 사용된다. 제1 옵션 블록(OB1)은 커맨드 UPIU가 물리 어드레스(PA)를 포함할 때에 시그니처(SIG, signature)를 포함할 수 있다. 커맨드 UPIU가 물리 어드레스(PA)를 포함하지 않는 경우, 제1 옵션 블록(OB1)은 시그니처(SIG)를 포함하지 않을 수 있다. 제1 옵션 블록(OB1)이 시그니처(SIG)를 포함하지 않을 때에, 제1 옵션 블록(OB1) 중 적어도 일부는 예비 블록(reserved)으로 사용될 수 있다. 제1 옵션 블록(OB1)이 시그니처를 포함할 때에도, 제1 옵션 블록(OB1) 중 적어도 일부는 예비 블록(reserved)으로 사용될 수 있다. 시그니처(SIG)에 대해서는 첨부된 도면들을 참조하여 더 상세하게 후술된다.Part of the fourth block 4, the fifth to seventh blocks 5 to 7, and the ninth block 9 are used as the first option block OB1. The first option block OB1 may include a signature (SIG) when the command UPIU includes the physical address PA. If the command UPIU does not include the physical address PA, the first option block OB1 may not include the signature SIG. When the first option block OB1 does not include the signature SIG, at least some of the first option blocks OB1 may be used as a reserved block. Even when the first option block OB1 includes a signature, at least a part of the first option block OB1 can be used as a reserved block. The signature SIG will be described in more detail below with reference to the accompanying drawings.

도 5는 호스트 장치가 스토리지 장치(1300)에 맵 데이터(MD)를 요청하는 맵 데이터 요청의 커맨드 디스크립터 블록(CDB)의 예를 보여준다. 예시적으로, 맵 데이터 요청은 UFS (Universal Flash Storage)의 리드 버퍼 커맨드(Read Buffer Command)의 커맨드 디스크립터 블록(CDB)을 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 전송하는 맵 데이터 요청은 UFS의 리드 버퍼 커맨드(Read Buffer Command)의 커맨드 디스크립터 블록(CDB)으로 한정되지 않는다. 맵 데이터 요청은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.5 shows an example of a command descriptor block (CDB) of a map data request in which the host apparatus requests map data (MD) to the storage apparatus 1300. [ Illustratively, a map data request is described with reference to a command descriptor block (CDB) of a read buffer command of a UFS (Universal Flash Storage). However, the map data request transmitted from the host apparatus to the storage apparatus 1300 is not limited to the command descriptor block (CDB) of the UFS read buffer command. The map data request may be suitably selected according to the type of interface between the host device and the storage device 1300. [

도 1, 도 4 및 도 5를 참조하면, 커맨드 디스크립터 블록(CDB)의 행들은 커맨드 디스크립터 블록(CDB)의 각 바이트(Byte)를 가리킨다. 예시적으로, 리드 버퍼 커맨드의 커맨드 디스크립터 블록(CDB)은 제0 내지 제9 바이트들(0~9)을 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 열들은 커맨드 디스크립터 블록(CDB)의 각 바이트의 각 비트(Bit)를 가리킨다. 예를 들어, 각 바이트는 제0 내지 제7 비트들(0~7)을 포함할 수 있다.Referring to Figures 1, 4 and 5, the rows of the command descriptor block (CDB) indicate each byte of the command descriptor block (CDB). Illustratively, the command descriptor block (CDB) of the read buffer command may include the 0th through 9th bytes (0 through 9). The columns of the command descriptor block (CDB) indicate the respective bits (Bit) of each byte of the command descriptor block (CDB). For example, each byte may comprise the 0th through 7th bits (0 through 7).

커맨드 디스크립터 블록(CDB)의 제0 바이트(0)의 제0 내지 제7 비트들(0~7)은 동작 코드(Operation Code)를 가리킨다. 예를 들어, 리드 버퍼 커맨드의 동작 코드는 '3Ch'일 수 있다.The 0th to 7th bits (0 to 7) of the 0th byte (0) of the command descriptor block (CDB) indicate an operation code. For example, the operation code of the read buffer command may be '3Ch'.

리드 버퍼 커맨드의 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제0 내지 제4 비트들(0~4)은 모드(MODE)를 가리킬 수 있다. 예를 들어, 모드는 사용자 특화(vendor specific) 또는 데이터를 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 제9 바이트(9)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The 0th to 4th bits (0 to 4) of the first byte 1 of the command buffer block (CDB) of the read buffer command may indicate a mode (MODE). For example, the mode may include vendor specific or data. The ninth byte 9 of the command descriptor block (CDB) may include a control CONTROL. For example, the control may be '00h'.

리드 버퍼 커맨드가 일반 목적을 위해 사용될 때와 맵 데이터(MD)를 요청하기 위해 사용될 때에, 리드 버퍼 커맨드의 커맨드 디스크립터 블록(CDB)의 나머지구성이 달라질 수 있다. 예를 들어, 리드 버퍼 커맨드의 일반 목적은 논리 유닛의 버퍼 메모리의 테스트, 서비스 딜리버리 서브시스템(service delivery subsystem)의 무결성(integrity)의 테스트, 스토리지 장치(1300)의 마이크로코드의 다운로드, 스토리지 장치(1300)의 에러 히스토리 및 통계의 획득, 커맨드 및 데이터의 터널링(tunneling) 등과 같이, 맵 데이터(MD)의 요청을 제외한 목적으로 UFS의 스펙(specification)에 의해 또는 사용자(vendor)에 의해 채용된 목적일 수 있다.The remaining configuration of the command buffer block (CDB) of the read buffer command may be different when the read buffer command is used for general purposes and when used to request map data (MD). For example, the general purpose of the read buffer command is to test the buffer memory of the logical unit, to test the integrity of the service delivery subsystem, to download the microcode of the storage device 1300, 1300) by the specifications of the UFS for purposes other than the request of the map data (MD), such as obtaining the error history and statistics of the data, the tunneling of the command and the data, Lt; / RTI >

리드 버퍼 커맨드가 일반 목적을 위해 사용될 때에, 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제5 내지 제7 비트들(5~7)은 예비 블록(reserved)으로 사용될 수 있다. 커맨드 디스크립터 블록(CDB)의 제2 바이트(2)의 제0 내지 제7 비트들(0~7)은 버퍼 식별자(BUFFER ID)로 사용될 수 있다. 버퍼 식별자(BUFFER ID)는 논리 유닛 내의 버퍼를 식별할 수 있다. 커맨드 디스크립터 블록(CDB)의 제3 내지 제5 바이트들(3~5)은 버퍼 오프셋(BUFFER OFFSET)을 가리킬 수 있다. 버퍼 오프셋(BUFFER OFFSET)은 최상위 비트(MSB)로부터 최하위 비트(LSB)를 포함할 수 있다. 버퍼 오프셋(BUFFER OFFSET)은 버퍼 식별자에 의해 식별된 버퍼의 바이트 오프셋을 가리킬 수 있다. 커맨드 디스크립터 블록(CDB)의 제6 내지 제8 바이트들(6~8)은 할당 길이(ALLOCATION LENGTH)를 가리킬 수 있다. 할당 길이(ALLOCATION LENGTH)는 최상위 비트(MSB)로부터 최하위 비트(LSB)를 포함할 수 있다. 할당 길이(ALLOCATION LENGTH)는 호스트 장치가 수신을 원하는 바이트 오프셋(BUFFER OFFSET)으로부터의 바이트들의 수를 가리킬 수 있다. When the read buffer command is used for general purposes, the fifth to seventh bits 5 to 7 of the first byte 1 of the command descriptor block (CDB) can be used as a reserved block. The 0th to 7th bits (0 to 7) of the second byte 2 of the command descriptor block (CDB) can be used as a buffer identifier (BUFFER ID). The buffer identifier (BUFFER ID) can identify the buffer in the logical unit. The third to fifth bytes 3 to 5 of the command descriptor block (CDB) may indicate a buffer offset (BUFFER OFFSET). The buffer offset (BUFFER OFFSET) may include the least significant bit (LSB) from the most significant bit (MSB). The buffer offset (BUFFER OFFSET) may indicate the byte offset of the buffer identified by the buffer identifier. The sixth through eighth bytes 6 through 8 of the command descriptor block (CDB) may indicate the ALLOCATION LENGTH. The ALLOCATION LENGTH may include the least significant bit (LSB) from the most significant bit (MSB). The ALLOCATION LENGTH may indicate the number of bytes from the BUFFER OFFSET that the host device desires to receive.

리드 버퍼 커맨드가 맵 데이터(MD)의 요청을 위한 목적으로 사용될 때에, 커맨드 디스크립터 블록(CDB)의 제1 바이트의 제5 내지 제7 비트들(5~7), 그리고 제2 내지 제8 바이트들은 제2 옵션 블록(OB2)으로 사용될 수 있다. 제2 옵션 블록(OB2)은 맵 데이터(MD)의 요청을 가리키는 아규먼트(argument) 또는 디스크립션(description)을 포함할 수 있다. 제2 옵션 블록(OB2)은 호스트 장치가 수신을 원하는 맵 데이터(MD)의 부분에 대한 정보를 포함할 수 있다. 예를 들어, 제2 옵션 블록(OB2)은 수신을 원하는 맵 데이터(MD)의 부분과 연관된 논리 어드레스들 또는 논리 어드레스들의 정보를 포함할 수 있다. 제2 옵션 블록(OB2)은 호스트 장치가 수신을 원하는 맵 데이터(MD)의 사이즈에 대한 정보를 포함할 수 있다.When the read buffer command is used for the purpose of requesting the map data MD, the fifth to seventh bits 5 to 7 of the first byte of the command descriptor block (CDB) and the second to eighth bytes And can be used as the second option block OB2. The second option block OB2 may include an argument or a description indicating the request of the map data MD. The second option block OB2 may include information on a portion of the map data MD that the host device wants to receive. For example, the second option block OB2 may comprise information of logical addresses or logical addresses associated with the portion of the map data MD desired to be received. The second option block OB2 may include information on the size of the map data MD desired to be received by the host device.

도 6은 호스트 장치가 스토리지 장치(1300)에 맵 데이터(MD)를 요청하는 맵 데이터 요청의 커맨드 디스크립터 블록(CDB)의 다른 예를 보여준다. 예시적으로, 맵 데이터 요청은 UFS (Universal Flash Storage)의 모드 센스 커맨드(Mode Sense Command)의 커맨드 디스크립터 블록(CDB)을 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 전송하는 맵 데이터 요청은 UFS의 모드 센스 커맨드(Read Buffer Command)의 커맨드 디스크립터 블록(CDB)으로 한정되지 않는다. 맵 데이터 요청은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.6 shows another example of a command descriptor block (CDB) of a map data request in which the host apparatus requests map data (MD) to the storage apparatus 1300. Fig. Illustratively, a map data request is described with reference to a command descriptor block (CDB) of a mode sense command of UFS (Universal Flash Storage). However, the map data request transmitted from the host apparatus to the storage apparatus 1300 is not limited to the command descriptor block (CDB) of the UFS mode sense command (Read Buffer Command). The map data request may be suitably selected according to the type of interface between the host device and the storage device 1300. [

도 1, 도 4 및 도 6을 참조하면, 커맨드 디스크립터 블록(CDB)의 행들은 커맨드 디스크립터 블록(CDB)의 각 바이트(Byte)를 가리킨다. 예시적으로, 모드 센스 커맨드의 커맨드 디스크립터 블록(CDB)은 제0 내지 제9 바이트들(0~9)을 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 열들은 커맨드 디스크립터 블록(CDB)의 각 바이트의 각 비트(Bit)를 가리킨다. 예를 들어, 각 바이트는 제0 내지 제7 비트들(0~7)을 포함할 수 있다.Referring to Figures 1, 4 and 6, the rows of the command descriptor block (CDB) indicate each byte of the command descriptor block (CDB). Illustratively, the command descriptor block (CDB) of the mode sense command may include the 0th through 9th bytes (0 through 9). The columns of the command descriptor block (CDB) indicate the respective bits (Bit) of each byte of the command descriptor block (CDB). For example, each byte may comprise the 0th through 7th bits (0 through 7).

커맨드 디스크립터 블록(CDB)의 제0 바이트(0)의 제0 내지 제7 비트들(0~7)은 동작 코드(Operation Code)를 가리킨다. 예를 들어, 리드 버퍼 커맨드의 동작 코드는 '5Ah'일 수 있다.The 0th to 7th bits (0 to 7) of the 0th byte (0) of the command descriptor block (CDB) indicate an operation code. For example, the operation code of the read buffer command may be '5Ah'.

커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제3 비트(3)는 'DBD'의 값을 가리키며, '1b'로 지정된다. 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제4 비트(4)는 'LLBAA'의 값을 가리키며, '0b'로 지정된다. 커맨드 디스크립터 블록(CDB)의 제9 바이트(9)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The third bit 3 of the first byte 1 of the command descriptor block CDB indicates the value of 'DBD' and is designated '1b'. The fourth bit 4 of the first byte 1 of the command descriptor block CDB indicates the value of 'LLBAA' and is designated as '0b'. The ninth byte 9 of the command descriptor block (CDB) may include a control CONTROL. For example, the control may be '00h'.

모드 센스 커맨드가 일반 목적을 위해 사용될 때와 맵 데이터(MD)를 요청하기 위해 사용될 때에, 모드 센스 커맨드의 커맨드 디스크립터 블록(CDB)의 나머지구성이 달라질 수 있다. 예를 들어, 모드 센스 커맨드의 일반 목적은 스토리지 장치(1300) 내의 파라미터들을 요청하는 것과 같이, 맵 데이터(MD)의 요청을 제외한 목적으로 UFS의 스펙(specification)에 의해 또는 사용자(vendor)에 의해 채용된 목적일 수 있다.The remaining configuration of the command descriptor block (CDB) of the mode sense command may be changed when the mode sense command is used for general purpose and when it is used for requesting the map data (MD). For example, the general purpose of the mode sense command may be to store data by the UFS specification for purposes other than the request of the map data (MD), such as by requesting parameters in the storage device 1300, It may be an adopted purpose.

리드 버퍼 커맨드가 일반 목적을 위해 사용될 때에, 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제0 내지 제2 비트들(0~2) 및 제5 내지 제7 비트들(5~7)은 예비 블록(reserved)으로 사용될 수 있다. 커맨드 디스크립터 블록(CDB)의 제2 바이트의 제0 내지 제5 비트들(0~5)은 페이지 코드(PAGE CODE)를 가리킬 수 있다. 페이지 코드(PAGE CODE)는 반환될 페이지 모드 페이지를 식별할 수 있다. 커맨드 디스크립터 블록(CDB)의 제6 및 제7 비트들(6, 7)은 페이지 컨트롤(PC)을 가리킬 수 있다. 페이지 컨트롤(PC)은 모드 페이지들 중에서 반환될 모드 파라미터 값들의 타입을 식별할 수 있다. 예를 들어, 페이지 컨트롤(PC)은 현재 값의 반환, 변경 가능한 값을 가리키는 비트 마스크의 반환, 기본 값들의 반환, 또는 저장된 값들의 반환을 식별할 수 있다. 커맨드 디스크립터 블록(CDB)의 의 제3 바이트(3)는 서브페이지 코드(SUBPAGE CODE)를 가리킬 수 있다. 서브페이지 코드(SUBPAGE CODE)는 반환될 서브페이지 모드 페이지를 식별할 수 있다. 커맨드 디스크립터 블록(CDB)의 제4 내지 제6 바이트들(4~6)은 예비 블록(reserved)일 수 있다. 커맨드 디스크립터 블록(CDB)의 제7 및 제8 바이트들(7, 8)은 할당 길이(ALLOCATION LENGTH)를 가리킬 수 있다. 할당 길이(ALLOCATION LENGTH)는 최상위 비트(MSB)로부터 최하위 비트(LSB)를 포함할 수 있다. 할당 길이(ALLOCATION LENGTH)는 호스트 장치가 수신을 원하는 페이지들의 바이트들의 수를 가리킬 수 있다.When the read buffer command is used for general purposes, the 0th to 2nd bits (0 to 2) and the 5th to 7th bits (5 to 7) of the first byte 1 of the command descriptor block (CDB) Can be used as a reserved block. The 0th to 5th bits (0 to 5) of the second byte of the command descriptor block (CDB) may indicate a page code (PAGE CODE). The page code (PAGE CODE) can identify the page mode page to be returned. The sixth and seventh bits 6, 7 of the command descriptor block (CDB) may point to a page control (PC). The page control (PC) can identify the type of mode parameter values to be returned among the mode pages. For example, a page control (PC) can identify the return of a current value, the return of a bit mask indicating a changeable value, the return of default values, or the return of stored values. The third byte 3 of the command descriptor block (CDB) may indicate a sub page code (SUBPAGE CODE). The SUBPAGE CODE may identify the subpage mode page to be returned. The fourth to sixth bytes 4 to 6 of the command descriptor block (CDB) may be a reserved block. The seventh and eighth bytes 7, 8 of the command descriptor block (CDB) may indicate the ALLOCATION LENGTH. The ALLOCATION LENGTH may include the least significant bit (LSB) from the most significant bit (MSB). The ALLOCATION LENGTH may indicate the number of bytes of pages that the host device wishes to receive.

모드 센스 커맨드가 맵 데이터(MD)의 요청을 위한 목적으로 사용될 때에, 커맨드 디스크립터 블록(CDB)의 제1 바이트의 제0 내지 제2 비트들(0~2) 및 제5 내지 제7 비트들(5~7), 그리고 제2 내지 제8 바이트들은 제3 옵션 블록(OB3)으로 사용될 수 있다. 제3 옵션 블록(OB3)은 맵 데이터(MD)의 요청을 가리키는 아규먼트(argument) 또는 디스크립션(description)을 포함할 수 있다. 제3 옵션 블록(OB3)은 호스트 장치가 수신을 원하는 맵 데이터(MD)의 부분에 대한 정보를 포함할 수 있다. 예를 들어, 제3 옵션 블록(OB3)은 수신을 원하는 맵 데이터(MD)의 부분과 연관된 논리 어드레스들 또는 논리 어드레스들의 정보를 포함할 수 있다. 제2 옵션 블록(OB2)은 호스트 장치가 수신을 원하는 맵 데이터(MD)의 사이즈에 대한 정보를 포함할 수 있다.When the mode sense command is used for the purpose of requesting the map data MD, the 0th to 2nd bits (0 to 2) and the 5th to 7th bits (1 to 4) of the first byte of the command descriptor block 5 to 7), and the second to eighth bytes may be used as the third option block OB3. The third option block OB3 may include an argument or a description indicating the request of the map data MD. The third option block OB3 may include information on a portion of the map data MD that the host device wants to receive. For example, the third option block OB3 may include information of logical addresses or logical addresses associated with the portion of the map data MD that it wants to receive. The second option block OB2 may include information on the size of the map data MD desired to be received by the host device.

도 7은 스토리지 장치가 도 5 또는 도 6의 요청에 응답하여 맵 데이터(MD)를 호스트 장치로 전송하는 응답의 예를 보여준다. 예시적으로, 맵 데이터 응답은 UFS (Universal Flash Storage)의 데이터 인 UPIU (DATA IN UPIU)를 참조하여 설명된다. 그러나, 스토리지 장치(1300)가 호스트 장치로 전송하는 맵 데이터 응답은 UFS의 데이터 인 UPIU (DATA IN UPIU)로 한정되지 않는다. 맵 데이터 응답은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.Fig. 7 shows an example of a response in which the storage device transmits map data (MD) to the host device in response to the request of Fig. 5 or Fig. Illustratively, the map data response is described with reference to UPIU (DATA IN UPIU), which is data of UFS (Universal Flash Storage). However, the map data response transmitted from the storage device 1300 to the host device is not limited to the UPIU (DATA IN UPIU) which is the UFS data. The map data response may be suitably selected according to the type of interface between the host apparatus and the storage apparatus 1300. [

도 1 및 도 7을 참조하면, 데이터 인 UPIU (DATA IN UPIU)는 제0 내지 제31 블록들(0~31), 예를 들어 제0 내지 제31 바이트들을 포함한다. 제0 블록은 트랜잭션 타입을 가리킨다. 데이터 인 UPIU (DATA IN UPIU)의 경우, 트랜잭션 타입은 'xx10 0010b'일 수 있다. 제1 블록은 플래그(Flag)를 가리킨다. 제2 블록(2)은 논리 번호(LUN, Logical Unit Number)를 가리킨다. 제3 블록(3)은 작업 태그(Task Tag)를 가리킨다.Referring to FIGS. 1 and 7, the data UPIU (DATA IN UPIU) includes 0th to 31st blocks (0 to 31), for example, 0th to 31st bytes. The 0 block indicates the transaction type. For data UPIU (DATA IN UPIU), the transaction type may be 'xx10 0010b'. The first block indicates a flag (Flag). The second block 2 indicates a logical number (LUN, Logical Unit Number). The third block 3 indicates a task tag.

데이터 인 UPIU (DATA IN UPIU)의 제4 내지 제7 블록들은 예비 블록들(reserved)일 수 있다. 제8 블록은 EHS (Extra Header Segment)의 전체 길이를 가리킨다. 제9 블록은 예비 블록(reserved)일 수 있다. 제10 및 제11 블록들(10, 11)은 데이터 세그먼트 길이(Data Segment Length)를 가리키며, 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함한다. 데이터 세그먼트 길이(Data Segment Length)는 데이터 세그먼트(Data Segment)의 유효 바이트들의 수를 가리킨다. 제12 내지 제15 블록들(12~15)은 데이터 버퍼 오프셋(Data Buffer Offset)을 가리키며, 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함한다. 데이터 버퍼 오프셋(Data Buffer Offset)은 전체 데이터 중에서 해당 데이터 인 UPIU (DATA IN UPIU)에 포함된 데이터의 오프셋을 가리킨다. 제16 내지 제19 블록들(16~19)은 데이터 전송 카운트(Data Transfer Count)를 가리키며, 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함한다. 데이터 전송 카운트(Data Transfer Count)는 데이터 세그먼트(Data Segment)에 로드된 바이트들의 수, 더 상세하게는 유효한 바이트들의 수를 가리킨다.The fourth through seventh blocks of the UPIU (DATA IN UPIU), which is data, may be reserved blocks. The eighth block indicates the total length of the EHS (Extra Header Segment). The ninth block may be a reserved block. The tenth and eleventh blocks 10 and 11 indicate a data segment length and include a most significant bit (MSB) to a least significant bit (LSB). The Data Segment Length indicates the number of valid bytes in the Data Segment. The twelfth to fifteenth blocks 12 to 15 indicate a data buffer offset and include a most significant bit (MSB) to a least significant bit (LSB). The data buffer offset indicates the offset of the data included in the corresponding data UPIU (DATA IN UPIU) among the entire data. The 16th to 19th blocks 16-19 refer to a data transfer count and include a most significant bit (MSB) to a least significant bit (LSB). The Data Transfer Count indicates the number of bytes loaded into the Data Segment, and more specifically, the number of valid bytes.

데이터 인 UPIU (DATA IN UPIU)의 제20 내지 제31 블록들(20~31)은 예비 블록들(reserved)일 수 있다. 데이터 인 UPIU (DATA IN UPIU)의 제31 블록(31) 이후에, 헤더의 단대단 순환중복검사(end-to-end CRC (Cyclic Redundancy Check)) 코드(Header E2ECRC)가 옵션으로 추가될 수 있다. 예를 들어, 제0 필드의 첫 번째 비트(HD)가 '0'인 경우, 헤더의 단대단 순환중복검사 코드는 생략될 수 있다.The 20th to 31st blocks 20 to 31 of the UPIU (DATA IN UPIU), which is data, may be reserved blocks. An end-to-end Cyclic Redundancy Check (CRC) code (Header E2ECRC) of the header may be optionally added after the 31st block 31 of the UPIU (DATA IN UPIU) . For example, if the first bit (HD) of the 0th field is '0', the end-to-end cyclic redundancy check code of the header may be omitted.

헤더의 단대단 순환중복검사 코드(Header E2ECRC) 이후에 또는 제31 블록(31)의 이후에, 데이터 세그먼트(Data Segment)가 추가된다. 데이터 세그먼트(Data Segment)는 제k 내지 제'k+길이(Length)-1' 세그먼트들(DATA[0]~DATA[Length-1])을 포함한다. 헤더의 단대단 순환중복검사 코드(Header E2ECRC)가 생략될 때에, 즉 제0 필드의 첫 번째 비트(HD)가 '0'인 경우, k는 32일 수 있다. 길이(Length)는 제10 및 제11 블록들(10, 11)의 데이터 세그먼트 길이(Data Segment Length)에 의해 지정된 값일 수 있다.After the end-to-end cyclic redundancy check code (Header E2ECRC) of the header or after the 31st block 31, a data segment is added. The data segment includes k-th to k + k-length -1 segments (DATA [0] to DATA [Length-1]). When the end-to-end cyclic redundancy check code (Header E2ECRC) of the header is omitted, that is, if the first bit (HD) of the 0th field is '0', k may be 32. The length may be a value specified by the data segment length of the tenth and eleventh blocks 10 and 11. [

데이터 인 UPIU (DATA IN UPIU)의 제'k+길이(Length)-1' 필드 이후에, 데이터의 단대단 순환중복검사(end-to-end CRC (Cyclic Redundancy Check)) 코드(Data E2ECRC)가 옵션으로 추가될 수 있다. 예를 들어, 제0 필드의 두 번째 비트(DD)가 '0'인 경우, 데이터의 단대단 순환중복검사 코드(Data E2ECRC)는 생략될 수 있다.An end-to-end Cyclic Redundancy Check (CRC) code (Data E2ECRC) of the data is written after the k + length -1 field of the UPIU (DATA IN UPIU) . For example, if the second bit (DD) of the 0th field is '0', the end-to-end cyclic redundancy check code (Data E2ECRC) of the data may be omitted.

스토리지 장치(1300)는 맵 데이터(MD)를 데이터 세그먼트(Data Segment)에 로드하여 호스트 장치로 전송할 수 있다. 예를 들어, 스토리지 장치(1300)는 호스트 장치에 의해 요청된 논리 주소 또는 사이즈에 해당하는 맵 데이터(MD)의 부분을 데이터 세그먼트(Data Segment)에 로드하여 호스트 장치로 전송할 수 있다.The storage device 1300 may load the map data MD into a data segment and transmit it to the host device. For example, the storage device 1300 may load a portion of map data (MD) corresponding to the logical address or size requested by the host device into a data segment and transmit the loaded data segment to the host device.

도 8은 불휘발성 메모리 장치(110), 컨트롤러(120), 그리고 호스트 장치의 RAM (1200)에서 맵 데이터(MD), 스토리지 맵 캐시 데이터(MCD_S), 그리고 호스트 맵 캐시 데이터(MCD_H)가 각각 관리되는 예를 보여준다. 도 1 및 도 8을 참조하면, 불휘발성 메모리 장치(110)에 저장된 맵 데이터(MD)는 불휘발성 메모리 장치(110)의 저장 공간의 물리 주소들(PA) 및 논리 주소들(LA) 사이의 사상 정보를 포함할 수 있다. 맵 데이터(MD)는 맵 데이터 블록의 단위로 관리될 수 있다. 각 맵 데이터 블록은 복수의 엔트리들을 포함하며, 각 엔트리는 연속적인 논리 어드레스들(LA) 및 연속적인 물리 어드레스들(PA) 사이의 사상 정보를 포함할 수 있다.8 shows map data MD, storage map cache data MCD_S, and host map cache data MCD_H in the nonvolatile memory device 110, the controller 120, and the RAM 1200 of the host apparatus, . 1 and 8, the map data MD stored in the nonvolatile memory device 110 is stored in the nonvolatile memory device 110 in the storage space of the nonvolatile memory device 110 between the physical addresses PA and the logical addresses LA. And may include mapping information. The map data (MD) can be managed in units of map data blocks. Each map data block includes a plurality of entries, and each entry may contain mapping information between consecutive logical addresses (LA) and consecutive physical addresses (PA).

맵 데이터 블록들에 오프셋들(01~12)이 부여될 수 있다. 예를 들어, 오프셋들(01~12)은 각 맵 데이터 블록이 저장되는 불휘발성 메모리 장치(110)의 물리 어드레스들(PA)에 따라, 각 맵 데이터 블록에서 사상되는 논리 어드레스들(LA) 또는 물리 어드레스들(PA)에 따라 부여될 수 있다. 예를 들어, 불휘발성 메모리 장치(110)의 물리 어드레스들 또는 불휘발성 메모리 장치(110)에 부여된 논리 어드레스들을 일정한 간격으로 분할하고, 분할된 각 그룹과 연관된 사상 정보가 각 맵 데이터 블록을 형성할 수 있다. Offsets (01 to 12) may be assigned to the map data blocks. For example, the offsets 01 through 12 may correspond to the logical addresses LA or LA mapped in each map data block, according to the physical addresses PA of the nonvolatile memory device 110 in which each map data block is stored. May be assigned according to physical addresses PA. For example, the physical addresses of the non-volatile memory device 110 or the logical addresses assigned to the non-volatile memory device 110 are divided at regular intervals, and mapping information associated with each divided group forms each map data block can do.

컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 맵 데이터 블록의 단위로 맵 데이터(MD)를 읽고, 스토리지 맵 캐시 데이터(MCD_S)로 저장할 수 있다. 스토리지 맵 캐시 데이터(MCD_S)를 저장할 때에, 컨트롤러(120)는 헤더(HD_S)를 생성할 수 있다. 헤더(HD_S)는 컨트롤러(120)에 스토리지 맵 캐시 데이터(MCD_S)로 저장된 맵 데이터 블록들의 오프셋들을 포함할 수 있다.The controller 120 reads the map data MD in units of map data blocks from the nonvolatile memory device 110 and stores the map data MD in the storage map cache data MCD_S. When storing the storage map cache data MCD_S, the controller 120 can generate the header HD_S. The header HD_S may include the offsets of the map data blocks stored in the storage map cache data MCD_S in the controller 120.

컨트롤러(120)가 스토리지 맵 캐시 데이터(MCD_S)를 호스트 장치로 전송할 때에, 컨트롤러(120)는 시그니처(SIG)를 생성할 수 있다. 예를 들어, 시그니처(SIG)는 각 맵 데이터 블록에 포함된 각 엔트리의 논리 어드레스(LA) 및 물리 어드레스(PA)에 기반하여 생성될 수 있다. 예를 들어, 컨트롤러(120)는 각 맵 데이터 블록의 각 엔트리의 논리 어드레스(LA) 및 물리 어드레스(PA)에 대해 AES (Advanced Encryption Standard)를 이용한 암호화를 수행하거나, 해시 함수를 수행하거나, 스크램블을 수행하여 추가 데이터를 생성할 수 있다. 컨트롤러(120)는 생성된 추가 데이터의 일부 또는 전부를 시그니처(SIG)로 선택할 수 있다. 컨트롤러(120)는 각 맵 데이터 블록의 논리 어드레스들(LA), 물리 어드레스들(PA) 및 시그니처들(SIG)을 오프셋과 함께 호스트 장치로 전송할 수 있다.When the controller 120 transmits the storage map cache data MCD_S to the host device, the controller 120 can generate a signature SIG. For example, a signature SIG may be generated based on a logical address (LA) and a physical address (PA) of each entry included in each map data block. For example, the controller 120 performs encryption using the Advanced Encryption Standard (AES), performs a hash function, or scrambles the logical address (LA) and the physical address (PA) of each entry of each map data block, To generate additional data. The controller 120 may select a part or all of the generated additional data as a signature (SIG). The controller 120 may transmit the logical addresses LA, physical addresses PA and signatures SIG of each map data block to the host device along with the offset.

호스트 장치의 RAM (1200)은 컨트롤러(120)로부터 전송되는 맵 데이터 블록들을 호스트 맵 캐시 데이터(MCD_H)로 저장할 수 있다. 호스트 맵 캐시 데이터(MCD_H)를 저장할 때에, 호스트 장치는 헤더(HD_H)를 생성할 수 있다. 헤더(HD_H)는 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장된 맵 데이터 블록들의 오프셋들을 포함할 수 있다. 호스트 맵 캐시 데이터(MCD_H)로 저장되는 각 맵 데이터 블록은 논리 어드레스들(LA), 물리 어드레스들(PA) 및 시그니처들(SIG)을 포함할 수 있다.The RAM 1200 of the host device may store the map data blocks transmitted from the controller 120 as host map cache data MCD_H. When storing the host map cache data (MCD_H), the host device can generate the header HD_H. The header HD_H may contain the offsets of the map data blocks stored in the host map cache data MCD_H in the RAM 1200. Each map data block stored in the host map cache data MCD_H may include logical addresses LA, physical addresses PA and signatures SIG.

예시적으로, 호스트 장치가 컨트롤러(120)에 맵 데이터(MD)를 요청할 때에, 호스트 장치는 원하는 맵 데이터 블록의 오프셋을 컨트롤러(120)에 전달할 수 있다. 컨트롤러(120)로부터 맵 데이터 블록이 수신될 때에, 호스트 장치는 수신되는 맵 데이터 블록의 오프셋을 헤더(HD_H)의 오프셋과 비교하고, 비교 결과에 따라 신규 추가 또는 갱신을 선택할 수 있다. 호스트 장치가 컨트롤러에 읽기를 요청할 때에, 호스트 장치는 물리 어드레스 및 물리 어드레스가 포함된 맵 데이터 블록의 오프셋을 전송할 수 있다. 컨트롤러(120)는 수신된 맵 데이터 블록의 오프셋과 헤더(HD_S)에 등록된 오프셋을 비교하고, 스토리지 맵 캐시 데이터(MCD_S)에 해당 맵 데이터 블록이 저장되어 있는지 판별할 수 있다.Illustratively, when the host device requests map data (MD) to the controller 120, the host device may forward the offset of the desired map data block to the controller 120. When a map data block is received from the controller 120, the host device can compare the offset of the received map data block with the offset of the header HD_H and select a new addition or update according to the comparison result. When the host device requests the controller to read, the host device can transmit the offset of the map data block including the physical address and the physical address. The controller 120 compares the offset of the received map data block with the offset registered in the header HD_S to determine whether the map data block is stored in the storage map cache data MCD_S.

예시적으로, RAM (1200)에서 호스트 맵 캐시 데이터(MCD_H)를 저장하도록 할당되는 공간의 사이즈는 맵 데이터(MD)의 사이즈와 같거나 그보다 작을 수 있다. 호스트 맵 캐시 데이터(MCD_H)에 할당된 공간의 사이즈가 맵 데이터(MD)의 사이즈보다 작은 경우, 호스트 장치는 호스트 맵 캐시 데이터(MCD_H)의 해제 정책(release policy)를 선택할 수 있다. 예를 들어, 호스트 맵 캐시 데이터(MCD_H)에 할당된 저장 공간에서 새로운 맵 데이터 블록을 저장하는 데에 필요한 공간이 부족한 경우, 호스트 장치는 LRU (Least Recently Used) 정책에 따라 호스트 맵 캐시 데이터(MCD_H)의 일부를 버릴 수 있다.Illustratively, the size of the space allocated to store the host map cache data MCD_H in the RAM 1200 may be equal to or less than the size of the map data MD. If the size of the space allocated to the host map cache data MCD_H is smaller than the size of the map data MD, the host device can select the release policy of the host map cache data MCD_H. For example, when the space required for storing a new map data block in the storage space allocated to the host map cache data (MCD_H) is insufficient, the host apparatus stores host map cache data (MCD_H ) Can be discarded.

예시적으로, RAM (1200)에서 호스트 맵 캐시 데이터(MCD_H)를 저장하도록 할당되는 공간의 사이즈는 맵 데이터(MD)의 사이즈보다 클 수 있다. 맵 데이터(MD)의 사이즈보다 큰 부분은 예비 공간으로 사용될 수 있다. 예를 들어, 스토리지 장치(1300)에서 가비지 컬렉션(Garbage Collection) 또는 웨어 레벨링(Wear Leveling) 등에 의해 맵 데이터(MD)의 갱신이 발생하는 경우, 컨트롤러(120)는 갱신된 부분을 호스트 장치로 전송할 수 있다. 예비 공간은 갱신된 부분을 저장하는 데에 사용될 수 있다. 갱신된 부분에 대응하는 호스트 맵 캐시 데이터(MCD_H)의 구 부분(Old Portion)은 무효화될 수 있다.Illustratively, the size of the space allocated to store the host map cache data MCD_H in the RAM 1200 may be larger than the size of the map data MD. A portion larger than the size of the map data MD can be used as a spare space. For example, when the map data MD is updated by garbage collection or wear leveling in the storage device 1300, the controller 120 transmits the updated portion to the host device . The spare space can be used to store updated portions. The Old Portion of the host map cache data MCD_H corresponding to the updated portion can be invalidated.

도 9는 호스트 장치가 스토리지 장치(1300)에 제1 모드로 맵 데이터(MD)를 요청하는 방법을 보여주는 순서도이다. 도 1 및 도 9를 참조하면, S210 단계에서, 호스트 장치는 컨트롤러(120)에 제1 모드로 맵 데이터(MD)를 요청할 수 있다. 예시적으로, 제1 모드는 도 5의 제2 옵션 블록(OB2) 또는 도 6의 제3 옵션 블록(OB3)에서 지정될 수 있다.9 is a flowchart showing how the host apparatus requests map data (MD) in the first mode to the storage apparatus 1300. FIG. Referring to FIGS. 1 and 9, in step S210, the host device may request map data (MD) to the controller 120 in the first mode. Illustratively, the first mode may be specified in the second option block OB2 of FIG. 5 or the third option block OB3 of FIG.

제1 모드의 맵 데이터 요청에 응답하여, S220 단계에서 컨트롤러(120)는 갱신된 스토리지 맵 캐시 데이터(MCD_S)를 수집할 수 있다. 예를 들어, 컨트롤러(120)는 불휘발성 메모리 장치(110)에 저장된 맵 데이터(MD)로부터 읽혀 컨트롤러(120)의 스토리지 맵 캐시 데이터(MCD_S)에 새로 추가되는 스토리지 맵 캐시 데이터(MCD_S)를 수집할 수 있다. 예를 들어, 컨트롤러(120)는 불휘발성 메모리 장치(110)에 저장된 맵 데이터(MD) 중에서 컨트롤러(120)에 스토리지 맵 캐시 데이터(MCD_S)로 로드된 후에 논리 어드레스들(LA)과 물리 어드레스들(PA) 사이의 사상 관계가 갱신된 스토리지 맵 캐시 데이터(MCD_S)를 수집할 수 있다. 예를 들어, 이전에 호스트 장치로 전송되었으며 갱신이 발생하지 않은 스토리지 맵 캐시 데이터(MCD_S)는 수집 대상으로부터 제외될 수 있다.In response to the map data request of the first mode, the controller 120 may collect the updated storage map cache data (MCD_S) in step S220. For example, the controller 120 reads from the map data MD stored in the nonvolatile memory device 110 and collects storage map cache data MCD_S newly added to the storage map cache data MCD_S of the controller 120 can do. For example, the controller 120 loads the storage map cache data MCD_S from the map data MD stored in the nonvolatile memory device 110 to the controller 120, and then stores the logical addresses LA and physical addresses It is possible to collect the storage map cache data (MCD_S) in which the mapping relationship between the storage map cache data (PA) is updated. For example, the storage map cache data (MCD_S) that was previously transmitted to the host device and has not been updated can be excluded from the collection target.

예를 들어, 컨트롤러(120)는 수집된 스토리지 캐시 맵 데이터(MCD_S)의 사이즈가 기준 사이즈에 도달할 때까지, 갱신된 스토리지 캐시 맵 데이터(MCD_S)의 수집을 시작한 후 한 주기가 경과하여 다음 주기에 도달할 때까지, 또는 호스트 장치로부터 이슈된 요청들이 모두 완료되어 스토리지 장치(1300)에 계류중인(pending)인 호스트 요청이 존재하지 않을 때까지 갱신된 스토리지 캐시 맵 데이터(KCD_S)를 수집할 수 있다.For example, the controller 120 starts collecting the updated storage cache map data (MCD_S) until the size of the collected storage cache map data (MCD_S) reaches the reference size, (KCD_S) until there is no host request pending on the storage device 1300 until all of the outstanding requests from the host device have been completed have.

갱신된 스토리지 캐시 캡 데이터(MCD_S)의 수집이 완료되면, S230 단계에서 컨트롤러(120)는 수집된 스토리지 캐시 맵 데이터(MCD_S)를 호스트 장치로 전송할 수 있다. S240 단계에서, 컨트롤러(120)는 수집된 캐시 맵 데이터(MCD_S) 중에서 갱신된 캐시 맵 데이터(MCD_S)를 불휘발성 메모리 장치(110)에 기입할 수 있다.When the collection of the updated storage cache data MCD_S is completed, the controller 120 may transmit the collected storage cache map data MCD_S to the host device in step S230. In step S240, the controller 120 may write updated cache map data (MCD_S) among the collected cache map data (MCD_S) to the nonvolatile memory device (110).

예시적으로, S230 단계 및 S240 단계는 동시에 수행될 수 있다. 예를 들어, 컨트롤러(120)가 수집된 스토리지 캐시 맵 데이터(MCD_S)를 호스트 장치로 전송하는 동작과 컨트롤러(120)가 갱신된 스토리지 캐시 맵 데이터(MCD_S)를 불휘발성 메모리 장치(110)에 기입(또는 백업)하는 동작은 서로 숨겨질(shadowed) 수 있다. 예를 들어, 컨트롤러(120)가 수집된 스토리지 캐시 맵 데이터(MCD_S)를 호스트 장치에 전송하려 할 때에, 컨트롤러(120)는 갱신된 스토리지 캐시 맵 데이터(MCD_S)의 불휘발성 메모리 장치(110)에 대한 기입을 함께 수행할 수 있다. 예를 들어, 컨트롤러(120)가 갱신된 스토리지 캐시 맵 데이터(MCD_S)를 불휘발성 메모리 장치(110)에 기입하려 할 때에, 컨트롤러(120)는 S220 단계에서 언급된 조건들에 무관하게, 수집된 스토리지 캐시 맵 데이터(MCD_S)를 호스트 장치로 전송할 수 있다.Illustratively, steps S230 and S240 may be performed simultaneously. For example, the controller 120 transmits the collected storage cache map data MCD_S to the host device and the controller 120 writes the updated storage cache map data MCD_S to the nonvolatile memory device 110 (Or backing up) may be shadowed with respect to each other. For example, when the controller 120 attempts to transmit the collected storage cache map data MCD_S to the host device, the controller 120 stores the updated storage cache map data MCD_S in the nonvolatile memory device 110 Can be performed together. For example, when the controller 120 attempts to write updated storage cache map data (MCD_S) to the non-volatile memory device 110, the controller 120, regardless of the conditions mentioned in step S220, Storage cache map data MCD_S to the host device.

예시적으로, 수집된 스토리지 맵 캐시 데이터(MCD_S)는 도 7을 참조하여 설명된 데이터 인 UPIU를 통해 전달될 수 있다. 예를 들어, 수집된 스토리지 맵 캐시 데이터(MCD_S)는 하나 또는 그보다 많은 복수의 데이터 인 UPIU를 통해 전달될 수 있다.Illustratively, the collected storage map cache data (MCD_S) may be transferred via the UPIU, which is the data described with reference to FIG. For example, the collected storage map cache data (MCD_S) may be delivered via a UPIU that is one or more than one data.

데이터 인 UPIU를 통해 스토리지 맵 캐시 데이터(MCD_S)의 전달이 완료되면, S250 단계에서, 호스트 장치는 제1 모드의 맵 데이터 요청을 다시 스토리지 장치(1300)에 전달할 수 있다. 즉, S210 단계 내지 S240 단계는 호스트 장치와 스토리지 장치(1300)가 통신하는 동안 지속적으로 수행될 수 있다. 예를 들어, 제1 모드의 맵 데이터 요청은 맵 데이터(MD) 중에서 특정한 부분을 요청하지 않으므로, 네임리스(nameless) 요청일 수 있다. When the transfer of the storage map cache data MCD_S is completed through the UPIU, which is data, the host device can forward the map data request of the first mode to the storage device 1300 again in step S250. That is, steps S210 through S240 may be continuously performed while the host apparatus and the storage apparatus 1300 communicate with each other. For example, the map data request of the first mode may be a nameless request because it does not request a specific portion of the map data MD.

도 10은 호스트 장치가 스토리지 장치(1300)에 제2 모드로 맵 데이터(MD)를 요청하는 방법을 보여주는 순서도이다. 도 1 및 도 10을를 참조하면, S310 단계에서, 호스트 장치는 컨트롤러(120)에 제2 모드로 맵 데이터(MD)를 요청할 수 있다. 제2 모드의 맵 데이터 요청은 호스트가 수신하기를 원하는 맵 데이터(MD)의 부분의 논리 어드레스들(LA)과 함께 전송될 수 있다. 다른 예로서, 제2 모드의 맵 데이터 요청은 호스트가 수신하기를 원하는 맵 데이터(MD)의 맵 데이터 블록의 오프셋과 함께 전송될 수 있다. 예시적으로, 제2 모드는 도 5의 제2 옵션 블록(OB2) 또는 도 6의 제3 옵션 블록(OB3)에서 지정될 수 있다.10 is a flowchart showing how the host apparatus requests map data (MD) in the second mode to the storage apparatus 1300. Referring to FIGS. 1 and 10, in step S310, the host device may request the controller 120 for map data MD in a second mode. The map data request in the second mode may be sent with logical addresses (LA) of the portion of the map data (MD) that the host wishes to receive. As another example, the map data request of the second mode may be sent with the offset of the map data block of the map data (MD) that the host wants to receive. Illustratively, the second mode may be specified in the second option block OB2 of FIG. 5 or the third option block OB3 of FIG.

S320 단계에서, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분이 스토리지 맵 캐시 데이터(MCD_S)와 히트하는지 판별한다. 예를 들어, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분이 스토리지 맵 캐시 데이터(MCD_S)로서 컨트롤러(120)에 로드되어 있는지 판별할 수 있다. 스토리지 맵 캐시 데이터(MCD_S)의 히트가 발생하면, S330 단계가 생략되고 S340 단계가 수행될 수 있다. 스토리지 맵 캐시 데이터(MCD_S)의 히트가 발생하지 않으면, 즉 스토리지 맵 캐시 데이터(MCD_S)의 미스가 발생하면, S330 단계가 수행된 후에 S340 단계가 수행될 수 있다.In step S320, the controller 120 determines whether a portion of the map data (MD) requested by the host device hits the storage map cache data (MCD_S). For example, the controller 120 can determine whether a portion of the map data (MD) requested by the host device is loaded in the controller 120 as the storage map cache data (MCD_S). If the hit of the storage map cache data (MCD_S) occurs, step S330 may be omitted and step S340 may be performed. If the hit of the storage map cache data MCD_S does not occur, that is, if a miss of the storage map cache data MCD_S occurs, the step S330 may be performed after the step S330 is performed.

S330 단계에서, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분을 불휘발성 메모리 장치(110)로부터 읽고 스토리지 캐시 맵 데이터(MCD_S)로 저장할 수 있다. S340 단계에서, 컨트롤러(120)는 스토리지 캐시 맵 데이터(MCD_S) 중에서 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분을 호스트 장치로 전송할 수 있다.In step S330, the controller 120 reads a portion of the map data (MD) requested by the host device from the nonvolatile memory device 110 and stores it as the storage cache map data (MCD_S). In step S340, the controller 120 may transmit the portion of the map data (MD) requested by the host apparatus among the storage cache map data (MCD_S) to the host apparatus.

예시적으로, 요청된 맵 데이터(MD)의 부분은 도 7을 참조하여 설명된 데이터 인 UPIU를 통해 전달될 수 있다. 예를 들어, 요청된 맵 데이터(MD)의 부분은 하나 또는 그보다 많은 복수의 데이터 인 UPIU를 통해 전달될 수 있다. 예를 들어, 제2 모드의 맵 데이터 요청은 맵 데이터(MD) 중에서 특정한 부분을 요청하므로, 네임드(named) 요청일 수 있다.Illustratively, the portion of the requested map data (MD) may be carried over the UPIU, which is the data described with reference to FIG. For example, the portion of the requested map data (MD) may be carried over a UPIU that is one or more than a plurality of data. For example, the map data request of the second mode requests a specific portion of the map data (MD), so it may be a named request.

도 11은 호스트 장치가 스토리지 장치(1300)에 쓰기 요청을 전달하여 쓰기를 수행하는 방법을 보여주는 순서도이다. 도 1 및 도 11을 참조하면, S310 단계에서, 호스트 장치에서 쓰기 이벤트가 발생할 수 있다. 예를 들어, 호스트 장치에서 스토리지 장치(1300)의 특정한 논리 어드레스들(LA)에 기입하거나 갱신할 데이터가 발생할 수 있다.11 is a flowchart showing a method by which a host device transmits a write request to the storage device 1300 to perform writing. Referring to FIGS. 1 and 11, in step S310, a write event may occur in the host device. For example, data may be written to or written to specific logical addresses LA of the storage device 1300 at the host device.

쓰기 이벤트가 발생함에 따라, S320 단계에서, 호스트 장치는 쓰기 이벤트의 논리 어드레스들(LA)과 연관된 호스트 맵 캐시 데이터(MCD_H)의 부분을 무효화할 수 있다. 예를 들어, 호스트 장치는 쓰기 이벤트의 논리 어드레스들(LA)과 연관된 호스트 맵 캐시 데이터(MCD_H)의 부분을 RAM (1200)으로부터 해제(release)하거나 삭제할 수 있다.As the write event occurs, in step S320, the host device may invalidate the portion of the host map cache data (MCD_H) associated with the logical addresses (LA) of the write event. For example, the host device may release or delete the portion of the host map cache data (MCD_H) associated with the logical addresses (LA) of the write event from the RAM 1200.

S330 단계에서, 호스트 장치는 논리 어드레스들(LA)을 포함하는 쓰기 요청을 컨트롤러(120)로 전송할 수 있다. 쓰기 요청은 도 4를 참조하여 설명된 커맨드 UPIU로서 전달될 수 있다.In step S330, the host device may send a write request to the controller 120 that includes logical addresses LA. The write request may be delivered as the command UPIU described with reference to FIG.

호스트 장치로부터의 쓰기 요청에 응답하여, S340 단계에서, 컨트롤러(120)는 데이터가 기입될 불휘발성 메모리 장치(110)의 물리 어드레스들(PA)을 선택할 수 있다.In response to the write request from the host device, in step S340, the controller 120 may select the physical addresses PA of the non-volatile memory device 110 to which data is to be written.

S350 단계에서, 컨트롤러(120)는 선택된 물리 어드레스들(PA) 및 쓰기 커맨드를 불휘발성 메모리 장치(110)에 전송함으로써, 호스트 장치에 의해 요청된 쓰기를 수행할 수 있다.In step S350, the controller 120 may send the selected physical addresses (PA) and the write command to the nonvolatile memory device 110, thereby performing the write requested by the host device.

S360 단계에서, 컨트롤러(120)는 선택된 물리 어드레스들(PA) 및 쓰기 요청에 포함된 논리 어드레스들(LA) 사이의 사상 관계를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.In step S360, the controller 120 may update the storage map cache data MCD_S by reflecting the mapping relationship between the selected physical addresses PA and the logical addresses LA included in the write request.

예시적으로, S350 단계 및 S360 단계는 도시된 순서대로, 도시된 순서와 반대로, 또는 동시에 수행될 수 있다.Illustratively, steps S350 and S360 may be performed in the order shown, contrary to the order shown, or concurrently.

S370 단계에서, 컨트롤러(120)는 호스트 장치에 응답을 전송할 수 있다. 예를 들어, 응답은 쓰기 요청에 포함된 논리 어드레스들(LA)과 사상된 물리 어드레스들(PA) 및 시그니처(SIG)와 함께 전송되거나, 또는 물리 어드레스들(PA) 및 시그니처(SIG) 없이 전송될 수 있다. 예를 들어, 쓰기 요청에 포함된 논리 어드레스들(LA), 예를 들어 연속적인 하나의 논리 어드레스 범위가 하나의 연속적인 물리 어드레스 범위와 사상된 경우, 컨트롤러(120)는 하나의 연속적인 물리 어드레스 범위의 시작 물리 어드레스 및 그에 대응하는 시그니처(SIG)를 응답에 포함하여 전송할 수 있다.In step S370, the controller 120 may send a response to the host device. For example, the response may be sent with logical addresses (LA) included in the write request, mapped physical addresses (PA) and signature (SIG), or transmitted without physical addresses (PA) and signature . For example, if the logical addresses LA included in the write request, for example a contiguous logical address range, are mapped with one contiguous physical address range, The start physical address of the range and the corresponding signature (SIG) in the response.

다른 예로서, 쓰기 요청에 포함된 논리 어드레스들(LA), 예를 들어 연속적인 하나의 논리 어드레스 범위가 둘 이상의 연속적인 물리 어드레스 범위들과 사상된 경우, 컨트롤러(120)는 둘 이상의 연속적인 물리 어드레스들 범위들의 시작 물리 어드레스들 및 그들에 대응하는 시그니처들(SIG)을 응답에 포함하여 전송할 수 있다. 둘 이상의 시작 물리 어드레스들을 전송하는 데에 응답의 용량이 부족한 경우, 컨트롤러(120)는 응답에 물리 어드레스(PA) 및 시그니처(SIG)를 포함시키지 않고 전송할 수 있다.As another example, if the logical addresses LA included in the write request, for example a contiguous logical address range, are mapped with two or more contiguous physical address ranges, the controller 120 may determine that two or more consecutive physical (S) corresponding to their starting physical addresses in the ranges of addresses, and their corresponding signatures (SIG). If the capacity of the response is insufficient to transmit two or more starting physical addresses, the controller 120 may transmit the response without including a physical address (PA) and a signature (SIG).

S380 단계에서, 물리 어드레스(PA) 및 시그니처(SIG)가 수신되면, S390 단계 및 S393 단계가 생략되고 S395 단계가 수행된다. 물리 어드레스(PA) 및 시그니처(SIG)가 수신되지 않았으면, S390 단계 및 S393 단계가 수행된 후에 S395 단계가 수행된다.In step S380, when the physical address PA and the signature SIG are received, steps S390 and S393 are omitted and step S395 is performed. If the physical address PA and the signature SIG have not been received, steps S390 and S393 are performed and then step S395 is performed.

S390 단계에서, 호스트 장치는 컨트롤러(120)에 물리 어드레스(PA)를 요청할 수 있다. 예를 들어, 호스트 장치는 도 10을 참조하여 설명된 제2 모드의 맵 데이터 요청을 통해 컨트롤러(120)에 물리 어드레스(PA)를 요청할 수 있다. 호스트 장치는 쓰기 요청에 포함된 논리 어드레스들(LA)과 연관된 맵 데이터 요청을 컨트롤러(120)로 전송될 수 있다. In step S390, the host device may request the controller 120 to issue a physical address (PA). For example, the host device may request the physical address (PA) from the controller 120 through the map data request of the second mode described with reference to FIG. The host device may be sent to the controller 120 with a map data request associated with logical addresses (LA) included in the write request.

S393 단계에서, 컨트롤러(120)는 맵 데이터 요청에 따라 둘 이상의 연속적인 물리 어드레스 범위들의 시작 물리 어드레스들을 호스트 장치로 전송할 수 있다.In step S393, the controller 120 may transmit the starting physical addresses of two or more consecutive physical address ranges to the host device in response to the map data request.

S395 단계에서, 호스트 장치는 컨트롤러(120)로부터 수신된 물리 어드레스(PA) 및 시그니처(SIG)에 기반하여 호스트 맵 캐시 데이터(MCD_H)를 갱신할 수 있다.In step S395, the host device can update the host map cache data (MCD_H) based on the physical address (PA) and the signature (SIG) received from the controller 120.

도 12는 호스트 장치가 스토리지 장치(1300)에 읽기 요청을 전달하여 쓰기를 수행하는 방법을 보여주는 순서도이다. 도 1 및 도 12를 참조하면, S410 단계에서, 호스트 장치에서 읽기 이벤트가 발생할 수 있다. 예를 들어, 호스트 장치에서 스토리지 장치(1300)의 특정한 논리 어드레스들(LA)에 저장된 데이터의 읽기 수요가 발생할 수 있다.12 is a flowchart showing a method in which a host device transfers a read request to the storage device 1300 to perform writing. Referring to FIGS. 1 and 12, in step S410, a read event may occur in the host device. For example, there may be a demand to read data stored in specific logical addresses LA of the storage device 1300 at the host device.

읽기 이벤트가 발생함에 따라, S420 단계에서, 호스트 장치는 읽기 이벤트의 논리 어드레스(LA)와 연관된 맵 데이터(MD)의 부분이 호스트 맵 캐시 데이터(MCD_H)로서 RAM (1200)에 로드되어 있는지 판별한다. 읽기 이벤트와 연관하여 필요한 맵 데이터(MD)가 호스트 맵 캐시 데이터(MCD_H)로 로드되어 있으면, S430 단계에서 호스트 장치는 호스트 맵 캐시 데이터(MCD_H)를 참조하여 논리 어드레스(LA)와 연관된 물리 어드레스(PA) 및 시그니처(SIG)를 획득하고, 물리 어드레스(PA), 논리 어드레스(LA) 및 시그니처(SIG)를 포함하는 읽기 요청을 컨트롤러(120)로 전송할 수 있다. 읽기 이벤트와 연관하여 필요한 맵 데이터(MD)가 호스트 맵 캐시 데이터(MCD_H)로 로드되어 있지 않으면, 호스트 장치는 S480 단계에서 논리 어드레스(LA)를 포함하는 읽기 요청을 컨트롤러(120)로 전송할 수 있다.As the read event occurs, in step S420, the host device determines whether a portion of the map data (MD) associated with the logical address (LA) of the read event is loaded in the RAM 1200 as host map cache data (MCD_H) . The host device refers to the host map cache data MCD_H in step S430 to determine whether the physical address corresponding to the logical address LA is included in the host map cache data MCD_H PA and signature SIG and sends a read request to controller 120 that includes physical address PA, logical address LA and signature SIG. If the necessary map data MD in association with the read event is not loaded into the host map cache data MCD_H, the host device can transmit a read request including the logical address LA to the controller 120 in step S480 .

예시적으로, 호스트 장치의 읽기 이벤트가 하나의 연속적인 물리 어드레스 범위와 연관될 때에, 호스트 장치는 하나의 연속적인 물리 어드레스의 시작 물리 어드레스 및 그와 연관된 시그니처(SIG)를 전송하여야 한다. 호스트 장치의 읽기 이벤트가 둘 이상의 연속적인 물리 어드레스 범위들과 연관될 때에, 호스트 장치는 둘 이상의 연속적인 물리 어드레스들의 범위들의 시작 물리 어드레스들 및 이들과 연관된 시그니처들(SIG)을 전송하여야 한다. 둘 이상의 시작 물리 어드레스들 및 시그니처들을 전송하는 데에 커맨드 UPIU 또는 커맨드 디스크립터 블록(CDB)의 사이즈가 부족한 경우, 호스트 장치는 둘 이상의 커맨드 UPIU를 통해 복수의 시작 물리 어드레스들 및 이들과 연관된 시그니처들(SIG)을 컨트롤러(120)로 전송할 수 있다.Illustratively, when a read event of a host device is associated with one continuous physical address range, the host device must transmit the starting physical address of one successive physical address and its associated signature (SIG). When a read event of the host device is associated with two or more consecutive physical address ranges, the host device must transmit the starting physical addresses of the ranges of two or more consecutive physical addresses and their associated signatures (SIG). If the size of the command UPIU or command descriptor block (CDB) is insufficient to transmit two or more starting physical addresses and signatures, the host device may send a plurality of starting physical addresses and their associated signatures SIG to the controller 120.

S430 단계에서 호스트 장치로부터 물리 어드레스(PA), 논리 어드레스(LA) 및 시그니처(SIG)를 포함하는 읽기 요청이 수신되면, S440 단계에서 컨트롤러(120)는 스토리지 캐시 맵 데이터(MCD_S)가 히트인지 판별한다. 예를 들어, 읽기 요청에 포함된 물리 어드레스(PA) 또는 논리 어드레스(LA)와 연관된 맵 데이터 블록이 스토리지 캐시 맵 데이터(MCD_S)로 컨트롤러(120)에 로드되어 있으면, 스토리지 캐시 맵 데이터(MCD_S)가 히트인 것으로 판별된다. 스토리지 맵 캐시 데이터(MCD_S)가 히트이면, S450 단계에서, 컨트롤러(120)는 스토리지 캐시 맵 데이터(MCD_S)를 참조하여 물리 어드레스(PA)를 획득하고, 획득된 물리 어드레스(PA) 및 읽기 커맨드를 불휘발성 메모리 장치(110)로 전송하여 읽기 요청을 수행할 수 있다.If a read request including a physical address (PA), a logical address (LA) and a signature (SIG) is received from the host device in step S430, the controller 120 determines whether the storage cache map data (MCD_S) do. For example, if the map data block associated with the physical address PA or the logical address LA included in the read request is loaded into the controller 120 as the storage cache map data MCD_S, the storage cache map data MCD_S, Is a hit. If the storage map cache data MCD_S is a hit, the controller 120 obtains the physical address PA by referring to the storage cache map data MCD_S in step S450, and stores the obtained physical address PA and read command Volatile memory device 110 to perform a read request.

S440 단계에서, 캐시 맵 데이터(MCD_S)가 히트가 아닌 미스로 판별되면, S460 단계에서 컨트롤러는 시그니처(SIG)가 올바른지 판단한다. 예를 들어, 컨트롤러(120)는 읽기 요청에 포함된 물리 어드레스(PA) 및 논리 어드레스(LA)로부터 시그니처를 생성하고, 생성된 시그니처 및 읽기 요청에 포함된 시그니처(SIG)를 비교할 수 있다. 생성된 시그니처 및 읽기 요청에 포함된 시그니처(SIG)가 동일하면, 읽기 요청에 포함된 물리 어드레스(PA)가 해킹되지 않은 정상의 것으로 판별된다. S470 단계에서, 컨트롤러(120)는 읽기 요청에 포함된 물리 어드레스(PA) 및 읽기 커맨드를 불휘발성 메모리 장치(110)로 전송하여 읽기 요청을 수행할 수 있다.If it is determined in step S440 that the cache map data MCD_S is a miss rather than a hit, the controller determines whether the signature SIG is correct in step S460. For example, the controller 120 may generate a signature from the physical address (PA) and the logical address (LA) included in the read request, and compare the signature (SIG) included in the generated signature and the read request. If the generated signature and the signature (SIG) contained in the read request are the same, the physical address (PA) included in the read request is determined to be non-hacked normal. In step S470, the controller 120 may transmit the physical address (PA) and the read command included in the read request to the nonvolatile memory device 110 to perform the read request.

S480 단계에서 논리 어드레스(LA)를 포함하는 읽기 요청이 수신되면, 또는 S460 단계에서 읽기 요청에 포함된 시그니처(SIG)가 정상이 아닌 것으로 판별되면, S490 단계에서 컨트롤러(120)는 읽기 요청에 포함된 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 예를 들어, 읽기 요청에 포함된 논리 어드레스(LA)와 연관된 맵 데이터 블록이 스토리지 맵 캐시 데이터(MCD_S)로 로드되어 있으면, 컨트롤러(120)는 스토리지 맵 캐시 데이터(MCD_S)를 바로 참조하여 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 읽기 요청에 포함된 논리 어드레스(LA)와 연관된 맵 데이터 블록이 스토리지 맵 캐시 데이터(MCD_S)로 로드되어 있지 않으면, 컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 논리 어드레스(LA)에 대응하는 맵 데이터 블록을 읽고, 읽힌 맵 데이터 블록을 스토리지 맵 캐시 데이터(MCD_S)로 저장하고, 이후에 스토리지 맵 캐시 데이터(MCD_S)를 참조하여 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 이후에, S493 단계에서 컨트롤러(120)는 변환된 물리 어드레스(PA) 및 커맨드를 불휘발성 메모리 장치(110)로 전송하여 읽기 요청을 수행할 수 있다.If it is determined in step S480 that the read request including the logical address LA is received or if the signature SIG included in the read request is not normal in step S460, The logical address LA can be converted into the physical address PA. For example, if the map data block associated with the logical address LA included in the read request is loaded into the storage map cache data MCD_S, the controller 120 directly refers to the storage map cache data MCD_S, (LA) to a physical address (PA). If the map data block associated with the logical address LA included in the read request is not loaded into the storage map cache data MCD_S, the controller 120 reads the logical address LA corresponding to the logical address LA from the non-volatile memory device 110 The map data block is read and the read map data block is stored as the storage map cache data MCD_S and the logical address LA can be converted into the physical address PA by referring to the storage map cache data MCD_S . Thereafter, in step S493, the controller 120 may transmit the converted physical address (PA) and the command to the nonvolatile memory device 110 to perform a read request.

S450 단계에서 수신되는 읽기 커맨드, S470 단계에서 수신되는 읽기 커맨드, 또는 S493 단계에서 수신되는 읽기 커맨드에 응답하여, S495 단계에서 불휘발성 메모리 장치(110)는 데이터를 컨트롤러(120)로 전송할 수 있다.In step S495, the nonvolatile memory device 110 may transmit the data to the controller 120 in response to a read command received in step S450, a read command received in step S470, or a read command received in step S493.

S497 단계에서, 컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 수신된 데이터를 호스트 장치로 전송할 수 있다.In step S497, the controller 120 can transmit the data received from the nonvolatile memory device 110 to the host device.

도 13은 호스트 장치가 스토리지 장치(1300)에 읽기를 요청하는 읽기 요청의 커맨드 디스크립터 블록(CDB)의 예를 보여준다. 예시적으로, 호스트 장치가 물리 어드레스(PA) 없이 논리 어드레스(LA)만을 포함하여 전송하는 제1 모드의 읽기 요청의 커맨드 디스크립터 블록(CDB)의 예가 도 13에 도시되어 있다. 예시적으로, 제1 모드의 읽기 요청은 UFS (Universal Flash Storage)의 리드 (10) 커맨드(Read (10) Command)의 커맨드 디스크립터 블록(CDB)을 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 전송하는 제1 모드의 읽기 요청은 UFS의 리드 (10) 커맨드(Read (10) Command)의 커맨드 디스크립터 블록(CDB)으로 한정되지 않는다. 제1 모드의 읽기 요청은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.13 shows an example of a command descriptor block (CDB) of a read request in which the host device requests the storage device 1300 to read. Illustratively, an example of a command descriptor block (CDB) of a first mode read request in which the host device transmits only the logical address LA without the physical address PA is shown in FIG. Illustratively, the read request in the first mode is described with reference to the command descriptor block (CDB) of the read (10) Command (Read (10) Command) of UFS (Universal Flash Storage). However, the read request in the first mode that the host device transmits to the storage device 1300 is not limited to the command descriptor block (CDB) of the read (10) command of the UFS (Read (10) Command). The read request of the first mode may be suitably selected according to the type of interface between the host apparatus and the storage apparatus 1300. [

도 1, 도 4 및 도 13을 참조하면, 커맨드 디스크립터 블록(CDB)의 행들은 커맨드 디스크립터 블록(CDB)의 각 바이트(Byte)를 가리킨다. 예시적으로, 리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)은 제0 내지 제9 바이트들(0~9)을 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 열들은 커맨드 디스크립터 블록(CDB)의 각 바이트의 각 비트(Bit)를 가리킨다. 예를 들어, 각 바이트는 제0 내지 제7 비트들(0~7)을 포함할 수 있다.Referring to Figures 1, 4 and 13, the rows of the command descriptor block (CDB) indicate each byte of the command descriptor block (CDB). Illustratively, the command descriptor block (CDB) of the read (10) command may include the 0th through 9th bytes (0 through 9). The columns of the command descriptor block (CDB) indicate the respective bits (Bit) of each byte of the command descriptor block (CDB). For example, each byte may comprise the 0th through 7th bits (0 through 7).

커맨드 디스크립터 블록(CDB)의 제0 바이트(0)의 제0 내지 제7 비트들(0~7)은 동작 코드(Operation Code)를 가리킨다. 예를 들어, 리드 (10) 커맨드의 동작 코드는 '28h'일 수 있다.The 0th to 7th bits (0 to 7) of the 0th byte (0) of the command descriptor block (CDB) indicate an operation code. For example, the operation code of the read (10) command may be '28h'.

리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제1 비트(1)는 사용되지 않을 수 있다. 제1 바이트(1)의 제1 비트(1)는 FUA_NV를 가리킬 수 있다. 제1 바이트(1)의 제2 비트(2)는 예비 블록(reserved)일 수 있다. 제1 바이트(1)의 제3 비트(3)는 FUA (Force Unit Access)를 가리킬 수 있다. FUA는 데이터 캐시의 사용 여부를 가리킬 수 있다. 제1 바이트(1)의 제4 비트(4)는 DPO (Disable Page Out)을 가리킨다. DPO는 리텐션 우선 순위를 어떻게 설정할지를 가리킬 수 있다. 제1 바이트(1)의 제5 내지 제7 비트들(5~7)은 RDPROTECT이며, '000b'의 값을 가질 수 있다.The first bit (1) of the first byte (1) of the command descriptor block (CDB) of the read (10) command may not be used. The first bit (1) of the first byte (1) may indicate FUA_NV. The second bit 2 of the first byte 1 may be a reserved block. The third bit 3 of the first byte 1 may indicate a Force Unit Access (FUA). The FUA may indicate whether to use the data cache. The fourth bit 4 of the first byte 1 indicates a DPO (Disable Page Out). The DPO can indicate how to set the retention priority. The fifth through seventh bits 5 through 7 of the first byte 1 are RDPROTECT and may have a value of '000b'.

리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제5 바이트들(2~5)은 논리 어드레스(LOGICAL ADDRESS, LA)를 가리킨다. 논리 어드레스(LA)는 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함할 수 있다.The second to fifth bytes 2 to 5 of the command descriptor block (CDB) of the read (10) command indicate the logical address (LOGICAL ADDRESS, LA). The logical address LA may include a most significant bit (MSB) to a least significant bit (LSB).

리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제6 바이트(6)의 제0 내지 제4 비트들(0~4)은 그룹 번호(GROUP NUMBER)를 가리킨다. 그룹 번호(GROUP NUMBER)는 읽기 요청과 연관된 콘텍스트 식별자(Context ID)를 가리킬 수 있다. 제6 바이트(6)의 제5 내지 제7 비트들(5~7)은 예비 블록(reserved)일 수 있다.The 0th to 4th bits (0 to 4) of the sixth byte 6 of the command descriptor block (CDB) of the read (10) command indicate the group number (GROUP NUMBER). The group number (GROUP NUMBER) may indicate the Context ID associated with the read request. The fifth to seventh bits 5 to 7 of the sixth byte 6 may be a reserved block.

리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제7 및 제8 바이트들(7, 8)은 전송 길이(TRANSFER LENGTH)를 가리킨다. 전송 길이(TRANSFER LENGTH)는 읽기 요청을 통해 읽혀질 데이터의 길이를 가리킨다.The seventh and eighth bytes 7 and 8 of the command descriptor block (CDB) of the read (10) command indicate the transmission length (TRANSFER LENGTH). The transfer length (TRANSFER LENGTH) indicates the length of data to be read through the read request.

리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제9 바이트(9)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The ninth byte 9 of the command descriptor block (CDB) of the read (10) command may include a control CONTROL. For example, the control may be '00h'.

도 14는 호스트 장치가 스토리지 장치(1300)에 읽기를 요청하는 읽기 요청의 커맨드 디스크립터 블록(CDB)의 다른 예를 보여준다. 예시적으로, 호스트 장치가 물리 어드레스(PA) 및 논리 어드레스(LA)만을 포함하여 전송하는 제2 모드의 읽기 요청의 커맨드 디스크립터 블록(CDB)의 예가 도 14에 도시되어 있다. 예시적으로, 제2 모드의 읽기 요청은 UFS (Universal Flash Storage)의 리드 (16) 커맨드(Read (16) Command)의 커맨드 디스크립터 블록(CDB)을 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 전송하는 제2 모드의 읽기 요청은 UFS의 리드 (16) 커맨드(Read (16) Command)의 커맨드 디스크립터 블록(CDB)으로 한정되지 않는다. 제2 모드의 읽기 요청은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.Fig. 14 shows another example of a command descriptor block (CDB) of a read request in which the host apparatus requests reading from the storage apparatus 1300. Fig. Illustratively, an example of a command descriptor block (CDB) of a read request in the second mode in which the host device transmits only the physical address (PA) and the logical address (LA) is shown in Fig. Illustratively, the read request in the second mode is described with reference to the command descriptor block (CDB) of the Read (16) Command (Read (16) Command) of UFS (Universal Flash Storage). However, the read request of the second mode that the host device transmits to the storage apparatus 1300 is not limited to the command descriptor block (CDB) of the Read (16) Command of the UFS. The read request in the second mode may be suitably selected according to the type of interface between the host device and the storage device 1300. [

도 1, 도 4 및 도 14를 참조하면, 커맨드 디스크립터 블록(CDB)의 행들은 커맨드 디스크립터 블록(CDB)의 각 바이트(Byte)를 가리킨다. 예시적으로, 리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)은 제0 내지 제15 바이트들(0~15)을 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 열들은 커맨드 디스크립터 블록(CDB)의 각 바이트의 각 비트(Bit)를 가리킨다. 예를 들어, 각 바이트는 제0 내지 제7 비트들(0~7)을 포함할 수 있다.1, 4, and 14, the rows of the command descriptor block (CDB) indicate each byte of the command descriptor block (CDB). Illustratively, the command descriptor block (CDB) of the read (10) command may include the 0th to 15th bytes (0-15). The columns of the command descriptor block (CDB) indicate the respective bits (Bit) of each byte of the command descriptor block (CDB). For example, each byte may comprise the 0th through 7th bits (0 through 7).

커맨드 디스크립터 블록(CDB)의 제0 바이트(0)의 제0 내지 제7 비트들(0~7)은 동작 코드(Operation Code)를 가리킨다. 예를 들어, 리드 (16) 커맨드의 동작 코드는 '88h'일 수 있다.The 0th to 7th bits (0 to 7) of the 0th byte (0) of the command descriptor block (CDB) indicate an operation code. For example, the operation code of the read (16) command may be '88h'.

리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제1 비트(1)는 사용되지 않을 수 있다. 제1 바이트(1)의 제1 비트(1)는 FUA_NV를 가리킬 수 있다. 제1 바이트(1)의 제2 비트(2)는 예비 블록(reserved)일 수 있다. 제1 바이트(1)의 제3 비트(3)는 FUA (Force Unit Access)를 가리킬 수 있다. FUA는 데이터 캐시의 사용 여부를 가리킬 수 있다. 제1 바이트(1)의 제4 비트(4)는 DPO (Disable Page Out)을 가리킨다. DPO는 리텐션 우선 순위를 어떻게 설정할지를 가리킬 수 있다. 제1 바이트(1)의 제5 내지 제7 비트들(5~7)은 RDPROTECT이며, '000b'의 값을 가질 수 있다.The first bit (1) of the first byte (1) of the command descriptor block (CDB) of the read (16) command may not be used. The first bit (1) of the first byte (1) may indicate FUA_NV. The second bit 2 of the first byte 1 may be a reserved block. The third bit 3 of the first byte 1 may indicate a Force Unit Access (FUA). The FUA may indicate whether to use the data cache. The fourth bit 4 of the first byte 1 indicates a DPO (Disable Page Out). The DPO can indicate how to set the retention priority. The fifth through seventh bits 5 through 7 of the first byte 1 are RDPROTECT and may have a value of '000b'.

리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제9 바이트들(2~9)은 제4 옵션 블록(OB4)을 가리킨다. 제4 옵션 블록(OB4)은 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함할 수 있다. 제4 옵션 블록(OB4)은 논리 어드레스(LOGICAL ADDRESS, LA) 및 물리 어드레스(PHYSICAL ADDRESS, PA)을 포함할 수 있다.The second to ninth bytes 2 to 9 of the command descriptor block (CDB) of the read (16) command indicate the fourth option block OB4. The fourth option block OB4 may include a most significant bit (MSB) to a least significant bit (LSB). The fourth option block OB4 may include a logical address LOGICAL ADDRESS, LA and a physical address PHYSICAL ADDRESS, PA.

리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제10 내지 제13 바이트들(10~13)은 전송 길이(TRANSFER LENGTH)를 가리킨다. 전송 길이(TRANSFER LENGTH)는 읽기 요청을 통해 읽혀질 데이터의 길이를 가리킨다.The tenth through thirteenth bytes 10-13 of the command descriptor block (CDB) of the read (16) command indicate the transmission length (TRANSFER LENGTH). The transfer length (TRANSFER LENGTH) indicates the length of data to be read through the read request.

리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제14 바이트(14)의 제0 내지 제4 비트들(0~4)은 그룹 번호(GROUP NUMBER)를 가리킨다. 그룹 번호(GROUP NUMBER)는 읽기 요청과 연관된 콘텍스트 식별자(Context ID)를 가리킬 수 있다. 제14 바이트(14)의 제5 및 제6 비트들(5, 6)은 예비 블록(reserved)일 수 있다. 제14 바이트(14)의 제7 비트(7)는 무시(ignore)될 수 있다.The 0th to 4th bits (0 to 4) of the 14th byte 14 of the command descriptor block (CDB) of the read (16) command indicate the group number (GROUP NUMBER). The group number (GROUP NUMBER) may indicate the Context ID associated with the read request. The fifth and sixth bits 5 and 6 of the 14th byte 14 may be reserved. The seventh bit 7 of the 14th byte 14 may be ignored.

리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제15 바이트(15)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The 15th byte 15 of the command descriptor block (CDB) of the read (16) command may include a control CONTROL. For example, the control may be '00h'.

도 15는 호스트 장치가 별도의 커맨드 UPIU를 통해 복수의 물리 어드레스들(PA) 및 시그니처들(SIG)을 전송하는 커맨드 디스크립터 블록(CDB)의 예를 보여준다. 예시적으로, 복수의 물리 어드레스들 및 시그니처들(SIG)은 UFS (Universal Flash Storage)의 모드 선택 커맨드(Mode Select Command)의 커맨드 디스크립터 블록(CDB)을 참조하여 설명된다. 그러나, 호스트 장치가 스토리지 장치(1300)로 복수의 물리 어드레스들(PA) 및 시그니처들(SIG)을 전송하는 것은 UFS의 모드 선택 커맨드(Mode Select Command)의 커맨드 디스크립터 블록(CDB)으로 한정되지 않는다. 복수의 물리 어드레스들(PA) 및 시그니처들(SIG)의 전송은 호스트 장치 및 스토리지 장치(1300) 사이의 인터페이스의 종류에 따라 적합하게 선택될 수 있다.15 shows an example of a command descriptor block (CDB) in which a host device transmits a plurality of physical addresses (PA) and signatures (SIG) via a separate command UPIU. Illustratively, a plurality of physical addresses and signatures SIG are described with reference to a command descriptor block (CDB) of a Mode Select Command of Universal Flash Storage (UFS). However, it is not limited to the command descriptor block (CDB) of the Mode Select Command of the UFS that the host device transmits a plurality of physical addresses (PA) and signatures (SIG) to the storage device 1300 . The transmission of the plurality of physical addresses (PA) and signatures (SIG) may be suitably selected according to the type of interface between the host device and the storage device 1300. [

도 1, 도 4 및 도 15를 참조하면, 커맨드 디스크립터 블록(CDB)의 행들은 커맨드 디스크립터 블록(CDB)의 각 바이트(Byte)를 가리킨다. 예시적으로, 리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)은 제0 내지 제15 바이트들(0~15)을 포함할 수 있다. 커맨드 디스크립터 블록(CDB)의 열들은 커맨드 디스크립터 블록(CDB)의 각 바이트의 각 비트(Bit)를 가리킨다. 예를 들어, 각 바이트는 제0 내지 제7 비트들(0~7)을 포함할 수 있다.1, 4 and 15, the rows of the command descriptor block (CDB) indicate each byte of the command descriptor block (CDB). Illustratively, the command descriptor block (CDB) of the read (10) command may include the 0th to 15th bytes (0-15). The columns of the command descriptor block (CDB) indicate the respective bits (Bit) of each byte of the command descriptor block (CDB). For example, each byte may comprise the 0th through 7th bits (0 through 7).

커맨드 디스크립터 블록(CDB)의 제0 바이트는 동작 코드(OPERATION CODE)를 가리킨다. 모드 선택 커맨드의 경우 동작 코드(OPERATION CODE)는 '55h'일 수 있다.The 0th byte of the command descriptor block (CDB) indicates an operation code. In the case of the mode selection command, the operation code may be '55h'.

모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 제1 바이트(1)의 제0 비트는 SP (Save Pages)를 가리킨다. 제1 바이트(1)의 제1 내지 제3 비트들(1~3)은 제5 옵션 블록(OB5)일 수 있다. 제1 바이트(1)의 제4 비트(4)는 PF (Page Format)를 가리키며, '1b'일 수 있다. 제1 바이트(1)의 제5 내지 제7 비트들(5~7)은 제5 옵션 블록(OB5)일 수 있다.The zeroth bit of the first byte (1) of the command descriptor block (CDB) of the mode selection command indicates SP (Save Pages). The first to third bits 1 to 3 of the first byte 1 may be a fifth option block OB5. The fourth bit 4 of the first byte 1 indicates PF (Page Format) and may be '1b'. The fifth through seventh bits 5 through 7 of the first byte 1 may be the fifth option block OB5.

모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제6 바이트들(2~6)은 제5 옵션 블록(OB5)일 수 있다.The second to sixth bytes 2 to 6 of the command descriptor block (CDB) of the mode selection command may be the fifth option block OB5.

모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 제7 및 제8 바이트들(7, 8)은 파라미터 리스트 길이(PARAMETER LIST LENGTH)를 가리킬 수 있다.The seventh and eighth bytes 7, 8 of the command descriptor block (CDB) of the mode selection command may indicate the parameter list length (PARAMETER LIST LENGTH).

모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 커맨드 디스크립터 블록(CDB)의 제15 바이트(15)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The 15th byte 15 of the command descriptor block CDB of the command descriptor block CDB of the mode selection command may include the control CONTROL. For example, the control may be '00h'.

모드 선택 커맨드가 물리 어드레스들(PA) 및 시그니처들(SIG)을 전송하는 것 외의 용도로 사용되는 경우, 제5 옵션 블록(OB5)은 예비 블록(reserved)을 포함할 수 있다. 모드 선택 커맨드가 물리 어드레스들(PA) 및 시그니처들(SIG)을 전송하는 용도로 사용되는 경우, 제5 옵션 블록(OB5)은 물리 어드레스들(PA) 및 시그니처들(SIG)의 전송을 알리는 아규먼트(argument) 또는 디스크립션(description)을 포함하며, 예비 블록(reserved)을 포함할 수 있다.The fifth option block OB5 may include a reserved block when the mode selection command is used for other purposes than transmitting the physical addresses PA and the signatures SIG. When the mode selection command is used to transmit physical addresses PA and signatures SIG, the fifth option block OB5 includes an argument for informing the transmission of physical addresses PA and signatures SIG an argument or a description, and may include a reserved block.

모드 선택 커맨드에 응답하여, 컨트롤러(120)는 전송 준비 UPIU (Ready to Transfer UPIU)를 호스트 장치로 전송할 수 있다. 전송 준비 UPIU에 응답하여, 호스트 장치는 물리 어드레스들(PA) 및 시그니처들(SIG)을 포함하는 데이터 출력 UPIU (Data Out UPIU)을 컨트롤러(120)로 전송할 수 있다.In response to the mode select command, the controller 120 may send a Ready to Transfer UPIU to the host device. In response to the transmit ready UPIU, the host device may send a data out UPIU (Data Out UPIU) containing the physical addresses (PA) and signatures (SIG) to the controller 120.

예시적으로, 호스트 장치는 도 13 또는 도14를 참조하여 설명된 읽기 (10) 또는 읽기 (16) 커맨드와 도 15의 모드 선택 커맨드를 조합하여 컨트롤러(120)로 전송할 수 있다.Illustratively, the host device may transmit the read (10) or read (16) command described with reference to FIG. 13 or 14 and the mode select command of FIG. 15 in combination to the controller 120.

도 16은 컨트롤러(120)가 시그니처(SIG)를 관리하는 방법을 보여주는 순서도이다. 도 1 및 도 16을 참조하면, S510 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송할 것인지 판별한다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하지 않으면, S520 단계 및 S530 단계는 생략된다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하는 경우, S520 단계 및 S530 단계가 수행된다.16 is a flowchart showing how the controller 120 manages the signature (SIG). Referring to FIGS. 1 and 16, in step S510, the controller 120 determines whether to transmit the physical address PA or the map data block MDk to the host device. If the physical address PA or the map data block MDk is not transmitted to the host device, Steps S520 and S530 are omitted. When the physical address PA or the map data block MDk is transmitted to the host device, steps S520 and S530 are performed.

S520 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 그에 대응하는 논리 어드레스(LA)로부터 시그니처(SIG)를 생성할 수 있다. 또는, 컨트롤러(120)는 맵 데이터 블록(MDk)의 각 엔트리의 물리 어드레스(PA) 및 논리 어드레스(LA)로부터 맵 데이터 블록(MDk)에 대응하는 시그니처 블록(SIGk)을 생성할 수 있다.In step S520, the controller 120 may generate a signature (SIG) from the physical address PA and its corresponding logical address LA. Alternatively, the controller 120 may generate a signature block SIGk corresponding to the map data block MDk from the physical address PA and the logical address LA of each entry of the map data block MDk.

S530 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 그에 대응하는 시그니처(SIG), 또는 맵 데이터 블록(MDk) 및 그에 대응하는 시그니처 블록(SIGk)을 호스트 장치로 전송할 수 있다.In step S530, the controller 120 may transmit the physical address PA and the corresponding signature SIG, or the map data block MDk and the corresponding signature block SIGk to the host device.

S540 단계에서, 컨트롤러(120)는 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되는지 판별한다. 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되지 않으면, S550 단계 내지 S570 단계는 생략된다. 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되면, S550 단계 내지 S570 단계가 수행된다.In step S540, the controller 120 determines whether a logical address (LA), a physical address (PA), and a signature (SIG) are received from the host apparatus. If the logical address (LA), the physical address (PA), and the signature (SIG) are not received from the host device, steps S550 to S570 are omitted. When the logical address (LA), the physical address (PA), and the signature (SIG) are received from the host apparatus, steps S550 to S570 are performed.

S550 단계에서, 컨트롤러(120)는 수신된 논리 어드레스(LA) 및 수신된 물리 어드레스(PA)로부터 시그니처(SIG_G)를 생성한다. S560 단계에서, 컨트롤러(120)는 수신된 시그니처(SIG)와 생성된 시그니처(SIG_G)가 동일한지 판별한다. 수신된 시그니처(SIG)와 생성된 시그니처(SIG_G)가 동일하면, S570 단계에서, 컨트롤러(120)는 수신된 시그니처(SIG)가 올바른 것임을 판별한다. 수신된 시그니처(SIG)와 생성된 시그니처(SIG_G)가 동일지 않으면, S580 단계에서 컨트롤러(120)는 수신된 시그니처(SIG)가 올바르지 않으며, 호스트 맵 캐시 데이터(MCD_H)에 대한 해킹 또는 데이터 손실이 발생하였을 가능성이 있음을 판별한다. 컨트롤러(120)는 시그니처(SIG)가 올바르지 않음을 호스트 장치에 통지할 수 있다.In step S550, the controller 120 generates a signature SIG_G from the received logical address LA and the received physical address PA. In step S560, the controller 120 determines whether the received signature (SIG) is identical to the generated signature (SIG_G). If the received signature (SIG) and generated signature (SIG_G) are the same, then in step S570 controller 120 determines that the received signature (SIG) is correct. If the received signature SIG is not the same as the generated signature SIG_G, the controller 120 determines in step S580 that the received signature SIG is incorrect and hacking or data loss for the host map cache data MCD_H It is determined that there is a possibility of occurrence. The controller 120 may notify the host device that the signature SIG is incorrect.

도 17은 컨트롤러(120)가 맵 데이터(MD)를 호스트 장치에 전송할 때에 암호화를 수행하는 예를 보여주는 순서도이다. 도 1 및 도 17을 참조하면, S610 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하는지 판별한다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하지 않으면, S620 단계 및 S630 단계는 생략된다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하는 경우, S620 단계 및 S630 단계가 수행된다.17 is a flowchart showing an example in which encryption is performed when the controller 120 transmits map data (MD) to the host apparatus. Referring to FIGS. 1 and 17, in step S610, the controller 120 determines whether the physical address PA or the map data block MDk is transmitted to the host apparatus. If the physical address PA or the map data block MDk is not transmitted to the host device, steps S620 and S630 are omitted. When the physical address PA or the map data block MDk is transmitted to the host device, steps S620 and S630 are performed.

S620 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 시그니처(SIG)를 암호화가거나, 또는 맵 데이터 블록(MDk)의 물리 어드레스들(PA) 및 시그니처들(SIG)을 암호화할 수 있다. S630 단계에서, 컨트롤러(120)는 암호화된 물리 어드레스(PA_E) 및 시그니처(SIG_E) 또는 암호화된 물리 어드레스(PA_E) 및 시그니처(SIG_E)를 포함하는 맵 데이터 블록(MDk)을 호스트 장치로 전송할 수 있다.In step S620, the controller 120 may encrypt the physical address PA and the signature SIG, or may encrypt the physical addresses PA and signatures SIG of the map data block MDk. In step S630, the controller 120 may transmit the map data block MDk including the encrypted physical address PA_E and the signature SIG_E or the encrypted physical address PA_E and the signature SIG_E to the host device .

S640 단계에서, 컨트롤러(120)는 호스트 장치로부터 논리 어드레스(LA), 암호화된 물리 어드레스(PA_E) 및 암호화된 시그니처(SIG_E)가 수신되는지 판별한다. 호스트 장치로부터 논리 어드레스(LA), 암호화된 물리 어드레스(PA_E) 및 암호화된 시그니처(SIG_E)가 수신되지 않으면, S650 단계 및 S660 단계는 생략된다. 호스트 장치로부터 논리 어드레스(LA), 암호화된 물리 어드레스(PA_E) 및 암호화된 시그니처(SIG_E)가 수신되면, S650 단계 및 S660 단계가 수행된다.In step S640, the controller 120 determines whether a logical address (LA), an encrypted physical address (PA_E), and an encrypted signature (SIG_E) are received from the host apparatus. If the logical address LA, the encrypted physical address PA_E, and the encrypted signature SIG_E are not received from the host device, steps S650 and S660 are omitted. When the logical address (LA), the encrypted physical address (PA_E), and the encrypted signature (SIG_E) are received from the host device, steps S650 and S660 are performed.

S650 단계에서, 컨트롤러(120)는 암호화된 물리 어드레스(PA_E) 및 암호화된 시그니처(SIG_E)를 복호화한다. S660 단계에서, 컨트롤러(120)는 복호화된 물리 어드레스(PA) 및 시그니처(SIG)를 사용할 수 있다. 예를 들어, 도 16을 참조하여 설명된 바와 같이, 컨트롤러(120)는 복호화된 시그니처(SIG)를 이용하여 복호화된 시그니처(SIG)가 올바른지 판별할 수 있다. 복호화된 시그니처(SIG)가 올바르면, 도 12를 참조하여 설명된 바와 같이, 컨트롤러(120)는 복호화된 물리 어드레스(PA) 및 읽기 커맨드를 불휘발성 메모리 장치(110)로 전송할 수 있다.In step S650, the controller 120 decrypts the encrypted physical address PA_E and the encrypted signature SIG_E. In step S660, the controller 120 can use the decrypted physical address PA and the signature SIG. For example, as described with reference to FIG. 16, the controller 120 can determine whether the decrypted signature (SIG) is correct using the decrypted signature (SIG). If the decrypted signature (SIG) is correct, the controller 120 may send the decrypted physical address (PA) and the read command to the non-volatile memory device 110, as described with reference to Fig.

상술된 바와 같이, 호스트 맵 캐시 데이터(MCD_H)로서 호스트 장치의 RAM (1200)에 로드되는 맵 데이터(MD)의 부분이 암호화되면, 맵 데이터(MD)의 보안성이 향상되고, 스토리지 장치(1300)의 보안성이 향상될 수 있다.As described above, when the portion of the map data MD loaded into the RAM 1200 of the host apparatus as the host map cache data MCD_H is encrypted, the security of the map data MD is improved and the storage device 1300 Can be improved.

도 18은 스토리지 장치(1300)가 조각 모음을 수행하는 예를 보여주는 순서도이다. 도 1 및 도 18을 참조하면, S710 단계에서, 컨트롤러(120)는 유휴 상태인지 판별할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 이슈되어 계류중인(pending) 요청이 없는 경우, 유휴 상태로 판별할 수 있다.18 is a flowchart showing an example in which the storage device 1300 performs defragmentation. Referring to FIGS. 1 and 18, in step S710, the controller 120 may determine whether it is idle. For example, the controller 120 may determine that it is idle if there is no pending request issued by the host device.

유휴 상태가 판별되면, S720 단계에서 컨트롤러(120)는 조각 모음을 수행할 수 있다. 조각 모음은 하나의 연속적인 논리 어드레스 범위에 속하며 둘 이상의 연속적인 물리 어드레스 범위들에 속하는 데이터들을 마이그레이션(migration)하여, 하나의 연속적인 논리 어드레스 범위에 속하는 데이터가 하나의 연속적인 물리 어드레스 범위에 속하도록 제어하는 것을 포함한다. S730 단계에서, 컨트롤러(120)는 조각 모음의 결과를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.If the idle state is determined, the controller 120 can perform defragmentation in step S720. Defragmentation involves migrating data belonging to one or more contiguous physical address ranges and belonging to one contiguous logical address range so that data belonging to one contiguous logical address range falls within one contiguous physical address range . In step S730, the controller 120 may update the storage map cache data (MCD_S) by reflecting the result of the defragmentation.

상술된 바와 같이 조각 모음이 수행되면, 호스트 장치가 읽기 요청과 함께 복수의 물리 어드레스들을 컨트롤러(120)로 전송하여야 하는 경우의 수가 감소한다. 따라서, 스토리지 장치(1300) 및 컴퓨팅 장치(1000)의 동작 속도가 향상된다.When defragmentation is performed as described above, the number of cases in which the host device must transmit a plurality of physical addresses to the controller 120 together with a read request is reduced. Thus, the operating speed of the storage device 1300 and the computing device 1000 is improved.

도 19는 컴퓨팅 장치(1000)가 스토리지 장치(1300)의 조각 모음을 지원하는 예를 보여주는 순서도이다. 도 1 및 도 19를 참조하면, S810 단계에서, 호스트 장치에서 절전(power save) 이벤트가 발생한다. 절전 이벤트는 호스트 장치가 절전 모드로 진입하기 위한 조건이 만족되었음을 가리킨다.FIG. 19 is a flowchart showing an example in which the computing device 1000 supports defragmentation of the storage device 1300. FIG. Referring to FIGS. 1 and 19, in step S810, a power save event occurs in the host apparatus. The power save event indicates that the condition for the host device to enter the power saving mode is satisfied.

절전 이벤트가 발생하면, S820 단계에서, 호스트 장치는 스토리지 장치(1300)에서 조각 모음이 필요한지 판별한다. 예를 들어, 호스트 장치는 스토리지 장치(1300)로부터 전송되는 응답 UPIU (Response UPIU)의 장치 정보(Device Information)을 통해, 또는 스토리지 장치(1300)로부터 전송되는 별도의 보고를 통해, 스토리지 장치(1300)에서 조각 모음이 필요한지 식별할 수 있다.If a power save event occurs, the host device determines in S820 whether the storage device 1300 requires defragmentation. For example, the host device may be connected to the storage device 1300 through the device information of the response UPIU (Response UPIU) transmitted from the storage device 1300, or via separate reporting transmitted from the storage device 1300. [ ) Can identify if defragmentation is necessary.

절전 이벤트가 발생한 때에 스토리지 장치(1300)에서 조각 모음이 필요하면, S830 단계에서 호스트 장치는 절전 모드를 금지하고 스토리지 장치(1300)가 조각 모음을 수행하도록 허용한다. S840 단계에서 컨트롤러(120)는 불휘발성 메모리 장치(110)를 액세스하여 조각 모음을 수행할 수 있다. S850 단계에서, 컨트롤러(120)는 조각 모음의 결과를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.If defragmentation is required in the storage device 1300 when the power saving event occurs, the host device prohibits the power saving mode in step S830 and allows the storage device 1300 to perform defragmentation. In step S840, the controller 120 can access the nonvolatile memory device 110 to perform defragmentation. In step S850, the controller 120 may update the storage map cache data (MCD_S) by reflecting the result of the defragmentation.

조각 모음이 완료되면, 또는 조각 모음이 필요치 않으면, S860 단계에서 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치(110)는 절전 모드로 진입할 수 있다.When the defragmentation is completed, or when defragmentation is not required, the host device, the controller 120, and the nonvolatile memory device 110 can enter the power saving mode in step S860.

도 20은 호스트 장치가 스토리지 장치(1300)를 액세스하는 방법을 보여주는 순서도이다. 도 20을 참조하면, S910 단계에서, 호스트 장치는 스토리지 장치(1300)로부터 맵 데이터를 읽을 수 있다. 맵 데이터는 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장될 수 있다.20 is a flow chart showing how the host device accesses the storage device 1300. FIG. Referring to FIG. 20, in step S910, the host device can read map data from the storage device 1300. FIG. The map data may be stored in the RAM 1200 as host map cache data (MCD_H).

S920 단계에서, 호스트 장치에서 읽기 이벤트가 발생할 수 있다.In step S920, a read event may occur in the host device.

S930 단계에서, 호스트 장치는 읽기 이벤트의 논리 어드레스(LA)와 RAM (1200)에 저장된 호스트 맵 캐시 데이터(MCD_H)와 연관되어 있는지 판별할 수 있다. 예를 들어, 호스트 장치는 읽기 이벤트의 논리 어드레스(LA)와 연관된 맵 데이터(MD)의 부분이 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 로드되어 있는지 판별할 수 있다.In step S930, the host device can determine whether it is associated with the logical address (LA) of the read event and the host map cache data (MCD_H) stored in the RAM 1200. [ For example, the host device can determine whether the portion of the map data (MD) associated with the logical address (LA) of the read event is loaded in the RAM 1200 as host map cache data (MCD_H).

논리 어드레스(LA)가 호스트 맵 캐시 데이터(MCD_H)와 연관되어 있으면, S940 단계에서, 호스트 장치는 호스트 맵 캐시 데이터(MCD_H)를 참조하여 읽기 이벤트의 논리 어드레스(LA)와 연관된 물리 어드레스(PA)를 획득하고, 물리 어드레스(PA)를 포함하는 읽기 요청을 스토리지 장치(1300)로 전송할 수 있다.If the logical address LA is associated with the host map cache data MCD_H, the host device refers to the host map cache data MCD_H in step S940 to determine the physical address PA associated with the logical address LA of the read event. And send a read request containing the physical address PA to the storage device 1300. [

논리 어드레스(LA)가 호스트 맵 캐시 데이터(MCD_H)와 연관되어 있지 않으면, S950 단계에서, 호스트 장치는 읽기 이벤트의 논리 어드레스(LA)를 포함하는 읽기 요청을 스토리지 장치(1300)로 전송할 수 있다.If the logical address LA is not associated with the host map cache data MCD_H, then in step S950 the host device may send a read request containing the logical address LA of the read event to the storage device 1300. [

스토리지 장치(1300)는 솔리드 스테이트 드라이브(SSD, Solid State Drive) 또는 하드 디스크 드라이브(HDD, Hard Disk Drive)를 포함할 수 있다. 스토리지 장치(1300)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), USB (Universal Serial Bus) 메모리 카드, 유니버설 플래시 스토리지(UFS) 등과 같은 메모리 카드들을 포함할 수 있다. 스토리지 장치(1300)는 eMMC (embedded MultiMedia Card), UFS, PPN (Perfect Page NAND) 등과 같은 실장형 메모리를 포함할 수 있다.The storage device 1300 may include a solid state drive (SSD) or a hard disk drive (HDD). The storage device 1300 may be a personal computer memory card (PCMCIA), a compact flash card (CF), a smart media card (SM), a memory stick, a multimedia card (MMC, RS-MMC, MMCmicro) Memory cards such as SD cards (SD, miniSD, microSD, SDHC), Universal Serial Bus (USB) memory cards, Universal Flash Storage (UFS), and the like. The storage device 1300 may include an embedded memory such as an embedded MultiMediaCard (eMMC), a UFS, a Perfect Page NAND (PPN), and the like.

도 21은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(110)를 보여주는 블록도이다. 도 1 및 도 21을 참조하면, 불휘발성 메모리 장치(110)는 메모리 셀 어레이(111), 행 디코더 회로(113), 페이지 버퍼 회로(115), 데이터 입출력 회로(117), 그리고 제어 로직 회로(119)를 포함한다.21 is a block diagram illustrating a non-volatile memory device 110 in accordance with an embodiment of the present invention. 1 and 21, the nonvolatile memory device 110 includes a memory cell array 111, a row decoder circuit 113, a page buffer circuit 115, a data input / output circuit 117, and a control logic circuit 119).

메모리 셀 어레이(111)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 행 디코더 회로(113)에 연결될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(115)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)의 메모리 셀들은 동일한 구조들을 가질 수 있다.The memory cell array 111 includes a plurality of memory blocks BLK1 to BLKz. Each memory block includes a plurality of memory cells. Each memory block may be connected to the row decoder circuit 113 via at least one ground selection line GSL, a plurality of word lines WL, and at least one string selection line SSL. Each memory block may be coupled to the page buffer circuit 115 via a plurality of bit lines (BL). The plurality of memory blocks BLK1 to BLKz may be commonly connected to the plurality of bit lines BL. The memory cells of the plurality of memory blocks BLK1 to BLKz may have the same structures.

예시적으로, 복수의 메모리 블록들(BLK1~BLKz) 각각은 소거 동작의 단위일 수 있다. 메모리 셀 어레이(111)의 메모리 셀들은 하나의 메모리 블록의 단위로 소거될 수 있다. 하나의 메모리 블록에 속한 메모리 셀들은 동시에 소거될 수 있다. 다른 예로서, 각 메모리 블록은 복수의 서브 블록들로 분할될 수 있다. 복수의 서브 블록들 각각은 소거 동작의 단위일 수 있다.Illustratively, each of the plurality of memory blocks BLK1 to BLKz may be a unit of an erase operation. The memory cells of the memory cell array 111 can be erased in units of one memory block. The memory cells belonging to one memory block can be erased simultaneously. As another example, each memory block may be divided into a plurality of sub-blocks. Each of the plurality of subblocks may be a unit of an erase operation.

행 디코더 회로(113)는 복수의 접지 선택 라인들(GSL), 복수의 워드 라인들(WL), 그리고 복수의 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(111)에 연결된다. 행 디코더 회로(113)는 제어 로직 회로(119)의 제어에 따라 동작한다. 행 디코더 회로(113)는 컨트롤러(120)로부터 입출력 채널을 통해 수신되는 어드레스를 디코딩하고, 디코딩된 어드레스에 따라 스트링 선택 라인들(SSL), 워드 라인들(WL), 그리고 접지 선택 라인들(GSL)에 인가되는 전압들을 제어할 수 있다.The row decoder circuit 113 is connected to the memory cell array 111 via a plurality of ground selection lines GSL, a plurality of word lines WL and a plurality of string selection lines SSL. The row decoder circuit 113 operates under the control of the control logic circuit 119. The row decoder circuit 113 decodes the address received from the controller 120 through the input and output channels and outputs the string selection lines SSL, word lines WL and ground selection lines GSL And the like.

페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(111)에 연결된다. 페이지 버퍼 회로(115)는 복수의 데이터 라인들(DL)을 통해 데이터 입출력 회로(117)와 연결된다. 페이지 버퍼 회로(115)는 제어 로직 회로(119)의 제어에 따라 동작한다.The page buffer circuit 115 is connected to the memory cell array 111 through a plurality of bit lines BL. The page buffer circuit 115 is connected to the data input / output circuit 117 through a plurality of data lines DL. The page buffer circuit 115 operates under the control of the control logic circuit 119.

데이터 입출력 회로(117)는 복수의 데이터 라인들(DL)을 통해 페이지 버퍼 회로(115)와 연결된다. 데이터 입출력 회로(117)는 페이지 버퍼 회로(115)에 의해 읽힌 데이터를 입출력 채널을 통해 컨트롤러(120)로 출력하고, 컨트롤러(120)로부터 입출력 채널을 통해 수신되는 데이터를 페이지 버퍼 회로(115)로 전달할 수 있다. The data input / output circuit 117 is connected to the page buffer circuit 115 through a plurality of data lines DL. The data input / output circuit 117 outputs the data read by the page buffer circuit 115 to the controller 120 through the input / output channel and the data received from the controller 120 via the input / output channel to the page buffer circuit 115 .

제어 로직 회로(119)는 컨트롤러(120)로부터 입출력 채널을 통해 커맨드를 수신하고, 제어 채널을 통해 제어 신호를 수신할 수 있다. 제어 로직 회로(119)는 제어 신호에 응답하여 입출력 채널을 통해 수신되는 커맨드를 수신하고, 입출력 채널을 통해 수신되는 어드레스를 행 디코더 회로(113)로 라우팅하고, 그리고 입출력 채널을 통해 수신되는 데이터를 데이터 입출력 회로(117)로 라우팅할 수 있다. 제어 로직 회로(119)는 수신된 커맨드를 디코딩하고, 디코딩된 커맨드에 따라 불휘발성 메모리 장치(110)를 제어할 수 있다.The control logic circuit 119 may receive the command from the controller 120 via the input / output channel and receive the control signal via the control channel. The control logic circuit 119 receives the command received via the input / output channel in response to the control signal, routes the address received through the input / output channel to the row decoder circuit 113, and outputs the data received via the input / And can be routed to the data input / output circuit 117. The control logic circuit 119 may decode the received command and control the non-volatile memory device 110 in accordance with the decoded command.

도 22는 본 발명의 실시 예에 따른 메모리 블록(BLKa)을 보여주는 회로도이다. 도 22를 참조하면, 메모리 블록(BLKa)은 복수의 셀 스트링들(CS11, CS21, CS12, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS21, CS12, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배열되어, 행들 및 열들을 형성할 수 있다.22 is a circuit diagram showing a memory block BLKa according to an embodiment of the present invention. Referring to FIG. 22, the memory block BLKa includes a plurality of cell strings CS11, CS21, CS12, and CS22. The plurality of cell strings CS11, CS21, CS12, and CS22 may be arranged along a row direction and a column direction to form rows and columns.

예를 들어, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS11, CS12)은 제1 행을 형성하고, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS21, CS22)은 제2 행을 형성할 수 있다. 열 방향(column direction)을 따라 배열된 셀 스트링들(CS11, CS21)은 제1 열을 형성하고, 열 방향(column direction)을 따라 배열된 셀 스트링들(CS12, CS22)은 제2 열을 형성할 수 있다.For example, the cell strings CS11 and CS12 arranged along the row direction form the first row and the cell strings CS21 and CS22 arranged along the row direction form the first row, Two rows can be formed. The cell strings CS11 and CS21 arranged along the column direction form the first column and the cell strings CS12 and CS22 arranged along the column direction form the second column can do.

각 셀 스트링은 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들은 접지 선택 트랜지스터들(GST), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, SSTb)을 포함한다. 각 셀 스트링의 접지 선택 트랜지스터(GST), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, SSTb)은 셀 스트링들(CS11, CS21, CS12, CS22)이 행들 및 열들을 따라 배열되는 평면(예를 들어, 메모리 블록(BLKa)의 기판 상의 평면)과 수직한 높이 방향으로 적층될 수 있다.Each cell string may include a plurality of cell transistors. The plurality of cell transistors include ground selection transistors GST, memory cells MC1 to MC6, and string selection transistors SSTa and SSTb. The ground selection transistor GST, the memory cells MC1 to MC6 and the string selection transistors SSTa and SSTb of each cell string are arranged such that the cell strings CS11, CS21, CS12 and CS22 are arranged along the rows and columns And may be stacked in a height direction perpendicular to the plane (for example, the plane on the substrate of the memory block BLKa).

복수의 셀 트랜지스터들은 절연막에 포획된 전하량에 따라 가변하는 문턱 전압들을 갖는 전하 포획형(charge trap type) 트랜지스터들일 수 있다.The plurality of cell transistors may be charge trap type transistors having threshold voltages varying depending on the amount of charge trapped in the insulating film.

최하단의 접지 선택 트랜지스터들(GST)의 소스들은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다.The sources of the lowermost ground selection transistors (GST) may be connected in common to the common source line (CSL).

제1 행의 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GST)의 제어 게이트들은 접지 선택 라인(GSL1)에 공통으로 연결되고, 제2 행의 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GST)의 제어 게이트들은 접지 선택 라인(GSL2)에 공통으로 연결된다. 즉, 서로 다른 행의 셀 스트링들은 서로 다른 접지 선택 라인들에 연결된다.The control gates of the ground selection transistors GST of the cell strings CS11 and CS12 of the first row are commonly connected to the ground selection line GSL1 and the control gates of the cell strings CS21 and CS22 of the second row The control gates of the selection transistors GST are connected in common to the ground selection line GSL2. That is, cell strings in different rows are connected to different ground selection lines.

기판(또는 접지 선택 트랜지스터들(GST))으로부터 동일한 높이(또는 순서)에 위치한 메모리 셀들의 제어 게이트들은 하나의 워드 라인에 공통으로 연결되고, 서로 다른 높이(또는 순서)에 위치한 메모리 셀들의 제어 게이트들은 서로 다른 워드 라인들(WL1~WL6)에 각각 연결될 수 있다. 예를 들어, 메모리 셀들(MC1)은 워드 라인(WL1)에 공통으로 연결된다. 메모리 셀들(MC2)은 워드 라인(WL2)에 공통으로 연결된다. 메모리 셀들(MC3)은 워드 라인(WL3)에 공통으로 연결된다. 메모리 셀들(MC4)은 워드 라인(WL4)에 공통으로 연결된다. 메모리 셀들(MC5)은 워드 라인(WL5)에 공통으로 연결된다. 메모리 셀들(MC6)은 워드 라인(WL6)에 공통으로 연결된다.The control gates of the memory cells located at the same height (or in sequence) from the substrate (or the ground selection transistors GST) are commonly connected to one word line, and the control gates of the memory cells located at different heights May be connected to different word lines WL1 to WL6, respectively. For example, the memory cells MC1 are commonly connected to the word line WL1. The memory cells MC2 are connected in common to the word line WL2. The memory cells MC3 are commonly connected to the word line WL3. The memory cells MC4 are connected in common to the word line WL4. The memory cells MC5 are commonly connected to the word line WL5. The memory cells MC6 are connected in common to the word line WL6.

서로 다른 행의 셀 스트링들은 서로 다른 스트링 선택 라인들에 연결된다. 동일한 행의 셀 스트링들의 동일한 높이(또는 순서)의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인에 연결된다. 동일한 행의 셀 스트링들의 서로 다른 높이(또는 순서)의 스트링 선택 트랜지스터들은 서로 다른 스트링 선택 라인들에 연결된다.Cell strings in different rows are connected to different string selection lines. The string select transistors of the same height (or sequence) of cell strings in the same row are connected to the same string select line. String selection transistors of different heights (or sequences) of cell strings in the same row are connected to different string selection lines.

복수의 셀 스트링들(CS11, CS21, CS12, CS22)의 열들은 서로 다른 비트 라인들(BL1, BL2)에 각각 연결된다. 예를 들어, 제1 열의 셀 스트링들(CS11, CS21)의 스트링 선택 트랜지스터들(SSTb)은 비트 라인(BL1)에 공통으로 연결된다. 제2 열의 셀 스트링들(CS12, CS22)의 스트링 선택 트랜지스터들(SST)은 비트 라인(BL2)에 공통으로 연결된다.The columns of the plurality of cell strings CS11, CS21, CS12, and CS22 are connected to different bit lines BL1 and BL2, respectively. For example, the string selection transistors SSTb of the cell strings CS11 and CS21 in the first column are connected in common to the bit line BL1. The string selection transistors SST of the cell strings CS12 and CS22 in the second column are connected in common to the bit line BL2.

상술된 바와 같이, 메모리 블록(BLKa)은 3차원 메모리 어레이로 제공된다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들(MC1~MC6)의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들(MC1~MC6)의 어레이들의 하나 또는 그 이상의 물리 레벨들에 획일적으로(monolithically) 형성될 수 있다. 메모리 셀들(MC1~MC6)의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 획일적으로 형성되는 것은, 3차원 어레이의 각 레벨의 레이어들이 3차원 어레이의 하위 레벨의 레이어들 위에 직접 증착됨을 의미한다.As described above, the memory block BLKa is provided as a three-dimensional memory array. The three-dimensional memory array may be uniformly (or at least partially) coupled to one or more physical levels of arrays of memory cells MC1-MC6 having an active region disposed above a circuit associated with operation of the silicon substrate and the memory cells MC1- monolithically. The circuitry associated with the operation of the memory cells MC1 to MC6 may be located in or on the substrate. What is uniformly formed means that the layers of each level of the three-dimensional array are directly deposited on the lower-level layers of the three-dimensional array.

본 발명의 기술적 사상에 따른 일 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들(또는 셀 스트링들)을 포함한다. 적어도 하나의 메모리 셀은 전하 포획 레이어를 포함한다. 각 수직 NAND 스트링은 메모리 셀들(MC1~MC6) 위에 위치하는 적어도 하나의 선택 트랜지스터를 더 포함한다. 적어도 하나의 선택 트랜지스터는 메모리 셀들(MC1~MC6)과 동일한 구조를 갖고, 메모리 셀들(MC1~MC6)과 함께 획일적으로 형성된다.As an example according to the technical idea of the present invention, a three-dimensional memory array includes vertical NAND strings (or cell strings) having vertical directionality, and at least one memory cell is located on another memory cell. The at least one memory cell includes a charge trapping layer. Each vertical NAND string further comprises at least one selection transistor located above the memory cells MC1 - MC6. At least one selection transistor has the same structure as the memory cells MC1 to MC6 and is formed uniformly together with the memory cells MC1 to MC6.

3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에서 워드 라인들 또는 비트 라인들이 공유되는 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.A configuration in which the three-dimensional memory array is composed of a plurality of levels and the word lines or bit lines are shared between levels is disclosed in U.S. Patent No. 7,679,133, U.S. Patent No. 8,553,466, U.S. Patent No. 8,654,587 U.S. Patent No. 8,559,235, and U.S. Published Patent Application No. 2011/0233648, which are incorporated herein by reference.

본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by the equivalents of the claims of the present invention as well as the claims of the following.

1000; 컴퓨팅 장치
1100; 프로세서
1200; 랜덤 액세스 메모리
1300; 스토리지 장치
1400; 모뎀
1500; 사용자 인터페이스
110; 불휘발성 메모리 장치
120; 컨트롤러
111; 메모리 셀 어레이
113; 행 디코더 회로
115; 페이지 버퍼 회로
PFC; 패스-페일 체크 회로
117; 데이터 입출력 회로
119; 제어 로직 회로
1000; Computing device
1100; Processor
1200; Random access memory
1300; Storage device
1400; modem
1500; User interface
110; Nonvolatile memory device
120; controller
111; The memory cell array
113; Row decoder circuit
115; Page buffer circuit
PFC; Pass-fail check circuit
117; Data input / output circuit
119; Control logic circuit

Claims (20)

불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서:
상기 스토리지 장치가 상기 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치의 논리 어드레스들을 사상하는 맵 데이터를 상기 호스트 장치에 전송하는 단계;
상기 스토리지 장치가 상기 호스트 장치로부터 읽기 요청을 수신하는 단계;
상기 읽기 요청이 물리 어드레스를 포함하면, 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계; 그리고
상기 읽기 요청이 상기 물리 어드레스를 포함하지 않으면, 상기 읽기 요청의 논리 어드레스를 제2 물리 어드레스로 변환하고, 그리고 상기 제2 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함하는 동작 방법.
A method of operating a storage device comprising a non-volatile memory device and a controller configured to control the non-volatile memory device, the method comprising:
The storage device transmitting map data to the host device mapping the physical addresses of the nonvolatile memory device and the logical addresses of the host device;
The storage device receiving a read request from the host device;
Reading data from the non-volatile memory device based on the physical address if the read request includes a physical address; And
Converting the logical address of the read request to a second physical address if the read request does not include the physical address and reading data from the nonvolatile memory device based on the second physical address Way.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
파워-온 시에 상기 컨트롤러가 상기 불휘발성 메모리 장치로부터 상기 맵 데이터의 적어도 일부를 읽고, 상기 적어도 일부를 상기 호스트에 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
Upon power-on, the controller reading at least a portion of the map data from the non-volatile memory device and sending the at least a portion to the host.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터의 블록들과 연관된 식별자들을 저장하고, 그리고 상기 저장된 식별자들을 상기 호스트로 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller storing identifiers associated with blocks of the map data, and transmitting the stored identifiers to the host.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 수집된 정보의 사이즈가 기준 사이즈에 도달하면, 상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller receiving a map data request from the host device;
The controller collecting mapping information between the logical addresses and the physical addresses; And
And when the size of the collected information reaches a reference size, the controller transmits the collected information to the host device as the map data.
제4 항에 있어서,
상기 컨트롤러는 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보가 추가 또는 갱신될 때에, 해당 정보를 수집하는 동작 방법.
5. The method of claim 4,
Wherein the controller collects the information when the logical addresses and mapping information between the physical addresses are added or updated.
제4 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 맵 데이터가 상기 호스트 장치로 전송된 후에, 상기 컨트롤러가 상기 호스트 장치로부터 상기 맵 데이터 요청을 다시 수신하는 단계를 더 포함하는 동작 방법.
5. The method of claim 4,
Wherein the transmitting the map data to the host device comprises:
And after the map data is transmitted to the host device, the controller again receiving the map data request from the host device.
제4 항에 있어서,
상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 동안, 상기 컨트롤러가 상기 수집된 정보를 상기 불휘발성 메모리 장치에 기입하는 단계를 더 포함하는 동작 방법.
5. The method of claim 4,
And the controller writes the collected information to the nonvolatile memory device while the controller transmits the collected information to the host device as the map data.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 컨트롤러가 주기적으로 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller receiving a map data request from the host device;
The controller collecting mapping information between the logical addresses and the physical addresses; And
The controller periodically transmitting the collected information as the map data to the host device.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 호스트 장치로부터 전송된 요청들 중에서 처리되지 않은 요청이 존재하지 않을 때, 상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller receiving a map data request from the host device;
The controller collecting mapping information between the logical addresses and the physical addresses; And
And transmitting, by the controller, the collected information to the host device as the map data when there is no unprocessed request among the requests transmitted from the host device.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청 및 논리 어드레스를 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스와 사상된 물리 어드레스의 정보를 수집하는 단계; 그리고
상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치로 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller receiving a map data request and a logical address from the host device;
The controller collecting information of the logical address and the mapped physical address; And
And the controller sending the collected information as the map data to the host device.
제1 항에 있어서,
상기 컨트롤러가 상기 호스트 장치로부터 쓰기 요청 및 데이터를 수신하는 단계;
상기 컨트롤러가 상기 쓰기 요청에 따라 상기 데이터를 상기 불휘발성 메모리 장치에 기입하는 단계;
상기 데이터가 상기 불휘발성 메모리 장치의 하나의 연속적인 물리 어드레스 범위에 기입되었으면, 상기 컨트롤러가 상기 연속적인 물리 어드레스 범위의 시작 물리 어드레스를 포함하는 쓰기 응답을 상기 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법.
The method according to claim 1,
The controller receiving a write request and data from the host device;
The controller writing the data to the nonvolatile memory device in response to the write request;
And if the data has been written to one continuous physical address range of the non-volatile memory device, the controller sends a write response to the host device including a starting physical address of the continuous physical address range How it works.
제11 항에 있어서,
상기 데이터가 상기 불휘발성 메모리 장치의 둘 이상의 연속적인 물리 어드레스 범위들에 기입되었으면, 상기 컨트롤러가 물리 어드레스가 배제된 쓰기 응답을 상기 호스트 장치로 전송하는 단계;
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계; 그리고
상기 컨트롤러가 상기 맵 데이터 요청에 응답하여 상기 둘 이상의 연속적인 물리 어드레스 범위들 각각의 시작 어드레스들을 상기 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법.
12. The method of claim 11,
If the data has been written to two or more contiguous physical address ranges of the non-volatile memory device, the controller sends a write response with the physical address excluded to the host device;
The controller receiving a map data request from the host device; And
The controller sending a start address of each of the two or more consecutive physical address ranges to the host device in response to the map data request.
제1 항에 있어서,
상기 읽기 요청이 물리 어드레스를 포함하면, 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계는,
상기 읽기 요청의 물리 어드레스 및 논리 어드레스로부터 시그니처를 생성하는 단계;
상기 읽기 요청의 시그니처와 상기 생성된 시그니처가 일치하면, 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함하는 동작 방법.
The method according to claim 1,
Reading the data from the nonvolatile memory device based on the physical address if the read request includes a physical address,
Generating a signature from a physical address and a logical address of the read request;
Reading data from the non-volatile memory device based on the physical address if the signature of the read request matches the generated signature.
제13 항에 있어서,
상기 읽기 요청의 시그니처와 상기 생성된 시그니처가 일치하지 않으면, 상기 읽기 요청의 논리 어드레스를 상기 제2 물리 어드레스로 변환하고, 그리고 상기 제2 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 더 포함하는 동작 방법.
14. The method of claim 13,
Converting the logical address of the read request into the second physical address if the signature of the read request and the generated signature do not match and reading data from the nonvolatile memory device based on the second physical address ≪ / RTI >
제1 항에 있어서,
상기 스토리지 장치가 상기 호스트 장치로부터 읽기 요청을 수신하는 단계는,
상기 읽기 요청에 대응하는 데이터가 상기 불휘발성 메모리 장치의 하나의 연속적인 물리 어드레스 범위에 속할 때, 상기 컨트롤러가 상기 호스트 장치로부터 상기 하나의 연속적인 물리 어드레스 범위의 시작 물리 어드레스를 포함하는 상기 읽기 요청을 수신하는 단계; 그리고
상기 읽기 요청에 대응하는 데이터가 상기 불휘발성 메모리 장치의 둘 이상의 연속적인 물리 어드레스 범위들에 속할 때, 상기 컨트롤러가 상기 호스트 장치로부터 물리 어드레스가 배제된 상기 읽기 요청 및 상기 둘 이상의 연속적인 물리 어드레스 범위들 각각의 시작 물리 어드레스들을 포함하는 제2 요청을 수신하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the step of the storage device receiving a read request from the host device comprises:
Wherein when the data corresponding to the read request belongs to one continuous physical address range of the non-volatile memory device, the controller reads the read request including the starting physical address of the one continuous physical address range from the host device ; And
Wherein when the data corresponding to the read request belongs to two or more consecutive physical address ranges of the non-volatile memory device, the controller reads from the host device the read request excluding the physical address and the two or more consecutive physical address ranges ≪ / RTI > receiving a second request comprising the starting physical addresses of each of the plurality of physical addresses.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터의 논리 어드레스들 및 물리 어드레스들로부터 시그니처들을 생성하는 단계; 그리고
상기 컨트롤러가 상기 시그니처들을 상기 맵 데이터와 함께 상기 호스트 장치로 전송하는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller generating signatures from logical addresses and physical addresses of the map data; And
The controller sending the signatures with the map data to the host device.
제1 항에 있어서,
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터 중에서 적어도 물리 어드레스들을 암호화하는 단계; 그리고
상기 컨트롤러가 상기 암호화된 물리 어드레스들과 상기 논리 어드레스들을 사상하는 상기 맵 데이터를 상기 호스트 장치로 전송하는 단계를 포함하고,
상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계는,
상기 컨트롤러가 상기 물리 어드레스를 복호화하는 단계; 그리고
상기 컨트롤러가 상기 복호화된 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함하는 동작 방법.
The method according to claim 1,
Wherein the transmitting the map data to the host device comprises:
The controller encrypting at least the physical addresses of the map data; And
The controller transmitting the map data, which maps the encrypted physical addresses and the logical addresses, to the host device,
Wherein reading data from the nonvolatile memory device based on the physical address comprises:
The controller decrypting the physical address; And
And the controller reading data from the non-volatile memory device based on the decoded physical address.
제1 항에 있어서,
상기 불휘발성 메모리 장치에 저장되며 연속적인 논리 어드레스들에 대응하는 데이터가 연속적인 물리 어드레스들에 대응하도록, 상기 컨트롤러가 조각모음을 수행하는 단계를 더 포함하는 동작 방법.
The method according to claim 1,
Further comprising defragmenting the controller such that the data stored in the non-volatile memory device and corresponding to consecutive logical addresses corresponds to consecutive physical addresses.
불휘발성 메모리 장치; 그리고
상기 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러를 포함하고,
상기 컨트롤러는 상기 불휘발성 메모리 장치의 물리 어드레스들과 호스트 장치의 논리 어드레스들을 사상하는 맵 데이터를 상기 호스트 장치에 전송하도록 구성되고,
상기 컨트롤러는, 상기 호스트 장치로부터 수신되는 읽기 요청이 상기 맵 데이터와 연관된 물리 어드레스를 포함하면 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽고, 상기 호스트 장치로부터 수신되는 상기 읽기 요청이 상기 물리 어드레스를 포함하지 않으면 상기 읽기 요청의 논리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽도록 구성되는 스토리지 장치.
A nonvolatile memory device; And
And a controller configured to control the nonvolatile memory device,
Wherein the controller is configured to transmit to the host device map data mapping the physical addresses of the nonvolatile memory device and the logical addresses of the host device,
Wherein the controller reads data from the nonvolatile memory device based on the physical address if the read request received from the host device includes a physical address associated with the map data, And read data from the non-volatile memory device based on the logical address of the read request if the physical address is not included.
불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 포함하는 스토리지 장치를 액세스하는 액세스 방법에 있어서:
상기 불휘발성 메모리 장치의 물리 어드레스들과 논리 어드레스들을 사상하는 맵 데이터를 상기 스토리지 장치로부터 읽는 단계;
읽기 대상의 논리 어드레스가 상기 맵 데이터와 연관되면, 상기 맵 데이터로부터 상기 논리 어드레스와 사상된 물리 어드레스를 검출하고, 상기 물리 어드레스를 포함하는 읽기 요청을 상기 스토리지 장치로 전송하는 단계; 그리고
상기 읽기 대상의 논리 어드레스가 상기 맵 데이터와 연관되지 않으면, 상기 논리 어드레스를 포함하는 읽기 요청을 상기 스토리지 장치로 전송하는 단계를 포함하는 액세스 방법.
An access method for accessing a nonvolatile memory device and a storage device including the nonvolatile memory device, comprising:
Reading map data for mapping physical addresses and logical addresses of the nonvolatile memory device from the storage device;
Detecting a physical address mapped with the logical address from the map data if the logical address of the read object is associated with the map data and transmitting a read request including the physical address to the storage device; And
And if the logical address of the read object is not associated with the map data, sending a read request comprising the logical address to the storage device.
KR1020160074700A 2015-12-30 2016-06-15 Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device KR20170081118A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160160792A KR102579938B1 (en) 2015-12-30 2016-11-29 Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device
US15/392,353 US10229051B2 (en) 2015-12-30 2016-12-28 Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
CN201611264261.XA CN107015920B (en) 2015-12-30 2016-12-30 Storage device and operation method of storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150190035 2015-12-30
KR20150190035 2015-12-30

Publications (1)

Publication Number Publication Date
KR20170081118A true KR20170081118A (en) 2017-07-11

Family

ID=59354743

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020160074700A KR20170081118A (en) 2015-12-30 2016-06-15 Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device
KR1020160160792A KR102579938B1 (en) 2015-12-30 2016-11-29 Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020160160792A KR102579938B1 (en) 2015-12-30 2016-11-29 Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device

Country Status (2)

Country Link
KR (2) KR20170081118A (en)
CN (1) CN107015920B (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190045697A (en) * 2017-10-24 2019-05-03 삼성전자주식회사 Storage system including host device and storage device configured to perform selective purge operation
CN109992524A (en) * 2018-01-03 2019-07-09 爱思开海力士有限公司 Controller and its operating method and storage system
CN110647475A (en) * 2018-06-26 2020-01-03 三星电子株式会社 Storage device and storage system including the same
US10963399B2 (en) 2019-03-18 2021-03-30 SK Hynix Inc. Memory system, computing apparatus and operation method thereof
US11494307B2 (en) 2020-02-21 2022-11-08 SK Hynix Inc. Host, storage device, and computing system having the same
US11687469B2 (en) 2018-12-19 2023-06-27 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11734170B2 (en) 2018-08-03 2023-08-22 Micron Technology, Inc. Host-resident translation layer validity check
US11809326B2 (en) 2021-02-19 2023-11-07 SK Hynix Inc. Electronic system including host and memory system for performing read operation based on physical address received from the host
US11809311B2 (en) 2018-12-21 2023-11-07 Micron Technology, Inc. Host-based flash memory maintenance techniques

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521617B2 (en) * 2017-08-14 2019-12-31 Western Digital Technologies, Inc. Non-volatile memory device with secure read
KR102368966B1 (en) 2017-10-23 2022-03-03 삼성전자주식회사 Nonvolatile memory device, storage device including nonvolatile memory devices, and method of training data input and output lines between controller and nonvolatile memory devices
KR20200104601A (en) * 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 Controller, memory sysytem and operating method thereof
KR20190054730A (en) * 2017-11-14 2019-05-22 삼성전자주식회사 Storage device and operating method of storage device
US10922239B2 (en) * 2017-12-29 2021-02-16 Samsung Electronics Co., Ltd. Device for performing iterator operation in database
CN112513822A (en) * 2018-08-01 2021-03-16 华为技术有限公司 Information processing method, device, equipment and system
WO2020028804A1 (en) * 2018-08-03 2020-02-06 Micron Technology, Inc. Host-resident translation layer validity check
US10852964B2 (en) * 2018-09-25 2020-12-01 Micron Technology, Inc. Host-resident translation layer validity check techniques
KR20200049051A (en) 2018-10-31 2020-05-08 삼성전자주식회사 Method of operating storage device, storage device performing the same and method of operating storage system using the same
KR102567108B1 (en) * 2018-11-05 2023-08-14 삼성전자주식회사 Data storage device and data storage system
KR102588143B1 (en) * 2018-11-07 2023-10-13 삼성전자주식회사 Storage device including memory controller and method of operating electronic systme including memory
KR102644274B1 (en) * 2018-11-22 2024-03-06 삼성전자주식회사 Memory controller, storage device including the same, and operating method of memory controller
KR20200073794A (en) 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 Memory system and operating method thereof
KR20200076531A (en) 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 Memory controller and operating method thereof
KR20200099882A (en) 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 Memory controller and operating method thereof
KR20200123684A (en) * 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 Apparatus for transmitting map information in memory system
KR20210011216A (en) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 Apparatus and method for managing map data in memory system
KR20210011176A (en) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 Apparatus and method for access operation in memory system
KR20200132047A (en) 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 Apparatus and method for transmitting map information in memory system
KR20210014338A (en) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 Data storage device, Data Processing System and operating method of Data storage device
KR20200119059A (en) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 Memory system and operating method thereof
KR20210011201A (en) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 Memory system and method of controllong temperature thereof
CN111949557B (en) * 2019-05-16 2024-01-23 兆易创新科技集团股份有限公司 Data reading method and device and storage device
KR20210050634A (en) 2019-10-28 2021-05-10 삼성전자주식회사 Memory device, memory system and autonomous driving apparatus
US11264082B2 (en) 2019-10-28 2022-03-01 Samsung Electronics Co., Ltd. Memory device, memory system and autonomous driving apparatus
CN111506458B (en) * 2020-04-23 2023-04-07 华中科技大学 Method, module and system for improving F2FS transaction performance
KR20210156090A (en) 2020-06-17 2021-12-24 에스케이하이닉스 주식회사 Storage device and operating method thereof
CN111813813B (en) * 2020-07-08 2024-02-20 杭州海康威视系统技术有限公司 Data management method, device, equipment and storage medium
KR20220021186A (en) * 2020-08-13 2022-02-22 에스케이하이닉스 주식회사 Apparatus and method for sharing data in a data processing system
JP2022049552A (en) * 2020-09-16 2022-03-29 キオクシア株式会社 Semiconductor device and method
WO2022126534A1 (en) * 2020-12-17 2022-06-23 华为技术有限公司 Data processing method and related device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
US9378135B2 (en) * 2013-01-08 2016-06-28 Violin Memory Inc. Method and system for data storage
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190045697A (en) * 2017-10-24 2019-05-03 삼성전자주식회사 Storage system including host device and storage device configured to perform selective purge operation
CN109992524A (en) * 2018-01-03 2019-07-09 爱思开海力士有限公司 Controller and its operating method and storage system
CN109992524B (en) * 2018-01-03 2023-08-29 爱思开海力士有限公司 Controller, method of operating the same, and memory system
CN110647475A (en) * 2018-06-26 2020-01-03 三星电子株式会社 Storage device and storage system including the same
CN110647475B (en) * 2018-06-26 2023-07-21 三星电子株式会社 Storage device and storage system including the same
US11734170B2 (en) 2018-08-03 2023-08-22 Micron Technology, Inc. Host-resident translation layer validity check
US11687469B2 (en) 2018-12-19 2023-06-27 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11809311B2 (en) 2018-12-21 2023-11-07 Micron Technology, Inc. Host-based flash memory maintenance techniques
US10963399B2 (en) 2019-03-18 2021-03-30 SK Hynix Inc. Memory system, computing apparatus and operation method thereof
US11494307B2 (en) 2020-02-21 2022-11-08 SK Hynix Inc. Host, storage device, and computing system having the same
US11809326B2 (en) 2021-02-19 2023-11-07 SK Hynix Inc. Electronic system including host and memory system for performing read operation based on physical address received from the host

Also Published As

Publication number Publication date
CN107015920A (en) 2017-08-04
KR20170081126A (en) 2017-07-11
CN107015920B (en) 2022-10-21
KR102579938B1 (en) 2023-09-20

Similar Documents

Publication Publication Date Title
KR102579938B1 (en) Storage device including nonvolatile memory device and controller, operating method of storage device, and access method for accessing storage device
US10229051B2 (en) Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
CN106294215B (en) Memory device and method of operating the same
US10509575B2 (en) Storage device and operating method of storage device
US9898207B2 (en) Storage device
CN107179996B (en) Data storage device and method of operating the same
US9244619B2 (en) Method of managing data storage device and data storage device
KR20180123192A (en) A memory device having direct read access
US10067873B2 (en) Data storage device and operating method thereof
KR20170005915A (en) Storage device including nonvolatile memory device
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
US20150278087A1 (en) Storage device and an operating method of the storage device
CN111581122A (en) Method and apparatus for managing mapping data in a memory system
US10162568B2 (en) Method for searching matching key of storage device and server system including the same
KR101751952B1 (en) Operating method of storage device and data writing method for writing data into storage device
US11693574B2 (en) Method of writing data in storage device and storage device performing the same
US20240069782A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20240078027A1 (en) Storage device including nonvolatile memory device and operating method of storage device