KR102588751B1 - Storage device and operation method thereof - Google Patents
Storage device and operation method thereof Download PDFInfo
- Publication number
- KR102588751B1 KR102588751B1 KR1020220029967A KR20220029967A KR102588751B1 KR 102588751 B1 KR102588751 B1 KR 102588751B1 KR 1020220029967 A KR1020220029967 A KR 1020220029967A KR 20220029967 A KR20220029967 A KR 20220029967A KR 102588751 B1 KR102588751 B1 KR 102588751B1
- Authority
- KR
- South Korea
- Prior art keywords
- data processing
- hmb
- area
- policy
- processing policy
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 개시의 실시 예에 따른 복수의 데이터 프로세싱 엔진들을 포함하는 스토리지 장치의 동작 방법에 있어서, 외부 호스트로부터 할당된 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역을 제1 데이터 프로세싱 정책으로 설정하고, 복수의 영역들 중 제2 영역을 제2 데이터 프로세싱 정책으로 설정하는 단계, 복수의 데이터 프로세싱 엔진들 중 제1 데이터 프로세싱 정책에 대응하는 제1 데이터 프로세싱 엔진을 기반으로, 제1 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계, 복수의 데이터 프로세싱 엔진들 중 제2 데이터 프로세싱 정책에 대응하는 제2 데이터 프로세싱 엔진을 기반으로, 제2 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계, 및 제1 영역의 변경된 특성을 기반으로, 제1 영역을 제1 데이터 프로세싱 정책에서 제3 데이터 프로세싱 정책으로 변경하는 단계를 포함한다. In a method of operating a storage device including a plurality of data processing engines according to an embodiment of the present disclosure, setting a first area among a plurality of areas of a host memory buffer allocated from an external host as a first data processing policy; Setting a second area among the plurality of areas with a second data processing policy, based on a first data processing engine corresponding to the first data processing policy among the plurality of data processing engines, data to be stored in the first area performing an encoding operation on data to be stored in the second area, based on a second data processing engine corresponding to a second data processing policy among the plurality of data processing engines, and and changing the first region from the first data processing policy to the third data processing policy based on the changed characteristics of the first region.
Description
본 개시는 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 장치 및 이의 동작 방법에 관한 것이다.The present disclosure relates to semiconductor memory, and more specifically, to a storage device and a method of operating the same.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.Semiconductor memories include volatile memory devices, such as SRAM and DRAM, where the stored data is lost when the power supply is cut off, and flash memory devices, such as PRAM, MRAM, RRAM, and FRAM, which retain the stored data even when the power supply is cut off. It is classified as a volatile memory device.
다양한 전자 장치가 많은 사람에 의해 이용되고 많은 양의 데이터가 생성됨에 따라, 스토리지 장치에서 데이터를 다루는 데에 많은 양의 자원들이 요구되게 되었다. 예로서, 데이터의 양이 증가하는 경우, 그 데이터와 관련되는 메타 데이터의 양 역시 증가할 수 있고, 따라서 데이터 및 메타 데이터를 버퍼링하기 위해 충분한 용량의 메모리가 요구될 수 있다. 다른 예로서, 데이터의 양이 증가하는 경우, 그 데이터를 처리하고 많은 양의 연산들을 처리하기 위해 높은 연산 능력의 프로세서가 요구될 수 있다.As various electronic devices are used by many people and large amounts of data are generated, a large amount of resources are required to handle data in storage devices. For example, as the amount of data increases, the amount of metadata associated with that data may also increase, and thus a sufficient amount of memory may be required to buffer the data and metadata. As another example, when the amount of data increases, a processor with high computing power may be required to process the data and handle large amounts of operations.
그러나, 비용, 장치 크기, 설계상 한계 등과 같은 다양한 이슈들 때문에, 충분한 자원들을 갖는 스토리지 장치를 구현하는 것은 어려울 수 있다. 이러한 관점에서, 스토리지 장치를 위해 충분한 자원들을 제공하기 위해 이미 존재하는 자원을 이용하는 것이 유익할 수 있다.However, it can be difficult to implement a storage device with sufficient resources due to various issues such as cost, device size, design limitations, etc. In this respect, it may be beneficial to utilize resources that already exist to provide sufficient resources for the storage device.
본 개시의 목적은 호스트 메모리 버퍼의 복수의 영역별로 데이터 프로세싱 정책을 선택하고 변경함으로써 향상된 성능을 갖고, 효율적으로 저장 공간을 관리하는 스토리지 장치 및 이의 동작 방법을 제공하는데 있다. The purpose of the present disclosure is to provide a storage device that has improved performance and efficiently manages storage space by selecting and changing a data processing policy for each region of a host memory buffer and a method of operating the same.
본 개시의 실시 예에 따른 복수의 데이터 프로세싱 엔진들을 포함하는 스토리지 장치의 동작 방법에 있어서, 외부 호스트로부터 할당된 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역을 제1 데이터 프로세싱 정책으로 설정하고, 복수의 영역들 중 제2 영역을 제2 데이터 프로세싱 정책으로 설정하는 단계, 복수의 데이터 프로세싱 엔진들 중 제1 데이터 프로세싱 정책에 대응하는 제1 데이터 프로세싱 엔진을 기반으로, 제1 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계, 복수의 데이터 프로세싱 엔진들 중 제2 데이터 프로세싱 정책에 대응하는 제2 데이터 프로세싱 엔진을 기반으로, 제2 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계, 및 제1 영역의 변경된 특성을 기반으로, 제1 영역을 제1 데이터 프로세싱 정책에서 제3 데이터 프로세싱 정책으로 변경하는 단계를 포함한다. In a method of operating a storage device including a plurality of data processing engines according to an embodiment of the present disclosure, setting a first area among a plurality of areas of a host memory buffer allocated from an external host as a first data processing policy; Setting a second area among the plurality of areas with a second data processing policy, based on a first data processing engine corresponding to the first data processing policy among the plurality of data processing engines, data to be stored in the first area performing an encoding operation on data to be stored in the second area, based on a second data processing engine corresponding to a second data processing policy among the plurality of data processing engines, and and changing the first region from the first data processing policy to the third data processing policy based on the changed characteristics of the first region.
본 개시의 실시 예에 따른 복수의 데이터 프로세싱 엔진들을 포함하는 스토리지 장치의 동작 방법은 외부 호스트로부터 호스트 메모리 버퍼의 할당 정보를 수신하는 단계, 호스트 메모리 버퍼의 할당 정보를 기반으로, 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역의 제1 유형 데이터 프로세싱 정책을 선택하는 단계, 제1 영역의 제2 유형 데이터 프로세싱 정책을 선택하는 단계, 제1 영역의 제3 유형 데이터 프로세싱 정책을 선택하는 단계, 복수의 데이터 프로세싱 엔진들 중 제1 유형 데이터 프로세싱 정책에 대응하는 제1 오류 검출 엔진, 복수의 데이터 프로세싱 엔진들 중 제2 유형 데이터 프로세싱 정책에 대응하는 제1 오류 정정 엔진, 및 복수의 데이터 프로세싱 엔진들 중 제3 유형 데이터 프로세싱 정책에 대응하는 제1 암호화 엔진을 기반으로 쓰기 데이터에 대한 인코딩 동작을 수행하여, 제1 영역으로 인코딩된 쓰기 데이터를 전송하는 단계, 제1 오류 검출 엔진, 제1 오류 정정 엔진, 및 제1 암호화 엔진을 기반으로 제1 영역에서 읽은 데이터에 대한 디코딩 동작을 수행하는 단계, 제1 영역의 데이터 프로세싱 정책 변경 조건이 충족되었는지 모니터링 하는 단계, 및 데이터 프로세싱 정책 변경 조건이 충족된 경우, 제1 영역의 제1 내지 제3 유형의 데이터 프로세싱 정책들을 변경하는 단계를 포함한다. A method of operating a storage device including a plurality of data processing engines according to an embodiment of the present disclosure includes receiving allocation information of a host memory buffer from an external host, based on the allocation information of the host memory buffer, selecting a first type data processing policy of a first area among the areas, selecting a second type data processing policy of the first area, selecting a third type data processing policy of the first area, a plurality of a first error detection engine corresponding to a first type data processing policy among the data processing engines, a first error correction engine corresponding to a second type data processing policy among the plurality of data processing engines, and a plurality of data processing engines. performing an encoding operation on write data based on a first encryption engine corresponding to a third type data processing policy and transmitting encoded write data to a first area, a first error detection engine, and first error correction. engine, and performing a decoding operation on data read from the first area based on the first encryption engine, monitoring whether the data processing policy change condition of the first area is met, and if the data processing policy change condition is met. In this case, it includes changing the first to third types of data processing policies of the first area.
본 개시의 실시 예에 따른 스토리지 장치는 메모리 장치, 및 메모리 장치와 관련되는 정보를 외부 호스트 메모리 버퍼에 저장하고, 외부 호스트 메모리 버퍼를 관리하는 컨트롤러를 포함하되, 컨트롤러는 외부 호스트 메모리 버퍼의 복수의 영역들 중 적어도 하나의 영역에 대한 데이터 프로세싱 정책을 선택하고, 적어도 하나의 영역 및 대응하는 데이터 프로세싱 정책을 호스트 메모리 버퍼 맵핑 테이블로 관리하고, 상태 관리자의 변경 신호에 응답하여, 적어도 하나의 영역에 대한 데이터 프로세싱 정책을 변경하는 호스트 메모리 버퍼 관리자, 복수의 데이터 프로세싱 엔진들을 포함하고, 호스트 메모리 버퍼 맵핑 테이블을 기반으로 복수의 데이터 프로세싱 엔진들 중 적어도 하나의 엔진을 선택하고, 적어도 하나의 엔진을 기반으로 데이터에 대한 인코딩 동작을 수행하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 외부 호스트 메모리 버퍼로 전송하고, 적어도 하나의 엔진을 기반으로 외부 호스트 메모리 버퍼에서 읽은 데이터에 대한 디코딩 동작을 수행하는 호스트 메모리 버퍼 프로세싱 엔진, 및 적어도 하나의 영역에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링하고, 변경 조건이 충족된 경우, 호스트 메모리 버퍼 관리자로 변경 신호를 출력하는 상태 관리자를 포함한다. A storage device according to an embodiment of the present disclosure includes a memory device and a controller that stores information related to the memory device in an external host memory buffer and manages the external host memory buffer, where the controller stores a plurality of external host memory buffers. Select a data processing policy for at least one of the regions, manage the at least one region and the corresponding data processing policy with a host memory buffer mapping table, and respond to a change signal from the state manager to configure the at least one region. A host memory buffer manager that changes a data processing policy for a host memory, includes a plurality of data processing engines, selects at least one engine among the plurality of data processing engines based on a host memory buffer mapping table, and selects at least one engine based on the at least one engine. A host that performs an encoding operation on data to generate encoded data, transfers the encoded data to an external host memory buffer, and performs a decoding operation on data read from the external host memory buffer based on at least one engine. It includes a memory buffer processing engine, and a state manager that monitors whether a change condition of a data processing policy for at least one area is met and, when the change condition is met, outputs a change signal to the host memory buffer manager.
본 개시에 따르면, 스토리지 장치는 호스트 메모리 버퍼를 관리하며, 호스트 메모리 버퍼의 복수의 영역별로 데이터 프로세싱 정책을 선택하고, 변경된 특성을 기반으로 데이터 프로세싱 정책을 변경할 수 있다. 따라서, 향상된 성능을 갖고, 효율적으로 저장 공간을 관리하는 스토리지 장치 및 이의 동작이 제공된다. According to the present disclosure, a storage device manages a host memory buffer, selects a data processing policy for each of a plurality of areas of the host memory buffer, and changes the data processing policy based on the changed characteristics. Accordingly, a storage device and its operation that have improved performance and efficiently manage storage space are provided.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 HMB 컨트롤러를 좀 더 상세하게 보여주는 블록도이다.
도 3은 HMB의 복수의 영역들 및 HMB 관리자가 관리하는 테이블의 예를 보여주는 도면이다.
도 4는 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 5는 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 6은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 7은 도 6의 S340 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 8은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 9는 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 10a 및 도10b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 11은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 12a 및 도 12b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 13은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 14a 및 도 14b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 15은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 16a 및 도 16b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 17a 및 도 17b는 도 1의 스토리지 시스템의 동작의 예를 보여주는 순서도들이다.
도 18a 내지 도 18c는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 19는 도 1의 스토리지 시스템을 좀 더 상세하게 보여주는 블록도이다.
도 20은 도 19의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 21a는 도 20의 S630 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 21b의 S650 단계는 S651 단계 내지 S658 단계를 포함할 수 있다.
도 21c는 도 20의 S670 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 22는 도 19의 HMB 컨트롤러의 동작 방법의 예를 보여주는 순서도이다.
도 23은 도 19의 스토리지 장치의 동작의 예를 보여주는 도면이다.
도 24는 도 19의 제1 오류 정정 엔진의 예시를 간략히 보여주는 블록도이다.
도 25는 도 19의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 26은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다.1 is a block diagram illustrating a storage system according to an embodiment of the present disclosure.
FIG. 2 is a block diagram showing the HMB controller of FIG. 1 in more detail.
Figure 3 is a diagram showing an example of a plurality of areas of the HMB and a table managed by the HMB manager.
4 is a flowchart showing an example of the operation of a storage device.
FIG. 5 is a flowchart showing an example of the operation of the HMB controller of FIG. 1.
FIG. 6 is a flowchart showing an example of the operation of the HMB controller of FIG. 1.
Figure 7 is a flowchart showing step S340 of Figure 6 in more detail.
FIG. 8 is a flowchart showing an example of the operation of the HMB controller of FIG. 1.
Figure 9 is a flowchart showing step S410 of Figure 8 in more detail.
FIGS. 10A and 10B are diagrams showing examples of operations of the storage device of FIG. 1.
FIG. 11 is a flowchart showing step S410 of FIG. 8 in more detail.
FIGS. 12A and 12B are diagrams showing examples of operations of the storage device of FIG. 1.
Figure 13 is a flowchart showing step S410 of Figure 8 in more detail.
FIGS. 14A and 14B are diagrams showing examples of operations of the storage device of FIG. 1.
Figure 15 is a flowchart showing step S410 of Figure 8 in more detail.
FIGS. 16A and 16B are diagrams showing examples of operations of the storage device of FIG. 1.
FIGS. 17A and 17B are flowcharts showing an example of the operation of the storage system of FIG. 1.
FIGS. 18A to 18C are diagrams showing examples of operations of the storage system of FIG. 1.
FIG. 19 is a block diagram showing the storage system of FIG. 1 in more detail.
FIG. 20 is a flowchart showing an example of the operation of the HMB controller of FIG. 19.
FIG. 21A is a flowchart showing step S630 of FIG. 20 in more detail.
Step S650 of FIG. 21B may include steps S651 to S658.
FIG. 21C is a flowchart showing step S670 of FIG. 20 in more detail.
FIG. 22 is a flowchart showing an example of an operation method of the HMB controller of FIG. 19.
FIG. 23 is a diagram showing an example of the operation of the storage device of FIG. 19.
FIG. 24 is a block diagram briefly showing an example of the first error correction engine of FIG. 19.
FIG. 25 is a flowchart showing an example of the operation of the HMB controller of FIG. 19.
Figure 26 is a block diagram showing an example of a data center to which a storage device according to an embodiment of the present disclosure is applied.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail so that a person skilled in the art can easily practice the present disclosure.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(1000)를 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(10)은 개인용 컴퓨터, 랩탑, 서버, 워크스테이션, 스마트폰, 태블릿 PC, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하고, 처리된 정보를 저장하도록 구성된 정보 처리 장치들 중 하나일 수 있다.1 is a block diagram illustrating a storage system according to an embodiment of the present disclosure. Referring to FIG. 1 , the
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)에 데이터(DATA)를 저장하거나 또는 스토리지 장치(1000)에 저장된 데이터(DATA)를 읽기 위한, 요청(RQ; request)을 스토리지 장치(1000)로 전송할 수 있다. 일 실시 예에서, 호스트(11)는 스토리지 시스템(10)을 제어하도록 구성된 중앙 처리 유닛(CPU; central processing unit), 애플리케이션 프로세서(AP; application processor)와 같은 프로세서 코어이거나 또는 네트워크를 통해 연결된 컴퓨팅 노드일 수 있다. The
일 실시 예에서, 호스트(11)는 호스트 컨트롤러(12) 및 호스트 메모리(13)를 포함할 수 있다. 호스트 컨트롤러(12)는 호스트(11)의 제반 동작을 제어하거나 또는 호스트(11) 측에서, 스토리지 장치(1000)를 제어하도록 구성된 장치일 수 있다. 호스트 메모리(13)는 호스트(11)에서 사용되는 버퍼 메모리, 캐시 메모리 또는 동작 메모리일 수 있다. 호스트 메모리(13)는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 호스트 메모리(13)는 호스트(11)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다. In one embodiment, the
일 실시 예에서, 호스트(11)는 호스트 메모리(13)의 일부 영역을 스토리지 장치(1000)의 버퍼로 할당할 수 있다. 이하에서, 스토리지 장치(1000)의 버퍼로 할당된 호스트 메모리(13)의 일부 영역을 호스트 메모리 버퍼(HMB; Host memory buffer)(14)로 칭하기로 한다. In one embodiment, the
일 실시 예에서, 호스트 메모리 버퍼(14)는 스토리지 장치(1000)가 호스트 메모리(13)를 버퍼로 이용하기 위해 할당될 수 있다. 호스트 메모리 버퍼(14)는 스토리지 장치(1000)에 의해 관리될 수 있다. 호스트 메모리 버퍼(14)는 스토리지 장치(1000)의 데이터가 저장될 수 있다. 예를 들어, 스토리지 장치(1000)의 메타 데이터 또는 맵핑 테이블 등은 호스트 메모리 버퍼(14)에 저장될 수 있다. 맵핑 테이블은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 맵핑 정보를 포함할 수 있다. In one embodiment, the
스토리지 장치(1000)는 호스트(11)의 제어에 따라 동작할 수 있다. 스토리지 장치(1000)는 스토리지 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다. 스토리지 컨트롤러(1100)는 호스트(11)의 제어에 따라 불휘발성 메모리 장치(1200)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다. 일 실시 예에서, 스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다.The
스토리지 컨트롤러(1100)는 중앙 처리 유닛(CPU; central processing unit)(1110), 플래시 변환 계층(FTL; flash translation layer)(1120), 오류 정정 코드(ECC; error correction code) 엔진(1130), AES(advanced encryption standard) 엔진(1140), 버퍼 메모리(1150), 호스트 인터페이스 회로(1160), 메모리 인터페이스 회로(1170), 및 HMB 컨트롤러(1180)를 포함할 수 있다.The
CPU(1110)는 스토리지 컨트롤러(1100)의 제반 동작을 제어할 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 동작을 수행할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)의 저장 공간을 논리 어드레스로서 관리할 수 있다. FTL(1120)은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 어드레스 맵핑을 관리하도록 구성될 수 있다. FTL(1120)은 웨어 레벨링 동작을 수행하여, 불휘발성 메모리 장치(1200)의 메모리 블록들 중 특정 메모리 블록에 대한 과도한 열화를 방지할 수 있다. FTL(1120)의 웨어 레벨링 동작에 의해 불휘발성 메모리 장치(1200)의 수명이 향상될 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)에 대한 가비지 컬렉션을 수행하여, 자유 메모리 블록을 확보할 수 있다.The
일 실시 예에서, FTL(1120)은 소프트웨어 또는 하드웨어 형태로 구현될 수 있다. FTL(1120)이 소프트웨어 형태로 구현되는 경우, FTL(1120)과 관련된 프로그램 코드 또는 정보는 버퍼 메모리(1150)에 저장될 수 있고, CPU(1110)에 의해 실행될 수 있다. FTL(1120)이 하드웨어 형태로 구현되는 경우, FTL(1120)의 동작을 수행하도록 구성된 하드웨어 가속기가 CPU(1110)와 별도로 구비될 수 있다.In one embodiment,
ECC 엔진(1130)은 불휘발성 메모리 장치(1200)로부터 읽은 데이터에 대한 오류 검출 및 오류 정정을 수행할 수 있다. 예를 들어, ECC 엔진(1130)은 불휘발성 메모리 장치(1200)에 기입될 데이터에 대한 오류 정정 코드(또는 패리티 비트)를 생성할 수 있다. 생성된 오류 정정 코드(또는 패리티 비트)는 기입될 데이터와 함께 불휘발성 메모리 장치(1200)에 저장될 수 있다. 이후에, 불휘발성 메모리 장치(1200)로부터 기입된 데이터가 독출될 경우, ECC 엔진(1130)은 독출된 데이터 및 대응하는 오류 정정 코드(또는 대응하는 패리티 비트)를 기반으로 독출된 데이터의 오류를 검출하고 정정할 수 있다. The
AES 엔진(1140)은 호스트(11) 또는 불휘발성 메모리 장치(1200)로부터 수신된 데이터에 대한 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작을 수행할 수 있다. 일 실시 예에서, 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작은 대칭 키 알고리즘(symmetric-key algorithm)을 기반으로 수행될 수 있다. The
버퍼 메모리(1150)는 스토리지 컨트롤러(1100)로 입력된 데이터를 임시 저장하도록 구성된 쓰기 버퍼 또는 읽기 버퍼일 수 있다. 또는 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 예를 들어, 버퍼 메모리(1150)는 FTL(1120)에 의해 관리되는 매핑 테이블을 저장할 수 있다. 또는 버퍼 메모리(1150)는 FTL(1120)과 관련된 소프트웨어, 펌웨어, 또는 정보를 저장할 수 있다. 좀 더 구체적으로, 버퍼 메모리(1150)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT), 프로세싱 메타 테이블(PMT)을 저장할 수 있다. 버퍼 메모리(1150)는 메모리 블록들에 대한 메타 데이터를 저장할 수 있다. The
일 실시 예에서, 버퍼 메모리(1150)는 SRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 버퍼 메모리(1150)는 DRAM, MRAM, PRAM 등과 같은 다양한 종류의 메모리 장치로 구현될 수 있다. 도면의 간결성 및 설명의 편의를 위해, 버퍼 메모리(1150)가 스토리지 컨트롤러(1100)에 포함되는 것으로 도 1에 도시되어 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)의 외부에 위치할 수 있고, 스토리지 컨트롤러(1100)는 별도의 통신 채널 또는 인터페이스를 통해 버퍼 메모리와 통신할 수 있다. In one embodiment, the
호스트 인터페이스 회로(1160)는 미리 정해진 인터페이스 규약에 따라, 호스트(11)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial ATA) 인터페이스, e-SATA(external SATA) 인터페이스, SCSI(Small Computer Small Interface) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, PCI(Peripheral Component Interconnection) 인터페이스, PCIe(PCI express) 인터페이스, NVMe(NVM express) 인터페이스, IEEE 1394, USB(universal serial bus) 인터페이스, SD(secure digital) 카드, MMC(multi-media card) 인터페이스, eMMC(embedded multi-media card) 인터페이스, UFS(Universal Flash Storage) 인터페이스, eUFS(embedded Universal Flash Storage) 인터페이스, CF(compact flash) 카드 인터페이스, 또는 네트워크 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 호스트 인터페이스 회로(1160)는 미리 정해진 인터페이스 규약에 기반된 신호를 호스트(11)로부터 수신하고, 수신된 신호를 기반으로 동작할 수 있다. 또는 호스트 인터페이스 회로(1160)는 미리 정해진 인터페이스 규약에 기반된 신호를 호스트(11)로 전송할 수 있다.The
메모리 인터페이스 회로(1170)는 미리 정해진 인터페이스 규약에 따라 불휘발성 메모리 장치(1200)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 토글 인터페이스, 온파이(ONFI) 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, 메모리 인터페이스 회로(1170)는 토글 인터페이스를 기반으로 불휘발성 메모리 장치(1200)와 통신할 수 있다. 이 경우, 메모리 인터페이스 회로(1170)는 복수의 채널들(CHs)을 통해 불휘발성 메모리 장치(1200)와 통신할 수 있다. 일 실시 예에서, 복수의 채널들(CHs) 각각은 다양한 제어 신호들(예를 들어, /CE, CLE, ALE, /WE, /RE, R/B 등), 데이터 신호들(DQ), 및 데이터 스트로브 신호(DQS)를 전송하도록 구성된 복수의 신호 라인들을 포함할 수 있다.The
HMB 컨트롤러(1180)는 HMB(14)를 관리할 수 있다. HMB 컨트롤러(1180)는 HMB(14)를 버퍼로써 이용하여 다양한 데이터를 저장하고 관리할 수 있다. HMB 컨트롤러(1180)는 데이터의 신뢰성 또는 보안을 위하여, 인코딩된 데이터를 저장할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 데이터 프로세싱 정책(또는 알고리즘)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. HMB 컨트롤러(1180)는 인코딩된 데이터를 HMB(14)에 저장할 수 있다. HMB 컨트롤러(1180)는 HMB(14)로부터 읽기 데이터를 읽을 수 있다. 즉, HMB 컨트롤러(1180)는 HMB(14)로부터 읽기 데이터를 수신할 수 있다. HMB 컨트롤러(1180)는 읽기 데이터가 인코딩된 경우, 읽기 데이터에 대해 디코딩 동작을 수행할 수 있다. The
일 실시 예에서, HMB 컨트롤러(1180)는 호스트(11)로부터 제공된 HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할하여 관리할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각에 데이터 프로세싱 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 복수의 영역들 각각에 대하여 동일한 또는 상이한 데이터 프로세싱 정책들을 설정할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각의 특성, 다양한 정보들을 기반으로, 복수의 영역들 각각에 대한 데이터 프로세싱 정책들을 선택할 수 있다 In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 HMB(14)의 영역별 신뢰성 수준 및 보안 수준을 기반으로 HMB(14)의 영역별 데이터 프로세싱 정책을 설정할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 저장될 데이터의 유형을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 요구되는 데이터의 신뢰성 또는 보안을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. In one embodiment, the
예를 들어, 데이터 프로세싱 정책은 오류 검출 정책, 오류 정정 정책, 암호화 정책을 포함할 수 있다. 예를 들어, 오류 검출 정책은 데이터가 오류 없이 전송되었는지 확인하기 위한 기술일 수 있다. 오류 정정 정책은 데이터의 오류가 발생한 경우, 데이터의 오류를 정정하기 위한 기술일 수 있다. 암호화 정책은 사용자에 대한 정보 보호 또는 보안성을 제공하기 위하여 데이터를 암호화하기 위한 기술일 수 있다. For example, the data processing policy may include an error detection policy, an error correction policy, and an encryption policy. For example, an error detection policy may be a technique to ensure that data is transmitted without errors. An error correction policy may be a technology for correcting data errors when a data error occurs. An encryption policy may be a technology for encrypting data to provide information protection or security for users.
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 영역들 각각에 대한 변경 조건이 충족된 경우, 대응하는 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 동작 중(예를 들어, 런타임 동안)에 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있습니다. HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성이 변화하거나, 특정 영역에 저장될 데이터의 유형이 변화하거나, 특정 영역에 대한 신뢰성 요구 수준이 변화하거나, 특정 영역에 대한 보안 요구 수준이 변화한 경우 데이터 프로세싱 정책의 변경 조건이 충족되었다고 판단할 수 있다. In one embodiment, the
일반 스토리지 장치는 HMB(14) 전체에 대하여 동일한 데이터 프로세싱 정책을 설정할 수 있다. 즉, 본 개시의 실시 예에 따른 스토리지 장치(1000)와 달리, 일반 스토리지 장치는 HMB(14)의 영역별로 적합한 데이터 프로세싱 정책을 선택할 수 없고, 동일한 데이터 프로세싱 정책을 사용할 수 밖에 없다. 이에 따라, 스토리지 장치(1000)는 HMB(14)에 저장될 데이터 중 일부에 대해서만 오류 정정 능력이 높은 데이터 프로세싱 정책이 필요한 경우에도, HMB(14)에 저장될 모든 데이터에 대해 오류 정정 능력이 높은 데이터 프로세싱 정책을 사용해야 한다. 오류 정정 능력이 높은 데이터 프로세싱 정책을 사용함으로써, 패리티 데이터로 인하여 HMB(14)의 실제 사용 공간이 감소될 수 있다. 또한, 오류 정정 능력이 높은 데이터 프로세싱 정책의 경우 복잡한 연산을 수행함으로써 레이턴시가 증가할 수 있다.A general storage device can set the same data processing policy for the
그러나, 본 개시의 실시 예에 따른 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 데이터 프로세싱 정책을 선택할 수 있다. 예를 들어, 스토리지 장치(1000)는 데이터 신뢰성 요구도가 높은 영역에 대해 오류 정정 능력이 높은 데이터 프로세싱 정책을 설정하고, 데이터 신뢰성 요구도가 낮은 영역에 대해 오류 정정 능력이 낮은 데이터 프로세싱 정책을 설정할 수 있다. 이에 따라, HMB(14)에 저장될 패리티 데이터가 감소하므로, HMB(14)의 실제 사용 공간이 증가할 수 있다. 또한, 일부 데이터에 대해서만 오류 정정 능력이 높은 데이터 프로세싱 정책을 사용하고, 나머지 데이터에 대해서는 오류 정정 능력이 낮은 데이터 프로세싱 정책을 사용하므로, 스토리지 장치(1000)의 성능이 향상될 수 있다. However, the
상술된 바와 같이, 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 데이터 프로세싱 정책을 선택하고, 변경 조건이 충족된 경우 HMB(14)의 영역에 대응하는 데이터 프로세싱 정책을 변경할 수 있다. 이에 따라, 스토리지 장치(1000)는 HMB(14)의 공간을 효율적으로 사용할 수 있으며, 데이터 프로세싱 동작으로 인한 지연을 방지할 수 있다. 즉, 향상된 성능 및 향상된 신뢰성을 갖는 스토리지 장치(1000)가 제공된다. 본 개시의 실시 예에 따른 호스트(11) 및 스토리지 장치(1000)의 동작 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.As described above, the
도 2는 도 1의 HMB 컨트롤러를 좀 더 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 장치(1000)는 호스트(11)의 자원을 이용할 수 있다. 예를 들어, 스토리지 장치(1000)는 HMB(14)를 버퍼로써 이용하여 다양한 데이터를 관리할 수 있다. 이에 따라, 충분한 자원들이 스토리지 장치(1000)를 위해 제공될 수 있다. FIG. 2 is a block diagram showing the HMB controller of FIG. 1 in more detail. Referring to FIGS. 1 and 2 , the
HMB 컨트롤러(1180)는 HMB 관리자(1181), HMB 프로세싱 엔진(1182), 및 상태 관리자(1183)를 포함할 수 있다. HMB 관리자(1181)는 HMB 컨트롤러(1180)의 제반 동작을 제어할 수 있다. 예를 들어, HMB 관리자(1181)는 호스트(11)로부터 HMB 할당 정보를 수신하고, HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할할 수 있다. HMB 관리자(1181)는 복수의 영역들 각각에 데이터 프로세싱 정책을 설정할 수 있다. HMB 관리자(1181)는 변경 조건이 충족된 경우, 특정 영역의 데이터 프로세싱 정책을 변경할 수 있다. The
HMB 관리자(1181)는 HMB와 관련된 정보를 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 맵핑 테이블(HMBMT), HMB 상태 테이블(HMBST)을 생성하고 관리할 수 있다. The
HMB 프로세싱 엔진(1182)은 프로세싱 풀, 인코더, 및 디코더를 포함할 수 있다. 프로세싱 풀은 복수의 데이터 프로세싱 엔진들(DPE1~DPEn)을 포함할 수 있다. 복수의 데이터 프로세싱 엔진들(DPE1~DPEn)은 서로 다른 데이터 프로세싱 정책을 수행할 수 있다. 예를 들어, 제1 데이터 프로세싱 엔진(DPE1)은 제1 데이터 프로세싱 정책과 관련되고, 제2 데이터 프로세싱 엔진(DPE2)은 제2 데이터 프로세싱 정책과 관련되고, 제3 데이터 프로세싱 엔진(DPE3)은 제3 데이터 프로세싱 정책과 관련될 수 있다.
데이터 프로세싱 정책은 CRC(cyclic redundancy check)(예를 들어, CRC-16, CRC-32, CRC-64, CRC-128, CRC-256 등), 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), BCH 코드(Bose-Chaudhuri-Hocquenghem Code), RS 코드(Reed-Solomon Code), Viterbi 코드, Turbo 코드, AES(Advanced Encryption Standard)(예를 들어, AES-128, AES-192, AES-256), SHA(Secure Hash Algorithm), RSA(Rivest Shamir Adleman), PCIe IDE(Peripheral Component Interconnect Express Integrity and Data Encryption), 또는 PCIe DOE(Data Object Exchange) 중 적어도 하나일 수 있다. Data processing policies include cyclic redundancy check (CRC) (e.g., CRC-16, CRC-32, CRC-64, CRC-128, CRC-256, etc.), Hamming Code, and Low Density Parity Check (LDPC). ), BCH code (Bose-Chaudhuri-Hocquenghem Code), RS code (Reed-Solomon Code), Viterbi code, Turbo code, AES (Advanced Encryption Standard) (e.g., AES-128, AES-192, AES-256 ), SHA (Secure Hash Algorithm), RSA (Rivest Shamir Adleman), PCIe IDE (Peripheral Component Interconnect Express Integrity and Data Encryption), or PCIe DOE (Data Object Exchange).
인코더는 데이터에 대한 인코딩 동작을 수행하고, 인코딩된 데이터를 생성할 수 있다. 인코더는 HMB 관리자(1181)에 의해 선택된 복수의 데이터 프로세싱 엔진 중 하나를 사용하여 데이터에 대한 인코딩 동작을 수행할 수 있다. 인코더에 의해 인코딩된 데이터는 HMB(14)로 전송될 수 있다. 예를 들어, 제1 데이터 프로세싱 엔진(DEP1)이 오류 정정 정책 중 하나인 경우, 인코더는 제1 데이터 프로세싱 엔진(DEP1)을 통해 오류 정정 인코딩을 수행함으로써, 원본 데이터에 패리티를 추가할 수 있다. 패리티는 하나 또는 그보다 많은 비트들을 포함하며, 오류 정정 기능을 제공할 수 있다. 예를 들어, 제2 데이터 프로세싱 엔진(DEP1)이 암호화 정책 중 하나인 경우, 인코더는 제2 데이터 프로세싱 엔진(DEP2)을 통해 암호화 인코딩을 수행함으로써, 수신된 데이터에 대해 암호화를 수행할 수 있다. The encoder can perform an encoding operation on data and generate encoded data. The encoder may perform an encoding operation on data using one of a plurality of data processing engines selected by the
디코더는 데이터에 대한 디코딩 동작을 수행하고, 디코딩된 데이터를 생성할 수 있다. 디코더는 HMB 관리자(1181)에 의해 선택된 복수의 데이터 프로세싱 엔진 중 하나를 사용하여 데이터에 대한 디코딩 동작을 수행할 수 있다. 예를 들어, 제1 데이터 프로세싱 엔진(DEP1)이 오류 정정 정책 중 하나인 경우, 디코더는 제1 데이터 프로세싱 엔진(DEP1)을 통해 패리티를 이용하여 오류 정정 디코딩을 수행함으로써, 데이터로부터 오류를 정정하고, 그리고 패리티를 제거하여 원본 데이터를 복원할 수 있다. 예를 들어, 제2 데이터 프로세싱 엔진(DEP1)이 암호화 정책 중 하나인 경우, 디코더는 제2 데이터 프로세싱 엔진(DEP2)을 통해 암호화 디코딩을 수행함으로써, 수신된 데이터에 대해 복호화를 수행할 수 있다.The decoder may perform a decoding operation on data and generate decoded data. The decoder may perform a decoding operation on data using one of a plurality of data processing engines selected by the
상태 관리자(1183)는 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링 할 수 있다. 상태 관리자(1181)는 데이터 프로세싱 정책의 변경 조건이 충족된 경우, HMB 관리자(1181)에게 변경 조건이 충족되었음을 가리키는 변경 신호를 출력할 수 있다. The
상태 관리자(1183)는 타이머(1184) 및 모니터링 유닛(1185)을 포함할 수 있다. 타이머(1184)는 미리 정해진 시간을 카운팅 하도록 구성될 수 있다. 예를 들어 타이머(1184)는 시스템 클럭 또는 동작 클럭을 카운팅하여, 특정 시점으로부터 경과된 시간 또는 미리 정해진 시간을 구간을 카운팅하도록 구성될 수 있다.
일 실시 예에서, 타이머(1184)는 복수의 영역들(R1~R4)에 대한 경과 시간(예를 들어, HMT 상태 테이블(HMBST)에 포함된 경과 시간 정보)을 카운팅 하도록 구성될 수 있다. 특정 영역(예를 들어, 제1 영역(R1))에 대한 타이머가 만료된 경우(다시 말해서, 특정 시점으로부터(예를 들어, 제1 영역(R1)에 데이터가 처음 기입된 시점으로부터) 임계 시간이 경과된 경우), 상태 관리자(1183)는 특정 영역에 대한 데이터 프로세싱 정책 변경 조건이 충족되었음을 판단할 수 있다. In one embodiment, the
모니터링 유닛(1185)은 HMB(14)의 복수의 영역들과 관련되는 다양한 상태의 정보를 수집하고 관리할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB(14)의 환경 정보 또는 속성 정보를 수집하고 관리할 수 있다. 구체적으로 모니터링 유닛(1185)은 오류율, 경과 시간, 메모리 장치의 상태, 메모리 장치의 유형, 신뢰성 보호 수준, 무효인 메모리의 영역들의 비율 등을 관리할 수 있다.
일 실시 예에서, 모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 참조하여, 모니터링되는 상태들이 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, 변경 조건이 충족될 수 있다. 기준 값은 변경 조건 동작이 요구되는 상태의 수준을 고려하여 선택될 수 있다. In one embodiment, the
도 3은 HMB의 복수의 영역들 및 HMB 관리자가 관리하는 테이블의 예를 보여주는 도면이다. 도 1 및 도 3을 참조하면, HMB 관리자(1181)는 호스트(11)로부터 제공된 HMB 할당 정보를 기반으로 HMB(14)는 복수의 영역들(R1~R4)로 분할하여 관리할 수 있다. HMB(14)는 제1 내지 제4 영역들(R1~R4)을 포함하는 것으로 가정한다. 단, 본 개시의 범위가 이에 한정되지 아니하며, HMB(14)에 포함된 영역들의 개수는 구현에 따라 증가 또는 감소될 수 있다.Figure 3 is a diagram showing an example of a plurality of areas of the HMB and a table managed by the HMB manager. Referring to FIGS. 1 and 3 , the
HMB 관리자(1181)는 HMB와 관련된 정보들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)을 관리할 수 있다. HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)은 버퍼 메모리(1150) 또는 불휘발성 메모리 장치(1200)에 저장될 수 있다. The
일 실시 예에서, HMB 관리자(1181)는 HMB 할당 정보를 기반으로 HMB 할당 테이블(HMBAT)을 생성하여, 버퍼 메모리(1150)에 저장할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각에 대한 할당 정보를 HMB 할당 테이블(HMBAT)에 저장하고 갱신할 수 있다. HMB(14)의 영역별 할당 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 할당 정보는 각 영역의 식별자, 각 영역에 저장 또는 버퍼링되는 데이터의 유형(또는 종류), 각 영역에 대한 해제 우선순위, 각 영역의 상태, 각 영역의 크기, 각 영역의 호스트 메모리 어드레스 범위, 각 영역의 신뢰성 요구 수준, 각 영역의 보안 요구 수준 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 할당 테이블(HMBAT)에 저장되는 할당 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다. In one embodiment, the
예를 들어, 식별자는 HMB(14)의 복수의 영역들(R1~R4) 각각을 고유하게 식별하기 위해 참조되는 속성일 수 있다. 그러나, 복수의 영역들(R1~R4)을 고유하게 식별하기 위해 다른 기준이 이용될 수 있는 경우, HMB 할당 테이블(HMBAT)은 식별자를 포함하지 않을 수 있다. For example, the identifier may be an attribute referenced to uniquely identify each of the plurality of regions (R1 to R4) of the
일 실시 예에서, 복수의 영역들(R1~R4) 각각은 하나의 유형의 데이터를 저장하도록 구성될 수 있다. 예를 들어, 데이터의 유형은 맵핑 데이터, 사용자 데이터, 메타 데이터(예를 들어, ECC 데이터, 상태 데이터 등), 파워게이팅 데이터(예를 들어, 전력 중단 시 보존을 필요로 하는 데이터) 등을 포함할 수 있다. 복수의 영역들은 상이한 유형의 데이터를 저장할 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니하며, 데이터의 유형은 스토리지 장치에서 사용되는 다른 종류의 데이터가 포함될 수 있으며, 하나의 영역은 둘 이상의 유형의 데이터를 저장하거나, 둘 이상의 영역은 하나의 유형의 데이터를 저장할 수 있고, 또는 영역은 데이터의 유형과 무관하게 구성될 수 있다. In one embodiment, each of the plurality of areas R1 to R4 may be configured to store one type of data. For example, types of data include mapping data, user data, metadata (e.g., ECC data, state data, etc.), power gating data (e.g., data that needs to be preserved in the event of a power outage), etc. can do. Multiple areas can store different types of data. However, the scope of the present disclosure is not limited thereto, and the types of data may include different types of data used in storage devices, and one area may store two or more types of data, or two or more areas may store one type of data. Data can be stored, or the area can be configured regardless of the type of data.
HMB 관리자(1181)는 HMB 상태 테이블(HMBST)을 생성하고, HMB 상태 테이블(HMBST)을 버퍼 메모리(1150)에 저장하고 관리할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각에 대한 열화 정보 또는 오류 정보(즉, 상태 정보)를 HMB 상태 테이블(HMBST)에 저장하고 갱신할 수 있다. The
HMB(14)의 영역별 상태 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 영역별 상태 정보는 해당 영역의 쓰기 회수, 읽기 회수, 그리고 해당 영역에 저장된 데이터로부터 검출된 오류율(예를 들어, 오류 비트의 수 및 읽기 데이터의 총 비트 수의 비율), 경과 시간, 오류 발생 비율(예를 들어, 오류 검출 회수 및 총 HMB 읽기 요청 회수의 비율), 읽기 재시도 회수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 상태 테이블(HMBST)에 저장되는 상태 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다. Status information for each area of the
HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)을 생성하고, HMB 맵핑 테이블(HMBMT)을 버퍼 메모리(1150)에 저장하고 관리할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각 및 대응하는 데이터 프로세싱 정책에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)에 저장하고 갱신할 수 있다. The
HMB 관리자(1181)는 복수의 영역들(R1~R4)각각에 대하여 데이터 프로세싱 정책을 선택하고, 이에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)로 관리할 수 있다. 예를 들어, 제1 영역(R1)은 제1 데이터 프로세싱 정책(DPP1)과 대응하고, 제2 영역(R2)은 제2 데이터 프로세싱 정책(DPP2)과 대응하고, 제3 영역(R3)은 제3 데이터 프로세싱 정책(DPP3)과 대응할 수 있다. HMB 관리자(1181)는 제4 영역(R4)에 대하여 어떤 데이터 프로세싱 정책도 설정하지 않을 수 있다. 이 경우, HMB 맵핑 테이블(HMBMT)에서 제4 영역(R4)과 관련하여 초기값이 저장될 수 있다. 도 3에 도시된 HMB 맵핑 테이블(HMBMT)을 예시적인 것이며, 본 개시의 범위가 이에 한정되지 아니한다. The
도 4는 스토리지 장치의 동작의 예를 보여주는 순서도이다. 도 1, 도 3, 및 도 4를 참조하면, S110 단계에서, 스토리지 장치(1000)는 호스트(11)로부터 HMB 할당 정보를 수신할 수 있다. 예를 들어, 스토리지 장치(1000)는 셋-피쳐(Set Feature) 커맨드를 통해 HMB 할당 정보를 수신할 수 있다. HMB 할당 정보는 HMB의 크기 정보, HMB 활성화 정보, 또는 HMB 디스크립터(Descriptor) 리스트 등을 포함할 수 있다. HMB 디스크립터 리스트는 복수의 HMB 디스크립터 엔트리(entry)들을 포함할 수 있다. HMB 디스크립터 엔트리는 HMB로 할당된 메모리 어드레스 공간을 가리킬 수 있다. HMB 디스크립터 엔트리는 버퍼 어드레스 정보 및 버퍼 크기 정보를 포함할 수 있다. 버퍼 어드레스는 HMB 디스크립터 엔트리가 가리키는 호스트 메모리 버퍼의 어드레스 정보를 가리킬 수 있다. 버퍼 크기 정보는 HMB 디스크립터 엔트리가 가리키는 메모리 공간 내의 연속된 메모리 페이지의 개수를 가리킬 수 있다. 4 is a flowchart showing an example of the operation of a storage device. Referring to FIGS. 1, 3, and 4, in step S110, the
일 실시 예에서, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로 HMB(14)를 인식할 수 있다. 스토리지 장치(1000)는 HMB(14)를 복수의 영역들로 분할할 수 있다. HMB(14)의 복수의 영역들은 스토리지 장치(1000)에 의해 관리될 수 있다. 도 3을 참조하면, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. In one embodiment, the
일 실시 예에서, 스토리지 장치에 의해 관리되는 복수의 영역들은 호스트에 의해 관리되는 HMB 디스크립터 엔트리가 가리키는 복수의 메모리 공간들과 상이할 수 있다. 스토리지 장치(1000)는 HMB 디스크립터 엔트리들이 가리키는 메모리 공간들을 HMB(14)로 인식할 수 있다. 스토리지 장치(1000)는 HMB(14)를 필요에 따라 복수의 영역들로 분류하여 사용할 수 있다. In one embodiment, the plurality of areas managed by the storage device may be different from the plurality of memory spaces indicated by the HMB descriptor entry managed by the host. The
S120 단계에서, 스토리지 장치(1000)는 HMB(14)의 각 영역에 대한 데이터 프로세싱 정책을 설정할 수 있다. 예를 들어, 스토리지 장치(1000)는 복수의 데이터 프로세싱 정책들 중 하나를 복수의 영역들(R1~R4)에 대하여 설정할 수 있다. 스토리지 장치(1000)는 제1 영역(R1)에 대해, 복수의 데이터 프로세싱 정책들 중 제1 데이터 프로세싱 정책(DPP1)을 선택할 수 있다. 스토리지 장치(1000)는 제2 영역(R2)에 대해 제2 데이터 프로세싱 정책(DPP2)을 선택하고, 제3 영역(R3)에 대해 제3 데이터 프로세싱 정책(DPP3)을 선택할 수 있다. 그러나, 스토리지 장치(1000)는 제4 영역(R4)에 대해 어떠한 데이터 프로세싱 정책도 선택하지 않을 수 있다. In step S120, the
S130 단계에서, 스토리지 장치(1000)는 데이터 프로세싱 정책에 관한 정보를 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 예를 들어, 도 3을 참조하면, 스토리지 장치(1000)는 제1 영역(R1)과 관련하여, 제1 데이터 프로세싱 정책(DDP1)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제2 영역(R2)과 관련하여, 제2 데이터 프로세싱 정책(DDP2)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제3 영역(R3)과 관련하여, 제3 데이터 프로세싱 정책(DDP3)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제4 영역(R4)과 관련하여, 초기값(default)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 즉, 스토리지 장치(1000)는 제4 영역(R4)에 대하여 어떠한 데이터 프로세싱 정책도 적용하지 않도록 설정할 수 있다. 다시 말해서, 스토리지 장치(1000)는 제4 영역(R4)에 대응하는 데이터에 대하여 인코딩 또는 디코딩 동작을 수행하지 않을 수 있다. In step S130, the
도 5는 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 5를 참조하면, S210 단계에서, HMB 컨트롤러(1180)는 HMB 쓰기 요청 및 데이터를 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 CPU(1110) 또는 FTL(1120)로부터 제공되는 HMB(14)로의 HMB 쓰기 요청을 검출 또는 수신할 수 있다. FIG. 5 is a flowchart showing an example of the operation of the HMB controller of FIG. 1. Referring to FIGS. 1 and 5 , in step S210, the
S220 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 데이터 프로세싱 정책을 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 쓰기 요청을 기반으로, 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 HMB(14)의 어드레스를 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 데이터의 종류(또는 유형)을 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다. HMB 컨트롤러(1180)는 데이터가 저장될 HMB(14)의 영역을 기반으로, HMB 맵핑 테이블(HMBMT)로부터 HMB(14)의 영역에 대응하는 데이터 프로세싱 정책을 확인할 수 있다. In step S220, the
예를 들어, HMB 쓰기 요청에 포함된 어드레스가 HMB(14)의 제1 영역(R1)을 가리킨다고 가정한다. HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 어드레스를 기반으로, 데이터가 저장될 영역이 제1 영역(R1)임을 판별할 수 있다. HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대응하는 데이터 프로세싱 정책이 제1 데이터 프로세싱 정책(DDP1)임을 판별할 수 있다. For example, assume that the address included in the HMB write request points to the first area (R1) of the HMB (14). The
S230 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. In step S230, the
S240 단계에서, HMB 컨트롤러(1180)는 인코딩된 데이터를 HMB(14)에 기입할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 쓰기 커맨드 및 인코딩된 데이터를 HMB(14)로 전송할 수 있다. In step S240, the
그러나, HMB 쓰기 요청에 대응하는 HMB(14)의 영역이 제4 영역(R4)인 경우(즉, 판별된 데이터 프로세싱 정책이 초기값(default)을 가리키는 경우), HMB 컨트롤러(1180)는 HMB 쓰기 요청에 대응하는 데이터에 대한 인코딩 동작을 수행하지 않을 수 있다. 이에 따라, HMB 컨트롤러(1180)는 인코딩 되지 않은 데이터를 HMB(14)에 기입할 수 있다. However, when the area of the
도 6은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 6을 참조하면, S310 단계에서, HMB 컨트롤러(1180)는 HMB 읽기 요청을 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 CPU(1110) 또는 FTL(1120)로부터 제공되는 HMB(14)로의 읽기 요청을 검출 또는 수신할 수 있다. FIG. 6 is a flowchart showing an example of the operation of the HMB controller of FIG. 1. Referring to FIGS. 1 and 6 , in step S310, the
S320 단계에서, HMB 컨트롤러(1180)는 HMB(14)로부터 데이터를 읽을 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청을 기반으로, HMB(14)로 읽기 커맨드를 전송할 수 있다. HMB 컨트롤러(1180)는 읽기 커맨드에 대응하는 데이터를 HMB(14)로부터 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 어드레스를 기반으로 읽기 커맨드를 생성할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 데이터의 종류(또는 유형)를 기반으로, 읽기 커맨드를 생성할 수 있다. In step S320, the
S330 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 데이터 프로세싱 정책을 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청을 기반으로, 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 어드레스를 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 데이터의 종류(또는 유형)을 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다 HMB 컨트롤러(1180)는 데이터가 저장된 HMB(14)의 영역을 기반으로, HMB 맵핑 테이블(HMBMT)로부터 HMB(14)의 영역에 대응하는 데이터 프로세싱 정책을 확인할 수 있다. In step S330, the
예를 들어, HMB 읽기 요청에 포함될 어드레스가 HMB(14)의 제1 영역(R1)을 가리킨다고 가정한다. HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 어드레스를 기반으로, 데이터가 저장된 영역이 제1 영역(R1)임을 판별할 수 있다. HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대응하는 데이터 프로세싱 정책이 제1 데이터 프로세싱 정책(DDP1)임을 판별할 수 있다. For example, assume that the address included in the HMB read request points to the first area (R1) of the HMB (14). The
S340 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 디코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 데이터에 대한 디코딩 동작을 수행할 수 있다. In step S340, the
S350 단계에서, HMB 컨트롤러(1180)는 디코딩된 데이터를 전송할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 디코딩된 데이터를 CPU(1110) 또는 FTL(1120)로 전송할 수 있다. In step S350, the
그러나, HMB 읽기 요청에 대응하는 영역이 제4 영역(R4)인 경우(즉, 판별된 데이터 프로세싱 정책이 초기값(default)을 가리키는 경우), HMB 컨트롤러(1180)는 HMB 읽기 요청에 대응하는 데이터에 대한 디코딩 동작을 수행하지 않을 수 있다. 이에 따라, HMB 컨트롤러(1180)는 디코딩 되지 않은 데이터를 CPU(1110) 또는 FTL(1120)에 전송할 수 있다. However, when the area corresponding to the HMB read request is the fourth area (R4) (i.e., when the determined data processing policy points to the default value), the
도 7은 도 6의 S340 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 1, 도 6 및 도 7을 참조하면, S341 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 데이터에 대한 디코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 수신된 데이터에 대한 디코딩 동작을 수행하여, 원본 데이터를 복원할 수 있다. Figure 7 is a flowchart showing step S340 of Figure 6 in more detail. Referring to FIGS. 1, 6, and 7, in step S341, the
S342 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책이 오류 정정/오류 검출에 관한 정책인지 여부를 검출할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)이 오류 정정/오류 검출에 관한 정책들 중 하나인지 여부를 판별할 수 있다. 판별된 데이터 프로세싱 정책이 오류 정정/오류 검출에 관한 정책인 경우 HMB 컨트롤러(1180)는 S343 단계를 진행하고, 판별된 데이터 프로세싱 정책이 오류 정정에 관한 정책이 아닌 경우 HMB 컨트롤러(1180)는 S350 단계를 진행한다. In step S342, the
S343 단계에서, HMB 컨트롤러(1180)는 HMB(14)로부터 읽기 데이터의 오류 또는 오류의 존재 여부를 검출할 수 있다. 읽기 데이터의 오류가 존재하지 않은 경우 HMB 컨트롤러(1180)는 S350 단계를 진행하고, 읽기 데이터의 오류가 존재하는 경우 HMB 컨트롤러(1180)는 S344 단계를 진행한다. In step S343, the
S344 단계에서, HMB 컨트롤러(1180)는 읽기 데이터의 오류율을 상태 관리자(1183)로 전송할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 상태 관리자(1183)가 읽기 데이터의 오류율을 모니터링하도록, 읽기 데이터의 오류율을 상태 관리자(1183)로 전송할 수 있다. In step S344, the
S345 단계에서, HMB 컨트롤러(1180)는 데이터의 오류가 정정이 가능한지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책이 오류 정정 정책인지 판별할 수 있다. HMB 컨트롤러(1180)는 데이터의 오류율이 오류율 임계치를 초과하는지 여부를 판별할 수 있다. 즉, 데이터의 오류율이 오류율 임계치를 초과한 경우, 오류 정정이 불가능하다고 판별할 수 있다. 데이터의 오류율이 오류율 임계치 이하인 경우, 오류 정정이 가능하다고 판별할 수 있다. 다시 말해서, HMB 컨트롤러(1180)는 검출된 오류들의 개수가 최대 오류, 즉, 판별된 데이터 프로세싱 정책을 이용하여 정정 가능한 오류들의 최대 개수인지 판단할 수 있다. 최대 오류인 경우, 오류 정정할 수 없다고 판단할 수 있다. 최대 오류가 아닌 경우, 오류 정정할 수 있다고 판단할 수 있다. 오류 정정이 가능하다고 판별된 경우 HMB 컨트롤러(1180)는 S346 단계를 진행하고, 오류 정정이 불가능하다고 판별된 경우 HMB 컨트롤러(1180)는 S347 단계를 진행한다.In step S345, the
S346 단계에서, HMB 컨트롤러(1180)는 오류 정정 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 오류를 정정하여, 정정된 데이터를 생성할 수 있다. 이후에, HMB 컨트롤러(1180)는 S350 단계를 진행한다.In step S346, the
S347 단계에서, HMB 컨트롤러(1180)는 읽기 실패를 통지할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 오류 정정이 불가하다고 판단하였으므로, CPU(1110) 또는 FTL(1120)에게 HMB 읽기 요청에 대한 실패 응답을 전송할 수 있다. HMB 컨트롤러(1180)는 데이터 손상(data corruption) 정보 또는 정정 불가능한 오류(Uncorrectable Error)를 포함하는 응답을 전송할 수 있다. 이후에, HMB 컨트롤러(1180)는 S350 단계를 진행하지 않을 수 있다. In step S347, the
도 8은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 8을 참조하면, S410 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책에 대한 변경 조건이 충족되었는지 여부를 판별할 수 있다. 변경 조건은 HMB(14)의 복수의 영역들(R1~R4)에 대한 데이터 프로세싱 정책에 대한 변경 동작이 요구되는 지와 관련될 수 있다. 변경 조건이 충족된 경우 HMB 컨트롤러(1180)는 S420 단계를 진행하고, 변경 조건이 충족되지 않은 경우 HMB 컨트롤러(1180)는 S410 단계를 다시 진행한다. 즉, 변경 조건이 충족되지 않은 경우, HMB 컨트롤러(1180)는 변경 조건이 충족되는지 모니터링할 수 있다. FIG. 8 is a flowchart showing an example of the operation of the HMB controller of FIG. 1. Referring to FIGS. 1 and 8 , in step S410, the
일 실시 예에서 HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 데이터 프로세싱 정책의 변경이 필요한지 여부를 검출할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)과 관련된 상태를 모니터링할 수 있다. HMB 컨트롤러(1180)는 모니터링되는 상태가 변경 조건을 충족하는지를 관리할 수 있다. 예를 들어, HMB 컨트롤러(1180)에 의해 모니터링되는 상태는 복수의 영역들(R1~R4) 각각의 수명, 복수의 영역들(R1~R4) 각각에 저장된 데이터의 신뢰성, 복수의 영역들(R1~R4)에 대응하는 메모리 장치의 상태 등과 같은 다양한 속성과 관련될 수 있다. In one embodiment, the
변경 조건이 충족된 경우, 이는 스토리지 장치(1000)에서 변경 조건이 충족된 영역에 대한 데이터 프로세싱 정책을 변경하여, 스토리지 장치(1000) 또는 HMB(14)의 동작 환경 및 특성을 개선하는 것이 요구됨을 가리킬 수 있다. 스토리지 장치(1000)는 스토리지 장치(1000) 또는 HMB(14)의 동작 환경 및 특성을 개선하기 위해 특정 영역에 대한 데이터 프로세싱 정책을 변경하고자 의도할 수 있다.When the change condition is met, this means that it is required to improve the operating environment and characteristics of the
일 실시 예에서, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, HMB 컨트롤러(1180)는 모니터링되는 상태가 변경 조건을 충족하는 것으로 판별할 수 있다. 예를 들어, 제1 조건을 살펴보면, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)에 각각에 데이터가 처음 기입된 시점부터 경과된 시간, 즉, 복수의 영역들(R1~R4) 각각의 경과 시간을 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각의 경과 시간이 임계 시간을 초과하였는지 여부를 판별할 수 있다. In one embodiment, when the value of the monitored state reaches the reference value, the
제2 조건을 살펴보면, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각의 오류율을 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 복수의 영역들 각각의 오류율을 모니터링 하고, 오류율이 기준 오류율을 초과하였는지 여부를 판별할 수 있다.Looking at the second condition, the
제3 조건을 살펴보면, HMB 컨트롤러(1180)는 호스트(11)에 의해 HMB(14)의 할당 정보를 관리할 수 있다. HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로, 복수의 영역들(R1~R4)에 대한 호스트 메모리(13)의 메모리 공간이 변경되었는지 여부를 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)에 대한 할당 정보가 변경되었는지 여부를 판별할 수 있다. Looking at the third condition, the
제4 조건을 살펴보면, HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치를 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 호스트(11)로부터 HMB(14)에 대응하는 메모리 장치에 대한 정보를 수신할 수 있다. HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치에 대한 정보 수신 여부를 판별할 수 있다. 상술된 제1 내지 제4 조건들은 변경 조건의 가능한 예들 중 일부일 뿐이며, 위 예들로 본 개시의 범위가 한정되지 아니하며, 구체적인 조건들은 다양하게 변경 또는 수정될 수 있다. Looking at the fourth condition, the
일 실시 예에서, 변경 조건은 제1 내지 제4 조건들을 모두 포함할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 대하여 제1 조건을 충족하는지 판별하고, 제2 조건을 충족하는지 판별하고, 제3 조건을 충족하는지 판별하고, 그리고 제4 조건을 충족하는지 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 제1 내지 제4 조건들을 동시에 모두 모니터링할 수 있다.In one embodiment, the change condition may include all of the first to fourth conditions. For example, the
일 실시 예에서, 변경 조건은 제1 내지 제4 조건들 중 적어도 하나를 포함할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 대하여 제1 조건을 충족하는지 판별하거나, 또는 제4 조건을 충족하는지 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 조건들 중 적어도 하나만 모니터링 할 수 있다.In one embodiment, the change condition may include at least one of the first to fourth conditions. For example, the
일 실시 예에서, HMB 컨트롤러(1180)는 제1 내지 제4 조건들 중 어느 하나라도 충족된 경우, 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, 제1 조건만 충족되고 제2 내지 제4 조건들을 충족되지 않은 경우라도, HMB 컨트롤러(1180)는 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 조건들 중 적어도 두개의 조건들이 충족된 경우, 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 조건만 충족되고 제2 내지 제4 조건들이 충족되지 않은 경우, 변경 조건이 충족되지 않은 것으로 판별할 수 있다. HMB 컨트롤러(1180)는 제1 및 제2 조건이 충족되고, 제3 및 제4 조건이 충족되지 않은 경우, 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. In one embodiment, the
상술된 바와 같이, 변경 조건은 제1 내지 제4 조건들을 모두 포함하거나, 제1 내지 제4 조건들의 임의의 조합일 수 있다. 단, 본 개시의 범위가 한정되지 아니하며 다양하게 변경 또는 수정될 수 있다.As described above, the change condition may include all of the first to fourth conditions, or may be any combination of the first to fourth conditions. However, the scope of the present disclosure is not limited and may be changed or modified in various ways.
S420 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책을 변경할 수 있다. 구체적으로, HMB 관리자(1181)는 복수의 영역들(R1~R4) 중 변경 조건이 충족된 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, 제1 영역(R1)의 변경 조건이 충족된 것으로 가정한다. HMB 관리자(1181)는 제1 영역(R1)의 데이터 프로세싱 정책을 제1 데이터 프로세싱 정책(DDP1)에서 제4 데이터 프로세싱 정책(DDP4)으로 변경할 수 있다. In step S420, the
S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. HMB 관리자(1181)는 새롭게 선택된 데이터 프로세싱 정책을 영역과 관련하여 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 예를 들어, 제1 영역(R1)의 데이터 프로세싱 정책이 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경되었으므로, HMB 컨트롤러(1180)는 제1 영역(R1)과 관련하여 제5 데이터 프로세싱 정책(DDP5)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. In step S430, the
HMB 컨트롤러(1180)는 모든 복수의 영역들(R1~R4)에 대하여, 이하에서 설명되는 변경 조건들의 충족여부를 판별할 수 있다. 그러나, 도면의 간결성 몇 설명의 편의를 위하여, 이하에서 특정 하나의 영역에 대하여 변경 조건이 충족하는지 여부를 설명한다. 특정 하나의 영역은 제1 영역(R1)으로 가정한다. 단, 본 개시의 범위가 이에 한정되는 것은 아니며, 나머지 영역들(R2~R3)에 대해서도 하기의 설명이 모두 적용될 수 있음이 잘 이해될 것이다. The
도 9는 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 10a 및 도10b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다. 도 1, 도 9, 도 10a, 및 도 10b를 참조하면, 도 8의 S410 단계는 도 9의 S411a 단계 내지 S413a 단계를 포함할 수 있다. S411a 단계에서, HMB 컨트롤러(1180)는 첫 번째 쓰기 커맨드 및 데이터를 HMB(14)의 특정 영역으로 전송할 수 있다. 예를 들어, CPU(1110)는 HMB 컨트롤러(1180)로 제1 영역(R1)에 대한 첫 번째 HMB 쓰기 요청을 전송할 수 있다(도 10a의 [1]). 예를 들어, CPU(1110)는 제1 영역(R1)으로 처음으로 데이터를 기입하기 위하여, HMB 쓰기 요청을 HMB 컨트롤러(1180)로 전송할 수 있다. Figure 9 is a flowchart showing step S410 of Figure 8 in more detail. FIGS. 10A and 10B are diagrams showing examples of operations of the storage device of FIG. 1. Referring to FIGS. 1, 9, 10a, and 10b, step S410 of FIG. 8 may include steps S411a to S413a of FIG. 9. In step S411a, the
HMB 컨트롤러(1180)는 제1 영역(R1)으로 첫 번째 쓰기 데이터를 전송할 수 있다(도 10a의 [2]). 예를 들어, HMB 프로세싱 엔진(1182)은, 제1 영역(R1)에 대응하는 제1 데이터 프로세싱 엔진(DPE1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 첫 번째 쓰기 커맨드 및 인코딩된 쓰기 데이터를 호스트(11)로 전송할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 어떤 데이터도 저장되지 않은 상태에서, 처음으로 쓰기 커맨드 및 데이터를 전송할 수 있다. 즉, HMB 컨트롤러(1180)는 처음으로 제1 영역(R1)에 데이터를 기입할 수 있다.The
S412a 단계에서, HMB 컨트롤러(1180)는 타이머(1184)를 개시할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 타이머의 카운팅 동작을 개시할 수 있다. 일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대응하는 타이머(1184)의 기준 시간을 설정할 수 있다(도 10a의 [3]). In step S412a, the
예를 들어, 기준 시간은 제1 영역(R1)에 저장될 데이터의 종류, 제1 영역(R1)에 대응하는 호스트 메모리 장치의 특성들을 기반으로 선택될 수 있다. 기준 시간은 제1 영역(R1)의 데이터 프로세싱 정책을 변경하기 위해 설정될 수 있다. 구체적으로, 기준 시간은 데이터가 손실되기 전에 데이터의 신뢰성을 보장하기 위한 데이터 프로세싱 정책 변경 동작을 수행하기 위해 설정될 수 있다. 기준 시간은 미리 결정된 값일 수 있다. 기준 시간은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다. 예를 들어, 기준 시간은 호스트 메모리 장치의 상태 또는 데이터의 종류에 의존하여 HMB 컨트롤러(1180)에 의해 조절 가능할 수 있다. For example, the reference time may be selected based on the type of data to be stored in the first area R1 and characteristics of the host memory device corresponding to the first area R1. The reference time may be set to change the data processing policy of the first region R1. Specifically, a reference time may be set to perform a data processing policy change operation to ensure data reliability before data is lost. The reference time may be a predetermined value. The reference time may be selected to be fixed or variable by the designer, manufacturer, and/or user. For example, the reference time may be adjustable by the
S413a 단계에서, HMB 컨트롤러(1180)는 HMB(14)의 영역에 대응하는 타이머가 만료되었는지 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대응하는 타이머가 만료되었는지 판단할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 데이터가 처음 기입된 시점으로부터 기준 시간이 경과하였는지 판별할 수 있다. 제1 영역(R1)에 대한 타이머가 만료된 경우, 제1 영역(R1)에 대한 변경 조건이 충족되었음을 판별할 수 있다. 타이머가 만료된 경우 HMB 컨트롤러(1180)는 S420 단계를 진행하고, 타이머가 만료되지 않은 경우 HMB 컨트롤러(1180)는 S413a의 판별 동작을 계속 할 수 있다. 타이머(1184)가 만료된 경우, 타이머(1184)는 HMB 관리자(1181)에게 기준 시간의 경과 또는 만료를 나태내는 신호를 출력할 수 있다(도 10b의 [4]). In step S413a, the
S420 단계에서, HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 타이머(1184)로부터 출력되는 신호에 기초하여(즉, 기준 시간의 경과 또는 만료에 기초하여) 제1 영역(R1)의 데이터 프로세싱 정책을 변경할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대하여 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. In step S420, the
S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 10b의 [5]).In step S430, the
도 11은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 12a 및 도 12b는 도 1의 스토리지 장치의 동작 방법의 예를 보여주는 도면들이다. 도 11, 도 12a, 및 도 12b를 참조하면, 도 8의 S410 단계는 S411b 단계 및 S412b 단계를 포함할 수 있다. FIG. 11 is a flowchart showing step S410 of FIG. 8 in more detail. FIGS. 12A and 12B are diagrams showing an example of a method of operating the storage device of FIG. 1. Referring to FIGS. 11, 12A, and 12B, step S410 of FIG. 8 may include steps S411b and S412b.
S411b 단계에서, HMB 컨트롤러(1180)는 오류율을 모니터링할 수 있다. 예를 들어, CPU(1110)는 HMB 컨트롤러(1180)로 제1 영역(R1)에 대한 HMB 읽기 요청을 전송할 수 있다(도 12a의 [1]). HMB 프로세싱 엔진(1182)은 제1 영역(R1)으로부터 읽기 데이터(RDATA)를 읽을 수 있다(도 12a의 [2]). HMB 프로세싱 엔진(1182)은 읽기 데이터의 오류 존재 여부를 판단할 수 있다. 오류가 존재하는 경우, HMB 프로세싱 엔진(1182)은 오류율을 검출할 수 있다. 또는 오류가 존재하는 경우, HMB 프로세싱 엔진(1182)은 오류율을 계산할 수 있다. HMB 프로세싱 엔진(1182)은 오류율을 모니터링 유닛(1185)으로 전송할 수 있다(도 12a의 [3]). 모니터링 유닛(1185)은 오류율을 모니터링할 수 있다. 모니터링 유닛(1185)은 오류율을 HMB 상태 테이블(HMBST)에 저장 또는 갱신할 수 있다((도 12a의 [4]). In step S411b, the
S412b 단계에서, HMB 컨트롤러(1180)는 오류율이 기준 오류율(Re)을 초과하는지 여부를 판별할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 참조하여, 제1 영역(R1)에 대응하는 오류율이 제1 영역(R1)에 대응하는 기준 오류율을 초과하는지 여부를 검출할 수 있다. 오류율이 기준 오류율을 초과하는 경우 모니터링 유닛(1185)은 S420 단계를 진행하고, 오류율이 기준 오류율을 초과하지 않는 경우 모니터링 유닛(1185)은 S412b 단계를 진행한다. 오류율이 기준 오류율을 초과하는 경우, 모니터링 유닛(1185)은 변경 조건이 충족되었음을 판별할 수 있다. 모니터링 유닛(1185)은 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다(도 12b의 [5]). In step S412b, the
S420 단계에서, HMB 컨트롤러(1180)는 모니터링 유닛(1185)으로부터 출력되는 신호에 응답하여(즉, 오류율이 기준 오류율을 초과한 것에 기초하여), 제1 영역(R1)의 데이터 프로세싱 정책을 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 12b의 [6]). In step S420, the
일 실시 예에서, 스토리지 장치(1000)는 오류율 이외에 데이터의 신뢰성 및 보안과 관련된 상태를 모니터링 할 수 있다. 예를 들어, 모니터링되는 상태는 HMB(14)의 영역들 각각의 경과 시간, 오류 발생 비율(즉, 오류 검출 회수 및 총 HMB 읽기 요청 회수의 비율), 쓰기 회수, 읽기 회수, 읽기 재시도 회수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있으나, 본 개시는 이에 한정되지 않는다. In one embodiment, the
일 실시 예에서, 상태 관리자(1183)는 모니터링되는 상태가 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, 변경 조건이 충족될 수 있다. 기준 값은 영역들 각각에 요구되는 신뢰성 및 보안 수준을 고려하여 선택될 수 있다. In one embodiment,
예를 들어, 상태 관리자(1183)는 타이머(1184)를 이용하는 대신에, 모니터링 유닛(1185)을 이용하여 경과 시간을 관리할 수 있다. 모니터링 유닛(1185)은 복수의 영역들(R1~R4) 각각의 다양한 시간들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 복수의 영역들(R1~R4)의 경과 시간 등을 관리할 수 있다. 경과 시간은 복수의 영역들 각각이 처음으로 데이터를 기입한 시점으로부터 현재까지의 경과 시간을 가리킨다. HMB 관리자(1181)는 영역에 처음으로 데이터를 기입한 시점, 즉 개시 시간을 타임 스탬프로 HMB 상태 테이블(HMBST)에 저장할 수 있다. For example, instead of using
모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 참조하여, HMB 상태 테이블(HMBST)에 저장된 개시 시간과 현재 시간의 차이를 경과 시간으로 계산할 수 있다. 모니터링 유닛(1185)은 계산된 경과 시간을 기준 시간과 비교하여, 경과 시간이 기준 시간을 초과하였는지 여부를 판별할 수 있다. 모니터링 유닛(1185)은 경과 시간이 기준 시간을 초과한 경우, 제1 영역(R1)의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다. The
예를 들어, 모니터링 유닛(1185)은 오류 발생 비율을 관리할 수 있다. 모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 기반으로, 오류 발생 비율(즉, 오류 발생 회수 및 HMB 읽기 회수의 비율)을 관리할 수 있다. 모니터링 유닛(1185)은 HMB 읽기 동작을 수행할 때마다, 오류 발생 비율을 계산할 수 있다. 모니터링 유닛(1185)은 오류 발생 비율을 HMB 상태 테이블(HMBST)에 저장하거나 갱신할 수 있다. 모니터링 유닛(1185)은 오류 발생 비율이 기준 값에 도달하는 경우(예를 들어, 기준 값보다 오류 발생 비율이 높아지는 경우), 모니터링 유닛(1185)은 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다. For example,
도 13은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 14a 및 도 14b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다. 도 13, 도 14a, 및 도 14b를 참조하면, 스토리지 장치(1000)는 호스트(11)의 HMB(14) 할당 영역 변경을 기반으로, 특정 영역의 데이터 프로세싱 정책을 변경할 수 있다. Figure 13 is a flowchart showing step S410 of Figure 8 in more detail. FIGS. 14A and 14B are diagrams showing examples of operations of the storage device of FIG. 1. Referring to FIGS. 13, 14A, and 14B, the
호스트(11)는 스토리지 장치(1000)의 사용을 위하여 이미 할당된 HMB(14)의 메모리 공간을 할당 해제(de-allocate) 할 수 있다. 또는 호스트(11)는 이미 할당된 HMB(14)의 메모리 공간에 대하여 리턴(return)을 요청할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드(예를 들어, 피쳐 식별자(FID; Feature Identifier)는 호스트 메모리 버퍼를 가리킴)에 포함된 메모리 리턴(MR; Memory Return) 필드를 '1'로 설정함으로써, 할당된 HMB(14)의 메모리 공간을 할당 해제할 수 있다. The
HMB 관리자(1181)는 할당 해제된 HMB(14)의 메모리 공간에 대응하는 영역을 다른 메모리 공간으로 할당할 수 있다. 예를 들어, 이미 할당된 HMB(14)의 메모리 공간 중 사용하지 않은 부분을 영역으로 할당할 수 있다. 또는 호스트(11)는 호스트 메모리(13)의 새로운 메모리 공간을 HMB(14)로 더 할당할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드를 통해 새로운 메모리 공간을 HMB(14)로 할당할 수 있다. HMB 관리자(1181)는 새로운 메모리 공간을 할당 해제된 메모리 공간의 영역으로 할당할 수 있다. The
일 실시 예에서, 도 8의 S410 단계는 S411c 단계 내지 S415c 단계를 포함할 수 있다. S411c 단계에서, 스토리지 장치(1000)는 호스트(11)로부터 HMB 할당 정보를 수신할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다(도 14a의 [1]). 셋-피쳐 커맨드는 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)을 포함할 수 있다. 예를 들어, 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)은 호스트 메모리(13)에서 HMB(14)에 대응하는 어드레스들의 범위를 가리킬 수 있다. In one embodiment, step S410 of FIG. 8 may include steps S411c to S415c. In step S411c, the
S412c 단계에서, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로 복수의 영역들(R1~R4)을 설정할 수 있다. 예를 들어, HMB 관리자(1181)는 호스트(11)의 HMB 할당 정보에 응답하여, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. HMB 관리자(1181)는 호스트 메모리(13)의 제1 메모리 어드레스 범위(MR1)에 제1 영역(R1)을 할당하고, 호스트 메모리(13)의 제2 메모리 어드레스 범위(MR2)에 제2 영역(R2)을 할당하고, 호스트 메모리(13)의 제3 메모리 어드레스 범위(MR3)에 제3 영역(R3)을 할당하고, 호스트 메모리(13)의 제4 메모리 어드레스 범위(MR4)에 제4 영역(R4)을 할당할 수 있다. HMB 관리자(1181)는 제5 메모리 어드레스 범위(MR5)를 어떠한 영역으로도 할당하지 않고, 여유 공간으로 남겨둘 수 있다.In step S412c, the
일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 제1 데이터 유형(DT1)을 저장하도록 결정하고, 제2 영역(R2)에 제2 데이터 유형(DT2)을 저장하도록 결정하고, 제3 영역(R3)에 제3 데이터 유형(DT3)을 저장하도록 결정하고, 제4 영역(R4)에 제4 데이터 유형(DT4)을 저장하도록 결정할 수 있다. In one embodiment, the
일 실시 예에서, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT)을 갱신할 수 있다(도 14a의 [2]). 예를 들어, HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)에 제1 영역(R1)과 관련하여 제1 데이터 유형(DT1), 제1 메모리 어드레스 범위(MR1)를 저장하고, 제2 영역(R2)과 관련하여 제2 데이터 유형(DT2), 제2 메모리 어드레스 범위(MR2)를 저장하고, 제3 영역(R3)과 관련하여, 제3 데이터 유형(DT3), 제3 메모리 어드레스 범위(MR3)를 저장하고, 제4 영역(R4)과 관련하여, 제4 데이터 유형(DT4), 제4 메모리 어드레스 범위(MR4)를 저장할 수 있다. In one embodiment, the
S413c 단계에서, 스토리지 장치(1000)는 HMB 할당 해제 정보를 수신할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다(도 14a의 [3]). 셋-피쳐 커맨드는 제1 메모리 어드레스 범위(MR1)에 대한 할당 해제 정보를 포함할 수 있다. In step S413c, the
S414c 단계에서, 스토리지 장치(1000)는 HMB 할당 해제 정보를 기반으로 복수의 영역들을 재설정할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 해제 정보를 기반으로, 제1 영역(R1)을 다시 설정할 수 있다. HMB 관리자(1181)는 제1 메모리 어드레스 범위(MR1)를 사용할 수 없으므로, 아직 어떠한 영역도 할당되지 않은 제5 메모리 어드레스 범위(MR5)를 제1 영역(R1)에 설정할 수 있다. 즉, HMB 관리자(1181)는 호스트 메모리(13)의 제5 메모리 어드레스 범위(MR5)에 제1 영역(R1)을 할당할 수 있다. In step S414c, the
S415c 단계에서, HMB 컨트롤러(1180)는 HMB 할당 테이블(HMBAT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)과 관련하여, 제5 메모리 어드레스 범위(MR5)를 HMB 할당 테이블(HMBAT)에 저장할 수 있다(도 14b의 [4]). 일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보가 변경되었으므로, 제1 영역(R1)에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었음을 판별할 수 있다. In step S415c, the
일 실시 예에서, 모니터링 유닛(1185)은 복수의 영역들 각각의 할당 정보를 모니터링 할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB 할당 테이블(HMBAT)을 참조하여, 특정 영역의 할당 정보가 변경되었는지 여부를 판단할 수 있다. 모니터링 유닛(1185)은 특정 영역의 할당 정보가 변경된 경우, 데이터 프로세싱 정책의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다. In one embodiment, the
S420 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 모니터링 유닛(1185)으로부터 출력된 신호 또는 영역에 대한 HMB 할당 정보가 변경되었음을 기반으로, 제1 영역(R1)의 데이터 프로세싱 정책을 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 14b의 [5]) In step S420, the
도 15은 도 8의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 16a 및 도 16b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다. 도 15, 도 16a, 및 도 16b를 참조하면, 스토리지 장치(1000)는 호스트(11)로부터 제공된 특정 정보를 기반으로, 특정 영역의 데이터 프로세싱 정책을 변경할 수 있다. Figure 15 is a flowchart showing step S410 of Figure 8 in more detail. FIGS. 16A and 16B are diagrams showing examples of operations of the storage device of FIG. 1. Referring to FIGS. 15, 16A, and 16B, the
일 실시 예에서, 스토리지 장치(1000)는 초기화 과정에서, 호스트(11)로부터 HMB 할당 정보를 포함하는 셋-피쳐 커맨드를 수신할 수 있다(도 16a의 [1]). 셋-피쳐 커맨드는 호스트 메모리(13)내에 HMB(14)를 가리키는 메모리 어드레스 정보를 포함할 수 있다. 예를 들어, 셋-피쳐 커맨드는 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)을 포함할 수 있다. 더욱이, 셋-피쳐 커맨드는 HMB(14)에 대한 특성 정보를 더 포함할 수 있다. 예를 들어, 특성 정보는 HMB(14)에 대응하는 메모리 장치의 유형, 메모리 장치의 특성, 메모리 장치의 신뢰성 수준, 또는 메모리 장치의 교체에 관한 정보 등이 포함될 수 있다. In one embodiment, the
스토리지 장치(1000)는 HMB 할당 정보에 응답하여 복수의 영역들을 분류하고, HMB 할당 테이블(HMBAT)을 갱신할 수 있다(도 16a의 [2]). 예를 들어, HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)에 제1 영역(R1)과 관련하여 제1 데이터 유형(DT1), 제1 메모리 어드레스 범위(MR1), 제1 특성(C1)을 저장하고, 제2 영역(R2)과 관련하여 제2 데이터 유형(DT2), 제2 메모리 어드레스 범위(MR2), 제2 특성(C2)을 저장하고, 제3 영역(R3)과 관련하여, 제3 데이터 유형(DT3), 제3 메모리 어드레스 범위(MR3), 제3 특성(C3)을 저장하고, 제4 영역(R4)과 관련하여, 제4 데이터 유형(DT4), 제4 메모리 어드레스 범위(MR4), 제4 특성(C4)을 저장할 수 있다. 예를 들어, 제1 내지 제4 특성들(C1~C4)은 셋-피쳐 커맨드에 포함된 특성 정보와 관련될 수 있다. 또는 셋-피쳐 커맨드에 특성 정보가 포함되지 않은 경우, 제1 내지 제4 특성들(C1~C4)은 초기화 값을 가질 수 있다. The
일 실시 예에서, 도 8의 S410 단계는 S411d 단계 내지 S412d 단계를 포함할 수 있다. S411d 단계에서, 스토리지 장치(1000)는 호스트(11)로부터 특성 정보를 수신할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)로 특성 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다(도 16b의 [3]). 예를 들어, 특성 정보는 제1 메모리 어드레스 범위(MR1)에 대응하는 변경된 정보(예를 들어, 제5 특성(C5))를 가리킬 수 있다. 예를 들어, 셋-피쳐 커맨드는 제1 메모리 어드레스 범위(MR1)에 대응하는 메모리 장치가 교체되어, 메모리 장치의 유형이 변경되었음을 가리킬 수 있다. 즉, 제5 특성(C5)은 변경된 메모리 장치의 유형을 가리킬 수 있다. In one embodiment, step S410 of FIG. 8 may include steps S411d to S412d. In step S411d, the
S412d 단계에서, 스토리지 장치(1000)는 특성 정보를 기반으로 HMB 할당 테이블(HMBAT)을 갱신할 수 있다. 예를 들어, 특성 정보는 제1 메모리 어드레스 범위(MR1)에 대응하고 제5 특성(C5)을 가리키므로, HMB 관리자(1181)는 제1 영역(R1)과 관련하여, 제5 특성(C5)을 저장할 수 있다.In step S412d, the
일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대한 특성 정보가 변경되었으므로, 제1 영역(R1)에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었음을 판별할 수 있다. In one embodiment, the
일 실시 예에서, 모니터링 유닛(1185)은 복수의 영역들 각각의 특성 정보를 모니터링할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB 할당 테이블(HMBAT)을 참조하여, 특정 영역의 특성 정보가 변경되었는지 여부를 판단할 수 있다. 모니터링 유닛(1185)은 특정 영역의 특성 정보가 변경된 경우, 데이터 프로세싱 정책의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다. In one embodiment, the
S420 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 모니터링 유닛(1185)으로부터 출력된 신호 또는 영역에 대한 HMB 특성 정보가 변경되었음을 기반으로, 제1 영역(R1)의 데이터 프로세싱 정책을 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 16b의 [5]) In step S420, the
도 17a 및 도 17b는 도 1의 스토리지 시스템의 동작의 예를 보여주는 순서도들이다. 도 18a 내지 도 18c는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다. 도 1, 도 17a 내지 도 18c을 참조하면, S501 단계에서, 호스트(11)는 스토리지 장치(1000)로 셋-피쳐 커맨드를 전송할 수 있다. 셋-피쳐 커맨드는 HMB 할당 정보를 포함할 수 있다. HMB 할당 정보는 호스트 메모리 어드레스(또는 버퍼 어드레스) 정보 및 버퍼 크기 정보를 포함할 수 있다. 예를 들어, HMB 할당 정보는 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)을 포함할 수 있다. FIGS. 17A and 17B are flowcharts showing an example of the operation of the storage system of FIG. 1. FIGS. 18A to 18C are diagrams showing examples of operations of the storage system of FIG. 1. Referring to FIGS. 1 and 17A to 18C , in step S501, the
S502 단계에서, 스토리지 장치(1000)는 셋-피쳐 커맨드에 대응하는 완료 엔트리를 호스트(11)에게 전송할 수 있다. S503 단계에서, 스토리지 장치(1000)는 호스트 메모리 버퍼(HMB)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. 스토리지 장치(1000)는 호스트 메모리 버퍼(HMB)(14)를 복수의 영역들(R1~R4)로 분할하여, 각각 영역들에 다른 종류의 데이터를 저장하고, 데이터 프로세싱 정책을 다르게 적용할 수 있다. In step S502, the
S504 단계에서, 스토리지 장치(1000)는 복수의 영역들(R1~R4) 각각에 데이터 프로세싱 정책을 설정할 수 있다. S504 단계는 S412c 단계와 동일 또는 유사하므로, 이에 대한 자세한 설명은 생략된다. In step S504, the
S505 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대한 데이터 프로세싱 정책을 확인할 수 있다. 예를 들어, CPU(1110)는 HMB 프로세싱 엔진(1182)으로 제1 영역(R1)에 대한 HMB 쓰기 요청 및 제1 데이터(DATA1)를 전송할 수 있다(도 18a의 [1]). HMB 컨트롤러(118)는 HMB 쓰기 요청을 기반으로 제1 데이터(DATA1)가 저장될 HMB(14)의 영역이 제1 영역(R1)임을 판별할 수 있다. In step S505, the
HMB 프로세싱 엔진(1182)은 제1 데이터(DATA1)를 HMB(14)의 제1 영역(R1)에 저장하기 위하여, 제1 영역(R1)의 데이터 프로세싱 정책이 무엇인지 확인할 수 있다. HMB 프로세싱 엔진(1182)은 HMB 맵핑 테이블(HMBMT)을 기반으로, 제1 영역(R1)에 대한 데이터 프로세싱 정책이 제1 데이터 프로세싱 정책(DDP1)임을 확인할 수 있다. In order to store the first data DATA1 in the first area R1 of the
S506 단계에서, 스토리지 장치(1000)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제1 데이터(DATA1)에 대해서, 제1 데이터 프로세싱 정책(DDP1)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제1 데이터 프로세싱 엔진(DPE1)을 사용하여 인코딩 동작을 수행하고, 제1 인코딩된 데이터를 생성할 수 있다. In step S506, the
S507 단계에서, 스토리지 장치(1000)는 제1 인코딩된 데이터를 HMB(14)의 제1 영역(R1)에 기입할 수 있다(도 18a의 [2]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제1 영역(R1)의 어드레스를 포함하는 쓰기 커맨드 및 제1 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S507, the
S508 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제2 영역(R2)에 대한 데이터 프로세싱 정책을 확인할 수 있다. 예를 들어, CPU(1110)는 HMB 프로세싱 엔진(1182)으로 제2 영역(R2)에 대한 HMB 쓰기 요청 및 제2 데이터(DATA2)를 전송할 수 있다(도 18b의 [3]). HMB 프로세싱 엔진(1182)은 HMB 쓰기 요청을 기반으로 제2 데이터가 저장될 HMB(14)의 영역이 제2 영역(R2)임을 판별할 수 있다. HMB 프로세싱 엔진(1182)은 제2 데이터를 HMB(14)의 제2 영역(R2)에 저장하기 위하여, 제2 영역(R2)의 데이터 프로세싱 정책이 무엇인지 확인할 수 있다. HMB 프로세싱 엔진(1182)은 HMB 맵핑 테이블(HMBMT)을 기반으로, 제2 영역(R2)에 대한 데이터 프로세싱 정책이 제2 데이터 프로세싱 정책(DDP2)임을 확인할 수 있다. In step S508, the
S509 단계에서, 스토리지 장치(1000)는 제2 데이터 프로세싱 정책(DDP2)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제2 데이터(DATA2)에 대해서, 제2 데이터 프로세싱 정책(DDP2)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제2 데이터 프로세싱 엔진(DPE2)을 사용하여 인코딩 동작을 수행하고, 제2 인코딩된 데이터를 생성할 수 있다. In step S509, the
S510 단계에서, 스토리지 장치(1000)는 제2 인코딩된 데이터를 HMB(14)의 제2 영역(R2)에 기입할 수 있다(도 18b의 [4]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제2 영역(R2)의 어드레스를 포함하는 쓰기 커맨드 및 제2 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S510, the
S511 단계에서, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다. 예를 들어, 스토리지 장치(1000)는 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 수신할 수 있다(도 18b의 [5]). HMB 할당 해제 정보는 제1 메모리 어드레스 범위(MR1)에 대한 할당 해제 정보를 가리킬 수 있다. In step S511, the
S512 단계에서, 스토리지 장치(1000)는 셋-피쳐 커맨드에 대응하는 완료 엔트리를 호스트(11)로 전송할 수 있다. S513 단계에서, 스토리지 장치(1000)는 제1 영역(R1)의 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 할당 해제 정보에 응답하여, 복수의 영역들을 재설정할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 제1 메모리 어드레스 범위(MR1) 대신에 제5 메모리 어드레스 범위(MR5)를 할당할 수 있다. HMB 관리자(1181)는 HMB 할당 테이블(HMBAT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)과 관련하여, 제5 메모리 어드레스 범위(MR5)를 HMB 할당 테이블(HMBAT)에 저장할 수 있다(도 18c의 [6]). HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보가 변경되었으므로, 제1 영역(R1)에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었음을 판별할 수 있다. HMB 관리자(1181)는 제1 영역(R1)의 데이터 프로세싱 정책을 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. In step S512, the
S514 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 18c의 [7]).In step S514, the
S515 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대한 데이터 프로세싱 정책을 확인할 수 있다. 예를 들어, CPU(1110)는 HMB 프로세싱 엔진(1182)으로 제1 영역(R1)에 대한 HMB 쓰기 요청 및 제3 데이터(DATA3)를 전송할 수 있다(도 18c의 [8]). HMB 컨트롤러(118)는 HMB 쓰기 요청을 기반으로 제3 데이터(DATA3)가 저장될 HMB(14)의 영역이 제1 영역(R1)임을 판별할 수 있다. In step S515, the
HMB 프로세싱 엔진(1182)은 제3 데이터(DATA3)를 HMB(14)의 제1 영역(R1)에 저장하기 위하여, 제1 영역(R1)의 데이터 프로세싱 정책이 무엇인지 확인할 수 있다. HMB 프로세싱 엔진(1182)은 HMB 맵핑 테이블(HMBMT)을 기반으로, 제1 영역(R1)에 대한 데이터 프로세싱 정책이 제5 데이터 프로세싱 정책(DDP5)임을 확인할 수 있다. In order to store the third data DATA3 in the first area R1 of the
S516 단계에서, 스토리지 장치(1000)는 제5 데이터 프로세싱 정책(DDP5)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제3 데이터에 대해서, 제5 데이터 프로세싱 정책(DDP5)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제5 데이터 프로세싱 엔진(DPE5)을 사용하여 인코딩 동작을 수행하고, 제3 인코딩된 데이터를 생성할 수 있다. In step S516, the
S517 단계에서, 스토리지 장치(1000)는 제3 인코딩된 데이터를 HMB(14)의 제1 영역(R1)에 기입할 수 있다(도 18c의 [9]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제1 영역(R1)의 어드레스를 포함하는 쓰기 커맨드 및 제3 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S517, the
상술된 바와 같이, 본 개시의 실시 예에 따른 스토리지 장치(1000)는 복수의 데이터 프로세싱 엔진들을 포함할 수 있다. 스토리지 장치(1000)는 신뢰성 및 보안 정보를 기반으로 HMB(14)의 영역별로 상이한 데이터 프로세싱 엔진을 선택적으로 적용할 수 있다. 스토리지 장치(1000)는 변경 조건이 충족된 경우, 신뢰성 및 보안 정보를 기반으로 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 이에 따라, 스토리지 장치(1000)는 HMB(14)의 저장 공간을 효율적으로 사용할 수 있으며, 데이터 프로세싱 동작(예를 들어, 인코딩/디코딩)으로 인한 지연을 방지할 수 있다. As described above, the
도 19는 도 1의 스토리지 시스템을 좀 더 상세하게 보여주는 블록도이다. 도 1, 및 도 19를 참조하면, 스토리지 장치(1000)는 HMB(14)를 복수의 영역들(R1~R4)로 분할할 수 있다. 스토리지 장치(1000)는 스토리지 컨트롤러(1110), 및 불휘발성 메모리 장치(1200)를 포함할 수 있다. 스토리지 컨트롤러(1110)는 중앙 처리 유닛(CPU; central processing unit)(1110), 플래시 변환 계층(FTL; flash translation layer)(1120), 오류 정정 코드(ECC; error correction code) 엔진(1130), AES(advanced encryption standard) 엔진(1140), 버퍼 메모리(1150), 호스트 인터페이스 회로(1160), 메모리 인터페이스 회로(1170), 및 HMB 컨트롤러(1180)를 포함할 수 있다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.FIG. 19 is a block diagram showing the storage system of FIG. 1 in more detail. Referring to FIGS. 1 and 19 , the
HMB 컨트롤러(1180)는 HMB 관리자(1181), HMB 프로세싱 엔진(1182), 및 상태 관리자(1183)를 포함할 수 있다. HMB 컨트롤러(1180)는 도2 에 도시된 HMB 컨트롤러(1180)와 유사 또는 동일할 수 있다. HMB 컨트롤러(1180)는 도 1 내지 18c를 참조하여 설명된 HMB와 관련된 동작을 수행할 수 있다. The
HMB 프로세싱 엔진(1182)은 인코더, 디코더, 제1 내지 제3 프로세싱 풀들(P1~P3)을 포함할 수 있다. 도 19의 HMB 프로세싱 엔진(1182)은 도 2의 HMB 프로세싱 엔진(1192)과 다르게 복수의 프로세싱 풀들(P1~P3)을 포함할 수 있다. 제1 프로세싱 풀(P1)은 제1 유형 프로세싱 정책(예를 들어, 오류 검출 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다. 제2 프로세싱 풀(P2)은 제2 유형 프로세싱 정책(예를 들어, 오류 정정 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다. 제3 프로세싱 풀(P3)은 제3 유형 프로세싱 정책(예를 들어, 암호화 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다.The
일 실시 예에서, 제1 프로세싱 풀(P1)은 제1 내지 제4 오류 검출 엔진들(EDE1~EDE4)을 포함하고, 제2 프로세싱 풀(P2)은 제1 내지 제4 오류 정정 엔진들(ECE1~ECE4)을 포함하고, 제3 프로세싱 풀(P3)은 제1 내지 제4 암호화 엔진들(ENE1~ENE4)을 포함할 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니하며, 풀들의 개수, 각 풀들에 포함된 블록들의 개수는 구현에 따라 증가 또는 감소할 수 있다. In one embodiment, the first processing pool (P1) includes first to fourth error detection engines (EDE1 to EDE4), and the second processing pool (P2) includes first to fourth error correction engines (ECE1). ~ECE4), and the third processing pool (P3) may include first to fourth encryption engines (ENE1 to ENE4). However, the scope of the present disclosure is not limited to this, and the number of pools and the number of blocks included in each pool may increase or decrease depending on implementation.
제1 프로세싱 풀(P1)은 서로 다른 복수의 오류 검출 엔진들(EDE1~EDE4)을 포함할 수 있다. 복수의 오류 검출 엔진들(EDE1~EDE4)을 서로 다른 오류 검출 능력을 갖을 수 있다. 복수의 오류 검출 엔진들(EDE1~EDE4)은 서로 다른 방법(또는 알고리즘)을 사용하여 오류를 검출할 수 있다. 복수의 오류 검출 엔진들(EDE1~EDE4) 중 높은 오류 검출 능력을 갖춘 오류 검출 엔진은 오류 검출 능력이 높으나, 오류 검출 속도가 느리고 하드웨어의 크기가 클 수 있다. 복수의 오류 검출 엔진들(EDE1~EDE4) 중 낮은 오류 검출 능력을 갖춘 오류 검출 엔진은 오류 검출 능력이 낮으나, 오류 검출 속도가 빠르고 하드웨어의 크기가 작을 수 있다.The first processing pool (P1) may include a plurality of different error detection engines (EDE1 to EDE4). A plurality of error detection engines (EDE1 to EDE4) may have different error detection capabilities. A plurality of error detection engines (EDE1 to EDE4) may detect errors using different methods (or algorithms). Among the plurality of error detection engines (EDE1 to EDE4), the error detection engine with high error detection ability has high error detection ability, but the error detection speed is slow and the size of the hardware may be large. Among the plurality of error detection engines (EDE1 to EDE4), an error detection engine with low error detection capability may have low error detection capability, but may have a fast error detection speed and may have a small hardware size.
제1 프로세싱 풀(P1)은 복수의 오류 검출 엔진들(EDE1~EDE4)을 정렬할 수 있다. 예를 들어, 제1 프로세싱 풀(P1)은 낮은 오류 검출 능력을 갖춘 오류 검출 엔진에서 높은 오류 검출 능력을 갖춘 오류 검출 엔진으로 정렬할 수 있다. 즉, 제2 오류 검출 엔진(EDE2)의 오류 검출 능력이 제1 오류 검출 엔진(EDE1)의 오류 검출 능력 보다 높고, 제3 오류 검출 엔진(EDE3)의 오류 검출 능력이 제2 오류 검출 엔진(EDE2)의 오류 검출 능력 보다 높고, 제4 오류 검출 엔진(EDE4)의 오류 검출 능력이 제3 오류 검출 엔진(EDE3)의 오류 검출 능력 보다 높을 수 있다. The first processing pool (P1) may align a plurality of error detection engines (EDE1 to EDE4). For example, the first processing pool P1 may be sorted from an error detection engine with low error detection capability to an error detection engine with high error detection capability. That is, the error detection capability of the second error detection engine (EDE2) is higher than the error detection capability of the first error detection engine (EDE1), and the error detection capability of the third error detection engine (EDE3) is higher than the error detection capability of the second error detection engine (EDE2). ), and the error detection capability of the fourth error detection engine (EDE4) may be higher than the error detection capability of the third error detection engine (EDE3).
예를 들어, 오류 검출 정책은 CRC(cyclic redundancy check), 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), BCH 코드(Bose-Chaudhuri-Hocquenghem Code) 중 적어도 하나일 수 있다. 제1 오류 검출 엔진(EDE1)은 제1 오류 검출 정책을 기반으로 인코딩/디코딩 동작을 수행할 수 있다. 즉, 제1 오류 검출 엔진(EDE1)은 제1 오류 검출 정책(또는 알고리즘)과 관련될 수 있다. 제2 오류 검출 엔진(EDE2)은 제2 오류 검출 정책과 관련될 수 있다. 제3 오류 검출 엔진(EDE3)은 제3 오류 검출 정책과 관련될 수 있다. 제4 오류 검출 엔진(EDE4)은 제4 오류 검출 정책과 관련될 수 있다. For example, the error detection policy may be at least one of cyclic redundancy check (CRC), Hamming Code, Low Density Parity Check (LDPC), and Bose-Chaudhuri-Hocquenghem Code (BCH code). The first error detection engine (EDE1) may perform encoding/decoding operations based on the first error detection policy. That is, the first error detection engine (EDE1) may be related to the first error detection policy (or algorithm). The second error detection engine (EDE2) may be associated with a second error detection policy. A third error detection engine (EDE3) may be associated with a third error detection policy. The fourth error detection engine (EDE4) may be associated with a fourth error detection policy.
제2 프로세싱 풀(P2)은 서로 다른 복수의 오류 정정 엔진들(ECE1~ECE4)을 포함할 수 있다. 복수의 오류 정정 엔진들(ECE1~ECE4)을 서로 다른 오류 정정 능력을 갖을 수 있다. 복수의 오류 정정 엔진들(ECE1~ECE4)은 서로 다른 방법(또는 알고리즘)을 사용하여 오류를 정정할 수 있다. 복수의 오류 정정 엔진들(ECE1~ECE4) 중 높은 오류 정정 능력을 갖춘 오류 정정 엔진은 오류 정정 능력이 높으나, 오류 정정 속도가 느리고 하드웨어의 크기가 클 수 있다. 복수의 오류 정정 엔진들(ECE1~ECE4) 중 낮은 오류 정정 능력을 갖춘 오류 정정 엔진은 오류 정정 능력이 낮으나, 오류 정정 속도가 빠르고 하드웨어의 크기가 작을 수 있다. 예를 들어, 오류 정정 능력은 데이터에서 오류 정정 엔진이 정정할 수 있는 오류 비트의 수를 의미할 수 있다.The second processing pool (P2) may include a plurality of different error correction engines (ECE1 to ECE4). A plurality of error correction engines (ECE1 to ECE4) may have different error correction capabilities. A plurality of error correction engines (ECE1 to ECE4) may correct errors using different methods (or algorithms). Among the plurality of error correction engines (ECE1 to ECE4), the error correction engine with high error correction ability has high error correction ability, but the error correction speed is slow and the size of the hardware may be large. Among the plurality of error correction engines (ECE1 to ECE4), an error correction engine with low error correction ability has low error correction ability, but may have a fast error correction speed and small hardware size. For example, error correction capability may refer to the number of error bits in data that an error correction engine can correct.
제2 프로세싱 풀(P2)은 복수의 오류 정정 엔진들(ECE1~ECE4)을 정렬할 수 있다. 예를 들어, 제2 프로세싱 풀(P2)은 낮은 오류 정정 능력을 갖춘 오류 정정 엔진에서 높은 오류 정정 능력을 갖춘 오류 정정 엔진으로 정렬할 수 있다. 즉, 제2 오류 정정 엔진(ECE2)의 오류 정정 능력이 제1 오류 정정 엔진(ECE1)의 오류 정정 능력 보다 높고, 제3 오류 정정 엔진(ECE3)의 오류 정정 능력이 제2 오류 정정 엔진(ECE2)의 오류 정정 능력 보다 높고, 제4 오류 정정 엔진(ECE4)의 오류 정정 능력이 제3 오류 정정 엔진(ECE3)의 오류 정정 능력 보다 높을 수 있다. The second processing pool (P2) may align a plurality of error correction engines (ECE1 to ECE4). For example, the second processing pool P2 can be sorted from an error correction engine with low error correction capability to an error correction engine with high error correction capability. That is, the error correction capability of the second error correction engine (ECE2) is higher than the error correction capability of the first error correction engine (ECE1), and the error correction capability of the third error correction engine (ECE3) is higher than that of the second error correction engine (ECE2). ), and the error correction capability of the fourth error correction engine (ECE4) may be higher than the error correction capability of the third error correction engine (ECE3).
예를 들어, 오류 정정 정책은 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), BCH 코드(Bose-Chaudhuri-Hocquenghem Code), RS 코드(Reed-Solomon Code), Viterbi 코드, Turbo 코드 중 적어도 하나일 수 있다. 제1 오류 정정 엔진(ECE1)은 제1 오류 정정 정책을 기반으로 인코딩/디코딩 동작을 수행할 수 있다. 즉, 제1 오류 정정 엔진(ECE1)은 제1 오류 정정 정책과 관련될 수 있다. 제2 오류 정정 엔진(ECE2)은 제2 오류 정정 정책과 관련될 수 있다. 제3 오류 정정 엔진(ECE3)은 제3 오류 정정 정책과 관련될 수 있다. 제4 오류 정정 엔진(ECE4)은 제4 오류 정정 정책과 관련될 수 있다. For example, the error correction policy is at least one of Hamming Code, LDPC (Low Density Parity Check), BCH Code (Bose-Chaudhuri-Hocquenghem Code), RS Code (Reed-Solomon Code), Viterbi Code, and Turbo Code. It could be one. The first error correction engine (ECE1) may perform encoding/decoding operations based on the first error correction policy. That is, the first error correction engine (ECE1) may be associated with the first error correction policy. A second error correction engine (ECE2) may be associated with a second error correction policy. A third error correction engine (ECE3) may be associated with a third error correction policy. A fourth error correction engine (ECE4) may be associated with a fourth error correction policy.
제3 프로세싱 풀(P3)은 서로 다른 복수의 암호화 엔진들(ENE1~ENE4)을 포함할 수 있다. 복수의 암호화 엔진들(ENE1~ENE4)을 서로 다른 암호화 능력을 갖을 수 있다. 복수의 암호화 엔진들(ENE1~ENE4)은 서로 다른 방법(또는 알고리즘)을 사용하여 암호화/복호화 할 수 있다. 복수의 암호화 엔진들(ENE1~ENE4) 중 높은 암호화 능력을 갖춘 암호화 엔진은 암호화 능력이 높으나, 암호화/복호화 속도가 느리고 하드웨어의 크기가 클 수 있다. 복수의 암호화 엔진들(ENE1~ENE4) 중 낮은 암호화 능력을 갖춘 암호화 엔진은 암호화 능력이 낮으나, 암호화 속도가 빠르고 하드웨어의 크기가 작을 수 있다.The third processing pool (P3) may include a plurality of different encryption engines (ENE1 to ENE4). Multiple encryption engines (ENE1 to ENE4) can have different encryption capabilities. Multiple encryption engines (ENE1 to ENE4) can encrypt/decrypt using different methods (or algorithms). Among multiple encryption engines (ENE1 to ENE4), the encryption engine with high encryption ability has high encryption ability, but the encryption/decryption speed is slow and the size of the hardware may be large. Among multiple encryption engines (ENE1 to ENE4), an encryption engine with low encryption ability has low encryption ability, but may have fast encryption speed and small hardware size.
제3 프로세싱 풀(P3)은 복수의 암호화 엔진들(ENE1~ENE4)을 정렬할 수 있다. 예를 들어, 제3 프로세싱 풀(P3)은 낮은 암호화 능력을 갖춘 암호화 엔진에서 높은 암호화 능력을 갖춘 암호화 엔진으로 정렬할 수 있다. 즉, 제2 암호화 엔진(ENE2)의 암호화 능력이 제1 암호화 엔진(ENE1)의 암호화 능력 보다 높고, 제3 암호화 엔진(ENE3)의 암호화 능력이 제2 암호화 엔진(ENE2)의 암호화 능력 보다 높고, 제4 암호화 엔진(ENE4)의 암호화 능력이 제3 암호화 엔진(ENE3)의 암호화 능력 보다 높을 수 있다. The third processing pool (P3) can align a plurality of encryption engines (ENE1 to ENE4). For example, the third processing pool (P3) may be sorted from an encryption engine with low encryption power to a encryption engine with high encryption power. That is, the encryption ability of the second encryption engine (ENE2) is higher than the encryption ability of the first encryption engine (ENE1), the encryption ability of the third encryption engine (ENE3) is higher than the encryption ability of the second encryption engine (ENE2), The encryption capability of the fourth encryption engine (ENE4) may be higher than that of the third encryption engine (ENE3).
예를 들어, 암호화 정책은 AES(Advanced Encryption Standard), SHA(Secure Hash Algorithm), RSA(Rivest Shamir Adleman) 중 적어도 하나일 수 있다. 제1 암호화 엔진(ENE1)은 제1 암호화 정책을 기반으로 인코딩/디코딩 동작을 수행할 수 있다. 즉, 제1 암호화 엔진(ENE1)은 제1 암호화 정책과 관련될 수 있다. 제2 암호화 엔진(ENE2)은 제2 암호화 정책과 관련될 수 있다. 제3 암호화 엔진(ENE3)은 제3 암호화 정책과 관련될 수 있다. 제4 암호화 엔진(ENE4)은 제4 암호화 정책과 관련될 수 있다. For example, the encryption policy may be at least one of Advanced Encryption Standard (AES), Secure Hash Algorithm (SHA), and Rivest Shamir Adleman (RSA). The first encryption engine (ENE1) may perform encoding/decoding operations based on the first encryption policy. That is, the first encryption engine (ENE1) may be associated with the first encryption policy. A second encryption engine (ENE2) may be associated with a second encryption policy. A third encryption engine (ENE3) may be associated with a third encryption policy. A fourth encryption engine (ENE4) may be associated with a fourth encryption policy.
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대해 데이터 프로세싱 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 중 특정 영역에 대해 제1 내지 제3 유형 프로세싱 정책들을 선택할 수 있다. 예를 들어, 제1 유형 프로세싱 정책은 오류 검출 정책을 가리키고, 제2 유형 프로세싱 정책은 오류 정정 정책을 가리키고, 제3 유형 프로세싱 정책은 암호화 정책을 가리킬 수 있다. In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 특정 영역에 대하여 복수의 오류 검출 정책들 중 하나를 선택하고, 복수의 오류 정정 정책들 중 하나를 선택하고, 복수의 암호화 정책들 중 하나를 선택할 수 있다. 즉, HMB 컨트롤러(1180)는 특정 영역에 대해 제1 프로세싱 풀(P1)에서 제1 유형 프로세싱 정책을 선택하고, 제2 프로세싱 풀(P2)에서 제2 유형 프로세싱 정책을 선택하고, 제3 프로세싱 풀(P3)에서 제3 유형 프로세싱 정책을 선택할 수 있다. In one embodiment, the
HMB 컨트롤러(1180)는 특정 영역에 대한 관련된 정보를 기반으로, 제1 내지 제3 유형 프로세싱 정책들을 선택할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 특정 영역에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로, 오류 검출 정책, 오류 정정 정책, 암호화 정책을 선택할 수 있다. 또는 HMB 컨트롤러(1180)는 특정 영역에 대한 신뢰성 요구 수준 또는 보안 요구 수준을 기반으로 제1 내지 제3 유형 프로세싱 정책을 선택할 수 있다. The
일 실시 예에서, HMB 컨트롤러(1180)는 특정 영역에 대해 제1 내지 제3 유형 프로세싱 정책들 각각에 대응하는 요구치, 및 임계값을 비교하여 제1 내지 제3 유형 프로세싱 정책들을 선택할 수 있다. 요구치는 특정 영역에 요구되는 프로세싱 능력을 수치화한 값일 수 있다. HMB 컨트롤러(1180)는 제1 내지 제3 프로세싱 풀(P1~P3)들 각각에 대한 메타 정보를 프로세싱 메타 테이블(PMT)에 저장하고 관리할 수 있다. 메타 정보는 프로세싱 풀 단위로 관리되고 갱신될 수 있다. 예를 들어, 메타 정보는 각 풀 별 엔진들의 개수, 임계값들 등을 포함할 수 있다. 임계값들은 미리 결정된 값일 수 있다. 임계값들은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다.In one embodiment, the
예를 들어, HMB 관리자(1181)는 프로세싱 메타 테이블(PMT)을 관리할 수 있다. HMB 관리자(1181)는 제1 프로세싱 풀(P1)과 관련하여 제1 내지 제4 임계값들(TH1a~TH4a)을 저장할 수 있다. 제1 오류 검출 정책은 제1 임계값(TH1a)과 대응하고, 제2 오류 검출 정책은 제2 임계값(TH2a)과 대응하고, 제3 오류 검출 정책은 제3 임계값(TH3a)과 대응하고, 제4 오류 검출 정책은 제4 임계값(TH4a)과 대응할 수 있다. HMB 관리자(1181)는 제2 프로세싱 풀(P2)과 관련하여 제1 내지 제4 임계값들(TH1b~TH4b)을 저장할 수 있다. 제1 오류 정정 정책은 제1 임계값(TH1b)과 대응하고, 제2 오류 정정 정책은 제2 임계값(TH2b)과 대응하고, 제3 오류 정정 정책은 제3 임계값(TH3b)과 대응하고, 제4 오류 정정 정책은 제4 임계값(TH4b)과 대응할 수 있다. HMB 관리자(1181)는 제3 프로세싱 풀(P3)과 관련하여 제1 내지 제4 임계값들(TH1c~TH4c)을 저장할 수 있다. 제1 암호화 정책은 제1 임계값(TH1c)과 대응하고, 제2 암호화 정책은 제2 임계값(TH2c)과 대응하고, 제3 암호화 정책은 제3 임계값(TH3c)과 대응하고, 제4 암호화 정책은 제4 임계값(TH4c)과 대응할 수 있다.For example, the
도 3의 HMB 맵핑 테이블(HMBMT)을 참조하면, HMB 컨트롤러(1180)는 복수의 영역들 각각과 관련하여, 하나의 데이터 프로세싱 정책을 HMB 맵핑 테이블에 저장할 수 있다. 그러나, 도 19의 HMB 맵핑 테이블(HMBMT)을 참조하면, HMB 컨트롤러(1180)는 복수의 영역들 각각과 관련하여, 복수의 데이터 프로세싱 정책을 HMB 맵핑 테이블에 저장할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들 각각에 저장되는 데이터에 대해 복수의 데이터 프로세싱 정책들을 적용할 수 있다.Referring to the HMB mapping table (HMBMT) of FIG. 3, the
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)에 저장하고 관리할 수 있다. HMB(14)의 영역별 맵핑 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 맵핑 정보는 각 영역의 오류 검출 정책, 오류 정정 정책, 및 암호화 정책 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 맵핑 테이블(HMBMT)에 저장되는 맵핑 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다. In one embodiment, the
예를 들어, 제1 영역(R1)에 대응하는 오류 검출 정책은 제1 오류 검출 정책(EDP1)이고, 제1 영역(R1)에 대응하는 오류 정정 정책은 제1 오류 정정 정책(ECP1)이고, 제1 영역(R1)에 대응하는 암호화 정책은 제1 암호화 정책(ENP1)일 수 있다. 제2 영역(R2)에 대응하는 오류 검출 정책은 초기값(즉, HMB 컨트롤러(1180)는 제2 영역(R2)에 대한 오류 검출 정책을 선택하지 않음)이고, 제2 영역(R2)에 대응하는 오류 정정 정책은 제2 오류 정정 정책(ECP2)이고, 제2 영역(R2)에 대응하는 암호화 정책은 제2 암호화 정책(ENP2)일 수 있다. 제3 영역(R3)에 대응하는 오류 검출 정책은 초기값(즉, HMB 컨트롤러(1180)는 제3 영역(R3)에 대한 오류 검출 정책을 선택하 않음)이고, 제3 영역(R3)에 대응하는 오류 정정 정책은 초기값(즉, HMB 컨트롤러(1180)는 제3 영역(R3)에 대한 오류 정정 정책을 선택하지 않음)이고, 제3 영역(R3)에 대응하는 암호화 정책은 제3 암호화 정책(ENP3)일 수 있다. 제4 영역(R4)에 대응하는 오류 검출 정책은 초기값(즉, HMB 컨트롤러(1180)는 제4 영역(R4)에 대한 오류 검출 정책을 선택하 않음)이고, 제4 영역(R4)에 대응하는 오류 정정 정책은 초기값(즉, HMB 컨트롤러(1180)는 제4 영역(R4)에 대한 오류 정정 정책을 선택하지 않음)이고, 제4 영역(R4)에 대응하는 암호화 정책은 초기값(즉, HMB 컨트롤러(1180)는 제4 영역(R4)에 대한 암호화 정책을 선택하지 않음)일 수 있다.For example, the error detection policy corresponding to the first area (R1) is the first error detection policy (EDP1), the error correction policy corresponding to the first area (R1) is the first error correction policy (ECP1), The encryption policy corresponding to the first region (R1) may be the first encryption policy (ENP1). The error detection policy corresponding to the second region (R2) is the initial value (i.e., the
상술된 바와 같이, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대하여 어떤 데이터 프로세싱 정책도 선택하지 않을 수 있다. 또는 HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대하여 하나 이상의 프로세싱 정책들을 선택할 수 있다. As described above, the
일 실시 예에서, 스토리지 장치(1000)는 제2 영역(R2)에 대한 HMB 쓰기 동작을 수행할 수 있다. 예를 들어, CPU(1110) HMB 프로세싱 엔진(1182)으로 제2 영역(R2)에 대한 HMB 쓰기 요청을 전송할 수 있다. HMB 프로세싱 엔진(1182)은 제2 영역(R2)으로 인코딩된 쓰기 데이터를 전송할 수 있다. 구체적으로, HMB 프로세싱 엔진(1182)은 HMB 맵핑 테이블(HMBMT)을 기반으로 제2 영역(R2)에 대응하는 데이터 프로세싱 정책을 확인할 수 있다. HMB 프로세싱 엔진(1182)은 제2 영역(R2)의 오류 정정 정책이 제2 오류 정정 정책(ECP2)이고, 제2 영역(R2)의 암호화 정책이 제2 암호화 정책(ENP2)임을 판별할 수 있다. In one embodiment, the
HMB 프로세싱 엔진(1182)은 우선 제2 오류 정정 엔진(ECE2)을 기반으로 쓰기 데이터에 대하여 인코딩 동작을 수행하여, 중간 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 제2 암호화 엔진(ENE2)을 기반으로 중간 데이터에 대하여 인코딩 동작을 수행하여 인코딩된 쓰기 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1181)은 쓰기 커맨드 및 인코딩된 쓰기 데이터를 호스트(11)로 전송할 수 있다. 즉, HMB 프로세싱 엔진(1181)은 제2 영역(R2)에 인코딩된 쓰기 데이터를 기입할 수 있다. 오류 정정과 관련된 인코딩 동작을 수행한 후에, 암호화와 관련된 인코딩 동작을 수행한 것은 예시적인 것이며, 본 개시의 범위가 이에 한정되지 아니한다. 데이터 프로세싱 정책들의 인코딩 동작 순서는 구현에 따라 달라질 수 있다. The
일 실시 예에서, 스토리지 장치(1000)는 제2 영역(R2)에 대한 HMB 읽기 동작을 수행할 수 있다. 예를 들어, CPU(1110)는 HMB 컨트롤러(1180)로 제2 영역(R2)에 대한 HMB 읽기 요청을 전송할 수 있다. HMB 프로세싱 엔진(1182)은 제2 영역(R2)으로부터 읽기 데이터를 읽을 수 있다. HMB 프로세싱 엔진(1182)은 HMB 맵핑 테이블(HMBMT)을 기반으로 제2 영역(R2)에 대응하는 데이터 프로세싱 정책을 확인할 수 있다. HMB 프로세싱 엔진(1182)은 제2 영역(R2)의 오류 정정 정책이 제2 오류 정정 정책(ECP2)이고, 제2 영역(R2)의 암호화 정책이 제2 암호화 정책(ENP2)임을 판별할 수 있다. In one embodiment, the
HMB 프로세싱 엔진(1182)은 제2 암호화 엔진(ENE2)을 기반으로 읽기 데이터에 대한 디코딩 동작을 수행하여, 중간 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 중간 데이터의 오류 존재 여부를 판단할 수 있다. 오류가 존재하는 경우, HMB 프로세싱 엔진(1182)은 제2 오류 정정 엔진(ECE)을 기반으로 중간 데이터에 대해 오류 정정 동작을 수행할 수 있다. 즉, HMB 프로세싱 엔진(1182)은 제2 오류 정정 엔진(ECE)을 기반으로 중간 데이터에 대해 오류 정정 동작을 수행하여, 정정된 읽기 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 정정된 읽기 데이터를 CPU(1110)로 전송할 수 있다. The
도 20은 도 19의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1, 도 19, 및 도 20을 참조하면, S610 단계에서, HMB 컨트롤러(1180)는 호스트(11)로부터 HMB 할당 정보를 수신할 수 있다. S610 단계는 도 4의 S110 단계와 동일 또는 유사하므로, 상세한 설명은 생략된다. HMB 컨트롤러(1180)는 HMB 할당 정보를 기반으로, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 데이터 프로세싱 정책들을 설정할 수 있다. FIG. 20 is a flowchart showing an example of the operation of the HMB controller of FIG. 19. Referring to FIGS. 1, 19, and 20, in step S610, the
일 실시 예에서, HMB 관리자(1181)는 모든 복수의 영역들(R1~R4)에 대하여, 이하에서 설명되는 S620 단계 내지 S670 단계를 수행할 수 있다. 그러나, 도면의 간결성 몇 설명의 편의를 위하여, 이하에서 특정 하나의 영역에 대하여 변경 조건이 충족하는지 여부를 설명한다. 특정 하나의 영역은 제1 영역(R1)으로 가정한다. 단, 본 개시의 범위가 이에 한정되는 것은 아니며, 나머지 영역들(R2~R3)에 대해서도 하기의 설명이 모두 적용될 수 있음이 잘 이해될 것이다. In one embodiment, the
구체적으로, S620 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 검출 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 오류 검출 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 검출 정책을 사용할지 여부를 판단할 수 있다. 오류 검출 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S630 단계를 진행하고, 오류 검출 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S640 단계를 진행한다. Specifically, in step S620, the
S630 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 오류 검출 정책들(EDP1~EDP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 오류 검출 정책(EDP1)을 선택할 수 있다. In step S630, the
S640 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 정정 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 오류 정정 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 정정 정책을 사용할지 여부를 판단할 수 있다. 오류 정정 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S650 단계를 진행하고, 오류 정정 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S660 단계를 진행한다. In step S640, the
S650 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 오류 정정 정책들(ECP1~ECP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 오류 정정 정책(ECP1)을 선택할 수 있다. In step S650, the
S660 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 암호화 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 암호화 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 암호화 정책을 사용할지 여부를 판단할 수 있다. 암호화 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S670 단계를 진행하고, 오류 정정 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S680 단계를 진행한다. In step S660, the
S670 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 암호화 정책들(ENP1~ENP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 암호화 정책(ENP1)을 선택할 수 있다. In step S670, the
S680 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책에 관한 정보를 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)에 제1 영역(R1)과 관련하여 제1 오류 검출 정책(EDP1), 제1 오류 정정 정책(ECP1), 및 제1 암호화 정책(ENP1)을 저장할 수 있다. HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)에 제2 영역(R2)과 관련하여 제2 오류 정정 정책(ECP2), 및 제2 암호화 정책(ENP2)을 저장할 수 있다. HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)에 제3 영역(R3)과 관련하여 제3 암호화 정책(ENP3)을 저장할 수 있다.In step S680, the
도 21a는 도 20의 S630 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 1, 도 19, 도 20, 도 21a를 참조하면, HMB 관리자(1181)는 특정 영역에 대하여 복수의 오류 검출 정책들 중 하나를 선택할 수 있다. HMB 관리자(1181)는 특정 영역에 대한 관련된 정보를 기반으로, 오류 검출 정책을 결정할 수 있다. 구체적으로, HMB 관리자(1181)는 특정 영역에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로, 오류 검출 정책을 선택할 수 있다. FIG. 21A is a flowchart showing step S630 of FIG. 20 in more detail. Referring to FIGS. 1, 19, 20, and 21A, the
일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 검출 요구치(VRa)를 연산하고, 복수의 오류 검출 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 오류 검출 정책을 선택할 수 있다. 일 실시 예에서, 검출 요구치(VRa)는 특정 영역에 요구되는 오류 검출 능력을 가리키는 값일 수 있다. 검출 요구치(VRa)는 특정 영역에 얼마나 높은 오류 검출 능력이 필요한지를 가리키는 인자(factor)일 수 있다. 예를 들어, 제1 영역(R1)의 검출 요구치(VRa)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 오류 검출 능력을 수치화한 값일 수 있다. In one embodiment, the
일 실시 예에서, HMB 관리자(1181)는 복수의 오류 검출 정책들에 대응하는 임계값들을 관리할 수 있다. 복수의 오류 검출 정책들에 대응하는 임계값들은 미리 결정된 값일 수 있다. 복수의 오류 검출 정책들에 대응하는 임계값들은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다. In one embodiment, the
도 21a의 S630 단계는 S631 단계 내지 S638 단계를 포함할 수 있다. S631 단계에서, HMB 관리자(1181)는 검출 요구치(VRa)를 계산할 수 있다. 예를 들어, 검출 요구치(VRa)는 복수의 오류 검출 정책들(EDP1~EDP4) 중 하나를 선택하기 위해 사용될 수 있다. 검출 요구치(VRa)는 특정 영역에 관련된 정보를 기반으로 계산될 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)의 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로 검출 요구치(VRa)를 연산할 수 있다. Step S630 of FIG. 21A may include steps S631 to S638. In step S631, the
S632 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제1 임계값(VTH1a)을 비교할 수 있다. 검출 요구치(VRa)가 제1 임계값(VTH1a) 보다 작은 경우 HMB 관리자(1181)는 S633 단계를 진행하고, 검출 요구치(VRa)가 제1 임계값(VTH1a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S634 단계를 진행한다.In step S632, the
S633 단계에서, HMB 관리자(1181)는 제1 오류 검출 정책(EDP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제1 오류 검출 정책(EDP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S633, the
S634 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제2 임계값(VTH2a)을 비교할 수 있다. 검출 요구치(VRa)가 제2 임계값(VTH2a) 보다 작은 경우 HMB 관리자(1181)는 S635 단계를 진행하고, 검출 요구치(VRa)가 제2 임계값(VTH2a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S636 단계를 진행한다.In step S634, the
S635 단계에서, HMB 관리자(1181)는 제2 오류 검출 정책(EDP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제2 오류 검출 정책(EDP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S635, the
S636 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제3 임계값(VTH3a)을 비교할 수 있다. 검출 요구치(VRa)가 제3 임계값(VTH3a) 보다 작은 경우 HMB 관리자(1181)는 S637 단계를 진행하고, 검출 요구치(VRa)가 제3 임계값(VTH3a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S638 단계를 진행한다.In step S636, the
S637 단계에서, HMB 관리자(1181)는 제3 오류 검출 정책(EDP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제3 오류 검출 정책(EDP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S637, the
S638 단계에서, HMB 관리자(1181)는 제4 오류 검출 정책(EDP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제4 오류 검출 정책(EDP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S638, the
도 21b는 도 20의 S650 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 1, 도 19, 도 20, 도 21b를 참조하면, HMB 관리자(1181)는 특정 영역에 대하여 복수의 오류 정정 정책들 중 하나를 선택할 수 있다. 구체적으로, HMB 관리자(1181)는 특정 영역에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로, 오류 정정 정책을 선택할 수 있다. Figure 21b is a flowchart showing step S650 of Figure 20 in more detail. Referring to FIGS. 1, 19, 20, and 21B, the
일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 정정 요구치(VRb)를 연산하고, 복수의 오류 정정 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 오류 정정 정책을 선택할 수 있다. 일 실시 예에서, 정정 요구치(VRb)는 특정 영역에 요구되는 오류 정정 능력을 가리키는 값일 수 있다. 예를 들어, 제1 영역(R1)의 정정 요구치(VRb)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 오류 정정 능력을 수치화한 값일 수 있다. In one embodiment, the
도 21b의 S650 단계는 S651 단계 내지 S658 단계를 포함할 수 있다. S651 단계에서, HMB 관리자(1181)는 정정 요구치(VRb)를 계산할 수 있다. 예를 들어, 정정 요구치(VRb)는 복수의 오류 정정 정책들(ECP1~ECP4) 중 하나를 선택하기 위해 사용될 수 있다. 정정 요구치(VRb)는 특정 영역에 관련된 정보를 기반으로 계산될 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)의 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로 정정 요구치(VRb)를 연산할 수 있다. Step S650 of FIG. 21B may include steps S651 to S658. In step S651, the
S652 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제1 임계값(VTH1b)을 비교할 수 있다 정정 요구치(VRb)가 제1 임계값(VTH1b) 보다 작은 경우 HMB 관리자(1181)는 S653 단계를 진행하고, 정정 요구치(VRb)가 제1 임계값(VTH1b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S654 단계를 진행한다.In step S652, the
S653 단계에서, HMB 관리자(1181)는 제1 오류 정정 정책(ECP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제1 오류 정정 정책(ECP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S653, the
S654 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제2 임계값(VTH2b)을 비교할 수 있다. 정정 요구치(VRb)가 제2 임계값(VTH2b) 보다 작은 경우 HMB 관리자(1181)는 S655 단계를 진행하고, 정정 요구치(VRb)가 제2 임계값(VTH2b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S656 단계를 진행한다.In step S654, the
S655 단계에서, HMB 관리자(1181)는 제2 오류 정정 정책(ECP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제2 오류 정정 정책(ECP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S655, the
S656 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제3 임계값(VTH3b)을 비교할 수 있다. 정정 요구치(VRb)가 제3 임계값(VTH3b) 보다 작은 경우 HMB 관리자(1181)는 S657 단계를 진행하고, 정정 요구치(VRb)가 제3 임계값(VTH3b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S658 단계를 진행한다.In step S656, the
S657 단계에서, HMB 관리자(1181)는 제3 오류 정정 정책(ECP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제3 오류 정정 정책(ECP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S657, the
S658 단계에서, HMB 관리자(1181)는 제4 오류 정정 정책(ECP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제4 오류 정정 정책(ECP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S658, the
도 21c는 도 20의 S670 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 1, 도 19, 도 20, 도 21c를 참조하면, HMB 관리자(1181)는 특정 영역에 대하여 복수의 암호화 정책들 중 하나를 선택할 수 있다. 구체적으로, HMB 관리자(1181)는 특정 영역에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로, 암호화 정책을 선택할 수 있다. FIG. 21C is a flowchart showing step S670 of FIG. 20 in more detail. Referring to FIGS. 1, 19, 20, and 21C, the
일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 암호화 요구치(VRc)를 연산하고, 복수의 암호화 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 암호화 정책을 선택할 수 있다. 일 실시 예에서, 암호화 요구치(VRc)는 특정 영역에 요구되는 암호화 능력을 가리키는 값일 수 있다. 예를 들어, 제1 영역(R1)의 암호화 요구치(VRc)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 암호화 능력을 수치화한 값일 수 있다. In one embodiment, the
도 21c의 S670 단계는 S671 단계 내지 S678 단계를 포함할 수 있다. S671 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc)를 계산할 수 있다. 예를 들어, 암호화 요구치(VRc)는 복수의 암호화 정책들(ENP1~ENP4) 중 하나를 선택하기 위해 사용될 수 있다. 암호화 요구치(VRc)는 특정 영역에 관련된 정보를 기반으로 계산될 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)의 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로 암호화 요구치(VRc)를 연산할 수 있다. Step S670 of FIG. 21C may include steps S671 to S678. In step S671, the
S672 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제1 임계값(VTH1c)을 비교할 수 있다 암호화 요구치(VRc)가 제1 임계값(VTH1c) 보다 작은 경우 HMB 관리자(1181)는 S673 단계를 진행하고, 암호화 요구치(VRc)가 제1 임계값(VTH1c) 보다 크거나 같은 경우 HMB 관리자(1181)는 S674 단계를 진행한다.In step S672, the
S673 단계에서, HMB 관리자(1181)는 제1 암호화 정책(ENP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제1 암호화 정책(ENP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S673, the
S674 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제2 임계값(VTH2c)을 비교할 수 있다. 암호화 요구치(VRc)가 제2 임계값(VTH2c) 보다 작은 경우 HMB 관리자(1181)는 S675 단계를 진행하고, 암호화 요구치(VRc)가 제2 임계값(VTH2c) 보다 크거나 같은 경우 HMB 관리자(1181)는 S676 단계를 진행한다.In step S674, the
S675 단계에서, HMB 관리자(1181)는 제2 암호화 정책(ENP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제2 암호화 정책(ENP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S675, the
S676 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제3 임계값(VTH3b)을 비교할 수 있다. 암호화 요구치(VRc)가 제3 임계값(VTH3b) 보다 작은 경우 HMB 관리자(1181)는 S677 단계를 진행하고, 암호화 요구치(VRc)가 제3 임계값(VTH3b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S678 단계를 진행한다.In step S676, the
S677 단계에서, HMB 관리자(1181)는 제3 암호화 정책(ENP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제3 암호화 정책(ENP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S677, the
S678 단계에서, HMB 관리자(1181)는 제4 암호화 정책(ENP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제4 암호화 정책(ENP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S678, the
도 22는 도 19의 HMB 컨트롤러의 동작 방법의 예를 보여주는 순서도이다. 도 1, 도 19, 및 도 22를 참조하면, S710 단계에서, HMB 컨트롤러(1180)는 데이터 프로세싱 정책에 대한 변경 조건이 충족되었는지 여부를 판별할 수 있다. 변경 조건이 충족된 경우 HMB 컨트롤러(1180)는 S720 단계를 진행하고, 변경 조건이 충족되지 않은 경우 HMB 컨트롤러(1180)는 S710 단계를 다시 진행한다. S710 단계의 동작들은 도 8의 S410 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다. FIG. 22 is a flowchart showing an example of an operation method of the HMB controller of FIG. 19. Referring to FIGS. 1, 19, and 22, in step S710, the
S720 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 검출 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 오류 검출 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 검출 정책을 변경할지 여부를 판단할 수 있다. 오류 검출 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S730 단계를 진행하고, 오류 검출 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S740 단계를 진행한다.In step S720, the
S730 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제1 유형 프로세싱 정책을 제4 오류 검출 정책(EDP4)으로 선택할 수 있다. S730 단계의 동작들은 도 20의 S630 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S730, the
S740 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 정정 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 오류 정정 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 정정 정책을 변경할지 여부를 판단할 수 있다. 오류 정정 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S750 단계를 진행하고, 오류 정정 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S760 단계를 진행한다.In step S740, the
S750 단계에서, 스토리지 장치(1000)는 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제2 유형 프로세싱 정책을 제4 오류 정정 정책(ECP4)으로 선택할 수 있다. S750 단계의 동작들은 도 20의 S650 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S750, the
S760 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 암호화 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 암호화 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 암호화 정책을 변경할지 여부를 판단할 수 있다. 암호화 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S770 단계를 진행하고, 암호화 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S780 단계를 진행한다.In step S760, the
S770 단계에서, 스토리지 장치(1000)는 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제3 유형 프로세싱 정책을 제4 암호화 정책(ENP4)으로 선택할 수 있다. S770 단계의 동작들은 도 20의 S670 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S770, the
S780 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)에 제1 영역(R1)의 제1 유형 프로세싱 정책을 제4 오류 검출 정책(EDP4)으로 저장하고, 제1 영역(R1)의 제2 유형 프로세싱 정책을 제4 오류 정정 정책(ECP4)으로 저장하고, 제1 영역(R1)의 제3 유형 프로세싱 정책을 제4 암호화 정책(ENP4)으로 저장할 수 있다. In step S780, the
도 23은 도 19의 스토리지 장치의 동작의 예를 보여주는 도면이다. 도 1, 도 19, 및 도 23을 참조하면, 도면의 간결성 및 설명의 편의를 위하여, 도 23은 복수의 영역들 중 제1 및 제2 영역들(R1, R2)에 대한 제2 유형 프로세싱 정책에 대해서만 도시된다. 도 23의 그래프에서, 가로축은 시간을 가리키고, 세로축은 정정 요구치를 가리킨다. 도 23의 그래프에서, 제1 영역(R1)의 정정 요구치가 굵은선(V1)으로 도시되고, 제2 영역(R2)의 정정 요구치가 실선(V2)로 도시된다. FIG. 23 is a diagram showing an example of the operation of the storage device of FIG. 19. Referring to FIGS. 1, 19, and 23, for brevity of the drawings and convenience of description, FIG. 23 shows a second type processing policy for the first and second regions R1 and R2 among the plurality of regions. It is shown only for In the graph of Figure 23, the horizontal axis indicates time, and the vertical axis indicates correction request values. In the graph of FIG. 23, the correction request value of the first area R1 is shown as a thick line V1, and the correction request value of the second area R2 is shown as a solid line V2.
일 실시 예에서, 스토리지 장치(1000)는 시간의 흐름에 따라, 복수의 영역들 각각에 적용되는 데이터 프로세싱 정책이 변경될 수 있다. 예를 들어, 스토리지 장치(1000)는 제1 시점(t1)에서 제1 영역(R1)의 데이터 프로세싱 정책의 변경 조건이 충족되어, 제1 영역(R1)의 제2 유형 프로세싱 정책을 변경할 수 있다. 스토리지 장치(1000)는 제2 시점(t2)에서 제2 영역(R2)의 데이터 프로세싱 정책의 변경 조건이 충족되어, 제2 영역(R2)의 제2 유형 프로세싱 정책을 변경할 수 있다. In one embodiment, the
제1 구간(T1)에서, 제1 영역(R1)의 정정 요구치는 제1 임계값(TH1b) 보다 작고, 제2 영역(R2)의 정정 요구치는 제1 임계값(TH1b)보다 크고 제2 임계값(TH2b) 보다 작을 수 있다. 제2 구간(T2)에서, 제1 영역(R1)의 정정 요구치는 제2 임계값(TH2b) 보다 크고 제3 임계값(TH3b) 보다 작고, 제2 영역(R2)의 정정 요구치는 제1 임계값(TH1b)보다 크고 제2 임계값(TH2b) 보다 작을 수 있다. 제3 구간(T3)에서, 제1 영역(R1)의 정정 요구치는 제2 임계값(TH2b) 보다 크고 제3 임계값(TH3b) 보다 작고, 제2 영역(R2)의 정정 요구치는 제1 임계값(TH1b) 보다 작을 수 있다. In the first section T1, the correction request value of the first region R1 is less than the first threshold value TH1b, and the correction request value of the second region R2 is greater than the first threshold value TH1b and the second threshold value It may be smaller than the value (TH2b). In the second section T2, the correction request value of the first area R1 is greater than the second threshold value TH2b and smaller than the third threshold value TH3b, and the correction request value of the second area R2 is greater than the second threshold value TH2b and is smaller than the third threshold value TH3b. It may be greater than the value TH1b and less than the second threshold value TH2b. In the third section T3, the correction request value of the first area R1 is greater than the second threshold value TH2b and less than the third threshold value TH3b, and the correction request value of the second area R2 is greater than the second threshold value TH2b and is smaller than the third threshold value TH3b. It may be smaller than the value (TH1b).
제1 구간(T1)에서 제1 영역(R1)의 제2 유형 프로세싱 정책(예를 들어, 오류 정정 정책)은 제1 오류 정정 정책(ECP1)이고, 제2 영역(R2)의 제2 유형 프로세싱 정책은 제2 오류 정정 정책(ECP2)일 수 있다. 제2 구간(T2)에서, 제1 영역(R1)의 제2 유형 프로세싱 정책은 제3 오류 정정 정책(ECP3)이고, 제2 영역(R2)의 제2 유형 프로세싱 정책은 제2 오류 정정 정책(ECP3)일 수 있다. 제3 구간(T3)에서, 제1 영역(R1)의 제2 유형 프로세싱 정책은 제3 오류 정정 정책(ECP3)이고, 제2 영역(R2)의 제2 유형 프로세싱 정책은 제1 유형 프로세싱 정책(ECP1)일 수 있다. In the first interval T1, the second type processing policy (e.g., error correction policy) of the first region R1 is the first error correction policy ECP1, and the second type processing policy of the second region R2 is the first error correction policy ECP1. The policy may be a secondary error correction policy (ECP2). In the second interval T2, the second type processing policy of the first region R1 is the third error correction policy ECP3, and the second type processing policy of the second region R2 is the second error correction policy ECP3. It may be ECP3). In the third interval T3, the second type processing policy of the first region R1 is the third error correction policy ECP3, and the second type processing policy of the second region R2 is the first type processing policy ( It may be ECP1).
도 24는 도 19의 제1 오류 정정 엔진의 예시를 간략히 보여주는 블록도이다. 도 24를 참조하면, 제1 오류 정정 엔진(ECE1)은 독출된 데이터로부터 신드롬을 생성하고, 신드롬을 사용하여 오류 위치를 검출하는 방식을 사용할 수 있다. 여기서, BCH 부호(Bose-Chaudhuri Hocquenghem code) 방식의 제1 오류 정정 엔진(ECE1)이 설명되었지만, 오류 위치를 검출할 수 있는 다른 다양한 오류 정정 부호 방식들이 본 개시의 기술에 사용될 수 있음은 잘 이해될 것이다. 제1 오류 정정 엔진(ECE1)은 제1 버퍼(1191), 신드롬 계산 블록(1192), 치엔 서치 블록(1193), 오류 어드레스 발생기(1194), 정정부(1195), 그리고 제2 버퍼(1196)를 포함할 수 있다. FIG. 24 is a block diagram briefly showing an example of the first error correction engine of FIG. 19. Referring to FIG. 24, the first error correction engine (ECE1) may use a method of generating a syndrome from read data and detecting an error location using the syndrome. Here, the first error correction engine (ECE1) of the BCH code (Bose-Chaudhuri Hocquenghem code) method has been described, but it is well understood that various other error correction code methods capable of detecting error locations can be used in the technology of the present disclosure. It will be. The first error correction engine (ECE1) includes a first buffer (1191), a syndrome calculation block (1192), a Chien search block (1193), an error address generator (1194), a correction unit (1195), and a second buffer (1196). may include.
제1 버퍼(1191)는 HMB(14)로부터 전송되는 부호어 단위의 독출 데이터 R(x)를 저장한다. 제1 버퍼(1191)에 저장된 데이터 R(x)는 신드롬 계산 블록(1192)에 제공될 것이다.The
신드롬 계산 블록(1192)은 독출 데이터 R(x)를 제공받아 신드롬 S(x)를 계산한다. 예를 들면, 신드롬 S(x)는 제공되는 독출 데이터 R(x)에 패리티 검출 다항식 H(x)를 곱함으로써 계산될 수 있다. 패리티 검출 다항식 H(x)은 생성 다항식 G(x)의 근을 적용하여 만들어진다. 신드롬 S(x)을 통해서, 독출 데이터 R(x)의 오류 존재 여부가 검출된다. 신드롬 S(x)은 데이터 R(x)에 대한 제반 오류 정보를 포함한다. 즉, 신드롬 S(x)에는 오류의 위치와 패턴 및 오류의 사이즈까지 포함된다. 따라서, 신드롬 S(x)를 통해서 독출 데이터 R(x)에 대한 제반 오류 비트의 검출, 오류의 정정 가능성 판단, 오류의 정정 연산이 이루어질 수 있다. The
치엔 서치 블록(1193)은 신드롬 S(x)를 사용하여 오류 정정 벡터 E(x)를 생성할 수 있다. 신드롬 계산 블록(1192)에 의해서 계산된 신드롬 S(x)는 도시되지는 않았지만, KES 블록(Key Equation Solver Block)으로 전달될 수 있다. KES 블록에 의해서 신드롬 S(x)로부터 오류 위치 다항식(Error Location Polynomial) σ(x)와 오류 패턴 다항식 ω(x)이 생성될 수 있다. 치엔 서치 블록(1193)은 오류 위치 다항식의 근을 계산한다. 그리고 오류 위치 다항식을 통해서 검색된 오류 위치들 각각에 대응하는 오류의 크기를 계산한다. 치엔 서치 블록(1193)은 치엔 서치 알고리즘(Chien Search Algorithm)을 통해 독출 데이터 R(x)의 오류 위치와 오류 크기를 구하면, 이러한 오류를 정정하기 위한 오류 정정 벡터 E(x)를 출력한다. 오류 정정 벡터 E(x)에는 전달된 부호어 상에서의 오류 위치 정보를 포함한다. The
오류 어드레스 발생기(1194)는 오류 정정 벡터 E(x)를 사용하여 페이지 버퍼(130)에서 덮어쓰기 되어야 할 부분 데이터의 어드레스 정보를 생성할 수 있다. 오류 어드레스 발생기(1194)는 정정된 데이터로 덮어쓰기 되어야 하는 페이지 버퍼(130)의 위치에 대응하는 페이지 버퍼 어드레스(PB_ADD)를 생성한다. The
정정부(1195)는 오류 정정 벡터 E(x)를 이용하여 오류가 존재하는 데이터를 정정한다. 정정부(1195)는 제1 버퍼(1191)에 저장된 독출 데이터 R(x)와 치엔 서치 블록(1193)에 의해서 계산된 오류 정정 벡터 E(x)에 대한 배타적 논리합(XOR) 연산을 수행하여 독출 데이터 R(x)에 포함된 오류를 정정할 수 있다. 오류가 정정된 데이터는 제2 버퍼(1196)에 저장될 것이다.The
도 25는 도 19의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1, 도 19, 도 25를 참조하면, S810, S820, S840, S860, S880 단계들은 도 22의 S710, S720, S740, S760, S780 단계와 동일하게 수행될 수 있다. 따라서, 중복되는 설명은 생략된다. FIG. 25 is a flowchart showing an example of the operation of the HMB controller of FIG. 19. Referring to FIGS. 1, 19, and 25, steps S810, S820, S840, S860, and S880 may be performed in the same manner as steps S710, S720, S740, S760, and S780 of FIG. 22. Therefore, redundant descriptions are omitted.
일 실시 예에서, HMB 컨트롤러(1180)는 기계 학습(machine learning)을 기반으로 특정 영역에 대한 데이터 프로세싱 정책을 선택할 수 있다. HMB 관리자(1181)는 다양한 기계 학습을 수행하도록 구성된 기계 학습 가속기로 구현될 수 있다. 또는 HMB 관리자(1181)는 다양한 기계 학습을 수행하도록 설계된 소프트웨어 형태로 구현될 수 있으며, 이 경우, HMB 관리자(1181)는 프로세서 또는 CPU(1110)에 의해 구동될 수 있다. In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 기계 학습 모델을 사용하여, 특정 영역에 대한 요구치를 연산할 수 있다. 기계 학습 모델은 기계 학습을 통해 사전에 학습된 모델일 수 있다. 기계 학습은 샴 네트워크(Siamese Network), 심층 신경망(deep neural network), 컨볼루션 신경망(convolution neural network), 오토인코더(Auto-encoder) 등과 같은 다양한 기계 학습 방식들 중 하나를 포함할 수 있다. HMB 컨트롤러(1180)는 기계 학습 모델을 사용하여, 복수의 영역들 각각에 대하여, 가장 적합한 데이터 프로세싱 정책을 선택할 수 있다. In one embodiment, the
S830 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 검출 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 검출 요구치를 기반으로 오류 검출 정책을 선택할 수 있다. In step S830, the
S850 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 정정 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 정정 요구치를 기반으로 오류 정정 정책을 선택할 수 있다. In step S850, the
S850 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 암호화 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 암호화 요구치를 기반으로 암호화 정책을 선택할 수 있다.In step S850, the
도 26은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다. 데이터 센터(2000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(200)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(2100_1~2100_n)의 개수 및 복수의 스토리지 서버들(2200_1~2200_m)의 개수는 다양하게 변형될 수 있다.Figure 26 is a block diagram showing an example of a data center to which a storage device according to an embodiment of the present disclosure is applied. The
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(2200_1)의 예시가 설명된다. 나머지 스토리지 서버들(2200_2~2200_m) 및 복수의 애플리케이션 서버들(2100_1~2100_n) 각각은 제1 스토리지 서버(2200_1)와 유사한 구조를 가질 수 있다. Below, for convenience of explanation, an example of the first storage server 2200_1 is described. Each of the remaining storage servers 2200_2 to 2200_m and the plurality of application servers 2100_1 to 2100_n may have a structure similar to that of the first storage server 2200_1.
제1 스토리지 서버(2200_1)는 프로세서(2210_1), 메모리(2220_1), 스위치(2230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(2240_1), 및 스토리지 장치(2250_1)를 포함할 수 있다. 프로세서(2210_1)는 제1 스토리지 서버(2200_1)의 전반적인 동작을 제어할 수 있다. 메모리(2220_1)는 프로세서(2210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(2210_1)는 메모리(2220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 일 실시 예에서, 메모리(2220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다. The first storage server 2200_1 may include a processor 2210_1, a memory 2220_1, a switch 2230_1, a network interface connector (NIC) 2240_1, and a storage device 2250_1. The processor 2210_1 may control the overall operation of the first storage server 2200_1. The memory 2220_1 can store various instructions or data under the control of the processor 2210_1. The processor 2210_1 may be configured to access the memory 2220_1 to execute various instructions or process data. In one embodiment, the memory 2220_1 is DDR Double Data Rate Synchronous DRAM (SDRAM), High Bandwidth Memory (HBM), Hybrid Memory Cube (HMC), Dual In-line Memory Module (DIMM), Optane DIMM, or Non-Duty NVDIMM (NVDIMM). -Volatile DIMM) may include at least one of various types of memory devices.
일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1) 및 메모리(2220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(2200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 서로 다를 수 있다. 프로세서(2210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다. In one embodiment, the number of processors 2210_1 and the number of memories 2220_1 included in the first storage server 2200_1 may vary. In one embodiment, the processor 2210_1 and the memory 2220_1 included in the first storage server 2200_1 may form a processor-memory pair, and the processor 2210_1 and the memory 2220_1 included in the first storage server 2200_1 may form a processor-memory pair. The number can be modified in various ways. In one embodiment, the number of processors 2210_1 and the number of memories 2220_1 included in the first storage server 2200_1 may be different. Processor 2210_1 may include a single core processor or a multi-core processor.
스위치(2230_1)는 프로세서(2210_1)의 제어에 따라 프로세서(2210_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시키거나 또는 NIC(2240_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시킬 수 있다.The switch 2230_1 can selectively connect the processor 2210_1 and the storage device 2250_1 or between the NIC 2240_1 and the storage device 2250_1 under the control of the processor 2210_1.
NIC(2240_1)는 제1 스토리지 서버(2200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(2240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2210_1) 또는 스위치(2230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, NIC(2240_1)는 프로세서(2210_1), 스위치(2230_1), 및 스토리지 장치(2250_1) 중 적어도 하나와 통합될 수도 있다.The NIC 2240_1 may be configured to connect the first storage server 2200_1 with the network NT. NIC 2240_1 may include a network interface card, network adapter, etc. The NIC 2240_1 may be connected to the network NT by a wired interface, a wireless interface, a Bluetooth interface, an optical interface, etc. The NIC 2240_1 may include internal memory, DSP, a host bus interface, etc., and may be connected to the processor 2210_1 or the switch 2230_1 through the host bus interface. Host bus interfaces include Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection (PCI), and PCIe ( PCI express), NVMe (NVM express), IEEE 1394, USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC (embedded multi-media card), UFS (Universal Flash Storage) , eUFS (embedded Universal Flash Storage), CF (compact flash) card interface, etc. may include at least one of various interfaces. In one embodiment, the NIC 2240_1 may be integrated with at least one of the processor 2210_1, the switch 2230_1, and the storage device 2250_1.
스토리지 장치(2250_1)는 프로세서(2210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(2250_1)는 컨트롤러(2251_1), 불휘발성 메모리(2252_1), DRAM(2253_1), 및 인터페이스(2254_1)를 포함할 수 있다. 일 실시 예에서, 스토리지 장치(2250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.The storage device 2250_1 may store data or output the stored data under the control of the processor 2210_1. The storage device 2250_1 may include a controller 2251_1, non-volatile memory 2252_1, DRAM 2253_1, and interface 2254_1. In one embodiment, the storage device 2250_1 may further include a Secure Element (SE) for security or privacy.
컨트롤러(2251_1)는 스토리지 장치(2250_1)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(2251_1)는 SRAM을 포함할 수 있다. 컨트롤러(2251_1)는 인터페이스(2254_1)를 통해 수신된 신호들에 응답하여 불휘발성 메모리(2252_1)에 데이터를 저장하거나 또는 불휘발성 메모리(2252_1)에 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 컨트롤러(2251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 불휘발성 메모리(2252_1)를 제어하도록 구성될 수 있다.The controller 2251_1 may control overall operations of the storage device 2250_1. In one embodiment, controller 2251_1 may include SRAM. The controller 2251_1 may store data in the non-volatile memory 2252_1 or output data stored in the non-volatile memory 2252_1 in response to signals received through the interface 2254_1. In one embodiment, the controller 2251_1 may be configured to control the non-volatile memory 2252_1 based on a toggle interface or an ONFI interface.
DRAM(2253_1)은 불휘발성 메모리(2252_1)에 저장될 데이터 또는 불휘발성 메모리(2252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(2253_1)은 컨트롤러(2251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(2254_1)는 프로세서(2210_1), 스위치(2230_1), 또는 NIC(2240_1)와 컨트롤러(2251_1) 사이의 물리적 연결을 제공할 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 스토리지 장치(2250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다. The DRAM 2253_1 may be configured to temporarily store data to be stored in the non-volatile memory 2252_1 or data read from the non-volatile memory 2252_1. DRAM 2253_1 may be configured to store various data (eg, meta data, mapping data, etc.) required for the controller 2251_1 to operate. Interface 2254_1 may provide a physical connection between processor 2210_1, switch 2230_1, or NIC 2240_1 and controller 2251_1. In one embodiment, the interface 2254_1 may be implemented in a Direct Attached Storage (DAS) method that directly connects the storage device 2250_1 with a dedicated cable. In one embodiment, the interface 2254_1 may be configured based on at least one of various interfaces previously described through the host interface bus.
상술된 제1 스토리지 서버(2200_1)의 구성들은 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(2200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 각각에서, 스토리지 장치(2150_1)는 선택적으로 생략될 수 있다.The configurations of the first storage server 2200_1 described above are illustrative, and the scope of the present disclosure is not limited thereto. The configurations of the first storage server 2200_1 described above may be applied to each of other storage servers or a plurality of application servers. In one embodiment, the storage device 2150_1 may be selectively omitted from each of the plurality of application servers 2100_1 to 2100_n.
복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(2200_1~2200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.A plurality of application servers (2100_1 to 2100_n) and a plurality of storage servers (2200_1 to 2200_m) may communicate with each other through a network (NT). A network (NT) may be implemented using FC (Fibre Channel) or Ethernet. At this time, FC is a medium used for relatively high-speed data transmission, and an optical switch that provides high performance/high availability can be used. Depending on the access method of the network (NT), the storage servers 2200_1 to 2200_m may be provided as file storage, block storage, or object storage.
일 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In one embodiment, the network NT may be a storage-only network, such as a storage area network (SAN). For example, the SAN may be an FC-SAN that uses an FC network and is implemented according to the FC Protocol (FCP). Alternatively, the SAN may be an IP-SAN that uses a TCP/IP network and is implemented according to the iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In one embodiment, the network NT may be a general network such as a TCP/IP network. For example, the network (NT) may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).
일 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다. In one embodiment, at least one of the plurality of application servers (2100_1 to 2100_n) is connected to at least one of the plurality of application servers (2100_1 to 2100_n) or a plurality of storage servers (2200_1 to 2200_m) via the network (NT). It may be configured to access at least one of:
예를 들어, 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(2100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.For example, the first application server 2100_1 may store data requested by a user or client in at least one of the plurality of storage servers 2200_1 to 2200_m through the network NT. Alternatively, the first application server 2100_1 may obtain data requested by a user or client from at least one of the plurality of storage servers 2200_1 to 2200_m through the network NT. In this case, the first application server 2100_1 may be implemented as a web server or a database management system (DBMS).
즉, 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 2100_n)의 메모리(2120_n) 또는 스토리지 장치(2150_n)를 액세스할 수 있다. 또는 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(2200_1)의 메모리(2220_1) 또는 스토리지 장치(2250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(2200_1~2200_m)의 스토리지 장치들(2250_1~2250_m)로부터 스토리지 서버들(2200_1~2200_m)의 메모리들(2220_1~2220_m)을 거치거나 또는 직접 애플리케이션 서버들(2100_1~2100_n)의 메모리들(2120_1~2120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.That is, the processor 2110_1 of the first application server 2100_1 may access the memory 2120_n or the storage device 2150_n of another application server (eg, 2100_n) through the network NT. Alternatively, the processor 2110_1 of the first application server 2100_1 may access the memory 2220_1 or the storage device 2250_1 of the first storage server 2200_1 through the network NT. Through this, the first application server 2100_1 can perform various operations on data stored in other application servers 2100_2 to 2100_n or a plurality of storage servers 2200_1 to 2200_m. For example, the first application server 2100_1 executes or issues a command to move or copy data between other application servers 2100_2 to 2100_n or a plurality of storage servers 2200_1 to 2200_m. can do. In this case, the data to be moved or copied is from the storage devices 2250_1 to 2250_m of the storage servers 2200_1 to 2200_m, through the memories 2220_1 to 2220_m of the storage servers 2200_1 to 2200_m, or directly to the application server. It can be moved to the memories (2120_1 to 2120_n) of (2100_1 to 2100_n). Data transmitted through the network (NT) may be encrypted for security or privacy.
일 실시 예에서, 상술된 스토리지 서버들(2200_1~2200_m) 또는 스토리지 장치들(2150_1~2150_n, 2250_1~2250_m)은 본 개시의 실시 예에 따른 HMB 컨트롤러를 포함할 수 있다. 즉, 스토리지 서버들(2200_1~2200_m) 또는 스토리지 장치들(2150_1~2150_n, 2250_1~2250_m) 중 적어도 하나는 도 1 내지 도 25를 참조하여 설명된 방법을 기반으로 호스트 메모리 버퍼의 각 영역에 데이터 프로세싱 정책을 설정하고, 설정된 데이터 프로세싱 정책을 기반으로 인코딩/디코딩 동작을 수행하고, 변경 조건이 충족된 경우 각 영역의 데이터 프로세싱 정책을 변경할 수 있다. In one embodiment, the above-described storage servers (2200_1 to 2200_m) or storage devices (2150_1 to 2150_n, 2250_1 to 2250_m) may include an HMB controller according to an embodiment of the present disclosure. That is, at least one of the storage servers 2200_1 to 2200_m or the storage devices 2150_1 to 2150_n and 2250_1 to 2250_m processes data in each area of the host memory buffer based on the method described with reference to FIGS. 1 to 25. You can set a policy, perform encoding/decoding operations based on the set data processing policy, and change the data processing policy in each area when the change conditions are met.
상술된 실시 예들에서, 제1, 제2, 제3 등의 용어들을 사용하여 본 개시의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 개시를 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.In the above-described embodiments, components according to the technical idea of the present disclosure have been described using terms such as first, second, and third. However, terms such as first, second, third, etc. are used to distinguish constituent elements from each other and do not limit the present disclosure. For example, terms such as first, second, third, etc. do not imply order or any form of numerical meaning.
상술된 실시 예들에서, 유닛(unit), 모듈(module), 레이어(layer) 또는 블록(block)을 사용하여 본 개시의 실시 예들에 따른 구성 요소들이 참조되었다. 유닛, 모듈, 레이어 또는 블록은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP(Intellectual Property)로 등록된 회로들을 포함할 수 있다.In the above-described embodiments, components according to embodiments of the present disclosure are referred to using units, modules, layers, or blocks. A unit, module, layer, or block is a variety of hardware devices such as IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device), etc., and firmware that runs on the hardware devices. , it can be implemented in the form of software such as an application, or a combination of hardware devices and software. Additionally, a block may include circuits composed of semiconductor elements in an IC or circuits registered as IP (Intellectual Property).
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The above-described contents are specific embodiments for carrying out the present disclosure. The present disclosure will include not only the above-described embodiments, but also embodiments that are simply designed or can be easily changed. In addition, the present disclosure will also include techniques that can be easily modified and implemented using the embodiments. Accordingly, the scope of the present disclosure should not be limited to the above-described embodiments, but should be determined by the claims and equivalents of the present invention as well as the claims described below.
10: 스토리지 시스템
11: 호스트
12: 호스트 컨트롤러
13: 호스트 메모리
14: 호스트 메모리 버퍼
1000: 스토리지 장치
1180: HMB 컨트롤러10: Storage system
11: Host
12: Host Controller
13: Host memory
14: Host memory buffer
1000: storage device
1180: HMB controller
Claims (20)
외부 호스트로부터 할당된 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역을 제1 데이터 프로세싱 정책으로 설정하고, 상기 복수의 영역들 중 제2 영역을 제2 데이터 프로세싱 정책으로 설정하는 단계;
상기 복수의 데이터 프로세싱 엔진들 중 상기 제1 데이터 프로세싱 정책에 대응하는 제1 데이터 프로세싱 엔진을 기반으로, 상기 제1 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계;
상기 복수의 데이터 프로세싱 엔진들 중 상기 제2 데이터 프로세싱 정책에 대응하는 제2 데이터 프로세싱 엔진을 기반으로, 상기 제2 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계; 및
상기 제1 영역의 변경된 특성을 기반으로, 상기 제1 영역을 상기 제1 데이터 프로세싱 정책에서 제3 데이터 프로세싱 정책으로 변경하는 단계를 포함하는 동작 방법. In a method of operating a storage device including a plurality of data processing engines,
Setting a first area among a plurality of areas of a host memory buffer allocated from an external host as a first data processing policy and setting a second area among the plurality of areas as a second data processing policy;
performing an encoding operation on data to be stored in the first area based on a first data processing engine corresponding to the first data processing policy among the plurality of data processing engines;
performing an encoding operation on data to be stored in the second area based on a second data processing engine corresponding to the second data processing policy among the plurality of data processing engines; and
An operating method comprising changing the first area from the first data processing policy to a third data processing policy based on the changed characteristics of the first area.
상기 제1 영역을 상기 제1 데이터 프로세싱 정책에서 상기 제3 데이터 프로세싱 정책으로 변경하는 단계 이후에, 상기 복수의 데이터 프로세싱 엔진들 중 상기 제3 데이터 프로세싱 정책에 대응하는 제3 데이터 프로세싱 엔진을 기반으로, 상기 제1 영역에 저장될 데이터에 대한 인코딩 동작을 수행하는 단계를 더 포함하는 동작 방법. According to claim 1,
After changing the first area from the first data processing policy to the third data processing policy, based on a third data processing engine corresponding to the third data processing policy among the plurality of data processing engines, , An operating method further comprising performing an encoding operation on data to be stored in the first area.
외부 호스트로부터 할당된 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역을 제1 데이터 프로세싱 정책으로 설정하고, 상기 복수의 영역들 중 제2 영역을 제2 데이터 프로세싱 정책으로 설정하는 단계는:
상기 외부 호스트로부터 호스트 메모리 버퍼 할당 정보를 수신하는 단계;
상기 제1 영역의 정보를 기반으로 상기 제1 영역을 상기 제1 데이터 프로세싱 정책으로 설정하고, 상기 제2 영역의 정보를 기반으로 상기 제2 영역을 상기 제2 데이터 프로세싱 정책으로 설정하는 단계; 및
상기 제1 영역 및 상기 제1 데이터 프로세싱 정책을 호스트 메모리 버퍼 맵핑 테이블에 저장하고, 상기 제2 영역 및 상기 제2 데이터 프로세싱 정책을 상기 호스트 메모리 버퍼 맵핑 테이블에 저장하는 단계를 포함하는 동작 방법. According to claim 1,
The steps of setting a first area among a plurality of areas of the host memory buffer allocated from an external host as a first data processing policy and setting a second area among the plurality of areas as a second data processing policy include:
Receiving host memory buffer allocation information from the external host;
Setting the first area as the first data processing policy based on information on the first area, and setting the second area as the second data processing policy based on information on the second area; and
An operating method comprising storing the first area and the first data processing policy in a host memory buffer mapping table, and storing the second area and the second data processing policy in the host memory buffer mapping table.
상기 제1 영역의 정보는 상기 제1 영역에 대응하는 메모리 장치에 관한 특성 정보, 상기 제1 영역에 저장되는 데이터의 유형, 상기 제1 영역의 신뢰성 요구 수준, 또는 상기 제1 영역의 보안 요구 수준을 포함하고,
상기 제2 영역의 정보는 상기 제2 영역에 대응하는 메모리 장치에 관한 특성 정보, 상기 제2 영역에 저장되는 데이터의 유형, 상기 제2 영역의 신뢰성 요구 수준, 또는 상기 제2 영역의 보안 요구 수준을 포함하는 동작 방법. According to claim 3,
The information of the first area may include characteristic information about the memory device corresponding to the first area, type of data stored in the first area, reliability requirement level of the first area, or security requirement level of the first area. Including,
The information of the second area may include characteristic information about the memory device corresponding to the second area, type of data stored in the second area, reliability requirement level of the second area, or security requirement level of the second area. An operation method comprising:
상기 복수의 영역들에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링하는 단계를 더 포함하는 동작 방법. According to claim 1,
The operating method further includes monitoring whether a change condition of a data processing policy for the plurality of areas is met.
상기 모니터링하는 단계는:
상기 복수의 영역들 중 적어도 하나의 영역에 처음으로 쓰기 데이터를 전송하는 단계;
상기 적어도 하나의 영역에 대응하는 타이머를 개시하는 단계;
상기 타이머가 만료되었는지 판별하는 단계; 및
상기 타이머가 만료된 경우, 상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법. According to claim 5,
The monitoring steps are:
Transmitting write data for the first time to at least one area among the plurality of areas;
starting a timer corresponding to the at least one area;
determining whether the timer has expired; and
An operating method comprising changing a data processing policy of the at least one region when the timer expires.
상기 모니터링하는 단계는:
상기 복수의 영역들 증 적어도 하나의 영역에 대한 오류율을 모니터링 하는 단계;
상기 오류율이 기준 오류율을 초과하는지 여부를 판별하는 단계; 및
상기 오류율이 기준 오류율을 초과하는 경우, 상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하고,
상기 오류율은 상기 적어도 하나의 영역에서 읽은 데이터의 오류 비율을 가리키는 동작 방법. According to claim 5,
The monitoring steps are:
monitoring an error rate for at least one region of the plurality of regions;
determining whether the error rate exceeds a reference error rate; and
When the error rate exceeds a reference error rate, changing the data processing policy of the at least one area,
An operating method wherein the error rate indicates an error rate of data read from the at least one area.
상기 모니터링하는 단계는:
상기 외부 호스트로부터 호스트 메모리 버퍼 할당 해제 정보를 수신하는 단계;
상기 할당 해제 정보를 기반으로 상기 복수의 영역들 중 적어도 하나의 영역을 재할당하는 단계; 및
상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법. According to claim 5,
The monitoring steps are:
Receiving host memory buffer deallocation information from the external host;
Reallocating at least one area among the plurality of areas based on the de-allocation information; and
A method of operation comprising changing a data processing policy of the at least one region.
상기 모니터링하는 단계는:
상기 외부 호스트로부터 상기 복수의 영역들 중 적어도 하나의 영역에 대한 변경된 특성 정보를 수신하는 단계; 및
상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법. According to claim 5,
The monitoring steps are:
Receiving changed characteristic information for at least one area among the plurality of areas from the external host; and
A method of operation comprising changing a data processing policy of the at least one region.
제1 및 제2 데이터 프로세싱 정책은 CRC(cyclic redundancy check), 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), BCH 코드(Bose-Chaudhuri-Hocquenghem Code), RS 코드(Reed-Solomon Code), Viterbi 코드, Turbo 코드 AES(Advanced Encryption Standard), SHA(Secure Hash Algorithm), RSA(Rivest Shamir Adleman), PCIe IDE(Peripheral Component Interconnect Express Integrity and Data Encryption), 또는 PCIe DOE(Data Object Exchange) 중 적어도 하나인 동작 방법. According to claim 1,
The first and second data processing policies include CRC (cyclic redundancy check), Hamming Code, LDPC (Low Density Parity Check), BCH code (Bose-Chaudhuri-Hocquenghem Code), and RS code (Reed-Solomon Code). , Viterbi code, Turbo code, Advanced Encryption Standard (AES), Secure Hash Algorithm (SHA), Rivest Shamir Adleman (RSA), PCIe Peripheral Component Interconnect Express Integrity and Data Encryption (PCIe IDE), or PCIe Data Object Exchange (DOE). One method of operation.
상기 외부 호스트로부터 할당된 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역을 제1 데이터 프로세싱 정책으로 설정하고, 상기 복수의 영역들 중 제2 영역을 제2 데이터 프로세싱 정책으로 설정하는 단계는:
상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 제1 오류 검출 정책으로 설정하는 단계;
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 제1 오류 정정 정책으로 설정하는 단계;
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 제1 암호화 정책으로 설정하는 단계;
상기 제2 영역의 제1 유형 데이터 프로세싱 정책을 제2 오류 검출 정책으로 설정하는 단계;
상기 제2 영역의 제2 유형 데이터 프로세싱 정책을 제2 오류 정정 정책으로 설정하는 단계; 및
상기 제2 영역의 제3 유형 데이터 프로세싱 정책을 제2 암호화 정책으로 설정하는 단계를 포함하는 동작 방법. According to claim 1,
Setting a first area among a plurality of areas of the host memory buffer allocated from the external host to a first data processing policy and setting a second area among the plurality of areas to a second data processing policy include:
setting a first type data processing policy of the first area as a first error detection policy;
setting a second type data processing policy of the first region as a first error correction policy;
setting a third type data processing policy of the first area as a first encryption policy;
setting a first type data processing policy of the second area as a second error detection policy;
setting a second type data processing policy of the second area as a second error correction policy; and
A method of operation comprising setting a third type data processing policy of the second region as a second encryption policy.
상기 제1 영역의 변경된 특성을 기반으로, 상기 제1 영역을 상기 제1 데이터 프로세싱 정책에서 제3 데이터 프로세싱 정책으로 변경하는 단계는:
상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 제3 오류 검출 정책으로 변경하는 단계;
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 제3 오류 정정 정책으로 변경하는 단계; 및
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 제3 암호화 정책으로 변경하는 단계를 포함하는 동작 방법.According to claim 11,
The step of changing the first area from the first data processing policy to the third data processing policy based on the changed characteristics of the first area is:
changing a first type data processing policy of the first area to a third error detection policy;
changing a second type data processing policy of the first region to a third error correction policy; and
A method of operation comprising changing a third type data processing policy of the first region to a third encryption policy.
외부 호스트로부터 호스트 메모리 버퍼의 할당 정보를 수신하는 단계;
상기 호스트 메모리 버퍼의 할당 정보를 기반으로, 상기 호스트 메모리 버퍼의 복수의 영역들 중 제1 영역의 제1 유형 데이터 프로세싱 정책을 선택하는 단계;
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 선택하는 단계;
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 선택하는 단계;
복수의 데이터 프로세싱 엔진들 중 상기 제1 유형 데이터 프로세싱 정책에 대응하는 제1 오류 검출 엔진, 복수의 데이터 프로세싱 엔진들 중 상기 제2 유형 데이터 프로세싱 정책에 대응하는 제1 오류 정정 엔진, 및 복수의 데이터 프로세싱 엔진들 중 상기 제3 유형 데이터 프로세싱 정책에 대응하는 제1 암호화 엔진을 기반으로 쓰기 데이터에 대한 인코딩 동작을 수행하여, 상기 제1 영역으로 인코딩된 쓰기 데이터를 전송하는 단계;
상기 제1 오류 검출 엔진, 상기 제1 오류 정정 엔진, 및 상기 제1 암호화 엔진을 기반으로 상기 제1 영역에서 읽은 데이터에 대한 디코딩 동작을 수행하는 단계;
상기 제1 영역의 데이터 프로세싱 정책 변경 조건이 충족되었는지 모니터링 하는 단계; 및
상기 데이터 프로세싱 정책 변경 조건이 충족된 경우, 상기 제1 영역의 제1 내지 제3 유형의 데이터 프로세싱 정책들을 변경하는 단계를 포함하는 동작 방법. In a method of operating a storage device including a plurality of data processing engines,
Receiving allocation information of a host memory buffer from an external host;
selecting a first type data processing policy for a first area among a plurality of areas of the host memory buffer based on allocation information of the host memory buffer;
selecting a second type data processing policy for the first region;
selecting a third type data processing policy for the first region;
A first error detection engine corresponding to the first type data processing policy among the plurality of data processing engines, a first error correction engine corresponding to the second type data processing policy among the plurality of data processing engines, and a plurality of data performing an encoding operation on write data based on a first encryption engine corresponding to the third type data processing policy among the processing engines, and transmitting the encoded write data to the first area;
performing a decoding operation on data read from the first area based on the first error detection engine, the first error correction engine, and the first encryption engine;
monitoring whether a data processing policy change condition of the first area is met; and
An operating method comprising changing first to third types of data processing policies of the first area when the data processing policy change condition is met.
제1 영역의 제1 유형 데이터 프로세싱 정책을 선택하는 단계는:
상기 제1 영역의 상기 제1 유형 데이터 프로세싱 정책을 적용할지 여부를 판별하는 단계; 및
상기 제1 영역의 상기 제1 유형 데이터 프로세싱 정책을 적용하기로 판별된 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 복수의 오류 검출 정책들 중 하나로 선택하는 단계를 포함하고,
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 선택하는 단계는:
상기 제1 영역의 상기 제2 유형 데이터 프로세싱 정책을 적용할지 여부를 판별하는 단계; 및
상기 제1 영역의 상기 제2 유형 데이터 프로세싱 정책을 적용하기로 판별된 경우, 상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 복수의 오류 정정 정책들 중 하나로 선택하는 단계를 포함하고,
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 선택하는 단계는:
상기 제1 영역의 상기 제3 유형 데이터 프로세싱 정책을 적용할지 여부를 판별하는 단계; 및
상기 제1 영역의 상기 제3 유형 데이터 프로세싱 정책을 적용하기로 판별된 경우, 상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 복수의 암호화 정책들 중 상기 하나로 선택하는 단계를 포함하는 동작 방법. According to claim 13,
Selecting a first type data processing policy for a first region includes:
determining whether to apply the first type data processing policy of the first region; and
When it is determined to apply the first type data processing policy of the first area, selecting the first type data processing policy of the first area as one of a plurality of error detection policies,
Selecting a second type data processing policy for the first region includes:
determining whether to apply the second type data processing policy of the first region; and
When it is determined to apply the second type data processing policy of the first area, selecting the second type data processing policy of the first area as one of a plurality of error correction policies,
Selecting a third type data processing policy for the first region includes:
determining whether to apply the third type data processing policy of the first region; and
When it is determined to apply the third type data processing policy of the first area, selecting the third type data processing policy of the first area as the one of a plurality of encryption policies.
상기 복수의 오류 검출 정책은 CRC(cyclic redundancy check), 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), 또는 BCH 코드(Bose-Chaudhuri-Hocquenghem Code)를 포함하고,
상기 복수의 오류 정정 정책은 해밍 코드(Hamming Code), LDPC(Low Density Parity Check), BCH 코드(Bose-Chaudhuri-Hocquenghem Code), RS 코드(Reed-Solomon Code), Viterbi 코드, 또는 Turbo 코드를 포함하고,
상기 복수의 암호화 정책은 AES(Advanced Encryption Standard), SHA(Secure Hash Algorithm), 또는 RSA(Rivest Shamir Adleman)을 포함하는 동작 방법. According to claim 14,
The plurality of error detection policies include cyclic redundancy check (CRC), Hamming Code, Low Density Parity Check (LDPC), or Bose-Chaudhuri-Hocquenghem Code (BCH code),
The plurality of error correction policies include Hamming Code, Low Density Parity Check (LDPC), Bose-Chaudhuri-Hocquenghem Code (BCH Code), Reed-Solomon Code (RS Code), Viterbi Code, or Turbo Code. do,
An operating method wherein the plurality of encryption policies include Advanced Encryption Standard (AES), Secure Hash Algorithm (SHA), or Rivest Shamir Adleman (RSA).
상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 복수의 오류 검출 정책들 중 하나로 선택하는 단계는:
상기 제1 영역의 검출 요구치를 계산하는 단계;
상기 검출 요구치 및 복수의 오류 검출 정책들 중 제1 오류 검출 정책에 대응하는 제1 임계값과 비교하는 단계;
상기 검출 요구치가 상기 제1 임계값 보다 작은 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 상기 제1 오류 검출 정책으로 선택하는 단계;
상기 검출 요구치가 상기 제1 임계값 보다 크거나 같은 경우, 상기 검출 요구치 및 복수의 오류 검출 정책들 중 제2 오류 검출 정책에 대응하는 제2 임계값과 비교하는 단계;
상기 검출 요구치가 상기 제2 임계값 보다 작은 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 상기 제2 오류 검출 정책으로 선택하는 단계;
상기 검출 요구치가 상기 제2 임계값 보다 크거나 같은 경우, 상기 검출 요구치 및 복수의 오류 검출 정책들 중 제3 오류 검출 정책에 대응하는 제3 임계값과 비교하는 단계;
상기 검출 요구치가 상기 제3 임계값 보다 작은 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 상기 제3 오류 검출 정책으로 선택하는 단계; 및
상기 검출 요구치가 상기 제3 임계값 보다 크거나 같은 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 제4 오류 검출 정책으로 선택하는 단계를 포함하는 동작 방법. According to claim 14,
Selecting the first type data processing policy of the first region as one of a plurality of error detection policies includes:
calculating a detection request value of the first area;
comparing the detection request with a first threshold corresponding to a first error detection policy among a plurality of error detection policies;
If the detection request is less than the first threshold, selecting a first type data processing policy of the first region as the first error detection policy;
When the detection request is greater than or equal to the first threshold, comparing the detection request with a second threshold corresponding to a second error detection policy among a plurality of error detection policies;
If the detection request is less than the second threshold, selecting a first type data processing policy of the first region as the second error detection policy;
When the detection request is greater than or equal to the second threshold, comparing the detection request with a third threshold corresponding to a third error detection policy among a plurality of error detection policies;
If the detection request is less than the third threshold, selecting a first type data processing policy of the first region as the third error detection policy; and
When the detection request is greater than or equal to the third threshold, selecting a first type data processing policy of the first region as a fourth error detection policy.
상기 제1 영역의 데이터 프로세싱 정책 변경 조건이 충족되었는지 모니터링 하는 단계는
상기 제1 영역에 대응하는 타이머가 만료되었는지 판별하는 단계;
상기 제1 영역의 오류율이 기준 오류율을 초과하는지 판별하는 단계;
상기 외부 호스트로부터 할당 해제 정보를 수신하는 단계; 및
상기 외부 호스트로부터 상기 제1 영역의 변경된 특성 정보를 수신하는 단계를 포함하는 동작 방법. According to claim 13,
The step of monitoring whether the data processing policy change conditions of the first area are met is
determining whether a timer corresponding to the first area has expired;
determining whether the error rate of the first area exceeds a reference error rate;
Receiving de-allocation information from the external host; and
An operating method comprising receiving changed characteristic information of the first area from the external host.
상기 제1 영역의 제1 내지 제3 유형의 데이터 프로세싱 정책들을 변경하는 단계는:
상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 변경할지 여부를 판별하는 단계;
상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 변경하기로 판별된 경우, 상기 제1 영역의 제1 유형 데이터 프로세싱 정책을 복수의 오류 검출 정책들 중 하나로 선택하는 단계;
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 변경할지 여부를 판별하는 단계;
상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 변경하기로 판별된 경우, 상기 제1 영역의 제2 유형 데이터 프로세싱 정책을 복수의 오류 정정 정책들 중 하나로 선택하는 단계;
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 변경할지 여부를 판별하는 단계; 및
상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 변경하기로 판별된 경우, 상기 제1 영역의 제3 유형 데이터 프로세싱 정책을 복수의 암호화 정책들 중 하나로 선택하는 단계를 포함하는 동작 방법. According to claim 13,
The step of changing the first to third types of data processing policies of the first area is:
determining whether to change a first type data processing policy of the first area;
When it is determined to change the first type data processing policy of the first area, selecting the first type data processing policy of the first area as one of a plurality of error detection policies;
determining whether to change a second type data processing policy of the first region;
when it is determined to change the second type data processing policy of the first area, selecting the second type data processing policy of the first area as one of a plurality of error correction policies;
determining whether to change a third type data processing policy of the first area; and
An operating method comprising selecting the third type data processing policy of the first area as one of a plurality of encryption policies when it is determined to change the third type data processing policy of the first area.
상기 메모리 장치와 관련되는 정보를 외부 호스트 메모리 버퍼에 저장하고, 상기 외부 호스트 메모리 버퍼를 관리하는 컨트롤러를 포함하되,
상기 컨트롤러는:
상기 외부 호스트 메모리 버퍼의 복수의 영역들 중 적어도 하나의 영역에 대한 데이터 프로세싱 정책을 선택하고, 상기 적어도 하나의 영역 및 대응하는 데이터 프로세싱 정책을 호스트 메모리 버퍼 맵핑 테이블로 관리하고, 상태 관리자의 변경 신호에 응답하여, 상기 적어도 하나의 영역에 대한 데이터 프로세싱 정책을 변경하는 호스트 메모리 버퍼 관리자;
복수의 데이터 프로세싱 엔진들을 포함하고, 상기 호스트 메모리 버퍼 맵핑 테이블을 기반으로 복수의 데이터 프로세싱 엔진들 중 적어도 하나의 엔진을 선택하고, 상기 적어도 하나의 엔진을 기반으로 데이터에 대한 인코딩 동작을 수행하여 인코딩된 데이터를 생성하고, 인코딩된 데이터를 상기 외부 호스트 메모리 버퍼로 전송하고, 상기 적어도 하나의 엔진을 기반으로 상기 외부 호스트 메모리 버퍼에서 읽은 데이터에 대한 디코딩 동작을 수행하는 호스트 메모리 버퍼 프로세싱 엔진; 및
상기 적어도 하나의 영역에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링하고, 상기 변경 조건이 충족된 경우, 상기 호스트 메모리 버퍼 관리자로 상기 변경 신호를 출력하는 상태 관리자를 포함하는 스토리지 장치. memory device; and
A controller that stores information related to the memory device in an external host memory buffer and manages the external host memory buffer,
The controller:
Select a data processing policy for at least one area among the plurality of areas of the external host memory buffer, manage the at least one area and the corresponding data processing policy with a host memory buffer mapping table, and send a change signal to the state manager. In response, a host memory buffer manager to change a data processing policy for the at least one region;
Encoding by comprising a plurality of data processing engines, selecting at least one engine from among the plurality of data processing engines based on the host memory buffer mapping table, and performing an encoding operation on data based on the at least one engine. a host memory buffer processing engine that generates encoded data, transmits encoded data to the external host memory buffer, and performs a decoding operation on data read from the external host memory buffer based on the at least one engine; and
A storage device comprising a state manager that monitors whether a change condition of a data processing policy for the at least one area is satisfied, and outputs the change signal to the host memory buffer manager when the change condition is satisfied.
상기 변경 조건은 상기 적어도 하나의 영역에 대응하는 타이머가 만료된 경우, 상기 적어도 하나의 영역의 오류율이 기준 오류율을 초과하는 경우, 외부 호스트로부터 할당 해제 정보를 수신한 경우, 또는 상기 적어도 하나의 영역의 변경된 특성 정보를 상기 외부 호스트로부터 수신한 경우에 충족되는 스토리지 장치. According to claim 19,
The change condition may be when a timer corresponding to the at least one area expires, when the error rate of the at least one area exceeds a reference error rate, when deallocation information is received from an external host, or when the at least one area A storage device that is satisfied when changed characteristic information of is received from the external host.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/958,593 US20230153026A1 (en) | 2021-11-15 | 2022-10-03 | Storage device and operation method thereof |
TW111139851A TW202321897A (en) | 2021-11-15 | 2022-10-20 | Storage device and operation method thereof |
CN202211299316.6A CN116126745A (en) | 2021-11-15 | 2022-10-21 | Memory device and method of operating the same |
EP22203189.0A EP4180975A1 (en) | 2021-11-15 | 2022-10-24 | Storage device and operation method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210157057 | 2021-11-15 | ||
KR1020210157057 | 2021-11-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230071018A KR20230071018A (en) | 2023-05-23 |
KR102588751B1 true KR102588751B1 (en) | 2023-10-16 |
Family
ID=86544370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220029967A KR102588751B1 (en) | 2021-11-15 | 2022-03-10 | Storage device and operation method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102588751B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021043708A (en) * | 2019-09-11 | 2021-03-18 | キオクシア株式会社 | Memory system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200046264A (en) * | 2018-10-24 | 2020-05-07 | 삼성전자주식회사 | Data storage device using host memory buffer and method of operating the same |
KR20200088713A (en) * | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | Memory controller and operating method thereof |
-
2022
- 2022-03-10 KR KR1020220029967A patent/KR102588751B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021043708A (en) * | 2019-09-11 | 2021-03-18 | キオクシア株式会社 | Memory system |
Also Published As
Publication number | Publication date |
---|---|
KR20230071018A (en) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797181B2 (en) | Hardware accessible external memory | |
US11360679B2 (en) | Paging of external memory | |
US11281601B2 (en) | Multi-device storage system with hosted services on peer storage devices | |
CN111177040B (en) | Storage device for sharing host memory, operation method thereof and storage system | |
US11086525B2 (en) | Resilient external memory | |
US9047178B2 (en) | Auto-commit memory synchronization | |
US9223662B2 (en) | Preserving data of a volatile memory | |
US9026845B2 (en) | System and method for failure protection in a storage array | |
JP6460940B2 (en) | Storage device and data saving method | |
KR20200041815A (en) | System for supporting erasure code data protection with embedded pcie switch inside fpga+ssd | |
US10802958B2 (en) | Storage device, its controlling method, and storage system having the storage device | |
KR102588751B1 (en) | Storage device and operation method thereof | |
EP4180975A1 (en) | Storage device and operation method thereof | |
US20230152988A1 (en) | Storage device and operation method thereof | |
CN116126745A (en) | Memory device and method of operating the same | |
US20180293137A1 (en) | Distributed storage system | |
KR20230071023A (en) | Storage device and operation method thereof | |
KR20230064674A (en) | Storage device and operating method thereof | |
TW202338564A (en) | Memory controller and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |