KR20230056920A - 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 - Google Patents

스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 Download PDF

Info

Publication number
KR20230056920A
KR20230056920A KR1020210140749A KR20210140749A KR20230056920A KR 20230056920 A KR20230056920 A KR 20230056920A KR 1020210140749 A KR1020210140749 A KR 1020210140749A KR 20210140749 A KR20210140749 A KR 20210140749A KR 20230056920 A KR20230056920 A KR 20230056920A
Authority
KR
South Korea
Prior art keywords
request
storage
storage area
storage device
area
Prior art date
Application number
KR1020210140749A
Other languages
English (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 KR1020210140749A priority Critical patent/KR20230056920A/ko
Priority to US17/816,249 priority patent/US12032492B2/en
Priority to CN202211184956.2A priority patent/CN116009765A/zh
Publication of KR20230056920A publication Critical patent/KR20230056920A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법에서, 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대하여 암호화 삭제(cryptographic erase)를 요청하는 제1 요청이 수신된다. 상기 제1 요청에 응답하여, 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키가 변경된다. 기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청이 수신된다. 상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호가 출력된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행이 보류된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청이 수행된다.

Description

스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법{METHOD OF OPERATING STORAGE DEVICE AND METHOD OF OPERATING STORAGE SYSTEM USING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서 더욱 상세하게는 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법에 관한 것이다.
최근 비휘발성 메모리들을 이용하는 SSD(solid state drive)와 같은 스토리지 장치가 널리 사용되고 있다. 상기 스토리지 장치는 안정성 및 내구성이 뛰어나고 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다.
스토리지 장치는 성능의 향상을 위해 다수의 프로토콜들을 기반으로 구성될 수 있다. 예를 들어 스토리지 장치는 데이터의 초고속 및 대용량 처리를 위해 멀티-큐들(multi queues)을 사용하는 NVMe(nonvolatile memory express) 프로토콜을 기반으로 구성될 수 있고, 추가적으로 상기 데이터의 보안 성능을 향상시키기 위해 TCG(trusted computing group) 프로토콜을 기반으로 구성될 수 있다.
상기 TCG 프로토콜 하에서 상기 스토리지 장치는 데이터를 암호화하여 상기 스토리지 장치의 일정한 영역에 기입할 수 있고, 상기 기입된 데이터에 대한 암호화 삭제(cryptographic erase)를 수행하기 위해 상기 암호화에 사용된 암호화 키를 변경할 수 있다. 상기 NVMe 프로토콜 하에서 상기 스토리지 장치는 호스트 장치로부터 다수의 요청들을 병렬적으로 페치(fetch)하여 고속으로 처리할 수 있다.
다만 상기 스토리지 장치가 상기 암호화 삭제를 수행하기 위해 상기 암호화 키를 변경하는 경우, 상기 스토리지 장치의 상기 암호화 삭제와 무관한 영역들에 상응하는 요청들에 대한 페치도 함께 차단될 수 있다. 따라서 상기 차단된 요청들에 대한 처리가 정상적으로 수행될 수 없다.
본 발명의 일 목적은 상기 스토리지 장치의 상기 암호화 삭제의 수행에도 불구하고 상기 암호화 삭제와 무관한 영역들에 상응하는 요청들을 정상적으로 처리하는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 일 목적은 상기 스토리지 장치의 구동 방법을 이용한 스토리지 시스템의 구동 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법에서, 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대하여 암호화 삭제(cryptographic erase)를 요청하는 제1 요청이 수신된다. 상기 제1 요청에 응답하여, 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키가 변경된다. 기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청이 수신된다. 상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호가 출력된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행이 보류된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청이 수행된다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 시스템의 구동 방법에서, 상기 스토리지 시스템은 NVMe(nonvolatile memory express) 프로토콜에 기초하여 서로 연결된 호스트 장치 및 스토리지 장치를 포함한다. 상기 호스트 장치가 상기 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대한 암호화 삭제를 요청하는 제1 요청을 발행한다. 상기 스토리지 장치가 상기 제1 요청에 응답하여 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키를 변경한다. 상기 호스트 장치가 기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청을 발행한다. 상기 스토리지 장치가 상기 제2 요청을 상기 제1 시구간의 경과 전에 수신한 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호를 출력한다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과하기까지 상기 제2 요청의 수행이 보류된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청이 수행된다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법에서, 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대한 암호화 삭제를 요청하는 제1 요청이 수신된다. 상기 제1 요청에 응답하여 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키가 변경된다. 기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청이 수신된다. 상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호가 출력된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행이 보류된다. 상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청이 수행된다. 상기 제2 요청의 수행을 보류하는 동작에서, 상기 영역 액세스 신호에 기초하여, 상기 제2 요청을 수행하기 위한 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청에 각각 상응하고 스토리지 컨트롤러가 비휘발성 메모리들로 발행하는 기입 커맨드, 독출 커맨드 및 삭제 커맨드의 생성을 보류하거나, 또는 상기 영역 액세스 신호에 기초하여, 상기 제2 요청이 상기 기입 요청인 경우 상기 기입 요청에 상응하는 기입 데이터들에 대한 암호화의 수행을 보류하고, 상기 제2 요청이 상기 독출 요청인 경우 상기 독출 요청에 상응하는 독출 데이터들에 대한 복호화의 수행을 보류한다.
본 발명의 실시예들에 포함되는 상기 스토리지 장치 및 스토리지 시스템의 동작 방법에서, 상기 스토리지 장치의 제1 저장 영역에 대한 상기 암호화 삭제의 수행에도 불구하고 상기 암호화 삭제와 무관한 상기 스토리지 장치의 상기 제2 저장 영역에 상응하는 제2 요청을 정상적으로 처리할 수 있다. 상기 스토리지 장치는 상기 제2 저장 영역에 대한 데이터들의 기입/독출/삭제 동작들을 정상적으로 수행할 수 있게 되어 상기 암호화 삭제의 수행에 따라 발생할 수 있는 상기 스토리지 장치의 성능의 저하를 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 일 실시예에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3은 도 2의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 4a, 4b 및 4c는 본 발명의 일 실시예에 따른 스토리지 장치에 포함되는 복수의 저장 영역들을 설명하기 위한 도면들이다.
도 5는 도 3의 스토리지 시스템의 일 실시예를 나타내는 블록도이다.
도 6은 도 3의 스토리지 장치에서 수행되는 암호화 삭제를 설명하기 위한 도면이다.
도 7은 도 1의 제1 요청을 수신하는 단계의 일 실시예를 나타내는 순서도이다.
도 8은 도 1의 제1 암호화 키를 변경하는 단계의 일 실시예를 나타내는 순서도이다.
도 9는 도 1의 제1 암호화 키를 변경하는 단계와 관련된 키 변경 테이블을 설명하기 위한 도면이다.
도 10은 도 1의 영역 액세스 신호를 출력하는 단계, 제2 요청의 수행을 보류하는 단계 및 제2 요청을 수행하는 단계의 일 실시예를 나타내는 순서도이다.
도 11 및 12는 도 10의 제2 요청이 제1 저장 영역에 대한 요청인지 여부를 판단하는 단계의 일 실시예를 나타내는 순서도들이다.
도 13 및 14는 도 1의 제2 요청의 수행을 보류하는 단계를 설명하기 위한 도면들이다.
도 15 및 16은 도 1의 제2 요청의 수행을 보류하는 단계의 일 실시예를 나타내는 순서도들이다.
도 17은 도 1의 제2 요청을 수행하는 단계의 일 실시예를 나타내는 순서도이다.
도 18은 본 발명의 일 실시예에 따른 스토리지 시스템의 구동 방법을 나타내는 순서도이다.
도 19는 도 18의 복수의 저장 영역들을 설정하는 단계의 일 실시예를 나타내는 순서도이다.
도 20은 도 18의 제2 요청의 수행을 보류하는 단계를 설명하기 위한 도면이다.
도 21은 도 18의 제1 암호화 키를 변경하는 단계와 관련된 키 변경 테이블을 설명하기 위한 도면이다.
도 22는 본 발명의 일 실시예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법은 호스트 장치와 연결된 스토리지 장치를 이용하여 수행된다. 상기 스토리지 장치는 성능의 향상을 위해 다수의 프로토콜들을 기반으로 구성되고, 상기 호스트 장치와 상기 스토리지 장치는 상기 다수의 프로토콜들에 기초하여 서로 통신할 수 있다. 예를 들어, 상기 스토리지 장치는 데이터의 초고속 및 대용량 처리를 위해 멀티-큐들(multi queues)을 사용하는 NVMe(nonvolatile memory express) 프로토콜을 기반으로 구성될 수 있고, 추가적으로 상기 데이터의 보안 성능을 향상시키기 위해 TCG(trusted computing group) 프로토콜을 기반으로 구성될 수 있다.
본 발명의 일 실시예에 따른 스토리지 장치의 구동 방법에서, 상기 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대하여 암호화 삭제(cryptographic erase)를 요청하는 제1 요청을 수신한다(S100).
일 실시예에서, 상기 스토리지 장치는 복수의 비휘발성 메모리들을 포함할 수 있다. 상기 복수의 저장 영역들은 상기 복수의 비휘발성 메모리들이 데이터들을 저장할 수 있는 메모리 공간들을 논리적/물리적으로 분할한 임의의 공간들일 수 있다.
일 실시예에서, 상기 호스트 장치는 상기 다수의 프로토콜들에 기초하여 상기 복수의 저장 영역들을 설정할 수 있다. 예를 들어, 상기 호스트 장치는 상기 TCG 프로토콜 및 상기NVMe 프로토콜 중 적어도 하나에 기초하여 상기 복수의 저장 영역들을 설정할 수 있다. 상기 TCG 프로토콜에 기초하여 상기 복수의 저장 영역들이 설정된 경우 상기 복수의 저장 영역들은 복수의 레인지들(ranges)로 지칭될 수 있고, 상기 NVMe 프로토콜에 기초하여 상기 복수의 저장 영역들이 설정된 경우 상기 복수의 저장 영역들은 복수의 네임스페이스들(namespaces)로 지칭될 수 있다.
일 실시예에서, 상기 제1 저장 영역은 상기 복수의 저장 영역들 중 하나 이상의 저장 영역을 포함할 수 있으며, 본 명세서에서 설명의 편의를 위해 상기 제1 저장 영역은 상기 복수의 레인지들 중 하나 이상의 레인지에 해당하는 것으로 본다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 상기 제1 저장 영역은 상기 복수의 네임스페이스들 중 하나 이상의 저장 영역에 해당할 수도 있다. 상기 복수의 저장 영역들에 관하여 도 4a, 4b 및 4c를 참조하여 후술하기로 한다.
일 실시예에서, 상기 복수의 저장 영역들 각각의 주소 정보, 상기 복수의 저장 영역들 각각에 기입되는 데이터들을 암호화하는 암호화 키 및 상기 복수의 저장 영역들 각각의 데이터에 대하여 상기 암호화 삭제가 수행 중인지 여부를 나타내는 키 변경 비트를 포함하는 키 변경 테이블이 상기 스토리지 장치의 내부에 구비될 수 있다. 상기 키 변경 테이블에 관하여 도 9 및 도 21을 참조하여 후술하기로 한다.
일 실시예에서, 상기 암호화 삭제는 상기 TCG 프로토콜에 기초하여 상기 스토리지 장치의 일정한 영역에 기입된 데이터를 암호화하기 위해 사용된 암호화 키를 변경하여 상기 기입된 데이터를 삭제하는 동작을 의미할 수 있다. 상기 암호화 삭제에 관하여 도 6을 참조하여 후술하기로 한다.
일 실시예에서, 상기 제1 요청은 상기 호스트 장치에 의하여 발행되고, 상기 스토리지 장치는 상기 NVMe 프로토콜에서 정한 방식에 따라 상기 제1 요청을 수신할 수 있다. 상기 제1 요청을 수신하는 단계에 관하여 도 7을 참조하여 후술하기로 한다.
상기 제1 요청에 응답하여, 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키를 변경한다(S200).
일 실시예에서, 상기 제1 시구간은 상기 제1 요청을 수신한 시점으로부터 상기 제1 저장 영역에 상응하는 제1 암호화 키를 상기 제1 암호화 키와 다른 제2 암호화 키로 변경하고 상기 변경이 완료되었음을 나타내는 미리 설정된 레지스터의 값을 변경하기까지 필요한 시간일 수 있다. 예를 들어, 상기 레지스터는 상기 NVMe 프로토콜에 따른 컴플리션 큐 도어벨 레지스터(completion queue doorbell register)일 수 있다.
일 실시예에서, 상기 제1 저장 영역에 상응하는 제1 암호화 키를 변경함으로써 상기 제1 저장 영역에 기입된 데이터는 더 이상 복호화가 불가능한 상태가 되어 상기 스토리지 장치에서 삭제되는 것과 동일한 상태로 남아있을 수 있다.
기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청을 수신한다(S300).
일 실시예에서, 상기 제2 요청은 상기 호스트 장치에 의하여 발행되고, 상기 스토리지 장치는 상기 NVMe 프로토콜에서 정한 방식에 따라 상기 제2 요청을 수신할 수 있다.
일 실시예에서, 상기 제2 요청은 상기 제1 요청과 구별되며, 상기 암호화 삭제를 요청하는 것과 다른 요청일 수 있다. 예를 들어, 상기 호스트 장치는 상기 기입 요청을 발행하여 상기 스토리지 장치에 데이터를 기입할 것을 요청하고, 상기 독출 요청을 발행하여 상기 스토리지 장치에 기입된 데이터를 독출할 것을 요청하며, 상기 삭제 요청을 발행하여 상기 스토리지 장치에 기입된 데이터를 삭제할 것을 요청할 수 있다. 상기 기입/독출 요청은 상기 비휘발성 메모리들에 대하여 페이지 단위로 기입/독출하는 페이지 단위 기입/독출 요청일 수 있다. 상기 삭제 요청은 비휘발성 메모리들을 블록 단위로 삭제하는 블록 삭제 요청일 수 있고, 상기 하나 이상의 레인지에 대하여 상기 암호화 삭제를 요청하는 제1 요청과 구별될 수 있다.
상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호를 출력한다(S400).
일 실시예에서, 상기 영역 액세스 신호는 디지털 신호로서 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타낼 수 있다. 예를 들어, 상기 제2 요청이 제1 로직 레벨에 해당하는 경우, 상기 제2 요청이 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타낼 수 있고, 상기 제2 요청이 제2 로직 레벨에 해당하는 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타낼 수 있다. 그러나 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 방식은 예시적인 것으로서 다양하게 변경될 수 있다.
상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행을 보류한다(S500).
일 실시예에서, 상기 제1 저장 영역에 대하여 상기 암호화 삭제가 수행되고 있으므로, 상기 제1 저장 영역에 대한 상기 제2 요청은 보류될 수 있다. 상기 제2 요청의 수행을 보류하는 단계에 관하여 도 10, 11, 12, 13, 14, 15 및 16을 참조하여 후술하기로 한다.
상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청을 수행한다(S600).
일 실시예에서, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청이 아니므로 상기 제2 요청은 상기 제1 시구간의 경과되기 전이라도 수행될 수 있다. 상기 제2 요청을 수행하는 단계에 관하여 도 10 및 17을 참조하여 후술하기로 한다.
상기와 같은 구성에 의하여 상기 스토리지 장치는 상기 제1 저장 영역에 대한 상기 암호화 삭제의 수행에도 불구하고 상기 암호화 삭제와 무관한 상기 제2 저장 영역에 상응하는 제2 요청을 정상적으로 처리할 수 있다. 상기 스토리지 장치는 상기 제2 저장 영역에 대한 데이터들의 기입/독출/삭제 동작들을 정상적으로 수행할 수 있게 되어 상기 암호화 삭제의 수행에 따라 발생할 수 있는 상기 스토리지 장치의 성능의 저하를 방지할 수 있다.
도 2는 본 발명의 일 실시예에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 호스트 프로세서(210) 및 호스트 메모리(220)를 포함하고, 스토리지 시스템(100)의 전반적인 동작을 제어한다. 호스트 프로세서(210)는 호스트 장치(200)의 동작을 제어하고, 예를 들어 운영 체제(operating system)(OS)를 실행할 수 있다. 호스트 메모리(120)는 호스트 프로세서(210)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어 호스트 프로세서(210)에 의해 실행되는 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다.
일 실시예에서, 호스트 프로세서(210)는 코어(211)를 포함할 수 있고, 코어(211)는 도 13을 참조하여 후술하는 바와 같이 단일 코어일 수 있고, 도 20일 참조하여 후술하는 바와 같이 듀얼 코어일 수 있으며, 셋 이상의 코어들을 포함할 수도 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 비휘발성 메모리들(320a, 320b 및 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(300)의 동작을 제어할 수 있다. 예를 들어 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 수신된 요청들(REQ) 및 데이터들(DAT)에 기초하여 복수의 비휘발성 메모리들(320a, 320b 및 320c)의 동작을 제어할 수 있다.
복수의 비휘발성 메모리들(320a, 320b 및 320c)은 데이터들을 저장할 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a, 320b 및 320c) 각각은 NAND 플래시 메모리(Flash Memory)를 포함할 수 있다. 다른 실시예에서, 복수의 비휘발성 메모리들(320a, 320b 및 320c) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리를 포함할 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a, 320b 및 320c)에 대해 복수의 저장 영역들이 설정될 수 있다. 도 4a, 4b 및 4c를 참조하여 후술하는 바와 같이 복수의 비휘발성 메모리들(320a, 320b 및 320c) 중 일부에 대하여 하나의 레인지 또는 하나의 네임스페이스가 설정될 수 있다.
버퍼 메모리(330)는 스토리지 컨트롤러(310)에 의해 실행 및 처리되는 커맨드들 및 데이터들을 저장할 수 있고, 복수의 비휘발성 메모리들(320a, 320b 및 320c)에 기입되어 있거나 기입하고자 하는 데이터들을 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(330)는 DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
스토리지 컨트롤러(310)는 암복호화/커맨드 관리자(311), 암호화 키 관리자(313) 및 암복호화 엔진(315)을 포함하고, 스토리지 장치(300)는 도 1을 참조하여 상술한 스토리지 장치의 구동 방법을 수행할 수 있다. 예를 들어, 암복호화/커맨드 관리자(311)는 상기 S100 S300 S400 및 S500 동작들 중 적어도 일부를 수행할 수 있고, 암호화 키 관리자(313)는 상기 S200 동작을 수행할 수 있고, 암복호화 엔진(315)은 S500 및 S600 동작들을 수행할 수 있다.
일 실시예에서, 스토리지 장치(300)는 SSD(Solid State Drive)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 UFS(Universal Flash Storage), MMC(Multi Media Card) 또는 eMMC(embedded MMC)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(300)는 NVMe 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 호스트 장치(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 스토리지 시스템(100)은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 디지털 TV(digital television), 셋-탑 박스(set-top box) 등의 임의의 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 스토리지 시스템(10)은 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 노트북(laptop computer), PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 카메라(digital camera), 캠코더(camcorder), 휴대용 게임 콘솔(portable game console), 음악 재생기(music player), 동영상 재생기(video player), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등의 임의의 모바일 시스템일 수 있다.
도 3은 도 2의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3을 참조하면, 스토리지 컨트롤러(400)는 프로세서(410), 암복호화/커맨드 관리자(412), 암호화 키 관리자(420), AES(advanced encryption standard) 엔진(430), 호스트 인터페이스(440), 버퍼 메모리 인터페이스(450), 플래시 변환 계층(460), ECC(error correction code) 블록(470) 및 메모리 인터페이스(480)를 포함할 수 있다.
프로세서(410)는 암복호화/커맨드 관리자(412)를 포함할 수 있고, 암호화 키 관리자(420)는 암호화 키 테이블(422)을 포함할 수 있으며, 암복호화/커맨드 관리자(412), 암호화 키 관리자(420) 및 AES 엔진(430)은 도 2를 참조하여 상술한 암복호화/커맨드 관리자(311), 암호화 키 관리자(313) 및 암복호화 엔진(315)에 각각 상응할 수 있다.
프로세서(410)는 호스트 장치(예를 들어, 도 2의 200)로부터 호스트 인터페이스(440)를 통하여 수신된 요청들에 응답하여 스토리지 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 프로세서(410)는 스토리지 장치(예를 들어, 도 2의 300)를 구동하기 위한 펌웨어를 채용하여 각각의 구성들을 제어할 수 있다. 예를 들어, 프로세서(410)에 포함되는 암복호화/커맨드 관리자(412)는 상기 호스트 장치로부터 상기 스토리지 장치의 복수의 저장 영역들 중 일부 영역에 대한 암호화 삭제 요청, 기입 요청, 독출 요청 및 삭제 요청을 수신하는 경우, 암호화 키 관리자(420), AES 엔진(430), 호스트 인터페이스(440) 및 메모리 인터페이스(480) 등을 제어하여, 상기 암호화 삭제 요청, 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청에 상응하는 다양한 동작들을 수행하도록 제어할 수 있다.
암호화 키 관리자(420)는 암복호화/커맨드 관리자(412)의 제어 하에 상기 호스트 장치로부터 상기 스토리지 장치의 복수의 저장 영역들 중 일부 영역에 대한 암호화 삭제 요청이 수신된 경우, 상기 암호화 삭제 요청에 상응하는 저장 영역과 관련된 복수의 암호화 키들 및/또는 상기 암호화 삭제가 수행 중인지 여부를 나타내는 복수의 키 변경 비트들을 변경할 수 있다.
AES 엔진(430)은 AES 알고리즘을 이용한 데이터들의 암호화 및 복호화를 수행할 수 있고, 별도의 암호화 모듈 및 복호화 모듈을 더 포함할 수 있다.
플래시 변환 계층(460)은 어드레스 매핑(address mapping) 정보를 이용하여 상기 호스트 장치로부터 제공된 논리적인 데이터 주소, 예를 들어 LBA(logical block address)를 물리적인 데이터 주소로, 예를 들어 PBA(physical block address)로 변환할 수 있다.
에러 정정을 위한 ECC 블록(470)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(440)는 상기 호스트 장치와 상기 스토리지 장치 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(440)는 상기 호스트 장치의 버스 포맷(bus format)에 대응하여 상기 스토리지 장치와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 상기 호스트 장치의 버스 포맷은 PCIe(peripheral component interconnect express), NVMe 등일 수 있다.
메모리 인터페이스(480)는 비휘발성 메모리들(예를 들어, 도 2의 320a, 320b, 320c)과 데이터를 교환할 수 있다. 메모리 인터페이스(480)는 데이터를 상기 비휘발성 메모리들로 전송할 수 있고, 상기 비휘발성 메모리들로부터 독출된 데이터를 수신할 수 있다. 일 실시예에서, 메모리 인터페이스(480)는 상기 비휘발성 메모리들과 하나의 채널을 통하여 연결될 수 있다. 다른 실시예에서, 메모리 인터페이스(480)는 상기 비휘발성 메모리들과 2 이상의 채널들을 통하여 연결될 수 있다.
도 4a, 4b 및 4c는 본 발명의 일 실시예에 따른 스토리지 장치에 포함되는 복수의 저장 영역들을 설명하기 위한 도면들이다.
도 2, 4a 및 도 4b를 참조하면, 호스트 장치(200)는 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK)(K는 2 이상의 자연수)에 대해 복수의 저장 영역들을 설정할 수 있다.
도 4a에 도시된 예에서, 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK)이 복수의 저장 영역들(예를 들어, 복수의 레인지들)로 각각 설정될 수 있다. 예를 들어, 비휘발성 메모리(NVM1)의 전체 영역에 대하여 제1 레인지(RNG11)가 설정되고, 비휘발성 메모리(NVM2)의 전체 영역에 대하여 제2 레인지(RNG12)가 설정되고, 비휘발성 메모리(NVMK)의 전체 영역에 대하여 제M 레인지(RNG1M)가 설정될 수 있다.
도 4b에 도시된 예에서, 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK) 각각의 일부 영역들이 복수의 저장 영역들(예를 들어, 복수의 레인지들)로 각각 설정될 수 있다. 예를 들어, 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK) 전체의 일부 영역에 대하여 제4 레인지(RNG21)가 설정되고, 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK) 전체의 다른 일부 영역에 대하여 제5 레인지(RNG22)가 설정되고, 복수의 비휘발성 메모리들(NVM1, NVM2, ..., NVMK) 전체의 또 다른 일부 영역에 대하여 제N 레인지(RNG2N)가 설정될 수 있다.
그러나 상기 복수의 저장 영역들로 설정되는 방식은 예시적인 것으로서 본 발명의 범위는 이에 한정되지 않는다. 도 4a 및 4b에 도시된 예들은 호스트 장치(200)는 상기 TCG 프로토콜에 기초하여 상기 복수의 저장 영역들을 설정한 경우를 예시하나, 다른 실시예에서 호스트 장치(200)는 상기 NVMe 프로토콜에 기초하여 상기 복수의 저장 영역들을 설정할 수 있다. 이 경우 상기 복수의 저장 영역들은 도 1을 참조하여 상술한 바와 같이 복수의 네임스페이스들로 지칭될 수 있다. 또한 호스트 장치(200)는 복수의 코어들을 포함할 수도 있다. 이 경우, 상기 복수의 코어들 각각은 독자적으로 상기 복수의 저장 영역들을 설정할 수 있고, 이 경우 상기 복수의 코어들 각각이 설정된 복수의 저장 영역들 사이에 중첩되는 저장 영역이 존재할 수도 있다.
도 4c에 도시된 예에서, 호스트 장치(200)가 상기 TCG 프로토콜에 기초하여 상기 복수의 저장 영역들(예를 들어, 복수의 레인지들(RNG11, RNG12, RNG13, RNG14, RNG15, ...))을 설정한 경우와 호스트 장치(200)가 상기 NVMe 프로토콜에 기초하여 상기 복수의 저장 영역들(예를 들어, 복수의 네임스페이스들(NS1, NS2, NS3, NS4, NS5, ...))을 설정한 경우, 복수의 레인지들(RNG11, RNG12, RNG13, RNG14, RNG15, ...)과 복수의 네임스페이스들(NS1, NS2, NS3, NS4, NS5, ...) 간의 관계가 나타내어진다. 그러나 이는 예시적인 것으로서 호스트 장치(200)는 하나의 레인지에 복수의 네임스페이스들이 대응되도록 상기 복수의 저장 영역들을 설정할 수 있고, 하나의 네임스페이스에 복수의 레인지들이 대응되도록 상기 복수의 저장 영역들을 설정할 수도 있다.
도 5는 도 3의 스토리지 시스템의 일 실시예를 나타내는 블록도이다.
도 5에서, 호스트 장치 및 스토리지 장치가 도시된다. 설명의 편의를 위해 상기 호스트 장치(예를 들어, 도 2의 200)의 복수의 구성 요소들 중 도 2에 도시된 호스트 메모리(220)만을 도시하고, 상기 스토리지 장치(예를 들어, 도 3의 400)의 복수의 구성 요소들 중 도 3에 도시된 호스트 인터페이스(440), 암호화 키 관리자(420), 암복호화/커맨드 관리자(412), 플래시 변환 계층(460), AES 엔진(430), 메모리인터페이스(480) 및 복수의 저장 영역들(RNG11, RNG12, ..., RNG1M)만을 도시한다.
도 5를 참조하면, 호스트 메모리(220)는 상기 NVMe 프로토콜에 기초하여 서브미션 큐(221) 및 컴플리션 큐(223)를 포함할 수 있다. 호스트 인터페이스(441)는 서브미션 큐 도어벨 레지스터(441) 및 컴플리션 큐 도어벨 레지스터(443)를 포함할 수 있다.
상기 호스트 장치는 암호화 삭제 요청, 기입 요청, 독출 요청 및 삭제 요청 등을 상기 스토리지 장치에 대하여 발행할 수 있다. 상기NVMe 프로토콜 하에서 상기 호스트 장치가 발행하는 요청들이 상기 스토리지 장치로 제공되는 과정에 관하여 설명하기로 한다. 상기 호스트 장치는 단일 코어를 포함하고, 서브미션 큐(221) 및 컴플리션 큐(223)는 상기 단일 코어에 대하여 할당된 입출력 큐 쌍일 수 있다.
상기 NVMe 프로토콜 하에서, 상기 호스트 장치는 발행하고자 하는 요청을 서브미션 큐(221)에 삽입하고, 서브미션 큐 도어벨 레지스터(441)의 값을 변화시킨다. 예를 들어, 상기 호스트 장치는 상기 요청을 서브미션 큐(221)에 삽입한 후에, 서브미션 큐 도어벨 레지스터(441)에 저장된 값을 증가시킬 수 있다.
상기 스토리지 장치는 서브미션 큐 도어벨 레지스터(441)를 모니터링 한다. 상기 스토리지 장치는 서브미션 큐 도어벨 레지스터(441)의 값의 변화에 기초하여 서브미션 큐(221)에 저장된 상기 요청을 페치(fetch)할 수 있다.
상기 스토리지 장치는 상기 페치된 요청을 처리한다. 상기 페치된 요청에 대한 처리가 완료되면, 상기 스토리지 장치는 컴플리션 큐 도어벨 레지스터(443)의 값을 변화시킨다. 예를 들어, 상기 스토리지 장치는 상기 페치된 요청에 대한 처리가 완료되면 컴플리션 큐 도어벨 레지스터(443)에 저장된 값을 증가시킬 수 있다.
이러한 과정을 통해 상기 호스트 장치로부터 암호화 삭제 요청, 기입 요청, 독출 요청 및 삭제 요청 등이 상기 스토리지 장치로 제공될 수 있다.
상기 스토리지 장치가 상기 호스트 장치로부터 상기 암호화 삭제 요청, 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청 중 적어도 하나를 포함하는 요청들을 수신한 경우, 암복호화/커맨드 관리자(412)는 상기 요청들에 기초하여 플래시 변환 계층(460)에 저장되어 있는 어드레스 매핑 정보 및, 암호화 키 관리자(420)에 저장되어 있는 주소 정보, 암호화 키 및 키 변경 비트를 참조할 수 있다.
암복호화/커맨드 관리자(412)는 상기 기입 요청 및 상기 참조된 정보들에 기초하여 AES 엔진(430)을 제어하여 상기 기입 요청에 상응하는 기입 데이터들에 대한 암호화를 수행하고, 메모리 인터페이스(480)를 통해 비휘발성 메모리들로 상기 암호화된 기입 데이터들을 제공할 수 있다.
암복호화/커맨드 관리자(412)는 상기 독출 요청 및 상기 참조된 정보들에 기초하여 AES 엔진(430)을 제어하여 상기 독출 요청에 상응하는 독출 데이터들에 대한 복호화를 수행하고, 호스트 인터페이스(440)를 통해 상기 호스트 장치로 상기 복호화된 독출 데이터들을 제공할 수 있다.
암복호화/커맨드 관리자(412)는 상기 삭제 요청 및 상기 참조된 정보들에 기초하여 상기 삭제 요청에 상응하는 기입 데이터들을 삭제할 수 있다. 암복호화/커맨드 관리자(412)는 상기 암호화 삭제 요청 및 상기 참조된 정보들에 기초하여 상기 암호화 삭제 요청에 상응하는 암호화 키를 변경할 수 있다.
암복호화/커맨드 관리자(412)는 상기 암호화 삭제 요청, 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청에 응답하여 제어 신호들(CTLH, CTLE 및 CTLM) 중 적어도 하나를 생성할 수 있다. 암복호화/커맨드 관리자(412)는 제어 신호(CTLH)에 기초하여 호스트 인터페이스(440)를 제어할 수 있고, 제어 신호(CTLE)에 기초하여 AES 엔진(430)을 제어할 수 있고, 제어 신호(CTLM)에 기초하여 메모리 인터페이스(480)를 제어할 수 있다. 일 실시예에서, 암복호화/커맨드 관리자(412)는 상기 암호화 삭제 요청에 상응하는 암호화 커맨드를 생성하여 AES 엔진(430)으로 제공할 수 있고, 상기 암호화 커맨드는 제어 신호(CTLE)에 포함될 수 있다. 암복호화/커맨드 관리자(412)는 상기 기입/독출 요청에 상응하는 기입/독출 커맨드를 각각 생성하여 메모리 인터페이스(480)로 제공할 수 있고, 상기 기입/독출 커맨드는 제어 신호(CTLM)에 포함될 수 있다.
암복호화/커맨드 관리자(412)는 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청 중 하나 이상을 포함하는 요청들이 미리 설정된 시구간의 경과 전에 수신된 경우, 상기 요청들이 상기 암호화 삭제가 수행되는 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호를 생성할 수 있다.
일 실시예에서, 상기 영역 액세스 신호는 제어 신호들(CTLH, CTLE 및 CTLM)에 포함되어 호스트 인터페이스(440), AES 엔진(430) 및 메모리 인터페이스(480) 중 하나로 제공될 수 있고, 다른 실시예에서 상기 영역 액세스 신호는 암복호화/커맨드 관리자(412)의 내부 신호로서 사용될 수도 있다.
도 6은 도 3의 스토리지 장치에서 수행되는 암호화 삭제를 설명하기 위한 도면이다.
도 6에서, 독출 요청(READ), 기입 요청(WRITE), 삭제 요청(ERASE) 및 암호화 삭제 요청(CRYPTOGRAPHIC ERASE)에 의하여 암호화 키(ENC_KEY)의 변경이 발생하는지 여부가 도시된다.
도 6을 참조하면, 호스트 장치(예를 들어, 도 2의 200)로부터 독출 요청(READ), 기입 요청(WRITE) 및 삭제 요청(ERASE) 중 하나가 발행된 경우 스토리지 장치의 저장 영역에 상응하는 암호화 키의 변경은 발생하지 않는다. 그러나 상기 호스트 장치로부터 암호화 삭제 요청(CRYPTOGRAPHIC ERASE)이 발행된 경우 상기 스토리지 장치의 저장 영역에 상응하는 암호화 키는 변경될 수 있다.
도 1을 참조하여 상술한 바와 같이, 암호화 삭제 요청(CRYPTOGRAPHIC ERASE)에 따른 상기 암호화 키의 변경에 의하여 암호화 삭제가 요청된 저장 영역에 기입된 데이터는 더 이상 복호화가 불가능한 상태가 되어 상기 스토리지 장치에서 삭제되는 것과 동일한 상태로 남아있을 수 있다.
도 7은 도 1의 제1 요청을 수신하는 단계의 일 실시예를 나타내는 순서도이다.
도 1, 도 5 및 도 7을 참조하면, 제1 요청을 수신하는 단계(S100)에서, 스토리지 장치는 서브미션 큐 도어벨 레지스터(441)를 모니터링한다(S111).
서브미션 큐 도어벨 레지스터(441)의 값의 변화에 기초하여 상기 스토리지 장치가 호스트 장치의 서브미션 큐(221)에 저장된 상기 제1 요청을 페치한다(S113).
일 실시예에서, 상기 제1 요청은 상기 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대한 암호화 삭제를 요청하는 것일 수 있다.
일 실시예에서, 도 1의 제2 요청을 수신하는 단계(S300) 또한 상기 제1 요청을 수신하는 방식과 유사한 방식으로 수행될 수 있다. 상기S111 및 상기 S113 단계들을 통하여 상기 호스트 장치가 발행한 상기 제1 요청 및 상기 제2 요청이 상기 스토리지 장치로 제공될 수 있다.
도 8은 도 1의 제1 암호화 키를 변경하는 단계의 일 실시예를 나타내는 순서도이다.
도 1, 도 5 및 도 8을 참조하면, 제1 암호화 키를 변경하는 단계(S200)에서, 스토리지 장치는 제1 요청에 응답하여 복수의 키 변경 비트들 중 제1 저장 영역에 상응하는 제1 키 변경 비트의 값을 변경한다(S210).
일 실시예에서, 상기 제1 요청은 상기 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대한 암호화 삭제를 요청하는 것일 수 있다.
일 실시예에서, 상기 복수의 키 변경 비트들은 도 1을 참조하여 상술한 상기 키 변경 테이블에 포함될 수 있고, 상기 키 변경 테이블에 관하여 도 9를 참조하여 후술하기로 한다.
일 실시예에서, 상기 제1 저장 영역에 상응하는 상기 제1 키 변경 비트의 값을 변경함으로써, 상기 제1 저장 영역에 대한 암호화 삭제가 수행 중임이 표시될 수 있다.
상기 스토리지 장치는 상기 제1 요청에 응답하여 상기 복수의 암호화 키들 중 상기 제1 암호화 키를 상기 제1 암호화 키와 다른 제2 암호화 키로 변경한다(S230).
일 실시예에서, 상기 제1 암호화 키를 상기 제1 암호화 키로 변경함으로써 상기 암호화 삭제가 완료되었음이 표시될 수 있다.
도 9는 도 1의 제1 암호화 키를 변경하는 단계와 관련된 키 변경 테이블을 설명하기 위한 도면이다.
도 9를 참조하면, 키 변경 테이블은 복수의 주소 정보들(시작 주소(STR_LBA) 및 종료 주소(END_LBA)), 복수의 암호화 키(ENC_KEY)들 및 복수의 키 변경 비트(KEY_CHNG_BIT)들을 포함할 수 있다. 상기 복수의 주소 정보들의 각각은 스토리지 장치의 복수의 저장 영역들 중 상응하는 저장 영역을 나타내고, 상기 복수의 암호화 키들 각각은 상기 상응하는 저장 영역에 기입되는 데이터들을 암호화하기 위해 사용될 수 있다. 상기 복수의 키 변경 비트들의 각각은 상기 상응하는 저장 영역의 데이터들에 대하여 암호화 삭제가 수행 중인지 여부를 나타낼 수 있다.
일 실시예에서, 키 변경 비트(KEY_CHNG_BIT)는 제1 로직 레벨(1ST_LGLV) 및 제2 로직 레벨(2ND_LGLV) 중 하나의 값을 가질 수 있고, 키 변경 비트(KEY_CHNG_BIT)가 제1 로직 레벨(1ST_LGLV)에 해당하는 경우 상응하는 저장 영역(RANGE)에 대한 암호화 삭제가 수행되고 있지 않음을 나타낼 수 있고, 키 변경 비트(KEY_CHNG_BIT)가 제2 로직 레벨(2ND_LGLV)에 해당하는 경우 상응하는 저장 영역(RANGE)에 대한 상기 암호화 삭제가 수행되고 있음을 나타낼 수 있다.
예를 들어, 저장 영역(RNG11)은 시작 주소(LBA1) 및 종료 주소(LBA4)로 나타내어질 수 있고, 저장 영역(RNG11)에 기입되거나 저장 영역(RNG11)으로부터 독출되는 데이터들은 제1 키(KEY1)로 암호화 또는 복호화 될 수 있다. 저장 영역들(RNG12, 13, 14, 15, ...) 또한 저장 영역(RNG11)과 동일한 방식으로 해석될 수 있다.
저장 영역(RNG11)에 상응하는 키 변경 비트(KEY_CHNG_BIT)의 값은 제1 로직 레벨(1ST_LGLV)에 해당하므로 저장 영역(RNG11)에 대하여 상기 암호화 삭제가 수행되고 있지 않음이 표시될 수 있다. 저장 영역(RNG11)과 동일한 방식으로 저장 영역들(RNG12, RNG15)에 대하여 상기 암호화 삭제가 수행되고 있지 않음이 표시될 수 있고, 저장 영역들(RNG13, RNG14)에 대하여 상기 암호화 삭제가 수행되고 있음이 표시될 수 있다.
도 10은 도 1의 영역 액세스 신호를 출력하는 단계, 제2 요청의 수행을 보류하는 단계 및 제2 요청을 수행하는 단계의 일 실시예를 나타내는 순서도이다.
도 1, 도 5 및 도 10을 참조하면, 스토리지 장치는 제2 요청이 제1 시구간의 경과 전에 수신되었는지 여부를 판단한다(S410). 일 실시예에서, 상기 제2 요청은 제1 요청과 구별되며, 암호화 삭제를 요청하는 것과 다른 요청일 수 있다.
상기 스토리지 장치는 상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우(S410: YES), 상기 제2 요청이 제1 저장 영역에 대한 요청인지 여부를 판단한다(S430).
일 실시예에서, 상기 제1 시구간은 상기 제1 요청을 수신한 시점으로부터 상기 제1 저장 영역에 상응하는 제1 암호화 키를 상기 제1 암호화 키와 다른 제2 암호화 키로 변경하고 상기 변경이 완료되었음을 나타내는 미리 설정된 레지스터의 값을 변경하기까지 필요한 시간일 수 있다.
일 실시예에서, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부는, 도 9를 참조하여 상술한 키 변경 테이블에 기초하여 상기 제1 저장 영역에 상응하는 제1 주소 정보 및 상기 제2 요청에 상응하는 제2 주소 정보에 기초하여 판단할 수 있다. 일 실시예에서, 상기 제1 주소 정보 및 상기 제2 주소 정보 각각은 도 9를 참조하여 상술한 시작 주소(STR_LBA) 및 종료 주소(END_LBA)를 포함할 수 있다.
상기 스토리지 장치는 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인 경우(S430: YES), 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 영역 액세스 신호를 출력한다(S450). 상기 스토리지 장치는 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행을 보류한다(S500).
상기 스토리지 장치는 상기 제2 요청이 상기 제1 저장 영역에 대한 요청이 아닌 경우(S430: NO), 상기 제2 요청이 제2 저장 영역에 대한 요청임을 나타내는 영역 액세스 신호를 출력한다(S470). 상기 스토리지 장치는 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청을 수행한다(S600).
상기 스토리지 장치는 상기 제2 요청이 상기 제1 시구간의 경과 후에 수신된 경우(S410: NO) 상기S430, S450, S470, S500 및 S600 단계들을 수행하지 않을 수 있다. 이 경우 상기 스토리지 장치는 상기 제2 요청을 상기 스토리지 장치가 기초하는 상기 NVMe 프로토콜에 따라 통상적인 방식대로 수행할 수 있다. 따라서 상기 스토리지 장치는 S600 단계에서와 같이 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청을 수행할 수도 있다.
도 11 및 12는 도 10의 제2 요청이 제1 저장 영역에 대한 요청인지 여부를 판단하는 단계의 일 실시예를 나타내는 순서도들이다.
도 1, 도 10 및 도 11을 참조하면, 스토리지 장치는 제2 주소 정보가 나타내는 제2 주소 범위의 적어도 일부가 제1 주소 정보가 나타내는 제1 주소 범위에 포함되는지 여부를 판단한다(S431).
상기 스토리지 장치는 상기 제2 주소 범위의 적어도 일부가 상기 제1 주소 범위에 포함되는 경우(S431: YES), 상기 제2 요청이 제1 저장 영역에 대한 요청인 것으로 판단하고(S436), 상기 제2 주소 범위의 적어도 일부가 상기 제1 주소 범위에 포함되지 않는 경우(S431: NO), 상기 제2 요청이 상기 제1 저장 영역에 대한 요청이 아닌 것으로 판단한다(S437).
도 12를 참조하면, 상기 제1 주소 정보는 상기 제1 저장 영역의 시작 주소와 종료 주소를 제1 시작 주소 및 제1 종료 주소를 포함하고, 상기 제2 주소 정보는 상기 제2 요청이 액세스(access)하는 비휘발성 메모리들의 시작 주소와 종료 주소를 나타내는 제2 시작 주소 및 제2 종료 주소를 포함할 수 있다.
상기 스토리지 장치는 상기 제2 시작 주소가 상기 제1 시작 주소보다 작거나 같고(S432: YES) 상기 제2 종료 주소가 상기 제1 시작 주소보다 큰 경우(S433: YES) 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인 것으로 판단한다(S436).
상기 스토리지 장치는 상기 제2 시작 주소가 상기 제1 시작 주소보다 크거나(S433: NO) 상기 제2 종료 주소가 상기 제1 시작 주소보다 작거나 같고(S433: NO), 상기 제2 종료 주소가 상기 제1 종료 주소보다 크거나 같고(S434: YES) 상기 제2 시작 주소가 상기 제1 종료 주소보다 작은 경우(S435: YES) 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인 것으로 판단한다(S436).
상기 스토리지 장치는 상기 제2 종료 주소가 상기 제1 종료 주소보다 작거나(S434: NO) 상기 제2 시작 주소가 상기 제1 종료 주소보다 크거나 같은 경우(S435: NO) 상기 제2 요청이 상기 제1 저장 영역에 대한 요청이 아닌 것으로 판단한다(S437).
일 실시예에서, 상기 S432, S433, S434 및 S435의 단계들은 상기 제2 주소 정보가 나타내는 제2 주소 범위가 상기 제1 주소 정보가 나타내는 제1 주소 범위에 포함되지 않는 경우에도 상기 제2 요청이 상기 제1 저장 영역에 대한 요청에 해당하는 것으로 보는 경우를 판단하기 위한 단계들일 수 있다.
일 실시예에서, 도 11의 S431 단계와 함께 상기 S432, S433, S434 및 S435의 단계들 중 S432 및 S433 단계들만이 실시될 수 있고, 다른 실시예에서, 도 11의 S431 단계와 함께 S434 및 S435 단계들만이 실시될 수도 있다.
도 13 및 14는 도 1의 제2 요청의 수행을 보류하는 단계를 설명하기 위한 도면들이다.
도 13을 참조하면, 호스트 장치는 단일 코어(CORE0)를 포함하고, 스토리지 장치는 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15)을 포함한다.
상기 호스트 장치가 도 1을 참조하여 상술한 복수의 저장 영역들로서 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15) 중 제3 및 제4 레인지들(RNG13 및 RNG14)에 대하여 암호화 삭제를 요청한 경우, 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 기입, 독출 및 삭제 요청들은 보류된다.
그러나 상기 암호화 삭제에도 불구하고, 상기 호스트 장치가 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15) 중 제1, 제2 및 제5 레인지들(RNG11, RNG12 및 RNG15)에 대하여 요청한 기입, 독출 및 삭제 요청들은 상기 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 상기 암호화 삭제의 요청에도 불구하고 정상적으로 수행될 수 있다.
도 13 및 도 14를 참조하면, 독출 요청들(READ1, READ2, READ3 및 READ4) 및 기입 요청들(WRITE1, WRITE2 및 WRITE3)이 도시된다. 상기 암호화 삭제가 요청된 레인지들은 제3 및 제4 레인지들(RNG13 및 RNG14)에 해당한다.
따라서 상기 기입, 독출 및 삭제 요청들에 상응하는 주소 범위가 일부라도 제3 및 제4 레인지들(RNG13 및 RNG14)을 나타내는 주소 범위(예를 들어, LBA9, LBA10, LBA11, LBA12, LBA13, LBA14, LBA15 및 LBA16)를 포함하는 경우, 상기 기입, 독출 및 삭제 요청들의 수행은 보류될 수 있다. 예를 들어 독출 요청들(READ1, READ2) 및 기입 요청(WRITE2)에 상응하는 주소 범위는 제3 및 제4 레인지들(RNG13 및 RNG14)을 나타내는 주소 범위(예를 들어, LBA9~LBA16)를 포함하지 않으므로 정상적으로 수행될 수 있다. 그러나 독출 요청들(READ3, READ4) 및 기입 요청들(WRITE1, WRITE3)에 상응하는 주소 범위는 일부라도 제3 및 제4 레인지들(RNG13 및 RNG14)을 나타내는 주소 범위를 포함하므로 독출 요청들(READ3, READ4) 및 기입 요청들(WRITE1, WRITE3)의 수행은 보류될 수 있다.
도 15 및 16은 도 1의 제2 요청의 수행을 보류하는 단계의 일 실시예를 나타내는 순서도들이다.
도 15를 참조하면, 도 1의 제2 요청의 수행을 보류하는 단계에서, 스토리지 장치는 영역 액세스 신호에 기초하여 제2 요청을 수행하기 위한 기입 요청, 독출 요청 및 삭제 요청에 각각 상응하고 스토리지 컨트롤러가 비휘발성 메모리들로 발행하는 기입 커맨드, 독출 커맨드 및 삭제 커맨드의 생성을 보류한다(S510).
도 16을 참조하면, 도 1의 제2 요청의 수행을 보류하는 단계에서, 상기 스토리지 장치는 상기 영역 액세스 신호에 기초하여 상기 제2 요청이 상기 기입 요청인 경우(S511: YES), 상기 기입 요청에 상응하는 기입 데이터들에 대한 암호화의 수행을 보류한다(S513).
상기 스토리지 장치는 상기 영역 액세스 신호에 기초하여 상기 제2 요청이 상기 독출 요청인 경우(S511: NO), 상기 독출 요청에 상응하는 독출 데이터들에 대한 복호화의 수행을 보류한다(S515).
일 실시예에서, 상기 스토리지 장치는 상기 S510 단계를 수행하여 상기 기입 커맨드, 상기 독출 커맨드 및 상기 삭제 커맨드 등 커맨드의 생성을 보류하는 방식에 의하여 상기 제2 요청의 수행을 보류할 수 있다.
일 실시예에서, 상기 스토리지 장치는 호스트 장치로부터 삭제 요청이 아닌 상기 기입 요청 및 상기 독출 요청 중 하나가 발행된 경우 상기 S513 및 S515 단계들을 수행하여 암호화 및 복호화의 발행을 보류하는 방식에 의하여 상기 제2 요청의 수행을 보류할 수 있다.
도 17은 도 1의 제2 요청을 수행하는 단계의 일 실시예를 나타내는 순서도이다.
도 17을 참조하면, 도 1의 제2 요청을 수행하는 단계에서, 스토리지 장치는 영역 액세스 신호에 기초하여 상기 스토리지 컨트롤러가 비휘발성 메모리들로 발행하는 기입 커맨드, 독출 커맨드 및 삭제 커맨드를 생성한다(S531).
상기 스토리지 컨트롤러는 상기 제2 요청이 기입 요청인 경우(S535: YES) 상기 기입 요청에 상응하는 기입 데이터들을 암호화하고, 상기 암호화된 기입 데이터들을 상기 비휘발성 메모리들에 기입한다(S537).
상기 스토리지 컨트롤러는 상기 제2 요청이 기입 요청이 아닌 독출 요청인 경우(S535: NO) 상기 독출 요청에 상응하는 독출 데이터들을 복호화하고, 상기 복호화된 독출 데이터들을 호스트 장치로 출력한다(S539).
도 18은 본 발명의 일 실시예에 따른 스토리지 시스템의 구동 방법을 나타내는 순서도이다.
도 18의 스토리지 시스템의 구동 방법은 도 1의 스토리지 장치의 구동 방법과 비교하여 S50 단계를 더 포함하는 것을 제외하고는 동일한 단계들을 수행한다. 따라서 동일한 단계들에 대한 중복된 설명은 생략하기로 한다.
도 18을 참조하면, 상기 스토리지 시스템의 구동 방법에서, 호스트 장치는 TCG 프로토콜 및 NVMe 프로토콜 중 하나에 기초하여 복수의 저장 영역들을 설정한다(S50).
상기 TCG 프로토콜에 기초하여 상기 복수의 저장 영역들이 설정된 경우 상기 복수의 저장 영역들은 복수의 레인지들(ranges)로 지칭될 수 있고, 상기 NVMe 프로토콜에 기초하여 상기 복수의 저장 영역들이 설정된 경우 상기 복수의 저장 영역들은 복수의 네임스페이스들(namespaces)로 지칭될 수 있다.
일 실시예에서, 상기 복수의 저장 영역들 중 하나 이상의 저장 영역에 대하여 도 1을 참조하여 상술한 암호화 삭제가 요청될 수 있다. 이 경우, 상기 암호화 삭제가 요청된 저장 영역에 대하여는 상기 암호화 삭제가 완료되는 제1 시구간이 경과하기까지 추가적인 기입 요청, 독출 요청 및 삭제 요청이 보류될 수 있다. 그러나 반대해석상, 상기 암호화 삭제가 요청된 저장 영역이 아닌 다른 저장 영역에 대하여는 상기 기입 요청, 상기 독충 요청 및 상기 삭제 요청이 정상적으로 수행될 수 있다.
도 19는 도 18의 복수의 저장 영역들을 설정하는 단계의 일 실시예를 나타내는 순서도이다.
도 19를 참조하면, 도 18의 복수의 저장 영역들을 설정하는 단계에서, 제1 코어가 스토리지 장치에 대하여 복수의 제1 코어 저장 영역들을 설정한다(S51). 제2 코어가 상기 스토리지 장치에 대하여 상기 제1 코어 저장 영역들 중 일부와 중첩되는 복수의 제2 코어 저장 영역들을 설정한다(S53).
도 2를 참조하여 상술한 바와 같이, 호스트 장치는 듀얼 코어일 수 있다. 이 경우 상기 호스트 장치는 상기 제1 코어 및 상기 제2 코어를 포함할 수 있다.
일 실시예에서, S51 및 S53 단계들에서와 같이 상기 제1 코어 및 상기 제2 코어 각각이 상기 스토리지 장치에 대하여 복수의 저장 영역들을 독자적으로 설정할 수 있다(예를 들어, 제1 코어 저장 영역들 및 제2 코어 저장 영역들). 이 경우, 상기 제1 코어 및 상기 제2 코어는 상기 복수의 저장 영역들 중 동일한 저장 영역(예를 들어, 하나의 레인지)을 공유할 수도 있다.
따라서 상기 제1 코어가 상기 중첩되는 저장 영역에 대하여 도 1을 참조하여 상술한 상기 제1 요청을 발행할 수 있고, 상기 제2 코어가 상기 중첩되는 저장 영역에 대하여 도 1을 참조하여 상술한 제2 요청을 발행할 수도 있다.
도 20은 도 18의 제2 요청의 수행을 보류하는 단계를 설명하기 위한 도면이다.
도 20을 참조하면, 호스트 장치는 듀얼 코어(CORE0 및 CORE1)를 포함하고, 스토리지 장치는 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15)을 포함한다.
상기 호스트 장치가 도 1을 참조하여 상술한 복수의 저장 영역들로서 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15) 중 제3 및 제4 레인지들(RNG13 및 RNG14)에 대하여 암호화 삭제를 요청한 경우, 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 기입, 독출 및 삭제 요청들은 보류된다.
그러나 상기 암호화 삭제에도 불구하고, 상기 호스트 장치가 복수의 레인지들(RNG11, RNG12, RNG13, RNG14 및 RNG15) 중 제1, 제2 및 제5 레인지들(RNG11, RNG12 및 RNG15)에 대하여 요청한 기입, 독출 및 삭제 요청들은 상기 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 상기 암호화 삭제의 요청에도 불구하고 정상적으로 수행될 수 있다.
도 19를 참조하여 상술한 바와 같이 제1 코어(CORE0)가 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 상기 암호화 삭제를 요청하고, 상기 암호화 삭제가 완료되지 않은 상태에서 제2 코어(CORE1)가 제3 및 제4 레인지들(RNG13 및 RNG14)에 대한 기입, 독출 및 삭제 요청들 중 적어도 하나를 발행하는 경우 제1 코어(CORE0)에 의한 상기 암호화 삭제에 의하여 제2 코어(CORE1)의 상기 기입, 독출 및 삭제 요청들이 보류될 수 있다. 그러나 듀얼 코어(CORE0 및 CORE1)가 제3 및 제4 레인지들(RNG13 및 RNG14)이 아닌 레인지에 대하여 발행한 상기 기입, 독출 및 삭제 요청들은 정상적으로 수행될 수 있다.
도 21은 도 18의 제1 암호화 키를 변경하는 단계와 관련된 키 변경 테이블을 설명하기 위한 도면이다.
도 21을 참조하면, 키 변경 테이블은 복수의 주소 정보들(시작 주소(STR_LBA) 및 종료 주소(END_LBA)), 복수의 암호화 키(ENC_KEY)들 및 복수의 키 변경 비트(KEY_CHNG_BIT)들을 포함할 수 있다. 도 9를 참조하여 상술한 설명과 중복되는 설명은 생략하기로 한다.
일 실시예에서, 저장 영역(RNG1)과 저장 영역(RNG2)은 호스트 장치에 의하여 서로 다른 저장 영역으로 설정되었음에도 불구하고 동일한 암호화 키(예를 들어, 암호화 키(KEY4))로 암호화 내지는 복호화될 수 있다. 마찬가지로 저장 영역(RNG3)과 저장 영역(RNG4) 또한 상기 호스트 장치에 의하여 서로 다른 저장 영역으로 설정되었음에도 불구하고 동일한 암호화 키(예를 들어, 암호화 키(KEY5))로 암호화 내지는 복호화될 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 스토리지 장치 및 스토리지 시스템은 서로 다른 저장 영역에 대하여 동일한 암호화 키로 암호화 내지는 복호화되도록 구성될 수 있고, 이 경우 도 1을 참조하여 상술한 상기 제1 저장 영역은 상기 단일의 암호화 키에 상응하는 저장 영역 전부(예를 들어, RNG1 및 RNG2)가 될 수 있고, 다른 실시예에서, 상기 제1 저장 영역은 상기 단일의 암호화 키에 상응하는 저장 영역 중 일부(예를 들어, RNG1 및 RNG2 중 하나)만으로 제한될 수도 있다.
도 22는 본 발명의 일 실시예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타내는 블록도이다.
도 22를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)을 포함할 수 있다. 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fiber Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200~3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)과 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예에서, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
어플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200~3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200~3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 어플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)에 포함된 메모리(3220~3220m) 또는 스토리지 장치(3250~3250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200~3200m)의 스토리지 장치로(3250~3250m)부터 스토리지 서버들(3200~3200m)의 메모리들(3220~3220m)을 거쳐서, 또는 바로 어플리케이션 서버들(3100~3100n)의 메모리(3120~3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다. 도 1 내지 도 22에서, 인터페이스(3254)는 PCIe(PCI express) 및/또는 NVMe(NVM express) 인터페이스로 구현된 경우를 가정하여 설명하였으나 본 발명의 핵심적인 기술적 사상을 변경하지 않는 범위 내에서 다른 인터페이스들에 대하여도 적용될 수 있을 것이다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)를 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)와 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다. 이와 유사하게, 어플리케이션 서버(3100)는 스위치(3130) 및 NIC(3140)를 더 포함할 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(3200~3200m) 또는 어플리케이션 서버(3100~3100n)에서 프로세서는 스토리지 장치(3150~3150n, 3250~3250m) 또는 메모리(3120~3120n, 3220~3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150~3150m, 3250~3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252~3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252~3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다.
스토리지 장치(3150~3150m, 3250~3250m)는 도 1 내지 21을 참조하여 상술한 본 발명의 실시예들에 따른 스토리지 장치에 기초하여 구현되며, 본 발명의 실시예들에 따른 구동 방법을 수행하도록 구현될 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 포함되는 상기 스토리지 장치 및 스토리지 시스템의 동작 방법에서, 상기 스토리지 장치의 제1 저장 영역에 대한 상기 암호화 삭제의 수행에도 불구하고 상기 암호화 삭제와 무관한 상기 스토리지 장치의 상기 제2 저장 영역에 상응하는 제2 요청을 정상적으로 처리할 수 있다. 상기 스토리지 장치는 상기 제2 저장 영역에 대한 데이터들의 기입/독출/삭제 동작들을 정상적으로 수행할 수 있게 되어 상기 암호화 삭제의 수행에 따라 발생할 수 있는 상기 스토리지 장치의 성능의 저하를 방지할 수 있다.
본 발명의 실시예들은 스토리지 장치 및 이를 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대하여 암호화 삭제(cryptographic erase)를 요청하는 제1 요청을 수신하는 단계;
    상기 제1 요청에 응답하여, 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키를 변경하는 단계;
    기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청을 수신하는 단계;
    상기 제2 요청이 상기 제1 시구간의 경과 전에 수신된 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호를 출력하는 단계;
    상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과할 때까지 상기 제2 요청의 수행을 보류하는 단계; 및
    상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청을 수행하는 단계를 포함하는 스토리지 장치의 구동 방법.
  2. 제1 항에 있어서,
    상기 스토리지 장치는 상기 암호화 삭제를 위한 키 변경 테이블을 포함하고,
    상기 키 변경 테이블은,
    각각이 상기 복수의 저장 영역들 중 상응하는 저장 영역을 나타내는 복수의 주소 정보들;
    각각이 상기 복수의 저장 영역들 중 상응하는 저장 영역에 기입되는 데이터들을 암호화하는 복수의 암호화 키들; 및
    각각이 상기 복수의 저장 영역들 중 상응하는 저장 영역의 데이터들에 대하여 상기 암호화 삭제가 수행 중인지 여부를 나타내는 복수의 키 변경 비트들을 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  3. 제2 항에 있어서, 상기 제1 암호화 키를 변경하는 단계는
    상기 제1 요청에 응답하여 상기 복수의 키 변경 비트들 중 상기 제1 저장 영역에 상응하는 제1 키 변경 비트의 값을 변경하는 단계; 및
    상기 제1 요청에 응답하여 상기 복수의 암호화 키들 중 상기 제1 암호화 키를 상기 제1 암호화 키와 다른 제2 암호화 키로 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  4. 제1 항에 있어서, 상기 제1 요청을 수신하는 단계는
    서브미션 큐 도어벨 레지스터(submission queue doorbell register)를 모니터링하는 단계; 및
    상기 서브미션 큐 도어벨 레지스터의 값의 변화에 기초하여 상기 스토리지 장치가 상기 호스트 장치의 서브미션 큐에 저장된 상기 제1 요청을 패치(fetch)하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  5. 제1 항에 있어서, 상기 영역 액세스 신호를 출력하는 단계는
    키 변경 테이블에 기초하여 상기 제1 저장 영역에 상응하는 제1 주소 정보 및 상기 제2 요청에 상응하는 제2 주소 정보에 기초하여 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 판단하는 단계; 및
    상기 판단의 결과에 기초하여 상기 영역 액세스 신호를 출력하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  6. 제5 항에 있어서, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 판단하는 단계는
    상기 제2 주소 정보가 나타내는 제2 주소 범위의 적어도 일부가 상기 제1 주소 정보가 나타내는 제1 주소 범위에 포함되는 경우 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인 것으로 판단하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  7. 제1 항에 있어서, 상기 제2 요청의 수행을 보류하는 단계는
    상기 영역 액세스 신호에 기초하여, 상기 제2 요청을 수행하기 위한 상기 기입 요청, 상기 독출 요청 및 상기 삭제 요청에 각각 상응하고 스토리지 컨트롤러가 비휘발성 메모리들로 발행하는 기입 커맨드, 독출 커맨드 및 삭제 커맨드의 생성을 보류하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  8. 제1 항에 있어서, 상기 제2 요청의 수행을 보류하는 단계는
    상기 영역 액세스 신호에 기초하여, 상기 제2 요청이 상기 기입 요청인 경우 상기 기입 요청에 상응하는 기입 데이터들에 대한 암호화의 수행을 보류하고, 상기 제2 요청이 상기 독출 요청인 경우 상기 독출 요청에 상응하는 독출 데이터들에 대한 복호화의 수행을 보류하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  9. 제1 항에 있어서, 상기 제1 시구간은
    상기 제1 요청을 수신한 시점으로부터 상기 제1 암호화 키를 제2 암호화 키로 변경하고 컴플리션 큐 도어벨 레지스터(completion queue doorbell register)의 값을 변경하기까지 필요한 시간인 것을 특징으로 하는 스토리지 장치의 구동 방법.
  10. NVMe(nonvolatile memory express) 프로토콜에 기초하여 서로 연결된 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 구동 방법으로서,
    상기 호스트 장치가 상기 스토리지 장치의 복수의 저장 영역들 중 제1 저장 영역에 대한 암호화 삭제(cryptographic erase)를 요청하는 제1 요청을 발행하는 단계;
    상기 스토리지 장치가 상기 제1 요청에 응답하여 제1 시구간 동안 상기 제1 저장 영역에 상응하는 제1 암호화 키를 변경하는 단계;
    상기 호스트 장치가 기입 요청, 독출 요청 및 삭제 요청 중 하나 이상을 포함하는 제2 요청을 발행하는 단계;
    상기 스토리지 장치가 상기 제2 요청을 상기 제1 시구간의 경과 전에 수신한 경우, 상기 제2 요청이 상기 제1 저장 영역에 대한 요청인지 여부를 나타내는 영역 액세스 신호를 출력하는 단계;
    상기 영역 액세스 신호가 상기 제2 요청이 상기 제1 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간이 경과하기까지 상기 제2 요청의 수행을 보류하는 단계; 및
    상기 영역 액세스 신호가 상기 제2 요청이 상기 복수의 저장 영역들 중 상기 제1 저장 영역이 아닌 제2 저장 영역에 대한 요청임을 나타내는 경우, 상기 제1 시구간의 경과 여부와 관계없이 상기 제2 요청을 수행하는 단계를 포함하는 스토리지 시스템의 구동 방법.
KR1020210140749A 2021-10-21 2021-10-21 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 KR20230056920A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210140749A KR20230056920A (ko) 2021-10-21 2021-10-21 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US17/816,249 US12032492B2 (en) 2021-10-21 2022-07-29 Method of operating storage device and method of operating storage system using the same
CN202211184956.2A CN116009765A (zh) 2021-10-21 2022-09-27 操作存储装置的方法以及使用该方法操作存储系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210140749A KR20230056920A (ko) 2021-10-21 2021-10-21 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법

Publications (1)

Publication Number Publication Date
KR20230056920A true KR20230056920A (ko) 2023-04-28

Family

ID=86019835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210140749A KR20230056920A (ko) 2021-10-21 2021-10-21 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법

Country Status (3)

Country Link
US (1) US12032492B2 (ko)
KR (1) KR20230056920A (ko)
CN (1) CN116009765A (ko)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0983506A (ja) 1995-09-13 1997-03-28 Mitsubishi Electric Corp 暗号通信装置および暗号通信方法
US20070110236A1 (en) 2004-10-29 2007-05-17 Pioneer Corporation Encryption/recording device and method
JP5134894B2 (ja) 2007-09-07 2013-01-30 株式会社日立製作所 ストレージ装置及び暗号鍵変更方法
US9418220B1 (en) * 2008-01-28 2016-08-16 Hewlett Packard Enterprise Development Lp Controlling access to memory using a controller that performs cryptographic functions
JP5595965B2 (ja) * 2011-04-08 2014-09-24 株式会社東芝 記憶装置、保護方法及び電子機器
FR2980285B1 (fr) * 2011-09-15 2013-11-15 Maxim Integrated Products Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise
US20130173931A1 (en) 2011-12-30 2013-07-04 Yonatan Tzafrir Host Device and Method for Partitioning Attributes in a Storage Device
US20140137119A1 (en) * 2012-11-15 2014-05-15 Elwha LLC, a limited liability corporation of the State of Delaware Multi-core processing in memory
US10255200B2 (en) 2015-02-25 2019-04-09 Western Digital Technologies, Inc. Data storage device and method of operation using multiple security protocols
US10003585B2 (en) 2016-08-02 2018-06-19 Samsung Electronics Co., Ltd. Systems, devices, and methods for preventing unauthorized access to storage devices
JP6892361B2 (ja) 2017-09-21 2021-06-23 キオクシア株式会社 ストレージ装置
KR102641521B1 (ko) * 2018-02-22 2024-02-28 삼성전자주식회사 키-밸류 스토리지 장치 및 이의 동작 방법
US10922011B2 (en) * 2018-04-12 2021-02-16 Samsung Electronics Co., Ltd. Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
JP2020115250A (ja) * 2019-01-17 2020-07-30 キオクシア株式会社 ストレージ装置およびコマンド処理方法
JP7187362B2 (ja) * 2019-03-15 2022-12-12 キオクシア株式会社 ストレージ装置及び制御方法
US11595204B2 (en) * 2019-06-04 2023-02-28 EMC IP Holding Company LLC Adaptive re-keying in a storage system
US10868679B1 (en) * 2019-07-25 2020-12-15 Cypress Semiconductor Corporation Nonvolatile memory device with regions having separately programmable secure access features and related methods and systems
US11893126B2 (en) * 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
KR20220020636A (ko) * 2020-08-12 2022-02-21 삼성전자주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법

Also Published As

Publication number Publication date
US20230128638A1 (en) 2023-04-27
CN116009765A (zh) 2023-04-25
US12032492B2 (en) 2024-07-09

Similar Documents

Publication Publication Date Title
US9342466B2 (en) Multiple volume encryption of storage devices using self encrypting drive (SED)
US20210278998A1 (en) Architecture and design of a storage device controller for hyperscale infrastructure
TWI737088B (zh) 主機型快閃記憶體維護技術
EP3989052B1 (en) Method of operating storage device and method of operating storage system using the same
US11625193B2 (en) RAID storage device, host, and RAID system
US20230019584A1 (en) Effective key management for data encyrption and decryption
KR20230056920A (ko) 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US11106379B2 (en) Multi cloud asynchronous active/active transactional storage for availability
US9058295B2 (en) Encrypt data of storage device
KR20220052016A (ko) 스토리지 장치에서의 보안 동작을 위한 키 교환 방법 및 이를 이용한 접근 권한 이관 방법
KR102482116B1 (ko) 연산 스토리지 장치의 메모리 할당 및 보호 방법 및 이를 수행하는 연산 스토리지 장치
US11914879B2 (en) Storage controller and storage system comprising the same
KR20230087863A (ko) 메모리 시스템의 동작 방법 및 이를 수행하는 메모리 시스템
US20240289284A1 (en) Storage controller, storage device having the same, and method of operating the same
WO2023040821A1 (zh) 一种数据存储方法、装置、设备及可读介质
KR102477051B1 (ko) 네트워크를 이용한 스토리지 장치의 데이터 복구 방법 및 이를 수행하는 스토리지 장치
US12074983B2 (en) Trusted computing device and operating method thereof
US20240220667A1 (en) Storage device and computing device including the same
KR102537770B1 (ko) 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
US20230135891A1 (en) Storage device including storage controller and operating method
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
US20230342049A1 (en) Reading a master boot record for a namespace using a regular read operation
US20240160362A1 (en) Memory devices and methods for managing use history