KR20130098641A - 저장 장치 및 그것의 메모리 컨트롤러 - Google Patents
저장 장치 및 그것의 메모리 컨트롤러 Download PDFInfo
- Publication number
- KR20130098641A KR20130098641A KR1020120020322A KR20120020322A KR20130098641A KR 20130098641 A KR20130098641 A KR 20130098641A KR 1020120020322 A KR1020120020322 A KR 1020120020322A KR 20120020322 A KR20120020322 A KR 20120020322A KR 20130098641 A KR20130098641 A KR 20130098641A
- Authority
- KR
- South Korea
- Prior art keywords
- logical address
- key
- encryption
- host
- mapper
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/22—Safety or protection circuits preventing unauthorised or accidental access to memory cells
-
- 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
-
- 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
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- 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/71—Protecting 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/72—Protecting 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 저장 장치에 관한 것으로, 좀더 자세하게는 암호화 동작을 지원하는 저장 장치 및 그것의 메모리 컨트롤러에 관한 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러는 호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기 및 상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진을 포함한다. 본 발명의 실시 예에 따른 메모리 컨트롤러 및 저장 장치는 마이크로 프로세서와 별도로 암호화 키 공급기를 구비한다. 따라서, 빠른 속도로 암호화 동작 및 복호화 동작을 수행하는 것이 가능하다.
Description
본 발명은 저장 장치에 관한 것으로, 좀더 자세하게는 암호화 동작을 지원하는 저장 장치 및 그것의 메모리 컨트롤러에 관한 것이다.
저장 장치로 주로 사용되는 반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 하드디스크를 대신하여 플래시 메모리가 저장장치로 널리 사용되고 있다.
저장 장치에 대한 사용이 증가함에 따라, 저장 장치에 저장되어 있는 데이터의 보안(security)이 중요해지고 있다. 여기서, 데이터의 보안은 저장 장치에 저장되어 있는 데이터를 허락받지 않은 일반인이 독출하여 외부로 유출하지 못하도록 하는 것이다.
본 발명은 마이크로 프로세서의 부담을 경감함으로써, 빠른 속도로 암호화 동작 및 복호화 동작을 수행할 수 있는 저장 장치 및 그것의 메모리 컨트롤러를 제공하는 데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러는 호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기; 및 상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진을 포함한다.
실시 예로써, 상기 암호화 키 제공기는 논리 주소 범위들에 대응하는 키 인덱스들을 관리하는 키 맵퍼를 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소를 상기 논리 주소 범위들 중 선택된 논리 주소 범위와 비교한다.
실시 예로써, 상기 암호화 키 제공기는 상기 논리 주소 범위들에 대응하는 암호화 키들을 관리하는 키 테이블 모듈을 더 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 선택된 논리 주소 범위에 속하는 경우, 상기 선택된 논리 주소 범위에 대응하는 키 인덱스를 상기 키 테이블 모듈에 전송한다.
실시 예로써, 상기 키 테이블 모듈은 상기 암호화 키들 중 상기 키 인덱스에 대응하는 암호화 키를 상기 암호화 엔진에 제공한다.
실시 예로써, 상기 암호화 엔진 및 상기 암호화 키 공급기를 제어하는 마이크로 프로세서를 더 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 논리 범위 주소들에 속하지 않는 경우, 인터럽트 신호를 상기 마이크로 프로세서에 제공한다.
실시 예로써, 상기 마이크로 프로세서는 상기 인터럽트 신호에 응답하여, 상기 논리 주소를 포함하는 논리 주소 범위를 상기 키 맵퍼에 추가한다.
실시 예로써, 상기 키 맵퍼는 상기 논리 주소 범위들 중 서치 동작이 시작되는 논리 주소 범위의 위치 정보를 저장하는 제 1 레지스터; 및 상기 논리 주소 범위들 중 서치 동작이 수행 중인 논리 주소 범위의 위치 정보를 저장하는 제 2 레지스터를 포함한다.
실시 예로써, 상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하지 않는 경우에, 상기 키 맵퍼는 상기 논리 주소 범위들 중 제 2 논리 주소 범위와 상기 제 1 논리 주소를 비교하고, 상기 제 2 논리 주소 범위의 위치 정보를 상기 제 2 레지스터에 저장한다.
실시 예로써, 상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하고, 상기 제 1 논리 주소를 수신한 이 후에 상기 호스트로부터 제 2 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하는 경우, 상기 키 맵퍼는 상기 제 2 논리 주소를 상기 제 1 논리 주소 범위와 비교한다.
실시 예로써, 상기 키 맵퍼는 상기 논리 주소 범위의 논리 주소 하위 값을 상기 논리 주소와 비교하는 제 1 비교기; 상기 논리 주소 범위의 논리 주소 상위 값을 상기 논리 주소와 비교하는 제 2 비교기; 및 상기 제 1 비교기의 출력 값과 상기 제 2 비교기의 출력 값에 대한 논리 연산을 수행하는 논리 게이트를 포함한다.
본 발명의 실시 예에 따른 저장 장치는 불휘발성 메모리 장치; 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하며, 상기 메모리 컨트롤러는 상기 불휘발성 메모리 장치에 저장될 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치에 저장된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진; 및 호스트로부터 제공되는 논리 주소에 따라, 상기 암호화 엔진에 암호화 키를 제공하는 암호화 키 공급기를 포함한다.
실시 예로써, 상기 암호화 키 공급기는 복수의 키 인덱스 엔트리들을 포함하며, 상기 복수의 키 인덱스 엔트리들은 각각 논리 주소 범위 및 키 인덱스에 대한 정보를 관리하는 키 맵퍼; 및 복수의 암호화 키 엔트리들을 포함하며, 상기 복수의 암호화 키 인덱스들은 각각 상기 키 인덱스에 대응하는 암호화 키에 대한 정보를 관리하는 키 테이블 모듈을 포함한다.
실시 예로써, 상기 키 맵퍼는 호스트로부터 제공되는 논리 주소를 상기 복수의 키 인덱스 엔트리들 중 선택된 키 인덱스 엔트리의 논리 주소 범위와 비교하는 서치 모듈; 및 상기 복수의 키 인덱스 엔트리들 중 상기 서치 모듈에 의하여 서치 동작이 수행 중인 인덱스에 대한 위치 정보를 저장하는 현재 인덱스 레지스터를 포함한다.
실시 예로써, 상기 키 맵퍼는 상기 복수의 키 인덱스 엔트리들 중 서치 동작이 시작된 엔트리에 대한 위치 정보를 저장하는 서치 시작 레지스터를 더 포함한다.
실시 예로써, 상기 복수의 키 인덱스 엔트리들 중 제 1 키 인덱스 엔트리의 논리 주소 범위에 상기 제 1 논리 주소가 속하는 경우, 상기 서치 모듈은 상기 제 1 논리 주소가 제공된 이후에 제공되는 제 2 논리 주소를 상기 복수의 키 인덱스 엔트리들 중 상기 제 1 키 인덱스 엔트리의 논리 주소 범위와 우선적으로 비교한다.
본 발명의 실시 예에 따른 저장 장치 및 메모리 컨트롤러는 마이크로 프로세서와 별도로 암호화 키 공급기를 구비한다. 따라서, 빠른 속도로 암호화 동작 및 복호화 동작을 수행하는 것이 가능하다.
도 1은 본 발명의 실시 예에 따른 암호화 장치를 보여주는 블록도이다.
도 2는 본 발명의 다른 실시 예에 의한 암호화 장치를 보여주는 블록도이다.
도 3은 도 2의 암호화 키 공급기를 좀더 자세히 보여주는 도면이다.
도 4는 도 3의 키 맵퍼를 좀더 자세히 보여주는 도면이다.
도 5는 도 4의 서치 모듈을 구현하는 하나의 예를 보여주는 도면이다.
도 6은 도 4의 키 맵퍼의 동작을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 10은 도 9에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
도 12는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
도 2는 본 발명의 다른 실시 예에 의한 암호화 장치를 보여주는 블록도이다.
도 3은 도 2의 암호화 키 공급기를 좀더 자세히 보여주는 도면이다.
도 4는 도 3의 키 맵퍼를 좀더 자세히 보여주는 도면이다.
도 5는 도 4의 서치 모듈을 구현하는 하나의 예를 보여주는 도면이다.
도 6은 도 4의 키 맵퍼의 동작을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 10은 도 9에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
도 12는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일 또는 유사한 참조번호들이 동일 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위하여 불휘발성 메모리를 사용하는 저장 장치를 한 예로 사용할 것이다. 불휘발성 메모리로서 플래시 메모리가 사용될 수 있으며, MRAM, ReRAM, FRAM, PRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되어 사용될 수도 있다.
또한, 이하에서는, 본 발명의 특징 및 기능을 설명하기 위하여 호스트로부터 논리 블록 주소(Logical Block Address: LBA)가 전달되는 경우를 한 예로 사용할 것이다. 다만, 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 예를 들어, 호스트로부터 논리 페이지 주소(Logical Page Address), 논리 섹터 주소(Logical Sector Address) 등의 논리 주소가 전달될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상, 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명의 기술적 사상에 따른 실시 예들이 첨부된 도면을 참조하여 좀더 자세히 설명된다.
도 1은 본 발명의 실시 예에 따른 암호화 장치(100)를 보여주는 블록도이다. 도 1의 암호화 장치(100)는 외부의 불휘발성 메모리 장치(미도시)를 제어하는 메모리 컨트롤러로 사용되며, 불휘발성 메모리 장치에 저장되는 데이터에 보안성을 제공하기 위한 암호화 엔진(120)을 탑재한다.
도 1을 참조하면, 암호화 장치(100)는 호스트 컨트롤러(110), 암호화 엔진(120), 호스트 다이렉트 메모리 엑세스(130), 버퍼 메모리(140), 불휘발성 메모리 다이렉트 메모리 엑세스(150), 불휘발성 메모리 컨트롤러(160), 그리고 마이크로 프로세서(170)를 포함한다.
호스트 컨트롤러(110)는 호스트와 암호화 장치(100) 사이의 물리적 연결을 제공한다. 즉, 호스트 컨트롤러(110)는 호스트의 버스 포맷(Bus format)에 대응하여 암호화 장치(100)와의 인터페이싱을 제공한다. 호스트의 버스 포맷으로 USB(Universal Serial Bus), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA) 등이 사용될 수 있다.
또한, 호스트 컨트롤러(110)는 호스트가 암호화 장치(100) 및 암호화 장치(100)에 연결된 불휘발성 메모리 장치(미도시)를 하드 디스크 드라이버(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 지원할 수 있다. 예를 들어, 호스트 컨트롤러(110)는 삭제 연산을 숨기기 위한 플래시 변환 계층(Flash Translation Layer: FTL)과 같은 기능을 제공할 수 있다.
암호화 엔진(120)은 호스트로부터 전송된 유저 데이터를 불휘발성 메모리 장치에 안전하게 저장하기 위한 암호화 동작을 수행한다. 또한, 암호화 엔진(120)은 불휘발성 메모리 장치에 암호화되어 저장된 데이터를 호스트에 제공하기 위한 복호화 동작을 수행한다. 암호화 엔진(120)은, 예를 들어, DES(Data Encryption Standard), T-DES(Tripple-Data Encryption Standard), AES(Advanced Encryption Standard) 등에 부합되도록 구현될 수 있다.
호스트 다이렉트 메모리 엑세스(이하, 호스트 DMA)(130)는 호스트와 버퍼 메모리(140) 사이의 데이터 전송을 담당한다. 예를 들어, 호스트 DMA(130)는 암호화 엔진(120)에 의하여 암호화된 데이터를 버퍼 메모리(140)에 전송하거나, 버퍼 메모리(140)에 임시로 저장된 데이터를 암호화 엔진(120)에 전송한다.
버퍼 메모리(140)는 호스트 측으로부터 전송되는 암호화된 데이터 또는 불휘발성 메모리로부터 읽어낸 암호화된 데이터를 임시로 저장하는 버퍼의 역할을 수행한다. 버퍼 메모리(140)는 DRAM, SRAM 등의 휘발성 메모리로 구현될 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 버퍼 메모리(140)는 플래시 메모리, PRAM, ReRAM, FRAM 등의 불휘발성 메모리로도 구현될 수 있다.
불휘발성 메모리 다이렉트 메모리 엑세스(이하, 불휘발성 메모리 DMA)(150)는 버퍼 메모리(140)와 불휘발성 메모리 컨트롤러(160) 사이의 데이터 전송을 담당한다. 예를 들어, 불휘발성 메모리 DMA(150)는 불휘발성 메모리 장치로부터 읽어낸 암호화된 데이터를 버퍼 메모리(140)에 전송한다.
불휘발성 메모리 컨트롤러(160)는 암호화 장치(100)와 외부의 불휘발성 메모리 장치 사이의 인터페이싱을 담당한다. 예를 들어, 불휘발성 메모리 컨트롤러(160)는 불휘발성 메모리 장치와 복수의 채널들을 통하여 연결될 수 있으며, 쓰기 동작 시 호스트 측으로부터 전송된 암호화된 데이터를 불휘발성 메모리 장치로 스캐터링(scattering)한다. 또한, 불휘발성 메모리 컨트롤러(160)는 읽기 동작 시에 불휘발성 메모리 장치에 저장된 암호화된 데이터를 복수의 채널들을 통하여 전송받는다.
마이크로 프로세서(170)는 암호화 장치(100)의 전반적인 동작을 제어한다. 또한, 쓰기 동작 또는 읽기 동작 시에, 마이크로 프로세서(170)는 호스트로부터 논리 블록 주소(LBA)를 전송받고, 해당 논리 블록 주소에 대응하는 암호화 키를 암호화 엔진(120)에 제공한다. 암호화 엔진(120)은 전송받은 암호화 키를 이용하여, 데이터에 대한 암호화 동작 또는 암호화된 데이터에 대한 복호화 동작을 수행한다.
상술한 바와 같이, 도 1의 암호화 장치(100)는 마이크로 프로세서(170)에 의하여 논리 블록 주소에 대응하는 암호화 키를 서치(search)하는 동작이 수행된다. 이 경우, 마이크로 프로세서(170)의 제한된 성능으로 인하여, 읽기 또는 쓰기 동작의 퍼포먼스(performance) 하락이 야기될 수 있다.
또한, 암호화 장치(100)에 연결되는 불휘발성 메몰 장치는 물리적으로 또는 논리적으로 복수의 파티션(partition)으로 구분될 수 있다. 또한, 각 파티션 별로 서로 다른 암호화 알고리즘 및 암호화 키가 사용될 수 있다. 이 경우, 마이크로 프로세서(170)는 호스트로부터 전송된 논리 블록 주소에 해당하는 암호화 키를 각 파티션을 고려하여 서치하여야 한다. 따라서, 마이크로 프로세서(170)에 가중되는 부담으로 인하여, 읽기 또는 쓰기 동작의 퍼포먼스가 더욱 하락할 수 있다.
이하에서는, 마이크로 프로세서의 부담을 경감하고, 읽기 또는 쓰기 퍼포먼스를 향상시킬 수 있는 본 발명의 다른 실시 예가 설명된다.
도 2는 본 발명의 다른 실시 예에 의한 암호화 장치(200)를 보여주는 블록도이다. 도 2의 암호화 장치(200)는 도 1의 암호화 장치(100)와 유사하다. 따라서, 이하에서 유사한 구성요소는 유사한 참조번호를 사용하여 설명되며, 유사한 설명은 생략된다.
도 2의 암호화 장치(200)는 도 1의 암호화 장치(100)에 비하여 암호화 키 공급기(280)를 더 포함한다. 암호화 키 공급기(280)는 호스트 컨트롤러(210)로부터 논리 블록 주소(LBA)를 수신하고, 해당 논리 블록 주소에 대응하는 암호화 알고리즘, 암호화 키 등을 서치하여 암호화 엔진(220)에 제공한다. 암호화 엔진(220)은 전송된 암호화 알고리즘, 암호화 키 등을 이용하여, 암호화 동작 또는 복호화 동작을 수행한다.
도 2의 암호화 장치(200)는 암호화 키 등을 서치하는 암호화 키 공급기(280)를 별도로 구비함으로써, 마이크로 프로세서(270)의 부담을 경감시킬 수 있다. 따라서, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다. 더욱이, 불휘발성 메모리 장치가 복수의 파티션으로 구분되는 경우, 도 1의 암호화 장치(100)에 비하여 더욱 향상된 퍼포먼스가 보장될 수 있다.
도 3은 도 2의 암호화 키 공급기(280)를 좀더 자세히 보여주는 도면이다. 도 3을 참조하면, 암호화 키 공급기(280)는 키 맵퍼(281) 및 키 테이블 모듈(282)을 포함한다.
키 맵퍼(281)는 복수의 엔트리 구조를 갖는 테이블을 포함한다. 키 맵퍼(281)의 테이블은 논리 블록 주소 범위(LBA_RANGE)에 관한 정보 및 이에 대응하는 키 인덱스(Key Index)에 관한 정보를 관리한다. 키 맵퍼(281)는 호스트 컨트롤러(210, 도 1 참조)를 통하여 호스트로부터 요청된 논리 블록 주소(LBA)를 전송받고, 전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 주소 범위(LBA_RANGE)가 있는 지를 판단한다.
전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 범위(LBA_RANGE)가 존재하는 경우, 키 맵퍼(281)는 해당 논리 블록 범위(LBA_RANGE)에 대응하는 키 인덱스(Key Index)를 키 테이블 모듈(282)에 제공한다.
전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 범위(LBA_RANGE)가 존재하지 않는 경우, 키 맵퍼(281)는 인터럽트 신호(Interrupt signal)을 발생하고, 이를 마이크로 프로세서(270, 도 2 참조)에 전달한다. 마이크로 프로세서(270)는 인터럽트 신호에 응답하여, 소정의 동작을 수행한다.
예를 들어, 호스트가 엑세스(access) 하려는 데이터(또는 파티션)의 패스워드(password)와 호스트로부터 입력된 패스워드의 불일치로 인하여, 인터럽트 신호가 발생할 수 있다. 이 경우, 마이크로 프로세서(270)는 호스트 컨트롤러(210)를 통하여 호스트에 어보트 신호(abort signal)을 전송함으로써, 해당 데이터에 대한 접근권한이 없음을 호스트에 통보할 수 있다.
다른 예로, 호스트가 엑세스 하려는 데이터에 대한 접근 권한이 있으나 키 맵퍼(281)에서 관리하지 않고 있기 때문에, 인터럽트 신호가 발생할 수 있다. 이 경우, 마이크로 프로세서(270)는 키 맵퍼(281)에 해당 논리 블록 주소에 대응하는 엔트리(entry)를 추가하는 동작을 수행할 수 있다.
키 테이블 모듈(282)은 복수의 엔트리 구조를 갖는 테이블을 포함한다. 키 테이블 모듈(282)의 테이블은, 예를 들어, 암호화 알고리즘(Algorithm)에 관한 정보, 암호화 키(Cipher Key)에 관한 정보, 트윅 키(Tweak Key)에 관한 정보 등의 암호화 정보를 관리할 수 있다. 다만, 이는 예시적인 것이며, 암호화 방법 및 설계자의 설계 방법에 따라 다양하게 변경될 수 있다.
키 테이블 모듈(282)은 키 맵퍼(281)로부터 키 인덱스(Key Index)를 전송받고, 해당 키 인덱스에 대응하는 암호화 정보를 암호화 엔진(220, 도 2 참조)에 제공한다. 암호화 엔진(220)은 키 테이블 모듈(282)로부터 전송된 암호화 정보를 이용하여, 암호화 동작 또는 복호화 동작을 수행한다.
키 테이블 모듈(282)의 엔트리 수는 키 맵퍼(281)의 엔트리 수와 동일할 수 있으며, 상이할 수도 있다. 예를 들어, 키 테이블 모듈(282)의 엔트리 수가 키 맵퍼(281)의 엔트리 수보다 작은 경우, 키 테이블 모듈(282)의 하나의 엔트리는 키 맵퍼(281)의 두 개 이상의 엔트리를 공유할 수 있다.
한편, 키 맵퍼(281)의 테이블 및 키 테이블 모듈(282)의 테이블은 버퍼 메모리(240)에 저장될 수 있으며, 별도의 메모리에 저장될 수도 있고, 버스(Bus) 상에 위치할 수도 있다. 또한, 키 맵퍼(281)의 테이블 및 키 테이블 모듈(282)의 테이블은 외부의 불휘발성 메모리에 저장될 수 있으며, 파워 업(power-up) 시에 버퍼 메모리(240) 등에 로딩(loading)되는 방식으로 구현될 수도 있다.
도 4는 도 3의 키 맵퍼(281)를 좀더 자세히 보여주는 도면이다. 도 4를 참조하면, 키 맵퍼(281)는 키 테이블(281_1), 서치 시작 레지스터(281_2), 현재 인덱스 레지스터(281_3), 그리고 서치 모듈(281_4)을 포함한다.
키 테이블(281_1)은 복수의 엔트리 구조를 가지며, 논리 블록 범위(LBA_RANGE)에 관한 정보 및 키 인덱스(Key Index)에 관한 정보를 관리한다. 구체적으로, 키 테이블(281_1)의 하나의 엔트리는 논리 블록 범위에 관한 정보로써 논리 블록 하위 값(LBA lower bound) 및 논리 블록 상위 값(LBA upper bound)에 관한 값들을 관리하며, 이에 대응하는 키 인덱스(key Index) 값을 관리한다. 도 4에 도시된 바와 같이, 서로 다른 엔트리가 동일한 키 인덱스를 가질 수도 있다.
서치 시작 레지스터(Search Start Register: SSR)(281_2)는 키 테이블(281_1)의 복수의 엔트리들 중 서치 동작이 시작되는 엔트리의 위치를 기록한다. 예를 들어, 논리 블록 범위가 <0, 1000>에 해당하는 엔트리부터 서치 동작이 시작되는 경우, 서치 시작 레지스터(281_2)는 해당 엔트리에 '0'의 값을 부여하고, 이를 저장한다.
현재 인덱스 레지스터(Current Index Register:CIR)(281_3)는 키 테이블(281_1)의 복수의 엔트리들 중 현재 서치 동작이 수행되고 있는 엔트리의 위치를 기록한다. 예를 들어, 논리 블록 범위가 <0, 1000>에 해당하는 엔트리에 대한 서치 동작이 최초로 수행 중인 경우, 현재 인덱스 레지스터(281_3)는 해당 엔트리에 서치 시작 레지스터(281_2)의 값과 동일한 값인 '0'을 부여하고, 이를 저장한다.
만약, 해당 엔트리가 호스트로부터 전송된 논리 블록 주소(LBA)를 포함하지 않는 경우, 그 다음 엔트리(이하, 제 2 엔트리)에 대한 서치 동작이 수행되며, 현재 인덱스 레지스터(281_3)는 제 2 엔트리에 '1'의 값을 부여하고, 이를 저장한다. 동일한 방식으로, 현재 인덱스 레지스터(281_3)는 각 엔트리에 대하여 서치 동작이 수행될 때마다 '1' 씩 증가하는 값을 부여하고, 이를 저장한다.
만약, 키 테이블(281_1)의 모든 엔트리들에 대한 서치 동작이 수행되어 더 이상의 엔트리가 남아있지 않은 경우, 현재 인덱스 레지스터(281_3)는 다시 최초로 서치 동작이 수행된 엔트리에 부여된 값과 동일한 값인 '0'을 다시 저장한다.
서치 모듈(281_4)은 호스트로부터 논리 블록 주소(LBA)를 전달받고, 키 테이블(281_1)의 선택된 엔트리에서 관리되는 논리 블록 하위 값(LBA lower bound), 논리 블록 상위 값(LBA upper bound) 및 키 인덱스(Key Index)를 전달받는다. 서치 모듈(281_4)은 호스트로부터 전달받은 논리 블록 주소(LBA)가 선택된 엔트리의 논리 블록 범위에 속하는 지를 판단하는 서치 동작을 수행한다.
호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 선택된 엔트리의 논리 블록 범위에 속하지 않는 경우, 서치 모듈(281_4)은 다음 엔트리에 대한 서치 동작을 수행한다.
만약, 호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 선택된 엔트리의 논리 블록 범위에 속한다면, 서치 모듈(281_4)은 해당 엔트리를 히트(Hit) 엔트리로 결정하고, 히트 엔트리의 키 인덱스(Key Index)를 키 테이블 모듈(282, 도 3 참조)에 전달한다.
만약, 호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 모든 엔트리에 속하지 않는다면(즉, 서치 시작 레지스터(281_2)에 저장된 값과 현재 인덱스 레지스터(281_3)에 저장된 값이 동일하다면), 서치 모듈(281_4)은 해당 논리 블록 주소(LBA)를 미스(Miss)로 결정하고, 인터럽트 신호(Interrupt Signal)를 마이크로 프로세서(270)에 전달한다.
한편, 호스트로부터 전송되는 요청 및 논리 블록 주소(LBA)는 시간 및 공간의 지역성(temporal and spartial locality)을 갖는다. 따라서, 현재 요청된 논리 블록 주소에 대응하는 엔트리는 이전에 히트(Hit)로 판단된 엔트리와 시간적 공간적 유사성을 가질 수 있다. 따라서, 현재 요청된 논리 블록 주소에 대응하는 엔트리에 대한 서치 동작을 수행하는 경우, 서치 시작 레지스터(281_2)는 서치가 시작되는 엔트리를 이전에 히트로 판단된 엔트리로 지정할 수 있다. 따라서, 서치에 소요되는 시간이 감소 될 수 있다.
또한, 이전에 히트로 판단된 엔트리를 이용하여 암호화 엔진(220, 도 2 참조)에서 암호화 또는 복호화하는 도중에, 현재의 명령 및 논리 블록 주소가 수신될 수 있다. 이 경우, 이전에 히트로 판단된 엔트리가 소실된다면, 암호화 또는 복호화 동작의 에러가 초래될 수 있다. 특히, 키 테이블(281_1)에서 관리하는 엔트리의 수가 소정 숫자로 제한되는 경우, 이전에 히트로 판단된 엔트리가 소실될 가능성이 있다. 이러한 위험을 방지하기 위하여, 암호화 키 공급기(280)는 히트로 판단된 엔트리에 관한 정보를 마이크로 프로세서(270)에 제공함으로써, 해당 엔트리가 키 테이블(281_1)에서 삭제되지 않도록 할 수 있다.
도 5는 도 4의 서치 모듈(281_4)을 구현하는 하나의 예를 보여주는 도면이다. 도 5를 참조하면, 서치 모듈(281_)은 두 개의 비교기 및 하나의 앤드 게이트를 사용하여, 히트(Hit) 또는 미스(Miss)를 결정하는 동작을 수행하도록 구현될 수 있다.
제 1 비교기(1)는 논리 블록 하위 값(LBA lower bound) 및 논리 블록 주소(LBA)의 값의 크기를 비교한다. 논리 블록 주소의 값이 논리 블록 하위 값보다 크거나 같으면, 제 1 비교기(1)는 '1'을 출력한다. 논리 블록 주소의 값이 논리 블록 하위 값보다 작으면, 제 1 비교기(1)는 '0'을 출력한다.
제 2 비교기(2)는 논리 블록 상위 값(LBA upper bound) 및 논리 블록 주소(LBA)의 값의 크기를 비교한다. 논리 블록 주소의 값이 논리 블록 상위 값보다 작으면, 제 2 비교기(2)는 '1'을 출력한다. 논리 블록 주소의 값이 논리 블록 상위 값보다 크거나 같으면, 제 2 비교기(2)는 '0'을 출력한다.
앤드 게이트(3)는 제 1 비교기(1) 및 제 2 비교기(2)의 출력 값들을 수신하고, 이에 대한 논리 연산을 수행한다. 앤드 게이트(3)의 논리 연산 결과가 '1'인 경우, 이는 히트(Hit)를 의미한다. 앤드 게이트(3)의 논리 연산 결과가 '0'인 경우, 이는 미스(Miss)를 의미한다.
도 6은 도 4의 키 맵퍼(281)의 동작을 보여주는 순서도이다.
S110 단계에서, 키 맵퍼(281)는 호스트 컨트롤러(210, 도 2 참조)를 통하여 논리 블록 주소(LBA)를 수신한다.
S120 단계에서, 키 맵퍼(281)의 현재 인덱스 레지스터(281_3)가 첫 번째 값으로 초기화된다. 예를 들어, 현재 인덱스 레지스터(281_3)에 저장된 값은 '0'의 값으로 초기화된다.
S130 단계에서, 서치 동작이 시작되는 키 테이블(281_1)의 엔트리의 위치가 서치 시작 레지스터(281_2)에 의하여 표시된다. 예를 들어, 현재 인덱스 레지스터(281_3)에 저장된 '0'의 값이 서치 시작 레지스터(281_2)에 백업(back up)되며, 현재 인덱스 레지스터(281_3)가 가리키는 엔트리가 서치 시작 레지스터(281_2)에 백업된다.
S140 단계에서, 서치 모듈(281_4)은 논리 블록 주소(LBA)를 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)와 비교하고, S150 단계에서 서치 모듈(281_4)은 논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하는 지를 판단한다.
논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하는 경우, 서치 모듈(281_4)은 선택된 엔트리의 키 인덱스(Key Index) 값을 키 테이블 모듈(282, 도 3 참조)에 전달한다(S160 단계).
논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하지 않는 경우, S170 단계에서, 서치 모듈(281_4)은 키 테이블(281_1)의 인덱스들 중 다음 인덱스를 선택하고, 현재 인덱스 레지스터(281_3)에 저장된 값을 '1' 만큼 증가시킨다. 이 후, S180 단계에서, 서치 모듈(281_4)은 현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하는 지를 판단한다.
현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하는 경우, 서치 모듈(281_4)은 미스(Miss)로 판단하고, 인터럽트 신호(Interrupt Signal)를 마이크로 프로세서(270)에 제공한다(S190 단계).
현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하지 않는 경우, 서치 모듈(281_4)은 선택된 인덱스와 논리 블록 주소의 값을 비교하는 동작을 수행한다.
도 2 내지 도 6을 참조하여 설명된 바와 같이, 도 2의 암호화 장치(200)는 암호화 엔진(200)에 암호화 알고리즘, 암호화 키 등을 제공하는 암호화 키 공급기(280)를 포함한다. 도 2의 암호화 장치(200)는 암호화 키 등을 제공하는 암호화 키 공급기(280)를 별도로 구비함으로써, 마이크로 프로세서(270)의 부담을 경감시킬 수 있다. 따라서, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 2의 암호화 장치(200)는 다양한 분야에 적용 및 응용될 수 있다. 이하에서는 도 2의 암호화 장치(200)의 다양한 적용 예 및 응용 예들이 설명된다.
도 7은 본 발명의 실시 예에 따른 저장 장치(1000)를 보여주는 블록도이다. 도 7을 참조하면, 저장 장치(1000)는 메모리 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함한다. 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)의 읽기 동작, 쓰기 동작, 소거 동작 등을 제어한다. 또한, 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 포함한다. 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 이용하여 호스트로부터 전송된 데이터를 암호화하여 불휘발성 메모리 장치(1200)에 저장한다. 또한, 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 이용하여 불휘발성 메모리 장치(1200)에 저장된 암호화된 데이터를 복호화하여 호스트에 제공한다. 즉, 도 7에 도시된 바와 같이, 도 2의 암호화 장치(200, 도 1 참조)는 불휘발성 메모리 장치(1200)를 제어하기 위한 메모리 컨트롤러(1100)로 사용될 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110), 호스트 접속 유닛(2120), 그리고 디램(2130)을 포함한다.
호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(2120)을 통해 메모리 카드(2200)로 전송한다. 디램(2130)은 호스트(2100)의 메인 메모리이다.
메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(2230)를 포함한다. 카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(2230)에 저장한다. 플래시 메모리(2230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 8에 도시된 메모리 카드 시스템(2000)은 카드 컨트롤러(2220) 내에 암호화 엔진 및 암호화 엔진에 암호화 키 등을 공급하기 위한 암호화 키 공급기를 포함할 수 있다. 암호화 키 등을 제공하는 암호화 키 공급기를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 9를 참조하면, SSD 시스템(3000)은 호스트(3100)와 SSD(3200)를 포함한다. 호스트(3100)는 호스트 인터페이스(4111), 호스트 컨트롤러(3120), 그리고 디램(3130)을 포함한다.
호스트(3100)는 SSD(3200)에 데이터를 쓰거나, SSD(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(4111)를 통해 SSD(3200)로 전송한다. 디램(3130)은 호스트(3100)의 메인 메모리이다.
SSD(3200)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 3221)를 통해 전원을 입력받는다. SSD(3200)는 복수의 불휘발성 메모리(3201~320n), SSD 컨트롤러(3210), 그리고 보조 전원 장치(3220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(3201~320n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(3201~320n)는 SSD(3200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(3201~320n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(3210)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 10를 참조하여 상세하게 설명된다.
보조 전원 장치(3220)는 전원 커넥터(3221)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
도 10은 도 9에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, SSD 컨트롤러(3210)는 NVM 인터페이스(3211), 호스트 인터페이스(3212), 암호화 엔진(3213), 제어 유닛(3214), 에스램(3215), DRAM(3216), 그리고 암호화 키 공급기(3217)를 포함한다.
NVM 인터페이스(3211)는 호스트(3100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리(3201~320n)로부터 읽은 데이터를 호스트 인터페이스(3212)를 경유하여 호스트(3100)로 전달한다.
호스트 인터페이스(3212)는 호스트(3100)의 프로토콜에 대응하여 SSD(3200)와의 인터페이싱을 제공한다. 호스트 인터페이스(3212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(3100)와 통신할 수 있다. 또한, 호스트 인터페이스(3212)는 호스트(3100)가 SSD(3200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
에스램(3215)은 불휘발성 메모리(3201~320n)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(3215)은 호스트(3100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(3215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(3220)를 이용하여 불휘발성 메모리(3201~320n)에 저장될 수 있다.
DRAM(3216)은 호스트로부터 전송된 데이터 또는 불휘발성 메모리(3201~320n)로부터 전송된 데이터를 임시로 저장한다. DRAM(3216)은 SSD 컨트롤러(3210) 내부에 위치한다. 다만, 이는 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, DRAM(3216)은 SSD 컨트롤러(3210)의 위부에 위치하도록 구현될 수도 있다. 또한, 도 9 및 도 10에서 SRAM(3215) 및 DRAM(3216)은 불휘발성 메모리로 대체될 수도 있다. 즉, 본 발명의 다른 실시 예에 따른 SSD 시스템(3000)은 SRAM(3215) 및 DRAM(3216)의 역할을 플래시 메모리, PRAM, RRAM, MRAM 등의 불휘발성 메모리가 수행하도록 구현될 수도 있다.
암호화 엔진(3213)은 데이터에 대한 암호화 동작 또는 복호화 동작을 수행한다. 암호화 엔진(3213)은, 예를 들어, DES(Data Encryption Standard), T-DES(Tripple-Data Encryption Standard), AES(Advanced Encryption Standard) 등에 부합되도록 구현될 수 있다.
암호화 키 공급기(3217)는 암호화 엔진(3213)에 암호화 키 등을 공급하기 위하여 구비된다. 암호화 키 등을 제공하는 암호화 키 공급기(3217)를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(4000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 11을 참조하면, 전자 장치(4000)는 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(4250), 중앙처리장치(4300), 디램(4400), 그리고 사용자 인터페이스(4500)를 포함한다. 메모리 시스템(4100)은 플래시 메모리(4110) 및 메모리 컨트롤러(4120)를 포함한다. 메모리 시스템(4100)은 전자 장치(4000)에 내장될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(4000)는 암호화 엔진 및 암호화 엔진에 암호화 키 등을 공급하기 위한 암호화 키 공급기를 포함할 수 있다. 암호화 키 등을 제공하는 암호화 키 공급기를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 2차원 구조를 갖는 플래시 메모리뿐만 아니라, 3차원 구조를 갖는 플래시 메모리에도 적용될 수 있다.
도 12는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 12를 참조하면, 플래시 메모리(5000)는 3차원 셀 어레이(5110), 데이터 입출력 회로(5120), 어드레스 디코더(5130), 그리고 제어 로직(5140)을 포함한다.
3차원 셀 어레이(5110)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(3100)의 소거 단위를 이룬다.
데이터 입출력 회로(5120)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(5110)와 연결된다. 데이터 입출력 회로(5120)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(5110)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(5130)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(5110)와 연결된다. 어드레스 디코더(5130)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(5140)은 플래시 메모리(5000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(5140)은 프로그램 동작 시에, 어드레스 디코더(5130)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(5120)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 13을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 13을 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 13에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 14를 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL1~GSL3)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 14를 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀(이하, 페이지라 함)을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 선택 라인(SSL1, GSL1)이 선택된다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
110, 210: 호스트 컨트롤러
120, 220: 암호화 엔진
130, 230: 호스트 DMA
140, 240: 버퍼 메모리
150, 250: 불휘발성 메모리 DMA
160, 260: 불휘발성 메모리 컨트롤러
170, 270: 마이크로 프로세서
280: 암호화 키 제공기
120, 220: 암호화 엔진
130, 230: 호스트 DMA
140, 240: 버퍼 메모리
150, 250: 불휘발성 메모리 DMA
160, 260: 불휘발성 메모리 컨트롤러
170, 270: 마이크로 프로세서
280: 암호화 키 제공기
Claims (10)
- 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러에 있어서:
호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기; 및
상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진을 포함하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 암호화 키 제공기는 논리 주소 범위들에 대응하는 키 인덱스들을 관리하는 키 맵퍼를 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소를 상기 논리 주소 범위들 중 선택된 논리 주소 범위와 비교하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 암호화 키 제공기는 상기 논리 주소 범위들에 대응하는 암호화 키들을 관리하는 키 테이블 모듈을 더 포함하며,
상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 선택된 논리 주소 범위에 속하는 경우, 상기 선택된 논리 주소 범위에 대응하는 키 인덱스를 상기 키 테이블 모듈에 전송하는 메모리 컨트롤러. - 제 3 항에 있어서,
상기 키 테이블 모듈은 상기 암호화 키들 중 상기 키 인덱스에 대응하는 암호화 키를 상기 암호화 엔진에 제공하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 암호화 엔진 및 상기 암호화 키 공급기를 제어하는 마이크로 프로세서를 더 포함하며,
상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 논리 범위 주소들에 속하지 않는 경우, 인터럽트 신호를 상기 마이크로 프로세서에 제공하는 메모리 컨트롤러. - 제 5 항에 있어서,
상기 마이크로 프로세서는 상기 인터럽트 신호에 응답하여, 상기 논리 주소를 포함하는 논리 주소 범위를 상기 키 맵퍼에 추가하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 키 맵퍼는 상기 논리 주소 범위들 중 서치 동작이 시작되는 논리 주소 범위의 위치 정보를 저장하는 제 1 레지스터; 및
상기 논리 주소 범위들 중 서치 동작이 수행 중인 논리 주소 범위의 위치 정보를 저장하는 제 2 레지스터를 포함하는 메모리 컨트롤러. - 제 7 항에 있어서,
상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하지 않는 경우에, 상기 키 맵퍼는 상기 논리 주소 범위들 중 다음 논리 주소 범위와 상기 제 1 논리 주소를 비교하고, 상기 다음 논리 주소 범위의 위치 정보를 상기 제 2 레지스터에 저장하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하고, 상기 제 1 논리 주소를 수신한 이 후에 상기 호스트로부터 제 2 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하는 경우, 상기 키 맵퍼는 상기 제 2 논리 주소를 상기 제 1 논리 주소 범위와 비교하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 키 맵퍼는 상기 논리 주소 범위의 논리 주소 하위 값을 상기 논리 주소와 비교하는 제 1 비교기;
상기 논리 주소 범위의 논리 주소 상위 값을 상기 논리 주소와 비교하는 제 2 비교기; 및
상기 제 1 비교기의 출력 값과 상기 제 2 비교기의 출력 값에 대한 논리 연산을 수행하는 논리 게이트를 포함하는 메모리 컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020322A KR101869059B1 (ko) | 2012-02-28 | 2012-02-28 | 저장 장치 및 그것의 메모리 컨트롤러 |
US13/674,174 US9049005B2 (en) | 2012-02-28 | 2012-11-12 | Storage device and memory controller thereof |
US14/700,936 US9378396B2 (en) | 2012-02-28 | 2015-04-30 | Storage device and memory controller thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020322A KR101869059B1 (ko) | 2012-02-28 | 2012-02-28 | 저장 장치 및 그것의 메모리 컨트롤러 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130098641A true KR20130098641A (ko) | 2013-09-05 |
KR101869059B1 KR101869059B1 (ko) | 2018-06-20 |
Family
ID=49002887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120020322A KR101869059B1 (ko) | 2012-02-28 | 2012-02-28 | 저장 장치 및 그것의 메모리 컨트롤러 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9049005B2 (ko) |
KR (1) | KR101869059B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015047266A1 (en) * | 2013-09-26 | 2015-04-02 | Intel Corporation | Block storage apertures to persistent memory |
KR20220015481A (ko) * | 2015-03-02 | 2022-02-08 | 삼성전자주식회사 | 집적 처리를 갖는 솔리드 스테이트 드라이브 멀티 카드 어댑터 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101869059B1 (ko) * | 2012-02-28 | 2018-06-20 | 삼성전자주식회사 | 저장 장치 및 그것의 메모리 컨트롤러 |
US9245140B2 (en) | 2013-11-15 | 2016-01-26 | Kabushiki Kaisha Toshiba | Secure data encryption in shared storage using namespaces |
EP3286870B8 (en) | 2015-04-24 | 2022-11-16 | 7Tunnels, Inc. | Random cipher pad cryptography |
US9811477B2 (en) * | 2015-10-07 | 2017-11-07 | Sandisk Technologies Llc | Memory system and method for writing data to a block of an erased page |
US11126565B2 (en) | 2016-06-27 | 2021-09-21 | Hewlett Packard Enterprise Development Lp | Encrypted memory access using page table attributes |
US10229047B2 (en) | 2016-08-06 | 2019-03-12 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using cache filtering |
US10474831B1 (en) * | 2016-11-28 | 2019-11-12 | Amazon Technologies, Inc. | Large network attached storage encryption |
CN109558347B (zh) * | 2017-09-27 | 2023-04-28 | 成都忆芯科技有限公司 | PCIe控制器与使用PCIe控制器的密钥更新 |
US10715321B2 (en) | 2017-12-22 | 2020-07-14 | Micron Technology, Inc. | Physical unclonable function using message authentication code |
US10906506B2 (en) | 2017-12-28 | 2021-02-02 | Micron Technology, Inc. | Security of user data stored in shared vehicles |
CN110007849B (zh) * | 2018-01-04 | 2021-03-12 | 澜起科技股份有限公司 | 存储器控制器以及用于对存储模块进行访问控制的方法 |
US10983711B2 (en) * | 2018-01-04 | 2021-04-20 | Montage Technology Co., Ltd. | Memory controller, method for performing access control to memory module |
US10936212B2 (en) * | 2018-01-04 | 2021-03-02 | Montage Technology Co., Ltd. | Memory controller, method for performing access control to memory module |
US10924277B2 (en) * | 2018-01-25 | 2021-02-16 | Micron Technology, Inc. | Certifying authenticity of stored code and code updates |
US10778661B2 (en) | 2018-04-27 | 2020-09-15 | Micron Technology, Inc. | Secure distribution of secret key using a monotonic counter |
GB201807257D0 (en) * | 2018-05-02 | 2018-06-13 | Nordic Semiconductor Asa | Cryptographic key distribution |
US11301370B2 (en) * | 2020-03-24 | 2022-04-12 | Samsung Electronics Co., Ltd. | Parallel overlap management for commands with overlapping ranges |
CN113448891B (zh) * | 2020-03-25 | 2023-07-21 | 澜起科技股份有限公司 | 存储器控制器以及用于监测对存储模块的访问的方法 |
US11704444B2 (en) * | 2021-03-08 | 2023-07-18 | Micron Technology, Inc. | Managing encryption keys per logical block on a persistent memory device |
CN116932422A (zh) * | 2022-03-30 | 2023-10-24 | 华为技术有限公司 | 数据处理方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136606A1 (en) * | 2005-12-08 | 2007-06-14 | Makio Mizuno | Storage system with built-in encryption function |
KR20090110335A (ko) * | 2007-02-12 | 2009-10-21 | 소니 가부시끼 가이샤 | 저장된 키 테이블을 사용한 패키지화된 매체 암호화 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5687237A (en) | 1995-11-13 | 1997-11-11 | Pitney Bowes Inc. | Encryption key management system for an integrated circuit |
US6880064B1 (en) * | 2000-06-21 | 2005-04-12 | Mosaid Technologies, Inc. | Method and apparatus for physical width expansion of a longest prefix match lookup table |
US6986052B1 (en) | 2000-06-30 | 2006-01-10 | Intel Corporation | Method and apparatus for secure execution using a secure memory partition |
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
US20070061597A1 (en) | 2005-09-14 | 2007-03-15 | Micky Holtzman | Secure yet flexible system architecture for secure devices with flash mass storage memory |
US7877603B2 (en) | 2006-09-07 | 2011-01-25 | International Business Machines Corporation | Configuring a storage drive to communicate with encryption and key managers |
JP4877962B2 (ja) * | 2006-10-25 | 2012-02-15 | 株式会社日立製作所 | 暗号化機能を備えたストレージサブシステム |
US20090196417A1 (en) | 2008-02-01 | 2009-08-06 | Seagate Technology Llc | Secure disposal of storage data |
US7522723B1 (en) | 2008-05-29 | 2009-04-21 | Cheman Shaik | Password self encryption method and system and encryption by keys generated from personal secret information |
US8266449B2 (en) | 2009-03-31 | 2012-09-11 | Lenovo (Singapore) Pte. Ltd. | Security for storage devices |
US20130173931A1 (en) * | 2011-12-30 | 2013-07-04 | Yonatan Tzafrir | Host Device and Method for Partitioning Attributes in a Storage Device |
KR101869059B1 (ko) * | 2012-02-28 | 2018-06-20 | 삼성전자주식회사 | 저장 장치 및 그것의 메모리 컨트롤러 |
-
2012
- 2012-02-28 KR KR1020120020322A patent/KR101869059B1/ko active IP Right Grant
- 2012-11-12 US US13/674,174 patent/US9049005B2/en active Active
-
2015
- 2015-04-30 US US14/700,936 patent/US9378396B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136606A1 (en) * | 2005-12-08 | 2007-06-14 | Makio Mizuno | Storage system with built-in encryption function |
KR20090110335A (ko) * | 2007-02-12 | 2009-10-21 | 소니 가부시끼 가이샤 | 저장된 키 테이블을 사용한 패키지화된 매체 암호화 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015047266A1 (en) * | 2013-09-26 | 2015-04-02 | Intel Corporation | Block storage apertures to persistent memory |
KR20220015481A (ko) * | 2015-03-02 | 2022-02-08 | 삼성전자주식회사 | 집적 처리를 갖는 솔리드 스테이트 드라이브 멀티 카드 어댑터 |
US11650764B2 (en) | 2015-03-02 | 2023-05-16 | Samsung Electronics Co., Ltd. | Solid state drive multi-card adapter with integrated processing |
US11775224B2 (en) | 2015-03-02 | 2023-10-03 | Samsung Electronics Co., Ltd. | Solid state drive multi-card adapter with integrated processing |
Also Published As
Publication number | Publication date |
---|---|
US9378396B2 (en) | 2016-06-28 |
US20130223628A1 (en) | 2013-08-29 |
KR101869059B1 (ko) | 2018-06-20 |
US20150235056A1 (en) | 2015-08-20 |
US9049005B2 (en) | 2015-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101869059B1 (ko) | 저장 장치 및 그것의 메모리 컨트롤러 | |
US10509575B2 (en) | Storage device and operating method of storage device | |
JP6193629B2 (ja) | 不揮発性メモリセルの物理的特性を利用して乱数を生成する方法 | |
US9032138B2 (en) | Storage device based on a flash memory and user device including the same | |
US10387064B2 (en) | Storage device, host communicating with the storage device, and electronic device including the storage device | |
US10409715B2 (en) | Memory controller, nonvolatile memory system, and operating method thereof | |
US20140129761A1 (en) | Non-volatile memory device and host device configured to communication with the same | |
US20160154594A1 (en) | Method for managing address map for fast open operation and memory system | |
US20140032935A1 (en) | Memory system and encryption method in memory system | |
KR20190099693A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR20130019567A (ko) | 마이그레이션 관리자를 포함하는 메모리 시스템 | |
KR20130098642A (ko) | 저장 장치 | |
KR20130128694A (ko) | 불휘발성 메모리 장치 및 그것의 프로그램 방법 | |
KR20140020057A (ko) | 키 제어 로직을 포함하는 플래시 메모리 장치 및 그것의 암호화 키 저장 방법 | |
US9430374B2 (en) | Non-volatile memory system and host configured to communicate with the same | |
KR20130128685A (ko) | 불휘발성 메모리 장치 및 그것의 프로그램 방법 | |
CN114255813A (zh) | 存储装置、主机装置、包括两者的电子装置及其操作方法 | |
US9811477B2 (en) | Memory system and method for writing data to a block of an erased page | |
CN114254402A (zh) | 数据存储装置及其操作方法 | |
KR20220020636A (ko) | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 | |
US11556252B2 (en) | Storage device and method of operating the same | |
CN113377691B (zh) | 计算***及其操作方法 | |
US11822800B2 (en) | Storage system including host and storage device and operation method thereof | |
US20230289071A1 (en) | Electronic device and method of operating the same | |
US20240119009A1 (en) | Memory controller with improved mapping information management, memory system including the same, and operating method of memory controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |