KR20230071023A - Storage device and operation method thereof - Google Patents
Storage device and operation method thereof Download PDFInfo
- Publication number
- KR20230071023A KR20230071023A KR1020220049635A KR20220049635A KR20230071023A KR 20230071023 A KR20230071023 A KR 20230071023A KR 1020220049635 A KR1020220049635 A KR 1020220049635A KR 20220049635 A KR20220049635 A KR 20220049635A KR 20230071023 A KR20230071023 A KR 20230071023A
- Authority
- KR
- South Korea
- Prior art keywords
- hmb
- storage device
- data
- security policy
- security
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 230000002159 abnormal effect Effects 0.000 claims abstract description 33
- 238000011017 operating method Methods 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 112
- 206010000117 Abnormal behaviour Diseases 0.000 claims 1
- 238000013507 mapping Methods 0.000 description 47
- 238000010586 diagram Methods 0.000 description 18
- 230000005856 abnormality Effects 0.000 description 8
- 238000012937 correction Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
Description
본 개시는 스토리지 장치 및 이의 동작 방법에 관한 것이다.The present disclosure relates to a storage device and an operating method thereof.
반도체 메모리는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM) 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.Semiconductor memory includes volatile memory devices such as SRAM (Static Random Access Memory) and DRAM (Dynamic RAM), in which stored data is lost when the power supply is cut off, flash memory devices, PRAM (Phase-change RAM), and MRAM (Magnetic RAM). ), RRAM (Resistive RAM), FRAM (ferroelectric RAM), etc.
다양한 전자 장치가 많은 사람에 의해 이용되고 많은 양의 데이터가 생성됨에 따라, 스토리지 장치에서 데이터를 다루는 데에 많은 양의 자원들이 요구되게 되었으며, 많은 양의 데이터를 처리하기 위해 충분한 용량의 메모리가 요구될 수 있다.As various electronic devices are used by many people and generate a large amount of data, a large amount of resources are required to handle data in a storage device, and a memory of sufficient capacity is required to process a large amount of data. It can be.
그러나, 비용, 장치 크기, 설계상 한계 등과 같은 다양한 이슈들 때문에, 충분한 자원들을 갖는 스토리지 장치를 구현하는 것은 어려울 수 있다. 이러한 관점에서, 스토리지 장치를 위한 충분한 자원들을 제공하기 위해 이미 존재하는 자원을 이용하는 것이 유익할 수 있다. 예를 들어, 스토리지 장치는 호스트로부터 메모리 버퍼를 할당받아 이용할 수 있다.However, it can be difficult to implement a storage device with sufficient resources due to various issues such as cost, device size, design limitations, and the like. In this respect, it may be beneficial to use already existing resources to provide sufficient resources for the storage device. For example, the storage device may receive and use a memory buffer allocated from the host.
일 실시 예는 호스트 메모리 버퍼의 보안을 강화할 수 있는 스토리지 장치 및 이의 동작 방법을 제공하고자 한다.An embodiment is intended to provide a storage device capable of enhancing the security of a host memory buffer and an operating method thereof.
일 실시 예에 따른 스토리지 장치의 동작 방법은, 데이터 처리 동안, 스토리지 장치의 외부에 위치하는 호스트 메모리 버퍼(HMB; Host Memory Buffer)의 비정상적인 동작을 검출하는 단계; 및 상기 비정상적인 동작이 검출되면, 상기 스토리지 장치가 상기 HMB에 데이터를 쓰거나 상기 HMB의 데이터를 읽을 때 적용하는 보안 정책을 갱신하는 단계를 포함한다.A method of operating a storage device according to an embodiment includes detecting an abnormal operation of a host memory buffer (HMB) located outside a storage device during data processing; and updating, by the storage device, a security policy applied when writing data to or reading data from the HMB when the abnormal operation is detected.
상기 방법은 호스트로부터 상기 HMB의 할당 정보를 수신하는 단계; 상기 할당 정보에 기초하여 상기 HMB를 복수의 영역으로 분할하는 단계; 및 복수의 영역 각각에 대해서 보안 정책을 매칭시키는 단계를 더 포함하며, 상기 보안 정책을 갱신하는 단계는, 상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계를 포함할 수 있다.The method may include receiving allocation information of the HMB from a host; dividing the HMB into a plurality of areas based on the allocation information; and matching a security policy to each of a plurality of areas, wherein the updating of the security policy may include updating at least one of the security policies matched to each of the plurality of areas. .
상기 보안 정책을 매칭시키는 단계는, 상기 복수의 영역 각각에 대해서 보안 IP(Intellectual Property)를 매칭시키는 단계; 및 상기 복수의 영역 각각에 대하여 키(key)를 매칭시키는 단계 중 적어도 하나를 포함할 수 있다.The matching of the security policy may include matching a security IP (Intellectual Property) for each of the plurality of areas; and matching a key to each of the plurality of areas.
상기 복수의 영역은 제1 영역 및 제2 영역을 포함하며, 상기 보안 정책은 제1 보안 정책 및 상기 제1 보안 정책과 다른 제2 보안 정책을 포함하고, 상기 보안 정책을 매칭시키는 단계는, 상기 제1 영역에 상기 제1 보안 정책을 매칭시키는 단계; 및 상기 제2 영역에 상기 제2 보안 정책을 매칭시키는 단계를 포함할 수 있다.The plurality of areas include a first area and a second area, the security policy includes a first security policy and a second security policy different from the first security policy, and the matching of the security policies comprises: matching the first security policy to a first area; and matching the second security policy to the second area.
상기 제1 영역의 보안 요구 수준은 상기 제2 영역의 보안 요구 수준보다 높고, 상기 제1 보안 정책의 보안 수준은 상기 제2 보안 정책의 보안 수준보다 높을 수 있다.The security requirement level of the first area may be higher than that of the second area, and the security level of the first security policy may be higher than that of the second security policy.
상기 보안 정책을 매칭시키는 단계는, 상기 복수의 영역 각각에 대해서 보안 IP를 매칭시키는 단계를 포함하고, 상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계는, 상기 복수의 영역 중 비정상적인 동작이 발생한 영역에 매칭된 보안 IP를 변경하는 단계를 포함할 수 있다.The matching of the security policies includes matching security IPs for each of the plurality of areas, and the updating of at least one of the security policies matched to each of the plurality of areas includes: Among them, a step of changing a security IP matched to an area in which an abnormal operation has occurred may be included.
상기 보안 정책을 매칭시키는 단계는, 상기 복수의 영역 각각에 대하여 키를 매칭시키는 단계를 포함하고, 상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계는, 상기 복수의 영역 중 비정상적인 동작이 발생한 영역의 키를 변경하는 단계를 포함할 수 있다.The matching of the security policy may include matching a key to each of the plurality of areas, and the updating of at least one of the security policies matched to each of the plurality of areas may include: A step of changing a key of an area in which an abnormal operation has occurred may be included.
상기 비정상적인 동작을 검출하는 단계는, 상기 복수의 영역 각각에 대해서 상기 비정상적인 동작을 검출하는 단계를 포함하고, 상기 비정상적인 동작은, 키 유효 시간이 경과한 경우; 데이터 무결성 체크가 실패한 경우; 및 비정상적인 HMB 할당이 검출된 경우 중 적어도 하나의 경우를 포함할 수 있다.The detecting of the abnormal operation may include detecting the abnormal operation for each of the plurality of regions, and the abnormal operation may include: when a key valid time has elapsed; If a data integrity check fails; and a case in which an abnormal HMB allocation is detected.
상기 데이터 무결성 체크가 실패한 경우는, 데이터 오류율이 오류율 임계치를 초과한 경우를 포함할 수 있다.The case where the data integrity check fails may include a case where a data error rate exceeds an error rate threshold.
상기 비정상적인 HMB 할당이 검출된 경우는, 상기 HMB의 로그 정보를 이용하여, 할당 위치가 변경됨을 검출한 경우를 포함할 수 있다.The case in which the abnormal HMB allocation is detected may include a case in which an allocation location is detected to be changed using log information of the HMB.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 HMB 컨트롤러를 좀 더 상세하게 보여주는 블록도이다.
도 3은 도 2의 HMB 관리자가 생성하는 HMB 할당 테이블(HMBAT)의 예를 보여주는 도면이다.
도 4a 내지 도 4d는 HMB 관리자가 생성하는 HMB 맵핑 테이블(HMBMT)의 예들을 보여주는 도면이다.
도 5는 HMB의 복수의 영역들 및 HMB 관리자가 관리하는 테이블의 예를 보여주는 도면이다.
도 6은 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 7은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 8은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 9는 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다.
도 10은 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 10a 및 도 10b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 12는 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 13a 및 도 13b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 14는 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 15a 및 도 15b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다.
도 16은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다.1 is a block diagram showing a storage system according to an exemplary embodiment of the present disclosure by way of example.
FIG. 2 is a block diagram showing the HMB controller of FIG. 1 in more detail.
FIG. 3 is a diagram showing an example of an HMB allocation table (HMBAT) generated by the HMB manager of FIG. 2 .
4A to 4D are diagrams illustrating examples of HMB mapping tables (HMBMT) created by an HMB manager.
5 is a diagram showing an example of a plurality of areas of the HMB and a table managed by the HMB manager.
6 is a flowchart illustrating an example of an operation of a storage device.
7 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 .
8 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 .
9 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 .
10 is a flowchart showing step S410 of FIG. 9 in more detail.
10A and 10B are diagrams illustrating an example of an operation of the storage device of FIG. 1 .
12 is a flowchart showing step S410 of FIG. 9 in more detail.
13A and 13B are diagrams illustrating an example of an operation of the storage device of FIG. 1 .
14 is a flowchart showing step S410 of FIG. 9 in more detail.
15A and 15B are diagrams illustrating an example of an operation of the storage device of FIG. 1 .
16 is a block diagram illustrating an example of a data center to which a storage device according to an embodiment of the present disclosure is applied.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.Hereinafter, with reference to the accompanying drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily carry out the present invention. However, the present invention may be implemented in many different forms and is not limited to the embodiments described herein.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.And in order to clearly explain the present invention in the drawings, parts irrelevant to the description are omitted, and similar reference numerals are attached to similar parts throughout the specification. In the flowchart described with reference to the drawings, the order of operations may be changed, several operations may be merged, a certain operation may be divided, and a specific operation may not be performed.
또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.In addition, expressions written in the singular may be interpreted in the singular or plural unless explicit expressions such as “one” or “single” are used. Terms including ordinal numbers, such as first and second, may be used to describe various components, but the components are not limited by these terms. These terms may be used for the purpose of distinguishing one component from another.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(1000)를 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(10)은 개인용 컴퓨터, 랩탑, 서버, 워크스테이션, 스마트폰, 태블릿 PC, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하고, 처리된 정보를 저장하도록 구성된 정보 처리 장치들 중 하나일 수 있다.1 is a block diagram showing a storage system according to an exemplary embodiment of the present disclosure by way of example. Referring to FIG. 1 , a
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)에 데이터를 저장하거나 또는 스토리지 장치(1000)에 저장된 데이터를 읽기 위한 요청을 스토리지 장치(1000)로 전송할 수 있다. 일 실시 예에서, 호스트(11)는 스토리지 시스템(10)을 제어하도록 구성된 중앙 처리 유닛(CPU; central processing unit), 애플리케이션 프로세서(AP; application processor)와 같은 프로세서 코어이거나 또는 네트워크를 통해 연결된 컴퓨팅 노드일 수 있다.The
일 실시 예에서, 호스트(11)는 호스트 컨트롤러(12) 및 호스트 메모리(13)를 포함할 수 있다. 호스트 컨트롤러(12)는 호스트(11)의 제반 동작을 제어하거나 또는 호스트(11) 측에서, 스토리지 장치(1000)를 제어하도록 구성된 장치일 수 있다. 호스트 메모리(13)는 호스트(11)에서 사용되는 버퍼 메모리, 캐시 메모리 또는 동작 메모리일 수 있다. 호스트 메모리(13)는 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 호스트 메모리(13)는 호스트(11)에서 구동되는 다양한 소프트웨어나 데이터가 로드될 수 있다.In one embodiment, the
일 실시 예에서, 호스트 메모리(13)는 호스트 메모리 버퍼(HMB; Host memory buffer)(14)를 포함할 수 있다. HMB(14)는 호스트 메모리(13)의 일부 영역을 스토리지 장치(1000)의 버퍼로 할당한 것일 수 있다.In one embodiment, the
일 실시 예에서, HMB(14)는 스토리지 장치(1000)에 의해 관리될 수 있다. HMB(14)에는 스토리지 장치(1000)의 데이터가 저장될 수 있다. 예를 들어, 스토리지 장치(1000)의 메타 데이터 또는 맵핑 테이블 등은 HMB(14)에 저장될 수 있다. 맵핑 테이블은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 맵핑 정보를 포함할 수 있다.In one embodiment, the
스토리지 장치(1000)는 호스트(11)의 제어에 따라 동작할 수 있다. 스토리지 장치(1000)는 스토리지 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다. 스토리지 컨트롤러(1100)는 호스트(11)의 제어에 따라 불휘발성 메모리 장치(1200)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다. 일 실시 예에서, 스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다.The
스토리지 컨트롤러(1100)는 중앙 처리 유닛(CPU; central processing unit)(1110), 플래시 변환 계층(FTL; flash translation layer)(1120), 오류 정정 코드(ECC; error correction code) 엔진(1130), AES(advanced encryption standard) 엔진(1140), 버퍼 메모리(1150), 호스트 인터페이스 회로(1160), 메모리 인터페이스 회로(1170), 및 HMB 컨트롤러(1180)를 포함할 수 있다.The
CPU(1110)는 스토리지 컨트롤러(1100)의 제반 동작을 제어할 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)를 효율적으로 사용하기 위한 다양한 동작을 수행할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)의 저장 공간을 논리 어드레스로서 관리할 수 있다. FTL(1120)은 호스트(11)로부터의 논리 어드레스 및 스토리지 장치(1000)의 물리 어드레스 사이의 어드레스 맵핑을 관리하도록 구성될 수 있다. FTL(1120)은 웨어 레벨링 동작을 수행하여, 불휘발성 메모리 장치(1200)의 메모리 블록들 중 특정 메모리 블록에 대한 과도한 열화를 방지할 수 있다. FTL(1120)의 웨어 레벨링 동작에 의해 불휘발성 메모리 장치(1200)의 수명이 향상될 수 있다. FTL(1120)은 불휘발성 메모리 장치(1200)에 대한 가비지 컬렉션을 수행하여, 자유 메모리 블록을 확보할 수 있다.The
ECC 엔진(1130)은 불휘발성 메모리 장치(1200)로부터 읽은 데이터에 대한 오류 검출 및 오류 정정을 수행할 수 있다. 예를 들어, ECC 엔진(1130)은 불휘발성 메모리 장치(1200)에 기입될 데이터에 대한 오류 정정 코드(또는 패리티 비트)를 생성할 수 있다. 생성된 오류 정정 코드(또는 패리티 비트)는 기입될 데이터와 함께 불휘발성 메모리 장치(1200)에 저장될 수 있다. 이후에, 불휘발성 메모리 장치(1200)로부터 기입된 데이터가 독출될 경우, ECC 엔진(1130)은 독출된 데이터 및 대응하는 오류 정정 코드(또는 대응하는 패리티 비트)를 기반으로 독출된 데이터의 오류를 검출하고 정정할 수 있다.The
AES 엔진(1140)은 호스트(11) 또는 불휘발성 메모리 장치(1200)로부터 수신된 데이터에 대한 암호화(encryption) 동작 또는 해독 동작(decryption) 동작을 수행할 수 있다. 일 실시 예에서, 암호화 동작 또는 해독 동작은 대칭 키 알고리즘(symmetric-key algorithm)을 기반으로 수행될 수 있다.The
일 실시 예에서, FTL(1120), ECC 엔진(1130) 및 AES 엔진(1140) 중 적어도 하나는 소프트웨어 또는 하드웨어로 구현될 수 있다. FTL(1120), ECC 엔진(1130) 및 AES 엔진(1140) 중 적어도 하나가 소프트웨어로 구현되는 경우, 프로그램 코드 또는 정보는 버퍼 메모리(1150)에 저장될 수 있고, CPU(1110)에 의해 실행될 수 있다. FTL(1120), ECC 엔진(1130) 및 AES 엔진(1140) 중 적어도 하나가 하드웨어로 구현되는 경우, FTL(1120), ECC 엔진(1130) 및 AES 엔진(1140) 중 적어도 하나의 동작을 수행하도록 구성된 하드웨어 가속기가 CPU(1110)와 별도로 구비될 수 있다.In one embodiment, at least one of the
버퍼 메모리(1150)는 스토리지 컨트롤러(1100)로 입력된 데이터를 임시 저장하도록 구성된 쓰기 버퍼 또는 읽기 버퍼일 수 있다. 또는 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 예를 들어, 버퍼 메모리(1150)는 FTL(1120)에 의해 관리되는 맵핑 테이블을 저장할 수 있다. 또는 버퍼 메모리(1150)는 FTL(1120)과 관련된 소프트웨어, 펌웨어, 또는 정보를 저장할 수 있다. 좀 더 구체적으로, 버퍼 메모리(1150)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT) 등을 저장할 수 있다. 버퍼 메모리(1150)는 메모리 블록들에 대한 메타 데이터를 저장할 수 있다.The
일 실시 예에서, 버퍼 메모리(1150)는 SRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 버퍼 메모리(1150)는 DRAM, MRAM, PRAM 등과 같은 다양한 종류의 메모리 장치로 구현될 수 있다. 버퍼 메모리(1150)가 스토리지 컨트롤러(1100)에 포함되는 것으로 도 1에 도시되어 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 버퍼 메모리(1150)는 스토리지 컨트롤러(1100)의 외부에 위치할 수 있고, 스토리지 컨트롤러(1100)는 별도의 통신 채널 또는 인터페이스를 통해 버퍼 메모리와 통신할 수 있다.In one embodiment, the
호스트 인터페이스 회로(1160)는 미리 정해진 인터페이스 규약에 따라, 호스트(11)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial ATA) 인터페이스, e-SATA(external SATA) 인터페이스, SCSI(Small Computer Small Interface) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, PCI(Peripheral Component Interconnection) 인터페이스, PCIe(PCI express) 인터페이스, NVMe(NVM express) 인터페이스, IEEE 1394, USB(universal serial bus) 인터페이스, SD(secure digital) 카드, MMC(multi-media card) 인터페이스, eMMC(embedded multi-media card) 인터페이스, UFS(Universal Flash Storage) 인터페이스, eUFS(embedded Universal Flash Storage) 인터페이스, CF(compact flash) 카드 인터페이스, 또는 네트워크 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 호스트 인터페이스 회로(1160)는 미리 정해진 인터페이스 규약에 기반한 신호를 호스트(11)로부터 수신하고, 수신된 신호를 기반으로 동작할 수 있다. 또는 호스트 인터페이스회로(1160)는 미리 정해진 인터페이스 규약에 기반한 신호를 호스트(11)로 전송할 수 있다.The
메모리 인터페이스 회로(1170)는 미리 정해진 인터페이스 규약에 따라 불휘발성 메모리 장치(1200)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 토글 인터페이스, 온파이(ONFI; Open NAND Flash Interface) 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, 메모리 인터페이스 회로(1170)는 토글 인터페이스를 기반으로 불휘발성 메모리 장치(1200)와 통신할 수 있다. 이 경우, 메모리 인터페이스 회로(1170)는 복수의 채널들을 통해 불휘발성 메모리 장치(1200)와 통신할 수 있다. 일 실시 예에서, 복수의 채널들 각각은 다양한 제어 신호들, 데이터 신호들, 및 데이터 스트로브 신호를 전송하도록 구성된 복수의 신호 라인들을 포함할 수 있다.The
HMB 컨트롤러(1180)는 HMB(14)를 관리할 수 있다. HMB 컨트롤러(1180)는 HMB(14)를 버퍼로 이용하여 다양한 데이터를 저장하고 관리할 수 있다. HMB 컨트롤러(1180)는, 데이터의 신뢰성 또는 보안을 위하여, 보안 정책을 기반으로 데이터에 대한 인코딩 동작을 수행하고, 인코딩된 데이터를 HMB(14)에 저장할 수 있다. HMB 컨트롤러(1180)는 HMB(14)로부터 인코딩된 데이터를 읽고, 해당 데이터에 대해 디코딩 동작을 수행할 수 있다.The
일 실시 예에서, HMB 컨트롤러(1180)는 호스트(11)로부터 제공된 HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할하여 관리할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각에 보안 정책을 선택할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 복수의 영역들 각각에 대하여 동일한 또는 상이한 보안 정책들을 설정할 수 있다. HMB 컨트롤러(1180)는 복수의 영역들 각각의 특성, 다양한 정보들을 기반으로, 복수의 영역들 각각에 대한 보안 정책들을 선택할 수 있다.In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 HMB(14)의 영역별 신뢰성 수준 및 보안 수준 중 적어도 하나를 기반으로 HMB(14)의 영역별 보안 정책을 설정할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 저장될 데이터의 유형을 기반으로 보안 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 요구되는 데이터의 신뢰성 또는 보안을 기반으로 보안 정책을 설정할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성을 기반으로 보안 정책을 설정할 수 있다. 예를 들어, 보안 정책은 사용자에 대한 정보 보호 또는 보안성을 제공하기 위하여 데이터를 암호화 또는 해독하기 위한 기술에 관한 것일 수 있다. 또한, 보안 정책은 어떠한 보안 IP(Intellectual Property) 또는 어떠한 키 등을 사용하여 HMB(14)에 데이터를 쓰거나 HMB(14)의 데이터를 읽을지에 대한 정책을 포함할 수 있다. 보안 IP는 보안 알고리즘을 사용하기 위해 설계된 집적 회로(IC; Integrated Circuit)를 포함할 수 있다.In an embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 영역들 각각에 대한 변경 조건이 충족된 경우, 대응하는 보안 정책을 변경할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 동작 중(예를 들어, 런타임 동안)에 특정 영역에 대한 보안 정책을 변경할 수 있다. HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성이 변화하거나, 특정 영역에 저장될 데이터의 유형이 변화하거나, 특정 영역에 대한 신뢰성 요구 수준이 변화하거나, 특정 영역에 대한 보안 요구 수준이 변화하거나, 키 유효 시간이 경과하거나, 데이터 무결성 체크가 실패하거나, 비정상적인 메모리 버퍼 할당이 검출되는 등의 경우에 보안 정책의 변경 조건이 충족되었다고 판단할 수 있다.In an embodiment, the
여기서, 높은 보안이 요구되는 데이터가 저장되는 경우나, 신뢰성 요구 수준이 상향된 경우나, 보안 요구 수준이 상향된 경우나, 키 유효 시간이 경과한 경우나, 데이터 무결성 체크가 실패하거나, 비정상적인 메모리 버퍼 할당이 검출되는 경우는 보안성 강화가 필요한 경우일 수 있다. 보안성 강화에 관한 변경 조건이 충족된 경우, HMB 컨트롤러(1180)는 특정 영역에 대해 보안성이 높은 보안 IP로 변경하거나, 보안성이 높은 키로 변경할 수 있다. 예를 들어, 보안성이 높은 키로의 변경은 이전 키보다 비트 수가 많은 키로의 변경을 의미할 수 있다.Here, when data requiring high security is stored, when the reliability requirement level is raised, when the security requirement level is raised, when the key validity time has elapsed, when data integrity check fails, or when abnormal memory A case in which buffer allocation is detected may be a case in which security enhancement is required. When a change condition for enhancing security is satisfied, the
대안적으로, 키 유효 시간이 경과한 경우에는 HMB 컨트롤러(1180)는 동일한 보안성을 갖는 다른 보안 정책으로 변경할 수도 있다.Alternatively, when the key validity time has elapsed, the
또한, 낮은 보안이 요구되는 데이터가 저장되는 경우나, 신뢰성 요구 수준이 하향된 경우나, 보안 요구 수준이 하향된 경우는 보안성 완화가 필요한 경우일 수 있다. 보안성 완화에 관한 변경 조건이 충족된 경우, HMB 컨트롤러(1180)는 특정 영역에 대해 보안성이 낮은 보안 IP로 변경하거나, 보안성이 낮은 키로 변경할 수 있다. 예를 들어, 보안성이 낮은 키로의 변경은 이전 키보다 비트 수가 적은 키로의 변경을 의미할 수 있다.In addition, when data requiring low security is stored, when the reliability requirement level is lowered, or when the security requirement level is lowered, security mitigation may be required. When a change condition for security relaxation is satisfied, the
본 실시 예에 따른 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 보안 정책을 선택할 수 있다. 예를 들어, 스토리지 장치(1000)는 데이터 신뢰성 요구도가 높은 영역에 대해 보안성이 높은 보안 정책을 설정하고, 데이터 신뢰성 요구도가 낮은 영역에 대해 보안성이 낮은 보안 정책을 설정할 수 있다.The
이에 따라, 기존에 HMB(14) 전체에 대하여 동일한 보안 정책만 설정 가능한 경우, 즉, HMB(14)의 영역별로 적합한 보안 정책을 선택할 수 없는 경우, HMB(14)에 저장될 데이터 중 일부에 대해서만 보안성이 높은 보안 정책이 필요한 경우에도, HMB(14)에 저장될 모든 데이터에 대해 보안성이 높은 보안 정책을 사용해야 하고, 보안성이 높은 보안 정책을 사용함으로 인해서 오버헤드가 증가하거나 복잡한 연산을 수행함으로써 레이턴시가 증가하는 점을 개선할 수 있다. 이에 따라, 스토리지 장치(1000)의 성능이 향상될 수 있다.Accordingly, when only the same security policy can be set for the
상술된 바와 같이, 스토리지 장치(1000)는 HMB(14)의 영역별로 적합한 보안 정책을 선택하고, 변경 조건이 충족된 경우 HMB(14)의 영역에 대응하는 보안 정책을 변경할 수 있다. 이에 따라, 스토리지 장치(1000)는 향상된 성능 및 향상된 신뢰성을 가질 수 있다. 본 개시의 실시 예에 따른 호스트(11) 및 스토리지 장치(1000)의 동작 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.As described above, the
도 2는 도 1의 HMB 컨트롤러를 좀 더 상세하게 보여주는 블록도이다, 도 3은 도 2의 HMB 관리자가 생성하는 HMB 할당 테이블(HMBAT)의 예를 보여주는 도면이다. 도 4a 내지 도 4d는 HMB 관리자가 생성하는 HMB 맵핑 테이블(HMBMT)의 예들을 보여주는 도면이다.FIG. 2 is a block diagram showing the HMB controller of FIG. 1 in more detail. FIG. 3 is a diagram showing an example of an HMB allocation table (HMBAT) created by the HMB manager of FIG. 2 . 4A to 4D are diagrams illustrating examples of HMB mapping tables (HMBMT) created by an HMB manager.
도 1, 도 2, 도 3, 및 도 4a 내지 도 4d를 참조하면, 스토리지 장치(1000)는 호스트(11)의 자원을 이용할 수 있다. 예를 들어, 스토리지 장치(1000)는 HMB(14)를 버퍼로 이용하여 다양한 데이터를 관리할 수 있다. 이에 따라, 충분한 자원들이 스토리지 장치(1000)를 위해 제공될 수 있다.Referring to FIGS. 1 , 2 , 3 , and 4A to 4D , the
HMB 컨트롤러(1180)는 HMB 관리자(HMB Manager)(1181), 보안 IP 풀(Security IP Pool)(1182), 비정상 검출기(Abnormality Detector)(1183), 인코더(Encoder)(1188), 및 디코더(Decoder)(1189)를 포함할 수 있다. The
HMB 관리자(1181)는 HMB 컨트롤러(1180)의 제반 동작을 제어할 수 있다. 예를 들어, HMB 관리자(1181)는 호스트(11)로부터 HMB 할당 정보를 수신하고, HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들로 분할할 수 있다. The
도 3에 도시된 바와 같이, HMB 관리자(1181)는 HMB(14)의 복수의 영역들의 물리 어드레스(3010), 논리 어드레스(3020), 맵핑 여부(3030), 태그 정보(3040) 등을 포함하는 HMB 할당 테이블(HMBAT)을 생성하고 저장할 수 있다.As shown in FIG. 3, the
물리 어드레스(3010)는 HMB 관리자(1181)가 분할한 HMB(14)의 각 영역의 실제 어드레스를 나타낼 수 있다.The
논리 어드레스(3020)는 HMB(14)의 영역들을 관리하기 위해 HMB 관리자(1181)가 설정한 논리 엔트리(logical entry)일 수 있다. 논리 어드레스(3020)는 물리 어드레스(3010)에 대응할 수 있다.The
맵핑 여부(3030)는 물리 어드레스(3010)와 논리 어드레스(3020)가 맵핑되었는지 여부를 나타낼 수 있다. 예를 들어, 맵핑이 된 경우는 '1'로 나타내고, 맵핑이 되지 않은 경우는 '0'으로 나타낼 수 있다.
태그 정보(3040)는 HMB(14)의 영역들의 식별자를 나타낼 수 있다. 예를 들어, HMB 관리자(1181)는 HMB(14)를 영역 0, 영역 1, ..., 영역 N(여기서 N은 자연수)으로 분할할 수 있고, 태그 정보(3040)는 해당 영역들을 식별하기 위한 값으로 '0', '1', ..., 'N'을 포함할 수 있다.The
HMB 관리자(1181)는 복수의 영역들 각각에 보안 정책을 설정할 수 있다. 예를 들어, HMB 관리자(1181)는 복수의 영역들 각각에 보안 IP 또는 키 등을 설정하고, HMB 맵핑 테이블(HMBMT)을 생성하여 저장할 수 있다. HMB 맵핑 테이블(HMBMT)은 HMB(14)의 영역의 태그 정보(3110), 보안 IP(3120), 및 키(3130)를 포함할 수 있다. HMB 관리자(1181)는 변경 조건이 충족된 경우, 특정 영역의 보안 정책을 변경할 수 있다. 예를 들어, HMB(14)의 비정상적인 동작이 검출되면 HMB 관리자(1181)는 보안 IP 및 키 중 적어도 하나를 변경할 수 있다. 보안 IP를 변경하면 키 값 생성 방식이 변경될 수 있다. 키를 변경하는 것은 키 맵핑 테이블에서 해당 영역의 키 값을 변경하는 것을 의미할 수 있다. HMB 관리자(1181)는 변경된 보안 정책을 HMB 맵핑 테이블(HMBMT)에 반영할 수 있다.The
도 4a에 도시된 바와 같이, HMB 관리자(1181)는 HMB(14)의 영역 0에 보안 IP(IP #1)를 설정하고, '010011010..'의 128비트 키를 설정할 수 있다. HMB 관리자(1181)는 HMB(14)의 영역 1에 보안 IP(IP #0)를 설정하고, '110110000101001100..'의 256비트 키를 설정할 수 있다. HMB 관리자(1181)는 HMB(14)의 영역 N에 보안 IP(IP #2)를 설정하고, '110011011..'의 128비트 키를 설정할 수 있다.As shown in FIG. 4A , the
도 4a에 도시된 바와 같이 보안 정책이 설정된 후, 비정상 검출기(1184)가 HMB(14)의 영역 1의 비정상적인 동작을 검출하고 HMB 관리자(1181)에 통지할 수 있다. 도 4b에 도시된 바와 같이, HMB 관리자(1181)는 영역 1의 키를 '000110100010111111..'의 256비트 키로 변경할 수 있다.After the security policy is set as shown in FIG. 4A , the
비정상 검출기(1184)가 HMB(14)의 영역 0의 비정상적인 동작을 검출하고 HMB 관리자(1181)에 통지하면, 도 4c에 도시된 바와 같이, HMB 관리자(1181)는 영역 0의 보안 IP를 보안 IP(IP #1)에서 보안 IP(IP #0)로 변경하고, 키를 '110110011101001100..'의 256비트 키로 변경할 수 있다.When the
비정상 검출기(1184)가 HMB(14)의 영역 N의 비정상적인 동작을 검출하고 HMB 관리자(1181)에 통지하면, 도 4d에 도시된 바와 같이, HMB 관리자(1181)는 영역 N의 보안 IP를 보안 IP(IP #2)에서 보안 IP(IP #1)로 변경할 수 있다.When the
HMB 관리자(1181)는 HMB와 관련된 정보를 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 맵핑 테이블(HMBMT), 및 HMB 상태 테이블(HMBST)을 생성하고 관리할 수 있다.The
보안 IP 풀(1182)은 복수의 보안 IP들(IP #0~IP #n)(여기서 n은 자연수)을 포함할 수 있다. 복수의 보안 IP들(IP #0~IP #n) 각각은 설정된 보안 정책에 따라 보안 절차를 수행하는 논리 연산 모듈로 구현될 수 있다. 복수의 보안 IP들(IP #0~IP #n)에는 서로 다른 보안 정책이 설정되어, 복수의 보안 IP들(IP #0~IP #n) 각각은 서로 다른 방식으로 키 값을 생성할 수 있다. 따라서, 복수의 보안 IP들(IP #0~IP #n)은 서로 다른 보안 정책에 따라 서로 다른 방식으로 보안 절차를 수행할 수 있다. 보안 절차는 암호화, 해독, 인증 등의 절차를 포함할 수 있다.The
보안 정책은 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) 중 적어도 하나와 관련될 수 있다. The security policy is a cyclic redundancy check (CRC) (eg, CRC-16, CRC-32, CRC-64, CRC-128, CRC-256, etc.), Hamming Code, Low Density Parity Check (LDPC) , BCH code (Bose-Chaudhuri-Hocquenghem Code), RS code (Reed-Solomon Code), Viterbi code, Turbo code, Advanced Encryption Standard (AES) (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).
인코더(1188)는 데이터에 대한 인코딩 동작을 수행하여 인코딩된 데이터를 생성할 수 있다. 인코더(1188)는 HMB 관리자(1181)에 의해 선택된 복수의 보안 IP들(IP #0~IP #n) 중 하나를 사용하여 데이터에 대한 인코딩 동작을 수행할 수 있다. 인코더(1188)에 의해 인코딩된 데이터는 HMB(14)로 전송될 수 있다.Encoder 1188 may perform an encoding operation on the data to generate encoded data. The
디코더(1189)는 인코딩된 데이터에 대한 디코딩 동작을 수행하여 디코딩된 데이터를 생성할 수 있다. 디코딩된 데이터는 인코딩 전의 데이터일 수 있다. 디코더(1189)는 HMB 관리자(1181)에 의해 선택된 복수의 보안 IP들(IP #0~IP #n) 중 하나를 사용하여 인코딩된 데이터에 대한 디코딩 동작을 수행할 수 있다.The
도 2에서는 설명의 편의를 위해 인코더(1188)와 디코더(1189)가 보안 IP 풀(1182)의 외부에 배치되는 것으로 도시하였지만, 반드시 이에 한정되는 것은 아니고, 인코더(1188)와 디코더(1189)가 보안 IP 풀(1182)과 함께 하나의 모듈을 구성하는 것으로 구현될 수도 있다.In FIG. 2, for convenience of explanation, the
비정상 검출기(1183)는 보안 정책의 변경 조건이 충족되었는지 여부를 모니터링 할 수 있다. 보안 정책의 변경 조건은 HMB(14)의 적어도 하나의 영역의 비정상적인 동작이 발생하는 경우를 포함할 수 있다. 비정상 검출기(1183)는 보안 정책의 변경 조건이 충족된 경우, HMB 관리자(1181)에게 변경 조건이 충족되었음을 가리키는 변경 신호를 출력할 수 있다.The
비정상 검출기(1183)는 타이머(1184), 데이터 무결성 검사기(1185), 및 HMB 할당 검사기(1186)를 포함할 수 있다. 타이머(1184)는 보안 정책의 변경 조건에 관한 특정 이벤트가 발생한 시점(이하, 특정 시점)부터 미리 정해진 시간을 카운팅 하도록 구성될 수 있다. 예를 들어, 타이머(1184)는 시스템 클럭 또는 동작 클럭을 카운팅하여, 특정 시점으로부터 경과된 시간 또는 미리 정해진 시간을 카운팅하도록 구성될 수 있다.The
일 실시 예에서, 타이머(1184)는 복수의 영역 각각에 대해서 특정 시점으로부터(예를 들어, 제1 영역에 데이터가 처음 기입된 시점으로부터) 경과된 시간을 카운트할 수 있다. 타이머(1184)의 카운트 결과를 경과 시간이라 한다. 비정상 검출기(1183)는 복수의 영역 각각에 대한 경과 시간이 HMB 상태 테이블(HMBST)에 포함된 경과 시간 정보에 대응하는 기준 시간을 초과한 경우, 해당 영역에 대한 보안 정책 변경 조건이 충족되었음을 판단할 수 있다. 기준 시간은 데이터 유형 별로 또는 영역 별로 상이하게 설정될 수 있다. 이에, 비정상 검출기(1183)는 HMB 관리자(1181)에게 변경 조건이 충족되었음을 가리키는 변경 신호를 출력하고, HMB 관리자(1181)는 특정 영역에 대한 보안 정책을 변경할 수 있다.In one embodiment, the
데이터 무결성 검사기(1185)는 HMB(14)의 복수의 영역들에 저장된 데이터의 무결성을 검사할 수 있다. 예를 들어, 데이터 무결성 검사기(1185)는 데이터의 오류율 등을 모니터링할 수 있다.The
일 실시 예에서, 데이터 무결성 검사기(1185)는 HMB 상태 테이블(HMBST)을 참조하여, 모니터링되는 오류율이 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 오류율의 수치가 임계치에 도달하는 경우, 변경 조건이 충족될 수 있다. 이에, 비정상 검출기(1183)는 HMB 관리자(1181)에게 변경 조건이 충족되었음을 가리키는 변경 신호를 출력하고, HMB 관리자(1181)는 특정 영역에 대한 보안 정책을 변경할 수 있다.In one embodiment, the
HMB 할당 검사기(1186)는 HMB(14)의 복수의 영역들의 상태 정보를 모니터링할 수 있다. 예를 들어, HMB 할당 검사기(1186)는 메모리 장치의 상태, HMB의 상태, 복수의 영역들의 상태, 메모리 장치의 유형, 무효인 메모리의 영역들의 비율 등을 모니터링할 수 있다. 이때, HMB 할당 검사기(1186)는 복수의 영역들의 로그 정보를 사용하여 모니터링을 수행할 수 있다.The
일 실시 예에서, HMB 할당 검사기(1186)는 HMB 상태 테이블(HMBST)을 참조하여, 모니터링되는 상태들이 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 임계치에 도달하는 경우, 변경 조건이 충족될 수 있다.In one embodiment, the
임계치는 변경 조건 동작이 요구되는 상태의 수준을 고려하여 선택될 수 있다.The threshold may be selected in consideration of a level of a state for which a change condition operation is required.
도 5는 HMB의 복수의 영역들 및 HMB 관리자(1181)가 관리하는 테이블의 예를 보여주는 도면이다. 도 1 및 도 5를 참조하면, HMB 관리자(1181)는 호스트(11)로부터 제공된 HMB 할당 정보를 기반으로 HMB(14)를 복수의 영역들(R1~R4)로 분할하여 관리할 수 있다. HMB(14)는 제1 내지 제4 영역들(R1~R4)을 포함하는 것으로 가정한다. 단, 본 개시의 범위가 이에 한정되지 아니하며, HMB(14)에 포함된 영역들의 개수는 구현에 따라 증가 또는 감소될 수 있다.5 is a diagram showing an example of a plurality of areas of the HMB and a table managed by the
HMB 관리자(1181)는 HMB와 관련된 정보들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)을 관리할 수 있다. HMB 할당 테이블(HMBAT), HMB 상태 테이블(HMBST), HMB 맵핑 테이블(HMBMT)은 버퍼 메모리(1150) 또는 불휘발성 메모리 장치(1200)에 저장될 수 있다.The
일 실시 예에서, HMB 관리자(1181)는 HMB 할당 정보를 기반으로 HMB 할당 테이블(HMBAT)을 생성하여, 버퍼 메모리(1150)에 저장할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각에 대한 할당 정보를 HMB 할당 테이블(HMBAT)에 저장하고 갱신할 수 있다. HMB(14)의 영역별 할당 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 할당 정보는 각 영역의 태그 정보, 각 영역에 저장 또는 버퍼링되는 데이터의 유형(또는 종류), 각 영역에 대한 해제 우선 순위, 각 영역의 상태, 각 영역의 크기, 각 영역의 호스트 메모리 어드레스 범위, 각 영역의 신뢰성 요구 수준, 각 영역의 보안 요구 수준 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 할당 테이블(HMBAT)에 저장되는 할당 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다.In an embodiment, the
예를 들어, 태그 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각을 고유하게 식별하기 위해 참조되는 속성일 수 있다. 그러나, 복수의 영역들(R1~R4)을 고유하게 식별하기 위해 다른 기준이 이용될 수 있는 경우, HMB 할당 테이블(HMBAT)은 태그 정보를 포함하지 않을 수 있다.For example, the tag information may be an attribute referred to uniquely identify each of the plurality of regions R1 to R4 of the
일 실시 예에서, 복수의 영역들(R1~R4) 각각은 하나의 유형의 데이터를 저장하도록 구성될 수 있다. 예를 들어, 데이터의 유형은 맵핑 데이터, 사용자 데이터, 메타 데이터(예를 들어, ECC 데이터, 상태 데이터 등), 파워게이팅 데이터(예를 들어, 전력 중단 시 보존을 필요로 하는 데이터) 등을 포함할 수 있다. 복수의 영역들은 상이한 유형의 데이터를 저장할 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니하며, 데이터의 유형은 스토리지 장치에서 사용되는 다른 종류의 데이터가 포함될 수 있으며, 하나의 영역은 둘 이상의 유형의 데이터를 저장하거나, 둘 이상의 영역은 하나의 유형의 데이터를 저장할 수 있고, 또는 영역은 데이터의 유형과 무관하게 구성될 수 있다.In one embodiment, each of the plurality of regions 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.), powergating data (e.g., data that needs to be preserved in case of a power outage), etc. can do. A plurality of regions can store different types of data. However, the scope of the present disclosure is not limited thereto, and the type of data may include other types of data used in the storage device, one area stores two or more types of data, or two or more areas store one type of data. Of data can be stored, or the area can be configured regardless of the type of data.
HMB 관리자(1181)는 HMB 상태 테이블(HMBST)을 생성하고, HMB 상태 테이블(HMBST)을 버퍼 메모리(1150)에 저장하고 관리할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각에 대한 열화 정보 또는 오류 정보(즉, 상태 정보)를 HMB 상태 테이블(HMBST)에 저장하고 갱신할 수 있다.The
HMB(14)의 영역별 상태 정보는 구분된 영역들 단위로 관리되고 갱신될 수 있다. 예를 들어, 영역별 상태 정보는 해당 영역의 쓰기 횟수, 읽기 횟수, 그리고 해당 영역에 저장된 데이터로부터 검출된 오류율(예를 들어, 오류 비트의 수 및 읽기 데이터의 총 비트 수의 비율), 경과 시간, 오류 발생 비율(예를 들어, 오류 검출 횟수 및 총 HMB 읽기 요청 횟수의 비율), 읽기 재시도 횟수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있다. 그러나, 본 개시의 범위가 이에 한정되지 아니하며, HMB 상태 테이블(HMBST)에 저장되는 상태 정보는 HMB(14)의 복수의 영역들(R1~R4) 각각에 대한 다른 파라미터들이 포함될 수 있다.State information for each region of the
HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)을 생성하고, HMB 맵핑 테이블(HMBMT)을 버퍼 메모리(1150)에 저장하고 관리할 수 있다. HMB 관리자(1181)는 복수의 영역들(R1~R4) 각각 및 각 영역에 대응하는 보안 정책에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)에 저장하고 갱신할 수 있다.The
HMB 관리자(1181)는 복수의 영역들(R1~R4)각각에 대하여 보안 정책을 선택하고, 이에 대한 맵핑 정보를 HMB 맵핑 테이블(HMBMT)로 관리할 수 있다. 예를 들어, 제1 영역(R1)은 제1 보안 정책(SP1)과 대응하고, 제2 영역(R2)은 제2 보안 정책(SP2)과 대응하고, 제3 영역(R3)은 제3 보안 정책(SP3)과 대응할 수 있다. HMB 관리자(1181)는 제4 영역(R4)에 대하여 어떤 보안 정책도 설정하지 않을 수 있다. 이 경우, HMB 맵핑 테이블(HMBMT)에서 제4 영역(R4)과 관련된 테이블 셀에는 초기값이 저장될 수 있다. 도 5에 도시된 HMB 맵핑 테이블(HMBMT)을 예시적인 것이며, 본 개시의 범위가 이에 한정되지 아니한다.The
도 6은 스토리지 장치의 동작의 예를 보여주는 순서도이다. 도 1, 도 5, 및 도 6을 참조하면, S110 단계에서, 스토리지 장치(1000)는 호스트(11)로부터 HMB 할당 정보를 수신할 수 있다. 예를 들어, 스토리지 장치(1000)는 셋-피쳐(Set Feature)커맨드를 통해 HMB 할당 정보를 수신할 수 있다. HMB 할당 정보는 HMB의 크기 정보, HMB 활성화 정보, 또는 HMB 디스크립터(Descriptor) 리스트 등을 포함할 수 있다. HMB 디스크립터 리스트는 복수의 HMB 디스크립터 엔트리들을 포함할 수 있다. HMB 디스크립터 엔트리는 HMB로 할당된 메모리 어드레스 공간을 가리킬 수 있다. HMB 디스크립터 엔트리는 버퍼 어드레스 정보 및 버퍼 크기 정보를 포함할 수 있다. 버퍼 어드레스는 HMB 디스크립터 엔트리가 가리키는 호스트 메모리 버퍼의 어드레스 정보를 가리킬 수 있다. 버퍼 크기 정보는 HMB 디스크립터 엔트리가 가리키는 메모리 공간 내의 연속된 메모리 페이지의 개수를 가리킬 수 있다.6 is a flowchart illustrating an example of an operation of a storage device. Referring to FIGS. 1 , 5 , and 6 , in step S110 , the
일 실시 예에서, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로 HMB(14)를 인식할 수 있다. 스토리지 장치(1000)는 HMB(14)를 복수의 영역들로 분할할 수 있다. HMB(14)의 복수의 영역들은 스토리지 장치(1000)에 의해 관리될 수 있다. 도 5를 참조하면, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다.In one embodiment, the
일 실시 예에서, 스토리지 장치에 의해 관리되는 복수의 영역들은 호스트에 의해 관리되는 HMB 디스크립터 엔트리가 가리키는 복수의 메모리 공간들과 상이할 수 있다. 스토리지 장치(1000)는 HMB 디스크립터 엔트리들이 가리키는 메모리 공간들을 HMB(14)로 인식할 수 있다. 스토리지 장치(1000)는 HMB(14)를 필요에 따라 복수의 영역들로 분류하여 사용할 수 있다.In one embodiment, the plurality of areas managed by the storage device may be different from the plurality of memory spaces indicated by the HMB descriptor entry managed by the host. The
S120 단계에서, 스토리지 장치(1000)는 HMB(14)의 각 영역에 대한 보안 수준을 결정할 수 있다. 이때, 스토리지 장치(100)는 각 영역에 저장되는 데이터의 정보를 사용할 수 있다. 예를 들어, 스토리지 장치(1000)는 데이터 신뢰성 요구도가 높은 영역에 대해서는 높은 보안 수준을 결정하고, 데이터 신뢰성 요구도가 낮은 영역에 대해서는 낮은 보안 수준을 결정할 수 있다. 다른 예로, 스토리지 장치(1000)는 데이터의 종류(또는 유형)에 기초하여, 높은 보안성이 요구되는 데이터(예를 들어, 외부에서 쉽게 해독되면 곤란한 데이터)에 대해서는 높은 보안 수준을 결정하고, 낮은 보안성이 요구되는 데이터(예를 들어, 로우 데이터, 로그 데이터 등)에 대해서는 낮은 보안 수준을 결정할 수 있다.In step S120 , the
S130 단계에서, 스토리지 장치(1000)는 HMB(14)의 각 영역에 대한 보안 정책을 설정할 수 있다. 예를 들어, 스토리지 장치(1000)는 복수의 보안 정책들 중 하나를 복수의 영역들(R1~R4)에 대하여 설정할 수 있다. 스토리지 장치(1000)는 제1 영역(R1)에 대해, 복수의 보안 정책들 중 제1 보안 정책(SP1)을 선택할 수 있다. 스토리지 장치(1000)는 제2 영역(R2)에 대해 제2 보안 정책(SP2)을 선택하고, 제3 영역(R3)에 대해 제3 보안 정책(SP3)을 선택할 수 있다. 그러나, 스토리지 장치(1000)는 제4영역(R4)에 대해 어떠한 보안 정책도 선택하지 않을 수 있다.In step S130 , the
S140 단계에서, 스토리지 장치(1000)는 보안 정책에 관한 정보를 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 예를 들어, 도 5을 참조하면, 스토리지 장치(1000)는 제1 영역(R1)과 관련하여, 제1 보안 정책(SP1)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제2 영역(R2)과 관련하여, 제2 보안 정책(SP2)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제3 영역(R3)과 관련하여, 제3 보안 정책(SP3)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 스토리지 장치(1000)는 제4 영역(R4)과 관련하여, 초기값(default)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 즉, 스토리지 장치(1000)는 제4 영역(R4)에 대하여 어떠한 보안 정책도 적용하지 않도록 설정할 수 있다. 다시 말해서, 스토리지 장치(1000)는 제4 영역(R4)에 대응하는 데이터에 대하여 인코딩 또는 디코딩 동작을 수행하지 않을 수 있다.In step S140 , the
도 7은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 7을 참조하면, S210 단계에서, HMB 컨트롤러(1180)는 HMB 쓰기 요청 및 데이터를 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 CPU(1110) 또는 FTL(1120)로부터 제공되는 HMB(14)로의 HMB 쓰기 요청을 검출 또는 수신할 수 있다.7 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 . Referring to FIGS. 1 and 7 , in step S210, the
S220 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 보안 정책을 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 쓰기 요청을 기반으로, 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다.구체적으로, HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 HMB(14)의 어드레스를 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 데이터의 종류(또는 유형)을 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장될 HMB(14)의 영역을 판별할 수 있다. HMB 컨트롤러(1180)는 데이터가 저장될 HMB(14)의 영역을 기반으로, HMB 맵핑 테이블(HMBMT)로부터 HMB(14)의 영역에 대응하는 보안 정책을 확인할 수 있다.In step S220, the
예를 들어, HMB 쓰기 요청에 포함된 어드레스가 HMB(14)의 제1 영역(R1)을 가리킨다고 가정한다. HMB 컨트롤러(1180)는 HMB 쓰기 요청에 포함된 어드레스를 기반으로, 데이터가 저장될 영역이 제1 영역(R1)임을 판별할 수 있다. HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대응하는 보안 정책이 제1 보안 정책(SP1)임을 판별할 수 있다.For example, it is assumed that the address included in the HMB write request points to the first region R1 of the
S230 단계에서, HMB 컨트롤러(1180)는 판별된 보안 정책을 기반으로 인코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 보안 정책(SP1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. S240 단계에서, HMB 컨트롤러(1180)는 인코딩된 데이터를 HMB(14)에 기입할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 쓰기 커맨드 및 인코딩된 데이터를 HMB(14)로 전송할 수 있다.In step S230, the
그러나, HMB 쓰기 요청에 대응하는 HMB(14)의 영역이 제4 영역(R4)인 경우(즉, 판별된 보안 정책이 초기값(default)을 가리키는 경우), HMB 컨트롤러(1180)는 HMB 쓰기 요청에 대응하는 데이터에 대한 인코딩 동작을 수행하지 않을 수 있다. 이에 따라, HMB 컨트롤러(1180)는 인코딩 되지 않은 데이터를 HMB(14)에 기입할 수 있다.However, when the area of the
도 8은 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 8을 참조하면, S310 단계에서, HMB 컨트롤러(1180)는 HMB 읽기 요청을 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 CPU(1110) 또는 FTL(1120)로부터 제공되는 HMB(14)로의 읽기 요청을 검출 또는 수신할 수 있다.8 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 . Referring to FIGS. 1 and 8 , in step S310, the
S320 단계에서, HMB 컨트롤러(1180)는 HMB(14)로부터 데이터를 읽을 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청을 기반으로, HMB(14)로 읽기 커맨드를 전송할 수 있다. HMB 컨트롤러(1180)는 읽기 커맨드에 대응하는 데이터를 HMB(14)로부터 수신할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 어드레스를 기반으로 읽기 커맨드를 생성할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 데이터의 종류(또는 유형)를 기반으로, 읽기 커맨드를 생성할 수 있다.In step S320, the
S330 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로 보안 정책을 판별할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 HMB 읽기 요청을 기반으로, 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다.In step S330, the
구체적으로, HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 HMB(14)의 어드레스를 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다. 또는 HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 데이터의 종류(또는 유형)를 기반으로, 복수의 영역들(R1~R4) 중 데이터가 저장된 HMB(14)의 영역을 판별할 수 있다. HMB 컨트롤러(1180)는 데이터가 저장된 HMB(14)의 영역을 기반으로, HMB 맵핑 테이블(HMBMT)로부터 HMB(14)의 영역에 대응하는 보안 정책을 확인할 수 있다.Specifically, the
예를 들어, HMB 읽기 요청에 포함될 어드레스가 HMB(14)의 제1 영역(R1)을 가리킨다고 가정한다. HMB 컨트롤러(1180)는 HMB 읽기 요청에 포함된 어드레스를 기반으로, 데이터가 저장된 영역이 제1 영역(R1)임을 판별할 수 있다. HMB 관리자(1181)는 HMB 맵핑 테이블(HMBMT)을 기반으로 제1 영역(R1)에 대응하는 보안 정책이 제1 보안 정책(SP1)임을 판별할 수 있다.For example, it is assumed that the address to be included in the HMB read request points to the first region R1 of the
S340 단계에서, HMB 컨트롤러(1180)는 판별된 보안 정책을 기반으로 디코딩 동작을 수행할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 보안 정책(SP1)을 기반으로 데이터에 대한 디코딩 동작을 수행할 수 있다. 이때, HMB 컨트롤러(1180)는 데이터에 오류가 존재하는지 여부를 검출하고, 오류가 존재하는 경우 오류가 정정이 가능한지 여부를 판단하고, 정정이 가능한 경우 오류 정정 동작을 수행할 수도 있다. 오류가 정정이 불가능한 경우 HMB 컨트롤러(1180)는 CPU(1110) 또는 FTL(1120)에게 HMB 읽기 요청에 대한 실패 응답을 전송할 수 있다.In step S340, the
S350 단계에서, HMB 컨트롤러(1180)는 디코딩된 데이터를 전송할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 디코딩된 데이터를 CPU(1110) 또는 FTL(1120)로 전송할 수 있다.In step S350, the
그러나, HMB 읽기 요청에 대응하는 영역이 제4 영역(R4)인 경우(즉, 판별된 보안 정책이 초기값(default)을 가리키는 경우), HMB 컨트롤러(1180)는 HMB 읽기 요청에 대응하는 데이터에 대한 디코딩 동작을 수행하지 않을 수 있다.However, when the area corresponding to the HMB read request is the fourth area R4 (ie, the determined security policy indicates the default), the
이에 따라, HMB 컨트롤러(1180)는 디코딩 되지 않은 데이터를 CPU(1110) 또는 FTL(1120)에 전송할 수 있다.Accordingly, the
도 9는 도 1의 HMB 컨트롤러의 동작의 예를 보여주는 순서도이다. 도 1 및 도 9를 참조하면, S410 단계에서, HMB 컨트롤러(1180)는 HMB(14)에서 비정상적인 동작이 검출되는지 여부를 판단함으로써 변경 조건이 충족되는지 여부를 판별할 수 있다. 즉, 비정상적인 동작이 검출되었다는 것은 해당 영역에 대한 보안 정책이 변경되어야 함을 의미할 수 있다.9 is a flowchart illustrating an example of an operation of the HMB controller of FIG. 1 . Referring to FIGS. 1 and 9 , in step S410 , the
변경 조건이 충족된 경우 HMB 컨트롤러(1180)는 S420 단계를 진행하고, 변경 조건이 충족되지 않은 경우 HMB 컨트롤러(1180)는 S410 단계를 다시 진행한다. 즉, 변경 조건이 충족되지 않은 경우, HMB 컨트롤러(1180)는 변경 조건이 충족되는지 모니터링할 수 있다.If the change condition is satisfied, the
HMB 컨트롤러(1180)는 특정 영역에 대응하는 메모리 장치의 특성이 변화하거나, 특정 영역에 저장될 데이터의 유형이 변화하거나, 특정 영역에 대한 신뢰성 요구 수준이 변화하거나, 특정 영역에 대한 보안 요구 수준이 변화하거나, 키 유효 시간이 경과하거나, 데이터 무결성 체크가 실패하거나, 비정상적인 메모리 버퍼 할당이 검출된 경우 보안 정책의 변경 조건이 충족되었다고 판단할 수 있다.The
일 실시 예에서 HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각에 대한 보안 정책의 변경이 필요한지 여부를 검출할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)과 관련된 상태를 모니터링할 수 있다. HMB 컨트롤러(1180)는 모니터링되는 상태가 변경 조건을 충족하는지를 관리할 수 있다. 예를 들어, HMB 컨트롤러(1180)에 의해 모니터링되는 상태는 복수의 영역들(R1~R4) 각각의 수명, 복수의 영역들(R1~R4) 각각에 저장된 데이터의 신뢰성, 복수의 영역들(R1~R4) 각각에 대응하는 메모리 장치의 상태 등과 같은 다양한 속성과 관련될 수 있다.In an embodiment, the
변경 조건이 충족된 경우, 이는 스토리지 장치(1000)에서 변경 조건이 충족된 영역에 대한 보안 정책을 변경하여, 스토리지 장치(1000) 또는 HMB(14)의 동작 환경 및 특성을 개선하는 것이 요구됨을 가리킬 수 있다. 스토리지 장치(1000)는 스토리지 장치(1000) 또는 HMB(14)의 동작 환경 및 특성을 개선하기 위해 특정 영역에 대한 보안 정책을 변경하도록 구현될 수 있다.When the change condition is satisfied, this indicates that it is required to change the security policy for the area where the change condition is met in the
일 실시 예에서, 모니터링되는 상태의 수치가 임계치에 도달하는 경우, HMB 컨트롤러(1180)는 모니터링되는 상태가 변경 조건을 충족하는 것으로 판별할 수 있다. 예를 들어, 제1 조건을 살펴보면, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)에 각각에 데이터가 처음 기입된 시점부터 경과된 시간, 즉, 복수의 영역들(R1~R4) 각각의 경과 시간을 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각의 경과 시간이 기준 시간에 도달하였는지 여부를 판별할 수 있다. HMB 컨트롤러(1180)는 타이머, 타임 스탬프 등을 사용할 수 있다.In one embodiment, when the value of the monitored state reaches a threshold value, the
제2 조건을 살펴보면, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4) 각각의 오류율을 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 복수의 영역들 각각의 오류율을 모니터링 하고, 오류율이 기준 오류율에 도달하였는지 여부를 판별할 수 있다.Looking at the second condition, the
제3 조건을 살펴보면, HMB 컨트롤러(1180)는 호스트(11)에 의해 HMB(14)의 할당 정보를 관리할 수 있다. HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 기반으로, 복수의 영역들(R1~R4)에 대한 호스트 메모리(13)의 메모리 공간이 변경되었는지 여부를 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 영역들(R1~R4)에 대한 할당 정보가 변경되었는지 여부를 판별할 수 있다.Looking at the third condition, the
제4 조건을 살펴보면, HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치를 관리할 수 있다. 구체적으로, HMB 컨트롤러(1180)는 호스트(11)로부터 HMB(14)에 대응하는 메모리 장치에 대한 정보를 수신할 수 있다. HMB 컨트롤러(1180)는 HMB(14)에 대응하는 메모리 장치에 대한 정보 수신 여부를 판별할 수 있다. 상술된 제1 내지 제4 조건들은 변경 조건의 가능한 예들 중 일부일 뿐이며, 위 예들로 본 개시의 범위가 한정되지 아니하며, 구체적인 조건들은 다양하게 변경 또는 수정될 수 있다.Looking at the fourth condition, the
일 실시 예에서, 변경 조건은 제1 내지 제4 조건들을 모두 포함할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 대하여 제1 조건 내지 제4 조건의 충족여부를 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 제1 내지 제4 조건들을 동시에 모두 모니터링할 수 있다.In one embodiment, the change condition may include all of the first to fourth conditions. For example, the
일 실시 예에서, 변경 조건은 제1 내지 제4 조건들 중 적어도 하나를 포함할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 특정 영역에 대하여 제1 조건을 충족하는지 판별하거나, 또는 제4 조건을 충족하는지 판별할 수 있다. 즉, HMB 컨트롤러(1180)는 복수의 조건들 중 적어도 하나만 모니터링 할 수 있다.In one embodiment, the change condition may include at least one of the first to fourth conditions. For example, the
일 실시 예에서, HMB 컨트롤러(1180)는 제1 내지 제4 조건들 중 어느 하나라도 충족된 경우, 특정 영역에 대한 보안 정책을 변경할 수 있다. 예를 들어, 제1 조건만 충족되고 제2 내지 제4 조건들을 충족되지 않은 경우라도, HMB 컨트롤러(1180)는 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 보안 정책을 변경할 수 있다.In one embodiment, the
일 실시 예에서, HMB 컨트롤러(1180)는 복수의 조건들 중 적어도 두개의 조건들이 충족된 경우, 특정 영역에 대한 보안 정책을 변경할 수 있다. 예를 들어, HMB 컨트롤러(1180)는 제1 조건만 충족되고 제2 내지 제4 조건들이 충족되지 않은 경우, 변경 조건이 충족되지 않은 것으로 판별할 수 있다. HMB 컨트롤러(1180)는 제1 및 제2 조건이 충족되고, 제3 및 제4 조건이 충족되지 않은 경우, 변경 조건이 충족된 것으로 판별하고 특정 영역에 대한 보안 정책을 변경할 수 있다.In one embodiment, the
상술된 바와 같이, 변경 조건은 제1 내지 제4 조건들 중 하나, 또는 적어도 두 개의 조합을 포함할 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니하며 다양하게 변경 또는 수정될 수 있다.As described above, the change condition may include one of the first to fourth conditions, or a combination of at least two of them. However, the scope of the present disclosure is not limited thereto and may be variously changed or modified.
S420 단계에서, HMB 컨트롤러(1180)는 보안 정책을 변경할 수 있다. 구체적으로, HMB 관리자(1181)는 복수의 영역들(R1~R4) 중 변경 조건이 충족된 영역에 대한 보안 정책을 변경할 수 있다. 예를 들어, 제1 영역(R1)의 변경 조건이 충족된 것으로 가정한다. HMB 관리자(1181)는 제1 영역(R1)의 보안 정책을 제1 보안 정책(SP1)에서 제4 보안 정책(SP4)으로 변경할 수 있다.In step S420, the
S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. HMB 관리자(1181)는 새롭게 선택된 보안 정책을 대응하는 영역과 관련하여 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다. 예를 들어, 제1 영역(R1)의 보안 정책이 제1 보안 정책(SP1)에서 제5 보안 정책(SP5)으로 변경된 경우, HMB 컨트롤러(1180)는 제1 영역(R1)과 관련하여 제5 보안 정책(SP5)을 HMB 맵핑 테이블(HMBMT)에 저장할 수 있다.In step S430, the
HMB 컨트롤러(1180)는 모든 복수의 영역들(R1~R4)에 대하여, 이하에서 설명되는 변경 조건들의 충족여부를 판별할 수 있다. 그러나, 도면의 간결성 몇 설명의 편의를 위하여, 이하에서 특정 하나의 영역에 대하여 변경 조건이 충족하는지 여부를 설명한다. 특정 하나의 영역은 제1 영역(R1)으로 가정한다. 단, 본 개시의 범위가 이에 한정되는 것은 아니며, 나머지 영역들(R2~R3)에 대해서도 하기의 설명이 모두 적용될 수 있음이 잘 이해될 것이다.The
도 10은 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 11a 및 도 11b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다. 도 1, 도 10, 도 11a, 및 도 11b를 참조하면, 도 9의 S410 단계는 도 10의 S411a 단계 내지 S413a 단계를 포함할 수 있다. S411a 단계에서, HMB 컨트롤러(1180)는 첫 번째 쓰기 커맨드를 수신하고, 데이터를 HMB(14)의 특정 영역으로 전송할 수 있다. 예를 들어, CPU(1110)는 HMB 컨트롤러(1180)로 제1 영역(R1)에 대한 첫 번째 HMB 쓰기 요청을 전송할 수 있다(도 11a의 [1]). 예를 들어, CPU(1110)는 제1 영역(R1)으로 처음으로 데이터를 기입하기 위하여, HMB 쓰기 요청을 HMB 컨트롤러(1180)로 전송할 수 있다.10 is a flowchart showing step S410 of FIG. 9 in more detail. 11A and 11B are diagrams illustrating an example of an operation of the storage device of FIG. 1 . Referring to FIGS. 1, 10, 11a, and 11b, step S410 of FIG. 9 may include steps S411a to S413a of FIG. 10 . In step S411a, the
HMB 컨트롤러(1180)는 제1 영역(R1)으로 첫 번째 쓰기 데이터를 전송할 수 있다(도 11a의 [2]). 예를 들어, 보안 IP 풀(1182)은, 제1 영역(R1)에 대응하는 제1 보안 정책(SP1)을 기반으로 데이터에 대한 인코딩 동작을 수행할 수 있다. 보안 IP 풀(1182)은 첫 번째 쓰기 커맨드 및 인코딩된 쓰기 데이터를 호스트(11)로 전송할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 어떤 데이터도 저장되지 않은 상태에서, 처음으로 쓰기 커맨드 및 데이터를 전송할 수 있다. 즉, HMB 컨트롤러(1180)는 처음으로 제1 영역(R1)에 데이터를 기입할 수 있다.The
S412a 단계에서, HMB 컨트롤러(1180)는 타이머(1184)를 개시할 수 있다. HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 타이머(1184)의 카운팅 동작을 개시할 수 있다. 일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대응하는 타이머(1184)의 기준 시간을 설정할 수 있다(도 11a의 [3]).In step S412a, the
예를 들어, 기준 시간은 제1 영역(R1)에 저장될 데이터의 종류, 제1 영역(R1)에 대응하는 호스트 메모리 장치의 특성들을 기반으로 선택될 수 있다. 기준 시간은 제1 영역(R1)에 대한 보안 정책을 변경하는 시점을 결정하기 위해 설정될 수 있다. 구체적으로, 데이터가 손실되기 전에 데이터의 신뢰성을 보장하기 위해서, HMB 컨트롤러(1180)가 보안 정책 변경 동작을 수행할 시점을 결정하기 위한 기준 시간이 설정될 수 있다. 기준 시간은 미리 결정된 값일 수 있다. 기준 시간은 설계자, 제조사, 및/또는 사용자에 의해 고정되거나 가변하도록 선택될 수 있다. 예를 들어, 기준 시간은 호스트 메모리 장치의 상태 또는 데이터의 종류에 의존하여 HMB 컨트롤러(1180)에 의해 조절 가능할 수 있다.For example, the reference time may be selected based on the type of data to be stored in the first region R1 and the characteristics of the host memory device corresponding to the first region R1. A reference time may be set to determine a time point for changing the security policy for the first region R1. In detail, in order to ensure data reliability before data loss, a reference time for determining when the
S413a 단계에서, HMB 컨트롤러(1180)는 HMB(14)의 영역에 대응하는 타이머(1184)로부터의 신호에 기초하여 타이머(1184)가 만료되었는지 판별할 수 있다. 타이머(1184)가 만료되었다는 것은, 해당 영역에 대응하여 타이머(1184)가 카운트한 경과 시간이 기준 시간을 초과한 것을 의미할 수 있다. In step S413a, the
예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대응하는 타이머(1184)가 만료되었는지 판단할 수 있다. 타이머(1184)는 제1 영역(R1)에 데이터가 처음 기입된 시점부터 경과된 시간을 카운팅할 수 있다. 제1 영역(R1)에 대한 타이머(1184)가 만료된 경우, 타이머(1184)는 HMB 관리자(1181)에게 기준 시간의 경과 또는 만료를 나태내는 신호를 출력할 수 있다(도 11b의 [4]). 이에, HMB 관리자(1181)는 제1 영역(R1)에 대한 변경 조건이 충족되었음을 판별할 수 있다. For example, the
타이머(1184)가 만료된 경우 HMB 컨트롤러(1180)는 S420 단계를 진행하고, 타이머(1184)가 만료되지 않은 경우 HMB 컨트롤러(1180)는 S413a의 판별 동작을 계속 할 수 있다.When the
S420 단계에서, HMB 컨트롤러(1180)는 제1 영역(R1)에 대응하는 보안 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 타이머(1184)로부터 출력되는 신호에 기초하여(즉, 기준 시간의 경과 또는 만료에 기초하여) 제1 영역(R1)의 보안 정책을 변경할 수 있다. HMB 관리자(1181)는 제1 영역(R1)에 대하여 제1 보안 정책(SP1)에서 제5 보안 정책(SP5)으로 변경할 수 있다.In step S420, the
S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 보안 정책을 제5 보안 정책(SP5)으로 갱신할 수 있다(도 11b의 [5]).In step S430, the
도 12는 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 13a 및 도 13b는 도 1의 스토리지 장치의 동작 방법의 예를 보여주는 도면들이다.12 is a flowchart showing step S410 of FIG. 9 in more detail. 13A and 13B are diagrams illustrating an example of a method of operating the storage device of FIG. 1 .
도 12, 도 13a, 및 도 13b를 참조하면, 도 9의 S410 단계는 S411b 단계 및 S412b 단계를 포함할 수 있다.Referring to FIGS. 12, 13a, and 13b, step S410 of FIG. 9 may include steps S411b and S412b.
S411b 단계에서, HMB 컨트롤러(1180)는 오류율을 모니터링할 수 있다. 예를 들어, CPU(1110)는 HMB 컨트롤러(1180)로 제1 영역(R1)에 대한 HMB 읽기 요청을 전송할 수 있다(도 13a의 [1]). 보안 IP 풀(1182)은 제1 영역(R1)으로부터 읽기 데이터(RDATA)를 읽을 수 있다(도 13a의 [2]). 보안 IP 풀(1182)은 읽기 데이터의 오류 존재 여부를 판단할 수 있다. 오류가 존재하는 경우, 보안 IP 풀(1182)은 오류율을 검출할 수 있다. 또는 오류가 존재하는 경우, 보안 IP 풀(1182)은 오류율을 계산할 수 있다. 예를 들어, 오류율은 오류 비트의 수 및 읽기 데이터의 총 비트 수의 비율을 의미할 수 있다. 보안 IP 풀(1182)은 오류율을 데이터 무결성 검사기(1185)으로 전송할 수 있다(도 13a의 [3]). 데이터 무결성 검사기(1185)는 오류율을 모니터링할 수 있다. 데이터 무결성 검사기(1185)는 오류율을 HMB 상태 테이블(HMBST)에 저장 또는 갱신할 수 있다((도 13a의 [4]).In step S411b, the
S412b 단계에서, HMB 컨트롤러(1180)는 오류율이 기준 오류율(Re)을 초과하는지 여부를 판별할 수 있다. 예를 들어, 데이터 무결성 검사기(1185)는 HMB 상태 테이블(HMBST)을 참조하여, 제1 영역(R1)에 대응하는 오류율이 제1 영역(R1)에 대응하는 기준 오류율에 도달하는지 여부를 검출할 수 있다. 오류율이 기준 오류율에 도달한 경우 데이터 무결성 검사기(1185)는 S420 단계를 진행하고, 오류율이 기준 오류율에 도달하지 않은 경우 데이터 무결성 검사기(1185)는 S412b 단계를 진행한다. 오류율이 기준 오류율에 도달하는 경우, 데이터 무결성 검사기(1185)는 변경 조건이 충족되었음을 판별할 수 있다. HMB 컨트롤러(1180)는 추가로 오류가 정정 가능한지 여부를 판단하고, 정정이 가능한 경우 오류 정정 동작을 수행할 수 있다. 데이터 무결성 검사기(1185)는 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력할 수 있다(도 13b의 [5]).In step S412b, the
S420 단계에서, HMB 컨트롤러(1180)는 데이터 무결성 검사기(1185)로부터 출력되는 신호에 응답하여(즉, 오류율이 기준 오류율에 도달한 것에 기초하여), 제1 영역(R1)의 보안 정책을 제1 보안 정책(SP1)에서 제5 보안 정책(SP5)으로 변경할 수 있다. S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 보안 정책을 제5 보안 정책(SP5)으로 갱신할 수 있다(도 13b의 [6]).In step S420, the
일 실시 예에서, 스토리지 장치(1000)는 오류율 이외에 데이터의 신뢰성 및 보안과 관련된 상태를 모니터링 할 수 있다. 예를 들어, 모니터링되는 상태는 HMB(14)의 영역들 각각의 경과 시간, 오류 발생 비율(즉, 오류 검출 횟수 및 총 HMB 읽기 요청 횟수의 비율), 쓰기 횟수, 읽기 횟수, 읽기 재시도 횟수, 무효인 메모리 공간들의 비율, 가용 용량 등을 포함할 수 있으나, 본 개시는 이에 한정되지 않는다.In one embodiment, the
일 실시 예에서, 비정상 검출기(1183)는 모니터링되는 상태가 변경 조건을 충족하는지 판별할 수 있다. 예를 들어, 모니터링되는 상태의 수치가 임계치에 도달하는 경우, 변경 조건이 충족될 수 있다. 임계치는 영역들 각각에 요구되는 신뢰성 및 보안 수준을 고려하여 선택될 수 있다.In one embodiment, the
예를 들어, 비정상 검출기(1183)는 타이머(1184)를 이용하는 대신에, 데이터 무결성 검사기(1185)를 이용하여 경과 시간을 관리할 수 있다. 데이터 무결성 검사기(1185)는 복수의 영역들(R1~R4) 각각의 다양한 시간들을 관리할 수 있다. 예를 들어, HMB 관리자(1181)는 복수의 영역들(R1~R4)의 경과 시간 등을 관리할 수 있다. 경과 시간은 복수의 영역들 각각이 처음으로 데이터를 기입한 시점으로부터 현재까지의 경과 시간을 가리킨다. HMB 관리자(1181)는 영역에 처음으로 데이터를 기입한 시점, 즉 개시시간을 타임 스탬프로 HMB 상태 테이블(HMBST)에 저장할 수 있다.For example, the
데이터 무결성 검사기(1185)는 HMB 상태 테이블(HMBST)을 참조하여, HMB 상태 테이블(HMBST)에 저장된 개시 시간과 현재 시간의 차이를 경과 시간으로 계산할 수 있다. 데이터 무결성 검사기(1185)는 계산된 경과 시간을 기준 시간과 비교하여, 경과 시간이 기준 시간을 초과하였는지 여부를 판별할 수 있다. 데이터 무결성 검사기(1185)는 경과시간이 기준 시간을 초과한 경우, 제1 영역(R1)의 변경 조건이 충족되었음을 검출할 수 있다. 데이터 무결성 검사기(1185)는 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다.The
또한, 데이터 무결성 검사기(1185)는 오류 발생 비율을 관리할 수 있다. 모니터링 유닛(1185)는 HMB 상태 테이블(HMBST)을 기반으로, 오류 발생 비율(즉, 오류 발생 횟수 및 HMB 읽기 횟수의 비율)을 관리할 수 있다. 데이터 무결성 검사기(1185)는 HMB 읽기 동작을 수행할 때마다, 오류 발생 비율을 계산할 수 있다. 데이터 무결성 검사기(1185)는 오류 발생 비율을 HMB 상태 테이블(HMBST)에 저장하거나 갱신할 수 있다. 데이터 무결성 검사기(1185)는 오류 발생 비율이 임계치에 도달하는 경우(예를 들어, 임계치보다 오류 발생 비율이 높아지는 경우), 데이터 무결성 검사기(1185)는 변경 조건이 충족되었음을 가리키는 신호를 HMB 관리자(1181)로 출력할 수 있다.Also, the
도 14는 도 9의 S410 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 15a 및 도 15b는 도 1의 스토리지 장치의 동작의 예를 보여주는 도면들이다. 도 14, 도 15a, 및 도 15b를 참조하면, 스토리지 장치(1000)는 호스트(11)의 HMB(14) 할당 영역 변경을 기반으로, 특정 영역의 보안 정책을 변경할 수 있다.14 is a flowchart showing step S410 of FIG. 9 in more detail. 15A and 15B are diagrams illustrating an example of an operation of the storage device of FIG. 1 . Referring to FIGS. 14 , 15A and 15B , the
호스트(11)가 스토리지 장치(1000)의 사용을 위하여 이미 할당된 HMB(14)의 메모리 공간을 할당 해제(de-allocate)하거나, 또는 호스트(11)가 이미 할당된 HMB(14)의 메모리 공간에 대하여 리턴(return)을 요청하는 경우가 발생할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드(예를 들어, 피쳐 식별자(FID; Feature Identifier)는 호스트 메모리 버퍼를 가리킴)에 포함된 메모리 리턴(MR; Memory Return) 필드를 ‘1’로 설정함으로써, 할당된 HMB(14)의 메모리 공간을 할당 해제할 수 있다.The
HMB 관리자(1181)는 할당 해제된 HMB(14)의 메모리 공간에 대응하는 영역을 다른 메모리 공간으로 할당할 수 있다. 예를 들어, 이미 할당된 HMB(14)의 메모리 공간 중 사용하지 않은 부분을 영역으로 할당할 수 있다. 또는 호스트(11)는 호스트 메모리(13)의 새로운 메모리 공간을 HMB(14)로 더 할당할 수 있다. 예를 들어, 호스트(11)는 셋-피쳐 커맨드를 통해 새로운 메모리 공간을 HMB(14)로 할당할 수 있다. HMB 관리자(1181)는 새로운 메모리 공간을 할당 해제된 메모리 공간의 영역으로 할당할 수 있다.The
일 실시 예에서, 도 9의 S410 단계는 S411c 단계 내지 S413c 단계를 포함할 수 있다. S411c 단계에서, 스토리지 장치(1000)는 호스트(11)로부터 HMB 할당 정보를 수신할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(1000)로 HMB 할당 정보를 포함하는 셋-피쳐 커맨드를 전송할 수 있다(도 15a의 [1]). 셋-피쳐 커맨드는 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)을 포함할 수 있다. 예를 들어, 제1 내지 제5 메모리 어드레스 범위들(MR1~MR5)은 호스트 메모리(13)에서 HMB(14)에 대응하는 어드레스들의 범위를 가리킬 수 있다.In one embodiment, step S410 of FIG. 9 may include steps S411c to S413c. In step S411c, the
S412c 단계에서, 스토리지 장치(1000)는 HMB 할당 정보를 기반으로 복수의 영역들(R1~R4)을 설정할 수 있다. 예를 들어, HMB 관리자(1181)는 호스트(11)의 HMB 할당 정보에 응답하여, HMB(14)를 제1 내지 제4 영역들(R1~R4)로 분할할 수 있다. HMB 관리자(1181)는 호스트 메모리(13)의 제1 메모리 어드레스 범위(MR1)에 제1 영역(R1)을 할당하고, 호스트 메모리(13)의 제2 메모리 어드레스 범위(MR2)에 제2 영역(R2)을 할당하고, 호스트 메모리(13)의 제3 메모리 어드레스 범위(MR3)에 제3 영역(R3)을 할당하고, 호스트 메모리(13)의 제4 메모리 어드레스 범위(MR4)에 제4 영역(R4)을 할당할 수 있다. HMB 관리자(1181)는 제5 메모리 어드레스 범위(MR5)를 어떠한 영역으로도 할당하지 않고, 여유 공간으로 남겨둘 수 있다.In step S412c, the
일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 제1 데이터 유형(DT1)을 저장하도록 결정하고, 제2 영역(R2)에 제2 데이터 유형(DT2)을 저장하도록 결정하고, 제3 영역(R3)에 제3 데이터 유형(DT3)을 저장하도록 결정하고, 제4 영역(R4)에 제4 데이터 유형(DT4)을 저장하도록 결정할 수 있다.In one embodiment, the
일 실시 예에서, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT)을 갱신할 수 있다(도 15a의 [2]). 예를 들어, HMB 관리자(1181)는 HMB 할당 테이블(HMBAT)에 제1 영역(R1)과 관련하여 제1 데이터 유형(DT1), 제1 메모리 어드레스 범위(MR1)를 저장하고, 제2 영역(R2)과 관련하여 제2 데이터 유형(DT2), 제2 메모리 어드레스 범위(MR2)를 저장하고, 제3 영역(R3)과 관련하여, 제3 데이터 유형(DT3), 제3 메모리 어드레스 범위(MR3)를 저장하고, 제4 영역(R4)과 관련하여, 제4 데이터 유형(DT4), 제4 메모리 어드레스 범위(MR4)를 저장할 수 있다.In one embodiment, the
S413c 단계에서, 스토리지 장치(1000)는 복수의 영역들의 상태 정보를 모니터링 함으로써 영역의 할당된 위치가 변경되었는지 여부를 판단할 수 있다. 스토리지 장치(1000)는 호스트(11)로부터 수신하는 셋-피쳐 커맨드에 기초하여 할당된 위치가 변경되었는지 여부를 판단할 수도 있다.In step S413c, the
예를 들어, 스토리지 장치(1000)는 복수의 영역들의 할당된 위치가 변경되는 횟수를 카운팅할 수 있다. 스토리지 장치(1000)는 위치 변경 횟수가 임계치를 초과하는 경우, HMB(14)가 비정상적으로 동작한다고 판단할 수 있다.For example, the
다른 예로, 스토리지 장치(1000)는 복수의 영역들의 할당이 해제되는 횟수를 카운팅할 수 있다. 스토리지 장치(1000)는 할당 해제 횟수가 임계치를 초과하는 경우, HMB(14)가 비정상적으로 동작한다고 판단할 수 있다.As another example, the
임계치는 비정상적인 동작이 발생하는 상황을 고려하여 선택될 수 있고, 예를 들어, 1로 설정될 수 있다.The threshold may be selected in consideration of a situation in which an abnormal operation occurs, and may be set to 1, for example.
일 실시 예에서, HMB 할당 검사기(1186)는 복수의 영역들 각각의 할당 정보를 모니터링할 수 있다. HMB 할당 검사기(1186)는 HMB(14)가 비정상적으로 동작한다고 판단하는 경우 HMB 관리자(1181)로 변경 조건이 충족되었음을 가리키는 신호를 출력하고(도 15b의 [3]), S420 단계를 진행할 수 있다. 어떠한 영역도 할당된 위치가 변경되지 않은 경우, 스토리지 장치(1000)는 S413c 단계를 다시 진행한다.In an embodiment, the
S414c 단계에서, 스토리지 장치(1000)는 변경된 영역들의 위치를 기반으로 복수의 영역들을 재설정할 수 있다. 예를 들어, 스토리지 장치(1000)는 제1 메모리 어드레스 범위(MR1)의 할당이 해제되었음을 확인하고, HMB(14)가 비정상적으로 동작한다고 판단할 수 있다. 이에, HMB 관리자(1181)는 제1 영역(R1)을 다시 설정할 수 있다. HMB 관리자(1181)는 제1 메모리 어드레스 범위(MR1)를 사용할 수 없으므로, 아직 어떠한 영역도 할당되지 않은 제5 메모리 어드레스 범위(MR5)를 제1 영역(R1)에 설정할 수 있다. 즉, HMB 관리자(1181)는 호스트 메모리(13)의 제5 메모리 어드레스 범위(MR5)에 제1 영역(R1)을 할당할 수 있다.In step S414c, the
S415c 단계에서, HMB 컨트롤러(1180)는 HMB 할당 테이블(HMBAT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)과 관련하여, 제5 메모리 어드레스 범위(MR5)를 HMB 할당 테이블(HMBAT)에 저장할 수 있다(도 15b의 [4]). 일 실시 예에서, HMB 관리자(1181)는 제1 영역(R1)에 대한 할당 정보가 변경되었으므로, 제1 영역(R1)에 대한 보안 정책의 변경 조건이 충족되었음을 판별할 수 있다.In step S415c, the
S420 단계에서, HMB 컨트롤러(1180)는 보안 정책을 변경할 수 있다. 예를 들어, HMB 관리자(1181)는 HMB 할당 검사기(1186)로부터 출력된 신호 또는 영역에 대한 HMB 할당 정보가 변경되었음을 기반으로, 제1 영역(R1)의 보안 정책을 제1 보안 정책(SP1)에서 제5 보안 정책(SP5)으로 변경할 수 있다. S430 단계에서, HMB 컨트롤러(1180)는 HMB 맵핑 테이블(HMBMT)을 갱신할 수 있다. 예를 들어, HMB 관리자(1181)는 제1 영역(R1)에 대한 보안 정책을 제5 보안 정책(SP5)으로 갱신할 수 있다(도 15b의 [5]).In step S420, the
도 16은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다. 데이터 센터(2000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(200)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(2100_1~2100_n)의 개수 및 복수의 스토리지 서버들(2200_1~2200_m)의 개수는 다양하게 변형될 수 있다.16 is a block diagram illustrating an example of a data center to which a storage device according to an embodiment of the present disclosure is applied. The
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(2200_1)의 예시가 설명된 다. 나머지 스토리지 서버들(2200_2~2200_m) 및 복수의 애플리케이션 서버들(2100_1~2100_n) 각각은 제1 스토리지 서버(2200_1)와 유사한 구조를 가질 수 있 다.Hereinafter, for convenience of description, 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 overall operations of the first storage server 2200_1. The memory 2220_1 may store various commands 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 to process data. In one embodiment, the memory 2220_1 may include DDR Double Data Rate Synchronous DRAM (SDRAM), High Bandwidth Memory (HBM), Hybrid Memory Cube (HMC), Dual In-line Memory Module (DIMM), Optane DIMM, or NVDIMM (Non-VDIMM). -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 be variously modified. In one embodiment, the processor 2210_1 and the memory 2220_1 included in the first storage server 2200_1 may constitute a processor-memory pair, and the processor-memory pair included in the first storage server 2200_1 The number can be variously modified. 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 from each other. The 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 may selectively connect the processor 2210_1 and the storage device 2250_1 or selectively connect 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 to the network NT. The NIC 2240_1 may include a network interface card, a network adapter, and the like. The NIC 2240_1 may be connected to the network NT through a wired interface, a wireless interface, a Bluetooth interface, an optical interface, or the like. The NIC 2240_1 may include an internal memory, a DSP, a host bus interface, and the like, 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), PCIe ( PCI express), NVM express (NVMe), IEEE 1394, universal serial bus (USB), secure digital (SD) card, multi-media card (MMC), embedded multi-media card (eMMC), universal flash storage (UFS) , embedded universal flash storage (eUFS), compact flash (CF) card interface, and the like. 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, a nonvolatile memory 2252_1, a DRAM 2253_1, and an 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, the controller 2251_1 may include SRAM. The controller 2251_1 may store data in the nonvolatile memory 2252_1 or output data stored in the nonvolatile 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 nonvolatile 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 nonvolatile memory 2252_1 or data read from the nonvolatile memory 2252_1. The DRAM 2253_1 may be configured to store various data (eg, meta data, mapping data, etc.) necessary for the controller 2251_1 to operate. The interface 2254_1 may provide a physical connection between the processor 2210_1, the switch 2230_1, or the NIC 2240_1 and the 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 the various interfaces described above through the host interface bus.
상술된 제1 스토리지 서버(2200_1)의 구성들은 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(2200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 각각에서, 스토리지 장치(2150_1)는 선택적으로 생략될 수 있다.The configurations of the above-described first storage server 2200_1 are exemplary, and the scope of the present disclosure is not limited thereto. The configurations of the above-described first storage server 2200_1 may be applied to other storage servers or each of a plurality of application servers. In one embodiment, in each of the plurality of application servers 2100_1 to 2100_n, the storage device 2150_1 may be selectively omitted.
복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버 들(2200_1~2200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The plurality of application servers 2100_1 to 2100_n and the plurality of storage servers 2200_1 to 2200_m may communicate with each other through the network NT. The network NT may be implemented using Fiber Channel (FC) or Ethernet. At this time, FC is a medium used for relatively high-speed data transmission, and an optical switch providing high performance/high availability may 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 FC Protocol (FCP). Alternatively, the SAN may be an IP-SAN using a TCP/IP network and implemented according to the iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In one embodiment, 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 connects to at least one other of the plurality of application servers 2100_1 to 2100_n or the plurality of storage servers 2200_1 to 2200_m through the network NT. It may be configured to access at least one of them.
예를 들어, 제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 a 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 may perform various operations on data stored in the other application servers 2100_2 to 2100_n or the plurality of storage servers 2200_1 to 2200_m. For example, the first application server 2100_1 executes or issues a command for moving or copying 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, data to be moved or copied is transferred 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 over the network NT may be encrypted data 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 내지 도 15를 참조하여 설명된 방법을 기반으로 호스트 메모리 버퍼의 각 영역에 보안 정책을 설정하고, 설정된 보안 정책을 기반으로 인코딩/디코딩 동작을 수행하고, 변경 조건이 충족된 경우 각 영역의 보안 정책을 변경할 수 있다.In one embodiment, the above-described storage servers 2200_1 to 2200_m or storage devices 2150_1 to 2150_n and 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 has a security policy applied to each region of the host memory buffer based on the method described with reference to FIGS. 1 to 15 . can be set, encoding/decoding operations are performed based on the set security policy, and the security policy of each area can be changed when the change conditions are met.
상술된 실시 예들에서, 제0, 제1, 제2, 제3 등의 용어들을 사용하여 본 개시의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제0, 제1, 제2, 제3 등과 같은 용어 들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 개시를 한정하지 않는다. 예를 들어, 제0, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.In the above-described embodiments, elements according to the technical idea of the present disclosure have been described using terms such as 0th, 1st, 2nd, and 3rd. However, terms such as 0, 1, 2, 3, etc. are used to distinguish components from each other and do not limit the present disclosure. For example, terms such as 0, 1, 2, 3, etc. do not imply order or numerical meaning in any form.
상술된 실시 예들에서, 유닛(unit), 모듈(module), 레이어(layer) 또는 블록(block)을 사용하여 본 개시의 실시 예들에 따른 구성 요소들이 참조되었다. 유닛, 모듈, 레이어 또는 블록은 IC(Integrated Circuit), ASIC(Application Specific IC), FPGA(Field Programmable Gate Array), CPLD(Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP로 등록된 회로들을 포함할 수 있다.In the above-described embodiments, components according to embodiments of the present disclosure are referred to using a unit, module, layer, or block. 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 hardware devices. , software such as an application, or a combination of a hardware device and software. In addition, a block may include circuits composed of semiconductor elements in an IC or circuits registered as IPs.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 청구범위뿐만 아니라 이 발명의 청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present disclosure. The present disclosure will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present disclosure will also include techniques that can be easily modified and implemented using the embodiments. Therefore, the scope of the present disclosure should not be limited to the above-described embodiments and should not be defined by the following claims as well as those equivalent to the claims of this invention.
Claims (10)
상기 비정상적인 동작이 검출되면, 상기 스토리지 장치가 상기 HMB에 데이터를 쓰거나 상기 HMB의 데이터를 읽을 때 적용하는 보안 정책을 갱신하는 단계
를 포함하는 스토리지 장치의 동작 방법.Detecting an abnormal operation of a Host Memory Buffer (HMB) located outside a storage device during data processing; and
If the abnormal operation is detected, updating a security policy applied when the storage device writes data to the HMB or reads data from the HMB.
A method of operating a storage device comprising a.
호스트로부터 상기 HMB의 할당 정보를 수신하는 단계;
상기 할당 정보에 기초하여 상기 HMB를 복수의 영역으로 분할하는 단계; 및
복수의 영역 각각에 대해서 보안 정책을 매칭시키는 단계
를 더 포함하며,
상기 보안 정책을 갱신하는 단계는,
상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계
를 포함하는, 스토리지 장치의 동작 방법.According to claim 1,
receiving allocation information of the HMB from a host;
dividing the HMB into a plurality of areas based on the allocation information; and
Step of matching security policy for each of a plurality of areas
Including more,
Updating the security policy,
Updating at least one of the security policies matched to each of the plurality of areas.
Including, the operating method of the storage device.
상기 보안 정책을 매칭시키는 단계는,
상기 복수의 영역 각각에 대해서 보안 IP(Intellectual Property)를 매칭시키는 단계; 및
상기 복수의 영역 각각에 대하여 키(key)를 매칭시키는 단계
중 적어도 하나를 포함하는, 스토리지 장치의 동작 방법.According to claim 2,
The step of matching the security policy,
matching a security IP (Intellectual Property) for each of the plurality of areas; and
Matching a key to each of the plurality of areas
A method of operating a storage device, including at least one of the following.
상기 복수의 영역은 제1 영역 및 제2 영역을 포함하며,
상기 보안 정책은 제1 보안 정책 및 상기 제1 보안 정책과 다른 제2 보안 정책을 포함하고,
상기 보안 정책을 매칭시키는 단계는,
상기 제1 영역에 상기 제1 보안 정책을 매칭시키는 단계; 및
상기 제2 영역에 상기 제2 보안 정책을 매칭시키는 단계를 포함하는,
스토리지 장치의 동작 방법.According to claim 2,
The plurality of regions include a first region and a second region,
The security policy includes a first security policy and a second security policy different from the first security policy;
The step of matching the security policy,
matching the first security policy to the first area; and
Matching the second security policy to the second area,
A method of operating a storage device.
상기 제1 영역의 보안 요구 수준은 상기 제2 영역의 보안 요구 수준보다 높고,
상기 제1 보안 정책의 보안 수준은 상기 제2 보안 정책의 보안 수준보다 높은,
스토리지 장치의 동작 방법.According to claim 4,
The security requirement level of the first area is higher than the security requirement level of the second area;
The security level of the first security policy is higher than that of the second security policy;
A method of operating a storage device.
상기 보안 정책을 매칭시키는 단계는,
상기 복수의 영역 각각에 대해서 보안 IP를 매칭시키는 단계
를 포함하고,
상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계는,
상기 복수의 영역 중 비정상적인 동작이 발생한 영역에 매칭된 보안 IP를 변경하는 단계
를 포함하는, 스토리지 장치의 동작 방법.According to claim 2,
The step of matching the security policy,
Matching a security IP for each of the plurality of areas
including,
Updating at least one of the security policies matched with each of the plurality of areas includes:
Changing a security IP matched to an area in which an abnormal operation has occurred among the plurality of areas
Including, the operating method of the storage device.
상기 보안 정책을 매칭시키는 단계는,
상기 복수의 영역 각각에 대하여 키를 매칭시키는 단계
를 포함하고,
상기 복수의 영역 각각에 매칭된 상기 보안 정책 중 적어도 하나를 갱신하는 단계는,
상기 복수의 영역 중 비정상적인 동작이 발생한 영역의 키를 변경하는 단계
를 포함하는, 스토리지 장치의 동작 방법.According to claim 2,
The step of matching the security policy,
Matching keys for each of the plurality of areas
including,
Updating at least one of the security policies matched with each of the plurality of areas includes:
Changing a key of an area in which an abnormal operation has occurred among the plurality of areas;
Including, the operating method of the storage device.
상기 비정상적인 동작을 검출하는 단계는,
상기 복수의 영역 각각에 대해서 상기 비정상적인 동작을 검출하는 단계
를 포함하고,
상기 비정상적인 동작은,
키 유효 시간이 경과한 경우;
데이터 무결성 체크가 실패한 경우; 및
비정상적인 HMB 할당이 검출된 경우
중 적어도 하나의 경우를 포함하는, 스토리지 장치의 동작 방법.According to claim 2,
The step of detecting the abnormal operation,
Detecting the abnormal operation in each of the plurality of areas
including,
The abnormal behavior,
When the key validity time has elapsed;
If a data integrity check fails; and
When abnormal HMB allocation is detected
A method of operating a storage device, including at least one of the following.
상기 데이터 무결성 체크가 실패한 경우는,
데이터 오류율이 오류율 임계치에 도달한 경우
를 포함하는, 스토리지 장치의 동작 방법.According to claim 8,
If the data integrity check fails,
When the data error rate reaches the error rate threshold
Including, the operating method of the storage device.
상기 비정상적인 HMB 할당이 검출된 경우는,
상기 HMB의 로그 정보를 이용하여, 할당 위치가 변경됨을 검출한 경우
를 포함하는, 스토리지 장치의 동작 방법.
According to claim 8,
When the abnormal HMB allocation is detected,
When it is detected that the allocation location is changed using the log information of the HMB
Including, the operating method of the storage device.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/944,613 US20230152988A1 (en) | 2021-11-15 | 2022-09-14 | Storage device and operation method thereof |
CN202211381676.0A CN116127479A (en) | 2021-11-15 | 2022-11-03 | Memory device and method of operating the same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210156966 | 2021-11-15 | ||
KR20210156966 | 2021-11-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230071023A true KR20230071023A (en) | 2023-05-23 |
Family
ID=86544308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220049635A KR20230071023A (en) | 2021-11-15 | 2022-04-21 | Storage device and operation method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230071023A (en) |
-
2022
- 2022-04-21 KR KR1020220049635A patent/KR20230071023A/en unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797181B2 (en) | Hardware accessible external memory | |
US11360679B2 (en) | Paging of external memory | |
US11016846B2 (en) | Storage device using host memory and operating method thereof | |
US20200371700A1 (en) | Coordinated allocation of external memory | |
US11086525B2 (en) | Resilient external memory | |
JP6460940B2 (en) | Storage device and data saving method | |
CN110795497A (en) | Cooperative compression in distributed storage systems | |
US11544205B2 (en) | Peer storage devices sharing host control data | |
US20230152988A1 (en) | Storage device and operation method thereof | |
KR20230071023A (en) | Storage device and operation method thereof | |
KR102588751B1 (en) | Storage device and operation method thereof | |
US20230153026A1 (en) | Storage device and operation method thereof | |
EP4180975A1 (en) | Storage device and operation method thereof | |
US20240202067A1 (en) | Storage device and method of operating the same | |
US20230152987A1 (en) | Storage device and operation method thereof | |
US20230138032A1 (en) | Storage device and operating method thereof | |
KR20240094827A (en) | Storage device and operating method thereof | |
KR20230094308A (en) | Storage device, host system having the same, and operating method thereof |