KR20200046264A - 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 - Google Patents
호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20200046264A KR20200046264A KR1020180127154A KR20180127154A KR20200046264A KR 20200046264 A KR20200046264 A KR 20200046264A KR 1020180127154 A KR1020180127154 A KR 1020180127154A KR 20180127154 A KR20180127154 A KR 20180127154A KR 20200046264 A KR20200046264 A KR 20200046264A
- Authority
- KR
- South Korea
- Prior art keywords
- host
- code
- memory buffer
- data storage
- storage device
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 237
- 238000013500 data storage Methods 0.000 title claims abstract description 125
- 238000000034 method Methods 0.000 title claims description 21
- 238000013507 mapping Methods 0.000 claims abstract description 121
- 238000010586 diagram Methods 0.000 description 40
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 101100449814 Arabidopsis thaliana GTL1 gene Proteins 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 2
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 2
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 2
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 2
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 2
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 101150062870 ssl3 gene Proteins 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- CBHCDHNUZWWAPP-UHFFFAOYSA-N pecazine Chemical compound C1N(C)CCCC1CN1C2=CC=CC=C2SC2=CC=CC=C21 CBHCDHNUZWWAPP-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0658—Controller construction arrangements
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Hardware Design (AREA)
Abstract
데이터 스토리지 장치는 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 저장하는 비휘발성 메모리 장치, 상기 실행 코드를 상기 비휘발성 메모리 장치로부터 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하고 상기 호스트 메모리 버퍼에 저장된 실행 코드를 실시간으로 다운로드하여 실행하는 스토리지 콘트롤러 및 상기 실행 코드 및 상기 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 매핑 콘트롤러를 포함한다. 호스트 메모리 버퍼를 데이터 실행 코드의 저장소로 이용함으로써 실행 코드에 대한 액세스 속도를 증가하고 데이터 스토리지 장치의 성능을 향상시킬 수 있다.
Description
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 상기 데이터 스토리지 장치의 동작 방법에 관한 것이다.
정보를 저장하기 위한 메모리로는 소프트웨어 구동을 위한 주 메모리로서의 디램(DRAM)과 같은 휘발성 메모리, 그리고 사용자의 대용량 데이터의 저장을 위한 낸드 플래시 메모리와 같은 비휘발성 메모리가 있다. 랜덤 액세스가 가능한 휘발성 메모리는 빠른 독출/기입(read/write) 속도 및 바이트 액세스가 가능한 특성을 가지고 있지만, 휘발성이라는 단점을 가지고 있으며 대용량의 비휘발성 메모리보다 비용이 증가하는 단점이 있다. 따라서, 비용 감소를 위해 비휘발성 메모리 장치를 포함하는 데이터 스토리지 장치의 랜덤 액세스가 가능한 메모리의 용량이 부족하게 되는 문제가 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 메모리 공간을 사용할 수 있는 스토리지 장치를 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 메모리 공간을 사용할 수 있는 데이터 스토리지 장치의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 스토리지 장치는 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 저장하는 비휘발성 메모리 장치, 상기 실행 코드를 상기 비휘발성 메모리 장치로부터 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하고 상기 호스트 메모리 버퍼에 저장된 실행 코드를 실시간으로 다운로드하여 실행하는 스토리지 콘트롤러 및 상기 실행 코드 및 상기 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 매핑 콘트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 스토리지 장치는 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 저장하는 비휘발성 메모리 장치, 상기 비휘발성 메모리 장치로부터 제공되는 상기 실행 코드에 대한 인코딩을 수행하여 보안 실행 코드를 발생하고, 상기 보안 실행 코드에 대한 디코딩을 수행하여 상기 실행 코드를 제공하는 보안 엔진, 상기 보안 실행 코드를 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하고 상기 호스트 메모리 버퍼에 저장된 보안 실행 코드를 실시간으로 다운로드하여 상기 보안 엔진에 제공하고 상기 보안 엔진으로부터 제공되는 상기 실행 코드를 실행하는 스토리지 콘트롤러 및 상기 실행 코드 및 상기 보안 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 매핑 콘트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 스토리지 장치의 동작 방법은, 실행 코드를 상기 데이터 스토리지 장치의 비휘발성 메모리 장치로부터 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하는 단계, 상기 호스트 메모리 버퍼에 저장된 실행 코드를 상기 데이터 스토리지 장치로 실시간으로 다운로드하여 실행하는 단계 및 상기 실행 코드 및 상기 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 단계를 포함한다.
본 발명의 실시예들에 따른 데이터 스토리지 장치 및 데이터 스토리지 장치의 동작 방법은 호스트 메모리의 호스트 메모리 버퍼를 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드의 저장소로 이용함으로써 데이터 스토리지 장치의 내부 메모리가 부족한 경우에도 실행 코드에 대한 액세스 속도를 증가하고 데이터 스토리지 장치의 성능을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 데이터 스토리지 장치 및 데이터 스토리지 장치의 동작 방법은 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 인코딩하여 보안 실행 코드를 상기 호스트 메모리 버퍼에 업로드함으로써 데이터 스토리지 장치 및 이를 포함하는 시스템의 보안성을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 데이터 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 5a는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면이다.
도 5b는 도 5a의 매핑 테이블에 포함되는 매핑 관계를 설명하기 위한 도면이다.
도 6은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 7은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 8a 및 8b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면들이다.
도 9a 및 9b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 다른 실시예를 나타내는 도면들이다.
도 10은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 12는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 일 실시예를 나타내는 블록도이다.
도 13a는 도 12의 보안 엔진에 의한 암호화 동작의 일 예를 나타내는 도면이다.
도 13b는 도 12의 보안 엔진에 의한 복호화 동작의 일 예를 나타내는 도면이다.
도 14는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 다른 실시예를 나타내는 블록도이다.
도 15는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 또 다른 실시예를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 파워 모드의 제어 동작의 일 실시예를 나타내는 도면이다.
도 17은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 18은 도 17의 데이터 스토리지 장치에 포함되는 비휘발성 메모리 장치의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 19는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 데이터 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 5a는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면이다.
도 5b는 도 5a의 매핑 테이블에 포함되는 매핑 관계를 설명하기 위한 도면이다.
도 6은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 7은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 8a 및 8b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면들이다.
도 9a 및 9b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 다른 실시예를 나타내는 도면들이다.
도 10은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 12는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 일 실시예를 나타내는 블록도이다.
도 13a는 도 12의 보안 엔진에 의한 암호화 동작의 일 예를 나타내는 도면이다.
도 13b는 도 12의 보안 엔진에 의한 복호화 동작의 일 예를 나타내는 도면이다.
도 14는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 다른 실시예를 나타내는 블록도이다.
도 15는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 또 다른 실시예를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 파워 모드의 제어 동작의 일 실시예를 나타내는 도면이다.
도 17은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 18은 도 17의 데이터 스토리지 장치에 포함되는 비휘발성 메모리 장치의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 19는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 1을 참조하면, 시스템(1000)은 호스트 장치(2000) 및 데이터 스토리지 장치(3000)를 포함할 수 있다.
호스트 장치(2000)는 호스트 콘트롤러(HCON) 및 호스트 메모리(HMEM)를 포함할 수 있다.
호스트 콘트롤러(HCON)는 호스트 장치(200)의 전반적인 동작을 제어하고 논리 연산을 수행할 수 있다. 호스트 콘트롤러(HCON)는 코드 또는 프로그램에 포함된 명령으로 표현되는 동작들을 실행하도록 물리적으로 구성된 회로를 포함하는 하드웨어 기반의 데이터 프로세싱 장치일 수 있다. 예를 들어, 호스트 콘트롤러(HCON)는 시스템-온-칩(SoC, System-on-Chip)으로 구성되거나, 범용 프로세서, 특수 목적 프로세서 또는 어플리케이션 프로세서일 수 있다.
호스트 메모리(HMEM)는 호스트 콘트롤러(HCON)와 통신할 수 있는 랜덤 액세스 메모리로 구현될 수 있고, 호스트 콘트롤러(HCON) 또는 호스트 장치(2000)의 메인 메모리, 버퍼 메모리 또는 캐시 메모리로서 동작할 수 있다. 호스트 콘트롤러(HCON)는 호스트 메모리(HMEM)에 코드 또는 데이터를 임시로 저장하고, 호스트 메모리(HMEM)를 이용하여 운영 체제(OS, operating system), 애플리케이션과 같은 소프트웨어 코드를 실행하고 데이터를 처리할 수 있다. 호스트 메모리(HMEM)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리 장치를 포함할 수 있다.
호스트 장치(2000) 및 데이터 스토리지 장치(3000)가 데이터 스토리지 장치(3000)의 데이터를 호스트 메모리(HMEM)에 로드하는 것을 지원하는 경우, 호스트 콘트롤러(HCON)는 호스트 메모리(HMEM)의 메모리 공간 중 일부를 데이터 스토리지 장치(3000)가사용하도록 할당할 수 있다. 이 경우, 호스트 메모리(HMEM)의 호스트 영역(HREG)은 호스트 장치(2000)에 의해 사용될 수 있고, 호스트 메모리(HMEM)의 일정 영역은 호스트 메모리 버퍼(HMB, host memory buffer)로서 데이터 스토리지 장치(3000)에 의해 사용될 수 있다.
호스트 콘트롤러(HCON)는 호스트 메모리(HMEM)를 제어하도록 구성되는 메모리 콘트롤러(MC)를 포함할 수 있고, 호스트 콘트롤러(HCON)는 메모리 콘트롤러(MC)를 통해 호스트 메모리(HMEM)의 호스트 영역(HREG)을 사용할 수 있다. 실시예에 따라서, 메모리 콘트롤러(MC)는 호스트 콘트롤러(HCON)와 구별되는 별개의 구성요소로 구현될 수 있다. 호스트메모리 버퍼(HMB)가 데이터 스토리지 장치(3000)에 제공되는 경우 데이터 스토리지 장치(3000)는 호스트 콘트롤러(HCON)의 개입 없이 호스트 메모리 버퍼(HMB)를 사용할 수 있다.
데이터 스토리지 장치(3000)는 스토리지 콘트롤러(SCON), 스토리지 메모리(SMEN), 매핑 콘트롤러(MPCON) 및 비휘발성 메모리 장치(NVM)를 포함할 수 있다. 실시예에 따라서, 데이터 스토리지 장치(3000)는 스토리지 콘트롤러(SCON)의 전속 메모리(tightly coupled memory)(TCM)를 더 포함할 수 있다. 전속 메모리(TCM)은 스토리지 콘트롤러(SCON)의 내부 또는 외부에 구현될 수 있다.
비휘발성 메모리 장치(NVM)는 호스트 장치(2000) 및 데이터 스토리지 장치(3000)에 의해 사용되는 다양한 데이터를 저장할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 비휘발성 메모리 장치(NVM)는 실행 코드(EXCD), 메타 데이터(MTDT), 그 밖의 일반 데이터(NMDT)를 저장할 수 있다.
실행 코드(EXCD)는 데이터 스토리지 장치(3000)의 동작을 제어하기 위한 프로그램 코드로서 스토리지 콘트롤러(SCON)에 의해 러닝(running)되는 운영 체제(OS)와 같은 동작 코드에 해당한다. 실행 코드(EXCD)는 컴파일이 완료된 후에 비휘발성 메모리 장치(NVM)에 저장되어 유지되고 코드의 독출만이 허여되고 코드 변경은 제한된다.
메타 데이터는 데이터 스토리지 장치(3000)가비휘발성 메모리 장치(NVM)를 제어하는 방법 또는 규칙 등에 대한 정보를 포함한다. 예를 들어, 메타 데이터(MTDT)는 호스트 장치(2000)가 비휘발성 메모리 장치(NVM)에 할당한 논리 어드레스 및 비휘발성 메모리 장치(NVM)의 물리 어드레스 사이의 매핑 관계를 가리키는 데이터를 포함할 수 있다. 예를 들어, 스토리지 콘트롤러(SCON)는 메타 데이터(MTDT)를 참조하여 호스트 장치(2000)로부터 부여되는 논리 어드레스를 물리 어드레스로 변환하고, 상기 물리 어드레스에 기반하여, 비휘발성 메모리 장치(NVM)에 대한 쓰기 동작, 읽기 동작, 소거 동작 또는 배경 동작을 수행할 수 있다.
일반 데이터(NMDT)는 자유롭게 읽기 및 쓰기가 허용되는 데이터로서 호스트 장치(2000)에서 사용하는 다양한 애플리케이션 및 데이터를 포함할 수 있다.
비휘발성 메모리 장치(NVM)는 복수의 낸드 플래시 메모리들을 포함할 수 있다. 실시예에 따라서, 비휘발성 메모리 장치(NVM)는 NOR 플래시 메모리(NOR flash memory), FRAM(Ferroelectric Random Access Memory), PRAM(Phase Change Random Access Memory), TRAM(Thyristor Random Access Memory), MRAM(Magnetic Random Access Memory), 등을 포함할 수 있다.
스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 전반적인 동작을 제어할 수 있다. 스토리지 콘트롤러(SCON)는 호스트 장치(2000)와 데이터 입출력을 수행할 수 있다. 스토리지 콘트롤러(SCON)와 호스트 장치(2000) 사이의 인터페이스(10)는 규약 또는 스펙(Specification)에 따라 통신하도록 구성될 수 있다. 예를 들어, 인터페이스(10)는 USB(Universal Serial Bus), ATA(Advanced Technology Attachment), SATA(Serial ATA), SAS(Serial Attached SCSI), PATA(Parallel ATA), HSIC(High Speed Interchip), SCSI(Small Computer System Interface), 파이어와이어(Firewire), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NonVolatile Memory express), UFS(Universal Flash Storage), SD(Secure Digital), MMC(MultiMedia Card), eMMC(embedded MMC) 등과 같은 다양한 규약들 중 적어도 하나를 이용하여 통신을 수행할 수 있다.
호스트 콘트롤러(HCON)는 비휘발성 메모리 장치(NVM)에 저장된 소스 코드들을 호스트 메모리(HMEM)의 호스트 영역(HREG)에로드하고, 호스트 영역(HREG)에 로드된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 또한, 호스트 콘트롤러(HCON)는 데이터 스토리지 장치(3000)에 저장된 데이터를 호스트 영역(HREF)에 로드하고, 호스트 영역(HREG)에 로드된 데이터를 처리할 수 있다. 호스트 콘트롤러(HCON)는 호스트 영역(HREG)에 저장된 데이터 중 장기적으로 보존하고자 하는 데이터를 스토리지 장치(100)에 저장할 수 있다.
일반적으로, 스토리지 콘트롤러(SCON)는 비휘발성 메모리 장치(NVM)에 저장된 실행 코드(EXCD)를 스토리지 메모리(SMEN) 및 전속 메모리(TCM)과 같은 내부 메모리에 로드하고 로드된 실행 코드(EXCD)를 러닝함으로써 데이터 스토리지 장치(3000)의 전반적인 동작을 제어한다. 그러나, 이러한 내부 메모리는 빠른 동작 속도가 요구되므로 랜덤 액세스가 가능해야 하므로 비교적 고가이다. 따라서, 제품에 따라서 내부 메모리가 없거나 내부 메모리가 부족한 경우가 많다.
데이터 스토리지 장치(3000)의 내부 메모리가 부족한 경우, 스토리지 콘트롤러(SCON)는비휘발성 메모리 장치(NVM)에 저장된 실행 코드(EXCD)를 독출하여 동작해야 한다. 일반적으로 비휘발성 메모리 장치(NVM)는 동작 속도가 느리고 액세스가 반복될수록 성능이 열화되는 단점이 있다. 따라서, 스토리지 콘트롤러(SCON)가 비휘발성 메모리 장치(NVM)에 저장된 실행 코드(EXCD)에 기초하여 동작하는 경우 데이터 스토리지 장치(3000)의 성능이 저하된다.
도 2는 본 발명의 실시예들에 따른 데이터 스토리지 장치의 동작 방법을 나타내는 순서도이다.
도 1 및 2를 참조하면, 스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 실행 코드(EXCD)를 비휘발성 메모리 장치(NVM)로부터 외부의 호스트 장치(2000)에 포함되는 호스트 메모리 버퍼(HMB)에 업로드하여 저장한다(S100). 스토리지 콘트롤러(SCON)는 호스트 메모리 버퍼(HMB)에 저장된 실행 코드(EXCD)를 실시간으로 다운로드하여 실행한다(S200). 실시예에 따라서, 메타 데이터(MTDT) 및 일반 데이터(NMDT)도 호스트 메모리 버퍼(HMB)에 로드될 수 있다. 매핑 콘트롤러(MPCON)는 실행 코드(EXCD) 및 실행 코드(EXCD)가 저장되는 호스트 메모리 버퍼(HMB)의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블(MPT)을 관리한다(S300).
이와 같이, 호스트 메모리(HMEM)의 호스트 메모리 버퍼(HMB)를 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드(EXCD)의 저장소로 이용함으로써 데이터 스토리지 장치의 내부 메모리가 부족한 경우에도 실행 코드(EXCD)에 대한 액세스 속도를 증가하고 데이터 스토리지 장치(3000)의성능을 향상시킬 수 있다.
도 3은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
초기화 과정은 데이터 스토리지 장치를 포함하는 시스템의 부팅(Booting) 과정의 일부로서 데이터 스토리지 장치가 파워-온후에 스토리지 콘트롤러(SCON)에 의해 실행 코드(EXCD)가 러닝될 수 있도록 준비하는 일련의 과정을 나타낸다. 노말 동작은 상기 초기화 과정이 완료된 후에 수행되는 데이터 스토리지 장치의 쓰기 동작, 읽기 동작 및 배경 독작 등을 나타낸다.
도 1 및 3을 참조하면, 데이터 스토리지 장치(3000)가 파워-온되면 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사용을 요구할 수 있다(S11). 일 실시예에서, 호스트콘트롤러(HCON)가 스토리지 콘트롤러(SCON)를인식하고 식별자(Identifier)를 스토리지 콘트롤러(SCON)에 전송하여, 스토리지 콘트롤러(SCON)가 호스트 메모리 버퍼(HMB)를 사용할 수 있는지 확인할 수 있다. 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)로 호스트 메모리 버퍼(HMB)의 사용 여부를 통지할 수 있다. 다른 실시예에서, 스토리지 콘트롤러(SCON)가 호스트 콘트롤러(HCON)를 인식하고 호스트 콘트롤러(HCON)로 호스트 메모리 버퍼(HMB)의 사용 가능 여부를 문의할 수 있다. 스토리지 콘트롤러(SCON)가 호스트 메모리 버퍼(HMB)의 사용 여부를 통지하거나 사용 가능 여부를 문의하는 경우 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사이즈를 함께 요청할 수 있다.
호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)의 요청을 참고하여 호스트 메모리 버퍼(HMB)를 할당할 수 있다(S12). 호스트 콘트롤러(HCON)는 호스트 메모리 버퍼(HMB)의 사이즈를 할당한 후, 할당 결과를 스토리지 콘트롤러(SCON)에게 통지할 수 있다(S13). 예를 들어, 호스트 콘트롤러(HCON)는 상기 할당 결과를 셋 피쳐 명령을 통해 스토리지 콘트롤러(SCON)에게 통지할 수 있다. 셋 피쳐 명령에는 호스트 메모리 버퍼(HMB)의 사이즈 정보 또는 호스트 메모리 버퍼(HMB)의 활성화 여부에 대한 정보 등과 같은 셋 피쳐(set features)가 포함될 수 있다. 상기 셋 피쳐는 스토리지 콘트롤러(SCON) 및/또는 매핑 콘트롤러(MPCON)로 제공될 수 있다(S13).
매핑 콘트롤러(MPCON)는 상기 셋 피쳐에 포함된 호스트 메모리 버퍼(HMB)의 사이즈를 참고하여 실행 코드(EXCD) 및 실행 코드(EXCD)가 저장되는 호스트 메모리 버퍼(HMB)의 호스트 어드레스(HMBAD) 사이의 어드레스 매핑을 수행하고 매핑 관계를 매핑 테이블에 저장한다(S14). 매핑 테이블에 포함된 매핑 관계, 즉 호스트 어드레스(HMBAD)는 스토리지 콘트롤러(SCON)의요청에 따라서 호스트 콘트롤러(HCON)에 제공될 수 있다(S15). 스토리지 콘트롤러(SCON)는 매핑 콘트롤러(MPCON)로부터 제공되는 호스트 어드레스(HMBAD)에 기초하여 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 업로드할 수 있다(S16). 일 실시예에서, 도 4 및 5a를 참조하여 후술하는 바와 같이, 실행 코드(EXCD)는 복수의 코드 섹션들(CDSEC1~CDSECN)을 포함하고, 스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 초기화 동작 중에 복수의 코드 섹션들(CDSEC1~CDSECN)의 전부를 호스트 메모리 버퍼(HMB)에 업로드할 수 있다.
초기화 동작이 완료된 후에는 노말 동작이 수행될 수 있다. 예를 들어, 호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)로 명령(CMD) 및 어드레스(ADD)를 전송할 수 있다(S17). 상기 명령(CMD) 및 어드레스(ADD)에 따라서 비휘발성 메모리 장치(NVM)에 대한 독출 동작 또는 기입 동작이 수행될 수 있다.
노말 동작 중에, 스토리지 콘트롤러(SCON)는 호스트 메모리 버퍼(HMB)로부터 저장된 실행 코드(EXCD)를 실시간으로 다운로드하여 실행할 수 있다(S18). 이때, 스토리지 콘트롤러(SCON)는 매핑 콘트롤러(MPCON)로부터 제공되는 호스트 어드레스(HMBAD)에 기초하여 상기 다운로드 동작을 수행할 수 있다.
도 4는 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 1 및 4를 참조하면, 비휘발성 메모리 장치(NVM)에 저장되는 실행 코드(EXCD)는 복수의 코드 섹션들(CDSEC1~CDSECN)을 포함할 수 있다.
스토리지 콘트롤러(SCON)는 실행이 요구되는 코드 섹션들(CDSECp, CDSECq)을 비휘발성 메모리 장치(NVM)로부터 내부 메모리(IMEM)에 로드하고, 로드된 코드 섹션들(CDSECp, CDSECq)을 빠르게 액세스할 수 있다. 여기서 내부 메모리(IMEM)는 전술한 전속 메모리(TCM) 및/또는 스토리지 메모리(SMEN)에 해당한다.
한편, 스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 초기화 동작 중에 복수의 코드 섹션들(CDSEC1~CDSECN)의 전부를 호스트 메모리 버퍼(HMB)에 업로드하여 저장할 수 있다.
스토리지 콘트롤러(SCON)는 실행이 요구되는 코드 섹션이 내부 메모리(IMEM)에 로드되어 있지 않은 경우 직접 호스트 메모리 버퍼(HMB)에 액세스하여 실행이 요구되는 코드 섹션을 다운로드할 수 있다. 일 실시예에서, 다운로드된 코드 섹션은 내부 메모리(IMEM)에 저장된 코드 섹션들(CDSECp, CDSECq) 중 하나를 대체하여 내부 메모리(IMEM)에 저장될 수 있다.
도 5a는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면이다.
도 5a에는 도 4의 저장 상태에 상응하는 매핑 테이블의 매핑 정보(S1)가 도시되어 있다. 도 5a에는 도시 및 설명의 편의상 실행 코드(EXCD)가 8개의 제1 내지 제8 코드 섹션들(CDSEC1~CDSEC8)을 포함하는 예가 도시되어 있으나, 이에 한정되는 것은 아니며 코드 섹션들의 개수는 다양하게 결정될 수 있다.
도 5a를 참조하면, 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들(CDSEC1~CDSEC8)에 대한 호스트 어드레스들(HMBADa~HMBh)을 매핑 테이블에 저장할 수 있다. 도 5a의 경우에는 복수의 코드 섹션들(CDSEC1~CDSEC8)이 전부 호스트 메모리 버퍼(HMB)의 호스트 어드레스들(HMBADa~HMBADh)에 각각 업로드되어 있음을 나타낸다.
또한 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 내부 메모리(IMEM)에 저장된 코드 섹션들(CDSECp, CDSECq)에 대한 내부 어드레스들(IMADp, IMADq)을 매핑 테이블에 저장할 수 있다. 도 5a의 경우에는 제6 코드 섹션(CDSEC6)이 내부 메모리(IMEM)의 제1 내부 어드레스(IMADp)에 저장되어 있고 제3 코드 섹션(CDSEC3)에 내부 메모리(IMEM)의 제2 내부 어드레스(IMADq)에 저장되어 있음을 나타낸다.
스토리지 콘트롤러(SCON)는 매핑 테이블에 저장된 매핑 정보(S1)에 기초하여 코드 섹션들에 대한 액세스를 수행할 수 있다. 일 실시예에서, 스토리지 콘트롤러(SCON)는 매핑 정보(S1)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMEM)에 저장되어 있는 경우에는 내부 메모리(IMEM)에 저장된 코드 섹션을 액세스할 수 있다. 스토리지 콘트롤러(SCON)는 매핑 정보(S1)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMEM)에 저장되어 있지 않는 경우에만 호스트 메모리 버퍼(HMB)에 저장된 코드 섹션을 액세스할 수 있다.
도 5b는 도 5a의 매핑 테이블에 포함되는 매핑 관계를 설명하기 위한 도면이다.
도 5b를 참조하면, 컴파일러는 소스 코드 및 데이터 스토리지 장치(3000)의 고정된 내부 어드레스에 기초하여 실행 코드(EXCD)를 생성할 수 있다. 상기 컴파일러는 다른 컴퓨팅 시스템에 의해 실행되고, 생성된 실행 코드(EXCD)는 미리 비휘발성 메모리 장치(NVM)에 저장될 수 있다. 상기 컴파일러는 실행 코드(EXCD)를 생성할 때 코드 베이스 어드레스(CBAD)를기준으로 실행 코드(EXCD)를 생성할 수 있다. 호스트 메모리 버퍼(HMB)의 호스트 어드레스(HMBAD)는 호스트 장치에 따라 달라지기 때문에 호스트 어드레스(HMBAD)를 기준으로 실행 코드(EXCD)를 생성할 수 없다. 따라서, 코드 베이스 어드레스(CBAD)를 다양한 호스트 장치의 호스트 베이스 어드레스(HBAD)에 매핑시킴으로써 코드 섹션 및 상기 코드 섹션에 상응하는 호스트 어드레스(HMBAD)가 결정될 수 있다. 예를 들어, 각 코드 섹션의 어드레스는 코드 베이스 어드레스(CBAD)와의 차이에 해당하는 코드 어드레스 오프셋(COFS)으로 표현될 수 있다. 이 경우, 상기 코드 섹션에 상응하는 호스트 어드레스(HMBAD)는 호스트 베이스 어드레스(HBAD) 및 호스트 어드레스 오프셋(HOFS)에 기초하여 결정될 수 있다.
도 6은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템의 메모리 저장 상태의 일 실시예를 나타내는 도면이다.
도 1 및 6을 참조하면, 비휘발성 메모리 장치(NVM)에 저장되는 실행 코드(EXCD)는 복수의 코드 섹션들(CDSEC1~CDSECN)을 포함할 수 있다.
도 6에 도시하지는 않았으나, 도 4를 참조하여 전술한 바와 같이, 스토리지 콘트롤러(SCON)는 실행이 요구되는 코드 섹션들을 비휘발성 메모리 장치(NVM)로부터 내부 메모리(IMEM)에 로드할 수 있다.
한편, 스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 초기화 동작 또는 상기 초기화 동작이 완료된 후의 노말 동작 중에 복수의 코드 섹션들(CDSEC1~CDSECN)의 일부를 호스트 메모리 버퍼(HMB)에 업로드하여 저장할 수 있다. 이 경우는, 호스트 콘트롤러(HCON)가 데이터 스토리지 장치(2000)에게 호스트 메모리 버퍼(HMB)의 충분한 사이즈를 제공하지 않은 경우에 해당한다. 스토리지 콘트롤러(SCON)는 실행이 요구되는 코드 섹션이 내부 메모리(IMEM) 및 호스트 메모리 버퍼(HMB)에 로드되어 있지 않은 경우 상기 노말 동작 중에 호스트 메모리 버퍼에 저장된 업로드 코드 섹션들(CDSECa, CDSECb, CDSECc, CDSECd) 중 하나를 다른 업로드 코드 섹션으로 대체하는 갱신 동작을 수행할 수 있다.
도 7은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 1 및 7을 참조하면, 전술한 바와 같이, 데이터 스토리지 장치(3000)가 파워-온되면 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사용을 요구할 수 있다(S11). 일 실시예에서, 호스트 콘트롤러(HCON)가 스토리지 콘트롤러(SCON)를 인식하고 식별자(Identifier)를 스토리지 콘트롤러(SCON)에 전송하여, 스토리지 콘트롤러(SCON)가 호스트 메모리 버퍼(HMB)를 사용할 수 있는지 확인할 수 있다. 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)로호스트 메모리 버퍼(HMB)의 사용 여부를 통지할 수 있다. 다른 실시예에서, 스토리지 콘트롤러(SCON)가 호스트 콘트롤러(HCON)를 인식하고 호스트 콘트롤러(HCON)로 호스트 메모리 버퍼(HMB)의 사용 가능 여부를 문의할 수 있다. 스토리지 콘트롤러(SCON)가 호스트 메모리 버퍼(HMB)의 사용 여부를 통지하거나 사용 가능 여부를 문의하는 경우 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사이즈를 함께 요청할 수 있다.
호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)의요청을 참고하여 호스트 메모리 버퍼(HMB)를 할당할 수 있다(S12). 호스트 콘트롤러(HCON)는 호스트 메모리 버퍼(HMB)의 사이즈를 할당한 후, 할당 결과를 스토리지 콘트롤러(SCON)에게 통지할 수 있다(S13). 예를 들어, 호스트 콘트롤러(HCON)는 상기 할당 결과를 셋 피쳐 명령을 통해 스토리지 콘트롤러(SCON)에게 통지할 수 있다. 셋 피쳐 명령에는 호스트 메모리 버퍼(HMB)의 사이즈 정보 또는 호스트 메모리 버퍼(HMB)의 활성화 여부에 대한 정보 등과 같은 셋 피쳐(set features)가 포함될 수 있다. 상기 셋 피쳐는 스토리지 콘트롤러(SCON) 및/또는 매핑 콘트롤러(MPCON)로 제공될 수 있다(S13).
매핑 콘트롤러(MPCON)는 상기 셋 피쳐에 포함된 호스트 메모리 버퍼(HMB)의 사이즈를 참고하여 실행 코드(EXCD) 및 실행 코드(EXCD)가 저장되는 호스트 메모리 버퍼(HMB)의 호스트 어드레스(HMBAD) 사이의 어드레스 매핑을 수행하고 매핑 관계를 매핑 테이블에 저장한다(S14). 매핑 테이블에 포함된 매핑 관계, 즉 호스트 어드레스(HMBAD)는 스토리지 콘트롤러(SCON)의 요청에 따라서 호스트 콘트롤러(HCON)에 제공될 수 있다(S15). 스토리지 콘트롤러(SCON)는 매핑 콘트롤러(MPCON)로부터 제공되는 호스트 어드레스(HMBAD)에 기초하여 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 업로드할 수 있다(S16). 일 실시예에서, 도 8a 내지 9b를 참조하여 후술하는 바와 같이, 실행 코드(EXCD)는 복수의 코드 섹션들(CDSEC1~CDSECN)을 포함하고, 스토리지 콘트롤러(SCON)는 데이터 스토리지 장치(3000)의 초기화 동작 또는 노말 동작 중에 복수의 코드 섹션들(CDSEC1~CDSECN)의 일부를 호스트 메모리 버퍼(HMB)에 업로드할 수 있다.
초기화 동작이 완료된 후에는 노말 동작이 수행될 수 있다. 예를 들어, 호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)로 명령(CMD) 및 어드레스(ADD)를 전송할 수 있다(S17). 상기 명령(CMD) 및 어드레스(ADD)에 따라서 비휘발성 메모리 장치(NVM)에 대한 독출 동작 또는 기입 동작이 수행될 수 있다.
노말 동작 중에, 스토리지 콘트롤러(SCON)는 호스트 메모리 버퍼(HMB)로부터 저장된 실행 코드(EXCD)를 실시간으로 다운로드하여 실행할 수 있다(S18). 이때, 스토리지 콘트롤러(SCON)는 매핑 콘트롤러(MPCON)로부터 제공되는 호스트 어드레스(HMBAD)에 기초하여 상기 다운로드 동작을 수행할 수 있다.
또한, 노말 동작 중에 스토리지 콘트롤러(SCON)는 실행이 요구되는 코드 섹션이 내부 메모리(IMEM) 및 호스트 메모리 버퍼(HMB)에 로드되어 있지 않은 경우 상기 노말 동작 중에 호스트 메모리 버퍼에 저장된 업로드 코드 섹션들(CDSECa, CDSECb, CDSECc, CDSECd) 중 하나를 다른 업로드 코드 섹션으로 대체하는 갱신 동작을 수행할 수 있다. 스토리지 콘트롤러(SCON)는매핑 콘트롤러(MPCON)부터 갱신 동작을 위한 리매핑된(S21) 호스트 어드레스(HMBAD)를 제공받을 수 있다(S22). 스토리지 콘트롤러(SCON)는 리매핑된 호스트 어드레스(HMBAD)에 기초하여 새로운 코드 섹션을 업로드함으로써 호스트 메모리 버퍼(HMB)에 저장된 실행 코드(EXCD)에 대한 갱신 동작을 수행할 수 있다(S23).
도 8a 및 8b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 일 실시예를 나타내는 도면들이다.
도 8a 및 8b는 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들 중 적어도 일부는 내부 메모리(IMEM)에 저장된 코드 섹션들의 적어도 일부와 중복되는 실시예를 나타낸다.
도 8a에는 도 6의 저장 상태에 상응하는 매핑 테이블의 매핑 정보(S2)가 도시되어 있고, 도 8b에는 상기 도 6의 저장 상태가 갱신된 후의 매핑 정보(S3)가 도시되어 있다. 도 8a 및 8b에는 도시 및 설명의 편의상 실행 코드(EXCD)가 8개의 제1 내지 제8 코드 섹션들(CDSEC1~CDSEC8)을 포함하는 예가 도시되어 있으나, 이에 한정되는 것은 아니며 코드 섹션들의 개수는 다양하게 결정될 수 있다.
도 8a를 참조하면, 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들에 대한 호스트 어드레스들을 매핑 테이블에 저장할 수 있다. 도 8a의 경우에는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 일부의 코드 섹션들(CDSEC1, CDSEC3, CDSEC5, CDSEC6)이 호스트 메모리 버퍼(HMB)의 호스트 어드레스들(HMBADd, HMBADb, HMBADa, HMBADc)에 각각 업로드되어 있음을 나타낸다.
또한 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 내부 메모리(IMEM)에 저장된 코드 섹션(CDSEC3, CDSEC6)에 대한 내부 어드레스들(IMADp, IMADq)을 매핑 테이블에 저장할 수 있다. 도 8a의 경우에는 제6 코드 섹션(CDSEC6)이 내부 메모리(IMEM)의 제1 내부 어드레스(IMADp)에 저장되어 있고 제3 코드 섹션(CDSEC3)이 내부 메모리(IMEM)의 제2 내부 어드레스(IMADq)에 저장되어 있음을 나타낸다.
스토리지 콘트롤러(SCON)는 매핑 테이블에 저장된 매핑 정보(S2)에 기초하여 코드 섹션들에 대한 액세스를 수행할 수 있다. 일 실시예에서, 스토리지 콘트롤러(SCON)는 매핑 정보(S2)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMEM)에 저장되어 있는 경우에는 내부 메모리(IMEM)에 저장된 코드 섹션을 액세스할 수 있다. 스토리지 콘트롤러(SCON)는 매핑 정보(S2)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMMEM)에 저장되어 있지 않는 경우에만 호스트 메모리 버퍼(HMB)에 저장된 코드 섹션을 액세스할 수 있다. 실행이 요구되는 코드 섹션이 내부 메모리(IMEM) 및 호스트 메모리 버퍼(HMB)에 모두 저장되어 있지 않은 경우 스토리지 콘트롤러(SCON)는 전술한 코드 섹션의 갱신 동작을 수행할 수 있다.
일 실시예에서, 매핑 콘트롤러(MPCON)는 코드 섹션들(CDSEC1~CDSEC8)에 대한 액세스 중요도 또는 액세스 빈도를 나타내는 우선순위(priority) 정보를 매핑 테이블(MPT)에 저장할 수 있다. 매핑 콘트롤러(MPCON)는 상기 갱신 동작을 위해 상기 우선순위 정보에 기초하여 업로드 코드 섹션들 중 우선순위가 가장 낮은 업로드 코드 섹션의 어드레스를 스토리지 콘트롤러(SCON)에 제공할 수 있다.
도 8a의 예에서, 우선 순위 정보의 값이 낮을수록 우선 순위가 높음을 나타낸다. 따라서, 업로드 코드 섹션들(CDSEC1, CDSEC3, CDSEC5, CDSEC6) 중에서 제5 코드 섹션(CDSEC5)의 우선 순위가 가장 낮은 경우에 해당한다. 새로운 코드 섹션의 업로드가 요구되고 호스트 메모리 버퍼(HMB)의 여유 공간이 부족할 때, 우선 순위가 가장 낮은 제5 코드 섹션(CDSEC5)이 새로운 코드 섹션으로 대체될 수 있다.
도 8b는 호스트 메모리 버퍼(HMB)에 저장된 제5 코드 섹션(CDSEC5)이 제8 코드 섹션(CDSEC8)로 대체되는 갱신 동작이 완료된 후의 매핑 테이블(MPT)의 저장 정보(S3)를 나타낸다. 도 8a 및 8b에 도시된 바와 같이, 코드 섹션의 갱신 동작이 완료된 후에는 우선 순위 정보도 함께 갱신된다. 도 8a 및 8b에는 가장 최근에 로드된 코드 섹션일수록 높은 우선 순위를 갖는 실시예가 도시되어 있으나 이에 한정되는 것은 아니다.
도 9a 및 9b는 본 발명의 실시예들에 따른 데이터 스토리지 장치에 포함되는 매핑 테이블의 다른 실시예를 나타내는 도면들이다.
도 9a 및 9b는 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들과 내부 메모리(IMEM)에 저장된 코드 섹션들이 중복되지 않는 실시예를 나타낸다.
도 9a에는 도 6의 저장 상태에 상응하는 매핑 테이블의 매핑 정보(S4)가 도시되어 있고, 도 9b에는 상기 도 6의 저장 상태가 갱신된 후의 매핑 정보(S5)가 도시되어 있다. 도 9a 및 9b에는 도시 및 설명의 편의상 실행 코드(EXCD)가 8개의 제1 내지 제8 코드 섹션들(CDSEC1~CDSEC8)을 포함하는 예가 도시되어 있으나, 이에 한정되는 것은 아니며 코드 섹션들의 개수는 다양하게 결정될 수 있다.
도 9a를 참조하면, 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들에 대한 호스트 어드레스들을 매핑 테이블에 저장할 수 있다. 도 9a의 경우에는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 일부의 코드 섹션들(CDSEC1, CDSEC3, CDSEC5, CDSEC8)이 호스트 메모리 버퍼(HMB)의 호스트 어드레스들(HMBADd, HMBADb, HMBADa, HMBADc)에 각각 업로드되어 있음을 나타낸다.
또한 매핑 콘트롤러(MPCON)는 복수의 코드 섹션들(CDSEC1~CDSEC8) 중에서 내부 메모리(IMEM)에 저장된 코드 섹션(CDSEC6)에 대한 내부 어드레스(IMADp)를 매핑 테이블에 저장할 수 있다. 도 9a의 경우에는 제6 코드 섹션(CDSEC6)이 내부 메모리(IMEM)의 제1 내부 어드레스(IMADp)에 저장되어 있음을 나타낸다.
스토리지 콘트롤러(SCON)는 매핑 테이블에 저장된 매핑 정보(S4)에 기초하여 코드 섹션들에 대한 액세스를 수행할 수 있다. 일 실시예에서, 스토리지 콘트롤러(SCON)는 매핑 정보(S4)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMEM)에 저장되어 있는 경우에는 내부 메모리(IMEM)에 저장된 코드 섹션을 액세스할 수 있다. 스토리지 콘트롤러(SCON)는 매핑 정보(S4)에 기초하여 실행이 요구되는 코드 섹션이 내부 메모리(IMMEM)에 저장되어 있지 않는 경우에만 호스트 메모리 버퍼(HMB)에 저장된 코드 섹션을 액세스할 수 있다. 실행이 요구되는 코드 섹션이 내부 메모리(IMEM) 및 호스트 메모리 버퍼(HMB)에 모두 저장되어 있지 않은 경우 스토리지 콘트롤러(SCON)는 전술한 코드 섹션의 갱신 동작을 수행할 수 있다.
일 실시예에서, 매핑 콘트롤러(MPCON)는 코드 섹션들(CDSEC1~CDSEC8) 중에서 호스트 메모리 버퍼(HMB)에 업로드된 업로드 코드 섹션들(CDSEC1, CDSEC3, CDSEC5, CDSEC8)에 대한 액세스 중요도 또는 액세스 빈도를 나타내는 우선순위(priority) 정보를 매핑 테이블(MPT)에 저장할 수 있다. 도 8a 및 8b의 실시예와는 다르게 업로드되지 않은 코드 섹션들에 대한 우선 순위 정보는 생략(X)될 수 있다. 매핑 콘트롤러(MPCON)는 상기 갱신 동작을 위해 상기 우선순위 정보에 기초하여 업로드 코드 섹션들 중 우선순위가 가장 낮은 업로드 코드 섹션의 어드레스를 스토리지 콘트롤러(SCON)에 제공할 수 있다.
도 9a의 예에서, 우선 순위 정보의 값이 낮을수록 우선 순위가 높음을 나타낸다. 따라서, 업로드 코드 섹션들(CDSEC1, CDSEC3, CDSEC5, CDSEC8) 중에서 제5 코드 섹션(CDSEC5)의 우선 순위가 가장 낮은 경우에 해당한다. 새로운 코드 섹션의 업로드가 요구되고 호스트 메모리 버퍼(HMB)의 여유 공간이 부족할 때, 우선 순위가 가장 낮은 제5 코드 섹션(CDSEC5)이 새로운 코드 섹션으로 대체될 수 있다.
도 9b는 호스트 메모리 버퍼(HMB)에 저장된 제5 코드 섹션(CDSEC5)이 제7 코드 섹션(CDSEC7)로 대체되는 갱신 동작이 완료된 후의 매핑 테이블(MPT)의 저장 정보(S5)를 나타낸다. 도 9a 및 9b에 도시된 바와 같이, 코드 섹션의 갱신 동작이 완료된 후에는 우선 순위 정보도 함께 갱신된다. 도 9a 및 9b에는 가장 최근에 로드된 업로드 코드 섹션일수록 높은 우선 순위를 갖는 실시예가 도시되어 있으나 이에 한정되는 것은 아니다.
도 10은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 10을 참조하면, 시스템(1001)은 호스트 장치(2001) 및 데이터 스토리지 장치(3001)를 포함할 수 있다. 호스트 장치(2001)는 호스트 콘트롤러(HCON) 및 호스트 메모리(HMEM)를 포함할 수 있다. 데이터 스토리지 장치(3001)는 스토리지 콘트롤러(SCON), 스토리지 메모리(SMEN), 매핑 콘트롤러(MPCON), 보안 엔진(SCR) 및 비휘발성 메모리 장치(NVM)를 포함할 수 있다.
도 10의 시스템(1001)은 데이터 스토리지 장치(3001)가 보안 엔진(SCR)을 더 포함하는 것을 제외하고는 도 1의 시스템(1000)과 실질적으로 동일하므로 중복되는 설명을 생략한다.
보안 엔진(SCR)은 비휘발성 메모리 장치(NVM)에 저장된 실행 코드(EXCD)에 대한 인코딩을 수행하여 보안 실행 코드(SEXCD)를 발생한다. 스토리지 콘트롤러(SCON)는 보안 실행 코드(SEXCD)를 호스트 메모리 버퍼(HMB)에 로드하여 저장한다.
또한, 보안 엔진(SCR)은 호스트 메모리 버퍼(HMB)로부터 실시간으로 다운로드되는 보안 실행 코드(SEXCD)에 대한 디코딩을 수행하여 디코딩된 실행 코드(EXCD)를 스토리지 콘트롤러(SCON)에 제공한다.
일 실시예에서, 상기 인코딩은 암호화에 해당하고 상기 디코딩은 복호화에 해당할 수 있다. 다른 실시예에서, 상기 인코딩은 랜더마이징에 해당하고 상기 디코딩은 디랜더마이징에 해당할 수 있다. 또 다른 실시예에서, 상기 인코딩은 암호화 및 랜더마이징에 해당하고 상기 디코딩은 복호화 및 디랜더마이징에 해당할 수 있다.
데이터 스토리지 장치(3001)가 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 로드하도록 구성되는 경우, 실행 코드(EXCD)가 해킹의 위협에 쉽게 누출되는 단점이 있다. 예를 들어, 데이터 스토리지 장치(3001)가 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 로드할 때에 데이터 스토리지 장치(3001)와 호스트 장치(2001) 사이의 통신을 해킹함으로써, 데이터 스토리지 장치(3001)의 실행 코드(EXCD)가 유출될 수 있다. 또한, 데이터 스토리지 장치가 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 로드한 후에 호스트 메모리 버퍼(HMB)를 해킹함으로써, 데이터 스토리지 장치(3001)의 실행 코드(EXCD)가 유출될 수 있다.
실행 코드(EXCD)가 유출되면, 데이터 스토리지 장치(3001)가 호스트 장치(2001)의 요청에 따른 쓰기, 읽기 및 소거를 수행하는 정책 및 배경 동작을 수행하는 정책이 유출된다. 따라서, 데이터 스토리지 장치(3001)의 보안성이 저하된다.
이와 같은 문제를 방지하기 위하여, 본 발명의 실시예들에 따른 데이터 스토리지 장치는 보안 엔진(SCR)을 포함한다.
본 발명의 실시예들에 따른 데이터 스토리지 장치 및 데이터 스토리지 장치의 동작 방법은 보안 엔진(SCR)을 이용하여 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드(EXCD)를 인코딩하여 보안 실행 코드(SEXCD)를 상기 호스트 메모리 버퍼에 업로드함으로써 데이터 스토리지 장치 및 이를 포함하는 시스템의 보안성을 향상시킬 수 있다.
도 11은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 초기화 동작 및 노말 동작의 일 실시예를 나타내는 도면이다.
도 10 및 11을 참조하면, 데이터 스토리지 장치(3001)가 파워-온되면 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사용을 요구할 수 있다(S31). 일 실시예에서, 호스트콘트롤러(HCON)가 스토리지 콘트롤러(SCON)를인식하고 식별자(Identifier)를 스토리지 콘트롤러(SCON)에 전송하여, 스토리지 콘트롤러(SCON)가 호스트 메모리 버퍼(HMB)를 사용할 수 있는지 확인할 수 있다. 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)로 호스트 메모리 버퍼(HMB)의 사용 여부를 통지할 수 있다. 다른 실시예에서, 스토리지 콘트롤러(SCON)가 호스트 콘트롤러(HCON)를 인식하고 호스트 콘트롤러(HCON)로 호스트 메모리 버퍼(HMB)의 사용 가능 여부를 문의할 수 있다. 스토리지 콘트롤러(SCON)가호스트 메모리 버퍼(HMB)의 사용 여부를 통지하거나 사용 가능 여부를 문의하는 경우 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)에게 호스트 메모리 버퍼(HMB)의 사이즈를 함께 요청할 수 있다.
호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)의 요청을 참고하여 호스트 메모리 버퍼(HMB)를 할당할 수 있다(S32). 호스트 콘트롤러(HCON)는 호스트 메모리 버퍼(HMB)의 사이즈를 할당한 후, 할당 결과를 스토리지 콘트롤러(SCON)에게 통지할 수 있다(S33). 예를 들어, 호스트 콘트롤러(HCON)는 상기 할당 결과를 셋 피쳐 명령을 통해 스토리지 콘트롤러(SCON)에게 통지할 수 있다. 셋 피쳐 명령에는 호스트 메모리 버퍼(HMB)의 사이즈 정보 또는 호스트 메모리 버퍼(HMB)의 활성화 여부에 대한 정보 등과 같은 셋 피쳐(set features)가 포함될 수 있다. 상기 셋 피쳐는 스토리지 콘트롤러(SCON) 및/또는 매핑 콘트롤러(MPCON)로 제공될 수 있다(S33).
매핑 콘트롤러(MPCON)는 상기 셋 피쳐에 포함된 호스트 메모리 버퍼(HMB)의 사이즈를 참고하여 실행 코드(EXCD) 및 실행 코드(EXCD)가 저장되는 호스트 메모리 버퍼(HMB)의 호스트 어드레스(HMBAD) 사이의 어드레스 매핑을 수행하고 매핑 관계를 매핑 테이블에 저장한다(S34). 매핑 테이블에 포함된 매핑 관계, 즉 호스트 어드레스(HMBAD)는 스토리지 콘트롤러(SCON)의 요청에 따라서 호스트 콘트롤러(HCON)에 제공될 수 있다(S35). 스토리지 콘트롤러(SCON)는 실행 코드(EXCD)를 보안 엔진(SCR)에 제공하고, 보안 엔진(SCR)은 실행 코드(EXCD)에 대한 인코딩을 수행하여(S37) 보안 실행 코드(SEXCD)를 스토리지 콘트롤러(SCON)에 제공할 수 있다(S38). 스토리지 콘트롤러(SCON)는매핑 콘트롤러(MPCON)로부터 제공되는 호스트 어드레스(HMBAD)에 기초하여 보안 실행 코드(SEXCD)를 호스트 메모리 버퍼(HMB)에 업로드할 수 있다(S39).
초기화 동작이 완료된 후에는 노말 동작이 수행될 수 있다. 예를 들어, 호스트 콘트롤러(HCON)는 스토리지 콘트롤러(SCON)로 명령(CMD) 및 어드레스(ADD)를 전송할 수 있다(S40). 상기 명령(CMD) 및 어드레스(ADD)에 따라서 비휘발성 메모리 장치(NVM)에 대한 독출 동작 또는 기입 동작이 수행될 수 있다.
노말 동작 중에, 스토리지 콘트롤러(SCON)는 호스트 메모리 버퍼(HMB)로부터 저장된 보안 실행 코드(SEXCD)를 실시간으로 다운로드하여(S41) 보안 엔진(SCR)에 제공할 수 있다(S42). 보안 엔진(SCR)은 보안 실행 코드(SEXCD)에 대한 디코딩을 수행하여(S43) 상기 보안 실행 코드(SEXCD)에 상응하는 실행 코드(EXCD)를 스토리지 콘트롤러(SCON)에 제공할 수 있다(S44). 스토리지 콘트롤러(SCON)는 보안 엔진(SCR)으로부터 제공되는 실행 코드(EXCD)를 실행할 수 있다.
도 12는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 일 실시예를 나타내는 블록도이다.
도 12를 참조하면, 보안 엔진(510)은 키 레지스터(KREG)(511)와 암호화/복호화 유닛(ENC/DEC)(512)을 포함할 수 있다.
키 레지스터(511)는 보안 키(KY)를 저장하고 저장된 보안 키(KY)를 암호화/복호화 유닛(512)에 제공할 수 있다. 암호화/복호화 유닛(512)은 보안 키(KY)에 기초하여 비휘발성 메모리 장치(NVM) 또는 스토리지 콘트롤러(SCON)로부터 제공되는 실행 코드(EXCD)를 암호화하여 보안 실행 코드(SEXCD)를 제공할 수 있다. 또한 암호화/복호화 유닛(512)은 호스트 메모리 버퍼(HMB)로부터 제공되는 보안 실행 코드(SEXCD)를 복호화하여 실행 코드(EXCD)를 제공할 수 있다.
도 13a는 도 12의 보안 엔진에 의한 암호화 동작의 일 예를 나타내는 도면이고, 도 13b는 도 12의 보안 엔진에 의한 복호화 동작의 일 예를 나타내는 도면이다.
도 12 및 13a를 참조하면, 암호화/복호화 유닛(512)은 보안 키(KY)에 기초하여 실행 코드(EXCD)에 대한 암호화된 시그니쳐(SGN)를 발생하고, 암호화된 시그니쳐(SGN)를 보안 실행 코드(SEXCD)에 병합할 수 있다. 예를 들어, 암호화/복호화 유닛(512)은 실행 코드(EXCD)(701)에 해쉬 함수를 적용하여 해쉬 값(702)을 계산한다. 일 실시예에서 키 인증 유닛(300)은 외부에 공개되지 않은 보안 키(KY)를 이용하여 실행 코드(EXCD)를 시그니쳐(SGN)(703)를 발생한다. 이와 같이 구해진 시그니쳐(SGN)(703)는 실행 코드(EXCD)에 부가되고, 시그니쳐(SGN)(703)가 부가된 실행 코드(EXCD)는 보안 실행 코드(SEXCD)로서 호스트 메모리 버퍼(HMB)에 제공될 수 있다.
도 12 및 13b를 참조하면, 암호화 및 복호화 유닛(512)은 보안 실행 코드(SEXCD)에 병합된 암호화된 시그니쳐(SGN)를 복호화하여 복호화 시그니쳐를 발생하고, 상기 복호화 시그니쳐에 기초하여 실행 코드(EXCD)를 제공할 수 있다. 예를 들어, 암호화/복호화 유닛(512)은 호스트 메모리 버퍼(HMB)로부터 시그니쳐(SGN)가 포함된 보안 실행 코드(SEXCD)를 수신할 수 있다. 보안 실행 코드(SEXCD)는 도 13a를 참조하여 설명한 바와 같이 실행 코드(EXCD) 및 및 시그니쳐(SGN)(803)를 포함할 수 있다. 보안 엔진(SCR)은 실행 코드(EXCD)에 해쉬 함수를 적용하여 해쉬 값(804)을 계산하고, 또한 시그니쳐(803)에 해쉬 함수를 적용하여 해쉬 값(805)을 계산할 수 있다. 보안 엔진(SCR)은 실행 코드(EXCD)의 해쉬 값(804) 및 시그니쳐(803)의 해쉬 값(805)이 일치하는 경우, 상기 보안 실행 코드(SEXCD)의 무결성을 검증할 수 있다.
도 14는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 다른 실시예를 나타내는 블록도이다.
도 14를 참조하면, 보안 엔진(520)은 시드 값(SD)을 발생하여 제공하는 시드 발생기(SGEN)(521) 및 랜더마이징/디랜더마이징 유닛(RAN/DER)(522)을 포함할 수 있다. 랜더마이징/디랜더마이징 유닛(522)은 시드 값(SD)에 기초하여 실행 코드(EXCD)를 랜더마이징하여 보안 실행 코드(SEXCD)를 제공하고, 보안 실행 코드(SEXCD)를 디랜더마이징하여 보안 실행 코드(SEXCD)에 상응하는 실행 코드(EXCD)를 제공할 수 있다.
도 15는 도10의 데이터 스토리지 장치에 포함되는 보안 엔진의 또 다른 실시예를 나타내는 블록도이다.
도 15를 참조하면, 보안 엔진(530)은 도 12, 13a 및 13b를 참조하여 설명한 암호화/복호화 유닛(531) 및 도 14를 참조하여 설명한 랜더마이징/디랜더마이징 유닛(532)을 포함할 수 있다.
일 실시예에서, 보안 엔진(530)은 실행 코드(EXCD)에 대한 암호화를 먼저 수행하고 암호되된 코드에 대하여 랜더마이징을 수행하여 보안 실행 코드(SEXCD)를 제공할 수 있다. 이 경우 보안 엔진(530)은 보안 실행 코드(SEXCD)에 대한 디랜더마이징을 먼저 수행하고 디랜더마이징된 코드에 대하여 복호화를 수행하여 실행 코드(EXCD)를 제공할 수 있다.
다른 실시예에서, 보안 엔진(530)은 실행 코드(EXCD)에 대한 랜더마이징을 먼저 수행하고 랜더마이징된 코드에 대하여 암호화를 수행하여 보안 실행 코드(SEXCD)를 제공할 수 있다. 이 경우 보안 엔진(530)은 보안 실행 코드(SEXCD)에 대한 복호화를 먼저 수행하고 복호화된 코드에 대한 디랜더마이징을 수행하여 실행 코드(EXCD)를 제공할 수 있다.
도 16은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 파워 모드의 제어 동작의 일 실시예를 나타내는 도면이다.
도 16을 참조하면, 스토리지 콘트롤러(SCON)는 호스트 콘트롤러(HCON)로부터 파워다운 정보(PDING)를 수신할 수 있다(S51). 스토리지 콘트롤러(SCON)는 파워다운 정보를 수신하면 매핑 콘트롤러(MPCON)로부터 매핑 테이블(MPT)를 제공받아(S52) 비휘발성 메모리 장치(NVM)에 저장할 수 있다(S53). 이후, 스토리지 콘트롤러(SCON)는 파워다운에 필요한 절차를 수행할 수 있다(S54).
이와 같이, 스토리지 콘트롤러(SCON)는파워다운 모드에 진입하기 전에 매핑 테이블(MPT)을 비휘발성 메모리 장치(NVM)에 저장할 수 있다.
스토리지 콘트롤러(SCON)는 파워다운 모드에서 호스트 콘트롤러(HCON)로부터 파워업 정보(PUINF)을 수신할 수 있다(S55). 스토리지 콘트롤러(SCON)는파워업 동작이 개시되면 비휘발성 메모리 장치(NVM)로부터 매핑 테이블(MPT)을 독출할 수 있다(S56). 스토리지 콘트롤러(SCON)는 독출된 매핑 테이블(MPT)을 매핑 콘트롤러(MPCON)에 저장할 수 있다(S57). 스토리지 콘트롤러(SCON)는 복원된 매핑 테이블(MPT)에 기초하여 호스트 메모리 버퍼(HMB)에 대한 실행 코드(EXCD)에 액세스할 수 있게 되고, 이로써 파워업 절차가 종료될 수 있다(S58).
이와 같이, 스토리지 콘트롤러(SCON)는파워다운 모드에서 웨이크업될 때 비휘발성 메모리 장치(NVM)에 저장된 매핑 테이블(MPT)을 매핑 콘트롤러(MPCON)으로 로드하고 로드된 매핑 테이블(MPT)에 기초하여 호스트 메모리 버퍼(HMB)에 저장된 실행 코드(EXCD)를 다운로드할 수 있다.
이와 같이, 파워업시 실행 코드(EXCD)를 호스트 메모리 버퍼(HMB)에 재로드하는 과정을 생략함으로써 파워업 시간을 단축하고 데이터 스토리지 장치의 성능을 향상시킬 수 있다.
도 17은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 17을 참조하면, 시스템(1000a)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 에스에스디(SSD, solid state drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card) 등일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다. 도17의 시스템(1000a)은 임의의 전자 시스템(electronic system)일 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 호스트 메모리(HMEM)(2200) 및 호스트 컨트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 호스트 메모리(2200)는 전술한 바와 같이 실행 코드(EXCD)를 저장하는 호스트 메모리 버퍼(HMB)를 할당할 수 있다. 프로세서(2100)에 의해 운영 체제(OS) 및/또는 호스트 펌웨어(FW)(2110)가 구동될 수 있다. 프로세서(2100)는 코맨드(CMD)의 생성, 응답(RES)의 해석, 스토리지 장치(3000)의 레지스터(예를 들어, Extended(EXT)_CSD 레지스터(미도시))에 저장된 데이터 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(2100)는 운영 체제/호스트 펌웨어(2110)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)와 인터페이스하기 위한 구성요소이다. 호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)로 코맨드를 발급하고(issuing), 코맨드에 대한 응답을 스토리지 장치(3000)로부터 수신하고, 스토리지 장치(3000)에저장될 기입 데이터를 전송하고, 스토리지 장치(3000)로부터 독출한 독출 데이터를 수신한다.
스토리지 장치(3000)는 복수의 비휘발성 메모리 장치들(NVM)(3100) 및 스토리지 컨트롤러(3200)를 포함한다.
비휘발성 메모리 장치들(3100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 스토리지 컨트롤러(3200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. 스토리지 컨트롤러(3200)는 버스(30)를 통하여 연결된 적어도 하나의 프로세서(3210), 매핑 콘트롤러(MPCON)(3220), 스토리지 메모리 장치(SMEM)(3240), 보안 엔진(SCR), 호스트 인터페이스(3230), 및 비휘발성 메모리 인터페이스(3250)를 포함한다.
스토리지 메모리(3240)는 스토리지 컨트롤러(3200)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 스토리지 메모리(3240)는 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory)와 같은 휘발성 메모리일 수 있다. 도 17에서 스토리지 메모리(3240)는스토리지 컨트롤러(3200)의 내부에 포함되는 것으로 도시되어 있지만 반드시 여기에 제한되지 않을 것이다. 실시예에 따라서, 스토리지 메모리(3240)는 스토리지 컨트롤러(3200)의 외부에 별도로 존재할 수도 있다.
프로세서(3210)는 스토리지 컨트롤러(3200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(3210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(FW)(3212)를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행할 수 있다. 예를 들면, 플래시 변환 계층(FTL)은 어드레스 맵핑 동작, 읽기 교정 동작, 에러 정정 동작, 등을 수행하는 다양한 계층들을 포함할 수 있다.
보안 엔진(3260)은 전술한 바와 같이, 실행 코드(EXCD)에 대한 인코딩 및 보안 실행 코드(SEXCD)에 대한 디코딩을 수행할 수 있다. 도 17에는 보안 엔진(3260)이 호스트 인터페이스(3230)의 외부에 구현된 것으로 도시되어 있으나 보안 엔진(3260)은 호스트 인터페이스(3230)에 포함될 수도 있다.
호스트 인터페이스(3230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(3250)는 비휘발성 메모리 장치(3100)와의 인터페이스 기능을 제공할 수 있다. 호스트 장치(2000)와 스토리지 장치(3000)는 버스(10)를 통하여 상호 연결될 수 있다.
도 18은 도 17의 데이터 스토리지 장치에 포함되는 비휘발성 메모리 장치의 메모리 블록의 등가 회로를 나타내는 회로도이다.
비휘발성 메모리 장치(NVM)는 복수의 메모리 블록들을 포함할 수 있다. 도 18에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향(D1)으로 형성될 수 있다.
도 18을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 12에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 한편, 도면에 도시하지는 않았으나 중간 스위칭 라인에 해당하는 게이트 라인은 후술하는 바와 같이 분리될 수 있다. 도 18에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 19는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 19를 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 데이터 저장 장치(4400), 및모바일 램(4500)을 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 어플리케이션 프로세서(4100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 데이터 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 수 있다.
데이터 저장 장치(4400)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 솔리드 스테이트 드라이브(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치일 수 있다. 데이터 저장 장치(4400)는 전술한 바와 같이 모바일 램(4500)의 호스트 메모리 버퍼(HMB)에 실행 코드(EXCD)를 저장할 수 있다.
모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 모바일 램(4500)은 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 데이터 스토리지 장치 및 데이터 스토리지 장치의 동작 방법은 호스트 메모리의 호스트 메모리 버퍼를 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드의 저장소로 이용함으로써 데이터 스토리지 장치의 내부 메모리가 부족한 경우에도 실행 코드에 대한 액세스 속도를 증가하고 데이터 스토리지 장치의 성능을 향상시킬 수 있다. 또한, 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 인코딩하여 보안 실행 코드를 상기 호스트 메모리 버퍼에 업로드함으로써 데이터 스토리지 장치 및 이를 포함하는 시스템의 보안성을 향상시킬 수 있다.
본 발명의 실시예들은 임의의 데이터 스토리지 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
Claims (10)
- 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 저장하는 비휘발성 메모리 장치;
상기 실행 코드를 상기 비휘발성 메모리 장치로부터 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하고 상기 호스트 메모리 버퍼에 저장된 실행 코드를 실시간으로 다운로드하여 실행하는 스토리지 콘트롤러; 및
상기 실행 코드 및 상기 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 매핑 콘트롤러를 포함하는 데이터 스토리지 장치. - 제1 항에 있어서,
상기 실행 코드는 복수의 코드 섹션들을 포함하고,
상기 매핑 콘트롤러는 상기 복수의 코드 섹션들 중에서 상기 호스트 메모리 버퍼에 업로드된 업로드 코드 섹션들에 대한 호스트 어드레스들을 상기 매핑 테이블에 저장하는 것을 특징으로 하는 데이터 스토리지 장치. - 제2 항에 있어서,
상기 스토리지 콘트롤러는 상기 데이터 스토리지 장치의 초기화 동작 중에 상기 복수의 코드 섹션들의 전부를 상기 호스트 메모리 버퍼에 업로드하는 것을 특징으로 하는 데이터 스토리지 장치. - 제2 항에 있어서,
상기 스토리지 콘트롤러는 상기 데이터 스토리지 장치의 초기화 동작 또는 상기 초기화 동작이 완료된 후의 노말 동작 중에 상기 복수의 코드 섹션들의 일부를 상기 호스트 메모리 버퍼에 업로드하는 것을 특징으로 하는 데이터 스토리지 장치. - 제4 항에 있어서,
상기 스토리지 콘트롤러는 상기 노말 동작 중에 상기 호스트 메모리 버퍼에 저장된 업로드 코드 섹션을 다른 업로드 코드 섹션으로 대체하는 갱신 동작을 수행하는 것을 특징으로 하는 데이터 스토리지 장치. - 제5 항에 있어서,
상기 매핑 콘트롤러는 상기 코드 섹션들에 대한 액세스 중요도 또는 액세스 빈도를 나타내는 우선순위 정보를 상기 매핑 테이블에 저장하고,
상기 매핑 콘트롤러는 상기 갱신 동작을 위해 상기 우선순위 정보에 기초하여 상기 업로드 코드 섹션들 중 우선순위가 가장 낮은 업로드 코드 섹션의 어드레스를 상기 스토리지 콘트롤러에 제공하는 것을 특징으로 하는 데이터 스토리지 장치. - 제2 항에 있어서,
상기 데이터 스토리지 장치는 랜덤 액세스가 가능한 내부 메모리를 더 포함하고,
상기 복수의 코드 섹션의 일부를 상기 비휘발성 메모리 장치로부터 상기 내부 메모리에 로드하여 저장하는 것을 특징으로 하는 데이터 스토리지 장치. - 제2 항에 있어서,
상기 실행 코드에 대한 인코딩을 수행하여 보안 실행 코드를 발생하는 보안 엔진을 더 포함하고,
상기 스토리지 콘트롤러는 상기 보안 실행 코드를 상기 호스트 메모리 버퍼에 로드하고,
상기 보안 엔진은 상기 호스트 메모리 버퍼로부터 실시간으로 다운로드되는 보안 실행 코드에 대한 디코딩을 수행하여 상기 실행 코드를 상기 스토리지 콘트롤러에 제공하는 것을 특징으로 하는 데이터 스토리지 장치. - 제1 항에 있어서,
상기 스토리지 콘트롤러는 파워다운 모드에 진입하기 전에 상기 매핑 테이블을 상기 비휘발성 메모리 장치에 저장하고,
상기 스토리지 콘트롤러는 파워다운 모드에서 웨이크업될 때 상기 비휘발성 메모리 장치에 저장된 매핑 테이블을 로드하고 상기 매핑 테이블에 기초하여 상기 호스트 메모리 버퍼에 저장된 상기 실행 코드를 다운로드하는 것을 특징으로 하는 데이터 스토리지 장치. - 데이터 스토리지 장치의 동작을 제어하기 위한 실행 코드를 상기 데이터 스토리지 장치의 비휘발성 메모리 장치로부터 호스트 장치에 포함되는 호스트 메모리 버퍼에 업로드하여 저장하는 단계;
상기 호스트 메모리 버퍼에 저장된 실행 코드를 상기 데이터 스토리지 장치로 실시간으로 다운로드하여 실행하는 단계; 및
상기 실행 코드 및 상기 실행 코드가 저장되는 상기 호스트 메모리 버퍼의 호스트 어드레스 사이의 매핑 관계를 포함하는 매핑 테이블을 관리하는 단계를 포함하는 데이터 스토리지 장치의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180127154A KR20200046264A (ko) | 2018-10-24 | 2018-10-24 | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 |
US16/506,613 US10983722B2 (en) | 2018-10-24 | 2019-07-09 | Data storage device using host memory buffer and method of operating the same |
CN201910977458.5A CN111090388B (zh) | 2018-10-24 | 2019-10-14 | 使用主机存储器缓冲器的数据存储设备及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180127154A KR20200046264A (ko) | 2018-10-24 | 2018-10-24 | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200046264A true KR20200046264A (ko) | 2020-05-07 |
Family
ID=70325333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180127154A KR20200046264A (ko) | 2018-10-24 | 2018-10-24 | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10983722B2 (ko) |
KR (1) | KR20200046264A (ko) |
CN (1) | CN111090388B (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220145255A (ko) * | 2021-04-21 | 2022-10-28 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 보안 hmb를 위한 머클 트리로의 빠른 쓰기 |
KR20230071018A (ko) * | 2021-11-15 | 2023-05-23 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102589402B1 (ko) | 2018-10-04 | 2023-10-13 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 디바이스의 동작 방법 |
KR20200121645A (ko) * | 2019-04-16 | 2020-10-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작 방법과 메모리 시스템 |
US11720261B2 (en) * | 2020-08-10 | 2023-08-08 | Micron Technology, Inc. | Transferring memory system data to a host system |
US12019786B2 (en) | 2020-10-02 | 2024-06-25 | Western Digital Technologies, Inc. | Data storage devices and related methods to secure host memory buffers with low latency |
CN114461536A (zh) * | 2020-11-10 | 2022-05-10 | 瑞昱半导体股份有限公司 | 查找表建立及内存地址查询方法 |
US11494097B2 (en) * | 2020-12-07 | 2022-11-08 | Western Digital Technologies, Inc. | Fast initialization of secure HMB |
CN114764310A (zh) * | 2021-01-13 | 2022-07-19 | 三星电子株式会社 | 使用主机存储缓冲器的处理器和包括该处理器的存储系统 |
US20220229789A1 (en) * | 2021-01-21 | 2022-07-21 | Western Digital Technologies, Inc. | Host Memory Buffer (HMB) Abstraction Protocol Layer |
TWI800795B (zh) * | 2021-02-09 | 2023-05-01 | 宏碁股份有限公司 | 使用持續性記憶體的資料整理方法與記憶體儲存系統 |
US11720715B2 (en) | 2021-03-21 | 2023-08-08 | Western Digital Technologies, Inc. | Secure data storage device and method of encryption |
US11403011B1 (en) | 2021-04-05 | 2022-08-02 | Western Digital Technologies, Inc. | Host memory buffer allocation management |
US11763041B2 (en) * | 2021-04-28 | 2023-09-19 | SK Hynix Inc. | Data storage device performing in-storage processing |
KR20230037240A (ko) * | 2021-09-09 | 2023-03-16 | 에스케이하이닉스 주식회사 | 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템 |
CN115079803B (zh) * | 2022-05-20 | 2024-03-29 | 上海瑞浦青创新能源有限公司 | 一种适用于微控制器的异常掉电数据保存装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020010817A1 (en) * | 1999-01-29 | 2002-01-24 | Han-Chung Yeh | Host signal processing modem with a signal processing accelerator |
US7490177B2 (en) * | 2006-01-23 | 2009-02-10 | Infineon Technologies Ag | System method for performing a direct memory access for automatically copying initialization boot code in a new memory architecture |
US8954654B2 (en) | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
KR101702390B1 (ko) * | 2009-04-09 | 2017-02-06 | 삼성전자주식회사 | 컴퓨터 시스템의 부팅 방법 |
US8447916B2 (en) * | 2010-02-17 | 2013-05-21 | Microsoft Corporation | Interfaces that facilitate solid state storage configuration |
US9575884B2 (en) | 2013-05-13 | 2017-02-21 | Qualcomm Incorporated | System and method for high performance and low cost flash translation layer |
US10268584B2 (en) | 2014-08-20 | 2019-04-23 | Sandisk Technologies Llc | Adaptive host memory buffer (HMB) caching using unassisted hinting |
US10007433B2 (en) | 2015-01-21 | 2018-06-26 | Sandisk Technologies Llc | Systems and methods for performing adaptive host memory buffer caching of transition layer tables |
US10862630B2 (en) * | 2015-02-13 | 2020-12-08 | Samsung Electronics Co., Ltd | Method and system for contiguous HARQ memory management with memory splitting |
WO2016183552A1 (en) | 2015-05-14 | 2016-11-17 | Walleye Software, LLC | A memory-efficient computer system for dynamic updating of join processing |
US20170242606A1 (en) | 2016-02-19 | 2017-08-24 | Sandisk Technologies Llc | Methods and systems for transitioning to and from different storage device power states using host memory buffer (hmb) |
US10642496B2 (en) | 2016-04-01 | 2020-05-05 | Sandisk Technologies Inc. | Out of order read transfer with host memory buffer |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US10157004B2 (en) | 2016-04-14 | 2018-12-18 | Sandisk Technologies Llc | Storage system and method for recovering data corrupted in a host memory buffer |
KR20180051706A (ko) * | 2016-11-07 | 2018-05-17 | 삼성전자주식회사 | 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템 |
TWI679554B (zh) * | 2017-03-07 | 2019-12-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
TWM548816U (zh) * | 2017-04-10 | 2017-09-11 | 宏碁股份有限公司 | 利用主控端記憶體緩衝器之儲存裝置 |
-
2018
- 2018-10-24 KR KR1020180127154A patent/KR20200046264A/ko not_active Application Discontinuation
-
2019
- 2019-07-09 US US16/506,613 patent/US10983722B2/en active Active
- 2019-10-14 CN CN201910977458.5A patent/CN111090388B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220145255A (ko) * | 2021-04-21 | 2022-10-28 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 보안 hmb를 위한 머클 트리로의 빠른 쓰기 |
KR20230071018A (ko) * | 2021-11-15 | 2023-05-23 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN111090388A (zh) | 2020-05-01 |
US20200133566A1 (en) | 2020-04-30 |
US10983722B2 (en) | 2021-04-20 |
CN111090388B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20200046264A (ko) | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 | |
US10866797B2 (en) | Data storage device and method for reducing firmware update time and data processing system including the device | |
US10789160B2 (en) | Utilizing different data storage policies in response to different characteristics of data | |
US11216206B2 (en) | Method of operating data storage device | |
US9244619B2 (en) | Method of managing data storage device and data storage device | |
US11573733B2 (en) | Data storage device and data storage system | |
US11755315B2 (en) | Boot ROM update method and boot-up method of embedded system | |
KR102415875B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR102558901B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20190040614A (ko) | 메모리 시스템 및 그의 동작방법 | |
KR20200013897A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US10942678B2 (en) | Method of accessing data in storage device, method of managing data in storage device and storage device performing the same | |
US11842082B2 (en) | Storage device including a plurality of zones having separate compression ratios and operating method thereof | |
US9734057B2 (en) | Semiconductor storage device and buffer operation method thereof | |
CN114255813A (zh) | 存储装置、主机装置、包括两者的电子装置及其操作方法 | |
KR20200076244A (ko) | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 | |
US20200310981A1 (en) | Controller, memory system and operating method thereof | |
KR20220039562A (ko) | 스토리지 장치, 호스트 장치, 이들을 포함하는 전자 장치 및 그 동작 방법 | |
US20200089627A1 (en) | Method for performing adaptive locking range management, associated data storage device and controller thereof | |
KR20210072990A (ko) | 가변 크기 맵핑 기반의 스토리지 장치의 데이터 관리 방법 및 이를 이용한 구동 방법 | |
CN111309518A (zh) | 存储器系统和存储器系统的操作方法 | |
US11657000B2 (en) | Controller and memory system including the same | |
KR20230011214A (ko) | 스토리지 장치 및 이의 동작 방법 | |
KR20240077059A (ko) | 맵 세그먼트를 로드하고 외부 장치로 전송하는 스토리지 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |