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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data 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
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법에 관한 것이다.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
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
프로세서(1100)는 컴퓨팅 장치(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(1100)는 코드 또는 프로그램에 포함된 명령으로 표현되는 동작들을 실행하도록 물리적으로 구성된 회로를 포함하는 하드웨어 기반의 데이터 프로세싱 장치일 수 있다. 예를 들어, 프로세서(1100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(1100)는 범용 프로세서, 특수 목적 프로세서 또는 어플리케이션 프로세서일 수 있다.The
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
스토리지 장치(1300)는 프로세서(1100)와 통신할 수 있다. 스토리지 장치(1300)는 장기적으로 보존되어야 하는 데이터를 저장할 수 있다. 즉, 프로세서(1100)는 장기적으로 보존되어야 하는 데이터를 스토리지 장치(1300)에 저장할 수 있다. 스토리지 장치(1300)는 컴퓨팅 장치(1000)를 구동하기 위한 부트 이미지를 저장할 수 있다. 스토리지 장치(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들의 소스 코드들을 저장할 수 있다. 스토리지 장치(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들에 의해 처리된 데이터를 저장할 수 있다.The
예시적으로, 프로세서(1100)는 스토리지 장치(1300)에 저장된 소스 코드들을 RAM (1200)에 로드하고, RAM (1200)에 로드된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 프로세서(1100)는 스토리지 장치(1300)에 저장된 데이터를 RAM (1200)에 로드하고, RAM (1200)에 로드된 데이터를 처리할 수 있다. 프로세서(1100)는 RAM (1200)에 저장된 데이터 중 장기적으로 보존하고자 하는 데이터를 스토리지 장치(1300)에 저장할 수 있다.Illustratively, the
스토리지 장치(1300)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리 장치를 포함할 수 있다.The
모뎀(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
사용자 인터페이스(1500)는 프로세서(1100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(1500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(1500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.The
스토리지 장치(1300)는 불휘발성 메모리 장치(110) 및 컨트롤러(120)를 포함한다. 불휘발성 메모리 장치(110)는 컴퓨팅 장치(1300)에 메인 저장소를 제공할 수 있다. 컨트롤러(120)는 호스트 장치의 요청에 따라 불휘발성 메모리 장치(110)에 대해 쓰기, 읽기 및 소거 동작들을 수행할 수 있다. 컨트롤러(120)는 호스트 장치의 제어와 관계 없이, 불휘발성 메모리 장치(110)를 관리하는 데에 필요한 다양한 배경 동작들을 수행할 수 있다. 컨트롤러(120)는 불휘발성 메모리 장치(110)를 관리하는 데에 필요한 다양한 메타 데이터를 관리할 수 있다. 메타 데이터는 불휘발성 메모리 장치(110)에 저장되며, 컨트롤러(120)가 필요한 때에 불휘발성 메모리 장치(110)로부터 읽어 사용할 수 있다.The
예시적으로, 컨트롤러(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
컨트롤러(120)의 버퍼 메모리의 용량은 맵 데이터(MD)의 용량보다 적다. 따라서, 맵 데이터(MD) 전체가 컨트롤러(120)에 로드될 수 없다. 맵 데이터(MD) 중에서 호스트 장치로부터의 요청 또는 배경 동작을 수행하는 데에 필요한 부분이 스토리지 맵 캐시 데이터(MCD_S)로 컨트롤러(120)에 로드되어 있지 않으면, 컨트롤러(120)는 맵 캐시 데이터(MCD_S) 중 일부를 삭제 또는 불휘발성 메모리 장치(110)에 기입하고, 불휘발성 메모리 장치(110)로부터 필요한 부분을 읽어야 한다. 이는, 호스트 장치로부터의 요청 또는 배경 동작이 수행되는 시간을 증가시키는 요인이 된다.The capacity of the buffer memory of the
이와 같은 문제를 방지하기 위하여, 본 발명의 실시 예에 따른 스토리지 장치(1300)는 맵 데이터(MD)의 전체 또는 일부를 호스트 장치로 전송하도록 구성된다. 호스트 장치는 스토리 장치로부터 전송되는 맵 데이터(MD)의 전체 또는 일부를 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장하도록 구성된다. 이후에, 호스트 맵 캐시 데이터(MCD_H)를 참조하여, 호스트 장치는 물리 어드레스를 포함하는 읽기 요청을 스토리지 장치(1300)로 전송할 수 있다. 읽기 요청이 물리 어드레스를 포함하면, 컨트롤러(120)는 어드레스 변환을 수행하거나 또는 불휘발성 메모리 장치(110)로부터 맵 데이터(MD) 중 필요한 부분을 읽는 동작을 생략할 수 있다. 따라서, 스토리지 장치(1300)가 호스트 장치로부터의 요청을 수행하는 시간이 감소되며, 스토리지 장치(1300) 및 컴퓨팅 장치(1000)의 동작 속도가 향상된다.In order to prevent such a problem, the
또한, 호스트 장치(1000)의 RAM (1200)에 저장되는 호스트 맵 캐시 데이터(MCD_H)는 스토리지 장치(1300)가 아닌 호스트 장치에 의해 관리된다. 호스트 장치의 RAM (1200)의 관리 권한을 스토리지 장치(1300)에 넘겨줄 필요가 없으므로, 호스트 장치와 스토리지 장치(1300) 사이의 인터페이스를 종래의 것들로부터 변경할 필요 없이 본 발명의 실시 예들이 적용될 수 있다. 따라서, 본 발명의 실시 예들을 적용하는 데에 필요한 비용이 감소된다.The host map cache data (MCD_H) stored in the
도 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
S120 단계에서, 스토리지 장치(1300)는 호스트 장치로부터 읽기 요청을 수신할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 읽기 커맨드 및 어드레스를 포함하는 읽기 요청을 수신할 수 있다.In step S120, the
S130 단계에서, 스토리지 장치(1300)는 호스트 장치로부터 수신된 읽기 요청이 물리 어드레스(PA)를 포함하는지 판별할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 수신되는 읽기 요청 중에서 물리 어드레스(PA)가 위치하도록 할당된 부분에 어드레스가 존재하면, 해당 어드레스를 물리 어드레스(PA)로 식별할 수 있다. 다른 예로서, 컨트롤러(120)는 호스트 장치로부터 수신되는 읽기 요청에 포함된 어드레스가 범위 밖(Out-of-Bound)인 때에, 범위 밖(Out-of-Bound)의 부분을 물리 어드레스(PA)로 식별할 수 있다. 읽기 요청이 물리 어드레스를 포함하면, S140 단계가 생략되고 S150 단계가 수행된다. 읽기 요청이 물리 어드레스를 포함하면, S140 단계가 수행된 후에 S150 단계가 수행된다.In step S130, the
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
S150 단계에서, 컨트롤러(120)는 호스트 장치로부터 수신된 또는 스토리지 맵 캐시 데이터(MCD_S)를 참조하여 변환된 물리 어드레스(PA)를 이용하여 불휘발성 메모리 장치(110)로부터 데이터를 읽을 수 있다.In step S150, the
상술된 바와 같이, 호스트 장치로부터 수신된 물리 어드레스(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
도 3은 파워-온 시에 스토리지 장치(1300)가 호스트 장치에 맵 데이터(MD)의 일부 또는 전부를 전송하는 방법을 보여주는 순서도이다. 도 1 및 도 3을 참조하면, S210 단계에서, 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치는 파워-온 트레이닝을 수행한다. 파워-온 트레이닝은 종단 저항(Termination Resistance)을 조절하는 ZQ 트레이닝, 싱크 또는 스큐를 조절하는 링크 트레이닝, 통신에 필요한 정보를 교환하는 초기화 통신 등을 포함할 수 있다.3 is a flow chart showing how the
S220 단계에서, 호스트 장치는 컨트롤러(120)에 맵 데이터(MD)를 요청할 수 있다. 예를 들어, 호스트 장치는 맵 데이터(MD) 중에서 필요한 부분을 지정하여 요청할 수 있다. 예를 들어, 호스트 장치는 맵 데이터(MD) 중에서 파일 시스템, 부트 이미지, 운영 체제 등과 같이 컴퓨팅 시스템(1000)의 구동에 필요한 데이터가 저장된 부분을 지정하여 요청할 수 있다. 다른 예로서, 호스트 장치는 별도의 지정 없이 맵 데이터(MD)를 컨트롤러(120)에 요청할 수 있다.In step S220, the host device can request map data (MD) to the
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
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
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
S250 단계에서, 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치(110)는 초기화 업로드를 완료할 수 있다.In step S250, the host device, the
상술된 바와 같이, 호스트 장치 및 스토리지 장치(1300)는 파워-온 트레이닝이 완료된 후에, 맵 데이터(MD)의 일부 또는 전부를 RAM (1200)에 업로드할 수 있다. 예를 들어, 맵 데이터(MD)의 일부 또는 전부는 복수회의 불휘발성 메모리 장치(110)에 대한 읽기들 및 호스트 장치에 대한 전송들을 포함할 수 있다. 그러나, 맵 데이터(MD)의 일부 또는 전부는 복수회에 걸쳐 수행되는 것으로 한정되지 않으며, 1회의 불휘발성 메모리 장치(110)에 대한 읽기 및 1회의 호스트 장치에 대한 전송으로 완료될 수 있다.As described above, the host device and
초기화 업로드가 완료되면, 호스트 장치는 스토리지 장치(1300)에 대한 액세스를 정상적으로 시작할 수 있다. 그러나, 호스트 장치 및 스토리지 장치(1300)는 초기화 업로드를 수행하여야 하는 것으로 한정되지 않으며, 초기화 업로드는 생략될 수 있다. 호스트 장치는 초기화 업로드 없이 스토리지 장치(1300)에 대한 액세스를 정상적으로 수행할 수 있다.When the initialization upload is completed, the host device can normally start access to the
도 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
커맨드 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
제4 블록(4)의 일부는 제1 옵션 블록(OB1)으로 사용되고, 나머지 일부는 커맨드 셋 타입을 가리킬 수 있다. 예를 들어, 커맨드 셋 타입은 스카시(SCSI) 커맨드 셋, UFS 특화 커맨드 셋(UFS specific command set), 벤더 특화 커맨드 셋(Vendor specific command set) 등을 포함할 수 있다.A part of the
제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
제12 내지 제15 블록들(12~15)은 호스트 장치가 스토리지 장치(1300)로부터 수신할 데이터의 사이즈 또는 호스트 장치가 스토리지 장치(1300)에 전달할 데이터의 사이즈를 가리킨다.The twelfth to
제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
커맨드 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
제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
도 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
도 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
리드 버퍼 커맨드가 일반 목적을 위해 사용될 때와 맵 데이터(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
리드 버퍼 커맨드가 일반 목적을 위해 사용될 때에, 커맨드 디스크립터 블록(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
리드 버퍼 커맨드가 맵 데이터(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
도 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
도 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
모드 센스 커맨드가 일반 목적을 위해 사용될 때와 맵 데이터(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
리드 버퍼 커맨드가 일반 목적을 위해 사용될 때에, 커맨드 디스크립터 블록(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
모드 센스 커맨드가 맵 데이터(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
도 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
도 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
데이터 인 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
데이터 인 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
헤더의 단대단 순환중복검사 코드(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
데이터 인 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
도 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
맵 데이터 블록들에 오프셋들(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
컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 맵 데이터 블록의 단위로 맵 데이터(MD)를 읽고, 스토리지 맵 캐시 데이터(MCD_S)로 저장할 수 있다. 스토리지 맵 캐시 데이터(MCD_S)를 저장할 때에, 컨트롤러(120)는 헤더(HD_S)를 생성할 수 있다. 헤더(HD_S)는 컨트롤러(120)에 스토리지 맵 캐시 데이터(MCD_S)로 저장된 맵 데이터 블록들의 오프셋들을 포함할 수 있다.The
컨트롤러(120)가 스토리지 맵 캐시 데이터(MCD_S)를 호스트 장치로 전송할 때에, 컨트롤러(120)는 시그니처(SIG)를 생성할 수 있다. 예를 들어, 시그니처(SIG)는 각 맵 데이터 블록에 포함된 각 엔트리의 논리 어드레스(LA) 및 물리 어드레스(PA)에 기반하여 생성될 수 있다. 예를 들어, 컨트롤러(120)는 각 맵 데이터 블록의 각 엔트리의 논리 어드레스(LA) 및 물리 어드레스(PA)에 대해 AES (Advanced Encryption Standard)를 이용한 암호화를 수행하거나, 해시 함수를 수행하거나, 스크램블을 수행하여 추가 데이터를 생성할 수 있다. 컨트롤러(120)는 생성된 추가 데이터의 일부 또는 전부를 시그니처(SIG)로 선택할 수 있다. 컨트롤러(120)는 각 맵 데이터 블록의 논리 어드레스들(LA), 물리 어드레스들(PA) 및 시그니처들(SIG)을 오프셋과 함께 호스트 장치로 전송할 수 있다.When the
호스트 장치의 RAM (1200)은 컨트롤러(120)로부터 전송되는 맵 데이터 블록들을 호스트 맵 캐시 데이터(MCD_H)로 저장할 수 있다. 호스트 맵 캐시 데이터(MCD_H)를 저장할 때에, 호스트 장치는 헤더(HD_H)를 생성할 수 있다. 헤더(HD_H)는 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장된 맵 데이터 블록들의 오프셋들을 포함할 수 있다. 호스트 맵 캐시 데이터(MCD_H)로 저장되는 각 맵 데이터 블록은 논리 어드레스들(LA), 물리 어드레스들(PA) 및 시그니처들(SIG)을 포함할 수 있다.The
예시적으로, 호스트 장치가 컨트롤러(120)에 맵 데이터(MD)를 요청할 때에, 호스트 장치는 원하는 맵 데이터 블록의 오프셋을 컨트롤러(120)에 전달할 수 있다. 컨트롤러(120)로부터 맵 데이터 블록이 수신될 때에, 호스트 장치는 수신되는 맵 데이터 블록의 오프셋을 헤더(HD_H)의 오프셋과 비교하고, 비교 결과에 따라 신규 추가 또는 갱신을 선택할 수 있다. 호스트 장치가 컨트롤러에 읽기를 요청할 때에, 호스트 장치는 물리 어드레스 및 물리 어드레스가 포함된 맵 데이터 블록의 오프셋을 전송할 수 있다. 컨트롤러(120)는 수신된 맵 데이터 블록의 오프셋과 헤더(HD_S)에 등록된 오프셋을 비교하고, 스토리지 맵 캐시 데이터(MCD_S)에 해당 맵 데이터 블록이 저장되어 있는지 판별할 수 있다.Illustratively, when the host device requests map data (MD) to the
예시적으로, 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)에서 호스트 맵 캐시 데이터(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
도 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
제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
예를 들어, 컨트롤러(120)는 수집된 스토리지 캐시 맵 데이터(MCD_S)의 사이즈가 기준 사이즈에 도달할 때까지, 갱신된 스토리지 캐시 맵 데이터(MCD_S)의 수집을 시작한 후 한 주기가 경과하여 다음 주기에 도달할 때까지, 또는 호스트 장치로부터 이슈된 요청들이 모두 완료되어 스토리지 장치(1300)에 계류중인(pending)인 호스트 요청이 존재하지 않을 때까지 갱신된 스토리지 캐시 맵 데이터(KCD_S)를 수집할 수 있다.For example, the
갱신된 스토리지 캐시 캡 데이터(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
예시적으로, 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
예시적으로, 수집된 스토리지 맵 캐시 데이터(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
도 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
S320 단계에서, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분이 스토리지 맵 캐시 데이터(MCD_S)와 히트하는지 판별한다. 예를 들어, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분이 스토리지 맵 캐시 데이터(MCD_S)로서 컨트롤러(120)에 로드되어 있는지 판별할 수 있다. 스토리지 맵 캐시 데이터(MCD_S)의 히트가 발생하면, S330 단계가 생략되고 S340 단계가 수행될 수 있다. 스토리지 맵 캐시 데이터(MCD_S)의 히트가 발생하지 않으면, 즉 스토리지 맵 캐시 데이터(MCD_S)의 미스가 발생하면, S330 단계가 수행된 후에 S340 단계가 수행될 수 있다.In step S320, the
S330 단계에서, 컨트롤러(120)는 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분을 불휘발성 메모리 장치(110)로부터 읽고 스토리지 캐시 맵 데이터(MCD_S)로 저장할 수 있다. S340 단계에서, 컨트롤러(120)는 스토리지 캐시 맵 데이터(MCD_S) 중에서 호스트 장치에 의해 요청된 맵 데이터(MD)의 부분을 호스트 장치로 전송할 수 있다.In step S330, the
예시적으로, 요청된 맵 데이터(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
쓰기 이벤트가 발생함에 따라, 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
S330 단계에서, 호스트 장치는 논리 어드레스들(LA)을 포함하는 쓰기 요청을 컨트롤러(120)로 전송할 수 있다. 쓰기 요청은 도 4를 참조하여 설명된 커맨드 UPIU로서 전달될 수 있다.In step S330, the host device may send a write request to the
호스트 장치로부터의 쓰기 요청에 응답하여, S340 단계에서, 컨트롤러(120)는 데이터가 기입될 불휘발성 메모리 장치(110)의 물리 어드레스들(PA)을 선택할 수 있다.In response to the write request from the host device, in step S340, the
S350 단계에서, 컨트롤러(120)는 선택된 물리 어드레스들(PA) 및 쓰기 커맨드를 불휘발성 메모리 장치(110)에 전송함으로써, 호스트 장치에 의해 요청된 쓰기를 수행할 수 있다.In step S350, the
S360 단계에서, 컨트롤러(120)는 선택된 물리 어드레스들(PA) 및 쓰기 요청에 포함된 논리 어드레스들(LA) 사이의 사상 관계를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.In step S360, the
예시적으로, 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
다른 예로서, 쓰기 요청에 포함된 논리 어드레스들(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
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
S393 단계에서, 컨트롤러(120)는 맵 데이터 요청에 따라 둘 이상의 연속적인 물리 어드레스 범위들의 시작 물리 어드레스들을 호스트 장치로 전송할 수 있다.In step S393, the
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
도 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
읽기 이벤트가 발생함에 따라, 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
예시적으로, 호스트 장치의 읽기 이벤트가 하나의 연속적인 물리 어드레스 범위와 연관될 때에, 호스트 장치는 하나의 연속적인 물리 어드레스의 시작 물리 어드레스 및 그와 연관된 시그니처(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
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
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
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
S450 단계에서 수신되는 읽기 커맨드, S470 단계에서 수신되는 읽기 커맨드, 또는 S493 단계에서 수신되는 읽기 커맨드에 응답하여, S495 단계에서 불휘발성 메모리 장치(110)는 데이터를 컨트롤러(120)로 전송할 수 있다.In step S495, the
S497 단계에서, 컨트롤러(120)는 불휘발성 메모리 장치(110)로부터 수신된 데이터를 호스트 장치로 전송할 수 있다.In step S497, the
도 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
도 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
리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제5 바이트들(2~5)은 논리 어드레스(LOGICAL ADDRESS, LA)를 가리킨다. 논리 어드레스(LA)는 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함할 수 있다.The second to
리드 (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
리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제7 및 제8 바이트들(7, 8)은 전송 길이(TRANSFER LENGTH)를 가리킨다. 전송 길이(TRANSFER LENGTH)는 읽기 요청을 통해 읽혀질 데이터의 길이를 가리킨다.The seventh and
리드 (10) 커맨드의 커맨드 디스크립터 블록(CDB)의 제9 바이트(9)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The
도 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
도 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
리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제9 바이트들(2~9)은 제4 옵션 블록(OB4)을 가리킨다. 제4 옵션 블록(OB4)은 최상위 비트(MSB) 내지 최하위 비트(LSB)를 포함할 수 있다. 제4 옵션 블록(OB4)은 논리 어드레스(LOGICAL ADDRESS, LA) 및 물리 어드레스(PHYSICAL ADDRESS, PA)을 포함할 수 있다.The second to
리드 (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
리드 (16) 커맨드의 커맨드 디스크립터 블록(CDB)의 제15 바이트(15)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The
도 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
도 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
모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 제2 내지 제6 바이트들(2~6)은 제5 옵션 블록(OB5)일 수 있다.The second to
모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 제7 및 제8 바이트들(7, 8)은 파라미터 리스트 길이(PARAMETER LIST LENGTH)를 가리킬 수 있다.The seventh and
모드 선택 커맨드의 커맨드 디스크립터 블록(CDB)의 커맨드 디스크립터 블록(CDB)의 제15 바이트(15)는 컨트롤(CONTROL)을 포함할 수 있다. 예를 들어, 컨트롤은 '00h'일 수 있다.The
모드 선택 커맨드가 물리 어드레스들(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
예시적으로, 호스트 장치는 도 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
도 16은 컨트롤러(120)가 시그니처(SIG)를 관리하는 방법을 보여주는 순서도이다. 도 1 및 도 16을 참조하면, S510 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송할 것인지 판별한다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하지 않으면, S520 단계 및 S530 단계는 생략된다. 물리 어드레스(PA) 또는 맵 데이터 블록(MDk)을 호스트 장치로 전송하는 경우, S520 단계 및 S530 단계가 수행된다.16 is a flowchart showing how the
S520 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 그에 대응하는 논리 어드레스(LA)로부터 시그니처(SIG)를 생성할 수 있다. 또는, 컨트롤러(120)는 맵 데이터 블록(MDk)의 각 엔트리의 물리 어드레스(PA) 및 논리 어드레스(LA)로부터 맵 데이터 블록(MDk)에 대응하는 시그니처 블록(SIGk)을 생성할 수 있다.In step S520, the
S530 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 그에 대응하는 시그니처(SIG), 또는 맵 데이터 블록(MDk) 및 그에 대응하는 시그니처 블록(SIGk)을 호스트 장치로 전송할 수 있다.In step S530, the
S540 단계에서, 컨트롤러(120)는 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되는지 판별한다. 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되지 않으면, S550 단계 내지 S570 단계는 생략된다. 호스트 장치로부터 논리 어드레스(LA), 물리 어드레스(PA) 및 시그니처(SIG)가 수신되면, S550 단계 내지 S570 단계가 수행된다.In step S540, the
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
도 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
S620 단계에서, 컨트롤러(120)는 물리 어드레스(PA) 및 시그니처(SIG)를 암호화가거나, 또는 맵 데이터 블록(MDk)의 물리 어드레스들(PA) 및 시그니처들(SIG)을 암호화할 수 있다. S630 단계에서, 컨트롤러(120)는 암호화된 물리 어드레스(PA_E) 및 시그니처(SIG_E) 또는 암호화된 물리 어드레스(PA_E) 및 시그니처(SIG_E)를 포함하는 맵 데이터 블록(MDk)을 호스트 장치로 전송할 수 있다.In step S620, the
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
S650 단계에서, 컨트롤러(120)는 암호화된 물리 어드레스(PA_E) 및 암호화된 시그니처(SIG_E)를 복호화한다. S660 단계에서, 컨트롤러(120)는 복호화된 물리 어드레스(PA) 및 시그니처(SIG)를 사용할 수 있다. 예를 들어, 도 16을 참조하여 설명된 바와 같이, 컨트롤러(120)는 복호화된 시그니처(SIG)를 이용하여 복호화된 시그니처(SIG)가 올바른지 판별할 수 있다. 복호화된 시그니처(SIG)가 올바르면, 도 12를 참조하여 설명된 바와 같이, 컨트롤러(120)는 복호화된 물리 어드레스(PA) 및 읽기 커맨드를 불휘발성 메모리 장치(110)로 전송할 수 있다.In step S650, the
상술된 바와 같이, 호스트 맵 캐시 데이터(MCD_H)로서 호스트 장치의 RAM (1200)에 로드되는 맵 데이터(MD)의 부분이 암호화되면, 맵 데이터(MD)의 보안성이 향상되고, 스토리지 장치(1300)의 보안성이 향상될 수 있다.As described above, when the portion of the map data MD loaded into the
도 18은 스토리지 장치(1300)가 조각 모음을 수행하는 예를 보여주는 순서도이다. 도 1 및 도 18을 참조하면, S710 단계에서, 컨트롤러(120)는 유휴 상태인지 판별할 수 있다. 예를 들어, 컨트롤러(120)는 호스트 장치로부터 이슈되어 계류중인(pending) 요청이 없는 경우, 유휴 상태로 판별할 수 있다.18 is a flowchart showing an example in which the
유휴 상태가 판별되면, S720 단계에서 컨트롤러(120)는 조각 모음을 수행할 수 있다. 조각 모음은 하나의 연속적인 논리 어드레스 범위에 속하며 둘 이상의 연속적인 물리 어드레스 범위들에 속하는 데이터들을 마이그레이션(migration)하여, 하나의 연속적인 논리 어드레스 범위에 속하는 데이터가 하나의 연속적인 물리 어드레스 범위에 속하도록 제어하는 것을 포함한다. S730 단계에서, 컨트롤러(120)는 조각 모음의 결과를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.If the idle state is determined, the
상술된 바와 같이 조각 모음이 수행되면, 호스트 장치가 읽기 요청과 함께 복수의 물리 어드레스들을 컨트롤러(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
도 19는 컴퓨팅 장치(1000)가 스토리지 장치(1300)의 조각 모음을 지원하는 예를 보여주는 순서도이다. 도 1 및 도 19를 참조하면, S810 단계에서, 호스트 장치에서 절전(power save) 이벤트가 발생한다. 절전 이벤트는 호스트 장치가 절전 모드로 진입하기 위한 조건이 만족되었음을 가리킨다.FIG. 19 is a flowchart showing an example in which the
절전 이벤트가 발생하면, S820 단계에서, 호스트 장치는 스토리지 장치(1300)에서 조각 모음이 필요한지 판별한다. 예를 들어, 호스트 장치는 스토리지 장치(1300)로부터 전송되는 응답 UPIU (Response UPIU)의 장치 정보(Device Information)을 통해, 또는 스토리지 장치(1300)로부터 전송되는 별도의 보고를 통해, 스토리지 장치(1300)에서 조각 모음이 필요한지 식별할 수 있다.If a power save event occurs, the host device determines in S820 whether the
절전 이벤트가 발생한 때에 스토리지 장치(1300)에서 조각 모음이 필요하면, S830 단계에서 호스트 장치는 절전 모드를 금지하고 스토리지 장치(1300)가 조각 모음을 수행하도록 허용한다. S840 단계에서 컨트롤러(120)는 불휘발성 메모리 장치(110)를 액세스하여 조각 모음을 수행할 수 있다. S850 단계에서, 컨트롤러(120)는 조각 모음의 결과를 반영하여 스토리지 맵 캐시 데이터(MCD_S)를 갱신할 수 있다.If defragmentation is required in the
조각 모음이 완료되면, 또는 조각 모음이 필요치 않으면, S860 단계에서 호스트 장치, 컨트롤러(120) 및 불휘발성 메모리 장치(110)는 절전 모드로 진입할 수 있다.When the defragmentation is completed, or when defragmentation is not required, the host device, the
도 20은 호스트 장치가 스토리지 장치(1300)를 액세스하는 방법을 보여주는 순서도이다. 도 20을 참조하면, S910 단계에서, 호스트 장치는 스토리지 장치(1300)로부터 맵 데이터를 읽을 수 있다. 맵 데이터는 RAM (1200)에 호스트 맵 캐시 데이터(MCD_H)로 저장될 수 있다.20 is a flow chart showing how the host device accesses the
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
논리 어드레스(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
논리 어드레스(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
스토리지 장치(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
도 21은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(110)를 보여주는 블록도이다. 도 1 및 도 21을 참조하면, 불휘발성 메모리 장치(110)는 메모리 셀 어레이(111), 행 디코더 회로(113), 페이지 버퍼 회로(115), 데이터 입출력 회로(117), 그리고 제어 로직 회로(119)를 포함한다.21 is a block diagram illustrating a
메모리 셀 어레이(111)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 행 디코더 회로(113)에 연결될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(115)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)의 메모리 셀들은 동일한 구조들을 가질 수 있다.The
예시적으로, 복수의 메모리 블록들(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
행 디코더 회로(113)는 복수의 접지 선택 라인들(GSL), 복수의 워드 라인들(WL), 그리고 복수의 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(111)에 연결된다. 행 디코더 회로(113)는 제어 로직 회로(119)의 제어에 따라 동작한다. 행 디코더 회로(113)는 컨트롤러(120)로부터 입출력 채널을 통해 수신되는 어드레스를 디코딩하고, 디코딩된 어드레스에 따라 스트링 선택 라인들(SSL), 워드 라인들(WL), 그리고 접지 선택 라인들(GSL)에 인가되는 전압들을 제어할 수 있다.The
페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(111)에 연결된다. 페이지 버퍼 회로(115)는 복수의 데이터 라인들(DL)을 통해 데이터 입출력 회로(117)와 연결된다. 페이지 버퍼 회로(115)는 제어 로직 회로(119)의 제어에 따라 동작한다.The
데이터 입출력 회로(117)는 복수의 데이터 라인들(DL)을 통해 페이지 버퍼 회로(115)와 연결된다. 데이터 입출력 회로(117)는 페이지 버퍼 회로(115)에 의해 읽힌 데이터를 입출력 채널을 통해 컨트롤러(120)로 출력하고, 컨트롤러(120)로부터 입출력 채널을 통해 수신되는 데이터를 페이지 버퍼 회로(115)로 전달할 수 있다. The data input /
제어 로직 회로(119)는 컨트롤러(120)로부터 입출력 채널을 통해 커맨드를 수신하고, 제어 채널을 통해 제어 신호를 수신할 수 있다. 제어 로직 회로(119)는 제어 신호에 응답하여 입출력 채널을 통해 수신되는 커맨드를 수신하고, 입출력 채널을 통해 수신되는 어드레스를 행 디코더 회로(113)로 라우팅하고, 그리고 입출력 채널을 통해 수신되는 데이터를 데이터 입출력 회로(117)로 라우팅할 수 있다. 제어 로직 회로(119)는 수신된 커맨드를 디코딩하고, 디코딩된 커맨드에 따라 불휘발성 메모리 장치(110)를 제어할 수 있다.The
도 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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
파워-온 시에 상기 컨트롤러가 상기 불휘발성 메모리 장치로부터 상기 맵 데이터의 적어도 일부를 읽고, 상기 적어도 일부를 상기 호스트에 전송하는 단계를 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터의 블록들과 연관된 식별자들을 저장하고, 그리고 상기 저장된 식별자들을 상기 호스트로 전송하는 단계를 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 수집된 정보의 사이즈가 기준 사이즈에 도달하면, 상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.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.
상기 컨트롤러는 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보가 추가 또는 갱신될 때에, 해당 정보를 수집하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 맵 데이터가 상기 호스트 장치로 전송된 후에, 상기 컨트롤러가 상기 호스트 장치로부터 상기 맵 데이터 요청을 다시 수신하는 단계를 더 포함하는 동작 방법.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.
상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 동안, 상기 컨트롤러가 상기 수집된 정보를 상기 불휘발성 메모리 장치에 기입하는 단계를 더 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 컨트롤러가 주기적으로 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스들 및 상기 물리 어드레스들 사이의 사상 정보를 수집하는 단계; 그리고
상기 호스트 장치로부터 전송된 요청들 중에서 처리되지 않은 요청이 존재하지 않을 때, 상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치에 전송하는 단계를 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청 및 논리 어드레스를 수신하는 단계;
상기 컨트롤러가 상기 논리 어드레스와 사상된 물리 어드레스의 정보를 수집하는 단계; 그리고
상기 컨트롤러가 상기 수집된 정보를 상기 맵 데이터로서 상기 호스트 장치로 전송하는 단계를 포함하는 동작 방법.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.
상기 컨트롤러가 상기 호스트 장치로부터 쓰기 요청 및 데이터를 수신하는 단계;
상기 컨트롤러가 상기 쓰기 요청에 따라 상기 데이터를 상기 불휘발성 메모리 장치에 기입하는 단계;
상기 데이터가 상기 불휘발성 메모리 장치의 하나의 연속적인 물리 어드레스 범위에 기입되었으면, 상기 컨트롤러가 상기 연속적인 물리 어드레스 범위의 시작 물리 어드레스를 포함하는 쓰기 응답을 상기 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법.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.
상기 데이터가 상기 불휘발성 메모리 장치의 둘 이상의 연속적인 물리 어드레스 범위들에 기입되었으면, 상기 컨트롤러가 물리 어드레스가 배제된 쓰기 응답을 상기 호스트 장치로 전송하는 단계;
상기 컨트롤러가 상기 호스트 장치로부터 맵 데이터 요청을 수신하는 단계; 그리고
상기 컨트롤러가 상기 맵 데이터 요청에 응답하여 상기 둘 이상의 연속적인 물리 어드레스 범위들 각각의 시작 어드레스들을 상기 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법.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.
상기 읽기 요청이 물리 어드레스를 포함하면, 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계는,
상기 읽기 요청의 물리 어드레스 및 논리 어드레스로부터 시그니처를 생성하는 단계;
상기 읽기 요청의 시그니처와 상기 생성된 시그니처가 일치하면, 상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함하는 동작 방법.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.
상기 읽기 요청의 시그니처와 상기 생성된 시그니처가 일치하지 않으면, 상기 읽기 요청의 논리 어드레스를 상기 제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 >
상기 스토리지 장치가 상기 호스트 장치로부터 읽기 요청을 수신하는 단계는,
상기 읽기 요청에 대응하는 데이터가 상기 불휘발성 메모리 장치의 하나의 연속적인 물리 어드레스 범위에 속할 때, 상기 컨트롤러가 상기 호스트 장치로부터 상기 하나의 연속적인 물리 어드레스 범위의 시작 물리 어드레스를 포함하는 상기 읽기 요청을 수신하는 단계; 그리고
상기 읽기 요청에 대응하는 데이터가 상기 불휘발성 메모리 장치의 둘 이상의 연속적인 물리 어드레스 범위들에 속할 때, 상기 컨트롤러가 상기 호스트 장치로부터 물리 어드레스가 배제된 상기 읽기 요청 및 상기 둘 이상의 연속적인 물리 어드레스 범위들 각각의 시작 물리 어드레스들을 포함하는 제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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터의 논리 어드레스들 및 물리 어드레스들로부터 시그니처들을 생성하는 단계; 그리고
상기 컨트롤러가 상기 시그니처들을 상기 맵 데이터와 함께 상기 호스트 장치로 전송하는 단계를 포함하는 동작 방법.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.
상기 맵 데이터를 상기 호스트 장치에 전송하는 단계는,
상기 컨트롤러가 상기 맵 데이터 중에서 적어도 물리 어드레스들을 암호화하는 단계; 그리고
상기 컨트롤러가 상기 암호화된 물리 어드레스들과 상기 논리 어드레스들을 사상하는 상기 맵 데이터를 상기 호스트 장치로 전송하는 단계를 포함하고,
상기 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계는,
상기 컨트롤러가 상기 물리 어드레스를 복호화하는 단계; 그리고
상기 컨트롤러가 상기 복호화된 물리 어드레스에 기반하여 상기 불휘발성 메모리 장치로부터 데이터를 읽는 단계를 포함하는 동작 방법.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.
상기 불휘발성 메모리 장치에 저장되며 연속적인 논리 어드레스들에 대응하는 데이터가 연속적인 물리 어드레스들에 대응하도록, 상기 컨트롤러가 조각모음을 수행하는 단계를 더 포함하는 동작 방법.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.
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)
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)
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)
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 |
-
2016
- 2016-06-15 KR KR1020160074700A patent/KR20170081118A/en unknown
- 2016-11-29 KR KR1020160160792A patent/KR102579938B1/en active IP Right Grant
- 2016-12-30 CN CN201611264261.XA patent/CN107015920B/en active Active
Cited By (11)
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 |