KR102588751B1 - Storage device and operation method thereof - Google Patents

Storage device and operation method thereof Download PDF

Info

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
Application number
KR1020220029967A
Other languages
Korean (ko)
Other versions
KR20230071018A (en
Inventor
이란희
고병철
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US17/958,593 priority Critical patent/US20230153026A1/en
Priority to TW111139851A priority patent/TW202321897A/en
Priority to CN202211299316.6A priority patent/CN116126745A/en
Priority to EP22203189.0A priority patent/EP4180975A1/en
Publication of KR20230071018A publication Critical patent/KR20230071018A/en
Application granted granted Critical
Publication of KR102588751B1 publication Critical patent/KR102588751B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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/79Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data 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.

Figure R1020220029967
Figure R1020220029967

Description

스토리지 장치 및 이의 동작 방법{STORAGE DEVICE AND OPERATION METHOD THEREOF}Storage device and method of operation thereof {STORAGE DEVICE AND OPERATION METHOD THEREOF}

본 개시는 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 장치 및 이의 동작 방법에 관한 것이다.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 storage system 10 may include a host 11 and a storage device 1000. In one embodiment, the storage system 10 is an information processing device configured to process various information and store the processed information, such as a personal computer, laptop, server, workstation, smartphone, tablet PC, digital camera, black box, etc. It could be one of these.

호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)에 데이터(DATA)를 저장하거나 또는 스토리지 장치(1000)에 저장된 데이터(DATA)를 읽기 위한, 요청(RQ; request)을 스토리지 장치(1000)로 전송할 수 있다. 일 실시 예에서, 호스트(11)는 스토리지 시스템(10)을 제어하도록 구성된 중앙 처리 유닛(CPU; central processing unit), 애플리케이션 프로세서(AP; application processor)와 같은 프로세서 코어이거나 또는 네트워크를 통해 연결된 컴퓨팅 노드일 수 있다. The host 11 can control overall operations of the storage system 10. For example, the host 11 stores data (DATA) in the storage device 1000 or sends a request (RQ) to the storage device 1000 to read data (DATA) stored in the storage device 1000. It can be sent to . In one embodiment, the host 11 is a processor core such as a central processing unit (CPU), an application processor (AP) configured to control the storage system 10, or a computing node connected through a network. It can be.

일 실시 예에서, 호스트(11)는 호스트 컨트롤러(12) 및 호스트 메모리(13)를 포함할 수 있다. 호스트 컨트롤러(12)는 호스트(11)의 제반 동작을 제어하거나 또는 호스트(11) 측에서, 스토리지 장치(1000)를 제어하도록 구성된 장치일 수 있다. 호스트 메모리(13)는 호스트(11)에서 사용되는 버퍼 메모리, 캐시 메모리 또는 동작 메모리일 수 있다. 호스트 메모리(13)는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 호스트 메모리(13)는 호스트(11)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다. In one embodiment, the host 11 may include a host controller 12 and host memory 13. The host controller 12 may be a device configured to control overall operations of the host 11 or to control the storage device 1000 on the host 11 side. The host memory 13 may be a buffer memory, cache memory, or operating memory used in the host 11. The host memory 13 may be loaded with application programs, file systems, device drivers, etc. The host memory 13 may be loaded with various software or data running on the host 11 .

일 실시 예에서, 호스트(11)는 호스트 메모리(13)의 일부 영역을 스토리지 장치(1000)의 버퍼로 할당할 수 있다. 이하에서, 스토리지 장치(1000)의 버퍼로 할당된 호스트 메모리(13)의 일부 영역을 호스트 메모리 버퍼(HMB; Host memory buffer)(14)로 칭하기로 한다. In one embodiment, the host 11 may allocate a portion of the host memory 13 as a buffer of the storage device 1000. Hereinafter, a partial area of the host memory 13 allocated as a buffer of the storage device 1000 will be referred to as a host memory buffer (HMB) 14.

일 실시 예에서, 호스트 메모리 버퍼(14)는 스토리지 장치(1000)가 호스트 메모리(13)를 버퍼로 이용하기 위해 할당될 수 있다. 호스트 메모리 버퍼(14)는 스토리지 장치(1000)에 의해 관리될 수 있다. 호스트 메모리 버퍼(14)는 스토리지 장치(1000)의 데이터가 저장될 수 있다. 예를 들어, 스토리지 장치(1000)의 메타 데이터 또는 맵핑 테이블 등은 호스트 메모리 버퍼(14)에 저장될 수 있다. 맵핑 테이블은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 맵핑 정보를 포함할 수 있다. In one embodiment, the host memory buffer 14 may be allocated so that the storage device 1000 uses the host memory 13 as a buffer. The host memory buffer 14 may be managed by the storage device 1000. The host memory buffer 14 may store data of the storage device 1000. For example, metadata or mapping tables of the storage device 1000 may be stored in the host memory buffer 14. The mapping table may include mapping information between the logical address from the host 11 and the physical address of the storage device 1000.

스토리지 장치(1000)는 호스트(11)의 제어에 따라 동작할 수 있다. 스토리지 장치(1000)는 스토리지 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다. 스토리지 컨트롤러(1100)는 호스트(11)의 제어에 따라 불휘발성 메모리 장치(1200)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다. 일 실시 예에서, 스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다.The storage device 1000 may operate under the control of the host 11. The storage device 1000 may include a storage controller 1100 and a non-volatile memory device 1200. The storage controller 1100 may store data in the non-volatile memory device 1200 or read data stored in the non-volatile memory device 1200 under the control of the host 11. In one embodiment, the storage controller 1100 may perform various management operations to efficiently use the non-volatile memory device 1200.

스토리지 컨트롤러(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 storage controller 1100 includes a central processing unit (CPU) 1110, a flash translation layer (FTL) 1120, an error correction code (ECC) engine 1130, and an AES. (advanced encryption standard) engine 1140, buffer memory 1150, host interface circuit 1160, memory interface circuit 1170, and HMB controller 1180.

CPU(1110)는 스토리지 컨트롤러(1100)의 제반 동작을 제어할 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 동작을 수행할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)의 저장 공간을 논리 어드레스로서 관리할 수 있다. FTL(1120)은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 어드레스 맵핑을 관리하도록 구성될 수 있다. FTL(1120)은 웨어 레벨링 동작을 수행하여, 불휘발성 메모리 장치(1200)의 메모리 블록들 중 특정 메모리 블록에 대한 과도한 열화를 방지할 수 있다. FTL(1120)의 웨어 레벨링 동작에 의해 불휘발성 메모리 장치(1200)의 수명이 향상될 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)에 대한 가비지 컬렉션을 수행하여, 자유 메모리 블록을 확보할 수 있다.The CPU 1110 can control overall operations of the storage controller 1100. The FTL 1120 can perform various operations to efficiently use the non-volatile memory device 1200. For example, the host 11 may manage the storage space of the storage device 1000 as a logical address. FTL 1120 may be configured to manage address mapping between a logical address from the host 11 and a physical address of the storage device 1000. The FTL 1120 may perform a wear leveling operation to prevent excessive deterioration of a specific memory block among the memory blocks of the non-volatile memory device 1200. The lifespan of the non-volatile memory device 1200 may be improved by the wear leveling operation of the FTL 1120. The FTL 1120 may secure a free memory block by performing garbage collection on the non-volatile memory device 1200.

일 실시 예에서, FTL(1120)은 소프트웨어 또는 하드웨어 형태로 구현될 수 있다. FTL(1120)이 소프트웨어 형태로 구현되는 경우, FTL(1120)과 관련된 프로그램 코드 또는 정보는 버퍼 메모리(1150)에 저장될 수 있고, CPU(1110)에 의해 실행될 수 있다. FTL(1120)이 하드웨어 형태로 구현되는 경우, FTL(1120)의 동작을 수행하도록 구성된 하드웨어 가속기가 CPU(1110)와 별도로 구비될 수 있다.In one embodiment, FTL 1120 may be implemented in software or hardware form. When the FTL 1120 is implemented in software form, program code or information related to the FTL 1120 may be stored in the buffer memory 1150 and executed by the CPU 1110. When the FTL (1120) is implemented in hardware, a hardware accelerator configured to perform the operation of the FTL (1120) may be provided separately from the CPU (1110).

ECC 엔진(1130)은 불휘발성 메모리 장치(1200)로부터 읽은 데이터에 대한 오류 검출 및 오류 정정을 수행할 수 있다. 예를 들어, ECC 엔진(1130)은 불휘발성 메모리 장치(1200)에 기입될 데이터에 대한 오류 정정 코드(또는 패리티 비트)를 생성할 수 있다. 생성된 오류 정정 코드(또는 패리티 비트)는 기입될 데이터와 함께 불휘발성 메모리 장치(1200)에 저장될 수 있다. 이후에, 불휘발성 메모리 장치(1200)로부터 기입된 데이터가 독출될 경우, ECC 엔진(1130)은 독출된 데이터 및 대응하는 오류 정정 코드(또는 대응하는 패리티 비트)를 기반으로 독출된 데이터의 오류를 검출하고 정정할 수 있다. The ECC engine 1130 may detect and correct errors on data read from the non-volatile memory device 1200. For example, the ECC engine 1130 may generate an error correction code (or parity bit) for data to be written to the non-volatile memory device 1200. The generated error correction code (or parity bit) may be stored in the non-volatile memory device 1200 along with the data to be written. Afterwards, when written data is read from the non-volatile memory device 1200, the ECC engine 1130 corrects errors in the read data based on the read data and the corresponding error correction code (or corresponding parity bit). It can be detected and corrected.

AES 엔진(1140)은 호스트(11) 또는 불휘발성 메모리 장치(1200)로부터 수신된 데이터에 대한 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작을 수행할 수 있다. 일 실시 예에서, 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작은 대칭 키 알고리즘(symmetric-key algorithm)을 기반으로 수행될 수 있다. The AES engine 1140 may perform an encryption or decryption operation on data received from the host 11 or the non-volatile memory device 1200. In one embodiment, an encryption operation or a decryption operation may be performed based on a symmetric-key algorithm.

버퍼 메모리(1150)는 스토리지 컨트롤러(1100)로 입력된 데이터를 임시 저장하도록 구성된 쓰기 버퍼 또는 읽기 버퍼일 수 있다. 또는 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 예를 들어, 버퍼 메모리(1150)는 FTL(1120)에 의해 관리되는 매핑 테이블을 저장할 수 있다. 또는 버퍼 메모리(1150)는 FTL(1120)과 관련된 소프트웨어, 펌웨어, 또는 정보를 저장할 수 있다. 좀 더 구체적으로, 버퍼 메모리(1150)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT), 프로세싱 메타 테이블(PMT)을 저장할 수 있다. 버퍼 메모리(1150)는 메모리 블록들에 대한 메타 데이터를 저장할 수 있다. The buffer memory 1150 may be a write buffer or a read buffer configured to temporarily store data input to the storage controller 1100. Alternatively, the buffer memory 1150 may be configured to store various information necessary for the storage controller 1100 to operate. For example, the buffer memory 1150 may store a mapping table managed by the FTL 1120. Alternatively, the buffer memory 1150 may store software, firmware, or information related to the FTL 1120. More specifically, the buffer memory 1150 may store an HMB allocation table (HMBAT), an HMB state table (HMBST), an HMB mapping table (HMBMT), and a processing meta table (PMT). The buffer memory 1150 may store metadata about memory blocks.

일 실시 예에서, 버퍼 메모리(1150)는 SRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 버퍼 메모리(1150)는 DRAM, MRAM, PRAM 등과 같은 다양한 종류의 메모리 장치로 구현될 수 있다. 도면의 간결성 및 설명의 편의를 위해, 버퍼 메모리(1150)가 스토리지 컨트롤러(1100)에 포함되는 것으로 도 1에 도시되어 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)의 외부에 위치할 수 있고, 스토리지 컨트롤러(1100)는 별도의 통신 채널 또는 인터페이스를 통해 버퍼 메모리와 통신할 수 있다. In one embodiment, the buffer memory 1150 may be SRAM, but the scope of the present disclosure is not limited thereto, and the buffer memory 1150 may be implemented with various types of memory devices such as DRAM, MRAM, PRAM, etc. . For brevity of drawings and convenience of description, the buffer memory 1150 is shown in FIG. 1 as being included in the storage controller 1100, but the scope of the present disclosure is not limited thereto. The buffer memory 1150 may be located outside the storage controller 1100, and the storage controller 1100 may communicate with the buffer memory through a separate communication channel or interface.

호스트 인터페이스 회로(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 host interface circuit 1160 may be configured to communicate with the host 11 according to a predetermined interface protocol. In one embodiment, the predetermined interface protocol includes an Advanced Technology Attachment (ATA) interface, a Serial ATA (SATA) interface, an external SATA (e-SATA) interface, a Small Computer Small Interface (SCSI) interface, and a Serial Attached SCSI (SAS) interface. , Peripheral Component Interconnection (PCI) interface, PCI express (PCIe) interface, NVM express (NVMe) interface, IEEE 1394, universal serial bus (USB) interface, secure digital (SD) card, multi-media card (MMC) interface, It may include at least one of various interface protocols, such as an embedded multi-media card (eMMC) interface, a Universal Flash Storage (UFS) interface, an embedded Universal Flash Storage (eUFS) interface, a compact flash (CF) card interface, or a network interface. You can. The host interface circuit 1160 may receive a signal based on a predetermined interface protocol from the host 11 and operate based on the received signal. Alternatively, the host interface circuit 1160 may transmit a signal based on a predetermined interface protocol to the host 11.

메모리 인터페이스 회로(1170)는 미리 정해진 인터페이스 규약에 따라 불휘발성 메모리 장치(1200)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 토글 인터페이스, 온파이(ONFI) 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, 메모리 인터페이스 회로(1170)는 토글 인터페이스를 기반으로 불휘발성 메모리 장치(1200)와 통신할 수 있다. 이 경우, 메모리 인터페이스 회로(1170)는 복수의 채널들(CHs)을 통해 불휘발성 메모리 장치(1200)와 통신할 수 있다. 일 실시 예에서, 복수의 채널들(CHs) 각각은 다양한 제어 신호들(예를 들어, /CE, CLE, ALE, /WE, /RE, R/B 등), 데이터 신호들(DQ), 및 데이터 스트로브 신호(DQS)를 전송하도록 구성된 복수의 신호 라인들을 포함할 수 있다.The memory interface circuit 1170 may be configured to communicate with the non-volatile memory device 1200 according to a predetermined interface protocol. In one embodiment, the predetermined interface protocol may include at least one of various interface protocols, such as a toggle interface, an ONFI interface, etc. In one embodiment, the memory interface circuit 1170 may communicate with the non-volatile memory device 1200 based on a toggle interface. In this case, the memory interface circuit 1170 may communicate with the non-volatile memory device 1200 through a plurality of channels (CHs). In one embodiment, each of the plurality of channels (CHs) includes various control signals (e.g., /CE, CLE, ALE, /WE, /RE, R/B, etc.), data signals (DQ), and It may include a plurality of signal lines configured to transmit a data strobe signal (DQS).

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 controller 1180 can manage the HMB 14. The HMB controller 1180 can store and manage various data using the HMB 14 as a buffer. The HMB controller 1180 may store encoded data for data reliability or security. For example, the HMB controller 1180 may perform an encoding operation on data based on a data processing policy (or algorithm). The HMB controller 1180 may store encoded data in the HMB 14. The HMB controller 1180 can read read data from the HMB 14. That is, the HMB controller 1180 can receive read data from the HMB 14. If the read data is encoded, the HMB controller 1180 may perform a decoding operation on the read data.

일 실시 예에서, HMB 컨트롤러(1180)는 호스트(11)로부터 제공된 HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할하여 관리할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각에 데이터 프로세싱 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 복수의 영역들 각각에 대하여 동일한 또는 상이한 데이터 프로세싱 정책들을 설정할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각의 특성, 다양한 정보들을 기반으로, 복수의 영역들 각각에 대한 데이터 프로세싱 정책들을 선택할 수 있다 In one embodiment, the HMB controller 1180 may divide and manage the HMB 14 into a plurality of areas based on HMB allocation information provided by the host 11. The HMB controller 1180 may select a data processing policy for each of the plurality of areas. For example, the HMB controller 1180 may set the same or different data processing policies for each of a plurality of areas. The HMB controller 1180 may select data processing policies for each of the plurality of areas based on the characteristics of each of the plurality of areas and various information.

일 실시 예에서, HMB 컨트롤러(1180)는 HMB(14)의 영역별 신뢰성 수준 및 보안 수준을 기반으로 HMB(14)의 영역별 데이터 프로세싱 정책을 설정할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 저장될 데이터의 유형을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 요구되는 데이터의 신뢰성 또는 보안을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성을 기반으로 데이터 프로세싱 정책을 설정할 수 있다. In one embodiment, the HMB controller 1180 may set a data processing policy for each region of the HMB 14 based on the reliability level and security level for each region of the HMB 14. For example, the HMB controller 1180 can set a data processing policy based on the type of data to be stored in a specific area. The HMB controller 1180 can set a data processing policy based on the reliability or security of data required for a specific area. The HMB controller 1180 may set a data processing policy based on the characteristics of the memory device corresponding to a specific area.

예를 들어, 데이터 프로세싱 정책은 오류 검출 정책, 오류 정정 정책, 암호화 정책을 포함할 수 있다. 예를 들어, 오류 검출 정책은 데이터가 오류 없이 전송되었는지 확인하기 위한 기술일 수 있다. 오류 정정 정책은 데이터의 오류가 발생한 경우, 데이터의 오류를 정정하기 위한 기술일 수 있다. 암호화 정책은 사용자에 대한 정보 보호 또는 보안성을 제공하기 위하여 데이터를 암호화하기 위한 기술일 수 있다. 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 controller 1180 may change the corresponding data processing policy when change conditions for each of a plurality of areas are met. For example, HMB controller 1180 may change the data processing policy for a particular region during operation (e.g., during runtime). The HMB controller 1180 changes when the characteristics of the memory device corresponding to a specific area change, the type of data to be stored in a specific area changes, the level of reliability requirements for a specific area changes, or the level of security requirements for a specific area changes. If there is a change, it can be determined that the change conditions for the data processing policy have been met.

일반 스토리지 장치는 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 entire HMB 14. That is, unlike the storage device 1000 according to an embodiment of the present disclosure, a general storage device cannot select an appropriate data processing policy for each area of the HMB 14 and has no choice but to use the same data processing policy. Accordingly, the storage device 1000 has a high error correction capability for all data to be stored in the HMB 14, even if a data processing policy with a high error correction capability is required for only some of the data to be stored in the HMB 14. A data processing policy must be used. By using a data processing policy with high error correction capability, the actual usage space of the HMB 14 may be reduced due to parity data. Additionally, in the case of a data processing policy with high error correction capability, latency may increase by performing complex calculations.

그러나, 본 개시의 실시 예에 따른 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 데이터 프로세싱 정책을 선택할 수 있다. 예를 들어, 스토리지 장치(1000)는 데이터 신뢰성 요구도가 높은 영역에 대해 오류 정정 능력이 높은 데이터 프로세싱 정책을 설정하고, 데이터 신뢰성 요구도가 낮은 영역에 대해 오류 정정 능력이 낮은 데이터 프로세싱 정책을 설정할 수 있다. 이에 따라, HMB(14)에 저장될 패리티 데이터가 감소하므로, HMB(14)의 실제 사용 공간이 증가할 수 있다. 또한, 일부 데이터에 대해서만 오류 정정 능력이 높은 데이터 프로세싱 정책을 사용하고, 나머지 데이터에 대해서는 오류 정정 능력이 낮은 데이터 프로세싱 정책을 사용하므로, 스토리지 장치(1000)의 성능이 향상될 수 있다. However, the storage device 1000 according to an embodiment of the present disclosure can select a data processing policy appropriate for each area of the HMB 14. For example, the storage device 1000 may set a data processing policy with high error correction capability for an area with high data reliability requirements, and set a data processing policy with low error correction capability for an area with low data reliability requirements. . Accordingly, the parity data to be stored in the HMB 14 decreases, so the actual space used in the HMB 14 may increase. Additionally, because a data processing policy with a high error correction ability is used for only some data and a data processing policy with a low error correction ability is used for the remaining data, the performance of the storage device 1000 can be improved.

상술된 바와 같이, 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 데이터 프로세싱 정책을 선택하고, 변경 조건이 충족된 경우 HMB(14)의 영역에 대응하는 데이터 프로세싱 정책을 변경할 수 있다. 이에 따라, 스토리지 장치(1000)는 HMB(14)의 공간을 효율적으로 사용할 수 있으며, 데이터 프로세싱 동작으로 인한 지연을 방지할 수 있다. 즉, 향상된 성능 및 향상된 신뢰성을 갖는 스토리지 장치(1000)가 제공된다. 본 개시의 실시 예에 따른 호스트(11) 및 스토리지 장치(1000)의 동작 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.As described above, the storage device 1000 may select an appropriate data processing policy for each area of the HMB 14 and change the data processing policy corresponding to the area of the HMB 14 when the change condition is met. Accordingly, the storage device 1000 can efficiently use the space of the HMB 14 and prevent delays due to data processing operations. That is, a storage device 1000 with improved performance and improved reliability is provided. The operating method of the host 11 and the storage device 1000 according to an embodiment of the present disclosure will be described in more detail with reference to the drawings below.

도 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 storage device 1000 may use the resources of the host 11 . For example, the storage device 1000 can manage various data using the HMB 14 as a buffer. Accordingly, sufficient resources can be provided for the storage device 1000.

HMB 컨트롤러(1180)는 HMB 관리자(1181), HMB 프로세싱 엔진(1182), 및 상태 관리자(1183)를 포함할 수 있다. HMB 관리자(1181)는 HMB 컨트롤러(1180)의 제반 동작을 제어할 수 있다. 예를 들어, HMB 관리자(1181)는 호스트(11)로부터 HMB 할당 정보를 수신하고, HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할할 수 있다. HMB 관리자(1181)는 복수의 영역들 각각에 데이터 프로세싱 정책을 설정할 수 있다. HMB 관리자(1181)는 변경 조건이 충족된 경우, 특정 영역의 데이터 프로세싱 정책을 변경할 수 있다. The HMB controller 1180 may include an HMB manager 1181, an HMB processing engine 1182, and a state manager 1183. The HMB manager 1181 can control overall operations of the HMB controller 1180. For example, the HMB manager 1181 may receive HMB allocation information from the host 11 and divide the HMB 14 into a plurality of areas based on the HMB allocation information. The HMB manager 1181 can set a data processing policy in each of a plurality of areas. The HMB manager 1181 can change the data processing policy of a specific area when the change conditions are met.

HMB 관리자(1181)는 HMB와 관련된 정보를 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 맵핑 테이블(HMBMT), HMB 상태 테이블(HMBST)을 생성하고 관리할 수 있다. The HMB manager 1181 can manage information related to HMB. For example, the HMB manager 1181 can create and manage the HMB allocation table (HMBAT), HMB mapping table (HMBMT), and HMB state table (HMBST).

HMB 프로세싱 엔진(1182)은 프로세싱 풀, 인코더, 및 디코더를 포함할 수 있다. 프로세싱 풀은 복수의 데이터 프로세싱 엔진들(DPE1~DPEn)을 포함할 수 있다. 복수의 데이터 프로세싱 엔진들(DPE1~DPEn)은 서로 다른 데이터 프로세싱 정책을 수행할 수 있다. 예를 들어, 제1 데이터 프로세싱 엔진(DPE1)은 제1 데이터 프로세싱 정책과 관련되고, 제2 데이터 프로세싱 엔진(DPE2)은 제2 데이터 프로세싱 정책과 관련되고, 제3 데이터 프로세싱 엔진(DPE3)은 제3 데이터 프로세싱 정책과 관련될 수 있다. HMB processing engine 1182 may include a processing pool, encoder, and decoder. The processing pool may include a plurality of data processing engines (DPE1 to DPEn). A plurality of data processing engines (DPE1 to DPEn) may perform different data processing policies. For example, a first data processing engine (DPE1) is associated with a first data processing policy, a second data processing engine (DPE2) is associated with a second data processing policy, and a third data processing engine (DPE3) is associated with a first data processing policy. 3 May be related to data processing policy.

데이터 프로세싱 정책은 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 manager 1181. Data encoded by the encoder may be transmitted to HMB 14. For example, when the first data processing engine (DEP1) is one of the error correction policies, the encoder can add parity to the original data by performing error correction encoding through the first data processing engine (DEP1). Parity includes one or more bits and may provide error correction. For example, when the second data processing engine (DEP1) is one of the encryption policies, the encoder can perform encryption on the received data by performing encryption encoding through the second data processing engine (DEP2).

디코더는 데이터에 대한 디코딩 동작을 수행하고, 디코딩된 데이터를 생성할 수 있다. 디코더는 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 HMB manager 1181. For example, when the first data processing engine (DEP1) is one of the error correction policies, the decoder performs error correction decoding using parity through the first data processing engine (DEP1), thereby correcting errors from the data. , and the original data can be restored by removing parity. For example, if the second data processing engine (DEP1) is one of the encryption policies, the decoder may perform encryption decoding through the second data processing engine (DEP2), thereby performing decryption on the received data.

상태 관리자(1183)는 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링 할 수 있다. 상태 관리자(1181)는 데이터 프로세싱 정책의 변경 조건이 충족된 경우, HMB 관리자(1181)에게 변경 조건이 충족되었음을 가리키는 변경 신호를 출력할 수 있다. The state manager 1183 can monitor whether the change conditions of the data processing policy are met. When the change condition of the data processing policy is met, the state manager 1181 may output a change signal indicating that the change condition has been met to the HMB manager 1181.

상태 관리자(1183)는 타이머(1184) 및 모니터링 유닛(1185)을 포함할 수 있다. 타이머(1184)는 미리 정해진 시간을 카운팅 하도록 구성될 수 있다. 예를 들어 타이머(1184)는 시스템 클럭 또는 동작 클럭을 카운팅하여, 특정 시점으로부터 경과된 시간 또는 미리 정해진 시간을 구간을 카운팅하도록 구성될 수 있다. Status manager 1183 may include a timer 1184 and a monitoring unit 1185. Timer 1184 may be configured to count a predetermined amount of time. For example, the timer 1184 may be configured to count a system clock or an operation clock, and count the time elapsed from a specific point in time or a predetermined time period.

일 실시 예에서, 타이머(1184)는 복수의 영역들(R1~R4)에 대한 경과 시간(예를 들어, HMT 상태 테이블(HMBST)에 포함된 경과 시간 정보)을 카운팅 하도록 구성될 수 있다. 특정 영역(예를 들어, 제1 영역(R1))에 대한 타이머가 만료된 경우(다시 말해서, 특정 시점으로부터(예를 들어, 제1 영역(R1)에 데이터가 처음 기입된 시점으로부터) 임계 시간이 경과된 경우), 상태 관리자(1183)는 특정 영역에 대한 데이터 프로세싱 정책 변경 조건이 충족되었음을 판단할 수 있다. In one embodiment, the timer 1184 may be configured to count elapsed time (eg, elapsed time information included in the HMT state table (HMBST)) for the plurality of regions R1 to R4. When the timer for a specific area (e.g., first area R1) expires (in other words, from a specific point in time (e.g., from the time data is first written to first area R1)), the threshold time (when this has elapsed), the state manager 1183 may determine that the data processing policy change conditions for a specific area have been met.

모니터링 유닛(1185)은 HMB(14)의 복수의 영역들과 관련되는 다양한 상태의 정보를 수집하고 관리할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB(14)의 환경 정보 또는 속성 정보를 수집하고 관리할 수 있다. 구체적으로 모니터링 유닛(1185)은 오류율, 경과 시간, 메모리 장치의 상태, 메모리 장치의 유형, 신뢰성 보호 수준, 무효인 메모리의 영역들의 비율 등을 관리할 수 있다. Monitoring unit 1185 may collect and manage various status information related to multiple areas of HMB 14. For example, the monitoring unit 1185 may collect and manage environmental information or attribute information of the HMB 14. Specifically, the monitoring unit 1185 may manage the error rate, elapsed time, state of the memory device, type of memory device, reliability protection level, percentage of areas of memory that are invalid, etc.

일 실시 예에서, 모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 참조하여, 모니터링되는 상태들이 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, 변경 조건이 충족될 수 있다. 기준 값은 변경 조건 동작이 요구되는 상태의 수준을 고려하여 선택될 수 있다. In one embodiment, the monitoring unit 1185 may refer to the HMB state table (HMBST) to determine whether the monitored states meet change conditions. For example, if the value of a monitored condition reaches a reference value, a change condition may be met. The reference value may be selected considering the level of the state for which a change condition operation is required.

도 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 manager 1181 can manage the HMB 14 by dividing it into a plurality of regions R1 to R4 based on HMB allocation information provided by the host 11. It is assumed that the HMB 14 includes first to fourth regions R1 to R4. However, the scope of the present disclosure is not limited thereto, and the number of areas included in the HMB 14 may be increased or decreased depending on implementation.

HMB 관리자(1181)는 HMB와 관련된 정보들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)을 관리할 수 있다. HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)은 버퍼 메모리(1150) 또는 불휘발성 메모리 장치(1200)에 저장될 수 있다. The HMB manager 1181 can manage information related to HMB. For example, the HMB manager 1181 can manage the HMB allocation table (HMBAT), HMB state table (HMBST), and HMB mapping table (HMBMT). The HMB allocation table (HMBAT), HMB state table (HMBST), and HMB mapping table (HMBMT) may be stored in the buffer memory 1150 or the non-volatile memory device 1200.

일 실시 예에서, 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 manager 1181 may create an HMB allocation table (HMBAT) based on HMB allocation information and store it in the buffer memory 1150. The HMB manager 1181 may store and update allocation information for each of the plurality of areas R1 to R4 in the HMB allocation table (HMBAT). Area allocation information of the HMB 14 can be managed and updated in units of divided areas. For example, allocation information may include the identifier of each area, the type (or types) of data stored or buffered in each area, the release priority for each area, the status of each area, the size of each area, and the host memory of each area. It can include address range, reliability requirement level for each area, security requirement level for each area, etc. However, the scope of the present disclosure is not limited thereto, and the allocation information stored in the HMB allocation table (HMBAT) may include other parameters for each of the plurality of regions (R1 to R4) of the HMB 14.

예를 들어, 식별자는 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 HMB 14. However, if other criteria can be used to uniquely identify the plurality of regions (R1 to R4), the HMB allocation table (HMBAT) may not include an identifier.

일 실시 예에서, 복수의 영역들(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 manager 1181 may create an HMB state table (HMBST), store and manage the HMB state table (HMBST) in the buffer memory 1150. The HMB manager 1181 may store and update deterioration information or error information (i.e., state information) for each of the plurality of regions R1 to R4 in the HMB state table HMBST.

HMB(14)의 영역별 상태 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 영역별 상태 정보는 해당 영역의 쓰기 회수, 읽기 회수, 그리고 해당 영역에 저장된 데이터로부터 검출된 오류율(예를 들어, 오류 비트의 수 및 읽기 데이터의 총 비트 수의 비율), 경과 시간, 오류 발생 비율(예를 들어, 오류 검출 회수 및 총 HMB 읽기 요청 회수의 비율), 읽기 재시도 회수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 상태 테이블(HMBST)에 저장되는 상태 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다. Status information for each area of the HMB 14 can be managed and updated in units of divided areas. For example, the status information for each area includes the number of writes, reads, and error rate detected from data stored in the area (e.g., the ratio of the number of error bits to the total number of bits of read data), elapsed time, and number of writes in that area. , error occurrence rate (e.g., ratio of error detection number and total number of HMB read requests), number of read retries, percentage of invalid memory spaces, available capacity, etc. However, the scope of the present disclosure is not limited thereto, and the state information stored in the HMB state table (HMBST) may include other parameters for each of the plurality of regions (R1 to R4) of the HMB 14.

HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)을 생성하고, HMB 맵핑 테이블(HMBMT)을 버퍼 메모리(1150)에 저장하고 관리할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각 및 대응하는 데이터 프로세싱 정책에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)에 저장하고 갱신할 수 있다. The HMB manager 1181 can create an HMB mapping table (HMBMT), store and manage the HMB mapping table (HMBMT) in the buffer memory 1150. The HMB manager 1181 may store and update mapping information for each of the plurality of regions (R1 to R4) and the corresponding data processing policy in the HMB mapping table (HMBMT).

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 HMB manager 1181 can select a data processing policy for each of the plurality of regions (R1 to R4) and manage the corresponding mapping information as an HMB mapping table (HMBMT). For example, the first region (R1) corresponds to the first data processing policy (DPP1), the second region (R2) corresponds to the second data processing policy (DPP2), and the third region (R3) corresponds to the first data processing policy (DPP1). 3 Can correspond to data processing policy (DPP3). The HMB manager 1181 may not set any data processing policy for the fourth region (R4). In this case, an initial value may be stored in the HMB mapping table (HMBMT) in relation to the fourth region (R4). The HMB mapping table (HMBMT) shown in FIG. 3 is an example, and the scope of the present disclosure is not limited thereto.

도 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 storage device 1000 may receive HMB allocation information from the host 11. For example, the storage device 1000 may receive HMB allocation information through a Set Feature command. HMB allocation information may include HMB size information, HMB activation information, or HMB descriptor list. The HMB descriptor list may include a plurality of HMB descriptor entries. The HMB descriptor entry may point to a memory address space allocated to HMB. The HMB descriptor entry may include buffer address information and buffer size information. The buffer address may indicate address information of the host memory buffer indicated by the HMB descriptor entry. Buffer size information may indicate the number of consecutive memory pages within the memory space indicated by the HMB descriptor entry.

일 실시 예에서, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로 HMB(14)를 인식할 수 있다. 스토리지 장치(1000)는 HMB(14)를 복수의 영역들로 분할할 수 있다. HMB(14)의 복수의 영역들은 스토리지 장치(1000)에 의해 관리될 수 있다. 도 3을 참조하면, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. In one embodiment, the storage device 1000 may recognize the HMB 14 based on HMB allocation information. The storage device 1000 may divide the HMB 14 into a plurality of areas. A plurality of areas of the HMB 14 may be managed by the storage device 1000. Referring to FIG. 3, the storage device 1000 may divide the HMB 14 into first to fourth regions R1 to R4 based on HMB allocation information.

일 실시 예에서, 스토리지 장치에 의해 관리되는 복수의 영역들은 호스트에 의해 관리되는 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 storage device 1000 may recognize memory spaces indicated by HMB descriptor entries as HMB 14. The storage device 1000 may classify and use the HMB 14 into a plurality of areas as needed.

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 storage device 1000 may set a data processing policy for each area of the HMB 14. For example, the storage device 1000 may set one of a plurality of data processing policies for a plurality of regions R1 to R4. The storage device 1000 may select a first data processing policy (DPP1) from among a plurality of data processing policies for the first region (R1). The storage device 1000 may select a second data processing policy (DPP2) for the second region (R2) and a third data processing policy (DPP3) for the third region (R3). However, the storage device 1000 may not select any data processing policy for the fourth region R4.

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 storage device 1000 may store information about the data processing policy in the HMB mapping table (HMBMT). For example, referring to FIG. 3 , the storage device 1000 may store the first data processing policy (DDP1) in the HMB mapping table (HMBMT) in relation to the first region (R1). The storage device 1000 may store the second data processing policy (DDP2) in the HMB mapping table (HMBMT) in relation to the second region (R2). The storage device 1000 may store the third data processing policy (DDP3) in the HMB mapping table (HMBMT) in relation to the third region (R3). The storage device 1000 may store an initial value (default) in the HMB mapping table (HMBMT) in relation to the fourth region (R4). That is, the storage device 1000 can be set not to apply any data processing policy to the fourth region R4. In other words, the storage device 1000 may not perform an encoding or decoding operation on data corresponding to the fourth region R4.

도 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 HMB controller 1180 may receive an HMB write request and data. For example, the HMB controller 1180 may detect or receive an HMB write request to the HMB 14 provided from the CPU 1110 or the FTL 1120.

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 controller 1180 may determine a data processing policy based on the HMB mapping table (HMBMT). For example, the HMB controller 1180 may determine the area of the HMB 14 where data will be stored based on the HMB write request. Specifically, the HMB controller 1180 can determine the area of the HMB 14 in which data is to be stored among the plurality of areas R1 to R4 based on the address of the HMB 14 included in the HMB write request. . Alternatively, the HMB controller 1180 may determine an area of the HMB 14 in which data is to be stored among the plurality of areas R1 to R4 based on the type (or type) of data included in the HMB write request. The HMB controller 1180 may check the data processing policy corresponding to the area of the HMB 14 from the HMB mapping table (HMBMT) based on the area of the HMB 14 where data will be stored.

예를 들어, 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 HMB controller 1180 may determine that the area where data will be stored is the first area (R1), based on the address included in the HMB write request. The HMB controller 1180 may determine that the data processing policy corresponding to the first region (R1) is the first data processing policy (DDP1) based on the HMB mapping table (HMBMT).

S230 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. In step S230, the HMB controller 1180 may perform an encoding operation based on the determined data processing policy. For example, the HMB controller 1180 may perform an encoding operation on data based on the first data processing policy (DDP1).

S240 단계에서, HMB 컨트롤러(1180)는 인코딩된 데이터를 HMB(14)에 기입할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 쓰기 커맨드 및 인코딩된 데이터를 HMB(14)로 전송할 수 있다. In step S240, the HMB controller 1180 may write encoded data to the HMB 14. For example, HMB controller 1180 may transmit a write command and encoded data to HMB 14.

그러나, HMB 쓰기 요청에 대응하는 HMB(14)의 영역이 제4 영역(R4)인 경우(즉, 판별된 데이터 프로세싱 정책이 초기값(default)을 가리키는 경우), HMB 컨트롤러(1180)는 HMB 쓰기 요청에 대응하는 데이터에 대한 인코딩 동작을 수행하지 않을 수 있다. 이에 따라, HMB 컨트롤러(1180)는 인코딩 되지 않은 데이터를 HMB(14)에 기입할 수 있다. However, when the area of the HMB 14 corresponding to the HMB write request is the fourth area R4 (i.e., when the determined data processing policy points to the initial value (default)), the HMB controller 1180 does not write the HMB. Encoding operations may not be performed on data corresponding to the request. Accordingly, the HMB controller 1180 can write unencoded data to the HMB 14.

도 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 HMB controller 1180 may receive an HMB read request. For example, the HMB controller 1180 may detect or receive a read request to the HMB 14 provided from the CPU 1110 or the FTL 1120.

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 HMB controller 1180 can read data from the HMB 14. For example, the HMB controller 1180 may transmit a read command to the HMB 14 based on the HMB read request. The HMB controller 1180 may receive data corresponding to the read command from the HMB 14. For example, the HMB controller 1180 may generate a read command based on the address of the HMB 14 included in the HMB read request. Alternatively, the HMB controller 1180 may generate a read command based on the type (or type) of data of the HMB 14 included in the HMB read request.

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 controller 1180 may determine a data processing policy based on the HMB mapping table (HMBMT). For example, the HMB controller 1180 may determine the area of the HMB 14 where data is stored based on the HMB read request. Specifically, the HMB controller 1180 may determine an area of the HMB 14 in which data is stored among the plurality of areas R1 to R4 based on the address of the HMB 14 included in the HMB read request. Alternatively, the HMB controller 1180 may determine an area of the HMB 14 where data is stored among a plurality of areas R1 to R4 based on the type (or type) of data included in the HMB read request. HMB controller 1180 can check the data processing policy corresponding to the area of the HMB 14 from the HMB mapping table (HMBMT) based on the area of the HMB 14 where data is stored.

예를 들어, 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 HMB controller 1180 may determine that the area where data is stored is the first area (R1), based on the address included in the HMB read request. The HMB manager 1181 may determine that the data processing policy corresponding to the first region (R1) is the first data processing policy (DDP1) based on the HMB mapping table (HMBMT).

S340 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 디코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 데이터에 대한 디코딩 동작을 수행할 수 있다. In step S340, the HMB controller 1180 may perform a decoding operation based on the determined data processing policy. For example, the HMB controller 1180 may perform a decoding operation on data based on the first data processing policy (DDP1).

S350 단계에서, HMB 컨트롤러(1180)는 디코딩된 데이터를 전송할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 디코딩된 데이터를 CPU(1110) 또는 FTL(1120)로 전송할 수 있다. In step S350, the HMB controller 1180 may transmit decoded data. For example, the HMB controller 1180 may transmit decoded data to the CPU 1110 or the FTL 1120.

그러나, 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 HMB controller 1180 stores the data corresponding to the HMB read request. The decoding operation may not be performed. Accordingly, the HMB controller 1180 may transmit undecoded data to the CPU 1110 or FTL 1120.

도 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 HMB controller 1180 may perform a decoding operation on data based on the determined data processing policy. For example, the HMB controller 1180 can restore the original data by performing a decoding operation on the received data.

S342 단계에서, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책이 오류 정정/오류 검출에 관한 정책인지 여부를 검출할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 데이터 프로세싱 정책(DDP1)이 오류 정정/오류 검출에 관한 정책들 중 하나인지 여부를 판별할 수 있다. 판별된 데이터 프로세싱 정책이 오류 정정/오류 검출에 관한 정책인 경우 HMB 컨트롤러(1180)는 S343 단계를 진행하고, 판별된 데이터 프로세싱 정책이 오류 정정에 관한 정책이 아닌 경우 HMB 컨트롤러(1180)는 S350 단계를 진행한다. In step S342, the HMB controller 1180 may detect whether the determined data processing policy is a policy related to error correction/error detection. For example, the HMB controller 1180 may determine whether the first data processing policy (DDP1) is one of policies related to error correction/error detection. If the determined data processing policy is a policy related to error correction/error detection, the HMB controller 1180 proceeds to step S343, and if the determined data processing policy is not a policy related to error correction, the HMB controller 1180 proceeds to step S350. proceed.

S343 단계에서, HMB 컨트롤러(1180)는 HMB(14)로부터 읽기 데이터의 오류 또는 오류의 존재 여부를 검출할 수 있다. 읽기 데이터의 오류가 존재하지 않은 경우 HMB 컨트롤러(1180)는 S350 단계를 진행하고, 읽기 데이터의 오류가 존재하는 경우 HMB 컨트롤러(1180)는 S344 단계를 진행한다. In step S343, the HMB controller 1180 may detect an error or the presence of an error in read data from the HMB 14. If there is no error in the read data, the HMB controller 1180 proceeds to step S350, and if there is an error in the read data, the HMB controller 1180 proceeds to step S344.

S344 단계에서, HMB 컨트롤러(1180)는 읽기 데이터의 오류율을 상태 관리자(1183)로 전송할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 상태 관리자(1183)가 읽기 데이터의 오류율을 모니터링하도록, 읽기 데이터의 오류율을 상태 관리자(1183)로 전송할 수 있다. In step S344, the HMB controller 1180 may transmit the error rate of the read data to the state manager 1183. For example, the HMB processing engine 1182 may transmit the error rate of the read data to the state manager 1183 so that the state manager 1183 monitors the error rate of the read data.

S345 단계에서, HMB 컨트롤러(1180)는 데이터의 오류가 정정이 가능한지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책이 오류 정정 정책인지 판별할 수 있다. HMB 컨트롤러(1180)는 데이터의 오류율이 오류율 임계치를 초과하는지 여부를 판별할 수 있다. 즉, 데이터의 오류율이 오류율 임계치를 초과한 경우, 오류 정정이 불가능하다고 판별할 수 있다. 데이터의 오류율이 오류율 임계치 이하인 경우, 오류 정정이 가능하다고 판별할 수 있다. 다시 말해서, HMB 컨트롤러(1180)는 검출된 오류들의 개수가 최대 오류, 즉, 판별된 데이터 프로세싱 정책을 이용하여 정정 가능한 오류들의 최대 개수인지 판단할 수 있다. 최대 오류인 경우, 오류 정정할 수 없다고 판단할 수 있다. 최대 오류가 아닌 경우, 오류 정정할 수 있다고 판단할 수 있다. 오류 정정이 가능하다고 판별된 경우 HMB 컨트롤러(1180)는 S346 단계를 진행하고, 오류 정정이 불가능하다고 판별된 경우 HMB 컨트롤러(1180)는 S347 단계를 진행한다.In step S345, the HMB controller 1180 can determine whether a data error can be corrected. For example, the HMB controller 1180 may determine whether the determined data processing policy is an error correction policy. The HMB controller 1180 can determine whether the error rate of the data exceeds the error rate threshold. In other words, if the error rate of the data exceeds the error rate threshold, it can be determined that error correction is not possible. If the error rate of the data is below the error rate threshold, it can be determined that error correction is possible. In other words, the HMB controller 1180 may determine whether the number of detected errors is the maximum error, that is, the maximum number of errors that can be corrected using the determined data processing policy. If the error is maximum, it may be determined that the error cannot be corrected. If the error is not the maximum, it can be determined that the error can be corrected. If it is determined that error correction is possible, the HMB controller 1180 proceeds to step S346. If it is determined that error correction is not possible, the HMB controller 1180 proceeds to step S347.

S346 단계에서, HMB 컨트롤러(1180)는 오류 정정 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 판별된 데이터 프로세싱 정책을 기반으로 오류를 정정하여, 정정된 데이터를 생성할 수 있다. 이후에, HMB 컨트롤러(1180)는 S350 단계를 진행한다.In step S346, the HMB controller 1180 may perform an error correction operation. For example, the HMB controller 1180 may correct errors based on the determined data processing policy and generate corrected data. Afterwards, the HMB controller 1180 proceeds to step S350.

S347 단계에서, HMB 컨트롤러(1180)는 읽기 실패를 통지할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 오류 정정이 불가하다고 판단하였으므로, CPU(1110) 또는 FTL(1120)에게 HMB 읽기 요청에 대한 실패 응답을 전송할 수 있다. HMB 컨트롤러(1180)는 데이터 손상(data corruption) 정보 또는 정정 불가능한 오류(Uncorrectable Error)를 포함하는 응답을 전송할 수 있다. 이후에, HMB 컨트롤러(1180)는 S350 단계를 진행하지 않을 수 있다. In step S347, the HMB controller 1180 may notify read failure. For example, since the HMB controller 1180 determines that error correction is not possible, it may transmit a failure response to the HMB read request to the CPU 1110 or FTL 1120. The HMB controller 1180 may transmit a response containing data corruption information or an Uncorrectable Error. Afterwards, the HMB controller 1180 may not proceed to step S350.

도 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 controller 1180 may determine whether the change conditions for the data processing policy are met. The change condition may be related to whether a change operation is required for the data processing policy for the plurality of areas (R1 to R4) of the HMB 14. If the change condition is met, the HMB controller 1180 proceeds to step S420, and if the change condition is not met, the HMB controller 1180 proceeds to step S410 again. That is, if the change condition is not met, the HMB controller 1180 can monitor whether the change condition is met.

일 실시 예에서 HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 데이터 프로세싱 정책의 변경이 필요한지 여부를 검출할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)과 관련된 상태를 모니터링할 수 있다. HMB 컨트롤러(1180)는 모니터링되는 상태가 변경 조건을 충족하는지를 관리할 수 있다. 예를 들어, HMB 컨트롤러(1180)에 의해 모니터링되는 상태는 복수의 영역들(R1~R4) 각각의 수명, 복수의 영역들(R1~R4) 각각에 저장된 데이터의 신뢰성, 복수의 영역들(R1~R4)에 대응하는 메모리 장치의 상태 등과 같은 다양한 속성과 관련될 수 있다. In one embodiment, the HMB controller 1180 may detect whether the data processing policy for each of the plurality of regions R1 to R4 needs to be changed. That is, the HMB controller 1180 can monitor the status related to the plurality of regions (R1 to R4). The HMB controller 1180 can manage whether the monitored state meets change conditions. For example, the status monitored by the HMB controller 1180 includes the lifespan of each of the plurality of areas (R1 to R4), the reliability of data stored in each of the plurality of areas (R1 to R4), and the plurality of areas (R1 It may be related to various properties, such as the state of the memory device corresponding to ~R4).

변경 조건이 충족된 경우, 이는 스토리지 장치(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 storage device 1000 or the HMB 14 by changing the data processing policy for the area in the storage device 1000 where the change condition is met. can point The storage device 1000 may intend to change the data processing policy for a specific area to improve the operating environment and characteristics of the storage device 1000 or the HMB 14.

일 실시 예에서, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, 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 HMB controller 1180 may determine that the monitored state satisfies the change condition. For example, looking at the first condition, the HMB controller 1180 determines the time elapsed from the time data is first written to each of the plurality of areas (R1 to R4), that is, the time elapsed from the time data is first written to each of the plurality of areas (R1 to R4). You can manage each elapsed time. Specifically, the HMB controller 1180 may determine whether the elapsed time of each of the plurality of regions R1 to R4 exceeds the threshold time.

제2 조건을 살펴보면, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각의 오류율을 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 복수의 영역들 각각의 오류율을 모니터링 하고, 오류율이 기준 오류율을 초과하였는지 여부를 판별할 수 있다.Looking at the second condition, the HMB controller 1180 can manage the error rate of each of the plurality of areas (R1 to R4). Specifically, the HMB controller 1180 can monitor the error rate of each of the plurality of areas and determine whether the error rate exceeds the reference error rate.

제3 조건을 살펴보면, HMB 컨트롤러(1180)는 호스트(11)에 의해 HMB(14)의 할당 정보를 관리할 수 있다. HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로, 복수의 영역들(R1~R4)에 대한 호스트 메모리(13)의 메모리 공간이 변경되었는지 여부를 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)에 대한 할당 정보가 변경되었는지 여부를 판별할 수 있다. Looking at the third condition, the HMB controller 1180 can manage the allocation information of the HMB 14 by the host 11. The HMB controller 1180 may determine whether the memory space of the host memory 13 for the plurality of regions R1 to R4 has changed based on the HMB mapping table (HMBMT). That is, the HMB controller 1180 can determine whether allocation information for the plurality of regions R1 to R4 has changed.

제4 조건을 살펴보면, HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치를 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 호스트(11)로부터 HMB(14)에 대응하는 메모리 장치에 대한 정보를 수신할 수 있다. HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치에 대한 정보 수신 여부를 판별할 수 있다. 상술된 제1 내지 제4 조건들은 변경 조건의 가능한 예들 중 일부일 뿐이며, 위 예들로 본 개시의 범위가 한정되지 아니하며, 구체적인 조건들은 다양하게 변경 또는 수정될 수 있다. Looking at the fourth condition, the HMB controller 1180 can manage the memory device corresponding to the HMB 14. Specifically, the HMB controller 1180 may receive information about the memory device corresponding to the HMB 14 from the host 11. The HMB controller 1180 can determine whether information about the memory device corresponding to the HMB 14 is received. The first to fourth conditions described above are only some of the possible examples of change conditions, the scope of the present disclosure is not limited to the above examples, and the specific conditions may be changed or modified in various ways.

일 실시 예에서, 변경 조건은 제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 HMB controller 1180 determines whether the first condition is satisfied for a specific area, determines whether the second condition is satisfied, determines whether the third condition is satisfied, and determines whether the fourth condition is satisfied. You can. That is, the HMB controller 1180 can monitor all the first to fourth conditions simultaneously.

일 실시 예에서, 변경 조건은 제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 controller 1180 can determine whether the first condition is satisfied for a specific area, or whether the fourth condition is satisfied. That is, the HMB controller 1180 can monitor at least one of a plurality of conditions.

일 실시 예에서, HMB 컨트롤러(1180)는 제1 내지 제4 조건들 중 어느 하나라도 충족된 경우, 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, 제1 조건만 충족되고 제2 내지 제4 조건들을 충족되지 않은 경우라도, HMB 컨트롤러(1180)는 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. In one embodiment, the HMB controller 1180 may change the data processing policy for a specific area when any one of the first to fourth conditions is met. For example, even if only the first condition is met and the second to fourth conditions are not met, the HMB controller 1180 may determine that the change condition is met and change the data processing policy for a specific area.

일 실시 예에서, HMB 컨트롤러(1180)는 복수의 조건들 중 적어도 두개의 조건들이 충족된 경우, 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 조건만 충족되고 제2 내지 제4 조건들이 충족되지 않은 경우, 변경 조건이 충족되지 않은 것으로 판별할 수 있다. HMB 컨트롤러(1180)는 제1 및 제2 조건이 충족되고, 제3 및 제4 조건이 충족되지 않은 경우, 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. In one embodiment, the HMB controller 1180 may change the data processing policy for a specific area when at least two conditions among a plurality of conditions are met. For example, if only the first condition is met and the second to fourth conditions are not met, the HMB controller 1180 may determine that the change condition is not met. If the first and second conditions are met and the third and fourth conditions are not met, the HMB controller 1180 determines that the change condition is met and may change the data processing policy for the specific area.

상술된 바와 같이, 변경 조건은 제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 HMB controller 1180 may change the data processing policy. Specifically, the HMB manager 1181 may change the data processing policy for an area in which the change condition is met among the plurality of areas R1 to R4. For example, it is assumed that the change condition for the first region R1 is met. The HMB manager 1181 may change the data processing policy of the first region (R1) from the first data processing policy (DDP1) to the fourth data processing policy (DDP4).

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 controller 1180 may update the HMB mapping table (HMBMT). The HMB manager 1181 may store the newly selected data processing policy in the HMB mapping table (HMBMT) in relation to the area. For example, since the data processing policy of the first region (R1) has changed from the first data processing policy (DDP1) to the fifth data processing policy (DDP5), the HMB controller 1180 is related to the first region (R1). Thus, the fifth data processing policy (DDP5) can be stored in the HMB mapping table (HMBMT).

HMB 컨트롤러(1180)는 모든 복수의 영역들(R1~R4)에 대하여, 이하에서 설명되는 변경 조건들의 충족여부를 판별할 수 있다. 그러나, 도면의 간결성 몇 설명의 편의를 위하여, 이하에서 특정 하나의 영역에 대하여 변경 조건이 충족하는지 여부를 설명한다. 특정 하나의 영역은 제1 영역(R1)으로 가정한다. 단, 본 개시의 범위가 이에 한정되는 것은 아니며, 나머지 영역들(R2~R3)에 대해서도 하기의 설명이 모두 적용될 수 있음이 잘 이해될 것이다. The HMB controller 1180 can determine whether the change conditions described below are met for all of the plurality of areas R1 to R4. However, for the sake of brevity of the drawings and convenience of explanation, it will be explained below whether the change conditions are met for one specific area. It is assumed that one specific area is the first area (R1). However, it will be well understood that the scope of the present disclosure is not limited thereto, and the following description may be applied to the remaining regions R2 to R3.

도 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 controller 1180 may transmit the first write command and data to a specific area of the HMB 14. For example, the CPU 1110 may transmit the first HMB write request for the first region R1 to the HMB controller 1180 ([1] in FIG. 10A). For example, the CPU 1110 may transmit an HMB write request to the HMB controller 1180 in order to write data to the first area R1 for the first time.

HMB 컨트롤러(1180)는 제1 영역(R1)으로 첫 번째 쓰기 데이터를 전송할 수 있다(도 10a의 [2]). 예를 들어, HMB 프로세싱 엔진(1182)은, 제1 영역(R1)에 대응하는 제1 데이터 프로세싱 엔진(DPE1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 첫 번째 쓰기 커맨드 및 인코딩된 쓰기 데이터를 호스트(11)로 전송할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 어떤 데이터도 저장되지 않은 상태에서, 처음으로 쓰기 커맨드 및 데이터를 전송할 수 있다. 즉, HMB 컨트롤러(1180)는 처음으로 제1 영역(R1)에 데이터를 기입할 수 있다.The HMB controller 1180 may transmit the first write data to the first area R1 ([2] in FIG. 10A). For example, the HMB processing engine 1182 may perform an encoding operation on data based on the first data processing engine DPE1 corresponding to the first region R1. The HMB processing engine 1182 may transmit the first write command and encoded write data to the host 11. The HMB controller 1180 may transmit a write command and data for the first time without any data being stored in the first area R1. That is, the HMB controller 1180 can write data to the first area R1 for the first time.

S412a 단계에서, HMB 컨트롤러(1180)는 타이머(1184)를 개시할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 타이머의 카운팅 동작을 개시할 수 있다. 일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대응하는 타이머(1184)의 기준 시간을 설정할 수 있다(도 10a의 [3]). In step S412a, the HMB controller 1180 may start the timer 1184. The HMB controller 1180 may initiate a counting operation of a timer corresponding to the first region R1. In one embodiment, the HMB manager 1181 may set the reference time of the timer 1184 corresponding to the first region R1 ([3] in FIG. 10A).

예를 들어, 기준 시간은 제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 HMB controller 1180 depending on the state of the host memory device or the type of data.

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 HMB controller 1180 may determine whether the timer corresponding to the area of the HMB 14 has expired. For example, the HMB manager 1181 may determine whether the timer corresponding to the first region R1 has expired. That is, the HMB manager 1181 can determine whether a reference time has elapsed from the time data was first written to the first area R1. When the timer for the first area R1 expires, it may be determined that the change condition for the first area R1 has been met. If the timer has expired, the HMB controller 1180 may proceed to step S420, and if the timer has not expired, the HMB controller 1180 may continue the determination operation in S413a. When the timer 1184 expires, the timer 1184 may output a signal indicating passage or expiration of the reference time to the HMB manager 1181 ([4] in FIG. 10B).

S420 단계에서, HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 데이터 프로세싱 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 타이머(1184)로부터 출력되는 신호에 기초하여(즉, 기준 시간의 경과 또는 만료에 기초하여) 제1 영역(R1)의 데이터 프로세싱 정책을 변경할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대하여 제1 데이터 프로세싱 정책(DDP1)에서 제5 데이터 프로세싱 정책(DDP5)으로 변경할 수 있다. In step S420, the HMB controller 1180 may change the data processing policy corresponding to the first region R1. For example, the HMB manager 1181 may change the data processing policy of the first region R1 based on the signal output from the timer 1184 (that is, based on the passage or expiration of the reference time). The HMB manager 1181 may change from the first data processing policy (DDP1) to the fifth data processing policy (DDP5) for the first region (R1).

S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 10b의 [5]).In step S430, the HMB controller 1180 may update the HMB mapping table (HMBMT). For example, the HMB manager 1181 may update the data processing policy for the first region (R1) to the fifth data processing policy (DDP5) ([5] in FIG. 10B).

도 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 HMB controller 1180 may monitor the error rate. For example, the CPU 1110 may transmit an HMB read request for the first region R1 to the HMB controller 1180 ([1] in FIG. 12A). The HMB processing engine 1182 can read read data RDATA from the first area R1 ([2] in FIG. 12A). The HMB processing engine 1182 can determine whether an error exists in the read data. If an error exists, HMB processing engine 1182 can detect the error rate. Alternatively, if an error exists, the HMB processing engine 1182 may calculate the error rate. The HMB processing engine 1182 may transmit the error rate to the monitoring unit 1185 ([3] in FIG. 12A). Monitoring unit 1185 may monitor the error rate. The monitoring unit 1185 may store or update the error rate in the HMB state table (HMBST) ([4] in FIG. 12A).

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 HMB controller 1180 may determine whether the error rate exceeds the reference error rate (Re). For example, the monitoring unit 1185 may refer to the HMB state table (HMBST) to detect whether the error rate corresponding to the first region R1 exceeds the reference error rate corresponding to the first region R1. there is. If the error rate exceeds the reference error rate, the monitoring unit 1185 proceeds to step S420, and if the error rate does not exceed the reference error rate, the monitoring unit 1185 proceeds to step S412b. If the error rate exceeds the reference error rate, monitoring unit 1185 may determine that the change condition has been met. The monitoring unit 1185 may output a signal indicating that the change condition has been met to the HMB manager 1181 ([5] in Figure 12b).

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 HMB controller 1180 determines the data processing policy of the first region R1 in response to a signal output from the monitoring unit 1185 (i.e., based on the error rate exceeding the reference error rate). The data processing policy (DDP1) can be changed to the fifth data processing policy (DDP5). In step S430, the HMB controller 1180 may update the HMB mapping table (HMBMT). For example, the HMB manager 1181 may update the data processing policy for the first region R1 to the fifth data processing policy DDP5 ([6] in FIG. 12B).

일 실시 예에서, 스토리지 장치(1000)는 오류율 이외에 데이터의 신뢰성 및 보안과 관련된 상태를 모니터링 할 수 있다. 예를 들어, 모니터링되는 상태는 HMB(14)의 영역들 각각의 경과 시간, 오류 발생 비율(즉, 오류 검출 회수 및 총 HMB 읽기 요청 회수의 비율), 쓰기 회수, 읽기 회수, 읽기 재시도 회수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있으나, 본 개시는 이에 한정되지 않는다. In one embodiment, the storage device 1000 may monitor conditions related to the reliability and security of data in addition to the error rate. For example, the monitored status includes the elapsed time of each of the areas of the HMB 14, the error occurrence rate (i.e., the number of error detections and the ratio of the total number of HMB read requests), the number of writes, the number of reads, the number of read retries, It may include the ratio of invalid memory spaces, available capacity, etc., but the present disclosure is not limited thereto.

일 실시 예에서, 상태 관리자(1183)는 모니터링되는 상태가 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 기준 값에 도달하는 경우, 변경 조건이 충족될 수 있다. 기준 값은 영역들 각각에 요구되는 신뢰성 및 보안 수준을 고려하여 선택될 수 있다. In one embodiment, state manager 1183 may determine whether the monitored state meets change conditions. For example, if the value of a monitored condition reaches a reference value, a change condition may be met. The reference value may be selected considering the level of reliability and security required for each of the areas.

예를 들어, 상태 관리자(1183)는 타이머(1184)를 이용하는 대신에, 모니터링 유닛(1185)을 이용하여 경과 시간을 관리할 수 있다. 모니터링 유닛(1185)은 복수의 영역들(R1~R4) 각각의 다양한 시간들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 복수의 영역들(R1~R4)의 경과 시간 등을 관리할 수 있다. 경과 시간은 복수의 영역들 각각이 처음으로 데이터를 기입한 시점으로부터 현재까지의 경과 시간을 가리킨다. HMB 관리자(1181)는 영역에 처음으로 데이터를 기입한 시점, 즉 개시 시간을 타임 스탬프로 HMB 상태 테이블(HMBST)에 저장할 수 있다. For example, instead of using timer 1184, state manager 1183 may use monitoring unit 1185 to manage elapsed time. The monitoring unit 1185 can manage various times for each of the plurality of areas (R1 to R4). For example, the HMB manager 1181 can manage the elapsed time of a plurality of areas R1 to R4. The elapsed time refers to the elapsed time from the time data is first written to each of the plurality of areas to the present. The HMB manager 1181 can store the time when data was first written to the area, that is, the start time, as a timestamp in the HMB state table (HMBST).

모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 참조하여, HMB 상태 테이블(HMBST)에 저장된 개시 시간과 현재 시간의 차이를 경과 시간으로 계산할 수 있다. 모니터링 유닛(1185)은 계산된 경과 시간을 기준 시간과 비교하여, 경과 시간이 기준 시간을 초과하였는지 여부를 판별할 수 있다. 모니터링 유닛(1185)은 경과 시간이 기준 시간을 초과한 경우, 제1 영역(R1)의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다. The monitoring unit 1185 may refer to the HMB state table (HMBST) and calculate the difference between the start time stored in the HMB state table (HMBST) and the current time as the elapsed time. Monitoring unit 1185 may compare the calculated elapsed time to a reference time to determine whether the elapsed time exceeds the reference time. If the elapsed time exceeds the reference time, the monitoring unit 1185 may detect that the change condition of the first region R1 is met. The monitoring unit 1185 may output a signal indicating that the change condition has been met to the HMB manager 1181.

예를 들어, 모니터링 유닛(1185)은 오류 발생 비율을 관리할 수 있다. 모니터링 유닛(1185)은 HMB 상태 테이블(HMBST)을 기반으로, 오류 발생 비율(즉, 오류 발생 회수 및 HMB 읽기 회수의 비율)을 관리할 수 있다. 모니터링 유닛(1185)은 HMB 읽기 동작을 수행할 때마다, 오류 발생 비율을 계산할 수 있다. 모니터링 유닛(1185)은 오류 발생 비율을 HMB 상태 테이블(HMBST)에 저장하거나 갱신할 수 있다. 모니터링 유닛(1185)은 오류 발생 비율이 기준 값에 도달하는 경우(예를 들어, 기준 값보다 오류 발생 비율이 높아지는 경우), 모니터링 유닛(1185)은 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다. For example, monitoring unit 1185 may manage the error rate. The monitoring unit 1185 may manage the error occurrence rate (i.e., the ratio of the number of error occurrences and the number of HMB reads) based on the HMB state table (HMBST). The monitoring unit 1185 may calculate the error occurrence rate each time an HMB read operation is performed. Monitoring unit 1185 may store or update the error occurrence rate in the HMB state table (HMBST). When the error occurrence rate reaches the reference value (for example, when the error occurrence rate becomes higher than the reference value), the monitoring unit 1185 sends a signal indicating that the change condition has been met to the HMB manager 1181. ) can be output.

도 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 storage device 1000 may change the data processing policy of a specific area based on a change in the HMB 14 allocation area of the host 11.

호스트(11)는 스토리지 장치(1000)의 사용을 위하여 이미 할당된 HMB(14)의 메모리 공간을 할당 해제(de-allocate) 할 수 있다. 또는 호스트(11)는 이미 할당된 HMB(14)의 메모리 공간에 대하여 리턴(return)을 요청할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드(예를 들어, 피쳐 식별자(FID; Feature Identifier)는 호스트 메모리 버퍼를 가리킴)에 포함된 메모리 리턴(MR; Memory Return) 필드를 '1'로 설정함으로써, 할당된 HMB(14)의 메모리 공간을 할당 해제할 수 있다. The host 11 may de-allocate the memory space of the HMB 14 that has already been allocated for use by the storage device 1000. Alternatively, the host 11 may request a return of the already allocated memory space of the HMB 14. For example, the host 11 sets the Memory Return (MR) field included in the set-feature command (e.g., a feature identifier (FID) indicates a host memory buffer) to '1'. By setting, the allocated memory space of HMB 14 can be deallocated.

HMB 관리자(1181)는 할당 해제된 HMB(14)의 메모리 공간에 대응하는 영역을 다른 메모리 공간으로 할당할 수 있다. 예를 들어, 이미 할당된 HMB(14)의 메모리 공간 중 사용하지 않은 부분을 영역으로 할당할 수 있다. 또는 호스트(11)는 호스트 메모리(13)의 새로운 메모리 공간을 HMB(14)로 더 할당할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드를 통해 새로운 메모리 공간을 HMB(14)로 할당할 수 있다. HMB 관리자(1181)는 새로운 메모리 공간을 할당 해제된 메모리 공간의 영역으로 할당할 수 있다. The HMB manager 1181 may allocate an area corresponding to the deallocated memory space of the HMB 14 as another memory space. For example, an unused portion of the already allocated memory space of the HMB 14 can be allocated as an area. Alternatively, the host 11 may further allocate a new memory space in the host memory 13 to the HMB 14. For example, the host 11 can allocate a new memory space to the HMB 14 through a set-feature command. The HMB manager 1181 may allocate a new memory space to an area of the deallocated memory space.

일 실시 예에서, 도 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 storage device 1000 may receive HMB allocation information from the host 11. For example, the host 11 may transmit a set-feature command including HMB allocation information to the storage device 1000 ([1] in FIG. 14A). The set-feature command may include first to fifth memory address ranges (MR1 to MR5). For example, the first to fifth memory address ranges MR1 to MR5 may indicate a range of addresses corresponding to the HMB 14 in the host memory 13.

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 storage device 1000 may set a plurality of regions (R1 to R4) based on HMB allocation information. For example, the HMB manager 1181 may divide the HMB 14 into first to fourth regions R1 to R4 in response to HMB allocation information of the host 11. The HMB manager 1181 allocates a first area (R1) to the first memory address range (MR1) of the host memory 13, and a second area (R1) to the second memory address range (MR2) of the host memory 13. R2), the third area R3 is allocated to the third memory address range MR3 of the host memory 13, and the fourth area R3 is allocated to the fourth memory address range MR4 of the host memory 13. R4) can be assigned. The HMB manager 1181 may not allocate the fifth memory address range MR5 to any area and may leave it as free space.

일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 제1 데이터 유형(DT1)을 저장하도록 결정하고, 제2 영역(R2)에 제2 데이터 유형(DT2)을 저장하도록 결정하고, 제3 영역(R3)에 제3 데이터 유형(DT3)을 저장하도록 결정하고, 제4 영역(R4)에 제4 데이터 유형(DT4)을 저장하도록 결정할 수 있다. In one embodiment, the HMB manager 1181 determines to store the first data type (DT1) in the first region (R1) and determines to store the second data type (DT2) in the second region (R2) , it may be decided to store the third data type DT3 in the third area R3 and the fourth data type DT4 in the fourth area R4.

일 실시 예에서, 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 HMB manager 1181 may update the HMB allocation table (HMBAT) ([2] in FIG. 14A). For example, the HMB manager 1181 stores the first data type (DT1) and the first memory address range (MR1) in relation to the first area (R1) in the HMB mapping table (HMBMT), and the second area ( With respect to R2), a second data type (DT2) and a second memory address range (MR2) are stored, and with respect to a third region (R3), a third data type (DT3) and a third memory address range (MR3) are stored. ) can be stored, and in relation to the fourth area R4, the fourth data type DT4 and the fourth memory address range MR4 can be stored.

S413c 단계에서, 스토리지 장치(1000)는 HMB 할당 해제 정보를 수신할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다(도 14a의 [3]). 셋-피쳐 커맨드는 제1 메모리 어드레스 범위(MR1)에 대한 할당 해제 정보를 포함할 수 있다. In step S413c, the storage device 1000 may receive HMB deallocation information. For example, the host 11 may transmit a set-feature command including HMB deallocation information to the storage device 1000 ([3] in FIG. 14A). The set-feature command may include deallocation information for the first memory address range MR1.

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 storage device 1000 may reset a plurality of areas based on HMB deallocation information. For example, the HMB manager 1181 may re-establish the first region R1 based on HMB allocation release information. Since the HMB manager 1181 cannot use the first memory address range MR1, the fifth memory address range MR5, which has not yet been allocated any area, can be set in the first area R1. That is, the HMB manager 1181 may allocate the first area R1 to the fifth memory address range MR5 of the host memory 13.

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 HMB controller 1180 may update the HMB allocation table (HMBAT). For example, the HMB manager 1181 may store the fifth memory address range MR5 in the HMB allocation table HMBAT in relation to the first area R1 ([4] in FIG. 14B). In one embodiment, the HMB manager 1181 may determine that the change condition for the data processing policy for the first region R1 has been met because the allocation information for the first region R1 has been changed.

일 실시 예에서, 모니터링 유닛(1185)은 복수의 영역들 각각의 할당 정보를 모니터링 할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB 할당 테이블(HMBAT)을 참조하여, 특정 영역의 할당 정보가 변경되었는지 여부를 판단할 수 있다. 모니터링 유닛(1185)은 특정 영역의 할당 정보가 변경된 경우, 데이터 프로세싱 정책의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다. In one embodiment, the monitoring unit 1185 may monitor allocation information for each of a plurality of areas. For example, the monitoring unit 1185 may refer to the HMB allocation table (HMBAT) to determine whether allocation information of a specific area has changed. When the allocation information of a specific area is changed, the monitoring unit 1185 may detect that the change condition of the data processing policy is met. The monitoring unit 1185 may output a signal to the HMB manager 1181 indicating that the change condition has been met.

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 HMB controller 1180 may change the data processing policy. For example, the HMB manager 1181 changes the data processing policy of the first region (R1) to the first data processing policy (DDP1) based on a change in the signal output from the monitoring unit 1185 or the HMB allocation information for the region. ) can be changed to the fifth data processing policy (DDP5). In step S430, the HMB controller 1180 may update the HMB mapping table (HMBMT). For example, the HMB manager 1181 may update the data processing policy for the first region (R1) to the fifth data processing policy (DDP5) ([5] in FIG. 14b).

도 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 storage device 1000 may change the data processing policy of a specific area based on specific information provided from the host 11.

일 실시 예에서, 스토리지 장치(1000)는 초기화 과정에서, 호스트(11)로부터 HMB 할당 정보를 포함하는 셋-피쳐 커맨드를 수신할 수 있다(도 16a의 [1]). 셋-피쳐 커맨드는 호스트 메모리(13)내에 HMB(14)를 가리키는 메모리 어드레스 정보를 포함할 수 있다. 예를 들어, 셋-피쳐 커맨드는 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)을 포함할 수 있다. 더욱이, 셋-피쳐 커맨드는 HMB(14)에 대한 특성 정보를 더 포함할 수 있다. 예를 들어, 특성 정보는 HMB(14)에 대응하는 메모리 장치의 유형, 메모리 장치의 특성, 메모리 장치의 신뢰성 수준, 또는 메모리 장치의 교체에 관한 정보 등이 포함될 수 있다. In one embodiment, the storage device 1000 may receive a set-feature command including HMB allocation information from the host 11 during the initialization process ([1] in FIG. 16A). The set-feature command may include memory address information pointing to the HMB 14 in the host memory 13. For example, the set-feature command may include first to fifth memory address ranges MR1 to MR5. Moreover, the set-feature command may further include characteristic information for the HMB 14. For example, the characteristic information may include the type of memory device corresponding to the HMB 14, characteristics of the memory device, reliability level of the memory device, or information regarding replacement of the memory device.

스토리지 장치(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 storage device 1000 may classify a plurality of areas and update the HMB allocation table (HMBAT) in response to the HMB allocation information ([2] in FIG. 16A). For example, the HMB manager 1181 stores the first data type (DT1), first memory address range (MR1), and first characteristic (C1) in relation to the first region (R1) in the HMB mapping table (HMBMT). Store a second data type (DT2), a second memory address range (MR2), and a second characteristic (C2) with respect to the second area (R2), and store a second data type (DT2), a second memory address range (MR2), and a second characteristic (C2) with respect to the third area (R3). stores a third data type (DT3), a third memory address range (MR3), and a third characteristic (C3), and, in relation to the fourth region (R4), stores a fourth data type (DT4), a fourth memory address range ( MR4) and the fourth characteristic (C4) can be stored. For example, the first to fourth characteristics C1 to C4 may be related to characteristic information included in the set-feature command. Alternatively, when characteristic information is not included in the set-feature command, the first to fourth characteristics C1 to C4 may have an initialization value.

일 실시 예에서, 도 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 storage device 1000 may receive characteristic information from the host 11. For example, the host 11 may transmit a set-feature command including characteristic information to the storage device 1000 ([3] in FIG. 16B). For example, the characteristic information may indicate changed information (eg, fifth characteristic C5) corresponding to the first memory address range MR1. For example, the set-feature command may indicate that the memory device corresponding to the first memory address range MR1 has been replaced and the type of the memory device has changed. That is, the fifth characteristic (C5) may indicate a changed type of memory device.

S412d 단계에서, 스토리지 장치(1000)는 특성 정보를 기반으로 HMB 할당 테이블(HMBAT)을 갱신할 수 있다. 예를 들어, 특성 정보는 제1 메모리 어드레스 범위(MR1)에 대응하고 제5 특성(C5)을 가리키므로, HMB 관리자(1181)는 제1 영역(R1)과 관련하여, 제5 특성(C5)을 저장할 수 있다.In step S412d, the storage device 1000 may update the HMB allocation table (HMBAT) based on characteristic information. For example, since the characteristic information corresponds to the first memory address range (MR1) and points to the fifth characteristic (C5), the HMB manager 1181 stores the fifth characteristic (C5) in relation to the first region (R1). ) can be saved.

일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대한 특성 정보가 변경되었으므로, 제1 영역(R1)에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었음을 판별할 수 있다. In one embodiment, the HMB manager 1181 may determine that the change condition for the data processing policy for the first region R1 has been met because the characteristic information for the first region R1 has changed.

일 실시 예에서, 모니터링 유닛(1185)은 복수의 영역들 각각의 특성 정보를 모니터링할 수 있다. 예를 들어, 모니터링 유닛(1185)은 HMB 할당 테이블(HMBAT)을 참조하여, 특정 영역의 특성 정보가 변경되었는지 여부를 판단할 수 있다. 모니터링 유닛(1185)은 특정 영역의 특성 정보가 변경된 경우, 데이터 프로세싱 정책의 변경 조건이 충족되었음을 검출할 수 있다. 모니터링 유닛(1185)은 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다. In one embodiment, the monitoring unit 1185 may monitor characteristic information of each of a plurality of areas. For example, the monitoring unit 1185 may refer to the HMB allocation table (HMBAT) to determine whether characteristic information of a specific area has changed. When the characteristic information of a specific area changes, the monitoring unit 1185 may detect that the change conditions of the data processing policy are met. The monitoring unit 1185 may output a signal to the HMB manager 1181 indicating that the change condition has been met.

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 HMB controller 1180 may change the data processing policy. For example, the HMB manager 1181 changes the data processing policy of the first region (R1) to the first data processing policy (DDP1) based on a change in the signal output from the monitoring unit 1185 or the HMB characteristic information for the region. ) can be changed to the fifth data processing policy (DDP5). In step S430, the HMB controller 1180 may update the HMB mapping table (HMBMT). For example, the HMB manager 1181 may update the data processing policy for the first region (R1) to the fifth data processing policy (DDP5) ([5] in FIG. 16b).

도 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 host 11 may transmit a set-feature command to the storage device 1000. The set-feature command may include HMB allocation information. HMB allocation information may include host memory address (or buffer address) information and buffer size information. For example, HMB allocation information may include first to fifth memory address ranges MR1 to MR5.

S502 단계에서, 스토리지 장치(1000)는 셋-피쳐 커맨드에 대응하는 완료 엔트리를 호스트(11)에게 전송할 수 있다. S503 단계에서, 스토리지 장치(1000)는 호스트 메모리 버퍼(HMB)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. 스토리지 장치(1000)는 호스트 메모리 버퍼(HMB)(14)를 복수의 영역들(R1~R4)로 분할하여, 각각 영역들에 다른 종류의 데이터를 저장하고, 데이터 프로세싱 정책을 다르게 적용할 수 있다. In step S502, the storage device 1000 may transmit a completion entry corresponding to the set-feature command to the host 11. In step S503, the storage device 1000 may divide the host memory buffer (HMB) into first to fourth regions R1 to R4. The storage device 1000 may divide the host memory buffer (HMB) 14 into a plurality of areas R1 to R4, store different types of data in each area, and apply different data processing policies. .

S504 단계에서, 스토리지 장치(1000)는 복수의 영역들(R1~R4) 각각에 데이터 프로세싱 정책을 설정할 수 있다. S504 단계는 S412c 단계와 동일 또는 유사하므로, 이에 대한 자세한 설명은 생략된다. In step S504, the storage device 1000 may set a data processing policy in each of the plurality of regions R1 to R4. Since step S504 is the same or similar to step S412c, detailed description thereof is omitted.

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 storage device 1000 may check the data processing policy for the first region R1 based on the HMB mapping table (HMBMT). For example, the CPU 1110 may transmit an HMB write request for the first area R1 and the first data DATA1 to the HMB processing engine 1182 ([1] in FIG. 18A). The HMB controller 118 may determine that the area of the HMB 14 where the first data DATA1 will be stored is the first area R1 based on the HMB write request.

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 HMB 14, the HMB processing engine 1182 can check what the data processing policy of the first area R1 is. The HMB processing engine 1182 may confirm that the data processing policy for the first region (R1) is the first data processing policy (DDP1) based on the HMB mapping table (HMBMT).

S506 단계에서, 스토리지 장치(1000)는 제1 데이터 프로세싱 정책(DDP1)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제1 데이터(DATA1)에 대해서, 제1 데이터 프로세싱 정책(DDP1)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제1 데이터 프로세싱 엔진(DPE1)을 사용하여 인코딩 동작을 수행하고, 제1 인코딩된 데이터를 생성할 수 있다. In step S506, the storage device 1000 may perform an encoding operation based on the first data processing policy (DDP1). For example, the HMB processing engine 1182 may perform an encoding operation on the first data DATA1 based on the first data processing policy DDP1. The HMB processing engine 1182 may perform an encoding operation using the first data processing engine (DPE1) and generate first encoded data.

S507 단계에서, 스토리지 장치(1000)는 제1 인코딩된 데이터를 HMB(14)의 제1 영역(R1)에 기입할 수 있다(도 18a의 [2]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제1 영역(R1)의 어드레스를 포함하는 쓰기 커맨드 및 제1 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S507, the storage device 1000 may write the first encoded data to the first area R1 of the HMB 14 ([2] in FIG. 18A). For example, the HMB processing engine 1182 may transmit a write command and first encoded data including the address of the first region R1 of the HMB 14 to the host 11.

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 storage device 1000 may check the data processing policy for the second region R2 based on the HMB mapping table (HMBMT). For example, the CPU 1110 may transmit an HMB write request for the second area R2 and the second data DATA2 to the HMB processing engine 1182 ([3] in FIG. 18B). The HMB processing engine 1182 may determine that the area of the HMB 14 where the second data will be stored is the second area R2 based on the HMB write request. The HMB processing engine 1182 may check what the data processing policy of the second area R2 is in order to store the second data in the second area R2 of the HMB 14. The HMB processing engine 1182 may confirm that the data processing policy for the second region (R2) is the second data processing policy (DDP2) based on the HMB mapping table (HMBMT).

S509 단계에서, 스토리지 장치(1000)는 제2 데이터 프로세싱 정책(DDP2)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제2 데이터(DATA2)에 대해서, 제2 데이터 프로세싱 정책(DDP2)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제2 데이터 프로세싱 엔진(DPE2)을 사용하여 인코딩 동작을 수행하고, 제2 인코딩된 데이터를 생성할 수 있다. In step S509, the storage device 1000 may perform an encoding operation based on the second data processing policy (DDP2). For example, the HMB processing engine 1182 may perform an encoding operation on the second data (DATA2) based on the second data processing policy (DDP2). The HMB processing engine 1182 may perform an encoding operation using the second data processing engine (DPE2) and generate second encoded data.

S510 단계에서, 스토리지 장치(1000)는 제2 인코딩된 데이터를 HMB(14)의 제2 영역(R2)에 기입할 수 있다(도 18b의 [4]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제2 영역(R2)의 어드레스를 포함하는 쓰기 커맨드 및 제2 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S510, the storage device 1000 may write the second encoded data to the second area R2 of the HMB 14 ([4] in FIG. 18B). For example, the HMB processing engine 1182 may transmit a write command and second encoded data including the address of the second region R2 of the HMB 14 to the host 11.

S511 단계에서, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다. 예를 들어, 스토리지 장치(1000)는 HMB 할당 해제 정보를 포함하는 셋-피쳐 커맨드를 수신할 수 있다(도 18b의 [5]). HMB 할당 해제 정보는 제1 메모리 어드레스 범위(MR1)에 대한 할당 해제 정보를 가리킬 수 있다. In step S511, the host 11 may transmit a set-feature command including HMB deallocation information to the storage device 1000. For example, the storage device 1000 may receive a set-feature command including HMB deallocation information ([5] in FIG. 18B). HMB deallocation information may indicate deallocation information for the first memory address range MR1.

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 storage device 1000 may transmit a completion entry corresponding to the set-feature command to the host 11. In step S513, the storage device 1000 may change the data processing policy of the first region R1. For example, the HMB manager 1181 may reset a plurality of areas in response to deallocation information. For example, the HMB manager 1181 may allocate the fifth memory address range MR5 to the first area R1 instead of the first memory address range MR1. The HMB manager 1181 can update the HMB allocation table (HMBAT). For example, the HMB manager 1181 may store the fifth memory address range MR5 in the HMB allocation table HMBAT ([6] in FIG. 18C) in relation to the first area R1. The HMB manager 1181 may determine that the change condition for the data processing policy for the first region R1 has been met because the allocation information for the first region R1 has been changed. The HMB manager 1181 may change the data processing policy of the first region (R1) from the first data processing policy (DDP1) to the fifth data processing policy (DDP5).

S514 단계에서, 스토리지 장치(1000)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 데이터 프로세싱 정책을 제5 데이터 프로세싱 정책(DDP5)으로 갱신할 수 있다(도 18c의 [7]).In step S514, the storage device 1000 may update the HMB mapping table (HMBMT). For example, the HMB manager 1181 may update the data processing policy for the first region (R1) to the fifth data processing policy (DDP5) ([7] in FIG. 18C).

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 storage device 1000 may check the data processing policy for the first region R1 based on the HMB mapping table (HMBMT). For example, the CPU 1110 may transmit an HMB write request for the first area R1 and third data DATA3 to the HMB processing engine 1182 ([8] in FIG. 18C). The HMB controller 118 may determine that the area of the HMB 14 where the third data DATA3 will be stored is the first area R1 based on the HMB write request.

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 HMB 14, the HMB processing engine 1182 can check what the data processing policy of the first area R1 is. The HMB processing engine 1182 can confirm that the data processing policy for the first region (R1) is the fifth data processing policy (DDP5) based on the HMB mapping table (HMBMT).

S516 단계에서, 스토리지 장치(1000)는 제5 데이터 프로세싱 정책(DDP5)을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 프로세싱 엔진(1182)은 제3 데이터에 대해서, 제5 데이터 프로세싱 정책(DDP5)을 기반으로 인코딩 동작을 수행할 수 있다. HMB 프로세싱 엔진(1182)은 제5 데이터 프로세싱 엔진(DPE5)을 사용하여 인코딩 동작을 수행하고, 제3 인코딩된 데이터를 생성할 수 있다. In step S516, the storage device 1000 may perform an encoding operation based on the fifth data processing policy (DDP5). For example, the HMB processing engine 1182 may perform an encoding operation on third data based on the fifth data processing policy (DDP5). The HMB processing engine 1182 may perform an encoding operation using the fifth data processing engine (DPE5) and generate third encoded data.

S517 단계에서, 스토리지 장치(1000)는 제3 인코딩된 데이터를 HMB(14)의 제1 영역(R1)에 기입할 수 있다(도 18c의 [9]). 예를 들어, HMB 프로세싱 엔진(1182)은 HMB(14)의 제1 영역(R1)의 어드레스를 포함하는 쓰기 커맨드 및 제3 인코딩된 데이터를 호스트(11)로 전송할 수 있다. In step S517, the storage device 1000 may write the third encoded data to the first area R1 of the HMB 14 ([9] in FIG. 18C). For example, the HMB processing engine 1182 may transmit a write command and third encoded data including the address of the first region R1 of the HMB 14 to the host 11.

상술된 바와 같이, 본 개시의 실시 예에 따른 스토리지 장치(1000)는 복수의 데이터 프로세싱 엔진들을 포함할 수 있다. 스토리지 장치(1000)는 신뢰성 및 보안 정보를 기반으로 HMB(14)의 영역별로 상이한 데이터 프로세싱 엔진을 선택적으로 적용할 수 있다. 스토리지 장치(1000)는 변경 조건이 충족된 경우, 신뢰성 및 보안 정보를 기반으로 특정 영역에 대한 데이터 프로세싱 정책을 변경할 수 있다. 이에 따라, 스토리지 장치(1000)는 HMB(14)의 저장 공간을 효율적으로 사용할 수 있으며, 데이터 프로세싱 동작(예를 들어, 인코딩/디코딩)으로 인한 지연을 방지할 수 있다. As described above, the storage device 1000 according to an embodiment of the present disclosure may include a plurality of data processing engines. The storage device 1000 may selectively apply different data processing engines to each area of the HMB 14 based on reliability and security information. When change conditions are met, the storage device 1000 may change the data processing policy for a specific area based on reliability and security information. Accordingly, the storage device 1000 can efficiently use the storage space of the HMB 14 and prevent delays due to data processing operations (eg, encoding/decoding).

도 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 storage device 1000 may divide the HMB 14 into a plurality of regions R1 to R4. The storage device 1000 may include a storage controller 1110 and a non-volatile memory device 1200. The storage controller 1110 includes a central processing unit (CPU) 1110, a flash translation layer (FTL) 1120, an error correction code (ECC) engine 1130, and an AES. (advanced encryption standard) engine 1140, buffer memory 1150, host interface circuit 1160, memory interface circuit 1170, and HMB controller 1180. For convenience of explanation, detailed description of the components described above is omitted.

HMB 컨트롤러(1180)는 HMB 관리자(1181), HMB 프로세싱 엔진(1182), 및 상태 관리자(1183)를 포함할 수 있다. HMB 컨트롤러(1180)는 도2 에 도시된 HMB 컨트롤러(1180)와 유사 또는 동일할 수 있다. HMB 컨트롤러(1180)는 도 1 내지 18c를 참조하여 설명된 HMB와 관련된 동작을 수행할 수 있다. The HMB controller 1180 may include an HMB manager 1181, an HMB processing engine 1182, and a state manager 1183. The HMB controller 1180 may be similar or identical to the HMB controller 1180 shown in FIG. 2. The HMB controller 1180 may perform operations related to the HMB described with reference to FIGS. 1 to 18C.

HMB 프로세싱 엔진(1182)은 인코더, 디코더, 제1 내지 제3 프로세싱 풀들(P1~P3)을 포함할 수 있다. 도 19의 HMB 프로세싱 엔진(1182)은 도 2의 HMB 프로세싱 엔진(1192)과 다르게 복수의 프로세싱 풀들(P1~P3)을 포함할 수 있다. 제1 프로세싱 풀(P1)은 제1 유형 프로세싱 정책(예를 들어, 오류 검출 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다. 제2 프로세싱 풀(P2)은 제2 유형 프로세싱 정책(예를 들어, 오류 정정 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다. 제3 프로세싱 풀(P3)은 제3 유형 프로세싱 정책(예를 들어, 암호화 정책)과 관련된 프로세싱 엔진들을 포함할 수 있다.The HMB processing engine 1182 may include an encoder, a decoder, and first to third processing pools (P1 to P3). Unlike the HMB processing engine 1192 of FIG. 2, the HMB processing engine 1182 of FIG. 19 may include a plurality of processing pools (P1 to P3). The first processing pool P1 may include processing engines associated with a first type processing policy (eg, error detection policy). The second processing pool (P2) may include processing engines associated with a second type processing policy (eg, error correction policy). The third processing pool (P3) may include processing engines related to a third type processing policy (eg, encryption policy).

일 실시 예에서, 제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 controller 1180 may set a data processing policy for each of the plurality of regions R1 to R4. The HMB controller 1180 may select first to third type processing policies for a specific region among the plurality of regions R1 to R4. For example, a first type processing policy may refer to an error detection policy, a second type processing policy may refer to an error correction policy, and a third type processing policy may refer to an encryption policy.

일 실시 예에서, HMB 컨트롤러(1180)는 특정 영역에 대하여 복수의 오류 검출 정책들 중 하나를 선택하고, 복수의 오류 정정 정책들 중 하나를 선택하고, 복수의 암호화 정책들 중 하나를 선택할 수 있다. 즉, HMB 컨트롤러(1180)는 특정 영역에 대해 제1 프로세싱 풀(P1)에서 제1 유형 프로세싱 정책을 선택하고, 제2 프로세싱 풀(P2)에서 제2 유형 프로세싱 정책을 선택하고, 제3 프로세싱 풀(P3)에서 제3 유형 프로세싱 정책을 선택할 수 있다. In one embodiment, the HMB controller 1180 may select one of a plurality of error detection policies, one of a plurality of error correction policies, and one of a plurality of encryption policies for a specific area. . That is, the HMB controller 1180 selects the first type processing policy from the first processing pool (P1), selects the second type processing policy from the second processing pool (P2), and selects the third processing pool for a specific area. A third type processing policy can be selected in (P3).

HMB 컨트롤러(1180)는 특정 영역에 대한 관련된 정보를 기반으로, 제1 내지 제3 유형 프로세싱 정책들을 선택할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 특정 영역에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 기반으로, 오류 검출 정책, 오류 정정 정책, 암호화 정책을 선택할 수 있다. 또는 HMB 컨트롤러(1180)는 특정 영역에 대한 신뢰성 요구 수준 또는 보안 요구 수준을 기반으로 제1 내지 제3 유형 프로세싱 정책을 선택할 수 있다. The HMB controller 1180 may select first to third type processing policies based on relevant information for a specific area. Specifically, the HMB controller 1180 may select an error detection policy, error correction policy, and encryption policy based on allocation information, characteristic information, state information, or mapping information for a specific area. Alternatively, the HMB controller 1180 may select the first to third types of processing policies based on the reliability requirement level or security requirement level for a specific area.

일 실시 예에서, HMB 컨트롤러(1180)는 특정 영역에 대해 제1 내지 제3 유형 프로세싱 정책들 각각에 대응하는 요구치, 및 임계값을 비교하여 제1 내지 제3 유형 프로세싱 정책들을 선택할 수 있다. 요구치는 특정 영역에 요구되는 프로세싱 능력을 수치화한 값일 수 있다. HMB 컨트롤러(1180)는 제1 내지 제3 프로세싱 풀(P1~P3)들 각각에 대한 메타 정보를 프로세싱 메타 테이블(PMT)에 저장하고 관리할 수 있다. 메타 정보는 프로세싱 풀 단위로 관리되고 갱신될 수 있다. 예를 들어, 메타 정보는 각 풀 별 엔진들의 개수, 임계값들 등을 포함할 수 있다. 임계값들은 미리 결정된 값일 수 있다. 임계값들은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다.In one embodiment, the HMB controller 1180 may select the first to third type processing policies by comparing the requirements and thresholds corresponding to each of the first to third type processing policies for a specific area. The required value may be a value that quantifies the processing ability required for a specific area. The HMB controller 1180 may store and manage meta information for each of the first to third processing pools (P1 to P3) in a processing meta table (PMT). Meta information can be managed and updated on a processing pool basis. For example, meta information may include the number of engines for each pool, thresholds, etc. Thresholds may be predetermined values. Thresholds may be selected to be fixed or variable by the designer, manufacturer, and/or user.

예를 들어, 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 HMB manager 1181 can manage the processing meta table (PMT). The HMB manager 1181 may store the first to fourth thresholds TH1a to TH4a in relation to the first processing pool P1. The first error detection policy corresponds to the first threshold TH1a, the second error detection policy corresponds to the second threshold TH2a, the third error detection policy corresponds to the third threshold TH3a, and , the fourth error detection policy may correspond to the fourth threshold (TH4a). The HMB manager 1181 may store the first to fourth thresholds TH1b to TH4b in relation to the second processing pool P2. The first error correction policy corresponds to the first threshold (TH1b), the second error correction policy corresponds to the second threshold (TH2b), the third error correction policy corresponds to the third threshold (TH3b), and , the fourth error correction policy may correspond to the fourth threshold (TH4b). The HMB manager 1181 may store the first to fourth thresholds TH1c to TH4c in relation to the third processing pool P3. The first encryption policy corresponds to the first threshold (TH1c), the second encryption policy corresponds to the second threshold (TH2c), the third encryption policy corresponds to the third threshold (TH3c), and the fourth encryption policy corresponds to the first threshold (TH1c). The encryption policy may correspond to a fourth threshold (TH4c).

도 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 controller 1180 may store one data processing policy in relation to each of a plurality of areas in the HMB mapping table. However, referring to the HMB mapping table (HMBMT) of FIG. 19, the HMB controller 1180 may store a plurality of data processing policies in relation to each of the plurality of areas in the HMB mapping table. That is, the HMB controller 1180 can apply a plurality of data processing policies to data stored in each of the plurality of areas.

일 실시 예에서, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)에 저장하고 관리할 수 있다. HMB(14)의 영역별 맵핑 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 맵핑 정보는 각 영역의 오류 검출 정책, 오류 정정 정책, 및 암호화 정책 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 맵핑 테이블(HMBMT)에 저장되는 맵핑 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다. In one embodiment, the HMB controller 1180 may store and manage mapping information for each of the plurality of regions R1 to R4 in the HMB mapping table (HMBMT). Mapping information for each area of the HMB 14 can be managed and updated in units of divided areas. For example, mapping information may include error detection policy, error correction policy, and encryption policy for each area. However, the scope of the present disclosure is not limited thereto, and the mapping information stored in the HMB mapping table (HMBMT) may include other parameters for each of the plurality of regions (R1 to R4) of the HMB 14.

예를 들어, 제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 controller 1180 does not select an error detection policy for the second region (R2)) and corresponds to the second region (R2) The error correction policy used may be the second error correction policy (ECP2), and the encryption policy corresponding to the second region (R2) may be the second encryption policy (ENP2). The error detection policy corresponding to the third region (R3) is the initial value (i.e., the HMB controller 1180 does not select an error detection policy for the third region (R3)) and corresponds to the third region (R3) The error correction policy is the initial value (i.e., the HMB controller 1180 does not select an error correction policy for the third region (R3)), and the encryption policy corresponding to the third region (R3) is the third encryption policy. It may be (ENP3). The error detection policy corresponding to the fourth region (R4) is the initial value (i.e., the HMB controller 1180 does not select an error detection policy for the fourth region (R4)) and corresponds to the fourth region (R4) The error correction policy is the initial value (i.e., the HMB controller 1180 does not select an error correction policy for the fourth region (R4)), and the encryption policy corresponding to the fourth region (R4) is the initial value (i.e. , the HMB controller 1180 may not select an encryption policy for the fourth region (R4).

상술된 바와 같이, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대하여 어떤 데이터 프로세싱 정책도 선택하지 않을 수 있다. 또는 HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대하여 하나 이상의 프로세싱 정책들을 선택할 수 있다. As described above, the HMB controller 1180 may not select any data processing policy for each of the plurality of regions R1 to R4. Alternatively, the HMB controller 1180 may select one or more processing policies for each of the plurality of regions R1 to R4.

일 실시 예에서, 스토리지 장치(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 storage device 1000 may perform an HMB write operation on the second area R2. For example, the CPU 1110 may transmit an HMB write request for the second region R2 to the HMB processing engine 1182. The HMB processing engine 1182 may transmit encoded write data to the second region R2. Specifically, the HMB processing engine 1182 may check the data processing policy corresponding to the second region (R2) based on the HMB mapping table (HMBMT). The HMB processing engine 1182 may determine that the error correction policy of the second region (R2) is the second error correction policy (ECP2) and the encryption policy of the second region (R2) is the second encryption policy (ENP2). .

HMB 프로세싱 엔진(1182)은 우선 제2 오류 정정 엔진(ECE2)을 기반으로 쓰기 데이터에 대하여 인코딩 동작을 수행하여, 중간 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 제2 암호화 엔진(ENE2)을 기반으로 중간 데이터에 대하여 인코딩 동작을 수행하여 인코딩된 쓰기 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1181)은 쓰기 커맨드 및 인코딩된 쓰기 데이터를 호스트(11)로 전송할 수 있다. 즉, HMB 프로세싱 엔진(1181)은 제2 영역(R2)에 인코딩된 쓰기 데이터를 기입할 수 있다. 오류 정정과 관련된 인코딩 동작을 수행한 후에, 암호화와 관련된 인코딩 동작을 수행한 것은 예시적인 것이며, 본 개시의 범위가 이에 한정되지 아니한다. 데이터 프로세싱 정책들의 인코딩 동작 순서는 구현에 따라 달라질 수 있다. The HMB processing engine 1182 may first perform an encoding operation on the write data based on the second error correction engine (ECE2) to generate intermediate data. The HMB processing engine 1182 may generate encoded write data by performing an encoding operation on intermediate data based on the second encryption engine (ENE2). The HMB processing engine 1181 may transmit a write command and encoded write data to the host 11. That is, the HMB processing engine 1181 can write encoded write data to the second area R2. Performing an encoding operation related to encryption after performing an encoding operation related to error correction is illustrative, and the scope of the present disclosure is not limited thereto. The order of encoding operations of data processing policies may vary depending on implementation.

일 실시 예에서, 스토리지 장치(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 storage device 1000 may perform an HMB read operation on the second area R2. For example, the CPU 1110 may transmit an HMB read request for the second region R2 to the HMB controller 1180. The HMB processing engine 1182 can read read data from the second region R2. The HMB processing engine 1182 can check the data processing policy corresponding to the second region (R2) based on the HMB mapping table (HMBMT). The HMB processing engine 1182 may determine that the error correction policy of the second region (R2) is the second error correction policy (ECP2) and the encryption policy of the second region (R2) is the second encryption policy (ENP2). .

HMB 프로세싱 엔진(1182)은 제2 암호화 엔진(ENE2)을 기반으로 읽기 데이터에 대한 디코딩 동작을 수행하여, 중간 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 중간 데이터의 오류 존재 여부를 판단할 수 있다. 오류가 존재하는 경우, HMB 프로세싱 엔진(1182)은 제2 오류 정정 엔진(ECE)을 기반으로 중간 데이터에 대해 오류 정정 동작을 수행할 수 있다. 즉, HMB 프로세싱 엔진(1182)은 제2 오류 정정 엔진(ECE)을 기반으로 중간 데이터에 대해 오류 정정 동작을 수행하여, 정정된 읽기 데이터를 생성할 수 있다. HMB 프로세싱 엔진(1182)은 정정된 읽기 데이터를 CPU(1110)로 전송할 수 있다. The HMB processing engine 1182 may perform a decoding operation on read data based on the second encryption engine (ENE2) and generate intermediate data. The HMB processing engine 1182 can determine whether an error exists in the intermediate data. If an error exists, the HMB processing engine 1182 may perform an error correction operation on the intermediate data based on the second error correction engine (ECE). That is, the HMB processing engine 1182 can generate corrected read data by performing an error correction operation on intermediate data based on the second error correction engine (ECE). The HMB processing engine 1182 may transmit the corrected read data to the CPU 1110.

도 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 controller 1180 may receive HMB allocation information from the host 11. Since step S610 is the same or similar to step S110 of FIG. 4, detailed description is omitted. The HMB controller 1180 may divide the HMB 14 into first to fourth regions R1 to R4 based on HMB allocation information. The HMB controller 1180 can set data processing policies for each of the plurality of regions (R1 to R4).

일 실시 예에서, HMB 관리자(1181)는 모든 복수의 영역들(R1~R4)에 대하여, 이하에서 설명되는 S620 단계 내지 S670 단계를 수행할 수 있다. 그러나, 도면의 간결성 몇 설명의 편의를 위하여, 이하에서 특정 하나의 영역에 대하여 변경 조건이 충족하는지 여부를 설명한다. 특정 하나의 영역은 제1 영역(R1)으로 가정한다. 단, 본 개시의 범위가 이에 한정되는 것은 아니며, 나머지 영역들(R2~R3)에 대해서도 하기의 설명이 모두 적용될 수 있음이 잘 이해될 것이다. In one embodiment, the HMB manager 1181 may perform steps S620 to S670 described below for all of the plurality of regions R1 to R4. However, for the sake of brevity of the drawings and convenience of explanation, it will be explained below whether the change conditions are met for one specific area. It is assumed that one specific area is the first area (R1). However, it will be well understood that the scope of the present disclosure is not limited thereto, and the following description may be applied to the remaining regions R2 to R3.

구체적으로, S620 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 검출 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 오류 검출 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 검출 정책을 사용할지 여부를 판단할 수 있다. 오류 검출 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S630 단계를 진행하고, 오류 검출 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S640 단계를 진행한다. Specifically, in step S620, the HMB controller 1180 may determine whether to apply an error detection policy to a specific area. For example, the HMB manager 1181 may determine whether to select an error detection policy based on information about the first region R1. The HMB manager 1181 determines whether to use an error detection policy for data stored in the first area (R1) by referring to allocation information, characteristic information, status information, or mapping information for the first area (R1). can be judged. If the error detection policy is applied, the HMB controller 1180 proceeds to step S630, and if the error detection policy is not applied, the HMB controller 1180 proceeds to step S640.

S630 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 오류 검출 정책들(EDP1~EDP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 오류 검출 정책(EDP1)을 선택할 수 있다. In step S630, the HMB controller 1180 may select an error detection policy for a specific area. For example, the HMB manager 1181 may select one of a plurality of error detection policies EDP1 to EDP4 for the first area R1 based on information about the first area R1. That is, the HMB manager 1181 determines the first error detection policy (EDP1) with respect to the first region (R1) by referring to the allocation information, characteristic information, status information, or mapping information for the first region (R1). You can select .

S640 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 정정 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 오류 정정 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 정정 정책을 사용할지 여부를 판단할 수 있다. 오류 정정 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S650 단계를 진행하고, 오류 정정 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S660 단계를 진행한다. In step S640, the HMB controller 1180 may determine whether to apply an error correction policy to a specific area. For example, the HMB manager 1181 may determine whether to select an error correction policy based on information about the first region R1. The HMB manager 1181 determines whether to use an error correction policy for data stored in the first area (R1) by referring to allocation information, characteristic information, status information, or mapping information for the first area (R1). can be judged. If the error correction policy is applied, the HMB controller 1180 proceeds to step S650, and if the error correction policy is not applied, the HMB controller 1180 proceeds to step S660.

S650 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 오류 정정 정책들(ECP1~ECP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 오류 정정 정책(ECP1)을 선택할 수 있다. In step S650, the HMB controller 1180 may select an error correction policy for a specific area. For example, the HMB manager 1181 may select one of a plurality of error correction policies ECP1 to ECP4 for the first area R1 based on information about the first area R1. That is, the HMB manager 1181 refers to the allocation information, characteristic information, status information, or mapping information for the first region (R1) and establishes a first error correction policy (ECP1) with respect to the first region (R1). You can select .

S660 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 암호화 정책을 적용할지 여부를 판별할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로 암호화 정책을 선택할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 암호화 정책을 사용할지 여부를 판단할 수 있다. 암호화 정책을 적용하는 경우 HMB 컨트롤러(1180)는 S670 단계를 진행하고, 오류 정정 정책을 적용하지 않는 경우 HMB 컨트롤러(1180)는 S680 단계를 진행한다. In step S660, the HMB controller 1180 may determine whether to apply an encryption policy to a specific area. For example, the HMB manager 1181 may determine whether to select an encryption policy based on information about the first region R1. The HMB manager 1181 determines whether to use an encryption policy for data stored in the first area (R1) by referring to the allocation information, characteristic information, status information, or mapping information for the first area (R1). You can judge. If the encryption policy is applied, the HMB controller 1180 proceeds to step S670, and if the error correction policy is not applied, the HMB controller 1180 proceeds to step S680.

S670 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 정보를 기반으로, 제1 영역(R1)에 대해서 복수의 암호화 정책들(ENP1~ENP4) 중 하나를 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)과 관련하여 제1 암호화 정책(ENP1)을 선택할 수 있다. In step S670, the HMB controller 1180 may select an encryption policy for a specific area. For example, the HMB manager 1181 may select one of a plurality of encryption policies (ENP1 to ENP4) for the first region (R1) based on information about the first region (R1). That is, the HMB manager 1181 determines the first encryption policy (ENP1) with respect to the first area (R1) by referring to the allocation information, characteristic information, state information, or mapping information for the first area (R1). You can choose.

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 HMB controller 1180 may store information about the data processing policy in the HMB mapping table (HMBMT). For example, the HMB manager 1181 may include a first error detection policy (EDP1), a first error correction policy (ECP1), and a first encryption policy ( ENP1) can be saved. The HMB manager 1181 may store a second error correction policy (ECP2) and a second encryption policy (ENP2) in relation to the second region (R2) in the HMB mapping table (HMBMT). The HMB manager 1181 may store the third encryption policy (ENP3) in relation to the third region (R3) in the HMB mapping table (HMBMT).

도 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 manager 1181 can select one of a plurality of error detection policies for a specific area. The HMB manager 1181 may determine an error detection policy based on related information for a specific area. Specifically, the HMB manager 1181 may select an error detection policy based on allocation information, characteristic information, status information, or mapping information for a specific area.

일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 검출 요구치(VRa)를 연산하고, 복수의 오류 검출 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 오류 검출 정책을 선택할 수 있다. 일 실시 예에서, 검출 요구치(VRa)는 특정 영역에 요구되는 오류 검출 능력을 가리키는 값일 수 있다. 검출 요구치(VRa)는 특정 영역에 얼마나 높은 오류 검출 능력이 필요한지를 가리키는 인자(factor)일 수 있다. 예를 들어, 제1 영역(R1)의 검출 요구치(VRa)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 오류 검출 능력을 수치화한 값일 수 있다. In one embodiment, the HMB manager 1181 calculates a detection requirement (VRa) for a specific area, compares thresholds corresponding to a plurality of error detection policies, and selects an error detection policy corresponding to the specific area. . In one embodiment, the detection requirement VRa may be a value indicating error detection capability required for a specific area. The detection requirement (VRa) may be a factor indicating how high an error detection capability is needed in a specific area. For example, the detection requirement VRa of the first area R1 may be a numerical value of the required error detection capability calculated based on information on the first area R1.

일 실시 예에서, HMB 관리자(1181)는 복수의 오류 검출 정책들에 대응하는 임계값들을 관리할 수 있다. 복수의 오류 검출 정책들에 대응하는 임계값들은 미리 결정된 값일 수 있다. 복수의 오류 검출 정책들에 대응하는 임계값들은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다. In one embodiment, the HMB manager 1181 may manage thresholds corresponding to a plurality of error detection policies. Thresholds corresponding to a plurality of error detection policies may be predetermined values. Thresholds corresponding to a plurality of error detection policies may be selected to be fixed or variable by the designer, manufacturer, and/or user.

도 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 HMB manager 1181 may calculate the detection request value (VRa). For example, the detection requirement (VRa) can be used to select one of a plurality of error detection policies (EDP1 to EDP4). The detection requirement (VRa) can be calculated based on information related to a specific region. For example, the HMB manager 1181 may calculate the detection request value VRa based on allocation information, characteristic information, state information, or mapping information of the first area R1.

S632 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제1 임계값(VTH1a)을 비교할 수 있다. 검출 요구치(VRa)가 제1 임계값(VTH1a) 보다 작은 경우 HMB 관리자(1181)는 S633 단계를 진행하고, 검출 요구치(VRa)가 제1 임계값(VTH1a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S634 단계를 진행한다.In step S632, the HMB manager 1181 may compare the detection request value (VRa) and the first threshold value (VTH1a). If the detection request value (VRa) is less than the first threshold value (VTH1a), the HMB manager 1181 proceeds to step S633, and if the detection request value VRa is greater than or equal to the first threshold value (VTH1a), the HMB manager 1181 ) proceeds to step S634.

S633 단계에서, HMB 관리자(1181)는 제1 오류 검출 정책(EDP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제1 오류 검출 정책(EDP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S633, the HMB manager 1181 may select the first error detection policy (EDP1). That is, the HMB manager 1181 may determine the first error detection policy EDP1 as the first type processing policy of the first region R1. Afterwards, the HMB manager 1181 proceeds to step S640.

S634 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제2 임계값(VTH2a)을 비교할 수 있다. 검출 요구치(VRa)가 제2 임계값(VTH2a) 보다 작은 경우 HMB 관리자(1181)는 S635 단계를 진행하고, 검출 요구치(VRa)가 제2 임계값(VTH2a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S636 단계를 진행한다.In step S634, the HMB manager 1181 may compare the detection request value (VRa) and the second threshold value (VTH2a). If the detection request value (VRa) is less than the second threshold value (VTH2a), the HMB manager 1181 proceeds to step S635, and if the detection request value VRa is greater than or equal to the second threshold value (VTH2a), the HMB manager 1181 ) proceeds to step S636.

S635 단계에서, HMB 관리자(1181)는 제2 오류 검출 정책(EDP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제2 오류 검출 정책(EDP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S635, the HMB manager 1181 may select a second error detection policy (EDP2). That is, the HMB manager 1181 may determine the second error detection policy (EDP2) as the first type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S640.

S636 단계에서, HMB 관리자(1181)는 검출 요구치(VRa) 및 제3 임계값(VTH3a)을 비교할 수 있다. 검출 요구치(VRa)가 제3 임계값(VTH3a) 보다 작은 경우 HMB 관리자(1181)는 S637 단계를 진행하고, 검출 요구치(VRa)가 제3 임계값(VTH3a) 보다 크거나 같은 경우 HMB 관리자(1181)는 S638 단계를 진행한다.In step S636, the HMB manager 1181 may compare the detection request value (VRa) and the third threshold value (VTH3a). If the detection request value (VRa) is less than the third threshold value (VTH3a), the HMB manager 1181 proceeds to step S637, and if the detection request value VRa is greater than or equal to the third threshold value (VTH3a), the HMB manager 1181 ) proceeds to step S638.

S637 단계에서, HMB 관리자(1181)는 제3 오류 검출 정책(EDP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제3 오류 검출 정책(EDP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S637, the HMB manager 1181 may select the third error detection policy (EDP3). That is, the HMB manager 1181 may determine the third error detection policy EDP3 as the first type processing policy of the first region R1. Afterwards, the HMB manager 1181 proceeds to step S640.

S638 단계에서, HMB 관리자(1181)는 제4 오류 검출 정책(EDP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제1 유형 프로세싱 정책으로 제4 오류 검출 정책(EDP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S640 단계를 진행한다. In step S638, the HMB manager 1181 may select the fourth error detection policy (EDP4). That is, the HMB manager 1181 may determine the fourth error detection policy (EDP4) as the first type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S640.

도 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 manager 1181 can select one of a plurality of error correction policies for a specific area. Specifically, the HMB manager 1181 may select an error correction policy based on allocation information, characteristic information, status information, or mapping information for a specific area.

일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 정정 요구치(VRb)를 연산하고, 복수의 오류 정정 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 오류 정정 정책을 선택할 수 있다. 일 실시 예에서, 정정 요구치(VRb)는 특정 영역에 요구되는 오류 정정 능력을 가리키는 값일 수 있다. 예를 들어, 제1 영역(R1)의 정정 요구치(VRb)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 오류 정정 능력을 수치화한 값일 수 있다. In one embodiment, the HMB manager 1181 calculates a correction request value (VRb) for a specific area, compares thresholds corresponding to a plurality of error correction policies, and selects an error correction policy corresponding to the specific area. . In one embodiment, the correction requirement VRb may be a value indicating error correction capability required for a specific area. For example, the correction request value VRb of the first area R1 may be a numerical value of the required error correction capability calculated based on the information of the first area R1.

도 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 HMB manager 1181 may calculate a correction request value (VRb). For example, the correction request value (VRb) can be used to select one of a plurality of error correction policies (ECP1 to ECP4). The correction requirement (VRb) can be calculated based on information related to a specific area. For example, the HMB manager 1181 may calculate the correction request value VRb based on allocation information, characteristic information, status information, or mapping information of the first region R1.

S652 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제1 임계값(VTH1b)을 비교할 수 있다 정정 요구치(VRb)가 제1 임계값(VTH1b) 보다 작은 경우 HMB 관리자(1181)는 S653 단계를 진행하고, 정정 요구치(VRb)가 제1 임계값(VTH1b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S654 단계를 진행한다.In step S652, the HMB manager 1181 may compare the correction request value (VRb) and the first threshold value (VTH1b). If the correction request value (VRb) is less than the first threshold value (VTH1b), the HMB manager 1181 may compare the correction request value (VRb) with the first threshold value (VTH1b). If the step is performed and the correction request value (VRb) is greater than or equal to the first threshold value (VTH1b), the HMB manager 1181 proceeds to step S654.

S653 단계에서, HMB 관리자(1181)는 제1 오류 정정 정책(ECP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제1 오류 정정 정책(ECP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S653, the HMB manager 1181 may select the first error correction policy (ECP1). That is, the HMB manager 1181 may determine the first error correction policy (ECP1) as the second type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S660.

S654 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제2 임계값(VTH2b)을 비교할 수 있다. 정정 요구치(VRb)가 제2 임계값(VTH2b) 보다 작은 경우 HMB 관리자(1181)는 S655 단계를 진행하고, 정정 요구치(VRb)가 제2 임계값(VTH2b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S656 단계를 진행한다.In step S654, the HMB manager 1181 may compare the correction request value (VRb) and the second threshold value (VTH2b). If the correction request value (VRb) is less than the second threshold value (VTH2b), the HMB manager 1181 proceeds to step S655, and if the correction request value VRb is greater than or equal to the second threshold value (VTH2b), the HMB manager 1181 ) proceeds to step S656.

S655 단계에서, HMB 관리자(1181)는 제2 오류 정정 정책(ECP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제2 오류 정정 정책(ECP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S655, the HMB manager 1181 may select a second error correction policy (ECP2). That is, the HMB manager 1181 may determine the second error correction policy (ECP2) as the second type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S660.

S656 단계에서, HMB 관리자(1181)는 정정 요구치(VRb) 및 제3 임계값(VTH3b)을 비교할 수 있다. 정정 요구치(VRb)가 제3 임계값(VTH3b) 보다 작은 경우 HMB 관리자(1181)는 S657 단계를 진행하고, 정정 요구치(VRb)가 제3 임계값(VTH3b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S658 단계를 진행한다.In step S656, the HMB manager 1181 may compare the correction request value (VRb) and the third threshold value (VTH3b). If the correction request value (VRb) is less than the third threshold value (VTH3b), the HMB manager 1181 proceeds to step S657, and if the correction request value VRb is greater than or equal to the third threshold value (VTH3b), the HMB manager 1181 ) proceeds to step S658.

S657 단계에서, HMB 관리자(1181)는 제3 오류 정정 정책(ECP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제3 오류 정정 정책(ECP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S657, the HMB manager 1181 may select a third error correction policy (ECP3). That is, the HMB manager 1181 may determine the third error correction policy (ECP3) as the second type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S660.

S658 단계에서, HMB 관리자(1181)는 제4 오류 정정 정책(ECP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제2 유형 프로세싱 정책으로 제4 오류 정정 정책(ECP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S660 단계를 진행한다. In step S658, the HMB manager 1181 may select the fourth error correction policy (ECP4). That is, the HMB manager 1181 may determine the fourth error correction policy (ECP4) as the second type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S660.

도 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 manager 1181 can select one of a plurality of encryption policies for a specific area. Specifically, the HMB manager 1181 may select an encryption policy based on allocation information, characteristic information, state information, or mapping information for a specific area.

일 실시 예에서, HMB 관리자(1181)는 특정 영역에 대한 암호화 요구치(VRc)를 연산하고, 복수의 암호화 정책에 대응하는 임계값들을 비교하여, 특정 영역에 대응하는 암호화 정책을 선택할 수 있다. 일 실시 예에서, 암호화 요구치(VRc)는 특정 영역에 요구되는 암호화 능력을 가리키는 값일 수 있다. 예를 들어, 제1 영역(R1)의 암호화 요구치(VRc)는 제1 영역(R1)의 정보들을 기반으로 산출된 필요 암호화 능력을 수치화한 값일 수 있다. In one embodiment, the HMB manager 1181 may calculate an encryption requirement (VRc) for a specific area, compare thresholds corresponding to a plurality of encryption policies, and select an encryption policy corresponding to a specific area. In one embodiment, the encryption requirement (VRc) may be a value indicating the encryption capability required for a specific area. For example, the encryption requirement VRc of the first area R1 may be a numerical value of the required encryption capability calculated based on information on the first area R1.

도 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 HMB manager 1181 may calculate the encryption requirement (VRc). For example, the encryption requirement (VRc) can be used to select one of a plurality of encryption policies (ENP1 to ENP4). The encryption requirement (VRc) can be calculated based on information related to a specific area. For example, the HMB manager 1181 may calculate the encryption request value VRc based on allocation information, characteristic information, state information, or mapping information of the first region R1.

S672 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제1 임계값(VTH1c)을 비교할 수 있다 암호화 요구치(VRc)가 제1 임계값(VTH1c) 보다 작은 경우 HMB 관리자(1181)는 S673 단계를 진행하고, 암호화 요구치(VRc)가 제1 임계값(VTH1c) 보다 크거나 같은 경우 HMB 관리자(1181)는 S674 단계를 진행한다.In step S672, the HMB manager 1181 may compare the encryption request value (VRc) and the first threshold value (VTH1c). If the encryption request value (VRc) is less than the first threshold value (VTH1c), the HMB manager 1181 may compare the encryption request value (VRc) with the first threshold value (VTH1c). After proceeding with the step, if the encryption request value (VRc) is greater than or equal to the first threshold value (VTH1c), the HMB manager 1181 proceeds with step S674.

S673 단계에서, HMB 관리자(1181)는 제1 암호화 정책(ENP1)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제1 암호화 정책(ENP1)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S673, the HMB manager 1181 may select the first encryption policy (ENP1). That is, the HMB manager 1181 may determine the first encryption policy (ENP1) as the third type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S680.

S674 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제2 임계값(VTH2c)을 비교할 수 있다. 암호화 요구치(VRc)가 제2 임계값(VTH2c) 보다 작은 경우 HMB 관리자(1181)는 S675 단계를 진행하고, 암호화 요구치(VRc)가 제2 임계값(VTH2c) 보다 크거나 같은 경우 HMB 관리자(1181)는 S676 단계를 진행한다.In step S674, the HMB manager 1181 may compare the encryption requirement (VRc) and the second threshold (VTH2c). If the encryption request (VRc) is less than the second threshold (VTH2c), the HMB manager 1181 proceeds to step S675, and if the encryption request (VRc) is greater than or equal to the second threshold (VTH2c), the HMB manager 1181 ) proceeds to step S676.

S675 단계에서, HMB 관리자(1181)는 제2 암호화 정책(ENP2)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제2 암호화 정책(ENP2)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S675, the HMB manager 1181 may select a second encryption policy (ENP2). That is, the HMB manager 1181 may determine the second encryption policy (ENP2) as the third type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S680.

S676 단계에서, HMB 관리자(1181)는 암호화 요구치(VRc) 및 제3 임계값(VTH3b)을 비교할 수 있다. 암호화 요구치(VRc)가 제3 임계값(VTH3b) 보다 작은 경우 HMB 관리자(1181)는 S677 단계를 진행하고, 암호화 요구치(VRc)가 제3 임계값(VTH3b) 보다 크거나 같은 경우 HMB 관리자(1181)는 S678 단계를 진행한다.In step S676, the HMB manager 1181 may compare the encryption requirement (VRc) and the third threshold (VTH3b). If the encryption request (VRc) is less than the third threshold (VTH3b), the HMB manager 1181 proceeds to step S677, and if the encryption request (VRc) is greater than or equal to the third threshold (VTH3b), the HMB manager 1181 ) proceeds to step S678.

S677 단계에서, HMB 관리자(1181)는 제3 암호화 정책(ENP3)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제3 암호화 정책(ENP3)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S677, the HMB manager 1181 may select a third encryption policy (ENP3). That is, the HMB manager 1181 may determine the third encryption policy (ENP3) as the third type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S680.

S678 단계에서, HMB 관리자(1181)는 제4 암호화 정책(ENP4)을 선택할 수 있다. 즉, HMB 관리자(1181)는 제1 영역(R1)의 제3 유형 프로세싱 정책으로 제4 암호화 정책(ENP4)을 결정할 수 있다. 이후에, HMB 관리자(1181)는 S680 단계를 진행한다. In step S678, the HMB manager 1181 may select the fourth encryption policy (ENP4). That is, the HMB manager 1181 may determine the fourth encryption policy (ENP4) as the third type processing policy of the first region (R1). Afterwards, the HMB manager 1181 proceeds to step S680.

도 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 HMB controller 1180 may determine whether the change conditions for the data processing policy are met. If the change condition is met, the HMB controller 1180 proceeds to step S720, and if the change condition is not met, the HMB controller 1180 proceeds to step S710 again. Since the operations of step S710 are similar to the operations of step S410 of FIG. 8, detailed description thereof is omitted.

S720 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 검출 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 오류 검출 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 검출 정책을 변경할지 여부를 판단할 수 있다. 오류 검출 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S730 단계를 진행하고, 오류 검출 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S740 단계를 진행한다.In step S720, the HMB controller 1180 may determine whether to change the error detection policy for a specific area. For example, the HMB controller 1180 may determine whether to change the error detection policy based on information about the first region R1. The HMB manager 1181 determines whether to change the error detection policy for data stored in the first area (R1) by referring to allocation information, characteristic information, status information, or mapping information for the first area (R1). can be judged. If the error detection policy is changed, the HMB controller 1180 proceeds to step S730, and if the error detection policy is not changed, the HMB controller 1180 proceeds to step S740.

S730 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제1 유형 프로세싱 정책을 제4 오류 검출 정책(EDP4)으로 선택할 수 있다. S730 단계의 동작들은 도 20의 S630 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S730, the HMB controller 1180 may select an error detection policy for a specific area. For example, the HMB controller 1180 may select the first type processing policy of the first region R1 as the fourth error detection policy EDP4. Since the operations of step S730 are the same or similar to step S630 of FIG. 20, detailed description thereof is omitted.

S740 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 오류 정정 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 오류 정정 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 오류 정정 정책을 변경할지 여부를 판단할 수 있다. 오류 정정 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S750 단계를 진행하고, 오류 정정 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S760 단계를 진행한다.In step S740, the HMB controller 1180 may determine whether to change the error correction policy for a specific area. For example, the HMB controller 1180 may determine whether to change the error correction policy based on information about the first region R1. The HMB manager 1181 determines whether to change the error correction policy for data stored in the first area (R1) by referring to the allocation information, characteristic information, status information, or mapping information for the first area (R1). can be judged. If the error correction policy is changed, the HMB controller 1180 proceeds to step S750, and if the error correction policy is not changed, the HMB controller 1180 proceeds to step S760.

S750 단계에서, 스토리지 장치(1000)는 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제2 유형 프로세싱 정책을 제4 오류 정정 정책(ECP4)으로 선택할 수 있다. S750 단계의 동작들은 도 20의 S650 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S750, the storage device 1000 may select an error correction policy for a specific area. For example, the HMB controller 1180 may select the second type processing policy of the first region R1 as the fourth error correction policy ECP4. Since the operations of step S750 are the same or similar to step S650 of FIG. 20, detailed description thereof is omitted.

S760 단계에서, HMB 컨트롤러(1180)는 특정 영역에 대해 암호화 정책을 변경할지 여부를 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)에 대한 정보를 기반으로 암호화 정책을 변경할지 여부를 판단할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보, 특성 정보, 상태 정보, 또는 맵핑 정보 등을 참고하여, 제1 영역(R1)에 저장되는 데이터에 대하여 암호화 정책을 변경할지 여부를 판단할 수 있다. 암호화 정책을 변경하는 경우 HMB 컨트롤러(1180)는 S770 단계를 진행하고, 암호화 정책을 변경하지 않는 경우 HMB 컨트롤러(1180)는 S780 단계를 진행한다.In step S760, the HMB controller 1180 may determine whether to change the encryption policy for a specific area. For example, the HMB controller 1180 may determine whether to change the encryption policy based on information about the first region R1. The HMB manager 1181 determines whether to change the encryption policy for data stored in the first area (R1) by referring to the allocation information, characteristic information, status information, or mapping information for the first area (R1). You can judge. If the encryption policy is changed, the HMB controller 1180 proceeds to step S770, and if the encryption policy is not changed, the HMB controller 1180 proceeds to step S780.

S770 단계에서, 스토리지 장치(1000)는 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 영역(R1)의 제3 유형 프로세싱 정책을 제4 암호화 정책(ENP4)으로 선택할 수 있다. S770 단계의 동작들은 도 20의 S670 단계와 동일 또는 유사하므로, 이에 대한 상세한 설명은 생략된다. In step S770, the storage device 1000 may select an encryption policy for a specific area. For example, the HMB controller 1180 may select the third type processing policy of the first region (R1) as the fourth encryption policy (ENP4). Since the operations of step S770 are the same or similar to step S670 of FIG. 20, detailed description thereof is omitted.

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 storage device 1000 may update the HMB mapping table (HMBMT). For example, the HMB controller 1180 stores the first type processing policy of the first region R1 as the fourth error detection policy EDP4 in the HMB mapping table HMBMT, and stores the first type processing policy of the first region R1 as the fourth error detection policy EDP4. The type 2 processing policy may be stored as a fourth error correction policy (ECP4), and the third type processing policy of the first region (R1) may be stored as a fourth encryption policy (ENP4).

도 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 storage device 1000 may change the data processing policy applied to each of the plurality of areas over time. For example, the storage device 1000 may change the second type processing policy of the first region R1 because the change condition for the data processing policy of the first region R1 is satisfied at the first time point t1. . The storage device 1000 may change the second type processing policy of the second region R2 because the change condition for the data processing policy of the second region R2 is satisfied at the second time point t2.

제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 first buffer 1191 stores read data R(x) in codeword units transmitted from the HMB 14. Data R(x) stored in the first buffer 1191 will be provided to the syndrome calculation block 1192.

신드롬 계산 블록(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 syndrome calculation block 1192 receives read data R(x) and calculates the syndrome S(x). For example, the syndrome S(x) can be calculated by multiplying the provided read data R(x) by the parity detection polynomial H(x). The parity detection polynomial H(x) is created by applying the roots of the generating polynomial G(x). Through the syndrome S(x), the presence or absence of an error in the read data R(x) is detected. Syndrome S(x) includes all error information about data R(x). In other words, the syndrome S(x) includes the location and pattern of the error and even the size of the error. Therefore, through the syndrome S(x), various error bits for the read data R(x) can be detected, error correction possibilities determined, and error correction operations can be performed.

치엔 서치 블록(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 Chien search block 1193 can generate an error correction vector E(x) using the syndrome S(x). Although not shown, the syndrome S(x) calculated by the syndrome calculation block 1192 may be transmitted to the KES block (Key Equation Solver Block). An error location polynomial σ(x) and an error pattern polynomial ω(x) can be generated from the syndrome S(x) by the KES block. The Chien search block 1193 calculates the roots of the error location polynomial. Then, the size of the error corresponding to each of the error positions found through the error position polynomial is calculated. When the Chien Search block 1193 obtains the error location and error size of the read data R(x) through the Chien Search Algorithm, it outputs an error correction vector E(x) to correct these errors. The error correction vector E(x) includes error location information on the transmitted codeword.

오류 어드레스 발생기(1194)는 오류 정정 벡터 E(x)를 사용하여 페이지 버퍼(130)에서 덮어쓰기 되어야 할 부분 데이터의 어드레스 정보를 생성할 수 있다. 오류 어드레스 발생기(1194)는 정정된 데이터로 덮어쓰기 되어야 하는 페이지 버퍼(130)의 위치에 대응하는 페이지 버퍼 어드레스(PB_ADD)를 생성한다. The error address generator 1194 may generate address information of partial data to be overwritten in the page buffer 130 using the error correction vector E(x). The error address generator 1194 generates a page buffer address (PB_ADD) corresponding to a position in the page buffer 130 that should be overwritten with corrected data.

정정부(1195)는 오류 정정 벡터 E(x)를 이용하여 오류가 존재하는 데이터를 정정한다. 정정부(1195)는 제1 버퍼(1191)에 저장된 독출 데이터 R(x)와 치엔 서치 블록(1193)에 의해서 계산된 오류 정정 벡터 E(x)에 대한 배타적 논리합(XOR) 연산을 수행하여 독출 데이터 R(x)에 포함된 오류를 정정할 수 있다. 오류가 정정된 데이터는 제2 버퍼(1196)에 저장될 것이다.The correction unit 1195 corrects data with errors using the error correction vector E(x). The correction unit 1195 reads by performing an exclusive OR (XOR) operation on the read data R(x) stored in the first buffer 1191 and the error correction vector E(x) calculated by the Chien search block 1193. Errors included in data R(x) can be corrected. Error-corrected data will be stored in the second buffer 1196.

도 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 controller 1180 may select a data processing policy for a specific area based on machine learning. HMB manager 1181 may be implemented as a machine learning accelerator configured to perform various machine learning. Alternatively, the HMB manager 1181 may be implemented in the form of software designed to perform various machine learning. In this case, the HMB manager 1181 may be driven by a processor or CPU 1110.

일 실시 예에서, HMB 컨트롤러(1180)는 기계 학습 모델을 사용하여, 특정 영역에 대한 요구치를 연산할 수 있다. 기계 학습 모델은 기계 학습을 통해 사전에 학습된 모델일 수 있다. 기계 학습은 샴 네트워크(Siamese Network), 심층 신경망(deep neural network), 컨볼루션 신경망(convolution neural network), 오토인코더(Auto-encoder) 등과 같은 다양한 기계 학습 방식들 중 하나를 포함할 수 있다. HMB 컨트롤러(1180)는 기계 학습 모델을 사용하여, 복수의 영역들 각각에 대하여, 가장 적합한 데이터 프로세싱 정책을 선택할 수 있다. In one embodiment, the HMB controller 1180 may use a machine learning model to calculate requirements for a specific area. The machine learning model may be a model that has been previously trained through machine learning. Machine learning may include one of a variety of machine learning methods such as Siamese networks, deep neural networks, convolution neural networks, auto-encoders, etc. The HMB controller 1180 may use a machine learning model to select the most appropriate data processing policy for each of the plurality of areas.

S830 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 오류 검출 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 검출 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 검출 요구치를 기반으로 오류 검출 정책을 선택할 수 있다. In step S830, the HMB controller 1180 may select an error detection policy for a specific area based on machine learning. For example, machine learning logic can calculate detection requirements based on information in a specific area. The HMB manager 1181 may select an error detection policy based on the detection requirement calculated from the machine learning logic.

S850 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 오류 정정 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 정정 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 정정 요구치를 기반으로 오류 정정 정책을 선택할 수 있다. In step S850, the HMB controller 1180 may select an error correction policy for a specific area based on machine learning. For example, machine learning logic can calculate correction requirements based on information in specific areas. The HMB manager 1181 may select an error correction policy based on the correction request calculated from the machine learning logic.

S850 단계에서, HMB 컨트롤러(1180)는 기계 학습에 기반하여 특정 영역에 대한 암호화 정책을 선택할 수 있다. 예를 들어, 기계 학습 로직은 특정 영역의 정보를 기반으로 암호화 요구치를 산출할 수 있다. HMB 관리자(1181)는 기계 학습 로직으로부터 산출된 암호화 요구치를 기반으로 암호화 정책을 선택할 수 있다.In step S850, the HMB controller 1180 may select an encryption policy for a specific area based on machine learning. For example, machine learning logic can calculate encryption requirements based on information in specific areas. The HMB manager 1181 may select an encryption policy based on encryption requirements calculated from machine learning logic.

도 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 data center 2000 is a facility that maintains various data and provides various services for various data, and may be called a data storage center. The data center 200 may be a system for operating a search engine or database, and may be a computing system used in various organizations. The data center 2000 may include a plurality of application servers 2100_1 to 2100_n and a plurality of storage servers 2200_1 to 2200_m. The number of application servers 2100_1 to 2100_n and the number of storage servers 2200_1 to 2200_m may vary.

이하에서, 설명의 편의를 위해, 제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 영역을 상기 제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 영역을 제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.
제 3 항에 있어서,
상기 제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:
제 1 항에 있어서,
상기 복수의 영역들에 대한 데이터 프로세싱 정책의 변경 조건이 충족되었는지 여부를 모니터링하는 단계를 더 포함하는 동작 방법.
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.
제 5 항에 있어서,
상기 모니터링하는 단계는:
상기 복수의 영역들 중 적어도 하나의 영역에 처음으로 쓰기 데이터를 전송하는 단계;
상기 적어도 하나의 영역에 대응하는 타이머를 개시하는 단계;
상기 타이머가 만료되었는지 판별하는 단계; 및
상기 타이머가 만료된 경우, 상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법.
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.
제 5 항에 있어서,
상기 모니터링하는 단계는:
상기 복수의 영역들 증 적어도 하나의 영역에 대한 오류율을 모니터링 하는 단계;
상기 오류율이 기준 오류율을 초과하는지 여부를 판별하는 단계; 및
상기 오류율이 기준 오류율을 초과하는 경우, 상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하고,
상기 오류율은 상기 적어도 하나의 영역에서 읽은 데이터의 오류 비율을 가리키는 동작 방법.
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.
제 5 항에 있어서,
상기 모니터링하는 단계는:
상기 외부 호스트로부터 호스트 메모리 버퍼 할당 해제 정보를 수신하는 단계;
상기 할당 해제 정보를 기반으로 상기 복수의 영역들 중 적어도 하나의 영역을 재할당하는 단계; 및
상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법.
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.
제 5 항에 있어서,
상기 모니터링하는 단계는:
상기 외부 호스트로부터 상기 복수의 영역들 중 적어도 하나의 영역에 대한 변경된 특성 정보를 수신하는 단계; 및
상기 적어도 하나의 영역의 데이터 프로세싱 정책을 변경하는 단계를 포함하는 동작 방법.
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 항에 있어서,
제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 영역을 제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.
제 11 항에 있어서,
상기 제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.
제 13 항에 있어서,
제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.
제 14 항에 있어서,
상기 복수의 오류 검출 정책은 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).
제 14 항에 있어서,
상기 제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.
제 13 항에 있어서,
상기 제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.
제 13 항에 있어서,
상기 제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.
제 19 항에 있어서,
상기 변경 조건은 상기 적어도 하나의 영역에 대응하는 타이머가 만료된 경우, 상기 적어도 하나의 영역의 오류율이 기준 오류율을 초과하는 경우, 외부 호스트로부터 할당 해제 정보를 수신한 경우, 또는 상기 적어도 하나의 영역의 변경된 특성 정보를 상기 외부 호스트로부터 수신한 경우에 충족되는 스토리지 장치.
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.
KR1020220029967A 2021-11-15 2022-03-10 Storage device and operation method thereof KR102588751B1 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021043708A (en) * 2019-09-11 2021-03-18 キオクシア株式会社 Memory system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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