KR102377365B1 - 호스트 기반 플래시 메모리 유지관리 기술 - Google Patents
호스트 기반 플래시 메모리 유지관리 기술 Download PDFInfo
- Publication number
- KR102377365B1 KR102377365B1 KR1020217017849A KR20217017849A KR102377365B1 KR 102377365 B1 KR102377365 B1 KR 102377365B1 KR 1020217017849 A KR1020217017849 A KR 1020217017849A KR 20217017849 A KR20217017849 A KR 20217017849A KR 102377365 B1 KR102377365 B1 KR 102377365B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- host
- command
- flash memory
- physical address
- Prior art date
Links
- 238000012423 maintenance Methods 0.000 title claims description 24
- 238000005516 engineering process Methods 0.000 title description 6
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000004044 response Effects 0.000 claims description 58
- 238000013507 mapping Methods 0.000 claims description 44
- 238000007726 management method Methods 0.000 description 33
- 238000012545 processing Methods 0.000 description 20
- 238000013500 data storage Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/0629—Configuration or reconfiguration of 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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
플래시 메모리 디바이스의 호스트 기반 관리를 가능하게 하기 위한 디바이스 및 기술이 본 명세서에 개시된다. 특정의 예들에서, 메모리 기록 정보가 메모리 디바이스에서 암호화될 수 있고 메모리 디바이스 관리 통계를 업데이트하고 유지 관리하기 위해 호스트에 제공될 수 있다.
Description
우선권 출원
본 출원은 2018년 12월 21일에 출원된 미국 출원 제16/230,313호의 이익을 주장하며, 이 출원은 그 전문이 본 명세서에 참조로 통합된다.
기술 분야
본 개시는 메모리, 더 특별하게는 호스트 기반 플래시 메모리 유지관리 기술을 논의한다.
메모리 디바이스는 일반적으로 컴퓨터 또는 기타 전자 디바이스의 내부, 반도체, 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 매우 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지 관리하는 데 전력이 필요할 수 있으며, 특히 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기화 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지하여 영구 데이터를 제공할 수 있으며, 특히 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거가능 프로그래밍가능 ROM(EEPROM), 소거가능 프로그래밍가능 ROM(EPROM) 및 위상 변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤-액세스 메모리(RRAM), 자기저항 랜덤 액세스 메모리(MRAM), 3D XPoint™ 메모리와 같은 저항 가변 메모리를 포함할 수 있다.
메모리 셀은 일반적으로 매트릭스 또는 어레이로 배열된다. 다수의 매트릭스 또는 어레이를 하나의 메모리 디바이스로 조합할 수 있으며, 다수의 디바이스를 조합하여 고체 상태 드라이브(SSD), 유니버셜 플래시 저장(UFS™) 디바이스, 멀티미디어카드(MMC) 고체 상태 저장 디바이스, 임베디드 MMC 디바이스(eMMC™) 등과 같은, 메모리 시스템의 저장 볼륨을 형성할 수 있다.
메모리 시스템은 메모리 디바이스를 동작시키거나 외부 시스템과 인터페이스하기 위해 논리 기능을 수행하는 하나 이상의 프로세서 또는 다른 메모리 컨트롤러를 포함할 수 있다. 메모리 매트릭스 또는 어레이는 다수의 물리 페이지로 구조화된 다수의 메모리 셀 블록을 포함할 수 있다. 메모리 시스템은 메모리 디바이스와 호스트 사이에서 데이터(예를 들어, 사용자 데이터 및 관련된 무결성 데이터, 예컨대, 에러 데이터 및 어드레스 데이터 등)를 전송하기 위한 판독 또는 기록 동작, 메모리 디바이스에서 데이터를 소거하기 위한 소거 동작과 같은, 메모리 동작과 관련하여 호스트로부터 커맨드를 수신하거나, 하나 이상의 다른 메모리 동작을 수행할 수 있다.
메모리는, 예를 들어, 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 휴대폰, MP3 플레이어와 같은 휴대용 음악 플레이어, 무비 플레이어, 및 기타 전자 디바이스를 포함하는, 광범위한 전자 애플리케이션을 위한 휘발성 및 비휘발성 데이터 저장소로 활용된다. 메모리 셀은 어레이로 배열될 수 있으며, 어레이는 메모리 디바이스에서 사용된다.
많은 전자 디바이스는 다음 몇몇 주 구성요소를 포함한다: 호스트 프로세서(예를 들어, 중앙 처리 장치(CPU) 또는 기타 주 프로세서); 주 메모리(예를 들어, 하나 이상의 휘발성 또는 비휘발성 메모리 디바이스, 예컨대, 동적 RAM(DRAM), 모바일 또는 저전력 2배속 동기식 DRAM(DDR SDRAM) 등); 및 저장 디바이스(예를 들어, 비휘발성 메모리(NVM) 디바이스, 예컨대, 플래시 메모리, 판독 전용 메모리(ROM), SSD, MMC, 또는 기타 메모리 카드 구조 또는 어셈블리, 또는 휘발성 및 비휘발성 메모리의 조합 등). 특정의 예들에서, 전자 디바이스는 사용자 인터페이스(예를 들어, 디스플레이, 터치스크린, 키보드, 하나 이상의 버튼 등), 그래픽 처리 유닛(GPU), 전력 매니지먼트 회로, 기저대역 프로세서 또는 하나 이상의 트랜시버 회로 등을 포함할 수 있다.
플래시 메모리 디바이스의 호스트 기반 관리를 허용하는 디바이스 및 기술이 본 명세서에 개시된다. 특정의 예들에서, 메모리 기록 정보는 메모리 디바이스에서 암호화될 수 있고 메모리 디바이스 관리 통계를 업데이트하고 유지 관리하기 위해 호스트에 제공될 수 있다.
이 섹션은 본 특허 출원의 발명 주제에 대한 개요를 제공하기 위한 것이다. 본 발명에 대한 배타적이거나 철저한 설명을 제공하려는 의도는 아니다. 상세한 설명은 본 특허 출원에 대한 추가 정보를 제공하기 위해 포함된다.
도면에서, 반드시 축척에 맞게 작도된 것은 아니며, 동일한 번호는 다른 각도(view)에서 유사한 구성요소를 설명할 수 있다. 서로 다른 문자 접미사를 가진 동일한 번호는 유사한 구성요소의 서로 다른 경우를 나타낼 수 있다. 도면은 일반적으로 본 명세서에서 논의된 다양한 실시형태를, 제한하는 방식이 아니라 예시의 방식으로 예시한다.
도 1은 본 발명 주제의 하나 이상의 예가 구현될 수 있는 메모리 디바이스를 포함하는 환경의 예시적인 시스템을 도시한다.
도 2는 일반적으로 호스트 상주 FTL의 양상을 이용하여 플래시 메모리 시스템에서 메모리 동작을 구현하기 위한 예시적인 방법의 흐름도를 도시한다.
도 3은 일반적으로 호스트 상주 FTL 동작을 위한 호스트 매핑 테이블 데이터를 효율적으로 모니터링하고 업데이트하기 위한 예시적인 방법의 흐름도를 도시한다.
도 4는 일반적으로 호스트에서 메모리 시스템의 플래시 메모리 유지관리 정보를 유지 관리하기 위한 예시적인 방법의 흐름도를 도시한다.
도 5는 일반적으로 메모리 디바이스에서 호스트로부터 관리 커맨드를 수신하기 위한 예시적인 방법의 흐름도를 도시한다.
도 6은 일반적으로 플래시 메모리 디바이스를 유지 관리하기 위해 호스트를 이용하는 예시적인 방법의 흐름도를 도시한다.
도 7은 본 명세서에서 설명한 임의의 하나 이상의 기술(예를 들어, 방법론)이 수행할 수 있는 예시적인 머신의 블록도를 도시한다.
도 1은 본 발명 주제의 하나 이상의 예가 구현될 수 있는 메모리 디바이스를 포함하는 환경의 예시적인 시스템을 도시한다.
도 2는 일반적으로 호스트 상주 FTL의 양상을 이용하여 플래시 메모리 시스템에서 메모리 동작을 구현하기 위한 예시적인 방법의 흐름도를 도시한다.
도 3은 일반적으로 호스트 상주 FTL 동작을 위한 호스트 매핑 테이블 데이터를 효율적으로 모니터링하고 업데이트하기 위한 예시적인 방법의 흐름도를 도시한다.
도 4는 일반적으로 호스트에서 메모리 시스템의 플래시 메모리 유지관리 정보를 유지 관리하기 위한 예시적인 방법의 흐름도를 도시한다.
도 5는 일반적으로 메모리 디바이스에서 호스트로부터 관리 커맨드를 수신하기 위한 예시적인 방법의 흐름도를 도시한다.
도 6은 일반적으로 플래시 메모리 디바이스를 유지 관리하기 위해 호스트를 이용하는 예시적인 방법의 흐름도를 도시한다.
도 7은 본 명세서에서 설명한 임의의 하나 이상의 기술(예를 들어, 방법론)이 수행할 수 있는 예시적인 머신의 블록도를 도시한다.
상세한 설명
NAND 메모리와 같은 플래시 메모리 기반 저장 디바이스는 플래시 변환 레이어(FTL; Flash Translation Layer)를 사용하여, 종종 논리 블록 어드레스(LBA)라고 지칭되는, I/O 요청의 논리 어드레스를 하나 이상의 FTL 매핑 테이블에 저장되는 대응하는 플래시 메모리 어드레스로 변환할 수 있다. LBA는 데이터를 유지 관리하기 위해 호스트에 의해 사용되는 논리 어드레스일 수 있다. 모바일 저장 디바이스는 일반적으로 제한된 크기의 캐시를 가지므로, 종종 전체 매핑 테이블을 저장할 메모리가 부족하다. 따라서, 요구 시 매핑 테이블(들)의 일부가 플래시 메모리로부터 검색(retrieved)될 수 있어, 랜덤 판독 성능 저하를 초래할 수 있다.
랜덤 판독 성능을 개선하기 위해서, 본 명세서에서 설명되는 기술은 FTL 매핑 테이블을 위한 캐시로서, 호스트에 결합된 메모리 디바이스의 메모리 셀 이외에, 호스트 상주 메모리를 사용할 수 있게 한다. 호스트 상주 FTL에서, FTL 데이터는 플래시 메모리보다 호스트 메모리로부터 더 빨리 판독될 수 있으며, 호스트는 플래시 메모리의 물리 어드레스(PA)를 검색하고 플래시 메모리에 대한 메모리 요청에 PA를 포함시킴으로써 메모리 동작을 개시할 수 있다. PA는 호스트의 FTL 메모리 캐시와 호스트의 LBA를 사용하여 호스트에 의해 검색될 수 있다. 메모리 요청을 수신하면, 플래시 메모리 시스템, 예컨대, 플래시 메모리 디바이스 또는 호스트 외부 시스템은, 플래시 메모리 기반 매핑 테이블에 액세스하는 것 및 LBA를 사용하여 물리 어드레스를 획득하는 것과 관련된 지연없이 물리 어드레스와 관련된 데이터를 즉시 검색할 수 있다.
호스트 상주 FTL의 특정 구현예들에서는, 랜덤 판독 워크로드 성능의 개선이 상당할 수 있다. 그러나, 본 발명자들은, 호스트 메모리 요청의 무결성을 검증하는 데 도움을 줄 수 있고, 호스트 FTL 테이블과 실제 플래시 매핑 테이블 간의 일관성(coherency)을 유지 관리하는 데 도움을 줄 수 있으며, 호스트-촉발(host-triggered) 메모리 동작이 유휴 상태이거나 거의 유휴 상태일 때, 호스트 FTL 테이블에 적시에 업데이트를 제공하는 데 도움을 줄 수 있는 호스트 상주 FTL을 위한 기술을 확인하였다. 호스트 상주 FTL의 간단한 실행은 매핑 테이블이 호스트 개시 동작들 사이에 정확한 상태로 유지된다고 가정할 수 있다. 그러나, 호스트에 연결된 메모리 시스템 또는 메모리 디바이스는 종종 호스트가 개시한 동작들 사이에 또는 호스트가 유휴 상태일 때의 시간 동안 가비지 수집(garbage collection) 절차 및 웨어 레벨링(wear leveling) 절차와 같은 하우스키핑 동작 또는 절차를 수행한다. 하우스키핑 동작은 데이터를 메모리 디바이스에 상주하는 매핑 테이블 주위로 이동시키고 종종 이를 수정 및 업데이트한다. 일부 유효성 검사없이, 메모리 시스템이 플래시 데이터에 액세스하기 위해 호스트 제공 PA를 맹목적으로 사용하는 것과 같은, 호스트 상주 FTL의 간단한 구현은 메모리 시스템이 잘못된 PA에서 플래시 메모리에 액세스하는 결과를 초래할 수 있다.
또한, 본 발명자들은 플래시 메모리 디바이스 또는 플래시 메모리 시스템의 메모리 유지관리를 호스트로 오프로드(off-loading)하면 더 간단한 펌웨어, 더 간단한 하드웨어, 더 간단한 검증 또는 이들의 조합을 포함하는 더 간단한 플래시 메모리 디바이스가 가능하고, 그에 따라 기존의 관리형(managed)-NAND 플래시 메모리 디바이스와 같은 기존의 플래시 메모리 디바이스보다 더 저렴하고 출시 시간이 단축될 수 있다는 것도 인식하였다.
도 1은 통신 인터페이스를 통해 통신하도록 구성된 호스트(105) 및 메모리 디바이스(110)를 포함하는 환경(100)의 일례를 도시한다. 호스트(105) 또는 메모리 디바이스(110)는 IoT 디바이스(예를 들어, 냉장고 또는 다른 가전기기, 센서, 모터 또는 액추에이터, 모바일 통신 디바이스, 자동차, 모바일 폰, 드론 등)와 같은, 다양한 제품(150)에 포함되어, 제품(150)의 처리, 통신, 또는 제어를 지원할 수 있다.
메모리 디바이스(110)는 메모리 컨트롤러(115)와, 예를 들어, 하나 이상의 개별 메모리 다이(예를 들어, 3차원(3D) NAND 다이의 스택)를 포함하는 메모리 어레이(120)를 포함한다. 3D 아키텍처 반도체 메모리 기술에서는, 수직 구조가 다수의 티어로 적층되고, 물리 페이지를 형성하도록 결합되어, 주어진 풋프린트(즉, 폼 팩터)에서 메모리 디바이스(예를 들어, 저장 디바이스)의 저장 밀도를 증가시킨다. 일례에서, 메모리 디바이스(110)는 이산 메모리 디바이스일 수 있다. 특정의 예들에서, 메모리 어레이(120)의 하나 이상의 메모리 다이는 호스트의 논리 블록 어드레스를 플래시 메모리의 물리 어드레스와 매핑하기 위한 제1 완전한 FTL 테이블(161)을 포함할 수 있다.
SATA(Serial Advanced Technology Attachment) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, 유니버셜 시리얼 버스(USB) 인터페이스, UFS 인터페이스, eMMC™ 인터페이스, 또는 하나 이상의 다른 커넥터 또는 인터페이스와 같은, 하나 이상의 통신 인터페이스(111)는 메모리 디바이스(110)와 호스트(105)의 하나 이상의 다른 구성요소 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트(105)는 호스트 시스템, 전자 디바이스, 프로세서, 메모리 카드 리더, 또는 메모리 디바이스(110) 외부의 하나 이상의 다른 전자 디바이스를 포함할 수 있다. 일부 예들에서, 호스트(105)는 도 7의 머신(700)을 참조하여 설명되는 구성요소 중 일부 또는 전부를 갖는 머신일 수 있다. 데이터는, 데이터가 전송될 때(예를 들어, 메모리 어레이로부터/이에 대해 판독되거나 기록되기 전에) 데이터를 일시적으로 저장하기 위한 하나 이상의 래치를 포함할 수 있는 입력/출력(I/O) 버스를 통해 메모리 디바이스(110)와 다른 구성요소 사이에서 전송될 수 있다.
메모리 컨트롤러(115)는 호스트(105)로부터 명령어를 수신할 수 있고, 예컨대, 메모리 어레이의 메모리 셀, 평면, 서브블록, 블록, 또는 페이지 중 하나 이상에 데이터를 전송(예를 들어, 기록 또는 소거)하거나 또는 그로부터 데이터를 전송(예를 들어, 판독)하기 위해 메모리 어레이와 통신할 수 있다. 메모리 컨트롤러(115)는, 특히 하나 이상의 구성요소 또는 집적 회로를 포함하는, 회로 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(115)는 메모리 어레이(120)에 걸친 액세스를 제어하고 호스트(105)와 메모리 디바이스(110) 사이에 변환 레이어를 제공하도록 구성된 하나 이상의 메모리 제어 유닛, 회로, 제어 회로, 또는 구성요소를 포함할 수 있다. 메모리 컨트롤러(115)는 메모리 어레이(120)에 또는 이로부터 데이터를 전송하기 위해 하나 이상의 I/O 회로(및 대응하는 래치), 캐시, 라인, 또는 인터페이스를 포함할 수 있다. 메모리 컨트롤러(115)는 메모리 매니저(125) 및 어레이 컨트롤러(135)를 포함할 수 있다.
어레이 컨트롤러(135)는, 특히 메모리 컨트롤러(115)에 결합된 메모리 디바이스(110)의 하나 이상의 메모리 셀에 데이터를 기록하거나, 이로부터 데이터를 판독하거나, 또는 이를 소거하는 것과 관련된 메모리 동작을 제어하도록 구성된 회로 또는 구성요소를 포함할 수 있다. 메모리 동작은, 예를 들어, 호스트(105)로부터 수신된 호스트 커맨드에 기초하거나, 또는 (예를 들어, 웨어 레벨링, 에러 검출 또는 수정 등과 관련하여) 메모리 매니저(125)에 의해 내부적으로 발생될 수 있다.
어레이 컨트롤러(135)는 에러 수정 코드(ECC) 구성요소(140)를 포함할 수 있으며, 이는, 특히 메모리 컨트롤러(115)에 결합된 메모리 디바이스(110)의 하나 이상의 메모리 셀에 데이터를 기록하는 것 또는 이로부터 데이터를 판독하는 것과 관련된 에러를 검출 또는 정정하도록 구성된 ECC 엔진 또는 다른 회로를 포함할 수 있다. ECC 구성요소(140)는, 예를 들어, 다수의 메모리 동작을 수행하는 것과 관련된 비트 에러율(bit-error-rate: BER)을 검출 또는 연산할 수 있다. BER은 I/O 버스의 래치에서 발생하는 비트 에러, 메모리 컨트롤러(115)의 내부 에러, 하나 이상의 NAND 어레이, 또는 메모리 디바이스(110)의 임의의 하나 이상의 멀티레벨 셀(들)(MLC)에서 발생하는 에러에 해당할 수 있다. 메모리 컨트롤러(115)는 호스트(105)와 메모리 디바이스(110) 사이에서 전송되는 데이터의 무결성을 유지 관리하거나, 또는 (예를 들어, 여분의 RAID 저장 등을 사용하여) 저장된 데이터의 무결성을 유지 관리하면서, 다양한 동작 또는 데이터의 저장과 관련된 에러 발생(예를 들어, 비트 에러, 동작 에러, 충돌 조건, 멈춤(stall), 끊김(hang up) 등)을 능동적으로 검출 및 복구하도록 구성될 수 있으며, 고장난 메모리 리소스(예를 들어, 메모리 셀, 메모리 어레이, 페이지, 블록 등)를 제거(예를 들어, 폐기)하여 미래의 에러를 방지할 수 있다. 어레이 컨트롤러(135)는 저장 및 추적을 위해 검출된 BER 정보를 메모리 매니저(125)에 전송할 수 있다. 메모리 컨트롤러(115)는 호스트로부터 수신된 메모리 커맨드를 추적하는 커맨드 큐(미도시)를 포함할 수 있다. 큐의 커맨드는 우선 순위에 따라, 선입선출(FIFO) 방식, 스택 방식, 비순서(out of sequence) 방식으로, 또는 임의의 다른 적절한 순서로 메모리 컨트롤러(115)에 의해 실행될 수 있다.
설명된 메모리 디바이스(110)는 메모리 어레이(120)와 관련된 암호(cryptography) 회로(160)를 포함한다. 특정의 예들에서, 암호 회로(160)는 암호화 회로, 복호화 회로, 또는 이들의 조합을 포함할 수 있다. 일부 구현예들에서, 메모리 디바이스(110)의 메모리 컨트롤러(115)는 암호 회로(160)의 기능을 구현하도록 구성된 제어 회로를 포함할 수 있다. 다른 구현예들에서, 암호 회로(160)는 설명된 기능을 구현하기 위한 독립적인 제어 회로를 포함할 수 있다. 또 다른 구현예들에서, 제어 회로는 암호 회로(160)의 설명된 기능을 구현하기 위해 암호 회로(160)와 메모리 컨트롤러(115) 사이에서 분할될 수 있다. 도시된 예에서, 어레이 컨트롤러(135)는 메모리 컨트롤러(115)의 일부를 형성하고, 암호 회로(160)는 어레이 컨트롤러의 일부를 형성한다. 다른 구현예에서, 암호 회로(160)는 외부에 있을 수 있고/있거나 어레이 컨트롤러(135)의 외측에 있을 수 있다. 예를 들어, 암호 회로(160)(또는 이의 임의의 개별 구성요소)는 환경(100) 내의 하나 이상의 구성요소에 결합된 독립 구성요소일 수 있다. 그러나, 물리적으로 배치되더라도, 암호 회로(160)의 추가 기능을 제공하는 구조는, 호스트(105)에 의해 제공되는 물리 어드레스를 검증하여 메모리 디바이스에 대한 잘못된 또는 악의적인 액세스를 방지하도록, 또 호스트 상주 매핑 테이블 정보를 리프레시하여 환경(100)의 호스트 상주 FTL 동작 동안 매핑 정보와 메모리 디바이스의 매핑 정보를 정렬시킬 기회를 호스트에 제공하도록 기능한다.
메모리 매니저(125)는, 특히 다양한 메모리 매니지먼트 기능과 관련된 다수의 구성요소 또는 집적 회로와 같은, 회로 또는 펌웨어를 포함할 수 있다. 본 설명을 위해, 예시적인 메모리 동작 및 매니지먼트 기능이 NAND 메모리의 맥락에서 설명될 것이다. 당업자는 다른 형태의 비휘발성 메모리가 유사한 메모리 동작 또는 매니지먼트 기능을 가질 수 있음을 인식할 것이다. 이러한 NAND 매니지먼트 기능은 웨어 레벨링(예를 들어, 가비지 수집 또는 매립(reclamation)), 에러 검출(예를 들어, BER 모니터링) 또는 정정, 블록 폐기, 또는 하나 이상의 다른 메모리 유지관리 기능을 포함한다. 메모리 매니저(125)는 호스트 커맨드(예를 들어, 호스트로부터 수신된 커맨드)를 디바이스 커맨드(예를 들어, 메모리 어레이의 동작과 관련된 커맨드 등)로 파싱(parse) 또는 포맷하거나, 또는 어레이 컨트롤러(135) 또는 메모리 디바이스(110)의 하나 이상의 다른 구성요소를 위한 (예를 들어, 다양한 메모리 매니지먼트 기능을 달성하기 위한) 디바이스 커맨드를 생성할 수 있다.
메모리 어레이(120)는, 예를 들어, 다수의 디바이스, 평면, 서브블록, 블록, 또는 페이지로 배열된 다수의 메모리 셀을 포함할 수 있다. 일례로서, 48GB TLC NAND 메모리 디바이스는 페이지당 18,592 바이트의 데이터(16,384 + 2208 바이트), 블록당 1536 페이지, 평면당 548 블록, 및 디바이스당 4개 이상의 평면을 포함할 수 있다. 다른 예로서, 32GB MLC 메모리 디바이스(셀당 2 비트의 데이터(즉, 4개의 프로그래밍가능 상태)를 저장함)는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1024 페이지, 평면당 548 블록, 디바이스당 4개의 평면을 포함할 수 있지만, 대응하는 TLC 메모리 디바이스에 비해 필요한 기록 시간은 절반이고 프로그램/소거(P/E) 사이클은 2배이다. 다른 예는 다른 개수 및 배열을 포함할 수 있다. 일부 예들에서, 메모리 디바이스, 또는 이의 일부는 SLC 모드에서, 또는 원하는 MLC 모드(예를 들어, TLC, QLC 등)에서 선택적으로 동작될 수 있다.
동작 시, 데이터는 일반적으로 페이지 단위로 메모리 디바이스(110)에 기록되거나 그로부터 판독되며, 블록 단위로 소거된다. 그러나, 하나 이상의 메모리 동작(예를 들어, 판독, 기록, 소거 등)은, 필요에 따라, 더 크거나 더 작은 메모리 셀 그룹에서 수행될 수 있다. 메모리 디바이스(110)의 데이터 전송 크기는 일반적으로 페이지로 지칭되고; 반면 호스트의 데이터 전송 크기는 일반적으로 섹터로 지칭된다.
상이한 유형의 메모리 셀 또는 메모리 어레이(120)는 상이한 페이지 크기를 제공할 수 있거나, 또는 이와 관련된 상이한 양의 메타데이터를 필요로 할 수 있다. 예를 들어, 상이한 메모리 디바이스 유형은, 데이터의 페이지의 무결성을 보장하는 데 필요한 상이한 양의 메타데이터를 유발할 수 있는(예를 들어, 비트 에러율이 높은 메모리 디바이스는 비트 에러율이 낮은 메모리 디바이스보다 더 많은 바이트의 에러 정정 코드 데이터를 필요로 할 수 있음), 상이한 비트 에러율을 가질 수 있다. 일례로, MLC NAND 플래시 디바이스는 대응하는 싱글-레벨 셀(SLC) NAND 플래시 디바이스보다 더 높은 비트 에러율을 가질 수 있다. 이와 같이, MLC 디바이스는 대응하는 SLC 디바이스보다 에러 데이터에 대해 더 많은 메타데이터 바이트를 필요로 할 수 있다.
특정의 예들에서, 호스트는 제2 메모리(111)를 포함할 수 있다. 제2 메모리(111)는 플래시 타입 메모리 디바이스가 아니다. 특정의 예들에서, 제2 메모리(111)는 매니지먼트 테이블(130) 세트를 저장하고 유지 관리하는데 사용될 수 있다. 매니지먼트 테이블은 메모리 디바이스(110)의 하나 이상의 구성요소와 관련된 다양한 정보(예를 들어, 메모리 어레이 또는 메모리 컨트롤러(115)에 연결된 하나 이상의 메모리 셀과 관련된 다양한 정보)를 포함할 수 있고 FTL 테이블을 포함할 수 있다. 예를 들어, 매니지먼트 테이블(130)은 메모리 컨트롤러(115)에 결합된 하나 이상의 메모리 셀 블록을 위한 FTL 매핑 정보, 블록 에이지, 블록 소거 카운트, 에러 이력, 에러 매개변수 정보, 호스트 재설정 시간 초과 값, 메모리 동작 커맨드 대기시간, 또는 하나 이상의 에러 카운트(예를 들어, 기록 동작 에러 카운트, 판독 비트 에러 카운트, 판독 동작 에러 카운트, 소거 에러 카운트 등)에 관한 정보를 포함할 수 있다. 특정의 예들에서, 하나 이상의 에러 카운트(예를 들어, 에러 매개변수)가 임계값(예를 들어, 허용가능한 에러 임계값)을 초과하면, 비트 에러는 수정 불가능한 비트 에러로 지칭될 수 있다. 매니지먼트 테이블(130)은, 특히 수정가능하거나 수정 불가능한 비트 에러의 카운트를 관리할 수 있다.
특정의 예들에서, 제2 메모리는 호스트의 논리 블록 어드레스를 플래시 메모리의 물리 어드레스와 매핑하기 위한 제2 완전 FTL 테이블(162)을 포함할 수 있다. 일부 예들에서, 환경(100)은 제1 완전 FTL 테이블(162) 또는 제2 완전 FTL 테이블(162) 중 하나만을 포함할 수 있다.
도 2는 일반적으로 호스트 상주 FTL의 양상을 이용하여 플래시 메모리 시스템에서 메모리 동작을 구현하기 위한 예시적인 방법(200)의 흐름도를 도시한다. 특정의 예들에서, 방법은 호스트로부터 수신된 물리 어드레스가 호스트에 의해 제공되는 LBA에 대응하는지 검증하는 것을 도울 수 있다. 어떤 형태의 검증없이, 악의적 호스트는 LBA 및 관련없는 물리 어드레스를 제공하여 호스트가 액세스할 수 있도록 의도되지 않거나, 메모리 시스템에 수신된 특정 호스트 메모리 요청을 이용하여 호스트가 액세스하도록 의도되지 않은 플래시 메모리 데이터에 액세스하는 것을 초래할 수 있다. 201에서, 메모리 시스템은 호스트 상주 FTL 작동 모드 동안 LBA 및 물리 어드레스의 표현을 포함하는 호스트 메모리 요청을 수신할 수 있다. LBA는 호스트의 메모리 시스템 내의 메모리 위치를 나타낸다. 물리 어드레스는 플래시 메모리 시스템의 플래시 메모리 내의 메모리 위치를 나타낸다. 호스트 상주 FTL 동작 모드 이외에, 플래시 메모리 시스템의 메모리 컨트롤러는 메모리 컨트롤러의 캐시 내의 매핑 정보를 이용하거나 플래시 메모리 시스템의 플래시 메모리에 저장된 전체 매핑 테이블을 이용하여 수신된 LBA에 매핑된 물리 어드레스를 찾을 수 있다. 호스트 상주 FTL 동작 모드 중에, 호스트는 LBA와 관련된 매핑된 물리 어드레스, 또는 이의 표현을 제공할 수 있다. 특정 상황들에서, 매핑된 물리 어드레스를 제공하면 메모리 컨트롤러가 플래시 메모리 시스템의 플래시 메모리에서 메모리 정보를 검색하는 빈도를 줄일 수 있다. 메모리 매핑 정보를 검색하기 위해 플래시 메모리에 액세스하면 호스트의 메모리 동작 성능이 유의하게 저하될 수 있으므로, 메모리 컨트롤러가 메모리 매핑 정보를 검색하는 빈도를 줄이면 호스트의 메모리 요청 성능을 유의하게 향상시킬 수 있다.
메모리 시스템의 플래시 메모리의 제한된 영역에 대한 비의도된 또는 악의적 액세스를 방지하기 위해, 203에서, 물리 어드레스의 표현은 플래시 메모리 시스템의 키를 이용하여 복호화될 수 있다. 특정의 예들에서, 플래시 메모리 시스템은 암호 회로를 포함할 수 있다. 특정의 예들에서, 암호 회로는 메모리 컨트롤러의 일부일 수 있다. 암호 회로는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다.
205에서, 복호화된 물리 어드레스는 메모리 요청에 대한 플래시 메모리 시스템의 유효한 물리 어드레스로 검증될 수 있다. 특정의 예들에서, 검증은 메모리 컨트롤러의 캐시에서 LBA를 찾는 것과, 복호화된 물리 어드레스를 LBA에 매핑된 물리 어드레스와 비교하는 것을 포함할 수 있다. LBA가 메모리 컨트롤러의 캐시 내에 있는지 여부에 관계없이, 메모리 컨트롤러는 복호화된 물리 어드레스를 메모리 요청에 제한되지 않은 어드레스 영역을 포함하는 테이블과 비교하고, 복호화된 물리 어드레스가 어드레스 영역 중 하나에 속하는지 검증할 수 있다.
207에서, 메모리 컨트롤러가 복호화된 물리 어드레스가 메모리 요청에 대한 유효한 물리 어드레스인 것을 검증했을 때, 메모리 컨트롤러는 복호화된 물리 어드레스를 이용하여 메모리 요청을 실행할 수 있다. 메모리 컨트롤러가 복호화된 물리 어드레스가 메모리 요청에 유효한 물리 어드레스임을 검증하는데 실패한 경우, 메모리 컨트롤러는 복호화된 물리 어드레스를 이용하여 메모리 요청을 실행하지 않는다.
209에서, 메모리 컨트롤러가 복호화된 물리 어드레스가 메모리 요청에 대한 유효한 물리 어드레스임을 검증하는 데 실패한 경우, 메모리 컨트롤러는 메모리 요청을 실행하기 위해 복호화된 물리 어드레스를 이용하지 않는다. 211에서, 메모리 컨트롤러는 선택적으로 호스트에 에러 표시를 반환할 수 있다. 213에서, 메모리 컨트롤러가 복호화된 물리 어드레스가 메모리 요청에 대한 유효한 물리 어드레스임을 검증하는데 실패한 경우, 메모리 컨트롤러는 플래시 메모리 시스템의 캐시 또는 플래시 메모리 중 어느 하나에 저장되고 관리되는 매핑 정보를 이용하여 LBA와 관련된 올바른 물리 어드레스를 선택적으로 검색한 다음, 213에서 올바른 물리 어드레스를 이용하여 메모리 요청을 실행할 수 있다. 특정의 예들에서, LBA는 메모리 시스템에서 유효한 LBA로 검증될 수 있다. 이러한 검증은 수신된 LBA를 유효한 LBA 테이블의 항목(entries)과 비교하는 것을 포함할 수 있다. 수신된 LBA가 유효한 LBA 테이블의 항목과 일치하지 않는 경우, 메모리 컨트롤러는 메모리 요청을 무시하고 에러 표시 또는 이들의 조합을 반환할 수 있다.
특정의 예들에서, 호스트 상주 FTL 동작 모드 동안 사용하기 위해 호스트에 제공되는 매핑 정보는 메모리 디바이스에 의해 제공된다. 호스트에 매핑 정보를 제공하기 전에, 플래시 메모리 시스템의 메모리 컨트롤러는 물리 어드레스를 암호화하고 실제 물리 어드레스 대신 각 물리 어드레스의 암호화된 표현을 제공할 수 있다. 도 3은 일반적으로 플래시 메모리 시스템으로부터 호스트에 매핑 정보를 제공하기 위한 예시적인 방법(300)의 흐름도를 도시한다. 메모리 컨트롤러는 호스트로부터 메모리 요청이 수신될 때 매핑 정보를 생성할 수 있다. 매핑 정보는 상당히 커서 저장된 데이터와 함께 플래시 메모리에 저장될 수 있다. 특정의 예들에서, 매핑 정보는 호스트의 메모리 위치와 관련된 LBA 및 LBA에 매핑된 플래시 메모리 시스템의 메모리 위치와 관련된 물리 어드레스를 포함하는 테이블의 레코드와 함께 테이블에 저장될 수 있다. 301에서, 메모리 컨트롤러, 또는 메모리 컨트롤러의 암호 회로는 매핑 테이블 레코드를 수신할 수 있다. 매핑 테이블 레코드는 LBA와 LBA에 매핑된 플래시 메모리 시스템의 물리 어드레스를 포함할 수 있다. 특정의 예들에서, 메모리 컨트롤러는 호스트가 플래시 메모리 시스템의 메모리 요청을 할 때 호스트의 각 LBA를 플래시 메모리 시스템의 대응하는 물리 어드레스와 매핑한다.
301에서, 암호 회로는 호스트의 LBA 및 LBA에 매핑된 플래시 메모리 시스템의 물리 어드레스를 포함하는 매핑 테이블의 매핑 레코드와 같은, 매핑 정보를 수신할 수 있다. 암호 회로는 플래시 메모리 시스템의 일부일 수 있다. 일부 예들에서, 암호 회로는 플래시 메모리 시스템의 메모리 컨트롤러의 일부일 수 있다. 303에서, 암호 회로는 토큰을 이용하여 물리 어드레스에 암호화 알고리즘을 적용할 수 있다. 특정의 예들에서, 토큰은 플래시 메모리 시스템의 비휘발성 메모리에 하드코딩될 수 있다. 암호화 알고리즘의 적용은 물리 어드레스의 암호화된 버전을 생성시킨다. 305에서, 매핑 레코드의 물리 어드레스를 암호화된 버전의 물리 어드레스로 교체할 수 있다. 특정의 예들에서 암호화된 물리 어드레스는 비밀을 포함할 수 있다. 특정의 예들에서, 호스트는 비밀을 이용하여 플래시 메모리 시스템에 대한 통계를 관리할 수 있다. 이러한 메모리 통계는, 이로만 제한되는 것은 아니지만, 프로그램 카운트, 소거 카운트, 프로그램/소거 사이클 카운트, 사이클 카운트, 유효하지 않은 페이지 카운트, 예상 웨어값(wear value), 또는 이들의 조합을 포함할 수 있다. 307에서, 매핑 정보는 환경(예를 들어, 100)의 호스트 상주 FTL 동작 모드 동안 이용하기 위해 호스트로 전송될 수 있다. 매핑 정보는 LBA 및 LBA에 대응하는 물리 어드레스의 대응하는 암호화된 버전을 포함하는 매핑 레코드를 포함할 수 있다.
도 4는 일반적으로 호스트에서 메모리 시스템의 플래시 메모리 유지관리 정보를 유지 관리하기 위한 예시적인 방법(400)의 흐름도를 도시한다. 401에서, 메모리 시스템은 선택적으로 호스트에 매핑 정보를 제공할 수 있다. 매핑 정보는 메모리 시스템에서 수신된 다양한 메모리 요청에 대한 응답으로 제공될 수 있으며 호스트가 플래시 메모리를 포함하는 메모리 시스템의 완전한 맵을 갖도록 할 수 있다. 403에서, 메모리 시스템은 호스트로부터 기록 커맨드를 수신할 수 있다. 기록 커맨드는 논리 블록 어드레스를 포함할 수 있다. 호스트가 FTL 동작 모드에서 동작하는 예들에서, 기록 커맨드는 해당 기록 커맨드와 관련된 기록 데이터를 저장하는 플래시 메모리의 물리 어드레스 또는 물리 블록의 표현을 포함할 수 있다.
405에서, 메모리 시스템은 플래시 메모리의 물리 블록에 기록 데이터를 저장할 수 있다. 일부 예들에서, 물리 블록은 호스트가 기록 커맨드와 함께 제공한 동일한 물리 블록일 수 있다. 407에서, 메모리 시스템은 기록 커맨드 실행에 대한 응답 정보를 암호화할 수 있다. 특정의 예들에서, 응답 정보는 기록 데이터가 저장되었던 물리 블록의 표시를 포함할 수 있다. 일부 예들에서, 응답 정보는 호스트가 플래시 메모리의 관리 통계를 유지 관리하기 위한 목적으로 물리 블록 정보를 추출하도록 허용하는 인식가능한 비밀을 포함할 수 있다. 411에서, 응답 정보는 응답 메시지를 통해 기록 커맨드에 대한 응답으로 호스트로 전송될 수 있다.
도 5는 일반적으로 메모리 디바이스에서 호스트로부터 메모리 유지관리 커맨드를 수신하기 위한 예시적인 방법(500)의 흐름도를 도시한다. 501에서, 메모리 디바이스는 호스트로부터 관리 커맨드를 수신할 수 있다. 관리 커맨드는 메모리 디바이스의 플래시 메모리 블록의 어드레스 표현을 포함할 수 있다. 특정의 예들에서, 메모리 블록의 표현은 암호화될 수 있고 메모리 디바이스의 컨트롤러는 메모리 블록 어드레스를 복호화할 수 있다. 특정의 예들에서, 메모리 디바이스는 기본적인 관리 통계를 관리할 수 있으며, 특히 호스트가 FTL 동작 모드에서 작동하지 않는 경우에 관리 커맨드를 힌트로 처리할 수 있다. 관리 커맨드가 힌트로 처리되는 경우, 메모리 디바이스는 커맨드된 관리를 실행할지 여부를 결정하기 위해 기초 통계를 임계값과 비교할 수 있다. 특정의 예들에서, 메모리 디바이스는 관리가 수행되었는지 여부를 표시하는, 응답(rely) 메시지를 통해, 호스트에 응답 정보를 선택적으로 제공할 수 있다.
505에서, 메모리 디바이스는 관리 커맨드가 가비지 수집 커맨드일 때 메모리 블록에서 가비지 수집을 실행할 수 있다. 507에서, 메모리 디바이스는 관리 커맨드가 웨어 레벨링 커맨드일 때 메모리 블록에서 웨어 레벨링 동작을 실행할 수 있다. 511에서, 위에서 설명한 바와 같이, 메모리 디바이스는 응답 메시지를 통해 관리 커맨드에 대한 응답으로 호스트에 선택적으로 응답을 제공할 수 있다.
도 6은 일반적으로 플래시 메모리 디바이스를 유지 관리하기 위해 호스트를 이용하기 위한 예시적인 방법(500)의 흐름도를 도시한다. 601에서, 호스트는 호스트가 정보를 저장하는 데 사용하는 플래시 메모리 디바이스에 대한 통계를 시작하거나 관리할 수 있다. 특정의 예들에서, 통계는, 이로만 제한되는 것은 아니지만, FTL 매핑 정보, 블록 에이지, 블록 소거 카운트, 에러 이력, 에러 매개변수 정보, 호스트 재설정 시간 초과 값, 메모리 동작 커맨드 대기시간, 또는 하나 이상의 에러 카운트(예를 들어, 플래시 메모리 디바이스의 메모리 셀의 하나 이상의 블록에 대한 기록 동작 에러 카운트, 판독 비트 에러 카운트, 판독 동작 에러 카운트, 소거 에러 카운트 등)를 포함할 수 있다. 603에서, 호스트는 기록 커맨드 및 관련 기록 데이터를 플래시 메모리 디바이스에 전송할 수 있다. 605에서, 호스트는 기록 커맨드와 관련되거나, 또는 이에 대한 응답으로 암호화된 응답 정보를 수신할 수 있다. 암호화된 응답 정보는 기록 데이터가 저장된 플래시 메모리 블록에 대한 정보를 포함할 수 있다. 특정의 예들에서, 암호화된 응답 정보는 호스트가 인식할 수 있는 비밀을 포함할 수 있으며, 비밀은 기록 데이터가 저장된 플래시 메모리 블록에 대한 정보와 같은 암호화된 응답 정보의 적어도 일부를 복호화하는 데 사용될 수 있다.
607에서, 호스트는 암호화된 응답 정보와 함께 제공되는 기록 데이터가 저장되는 플래시 메모리 블록에 대한 정보를 이용하여 플래시 메모리 디바이스에 대한 통계를 업데이트할 수 있다. 특정의 예들에서, 호스트는 하나 이상의 통계를 관리 임계값과 비교할 수 있고, 609에서, 관리 커맨드를 메모리 디바이스에 전송할 수 있다. 특정의 예들에서, 관리 커맨드는, 이로만 제한되는 것은 아니지만, 가비지 수집 커맨드 또는 웨어 레벨링 커맨드를 포함할 수 있다. 관리 커맨드는 플래시 메모리 디바이스의 플래시 메모리의 타겟 블록의 어드레스를 포함할 수 있다. 특정의 예들에서, 타겟 블록의 어드레스는 진정한 실제 블록이 플래시 메모리 디바이스에 의해서만 복호화될 수 있도록 암호화될 수 있다. 특정의 예들에서, 호스트가 유지 관리하는 플래시 메모리 디바이스에 대한 통계는 매우 조잡한(course) 통계이며 호스트가 메모리 디바이스에 관리 커맨드를 전송할 때, 메모리 디바이스는 커맨드를 제안으로 취급하고, 호스트에 의해 보관된 통계와 비교하여 메모리 디바이스에 보관된 더 정밀한(finer-grain) 통계가 플래시 메모리 디바이스의 관리 임계값을 충족하면 관리 커맨드를 실행하지 않을 수 있다. 특정의 예들에서, 메모리 디바이스는 관리가 수행되었는지 여부를 표시하는 응답 메시지를 통해, 호스트에 응답 정보를 선택적으로 제공할 수 있다.
도 7은 본 명세서에서 설명한 기술(예를 들어, 방법론) 중 임의의 하나 이상을 수행할 수 있는 예시적인 머신(700)의 블록도를 도시한다. 대안적인 실시형태에서, 머신(700)은 독립형 디바이스로서 동작할 수 있거나, 또는 다른 머신에 연결(예를 들어, 네트워킹)될 수 있다. 네트워크형 배치에서, 머신(700)은 서버-클라이언트 네트워크 환경에서 서버 머신, 클라이언트 머신, 또는 둘 다의 커패시티로 동작할 수 있다. 일례에서, 머신(700)은 피어-투-피어(peer-to-peer; P2P)(또는 다른 분산된) 네트워크 환경에서 피어 머신으로서 역할할 수 있다. 머신(700)은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 퍼스널 디지털 어시스턴트(PDA), 모바일 전화, 웹 어플라이언스, IoT 디바이스, 자동차 시스템, 또는 해당 머신이 수행할 조치를 지정하는 (순차적 또는 다른 방식의) 명령어(instructions)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만이 도시되어 있지만, 용어 "머신"은 또한 클라우드 컴퓨팅, SaaS(software as a service), 다른 컴퓨터 클러스터 구성과 같은, 본 명세서에서 설명한 방법론 중 임의의 하나 이상을 수행하기 위한 한 세트(또는 다수 세트)의 명령어를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 간주되어야 한다.
본 명세서에서 기재한 바와 같은, 실시예들은 로직, 구성요소, 디바이스, 패키지, 또는 메커니즘을 포함할 수 있거나, 또는 이들에 의해 동작할 수 있다. 회로는 하드웨어(예를 들어, 단순 회로, 게이트, 로직 등)를 포함하는 유형의(tangible) 엔티티로 구현된 회로들의 집합(예를 들어, 세트)이다. 회로 멤버쉽은 시간 경과에 따라 유연할 수 있고 기본 하드웨어 가변성이 있을 수 있다. 회로는 동작할 때 단독으로 또는 조합하여 특정 작업을 수행할 수 있는 멤버를 포함한다. 일례에서, 회로의 하드웨어는 특정 동작(예를 들어, 하드와이어드(hardwired))을 수행하도록 불변형으로 설계될 수 있다. 일례에서, 회로의 하드웨어는 특정 동작의 명령어를 인코딩하기 위해 물리적으로 변형된 컴퓨터 판독가능 매체(예를 들어, 불변 질량 입자(invariant massed particle)가 자기적으로 전기적으로 이동가능한 배치)를 포함하는 가변적으로 연결된 물리적 구성요소(예를 들어, 실행 유닛, 트랜지스터, 단순 회로 등)를 포함할 수 있다. 물리적 구성요소의 연결 시, 하드웨어 구성부의 기본 전기 특성은, 예를 들어, 절연체로부터 도체로 또는 그 반대로 변경된다. 명령어는 참여 하드웨어(예를 들어, 실행 유닛 또는 로딩 메커니즘)가 동작 중에 특정 작업의 일부를 수행하기 위해 가변 연결을 통해 하드웨어 내에 회로의 멤버를 생성할 수 있게 한다. 따라서, 컴퓨터 판독가능 매체는 디바이스가 작동할 때에 회로의 다른 구성요소에 통신 가능하게 결합된다. 일례에서, 물리 구성요소 중 임의의 것이 하나 이상의 회로의 하나 이상의 멤버에서 사용될 수 있다. 예를 들어, 동작 중에, 실행 유닛은 한 시점에서 제1 회로망의 제1 회로에서 사용되고 제1 회로망의 제2 회로에 의해, 또는 다른 시간에 제2 회로망의 제3 회로에 의해 재사용될 수 있다.
머신(예를 들어, 컴퓨터 시스템)(700)(예를 들어, 호스트(105), 메모리 디바이스(110) 등)은 처리 디바이스(702)(예를 들어, 하드웨어 프로세서, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 하드웨어 프로세서 코어, 또는 메모리 디바이스(110)의 메모리 컨트롤러와 같은 이들의 임의의 조합 등), 주 메모리(704)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스(Rambus) DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(706)(예를 들어, 정적 랜덤 액세스 메모리(SRAM), 캐시 등) 및 데이터 저장시스템(718)을 포함할 수 있고, 이들 중 일부 또는 전부는 인터링크(예를 들어, 버스)(730)를 통해 서로 통신할 수 있다.
처리 디바이스(702)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낼 수 있다. 더 특별하게는, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(702)는 또한 애플리케이션 특화 집적 회로(ASIC; application specific integrated circuit), 필드 프로그래밍가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(702)는 본 명세서에서 설명한 동작 및 단계를 수행하기 위한 명령어(726)를 실행하도록 구성될 수 있다. 컴퓨터 시스템(700)은 네트워크(720)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(708)를 더 포함할 수 있다.
데이터 저장 시스템(718)은 본 명세서에서 설명되는 방법론 또는 기능 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(726) 또는 소프트웨어가 저장되는 머신 판독가능 저장 매체(724)(컴퓨터 판독가능 매체라고도 알려짐)를 포함할 수 있다. 명령어(726)는, 머신 판독가능 저장 매체를 또한 구성하는 컴퓨터 시스템(700), 주 메모리(704) 및 처리 디바이스(702)에 의한 실행 동안 주 메모리(704) 내에 또는 처리 디바이스(702) 내에, 완전히 또는 적어도 부분적으로, 상주할 수도 있다. 머신 판독가능 저장 매체(724), 데이터 저장 시스템(718) 또는 주 메모리(704)는 도 1의 메모리 디바이스(110)에 대응할 수 있다.
한 구현예에서, 명령어(726)는 도 2 또는 도 3과 관련하여 전술한 하나 이상의 호스트 상주 FTL 동작에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 머신 판독가능 저장 매체(724)가 예시적인 구현예에서 단일 매체인 것으로 도시되어 있지만, 용어 "머신 판독가능 저장 매체"는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다수의 매체를 포함하는 것으로 간주되어야 한다. 용어 "머신 판독가능 저장 매체"는 또한 머신에 의한 실행을 위한 명령어 세트를 저장 또는 인코딩할 수 있고 머신이 본 개시의 방법론 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, 용어 "머신 판독가능 저장 매체"는, 이로만 제한되는 것은 아니지만 고체 상태 메모리, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다. 일례에서, 매스-머신 판독가능 매체(massed machine-readable medium)는 불변(예를 들어, 정지(rest)) 질량을 갖는 복수의 입자를 갖는 머신 판독가능 매체를 포함한다. 따라서, 매스-머신 판독가능 매체는 일시적인 전파 신호가 아니다. 매스-머신 판독가능 매체의 특정 예는 반도체 메모리 디바이스(예를 들어, 전기적 프로그래밍가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그래밍가능 판독전용 메모리(EEPROM)) 및 플래시 메모리 디바이스와 같은 비휘발성 메모리; 내부 하드 디스크 및 착탈식 디스크와 같은 자기디스크; 광-자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함할 수 있다.
머신(700)은 디스플레이 유닛, 영숫자(alphanumeric) 입력 디바이스(예를 들어, 키보드), 및 사용자 인터페이스(UI) 내비게이션 디바이스(예를 들어, 마우스)를 더 포함할 수 있다. 일례에서, 디스플레이 유닛, 입력 디바이스 또는 UI 내비게이션 디바이스 중 하나 이상은 터치스크린 디스플레이일 수 있다. 머신은 신호 생성 디바이스(예를 들어, 스피커), 또는 GPS(Global Positioning System) 센서, 나침반, 가속도계 또는 하나 이상의 다른 센서와 같은, 하나 이상의 센서를 포함할 수 있다. 머신(700)은 하나 이상의 주변 디바이스(예를 들어, 프린터, 카드 리더기 등)와 통신하거나 이들을 제어하기 위해 직렬(예를 들어, 유니버셜 시리얼 버스(USB), 병렬, 또는 다른 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC) 등) 연결과 같은, 출력 컨트롤러를 포함할 수 있다.
명령어(726)(예를 들어, 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 다른 데이터는 데이터 저장 디바이스(718)에 저장되고, 처리 디바이스(702)에 의한 사용을 위해 주 메모리(704)에 의해 액세스될 수 있다. 주 메모리(704)(예를 들어, DRAM)는 일반적으로 고속이지만 휘발성이며, 이에 따라 "오프" 상태에 있는 동안을 포함한, 장기간 저장에 적합한 데이터 저장 디바이스(718)(예를 들어, SSD)와는 다른 유형의 저장이다. 사용자 또는 머신(700)에 의해 이용되는 명령어(726) 또는 데이터는 일반적으로 처리 디바이스(702)에 의한 이용을 위해 주 메모리(704)에 로딩된다. 주 메모리(704)가 가득 찬 경우, 데이터 저장 디바이스(718)로부터의 가상 공간은 주 메모리(704)를 보충하도록 할당될 수 있으며; 그러나, 데이터 저장 디바이스(718)가 일반적으로 주 메모리(704)보다 느리고, 기록 속도가 일반적으로 판독 속도보다 적어도 2배 느리기 때문에, 가상 메모리의 이용은 (주 메모리(704), 예를 들어 DRAM과 대조적으로) 저장 디바이스 대기시간으로 인해 사용자 경험을 크게 저하시킬 수 있다. 또한, 가상 메모리를 위한 데이터 저장 디바이스(718)의 이용은 데이터 저장 디바이스(718)의 사용가능한 수명을 크게 저하시킬 수 있다.
가상 메모리와 대조적으로, 가상 메모리 압축(예를 들어, Linux™ 커널 피처 "ZRAM")은 메모리의 일부를 압축된 블록 저장소로 이용하여 데이터 저장 디바이스(718)로의 페이징(paging)을 회피한다. 페이징은 이러한 데이터를 데이터 저장 디바이스(718)에 기록할 필요가 있을 때까지 압축된 블록에서 일어난다. 가상 메모리 압축은 주 메모리(704)의 사용가능한 크기를 증가시키면서, 데이터 저장 디바이스(718)의 웨어를 감소시킨다.
모바일 전자 디바이스, 또는 모바일 저장에 최적화된 저장 디바이스는, 전통적으로 MMC 고체 상태 저장 디바이스(예를 들어, 마이크로 시큐어 디지털(microSD™) 카드 등)를 포함한다. MMC 디바이스는 호스트(예를 들어, 호스트 디바이스)와의 다수의 병렬 인터페이스(예를 들어, 8비트 병렬 인터페이스)를 포함하며, 종종 호스트로부터 착탈가능하고 별개인 구성요소이다. 대조적으로, eMMC™ 디바이스는 회로 기판에 부착되고 호스트의 구성요소로 간주되며, 이의 판독 속도는 직렬 ATA™(Serial AT(Advanced Technology) Attachment, 또는 SATA) 기반 SSD 디바이스에 필적한다. 그러나, 가상 또는 증강 현실 디바이스를 완전히 사용 가능하게 하고 증가하는 네트워크 속도를 활용하는 것 등과 같은 모바일 디바이스 성능에 대한 요구가 계속 증가하고 있다. 이러한 요구에 부응하여, 저장 디바이스는 병렬로부터 직렬 통신 인터페이스로 변천되었다. 컨트롤러 및 펌웨어를 포함하는, UFS(Universal Flash Storage) 디바이스는 전용 판독/기록 경로를 갖는 저전압 차동 신호(LVDS) 직렬 인터페이스를 사용하여 호스트와 통신하여, 더 빠른 판독/기록 속도를 더욱 향상시킨다.
명령어(724)는 또한 다수의 전송 프로토콜(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼텍스트 전송 프로토콜(HTTP) 등) 중 임의의 하나를 이용하는 네트워크 인터페이스 디바이스(708)를 통해 전송 매체를 사용하여 네트워크(720)를 통해 송신 또는 수신될 수 있다. 예시적인 통신 네트워크는, 특히 근거리 통신 네트워크(LAN), 광역 통신 네트워크(WAN), 패킷 데이터 네트워크(예를 들어, 인터넷), 모바일 전화 네트워크(예를 들어, 셀룰러 네트워크), POTS(Plain Old Telephone) 네트워크, 무선 데이터 네트워크(예를 들어, Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 계열, WiMax®로 알려진 IEEE 802.16 표준 계열), IEEE 802.15.4 표준 계열, 피어-투-피어(P2P) 네트워크를 포함할 수 있다. 일례에서, 네트워크 인터페이스 디바이스(708)는 네트워크(720)에 연결하기 위한 하나 이상의 물리 잭(예를 들어, 이더넷, 동축, 또는 전화 잭) 또는 하나 이상의 안테나를 포함할 수 있다. 일례에서, 네트워크 인터페이스 디바이스(708)는 단일-입력 다중-출력(SIMO), 다중-입력 다중-출력(MIMO), 또는 다중-입력 단일-출력(MISO) 기술 중 적어도 하나를 이용하여 무선으로 통신하기 위한 복수의 안테나를 포함할 수 있다. 용어 "전송 매체"는 머신(700)에 의한 실행을 위한 명령어를 저장, 인코딩 또는 수송할 수 있는 임의의 무형(intangible) 매체를 포함하는 것으로 간주되어야 하며, 이러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호 또는 다른 무형 매체를 포함한다.
추가 노트 및 실시예
실시예 1은 다음 단계를 포함하는 방법이다: 메모리 디바이스로부터 호스트로 매핑 테이블 정보를 제공하는 단계; 상기 메모리 디바이스에서 상기 호스트로부터 기록 커맨드 및 기록 데이터를 수신하는 단계; 상기 메모리 디바이스에서 기록 커맨드를 실행하여 상기 메모리 디바이스의 물리 블록에 상기 기록 데이터를 저장하는 단계; 및 상기 메모리 디바이스에서 응답 정보를 암호화하는 단계로서, 상기 응답 정보는 물리 블록의 물리 어드레스를 포함하는 것인, 단계; 및 상기 기록 커맨드에 대한 응답으로, 상기 암호화된 응답 정보를 포함하는, 응답 메시지를 상기 호스트에 전송하는 단계.
실시예 2에서는, 실시예 1의 발명 주제에 있어서, 메모리 디바이스에서 호스트로부터 메모리 유지관리 커맨드를 수신하는 단계를 포함하며, 상기 메모리 유지관리 커맨드는 암호화된 응답 정보의 적어도 일부를 포함한다.
실시예 3에서는, 실시예 2의 발명 주제에 있어서, 메모리 디바이스에서 암호화된 응답 정보를 복호화하여 물리 어드레스를 제공하는 단계를 포함한다.
실시예 4에서는, 실시예 3의 발명 주제에 있어서, 메모리 유지관리 커맨드가 가비지 수집 커맨드이다.
실시예 5에서는, 실시예 4의 발명 주제에 있어서, 방법이 물리 어드레스에 의해 표현되는 메모리 디바이스의 물리적 메모리 블록에서 가비지 수집을 실행하는 단계를 포함한다.
실시예 6에서는, 실시예 4 내지 5 중 어느 하나의 발명 주제에 있어서, 물리 어드레스가 메모리 디바이스의 유효한 물리 어드레스가 아님을 결정하는 단계; 및 가비지 수집 커맨드에 대한 응답으로 가비지 수집 절차를 실행하지 않는 단계를 포함한다.
실시예 7에서는, 실시예 3 내지 6 중 어느 하나의 발명 주제에 있어서, 메모리 유지관리 커맨드가 웨어 레벨링 커맨드이다.
실시예 8에서는, 실시예 7의 발명 주제에 있어서, 물리 어드레스로 표현되는 메모리 디바이스의 메모리의 물리 블록에서 웨어 레벨링 절차를 실행하는 단계를 포함한다.
실시예 9에서는, 실시예 7 내지 8 중 어느 하나의 발명 주제에 있어서, 물리 어드레스가 메모리 디바이스의 유효한 물리 어드레스가 아님을 결정하는 단계; 및 웨어 레벨링 커맨드에 대한 응답으로 웨어 레벨링 절차를 실행하지 않는 단계를 포함한다.
실시예 10에서는, 실시예 1 내지 9 중 어느 하나의 발명 주제에 있어서, 응답 정보가 비밀을 포함하고; 상기 응답 정보를 복호화하는 단계가 상기 비밀을 이용하여 상기 응답 정보를 복호화하는 단계를 포함한다.
실시예 11에서는, 실시예 1 내지 10 중 어느 하나의 발명 주제에 있어서, 물리 블록이 플래시 메모리를 포함한다.
실시예 12에서는, 실시예 11의 주제에있어서, 플래시 메모리가 NAND 메모리를 포함한다.
실시예 13은, 호스트에서 외부 플래시 메모리 시스템의 매핑 테이블 정보 및 메모리 통계를 유지 관리하는 단계; 상기 호스트로부터 상기 외부 플래시 메모리 시스템으로 기록 커맨드 및 기록 데이터를 전송하는 단계; 상기 기록 커맨드에 대한 응답으로 상기 외부 플래시 메모리 시스템으로부터 암호화된 응답 정보를 수신하는 단계; 상기 암호화된 응답 정보를 사용하여 상기 호스트에서 상기 외부 플래시 메모리 시스템의 메모리 통계를 업데이트하는 단계; 및 상기 암호화된 응답 정보와 관련된 메모리 통계가 관리 임계값을 만족할 때, 메모리 유지관리 커맨드를 전송하는 단계를 포함하는 방법이며; 상기 메모리 유지관리 커맨드는 상기 암호화된 응답 정보를 포함한다.
실시예 14에서는, 실시예 13의 발명 주제에 있어서, 암호화된 응답 정보가 비밀을 포함한다.
실시예 15에서는, 실시예 14의 발명 주제에 있어서, 외부 플래시 메모리 시스템의 메모리 통계를 유지하는 단계가 비밀을 이용하여 암호화된 응답 정보를 복호화하여 외부 플래시 메모리 시스템의 물리 어드레스를 제공하는 단계를 포함한다.
실시예 16에서는, 실시예 15의 발명 주제에 있어서, 외부 플래시 메모리 시스템의 메모리 통계를 유지하는 단계가 물리 어드레스를 이용하여 매핑 테이블 정보를 업데이트하는 단계를 포함한다.
실시예 17에서는, 실시예 15 내지 16 중 어느 하나의 발명 주제에 있어서, 외부 플래시 메모리 시스템의 메모리 통계를 유지하는 단계가 물리 어드레스를 이용하여 유효한 데이터 카운트 통계를 유지 관리하는 단계를 포함한다.
실시예 18에서는, 실시예 15 내지 17 중 어느 하나의 발명 주제에 있어서, 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계가 물리 어드레스를 이용하여 가득 찬(full)/비어 있는(empty) 상태 통계를 유지 관리하는 단계를 포함한다.
실시예 19에서는, 실시예 15 내지 18 중 어느 하나의 발명 주제에 있어서, 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계가 물리 어드레스를 이용하여 마지막 기록 통계 이후 시간을 유지 관리하는 단계를 포함한다.
실시예 20에서는, 실시예 13 내지 19 중 어느 하나의 발명 주제에 있어서, 메모리 유지관리 커맨드가 가비지 수집 커맨드이다.
실시예 21에서는, 실시예 13 내지 20 중 어느 하나의 발명 주제에 있어서, 메모리 유지관리 커맨드가 웨어 레벨링 커맨드이다.
실시예 22는, 처리 회로에 의해 실행될 때, 처리 회로가 실시예 1 내지 실시예 21 중 어느 하나를 구현하기 위한 동작을 수행하게 하는 명령어를 포함하는 적어도 하나의 머신 판독가능 매체이다.
실시예 23은, 실시예 1 내지 21 중 어느 하나를 구현하기 위한 수단을 포함하는 장치이다.
실시예 24는, 실시예 1 내지 21 중 어느 하나를 구현하기 위한 시스템이다.
실시예 25는, 실시예 1 내지 21 중 어느 하나를 구현하기 위한 방법이다.
상기 상세한 설명은, 상세한 설명의 일부를 형성하는 첨부 도면에 대한 참조를 포함한다. 도면은, 예시로서, 본 발명을 실시할 수 있는 특정 실시형태를 보여준다. 이들 실시형태는 본 명세서에서 "실시예"라고도 지칭된다. 이러한 실시예는 나타내거나 설명된 것 이외의 요소를 포함할 수 있다. 그러나, 본 발명자들은 또한 나타내거나 설명된 해당 요소만으로 제공되는 실시예도 고려한다. 또한, 본 발명자들은 특정 실시예(또는 이의 하나 이상의 양상)와 관련하여, 또는 본 명세서에 나타내거나 설명된 다른 실시예(또는 이의 하나 이상의 양상)와 관련하여, 나타내거나 설명된 해당 요소(또는 이의 하나 이상의 양상)의 임의의 조합 또는 순열을 이용하는 실시예도 고려한다.
본 명세서에서, 용어 "a" 또는 "an"은, 특허 문헌에서 일반적인 바와 같이, "적어도 하나" 또는 "하나 이상"의 임의의 다른 경우 또는 사용과 무관하게, 하나 또는 둘 이상을 포함하는 것으로 사용된다. 본 명세서에서, 용어 "또는"은 비배타적인 것을 지칭하거나, 또는 달리 표시하지 않는 한, "A 또는 B"가 "A이지만 B가 아닌", "B이지만 A가 아닌", 및 "A와 B"를 포함할 수 있도록 사용된다. 첨부된 청구범위에서, 용어 "포함하는(including)" 및 "여기서(in which)"는 각각의 평이한 영어 용어인 "포함하는(comprising)" 및 "여기서(wherein)"와 동등한 의미로 사용된다. 또한, 아래 청구범위에서, 용어 "포함하는(including)" 및 "포함하는(comprising)"은 개방형이다. 청구항에서 이러한 용어 뒤에 열거된 요소 이외의 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 해당 청구항의 범위에 속하는 것으로 간주된다. 또한, 아래 청구범위에서, 용어 "제1", "제2", 및 "제3" 등은 단지 라벨로 사용되며, 이들의 지칭대상에 대해 수치적 요구사항을 부여하기 위해 의도된 것은 아니다.
다양한 실시예에서, 본 명세서에서 설명된 구성요소, 컨트롤러, 프로세서, 유닛, 엔진, 또는 테이블은 특히 물리 디바이스에 저장된 물리 회로 또는 펌웨어를 포함할 수 있다. 본 명세서에서 사용된 것과 같은, "프로세서"는, 이로만 제한되는 것은 아니지만, 프로세서 또는 멀티-코어 디바이스의 그룹을 포함하는, 마이크로프로세서, 마이크로컨트롤러, 그래픽 프로세서, 디지털 신호 프로세서(DSP), 또는 임의의 다른 유형의 프로세서 또는 처리 회로와 같은 임의의 유형의 연산 회로를 의미한다.
본 명세서에서 사용된 것과 같은, 메모리 셀을 동작시키는 것은 메모리 셀로부터 판독하는 것, 이에 기록하는 것, 또는 이를 소거하는 것을 포함한다. 의도된 상태로 메모리 셀을 배치하는 동작은 본 명세서에서 "프로그래밍"으로 지칭되며, 메모리 셀에 기록하는 것 또는 이로부터 소거하는 것 둘 다를 포함할 수 있다(예를 들어, 메모리 셀은 소거된 상태로 프로그램될 수 있다).
NOR 또는 NAND 아키텍처 반도체 메모리 어레이의 각 플래시 메모리 셀은 하나 또는 다수의 프로그래밍된 상태로 개별적으로 또는 집합적으로 프로그래밍될 수 있다. 예를 들어, 단일 레벨 셀(SLC)은, 1 비트의 데이터를 나타내는, 2가지 프로그래밍된 상태(예를 들어, 1 또는 0) 중 하나를 나타낼 수 있다. 그러나, 플래시 메모리 셀은 또한 2가지 이상의 프로그래밍된 상태 중 하나를 나타낼 수 있어, 각 셀이 하나 이상의 2진 숫자(예를 들어, 1 비트 이상)를 나타낼 수 있으므로, 메모리 셀 수의 증가 없이 더 높은 밀도의 메모리를 제조할 수 있다. 이러한 셀은 다중 상태 메모리 셀, 다중 숫자 셀, 또는 다중 레벨 셀(MLC)로 지칭될 수 있다. 특정의 예들에서, MLC는 셀당 2 비트의 데이터를 저장할 수 있는 메모리 셀(예를 들어, 4가지의 프로그래밍된 상태 중 하나)을 지칭할 수 있고, 트리플 레벨 셀(TLC)은 셀당 3 비트의 데이터(예를 들어, 8가지의 프로그래밍된 상태 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있으며, 쿼드 레벨 셀(QLC)은 셀당 4 비트의 데이터를 저장할 수 있다. 표현 언어 또는 문맥에 의해 달리 명확하게 표시되지 않는 한, MLC는 셀당 1 비트 이상의 데이터를 저장할 수 있는(즉, 2가지 이상의 프로그래밍된 상태를 나타낼 수 있는) 메모리 셀을 지칭하기 위해, 더 넓은 맥락으로 본 명세서에서 사용된다.
본 개시의 하나 이상의 실시형태에 따르면, 메모리 디바이스의 내부 또는 외부에 배치된 메모리 컨트롤러(예를 들어, 프로세서, 컨트롤러, 펌웨어 등)는 웨어 사이클의 수량, 또는 웨어 상태(예를 들어, 웨어 사이클의 기록, 이들이 발생하는 메모리 디바이스의 동작의 카운팅, 이것이 개시하는 메모리 디바이스의 동작의 트랙킹, 웨어 상태에 대응하는 메모리 디바이스 특성의 평가 등)를 결정(예를 들어, 선택, 설정, 조정, 연산, 변경, 클리어링, 통신, 적응, 유도, 정의, 이용, 수정, 적용 등)할 수 있다.
본 개시의 하나 이상의 실시형태에 따르면, 메모리 액세스 디바이스는 각 메모리 동작에 의해 메모리 디바이스에 웨어 사이클 정보를 제공하도록 구성될 수 있다. 메모리 디바이스 제어 회로(예를 들어, 제어 로직)는 웨어 사이클 정보에 대응하는 메모리 디바이스 성능 변화를 보상하도록 프로그램될 수 있다. 메모리 디바이스는 웨어 사이클 정보를 수신하고 웨어 사이클 정보에 대한 응답으로 하나 이상의 동작 매개변수(예를 들어, 값, 특성)를 결정할 수 있다.
본 명세서에서 설명된 방법 실시예는 적어도 부분적으로 머신, 디바이스 또는 컴퓨터로 구현될 수 있다. 일부 실시예는 상기 실시예에서 설명된 바와 같은 방법을 수행하기 위한 전자 디바이스를 구성하도록 동작 가능한 명령어로 인코딩된 컴퓨터 판독가능 매체, 디바이스 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 이러한 방법의 구현예는 마이크로코드, 어셈블리 언어 코드, 고급 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법을 수행하기 위한 컴퓨터 판독가능 명령어를 포함할 수 있다. 코드는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 또한, 코드는, 예를 들어, 실행 중 또는 다른 시간에 하나 이상의 휘발성 또는 비휘발성의 유형의 컴퓨터 판독가능 매체에 유형으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독가능 매체의 예는 하드 디스크, 착탈식 자기 디스크, 착탈식 광 디스크(예를 들어, 컴팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 고체 상태 드라이브(SSD), UFS(Universal Flash Storage) 디바이스, 임베디드 MMC(eMMC) 디바이스 등을 포함할 수 있지만, 이에 한정되지 않는다.
상기 설명은 제한적이 아니라 예시적으로 의도된 것이다. 예를 들어, 전술한 실시예(또는 이의 하나 이상의 양상)는 서로 조합하여 사용될 수 있다. 예컨대, 당업자가 상기 설명을 검토할 때, 다른 실시형태를 사용할 수 있다. 이것은 청구범위의 범위 또는 의미를 해석하거나 한정하는 데 사용되지 않을 것이라는 이해에 따라 제출된다. 또한, 상기 상세한 설명에서, 다양한 특징이 함께 그룹화되어 본 개시를 간소화할 수 있다. 이것은 청구되지 않은 개시된 특징이 임의의 청구항에 필수적이라는 것을 의도한 것으로 해석되지 않아야 한다. 오히려, 본 발명의 주제는 특정 개시된 실시형태의 모든 특징보다 더 적을 수 있다. 따라서, 이하의 청구범위는 상세한 설명에 포함되며, 각 청구항은 그 자체가 별개의 실시형태로서 독립되어 있으며, 이러한 실시형태는 다양한 조합 또는 순열로 서로 조합될 수 있는 것으로 고려된다. 본 발명의 범위는 첨부된 청구범위를 참조하여, 이러한 청구범위에 부여되는 균등물의 전체 범위와 함께 결정되어야 한다.
Claims (21)
- 방법으로서,
메모리 디바이스로부터 호스트로 매핑 테이블 정보를 제공하는 단계;
상기 메모리 디바이스에서 상기 호스트로부터 기록 커맨드 및 기록 데이터를 수신하는 단계;
상기 메모리 디바이스에서 상기 기록 커맨드를 실행하여 상기 메모리 디바이스의 물리 블록에 상기 기록 데이터를 저장하는 단계;
상기 메모리 디바이스에서 응답 정보를 암호화하여 암호화된 응답 정보를 제공하는 단계 - 상기 암호화된 응답 정보는 상기 호스트에서 복호화될 때 제1 블록의 어드레스를 드러내도록 구성되고, 상기 제1 블록의 어드레스는 상기 호스트에 상기 메모리 디바이스의 실제 물리 블록의 어드레스를 표시하지 않음 -; 및
상기 기록 커맨드에 대한 응답으로, 상기 암호화된 응답 정보를 포함하는 응답 메시지를 호스트에 전송하는 단계
를 포함하는, 방법. - 제1항에 있어서, 상기 메모리 디바이스에서 상기 호스트로부터 메모리 유지관리 커맨드를 수신하는 단계를 포함하고, 상기 메모리 유지관리 커맨드가 상기 암호화된 응답 정보의 적어도 일부를 포함하는, 방법.
- 제2항에 있어서, 상기 메모리 디바이스에서 상기 암호화된 응답 정보를 복호화하여 상기 메모리 디바이스의 제1 물리 어드레스를 제공하는 단계를 포함하는, 방법.
- 제3항에 있어서, 상기 메모리 유지관리 커맨드가 가비지 수집 커맨드인, 방법.
- 제4항에 있어서, 상기 방법이 상기 제1 물리 어드레스에 의해 표현되는 상기 메모리 디바이스의 메모리의 물리 블록에서 가비지 수집을 실행하는 단계를 포함하는, 방법.
- 제4항에 있어서, 상기 제1 물리 어드레스가 상기 메모리 디바이스의 유효한 물리 어드레스가 아님을 결정하는 단계; 및
상기 가비지 수집 커맨드에 대한 응답으로 가비지 수집 절차를 실행하지 않는 단계를 포함하는, 방법. - 제3항에 있어서, 상기 메모리 유지관리 커맨드가 웨어 레벨링 커맨드인, 방법.
- 제7항에 있어서, 상기 제1 물리 어드레스에 의해 표현되는 상기 메모리 디바이스의 메모리의 물리 블록에서 웨어 레벨링 절차를 실행하는 단계를 포함하는, 방법.
- 제7항에 있어서, 상기 제1 물리 어드레스가 상기 메모리 디바이스의 유효한 물리 어드레스가 아님을 결정하는 단계; 및
상기 웨어 레벨링 커맨드에 대한 응답으로 웨어 레벨링 절차를 실행하지 않는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 응답 정보는 비밀을 포함하고;
상기 응답 정보를 복호화하는 것은 상기 비밀을 이용하여 상기 응답 정보를 복호화하는 것을 포함하는, 방법. - 제1항에 있어서, 상기 물리 블록이 플래시 메모리를 포함하는, 방법.
- 제11항에 있어서, 상기 플래시 메모리가 NAND 메모리를 포함하는, 방법.
- 방법으로서,
호스트에서 외부 플래시 메모리 시스템의 매핑 테이블 정보 및 메모리 통계를 유지 관리하는 단계;
상기 호스트로부터 상기 외부 플래시 메모리 시스템으로 기록 커맨드 및 기록 데이터를 전송하는 단계;
상기 기록 커맨드에 대한 응답으로 상기 외부 플래시 메모리 시스템으로부터 제1 암호화된 부분을 포함하는 암호화된 응답 정보를 수신하는 단계;
상기 호스트에서 상기 제1 암호화된 부분을 복호화하여 상기 기록 데이터와 관련된 제1 블록의 어드레스를 얻는 단계 - 상기 제1 블록의 어드레스는 메모리 디바이스의 실제 물리 블록의 어드레스를 나타내지 않음 -;
상기 제1 블록의 어드레스를 이용하여 상기 호스트에서 상기 외부 플래시 메모리 시스템의 메모리 통계를 업데이트하는 단계; 및
상기 제1 블록의 어드레스와 관련된 메모리 통계가 관리 임계값을 만족할 때, 메모리 유지관리 커맨드를 전송하는 단계
를 포함하며,
상기 메모리 유지관리 커맨드는 상기 암호화된 응답 정보의 상기 제1 암호화된 부분을 포함하는, 방법. - 제13항에 있어서, 상기 암호화된 응답 정보가 비밀을 포함하는, 방법.
- 제14항에 있어서, 상기 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계는 상기 비밀을 이용하여 상기 암호화된 응답 정보를 복호화하여 상기 외부 플래시 메모리 시스템의 제1 물리 어드레스를 제공하는 단계를 포함하고, 상기 제1 물리 어드레스는 상기 외부 플래시 메모리의 실제 물리 어드레스가 아닌, 방법.
- 제15항에 있어서, 상기 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계는 상기 제1 물리 어드레스를 이용하여 상기 매핑 테이블 정보를 업데이트하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계는 상기 제1 물리 어드레스를 이용하여 유효한 데이터 카운트 통계를 유지 관리하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계는 상기 제1 물리 어드레스를 이용하여 가득 찬(full)/비어 있는(empty) 상태 통계를 유지 관리하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 외부 플래시 메모리 시스템의 메모리 통계를 유지 관리하는 단계는 상기 제1 물리 어드레스를 이용하여 마지막 기록 통계 이후 시간을 유지 관리하는 단계를 포함하는, 방법.
- 제13항에 있어서, 상기 메모리 유지관리 커맨드가 가비지 수집 커맨드인, 방법.
- 제13항에 있어서, 상기 메모리 유지관리 커맨드가 웨어 레벨링 커맨드인, 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020227008946A KR20220038188A (ko) | 2018-12-21 | 2019-12-19 | 호스트 기반 플래시 메모리 유지관리 기술 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/230,313 | 2018-12-21 | ||
US16/230,313 US11226894B2 (en) | 2018-12-21 | 2018-12-21 | Host-based flash memory maintenance techniques |
PCT/US2019/067531 WO2020132274A1 (en) | 2018-12-21 | 2019-12-19 | Host-based flash memory maintenance techniques |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227008946A Division KR20220038188A (ko) | 2018-12-21 | 2019-12-19 | 호스트 기반 플래시 메모리 유지관리 기술 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210075207A KR20210075207A (ko) | 2021-06-22 |
KR102377365B1 true KR102377365B1 (ko) | 2022-03-22 |
Family
ID=71097701
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217017849A KR102377365B1 (ko) | 2018-12-21 | 2019-12-19 | 호스트 기반 플래시 메모리 유지관리 기술 |
KR1020227008946A KR20220038188A (ko) | 2018-12-21 | 2019-12-19 | 호스트 기반 플래시 메모리 유지관리 기술 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227008946A KR20220038188A (ko) | 2018-12-21 | 2019-12-19 | 호스트 기반 플래시 메모리 유지관리 기술 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11226894B2 (ko) |
EP (1) | EP3899731A4 (ko) |
JP (1) | JP2022522595A (ko) |
KR (2) | KR102377365B1 (ko) |
CN (1) | CN113439264A (ko) |
TW (2) | TW202141267A (ko) |
WO (1) | WO2020132274A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687469B2 (en) | 2018-12-19 | 2023-06-27 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
US11734170B2 (en) | 2018-08-03 | 2023-08-22 | Micron Technology, Inc. | Host-resident translation layer validity check |
US11809311B2 (en) | 2018-12-21 | 2023-11-07 | Micron Technology, Inc. | Host-based flash memory maintenance techniques |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12079513B2 (en) | 2021-04-06 | 2024-09-03 | Micron Technology, Inc. | Log management maintenance operation and command |
US11556482B1 (en) * | 2021-09-30 | 2023-01-17 | International Business Machines Corporation | Security for address translation services |
CN117632042B (zh) * | 2024-01-25 | 2024-04-30 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189485A1 (en) | 2007-02-01 | 2008-08-07 | Samsung Electronics Co., Ltd. | Cooperative memory management |
US20110082967A1 (en) | 2009-10-05 | 2011-04-07 | Deshkar Shekhar S | Data Caching In Non-Volatile Memory |
US20130159766A1 (en) | 2011-12-20 | 2013-06-20 | Sandisk Technologies Inc. | Wear leveling of memory devices |
US20130166822A1 (en) | 2011-12-23 | 2013-06-27 | International Business Machines Corporation | Solid-state storage management |
US20150293858A1 (en) | 2011-04-29 | 2015-10-15 | Seagate Technology Llc | Encrypted Transport Solid-State Disk Controller |
US20160217089A1 (en) | 2015-01-22 | 2016-07-28 | Lite-On Technology Corporation | System with solid state drive and control method thereof |
US20180060607A1 (en) | 2016-08-30 | 2018-03-01 | Winbond Electronics Corporation | Anti-Rollback Version Upgrade in Secured Memory Chip |
US20190129838A1 (en) | 2017-10-27 | 2019-05-02 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812861A (en) * | 1995-06-22 | 1998-09-22 | Intel Corporation | Override signal for forcing a powerdown of a flash memory |
JPH09252323A (ja) | 1996-01-11 | 1997-09-22 | Sony Corp | 通信システムおよび通信装置 |
US6345347B1 (en) | 1999-09-27 | 2002-02-05 | International Business Machines Corporation | Address protection using a hardware-defined application key |
US7134138B2 (en) | 2001-02-15 | 2006-11-07 | Emc Corporation | Methods and apparatus for providing security for a data storage system |
JP3866597B2 (ja) | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
US8060756B2 (en) | 2003-08-07 | 2011-11-15 | Rao G R Mohan | Data security and digital rights management system |
US20080082736A1 (en) | 2004-03-11 | 2008-04-03 | Chow David Q | Managing bad blocks in various flash memory cells for electronic data flash card |
JP4698982B2 (ja) * | 2004-04-06 | 2011-06-08 | 株式会社日立製作所 | 暗号処理を行うストレージシステム |
JP4447977B2 (ja) | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
US7085190B2 (en) | 2004-09-16 | 2006-08-01 | Stmicroelectronics, Inc. | Variable boost voltage row driver circuit and method, and memory device and system including same |
US20060294299A1 (en) | 2005-06-28 | 2006-12-28 | Intel Corporation | Techniques to verify storage of information |
JP4932390B2 (ja) | 2006-08-31 | 2012-05-16 | 株式会社日立製作所 | 仮想化システム及び領域割当て制御方法 |
US7681008B2 (en) | 2006-09-29 | 2010-03-16 | Sandisk Corporation | Systems for managing file allocation table information |
US8161353B2 (en) | 2007-12-06 | 2012-04-17 | Fusion-Io, Inc. | Apparatus, system, and method for validating that a correct data segment is read from a data storage device |
US8489886B2 (en) | 2007-10-03 | 2013-07-16 | International Business Machines Corporation | Double authentication for controlling disruptive operations on storage resources |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
JP2010146326A (ja) | 2008-12-19 | 2010-07-01 | Toshiba Storage Device Corp | 記憶装置、その制御方法及びその記憶装置を用いた電子装置 |
US8412909B2 (en) | 2009-04-08 | 2013-04-02 | Samsung Electronics Co., Ltd. | Defining and changing spare space and user space in a storage apparatus |
US8176295B2 (en) | 2009-04-20 | 2012-05-08 | Imation Corp. | Logical-to-physical address translation for a removable data storage device |
KR101635502B1 (ko) | 2009-07-22 | 2016-07-01 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 프로그램 방법 |
US8539148B1 (en) * | 2010-12-22 | 2013-09-17 | Emc Corporation | Deduplication efficiency |
WO2012127266A1 (en) | 2011-03-23 | 2012-09-27 | Sandisk Il Ltd. | Storage device and method for updating data in a partition of the storage device |
US9164887B2 (en) * | 2011-12-05 | 2015-10-20 | Industrial Technology Research Institute | Power-failure recovery device and method for flash memory |
WO2013095381A1 (en) | 2011-12-20 | 2013-06-27 | Intel Corporation | Method and system for data de-duplication |
KR20130081526A (ko) | 2012-01-09 | 2013-07-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 |
CN104246742B (zh) | 2012-01-17 | 2017-11-10 | 英特尔公司 | 用于远程客户端访问存储设备的命令验证的技术 |
JP5687648B2 (ja) * | 2012-03-15 | 2015-03-18 | 株式会社東芝 | 半導体記憶装置およびプログラム |
US20130269039A1 (en) | 2012-04-04 | 2013-10-10 | Infinidat Ltd. | Data access control |
US9003150B2 (en) | 2012-04-26 | 2015-04-07 | Hitachi, Ltd. | Tiered storage system configured to implement data relocation without degrading response performance and method |
US9244833B2 (en) | 2012-05-30 | 2016-01-26 | Silicon Motion, Inc. | Data-storage device and flash memory control method |
US9146920B2 (en) | 2012-09-10 | 2015-09-29 | Netronome Systems, Inc. | Transactional memory that performs an atomic look-up, add and lock operation |
KR20140057454A (ko) | 2012-11-02 | 2014-05-13 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이와 통신하는 호스트 장치 |
US9164888B2 (en) * | 2012-12-10 | 2015-10-20 | Google Inc. | Using a logical to physical map for direct user space communication with a data storage device |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9407642B2 (en) | 2013-03-13 | 2016-08-02 | Samsung Electronics Co., Ltd. | Application access control method and electronic apparatus implementing the same |
US9823872B2 (en) | 2013-03-15 | 2017-11-21 | Skyera, Llc | Apparatus and method for translation from multi-dimensional to linear address space in storage |
US9898404B2 (en) | 2013-07-14 | 2018-02-20 | Cnex Labs | Method and apparatus for providing improved garbage collection process in solid state drive |
TWI516921B (zh) * | 2013-10-02 | 2016-01-11 | 群聯電子股份有限公司 | 資料處理方法、記憶體儲存裝置與記憶體控制電路單元 |
US9336412B2 (en) | 2013-12-12 | 2016-05-10 | Hitachi, Ltd. | Storage system and method for controlling storage system |
KR102140792B1 (ko) | 2013-12-24 | 2020-08-03 | 삼성전자주식회사 | 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들 |
CN104794063A (zh) | 2014-01-17 | 2015-07-22 | 光宝科技股份有限公司 | 一种具备电阻式存储器的固态储存装置的控制方法 |
US9594580B2 (en) * | 2014-04-09 | 2017-03-14 | Bitspray Corporation | Secure storage and accelerated transmission of information over communication networks |
KR20150126232A (ko) | 2014-05-02 | 2015-11-11 | 삼성전자주식회사 | 암호화 데이터 결정 방법 및 이를 제공하는 호스트 장치 |
KR102148889B1 (ko) | 2014-08-18 | 2020-08-31 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
US9411539B2 (en) | 2014-09-24 | 2016-08-09 | International Business Machines Corporation | Providing access information to a storage controller to determine a storage tier for storing data |
US9489317B2 (en) | 2014-09-26 | 2016-11-08 | Apple Inc. | Method for fast access to a shared memory |
CN106033319A (zh) | 2015-03-11 | 2016-10-19 | 广明光电股份有限公司 | 固态硬盘动态建立转换层的方法 |
US9645757B2 (en) | 2015-03-23 | 2017-05-09 | International Business Machines Corporation | Computer memory data security |
US9749319B2 (en) | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
US20170093823A1 (en) * | 2015-09-25 | 2017-03-30 | Vinodh Gopal | Encrypting Observable Address Information |
WO2017066601A1 (en) | 2015-10-16 | 2017-04-20 | Huang Yiren Ronnie | Method and apparatus for providing hybrid mode to access ssd drive |
US20170177497A1 (en) | 2015-12-21 | 2017-06-22 | Qualcomm Incorporated | Compressed caching of a logical-to-physical address table for nand-type flash memory |
KR20170081118A (ko) | 2015-12-30 | 2017-07-11 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법 |
US10229051B2 (en) | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
JP6448570B2 (ja) * | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10380069B2 (en) | 2016-05-04 | 2019-08-13 | Western Digital Technologies, Inc. | Generalized write operations verification method |
US9967096B2 (en) | 2016-05-23 | 2018-05-08 | Accenture Global Solutions Limited | Rewritable blockchain |
US10489289B1 (en) | 2016-09-30 | 2019-11-26 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and trim |
KR102643916B1 (ko) | 2016-10-18 | 2024-03-08 | 삼성전자주식회사 | 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법 |
US10620846B2 (en) | 2016-10-26 | 2020-04-14 | ScaleFlux, Inc. | Enhancing flash translation layer to improve performance of databases and filesystems |
US10235069B2 (en) | 2016-12-22 | 2019-03-19 | Western Digital Technologies, Inc. | Load balancing by dynamically transferring memory range assignments |
US10635584B2 (en) | 2017-06-29 | 2020-04-28 | Western Digital Technologies, Inc. | System and method for host system memory translation |
US10430117B2 (en) | 2017-10-23 | 2019-10-01 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
TWI641966B (zh) * | 2018-01-15 | 2018-11-21 | 群聯電子股份有限公司 | 記憶體儲存系統、主機系統驗證方法及記憶體儲存裝置 |
US10997066B2 (en) | 2018-02-20 | 2021-05-04 | Samsung Electronics Co., Ltd. | Storage devices that support cached physical address verification and methods of operating same |
JP7074519B2 (ja) | 2018-03-19 | 2022-05-24 | キオクシア株式会社 | メモリシステム、および、メモリ制御方法 |
US10510419B1 (en) | 2018-06-28 | 2019-12-17 | Micron Technology, Inc. | Monitoring and charging inhibit bit-line |
US11036651B2 (en) * | 2018-06-29 | 2021-06-15 | Micron Technology, Inc. | Host side caching security for flash memory |
US10459845B1 (en) | 2018-06-29 | 2019-10-29 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
KR20210028264A (ko) | 2018-08-03 | 2021-03-11 | 마이크론 테크놀로지, 인크. | 호스트 상주 변환 레이어 유효성 검사 |
US11263124B2 (en) | 2018-08-03 | 2022-03-01 | Micron Technology, Inc. | Host-resident translation layer validity check |
US10923202B2 (en) | 2018-08-03 | 2021-02-16 | Micron Technology, Inc. | Host-resident translation layer triggered host refresh |
US10852964B2 (en) | 2018-09-25 | 2020-12-01 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
KR102567108B1 (ko) * | 2018-11-05 | 2023-08-14 | 삼성전자주식회사 | 데이터 스토리지 디바이스 및 데이터 스토리지 시스템 |
US11144635B2 (en) * | 2018-11-06 | 2021-10-12 | International Business Machines Corporation | Restricted command set management in a data storage system |
US11226907B2 (en) | 2018-12-19 | 2022-01-18 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
US11226894B2 (en) | 2018-12-21 | 2022-01-18 | Micron Technology, Inc. | Host-based flash memory maintenance techniques |
US11036625B1 (en) | 2020-04-24 | 2021-06-15 | Micron Technology, Inc. | Host-resident translation layer write command associated with logical block to physical address of a memory device |
-
2018
- 2018-12-21 US US16/230,313 patent/US11226894B2/en active Active
-
2019
- 2019-12-19 KR KR1020217017849A patent/KR102377365B1/ko active IP Right Grant
- 2019-12-19 JP JP2021535543A patent/JP2022522595A/ja active Pending
- 2019-12-19 TW TW110126065A patent/TW202141267A/zh unknown
- 2019-12-19 WO PCT/US2019/067531 patent/WO2020132274A1/en unknown
- 2019-12-19 CN CN201980083546.9A patent/CN113439264A/zh active Pending
- 2019-12-19 KR KR1020227008946A patent/KR20220038188A/ko not_active Application Discontinuation
- 2019-12-19 EP EP19898012.0A patent/EP3899731A4/en not_active Withdrawn
- 2019-12-19 TW TW108146582A patent/TWI737088B/zh active
-
2021
- 2021-08-09 US US17/397,393 patent/US11809311B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189485A1 (en) | 2007-02-01 | 2008-08-07 | Samsung Electronics Co., Ltd. | Cooperative memory management |
US20110082967A1 (en) | 2009-10-05 | 2011-04-07 | Deshkar Shekhar S | Data Caching In Non-Volatile Memory |
US20150293858A1 (en) | 2011-04-29 | 2015-10-15 | Seagate Technology Llc | Encrypted Transport Solid-State Disk Controller |
US20130159766A1 (en) | 2011-12-20 | 2013-06-20 | Sandisk Technologies Inc. | Wear leveling of memory devices |
US20130166822A1 (en) | 2011-12-23 | 2013-06-27 | International Business Machines Corporation | Solid-state storage management |
US20160217089A1 (en) | 2015-01-22 | 2016-07-28 | Lite-On Technology Corporation | System with solid state drive and control method thereof |
US20180060607A1 (en) | 2016-08-30 | 2018-03-01 | Winbond Electronics Corporation | Anti-Rollback Version Upgrade in Secured Memory Chip |
US20190129838A1 (en) | 2017-10-27 | 2019-05-02 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11734170B2 (en) | 2018-08-03 | 2023-08-22 | Micron Technology, Inc. | Host-resident translation layer validity check |
US11687469B2 (en) | 2018-12-19 | 2023-06-27 | Micron Technology, Inc. | Host-resident translation layer validity check techniques |
US11809311B2 (en) | 2018-12-21 | 2023-11-07 | Micron Technology, Inc. | Host-based flash memory maintenance techniques |
Also Published As
Publication number | Publication date |
---|---|
EP3899731A4 (en) | 2022-09-21 |
TW202141267A (zh) | 2021-11-01 |
CN113439264A (zh) | 2021-09-24 |
US20200201752A1 (en) | 2020-06-25 |
JP2022522595A (ja) | 2022-04-20 |
US11809311B2 (en) | 2023-11-07 |
KR20210075207A (ko) | 2021-06-22 |
WO2020132274A1 (en) | 2020-06-25 |
KR20220038188A (ko) | 2022-03-25 |
TW202038086A (zh) | 2020-10-16 |
EP3899731A1 (en) | 2021-10-27 |
TWI737088B (zh) | 2021-08-21 |
US20210365364A1 (en) | 2021-11-25 |
US11226894B2 (en) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102377365B1 (ko) | 호스트 기반 플래시 메모리 유지관리 기술 | |
US11138108B2 (en) | Logical-to-physical map synchronization in a memory device | |
US11687469B2 (en) | Host-resident translation layer validity check techniques | |
US10852964B2 (en) | Host-resident translation layer validity check techniques | |
CN112313634B (zh) | 快闪存储器的主机侧缓存安全 | |
CN113841128B (zh) | 大型数据读取方法、装置及可读介质 | |
CN114761931A (zh) | 有限ram系统中的逻辑到物理转译技术 | |
US20230214332A1 (en) | Increased efficiency obfuscated logical-to-physical map management | |
US11989138B2 (en) | Host assisted operations in managed memory devices | |
US11721388B2 (en) | Large file integrity techniques | |
CN111352864A (zh) | 快闪存储器持久性高速缓存技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |