KR20150038308A - 메모리 블록들의 호스트-지원형 압축 - Google Patents

메모리 블록들의 호스트-지원형 압축 Download PDF

Info

Publication number
KR20150038308A
KR20150038308A KR1020157004770A KR20157004770A KR20150038308A KR 20150038308 A KR20150038308 A KR 20150038308A KR 1020157004770 A KR1020157004770 A KR 1020157004770A KR 20157004770 A KR20157004770 A KR 20157004770A KR 20150038308 A KR20150038308 A KR 20150038308A
Authority
KR
South Korea
Prior art keywords
blocks
host
memory
destination
source
Prior art date
Application number
KR1020157004770A
Other languages
English (en)
Other versions
KR101663437B1 (ko
Inventor
아리엘 마이슬로스
바락 로트바드
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/593,237 external-priority patent/US8977805B2/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20150038308A publication Critical patent/KR20150038308A/ko
Application granted granted Critical
Publication of KR101663437B1 publication Critical patent/KR101663437B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

호스트, 및 호스트와 별개이고 호스트를 위한 데이터를 비휘발성 메모리에 저장하는 메모리 컨트롤러를 포함하는 시스템에서, 데이터 저장 방법은 압축을 위한 비휘발성 메모리로부터의 하나 이상의 소스 블록을 메모리 컨트롤러로부터 호스트로 전달(transfer)하는 것을 포함한다. 소스 블록들은 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써 호스트에서 압축된다. 목적지 블록들은 호스트로부터 메모리 컨트롤러로 전달되고, 목적지 블록들은 메모리 컨트롤러에 의해 비휘발성 메모리에 저장된다.

Description

메모리 블록들의 호스트-지원형 압축{HOST-ASSISTED COMPACTION OF MEMORY BLOCKS}
본 발명은 일반적으로 데이터 저장에 관한 것으로, 더욱 상세하게는, 호스트 시스템 리소스들을 사용하는 메모리 컨트롤러들에 관한 것이다.
플래시 메모리들과 같은 여러 유형의 메모리 디바이스들은 데이터를 저장하기 위한 아날로그 메모리 셀들의 어레이들을 사용한다. 각각의 아날로그 메모리 셀은 전하 또는 전압과 같은 저장 값으로도 지칭되는 많은 아날로그 값을 저장한다. 이 아날로그 값은 셀에 저장된 정보를 나타낸다. 플래시 메모리들에서, 예를 들면, 각각의 아날로그 메모리 셀은 특정 양의 전하를 유지한다. 가능한 아날로그 값들의 범위는 통상적으로, 각각의 구간이 하나 이상의 데이터 비트 값에 대응하는, 구간들로 나누어진다. 데이터는 원하는 비트 또는 비트들에 대응하는 공칭 아날로그 값을 기록함으로써 아날로그 메모리 셀에 기록된다.
흔히 단일-레벨 셀(Single-Level Cell, SLC) 디바이스들로 지칭되는 몇몇 메모리 디바이스들은 각각의 메모리 셀에 단일 비트의 정보를 저장하며, 즉 각각의 메모리 셀은 2개의 가능한 프로그래밍 레벨들을 갖도록 프로그래밍될 수 있다. 종종 다중-레벨 셀(Multi-Level Cell, MLC) 디바이스들로 지칭되는 고-밀도 디바이스들은 메모리 셀 당 2개 이상의 비트들을 저장하며, 즉 2개 초과의 가능한 프로그래밍 레벨들을 갖도록 프로그래밍될 수 있다.
플래시 메모리 디바이스들은, 예를 들면, 본 명세서에 참고로 포함된, 베즈(Bez) 등의 문헌["Introduction to Flash Memory," Proceedings of the IEEE, volume 91, number 4, April, 2003, pages 489-502]에 설명된다. 다중-레벨 플래시 셀들 및 디바이스들은, 예를 들면, 본 명세서에 참고로 포함된, 에이탄(Eitan) 등의 문헌["Multilevel Flash Cells and their Trade-Offs," Proceedings of the 1996 IEEE International Electron Devices Meeting (IEDM), New York, New York, pages 169-172]에 설명된다. 이 문헌은 공통 접지, DINOR, AND, NOR, 및 NAND 셀들과 같은 여러 종류의 다중레벨 플래시 셀들을 비교한다.
에이탄 등은, 본 명세서에 참고로 포함된, 문헌["Can NROM, a 2-bit, Trapping Storage NVM Cell, Give a Real Challenge to Floating Gate Cells?" Proceedings of the 1999 International Conference on Solid State Devices and Materials (SSDM), Tokyo, Japan, September 21-24, 1999, pages 522-524]에서 질화물 판독 전용 메모리(Nitride Read Only Memory, NROM)로 불리는 다른 유형의 아날로그 메모리 셀을 설명한다. NROM 셀들은 또한, 본 명세서에 참고로 포함된, 마얀(Maayan) 등의 문헌["A 512 Mb NROM Flash Data Storage Memory with 8 MB/s Data Rate", Proceedings of the 2002 IEEE International Solid-State Circuits Conference (ISSCC 2002), San Francisco, California, February 3-7, 2002, pages 100-101]에서 설명된다. 다른 예시적인 유형들의 아날로그 메모리 셀들은 플로팅 게이트(Floating Gate, FG) 셀들, 강유전성 RAM(Ferroelectric RAM, FRAM) 셀들, 자기 RAM(MRAM) 셀들, 전하 트랩 플래시(Charge Trap Flash, CTF) 및 상변화 RAM(phase change RAM, PRAM, 상변화 메모리(Phase Change Memory) - PCM으로도 지칭됨) 셀들이다. FRAM, MRAM 및 PRAM 셀들은, 예를 들면, 본 명세서에 참고로 포함된, 김(Kim) 및 고(Koh)의 문헌["Future Memory Technology including Emerging New Memories," Proceedings of the 24th International Conference on Microelectronics (MIEL), Nis, Serbia and Montenegro, May 16-19, 2004, volume 1, pages 377-384]에 설명된다.
본 명세서에서 기술되는 본 발명의 일 실시예는 시스템 내에서의 데이터 저장 방법을 제공하며, 시스템은, 호스트, 및 호스트와 별개이고 호스트를 위한 데이터를 비휘발성 메모리에 저장하는 메모리 컨트롤러를 포함한다. 방법은, 압축을 위한 비휘발성 메모리로부터의 하나 이상의 소스 블록을 메모리 컨트롤러로부터 호스트로 전달(transfer)하는 것을 포함한다. 소스 블록들은, 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써, 호스트에서 압축된다. 목적지 블록들은 호스트로부터 메모리 컨트롤러로 전달되고, 목적지 블록들은 메모리 컨트롤러에 의해 비휘발성 메모리에 저장된다.
일부 실시예들에서, 소스 블록들을 전달하는 것은 호스트의 랜덤 액세스 메모리(RAM)에 소스 블록들을 저장하는 것을 포함하고, 소스 블록들을 압축하는 것은 호스트의 프로세서를 사용해서 목적지 블록들을 생성하고 RAM에 목적지 블록들을 저장하는 것을 포함한다. 일 실시예에서, 유효 데이터를 복사하는 것은, 소스 블록들로부터의 판독 동작들의 제1 시퀀스를 수행하고, 이어서 목적지 블록들에의 기록 동작들의 제2 시퀀스를 수행하는 것을 포함한다.
개시된 실시예에서, 목적지 블록들을 저장하는 것은 비휘발성 메모리 내의 목적지 블록들의 각각의 물리적 저장 위치들을 나타내기 위해 논리-물리 어드레스 매핑(logical-to-physical address mapping)을 업데이트하는 것을 포함한다. 다른 실시예에서, 소스 블록들을 전달하는 것은 유효 데이터를 식별하는 지시(indication)들을 호스트로 전송하는 것을 포함하고, 소스 블록들을 압축하는 것은 지시들에 기초하여 소스 블록들로부터 유효 데이터를 판독하는 것을 포함한다. 대안적인 실시예에서, 소스 블록들을 전달하는 것은 소스 블록들로부터 유효 데이터만을 호스트로 전송하는 것을 포함한다.
다른 실시예에서, 소스 블록들 및 목적지 블록들을 전달하는 것은, 메모리 컨트롤러와 호스트 사이에서 메모리 액세스 커맨드들을 교환하는 데 사용되는 제2 물리적 인터페이스와 별개인 제1 물리적 인터페이스를 통해, 소스 블록들 및 목적지 블록들을 전송하는 것을 포함한다. 또 다른 실시예에서, 소스 블록들 및 목적지 블록들을 전달하는 것은, 소스 블록들 및 목적지 블록들의 전달과 관련된 호스트에 의한 임의의 동작들의 실행 없이, 메모리 컨트롤러에 의해 소스 블록들을 전송하고 목적지 블록들을 인출(fetch)하는 것을 포함한다.
일부 실시예들에서, 소스 블록들 및 목적지 블록들을 전달하는 것은, 메모리 컨트롤러와 호스트 사이에서 메모리 액세스 커맨드들을 교환하는 데 또한 사용되는 공통 물리적 인터페이스를 통해, 소스 블록들과 목적지 블록들을 전송하는 것을 포함한다. 공통 물리적 인터페이스는 NAND 인터페이스 규격, 마이크로-SD(μSD) 인터페이스 규격, 내장형 멀티-미디어 카드(Embedded Multi-Media Card, eMMC) 인터페이스 규격, 범용 플래시 메모리(Universal Flash Storage, UFS) 인터페이스 규격, SATA(Serial Advanced Technology Attachment) 인터페이스 규격, 범용 직렬 버스(Universal Serial Bus, USB) 인터페이스 규격 또는 주변 장치 상호연결(Peripheral Component Interconnect, PCI) 인터페이스에 따를(conform) 수 있다.
일 실시예에서, 소스 블록들 및 목적지 블록들을 전달하는 것은, 하드웨어 신호를 사용해서, 메모리 컨트롤러와 정보를 교환하기 위한 요청을 메모리 컨트롤러로부터 호스트로 전송하고, 요청에 응답하여, 호스트에 의해 적어도 하나의 소스 블록 또는 적어도 하나의 목적지 블록의 교환을 개시하는 것을 포함한다. 다른 실시예에서, 소스 블록들을 전달하는 것은 메모리 컨트롤러로부터 호스트로 전송되는 응답들 내에서 소스 블록들을 전송하는 것을 포함하고, 목적지 블록들을 전달하는 것은 호스트로부터 메모리 컨트롤러로 전송되는 하나 이상의 호스트 커맨드 내에서 목적지 블록들을 전송하는 것을 포함한다.
본 발명의 일 실시예에 따라, 제1 인터페이스, 제2 인터페이스 및 프로세서를 포함하는 데이터 저장 장치가 추가적으로 제공된다. 제1 인터페이스는 비휘발성 메모리와 통신하도록 구성된다. 제2 인터페이스는 호스트와 통신하도록 구성된다. 프로세서는, 압축을 위한 비휘발성 메모리로부터의 하나 이상의 소스 블록을 호스트로 전달하고, 소스 블록들로부터 목적지 블록들로 유효 데이터를 복사함으로써 호스트에서 생성된 하나 이상의 목적지 블록을 호스트로부터 수신하고, 목적지 블록들을 비휘발성 메모리에 저장하도록 구성된다.
또한, 본 발명의 일 실시예에 따라, 비휘발성 메모리, 호스트 및 메모리 컨트롤러를 포함하는 데이터 저장 장치가 제공된다. 비휘발성 메모리는 복수의 메모리 블록을 포함한다. 호스트는 비휘발성 메모리의 하나 이상의 소스 블록을 압축을 위해 수신하고, 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써 소스 블록들을 압축하도록 구성된다. 메모리 컨트롤러는 압축을 위한 소스 블록들을 선택하고, 소스 블록들을 호스트로 전달하고, 호스트로부터 목적지 블록들을 수신하고, 목적지 블록들을 비휘발성 메모리에 저장하도록 구성된다.
본 발명은 도면들과 함께 취해지는, 그의 실시예들의 다음의 상세한 설명으로부터 더욱 완전히 이해될 것이다.
도 1은 본 발명의 실시예에 따른, 데이터 저장 시스템을 개략적으로 도시하는 블록도이다.
도 2는 본 발명의 실시예에 따른, 호스트 시스템 리소스들을 사용해 데이터를 비휘발성 메모리에 저장하기 위한 방법을 개략적으로 도시하는 흐름도이다.
도 3은 본 발명의 실시예에 따른, 호스트 프로세서와 메모리 컨트롤러 사이에서 정보를 교환하기 위한 방법을 개략적으로 도시하는 흐름도이다.
도 4는 본 발명의 실시예에 따른, 호스트-지원형 블록 압축을 위한 방법을 개략적으로 도시하는 흐름도이다.
개요
일부 데이터 저장 응용들에서, 메모리 컨트롤러는 호스트 시스템에 접속되어 호스트 시스템을 위한 데이터를 비휘발성 메모리에 저장한다. 예를 들어, 모바일 폰 또는 미디어 재생기는 마이크로-시큐어 디지털(Micro-Secure Digital, μSD) 카드, 내장형 멀티-미디어 카드(eMMC) 또는 범용 플래시 메모리(UFS) 디바이스에 데이터를 저장할 수 있다. 개인용 컴퓨터는 솔리드 스테이트 드라이브(Solid State Drive, SSD)에 데이터를 저장할 수 있다. 많은 경우에서, 호스트 시스템은 메모리 컨트롤러의 내부 리소스들보다 더 많은 하드웨어 리소스들(예를 들어, 메모리 공간 및 연산 능력)을 갖는다.
하기에서 기술되는 본 발명의 실시예들은 데이터 저장을 위한 향상된 방법들 및 시스템들을 제공한다. 이 방법들 및 시스템들에서, 메모리 컨트롤러는 저장 성능을 향상시키기 위하여 호스트 시스템의 리소스들을 사용한다.
일부 실시예들에서, 메모리 컨트롤러는 플래시 메모리와 같은 비휘발성 메모리에 호스트를 위한 데이터를 저장한다. 또한, 메모리 컨트롤러는, 비휘발성 메모리의 메모리 블록들의 압축을 포함하는, 다양한 메모리 관리 태스크들을 수행한다. 압축 프로세스는 "쓰레기 수집(garbage collection)"으로도 지칭된다. 압축은 통상적으로, 유효 데이터 및 무효 데이터 둘 모두를 포함하는 하나 이상의 소스 블록을 선택하는 것, 및 컴팩트한 방식으로 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터만 복사하는 것을 포함한다. 이어서, 소스 블록들은 소거(erasure) 및 재사용에 이용가능하다.
일부 개시된 실시예들에서, 메모리 컨트롤러는 압축을 위한 소스 블록들을 선택하고, 추후에 압축된 목적지 블록들을 비휘발성 메모리에 저장하지만, 실제의 압축 프로세스(즉, 소스 블록들로부터 목적지 블록들로 유효 데이터를 복사하는 것)는 호스트에 의해 수행된다. 이러한 목적으로, 메모리 컨트롤러 및 호스트는 그들 사이에서 소스 및 목적지 블록들을 전달한다.
호스트는 통상적으로 메모리 컨트롤러보다 더 큰 메모리 공간 및 더 높은 연산 능력을 갖기 때문에, 호스트로 압축 프로세스를 위임하는 것은 압축 성능을 상당히 향상시킨다. 특히, 큰 메모리 공간은 호스트가 판독 동작들의 긴 시퀀스들 후에 기록 동작들의 긴 시퀀스들을 수행함으로써 유효 데이터를 복사하는 것을 가능하게 한다. 이러한 종류의 순차적 동작은 압축 프로세스의 효율을 상당히 향상시킨다.
더욱이, 큰 메모리 공간은 호스트가 다수의 소스 및 목적지 블록을 동시에 처리하는 것을 가능하게 함으로써 압축 성능을 최적화할 수 있다. 호스트의 높은 연산 능력은 압축 프로세스의 지연(latency)을 감소시킨다. 더욱이, 집중적인 관리 태스크들을 호스트로 위임하는 것은 메모리 컨트롤러의 비용, 사이즈 및 전력 소모가 감소되게 할 수 있다. 다른 이점으로서, 호스트가 압축 프로세스를 수행하기 때문에, 그것은 압축된 블록들을 메모리 컨트롤러로 다시 전송할 때 논리 어드레스들을 재매핑(remap)할 수 있다.
시스템 설명
도 1은 본 발명의 일 실시예에 따른, 데이터 저장 시스템(20)을 개략적으로 도시하는 블록도이다. 시스템(20)은 메모리 시스템(22) 및 호스트 시스템(24)을 포함한다. 메모리 시스템(22)은 호스트 시스템(24)으로부터 저장을 위한 데이터를 수신하여 그것을 메모리에 저장하고, 메모리로부터 데이터를 검색하여 그것을 호스트 시스템에 제공한다. 본 예에서, 시스템(22)은 셀룰러 폰, 미디어 재생기, 디지털 카메라 또는 다른 호스트를 위한 데이터를 저장하는 마이크로-시큐어 디지털(μSD) 카드를 포함한다. 그러나, 다른 실시예들에서, 시스템(22)은 임의의 다른 적합한 응용에서 그리고 임의의 다른 적합한 호스트 시스템과 함께, 예컨대, SSD에 데이터를 저장하는 모바일 컴퓨터와 같은 컴퓨팅 디바이스에서, WiFi 단말기 또는 다른 통신 단말기, 위성 위치 확인 시스템(GPS) 유닛, DOK(Disk-On-Key) 디바이스와 같은 착탈식 메모리 모듈, 시큐어 디지털(SD) 카드, 멀티-미디어 카드(MMC) 및 내장형 MMC(eMMC), 디지털 카메라, 휴대용 미디어 재생기(PMP)와 같은 음악 및 다른 미디어 재생기, 및/또는 데이터가 저장되고 검색되는 임의의 다른 시스템 또는 디바이스에서 사용될 수 있다.
메모리 시스템(22)은 각각이 복수의 아날로그 메모리 셀을 포함하는 복수의 메모리 디바이스(28)를 포함한다. 본 예에서, 디바이스들(28)은 비휘발성 플래시 디바이스들을 포함하지만, 임의의 다른 적합한 메모리 유형, 예컨대, NOR 및 전하 트랩 플래시(CTF) 플래시 셀, 상변화 램(PRAM, 또한 상변화 메모리 - PCM으로도 지칭됨), 질화물 판독 전용 메모리(Nitride Read Only Memory, NROM), 강유전성 RAM(FRAM) 및/또는 자기 RAM(magnetic RAM, MRAM) 또한 사용될 수 있다.
본 특허 출원의 맥락에서 그리고 청구항들에서, "아날로그 메모리 셀"이라는 용어는 전압 또는 전하와 같은 물리적 파라미터의 연속적인 아날로그 값을 유지하는 임의의 메모리 셀을 설명하기 위해 사용된다. 앞서 열거된 유형들과 같은 임의의 적합한 유형의 아날로그 메모리 셀들이 사용될 수 있다. 본 예에서, 각각의 메모리 디바이스(28)는 NAND 플래시 셀들의 비휘발성 메모리를 포함한다. 셀들에 저장된 전하 레벨들 및/또는 셀들에 기록되며 셀들로부터 판독되는 아날로그 전압들 또는 전류들은 본 명세서에서 총괄하여 아날로그 값들 또는 저장 값들로 지칭된다. 본 명세서에서 기술된 실시예들이 주로 임계 전압들을 다루지만, 본 명세서에서 기술된 방법들 및 시스템들은 임의의 다른 적합한 종류의 저장 값들과 함께 사용될 수 있다.
시스템(22)은 프로그래밍 레벨들로도 지칭되는 각각의 프로그래밍 상태들을 갖도록 셀들을 프로그래밍함으로써 데이터를 아날로그 메모리 셀들에 저장한다. 프로그래밍 레벨들은 한정된 세트의 가능한 레벨들로부터 선택되고, 각 레벨은 특정 공칭 저장 값에 대응한다. 예를 들어, 2 비트/셀 MLC는 4개의 가능한 공칭 저장 값들 중 하나를 셀에 기록함으로써 4개의 가능한 프로그래밍 레벨들 중 하나를 갖도록 프로그래밍될 수 있다. 메모리 셀들은 통상적으로 행들과 열들로 배열된다. 통상적으로, 주어진 메모리 디바이스는 복수의 소거 블록(메모리 블록들로도 지칭됨), 즉, 함께 소거되는 메모리 셀들의 그룹들을 포함한다.
각각의 메모리 디바이스(28)는 패키징된 디바이스 또는 패키징되지 않은 반도체 칩 또는 다이를 포함할 수 있다. 일반적으로, 메모리 시스템(22)은 임의의 원하는 유형 및 사이즈의 임의의 적합한 수의 메모리 디바이스들을 포함할 수 있다. 도 1의 시스템 구성은 복수의 메모리 디바이스를 포함하지만, 본 명세서에서 기술된 방법들 및 시스템들의 일부는 단일 메모리 디바이스만을 갖는 시스템들에서도 사용될 수 있다.
메모리 시스템(22)은, 호스트 시스템(24)으로부터 데이터를 수신하여 그것을 메모리 디바이스들(28)에 저장하고, 메모리 디바이스들로부터 데이터를 검색하여 그것을 호스트 시스템으로 제공하는, 메모리 컨트롤러(32)를 포함한다. 메모리 컨트롤러(32)는 호스트 시스템(24)과 통신하기 위한 호스트 인터페이스(36), 메모리 디바이스들(28)과 통신하기 위한 메모리 인터페이스(40), 및 저장되고 검색된 데이터를 처리하는 프로세서(44)를 포함한다. 예를 들어, 프로세서(44)는 저장을 위한 데이터를 오류 정정 코드(Error Correction Code, ECC)로 인코딩하고, 메모리로부터 판독된 데이터의 ECC를 디코딩한다. 프로세서(44)의 기능들은, 예를 들어, 적합한 중앙 처리 장치(CPU)에서 구동되는 소프트웨어를 이용하여, 하드웨어(예컨대, 상태 기계 또는 다른 로직)를 이용하여, 또는 소프트웨어와 하드웨어 요소들의 조합을 이용하여 구현될 수 있다.
일부 실시예들에서, 메모리 컨트롤러(32)는 메모리 디바이스들(28)에 액세스하는 메모리 액세스 동작들(예를 들어, 판독 또는 기록 동작들)을 수행하기 위하여 호스트 시스템(24)의 하드웨어 리소스들을 사용한다. 도 1의 실시예에서, 호스트 시스템(24)은 호스트 프로세서(48) 및 호스트 메모리를 포함하며, 이는 본 예에서 동적 랜덤 액세스 메모리(DRAM)(52)를 포함한다. DRAM(52)은 데이터를 저장하기 위해, 프로그램 명령어들을 저장하기 위해, 또는 임의의 다른 목적을 위해 호스트 프로세서(48)에 의해 사용될 수 있다. 일부 실시예들에서, DRAM(52) 내의 저장 공간의 일부는 메모리 컨트롤러(32)에 의해 이용되는 정보를 저장하는 데 사용된다. 도 1의 예에서, 메모리 컨트롤러(32)는 호스트 버스(56)를 사용해 (호스트 인터페이스(36)를 통해) 호스트 프로세서(48)와 통신한다. 또한, 메모리 컨트롤러(32)의 프로세서(44)는 전용 인터페이스(60)를 사용해 DRAM(52)과 직접적으로 통신한다. 대안적인 실시예들에서, 메모리 컨트롤러(32)는, 인터페이스(60)가 생략된 경우에서, 호스트 버스(56)를 사용하여 호스트 프로세서(48) 및 DRAM(52)과 통신한다.
메모리 컨트롤러(32), 및 특히 프로세서(44)는, 하드웨어로 구현될 수 있다. 대안적으로, 메모리 컨트롤러는 적합한 소프트웨어, 또는 하드웨어와 소프트웨어 요소들의 조합을 구동하는 마이크로프로세서를 포함할 수 있다. 일부 실시예들에서, 프로세서(44)는 범용 프로세서를 포함하며, 이는 본 명세서에서 기술된 기능들을 수행하기 위해 소프트웨어로 프로그래밍된다. 소프트웨어는, 예를 들어 네트워크를 통해, 전자 형태로 프로세서에 다운로드될 수 있거나, 그것은, 대안적으로 또는 추가적으로, 자기, 광학, 또는 전자 메모리와 같은, 유형 매체(tangible media) 상에 제공되고/되거나 저장될 수 있다.
도 1의 시스템 구성은 순전히 개념의 명료성을 위해서 도시된 예시적인 구성이다. 임의의 다른 적합한 메모리 시스템 구성이 또한 사용될 수 있다. 예를 들어, 일부 실시예들에서 2개 이상의 메모리 컨트롤러(32)가 동일한 호스트 프로세서에 접속될 수 있다. 본 명세서에서 기술된 실시예들이 DRAM을 지칭하지만, 호스트 시스템(24)은 임의의 다른 적합한 유형의 휘발성 및/또는 비휘발성 호스트 메모리를 포함할 수 있다. 다양한 인터페이스들, 어드레싱 회로들, 타이밍 및 시퀀싱 회로들, 및 디버깅 회로들과 같은, 본 발명의 원리들을 이해하는 데 필요하지 않은 요소들은 명료성을 위해 도면에서 생략되었다.
도 1에 도시된 예시적인 시스템 구성에서, 메모리 디바이스들(28) 및 메모리 컨트롤러(32)는 별개의 집적 회로들(IC들)로서 구현된다. 그러나, 대안적인 실시예들에서, 메모리 디바이스들 및 메모리 컨트롤러는 단일의 다중-칩 패키지(MCP) 또는 시스템 온 칩(SoC)에서 별개의 반도체 다이들 상에 집적될 수 있고, 내부 버스에 의해 상호접속될 수 있다. 또한 대안적으로, 메모리 컨트롤러 회로의 일부 또는 전부는 하나 이상의 메모리 디바이스가 배치되어 있는 동일한 다이 상에 상주할 수 있다. 또한 대안적으로, 메모리 컨트롤러(32)의 기능성의 일부 또는 전부는 소프트웨어로 구현되고, 호스트 프로세서(48)나 호스트 시스템(24)의 다른 요소에 의해 또는 임의의 다른 유형의 메모리 컨트롤러에 의해 수행될 수 있다. 일부 실시예들에서, 호스트 프로세서(48) 및 메모리 컨트롤러(32)는 동일한 다이 상에, 또는 동일한 디바이스 패키지 내의 별개의 다이들 상에 제작될 수 있다.
호스트 시스템 리소스들을 사용한 비휘발성 메모리 내의 데이터 저장
많은 실제적인 응용들에서, 호스트 시스템(24)은 메모리 컨트롤러(32)에서 내부적으로 이용가능한 것들보다 상당히 더 많은 하드웨어 리소스들을 갖는다. 일부 모바일 폰에서, 예를 들어, 메모리 컨트롤러(32)는 제한된 메모리 리소스들 및 제한된 연산 능력을 갖는 SD 또는 eMMC 컨트롤러를 포함한다. 반면에, 호스트 시스템은, 종종 강력한 프로세서 및 상당한 DRAM 저장 공간을 포함한다. 본 발명의 일부 실시예들에서, 메모리 컨트롤러(32)는 메모리 디바이스들(28)에 액세스하기 위해 호스트 시스템(24)의 더욱 풍부한 하드웨어 리소스들을 사용한다. 도 1의 예에서 하드웨어 리소스는 호스트 메모리(DRAM) 저장 공간을 포함하지만, 호스트 시스템의 다양한 다른 하드웨어 리소스들도 사용될 수 있다.
일부 실시예들에서, 메모리 디바이스들(28)에 액세스할 때 메모리 컨트롤러(32)에 의해 사용되는 정보 항목들을 저장하기 위하여 DRAM(52) 내에서 저장 공간이 할당된다. 또한, 메모리 컨트롤러는 DRAM에 저장된 정보 항목들을 사용해서 메모리 디바이스들(28)에 액세스하는 하나 이상의 동작을 지원한다. 정보 항목들은, 예를 들어, 저장 파라미터들과 구성들, 논리-물리 어드레스 변환 테이블들 또는 메모리 컨트롤러가 메모리 디바이스들에 액세스(예를 들어, 판독, 기록 또는 소거)하는 데 유용한 임의의 다른 정보를 포함할 수 있다. 이러한 종류의 주어진 동작을 실행할 때, 보통 호스트 커맨드에 응답하여, 메모리 컨트롤러는 DRAM(52)으로부터 적절한 정보를 검색하고 이어서 검색된 정보를 사용하여 메모리 디바이스들(28)에 액세스한다.
일부 실시예들에서, DRAM(52)에 저장된 정보 항목들은 메모리 셀들의 각각의 그룹들에 대한 저장 파라미터들을 포함한다. 정보 항목들은 메모리 디바이스 당, 메모리 다이 당, 소거 블록 당, 워드 라인 또는 페이지 당, 또는 메모리 셀들의 임의의 다른 적합한 그룹 당 저장될 수 있다. 디바이스들(28) 내의 메모리 셀들의 주어진 그룹에 액세스(예를 들어, 판독, 기록 또는 소거)하기 위해 준비할 때, 메모리 컨트롤러는 DRAM(52)으로부터 이 메모리 셀 그룹의 저장 파라미터들을 검색하고, 이어서 검색된 저장 파라미터들을 사용하여 그룹 내의 메모리 셀들에 액세스한다. DRAM(52) 내의 이용가능한 저장 공간은 종종 프로세서(44) 내의 내부 저장 공간보다 상당히 더 크기 때문에, 이 기법은 메모리 컨트롤러로 하여금 저장 파라미터들을 액세스 중인 메모리 셀들의 실제 그룹에 더 잘 매칭시키는 것을 가능하게 한다. 임의의 적합한 저장 파라미터들이 사용될 수 있다.
예를 들어, 메모리 디바이스들(28)은, 그것들의 저장 값들을 특정 판독 임계치들과 비교함으로써 판독되는, 아날로그 메모리 셀들(예를 들어, 플래시 셀들)을 포함할 수 있다. 이 실시예들에서, 메모리 컨트롤러(32)는 메모리 셀들의 상이한 그룹들에 대한(예를 들어, 상이한 소거 블록들에 대한) 판독 임계값들을 DRAM(52)에 저장할 수 있다. 메모리 컨트롤러는, 이 그룹에 적용가능한 판독 임계값들을 DRAM(52)으로부터 검색하고 이어서 검색된 판독 임계값을 사용하여 그룹으로부터 데이터를 판독함으로써, 디바이스들(28) 내 메모리 셀들의 특정 그룹으로부터 데이터를 판독하는, 판독 동작을 지원한다.
다른 예로서, 메모리 디바이스들(28) 내의 메모리 셀들은 반복 프로그래밍 및 검증(iterative Programming and Verification, P&V) 프로세스를 사용하여 프로그래밍될 수 있다. 통상적인 P&V 프로세스에서, 전체 메모리 페이지는 이 페이지에 매핑되는 메모리 셀들의 그룹에 프로그래밍 펄스들의 시퀀스를 인가함으로써 기록된다. 프로그래밍 펄스들의 레벨은 펄스에 따라 점진적으로 증가한다. 셀들에 프로그래밍된 저장 값들은 각 펄스 후에 판독("검증")되고, 원하는 레벨들에 도달할 때까지 반복이 계속된다. 일부 실시예들에서, 메모리 셀들의 상이한 그룹들에 적용가능한 P&V 프로세스의 파라미터들은 호스트 시스템(24)의 DRAM(52)에 저장된다. 메모리 컨트롤러는, DRAM(52)으로부터 대응하는 P&V 파라미터들을 검색하고 이어서 검색된 P&V 파라미터들을 사용하여 메모리 셀들의 그룹을 프로그래밍함으로써, 메모리 셀들의 특정 그룹에 데이터를 저장하는, 기록 동작을 지원한다.
DRAM(52)에 저장될 수 있는 P&V 파라미터들은, 예를 들어, 메모리 셀들에 기록된 저장 값들을 검증하는 데 사용되는 검증 임계치들, 점진적 스텝 사이즈들(즉, ISPP(Incremental Step Pulse Programming)로도 지칭되는, 연속하는 프로그래밍 펄스들 사이의 증가), 초기 프로그래밍 펄스 크기들, 및/또는 임의의 다른 적합한 파라미터를 포함할 수 있다.
또 다른 예로서, 디바이스들(28) 내의 메모리 셀들은 소거되고 이어서 특정 소거 검증 임계치들에 대해서 검증될 수 있다. 일부 실시예들에서, 메모리 컨트롤러는 DRAM(52) 내의 상이한 메모리 셀 그룹들에 대해 상이한 소거 검증 임계값들을 저장한다. 메모리 컨트롤러는, DRAM(52)으로부터 이 셀 그룹의 소거 검증 임계값들을 검색하고 검색된 임계치들을 사용해서 셀 그룹을 소거하는, 소거 동작을 지원할 수 있다.
DRAM(52)에 저장될 수 있는 정보 항목들의 다른 예들은 디바디스들(28) 내의 메모리 셀들의 각각의 그룹들의 마모 레벨(wear level) 또는 헬스 레벨(health level), 또는 메모리 셀들의 다른 히스토릭 성능 지수들(historic figures-of-merit)을 나타낸다. 그러한 정보 항목들은, 예를 들어, 메모리 셀들의 각각의 그룹이 겪은 프로그래밍 및 소거(Programming and Erasure, P/E) 사이클들의 수, 또는 메모리 셀들의 각 그룹의 마지막 프로그래밍 이후로 경과한 시간을 포함할 수 있다.
다른 정보 항목들은 디바이스들(28) 내의 메모리 셀들의 각각의 그룹 내에 존재하는 왜곡의 레벨을 나타낼 수 있다. 그러한 파라미터들은, 예를 들어, 크로스-커플링 간섭(cross-coupling interference)의 추정치, 셀들의 저장 값들의 추정된 드리프트(drift), 또는 메모리 셀들의 상이한 그룹들에 대한 추정된 온도-시간 적분(시간에 따라 적분된 동작 온도)을 포함할 수 있다. DRAM(52)에 저장될 수 있는 정보 항목의 또 다른 예는 각 소거 블록에 저장된 마지막 페이지의 인덱스를 포함한다. 이 정보 항목들 모두는 메모리 셀들이 판독되고/되거나 프로그래밍되는 방법을 결정하는 데 유용할 수 있다. 이러한 종류의 예시적인 기법들은, 예를 들어 PCT 국제 공개 공보 WO 2007/132453호, WO 2007/132457호, WO 2008/026203호, WO 2008/053472호 및 WO 2008/111058호에 기술되어 있으며, 이 문헌들의 개시 내용은 참조로서 본 명세서에 포함된다.
일부 실시예들에서, 메모리 컨트롤러(32)는 상이한 저장 구성들을 사용해서 디바이스들(28) 내의 메모리 셀들의 상이한 그룹들에 데이터를 저장한다. 예를 들어, 메모리 컨트롤러는 메모리 셀 그룹에 따라 프로그래밍 상태들(프로그래밍 레벨들) 및/또는 오류 정정 코드(ECC)를 수정할 수 있다. 이러한 종류의 예시적인 기법들은, 예를 들어 PCT 국제 공개 공보 WO 2007/132456호에 기술되어 있으며, 그 개시 내용은 참조로서 본 명세서에 포함된다. 다른 예로서, 메모리 컨트롤러는, 예를 들어 오류 정정 능력과 지연 사이의 상이한 트레이드-오프(trade-off)들을 제공하기 위하여, 상이한 ECC 블록 사이즈들을 사용할 수 있다. 예시적인 실시예에서, 메모리 컨트롤러는 2KB 블록들을 사용해서 일부 페이지들을 인코딩하고 4KB 블록들을 사용해서 다른 페이지들을 인코딩할 수 있다.
일부 실시예들에서, 메모리 컨트롤러(32)는, 디바이스들(28)의 상이한 메모리 셀들 그룹들에서 적용되는 저장 구성들(예컨대, 프로그래밍 레벨들의 수, ECC의 유형 및/또는 각각의 소거 블록, 워드 라인 또는 페이지에서 사용되는 ECC 블록 사이즈)을, DRAM(52)에 저장한다. 메모리 컨트롤러는, DRAM(52)으로부터 주어진 메모리 셀 그룹을 위한 저장 구성을 검색하고 이어서 검색된 저장 구성을 사용해서 셀 그룹을 판독 또는 프로그래밍하는, 판독 및 기록 동작들을 지원한다.
일부 실시예들에서, 메모리 컨트롤러는, 논리 어드레스들(가상 어드레스들로도 지칭됨)을 사용해 특정되는, 판독/기록 커맨드들을 호스트 시스템(24)으로부터 수신한다. 메모리 컨트롤러는 논리 어드레스들을 메모리 디바이스들(28) 내의 물리적 저장 위치들로 변환하고, 적절한 물리적 저장 위치들에 또는 이로부터 데이터를 판독하거나 기록한다. 논리 어드레스들과 물리적 저장 위치들 사이의 변환은 통상적으로 메모리 컨트롤러에 의해 관리되는 변환 테이블에 대해 질의함으로써 수행된다.
일부 실시예들에서, 메모리 컨트롤러(32)는 논리 어드레스들과 DRAM(52) 내의 물리적 저장 위치들 간의 매핑을 저장한다. 논리-물리 매핑은 하나 이상의 테이블, 또는 임의의 다른 적합한 데이터 구조를 사용해서 나타낼 수 있다. 매핑은, 논리 어드레스들을 물리적 저장 위치들로, 물리적 저장 위치들을 논리 어드레스들로, 또는 둘 모두로 매핑할 수 있다. 이 실시예들에서, 메모리 컨트롤러는, DRAM(52)에 저장된 매핑에 대해 질의함으로써 논리 어드레스들과 물리적 저장 위치들 사이에서 변환하는, 판독 및 기록 동작들을 지원한다.
예를 들어, 주어진 범위의 논리 어드레스들로부터 판독을 요청하는, 호스트 시스템으로부터의 판독 커맨드에 응답하여, 메모리 컨트롤러는, DRAM(52) 내의 매핑에 대해 질의하는 판독 동작을 실행하여, 요청된 논리 어드레스들에 대응하는 물리적 저장 위치들을 획득할 수 있다. 이어서, 동작은 메모리 디바이스들(28) 내의 이 물리적 위치들로부터 데이터를 판독한다. 유사한 플로우가 기록 동작들에 대해서도 정의될 수 있다. 이 기법을 통해, 메모리 컨트롤러는, 최소의 내부 메모리를 이용하고 비휘발성 메모리 디바이스들(28)에 매핑을 저장하지 않고도, 논리-물리 어드레스 변환을 수행할 수 있게 된다. 시스템(22)의 판독/기록 속도는 디바이스들(28)에 매핑을 저장하는 것과 비교해 상당히 향상된다. 속도 향상은 많은 랜덤 판독/기록 동작들을 수행할 때 특히 높다.
호스트 메모리에 논리-물리 어드레스 매핑을 저장하는 것은 특히, μSD 컨트롤러와 같은 제한된 내부 메모리를 갖는 메모리 컨트롤러 응용들에서 유리하다. 이 기법을 사용할 때, 판독 및 기록 동작들은 적절한 어드레스 변환을 결정하고/하거나 변환을 업데이트하기 위해 추가의 판독 및 기록 동작들을 수반하지 않는다. 그 결과, 판독 및 기록 처리율은 증가된다. 또한, 기록 동작들의 수와 판독 방해의 양은 감소되고, 따라서 비휘발성 메모리의 수명은 연장된다.
많은 경우에서, 디바이스들(28) 내의 메모리 셀들은, 이웃 메모리 셀들로부터의 크로스-커플링 간섭과 같은, 간섭을 겪는다. 일부 실시예들에서, 메모리 컨트롤러(32)는 메모리 셀들로부터 데이터를 판독할 때 간섭 제거 프로세스(interference cancellation process)를 적용한다. 간섭 제거 프로세스는 통상적으로, 디바이스들(28) 내의 다른 메모리 셀들(보통의 경우, 이웃 메모리 셀들)의 저장 값들 또는 데이터에 기초하여, 주어진 메모리 셀들의 그룹 내의 간섭을 추정하고 정정한다. 예시적인 간섭 제거 기법들이 앞서 언급된 PCT 국제 공개 공보 WO 2007/132453호, WO 2007/132457호 및 WO 2008/026203호에 기술되어 있다.
일부 실시예들에서, 메모리 컨트롤러(32)는 DRAM(52)으로부터 이웃 메모리 셀들의 데이터를 검색한다. 메모리 컨트롤러는, 메모리 디바이스들(28)로부터의 메모리 셀들의 주어진 그룹으로부터 데이터를 판독하고, DRAM(52)으로부터 이웃 셀 데이터를 검색하고, DRAM(52)으로부터 획득된 이웃 셀 데이터를 사용해서 판독 데이터 내의 간섭을 제거하는, 판독 동작을 지원한다. 이웃 셀 데이터는, 예를 들어 이웃 페이지들이 저장된 시기부터, DRAM(52)에서 이용가능할 수 있다. 이 기법으로 인해, 메모리 컨트롤러는 메모리 디바이스들(28)로부터 이웃 메모리 셀들을 판독할 필요가 없어진다. 그 결과, 시스템(22)의 전체적인 판독 속도가 향상될 수 있다.
일부 실시예들에서, 메모리 컨트롤러(32)는 더 많은 양의 데이터를 메모리 디바이스들(28)에 순차적인 방식으로 기록하기 위하여 더 큰 사이즈의 DRAM(52)을 사용한다. 예를 들어, 메모리 컨트롤러는, 특정 소스 위치로부터 메모리 디바이스들(28) 내의 특정 목적지 위치로 복수의 페이지(예컨대, 전체 소거 블록)를 복사하는, 블록 카피백 동작(block copyback operation)을 지원할 수 있다. 이 커맨드를 실행할 때, 메모리 컨트롤러는 먼저 소스 위치로부터 복수의 페이지를 순차적으로 판독하고 이들을 DRAM(52)에 캐싱한다. 이어서, 메모리 컨트롤러는 DRAM(52)으로부터 복수의 페이지를 판독하고, 그것들을 메모리 디바이스들(28) 내의 목적지 위치로 순차적으로 기록한다. 한번에 한 페이지를 복사하는 대신에 복수의 페이지를 순차적으로 판독하고 기록함으로써, 카피백 동작의 지속기간은 상당히 감소된다. 다른 예로서, DRAM(52)은 (메모리 컨트롤러나 호스트에 의해서) 사용되어, 간헐적으로 도착하는 저장을 위한 데이터를, 순차적인 데이터의 블록이 생성될 때까지, 축적할 수 있다. 이어서, 메모리 컨트롤러는 축적된 블록을 메모리 디바이스들(28)에 순차적으로 기록할 수 있다.
추가적으로 또는 대안적으로, 메모리 컨트롤러는 임의의 다른 적합한 정보를 DRAM(52)에 저장하고, 이어서 메모리 디바이스들(28)에 액세스할 때 이 정보를 사용할 수 있다. 본 명세서에서 기술된 실시예들이 주로 DRAM 리소스들을 지칭하지만, 메모리 컨트롤러(32)는 호스트 시스템(24)의 임의의 다른 적합한 하드웨어 리소스를 사용할 수 있다. 예시적인 리소스들은 하기에서 더 설명된다.
도 2는 본 발명의 일 실시예에 따른, 호스트 시스템(24)의 DRAM 리소스들을 사용하여 메모리 컨트롤러(32)에 의해 비휘발성 메모리 디바이스들(28)에 데이터를 저장하기 위한 방법을 개략적으로 도시하는 흐름도이다. 방법은, 메모리 할당 단계(70)에서, 메모리 컨트롤러(32)에 의한 사용을 위해, 호스트 시스템(24)의 DRAM(52) 내에서 저장 공간을 할당하는 것으로 시작된다. DRAM 저장 단계(74)에서, 메모리 컨트롤러(32)는 디바이스들(28)의 아날로그 메모리 셀들의 각각의 그룹들과 관련된 정보 항목들을 DRAM(52)에 저장한다. 앞서 설명된 바와 같이, 정보 항목들은, 예를 들어 저장 파라미터들과 구성들, 논리-물리 어드레스 매핑 및/또는 이웃 셀 데이터를 포함할 수 있다.
특정 시점에, 커맨드 수신 단계(78)에서, 메모리 컨트롤러(32)는 호스트 시스템(24)으로부터 커맨드를 수신한다. 커맨드는 메모리 컨트롤러가 디바이스들(28)의 아날로그 메모리 셀들의 주어진 그룹에 액세스하게 한다. 예를 들어, 커맨드는 특정 데이터 항목의 저장 또는 판독을 요청할 수 있다. 동작 실행 단계(82)에서, 커맨드에 응답하여, 메모리 컨트롤러(32)는 DRAM(52)으로부터 검색된 정보를 사용하여 메모리 디바이스들(28)에 액세스하는 동작을 실행한다. 통상적으로, 메모리 컨트롤러는 디바이스들(28)에서 액세스될 아날로그 메모리 셀들의 그룹을 식별하고, DRAM(52)으로부터 이 메모리 셀 그룹에 관계된 (하나 이상의) 정보 항목을 검색하고, 검색된 정보를 사용해 그룹 내의 메모리 셀들에 액세스한다.
호스트 시스템과 메모리 컨트롤러 사이의 인터페이스들
앞서-언급된 기법들을 수행할 때, 메모리 컨트롤러(32)는 임의의 적합한 인터페이스를 사용해서 DRAM(52)에서 정보를 저장 및 판독할 수 있다. 위의 도 1의 예에서, 메모리 컨트롤러는 전용 인터페이스(60)를 사용해(즉, 메모리 컨트롤러와 호스트 프로세서 사이의 통신에 사용되는 물리적 인터페이스와 별개인 물리적 인터페이스를 사용해) DRAM(52)과 직접적으로 통신한다. 이 실시예들에서, 메모리 컨트롤러와 DRAM은 직접적으로 통신하므로, DRAM(52)으로부터 정보를 검색하는 것은 호스트 프로세서의 어떠한 동작도 수반하지 않는다. 메모리 컨트롤러 및/또는 호스트 시스템은, 프로세서(44)에 의한 그리고 프로세서(48)에 의한 DRAM(52)에의 액세스를 제어하기 위해, 적합한 중재 로직(arbitration logic)을 포함한다.
대안적인 실시예들에서, 메모리 컨트롤러(32)는 호스트 버스(56)를 사용해(즉, 메모리 컨트롤러와 호스트 프로세서 사이의 통신에 사용되는 동일한 물리적 인터페이스를 통해) DRAM(52)에서 정보를 저장 및 판독한다. 호스트 버스(56)는 임의의 적합한 표준 또는 프로토콜, 예컨대, NAND 인터페이스, 마이크로-SD(μSD) 인터페이스, 내장형 멀티-미디어 카드(eMMC) 인터페이스, 범용 플래시 메모리(UFS) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, 범용 직렬 버스(USB), 주변 장치 상호연결 익스프레스(Peripheral Component Interconnect Express, PCIe), 또는 임의의 다른 적합한 인터페이스에 따라 동작할 수 있다.
μSD 인터페이스는, 예를 들어, 참조로서 본 명세서에 포함된 문헌 ["SD Specifications," Part 1, Physical Layer Specification, Version 3.01 Draft 1.00, November 9, 2009]에 명시되어 있다. eMMC 인터페이스는, 예를 들어, 참조로서 본 명세서에 포함된 문헌 ["Embedded MultiMediaCard (eMMC) Mechanical Standard with Optional Reset Signal," JEDEC Standard JESD84-C44, July, 2009]에 명시되어 있다. UFS 인터페이스는, 예를 들어, 참조로서 본 명세서에 포함된 문헌 ["UFS Specification," version 0.1, November 11, 2009]에 명시되어 있다. SATA 인터페이스는, 예를 들어, 참조로서 본 명세서에 포함된 문헌 ["Serial ATA Revision 3.0," June 2, 2009]에 명시되어 있다. USB 인터페이스는, 예를 들어, 참조로서 본 명세서에 포함된 문헌 ["Universal Serial Bus Specification," Revision 2.0, April 27, 2000]에 명시되어 있다.
앞서-열거된 통신 프로토콜들에서, 호스트 프로세서는 마스터로 정의되고 메모리 컨트롤러는 슬레이브로 정의된다. 그와 같이, 메모리 컨트롤러는 정보를 저장 또는 검색할 것을 요청하는 커맨드들을 개시하고 호스트 프로세서로 전송하는 것을 할 수 없다. 일부 실시예들에서, 메모리 컨트롤러(32)는, 메모리 컨트롤러와 호스트 프로세서 사이에서 하드웨어 라인을 통해 시그널링(signaling)함으로써, 호스트 프로세서(48)에 DRAM(52)과 정보를 교환할 것을 요청한다. 일부 실시예들에서, 이 목적을 위해서 메모리 컨트롤러와 호스트 프로세서 사이에 전용 하드웨어 라인이 접속될 수 있다. 대안적으로, 데이터 교환이 요청된다는 것을 호스트 프로세서에 나타내기 위하여, 메모리 컨트롤러는 기존의 하드웨어 라인, 예컨대 레디/비지(ready/busy) 라인을 사용할 수 있다. 일단 호스트 프로세서가 이 지시를 수신하면, 그것은 정보 교환 프로세스를 개시한다.
도 3은 본 발명의 일 실시예에 따른, 호스트 프로세서와 메모리 컨트롤러 사이에서 정보를 교환하기 위한 방법을 개략적으로 도시하는 흐름도이다. 방법은, 지시 단계(90)에서, 메모리 컨트롤러(32)가 호스트 프로세서(48)에, DRAM(52)과의 정보 교환이 요청된다는 것을 나타내는 것으로 시작된다. 메모리 컨트롤러는 메모리 컨트롤러와 호스트 프로세서 사이에 접속된 하드웨어 신호(예컨대, 개별 하드웨어 라인 또는 핀)을 통해 이 지시를 시그널링한다.
이 지시를 수신할 때, 질의 단계(94)에서, 호스트 프로세서(48)는 요청된 정보 교환의 유형에 대해 질의하는 메시지를 메모리 컨트롤러(32)로 전송한다. 질의 메시지는, 메모리 컨트롤러가 DRAM으로부터 정보를 판독할 것을 요청하는지 또는 DRAM에 정보를 저장할 것을 요청하는지 나타내도록, 메모리 컨트롤러에 요청한다.
질의 메시지를 전송한 후, 판독 단계(98)에서, 호스트 프로세서(48)는 정보 교환의 요청된 유형을 나타내는 데이터를 메모리 컨트롤러(32)로부터 판독한다. 예를 들어, 데이터는 요청된 동작이 DRAM으로부터 정보를 판독하는지 또는 DRAM에 정보를 기록하는지를 나타낸다. 데이터는 또한 정보를 판독 또는 기록하기 위한, DRAM(52) 내의 어드레스들의 범위를 나타낸다. 요청이 DRAM에 정보를 저장하기 위한 것일 때, 데이터는 또한 저장될 정보를 포함한다.
단계(98)에서 메모리 컨트롤러로부터 판독된 데이터에 기초하여, 실행 단계(102)에서 호스트 프로세서는 요청된 정보 교환을 수행한다. 메모리 컨트롤러가 DRAM에 정보를 저장할 것을 요청한 경우, 호스트 프로세서는 DRAM 내에 지시된 어드레스들에서 정보를 저장하고, 이어서 응답 메시지(acknowledgement message)를 메모리 컨트롤러로 전송한다. 메모리 컨트롤러가 DRAM으로부터 정보를 판독할 것을 요청한 경우, 호스트 프로세서는 지시된 어드레스들로부터 정보를 판독하고 정보를 메모리 컨트롤러로 전송한다.
대안적인 실시예들에서, 메모리 컨트롤러는 호스트 커맨드들 및 대응하는 응답들에 포함되는 메타데이터를 사용해서 호스트 프로세서를 통해 DRAM과 정보를 교환할 수 있다. 메모리 컨트롤러는, 호스트 시스템으로 전송된 응답들에 메타데이터를 부가함으로써(예를 들어, 판독 커맨드들이나 응답 또는 기록 커맨드들의 결과들), DRAM으로부터 정보를 요청하거나, DRAM 내의 저장을 위한 정보를 전송할 수 있다. 호스트 프로세서는 요청된 정보를 메타데이터로서 DRAM으로부터 메모리 컨트롤러로 전송할 수 있으며, 이는 호스트 시스템이 메모리 컨트롤러로 전송하는 판독 또는 기록 커맨드들에 포함된다.
일부 실시예들에서, 메모리 컨트롤러와 호스트 프로세서는 적용가능한 DRAM 정보를 포함하는 커맨드들 및 응답들을 교환한다. 예를 들어, 메모리 컨트롤러가 특정 메모리 페이지를 판독할 때, 그것은 판독 동작에서 사용된 판독 임계값들을, 판독 결과들과 함께, 호스트 프로세서로 전송할 수 있다. 이에 응답하여, 호스트 프로세서는 판독 임계값들을 DRAM에 저장한다. 호스트 프로세서가 판독 커맨드를 메모리 컨트롤러로 전송할 때, 그것은 (DRAM으로부터 판독된) 적용가능한 판독 임계값들을 판독 커맨드의 일부로서 메모리 컨트롤러로 전송할 수 있다.
본 명세서에서 기술된 실시예들은 주로 호스트 DRAM의 사용을 다루지만, 본 명세서에서 기술된 방법들 및 시스템들은 정적 RAM(SRAM)과 같은, 임의의 다른 유형의 호스트 메모리를 이용할 수 있다. 호스트 메모리를 할당 및 사용하는 것에 추가적으로 또는 대안적으로, 메모리 컨트롤러는 비휘발성 메모리에 액세스하기 위하여 호스트의 다양한 다른 리소스들을 사용할 수 있다. 예를 들어, 메모리 컨트롤러는 호스트 내의 하드웨어 논리 회로를 사용하여, 비휘발성 메모리에 액세스하는 것의 일부로서 다양한 논리 동작들(예를 들어, XOR 동작들 또는 비교들)을 수행할 수 있다. 다른 예로서, 메모리 컨트롤러는 호스트로부터 그것의 공급 전압을 수신할 수 있다. 그러한 실시예들에서, 호스트는 안정화(stabilize), 조정(regulate) 및/또는 필터링된 공급 전압을 메모리 컨트롤러에 제공할 수 있어서, 메모리 컨트롤러는 그것의 온 칩(on-chip) 조정, 안정화 및/또는 필터링 회로를 최소화할 수 있다. 그 결과, 메모리 컨트롤러의 전력 효율은 증가되고 그것의 방열은 감소될 수 있다. 예를 들어, 메모리 컨트롤러는, 1.8V 또는 3.3V 공급 전압을 수신하고 그것을 내부적으로 감소시키는 대신에, 호스트로부터 조정된 1.2V 공급 전압을 수신할 수 있다.
또 다른 예로서, 메모리 컨트롤러는 비휘발성 메모리로부터 판독된 데이터에 대한 간섭 제거 연산들을 수행하도록 호스트를 호출할 수 있다. 그러한 실시예들에서, 호스트는 비휘발성 메모리로부터 판독된 하나 이상의 페이지의 판독 결과들 뿐만 아니라 이웃 페이지들의 판독 결과들을 제공받을 수 있다. 이어서, 호스트는 이웃 페이지들의 판독 결과들에 기초하여 판독 결과들 내의 간섭을 제거해서, 무간섭 데이터를 생성할 수 있다.
또 다른 예에서, 호스트는 ECC 디코딩을 수행하도록 호출될 수 있다. 일부 실시예들에서, 고성능 ECC 디코더(예를 들어, 소프트 디코더)는 호스트의 더 높은 내재적 계산 복잡도를 사용하고/하거나 전용 하드웨어를 사용해서 구현될 수 있다. 이 실시예들에서, 메모리 컨트롤러는 비휘발성 메모리로부터 판독되는 코드 워드들을 호스트에 제공한다. 이어서, 호스트는 ECC를 디코딩하여 데이터를 재구성한다. 예시적인 실시예에서, 메모리 컨트롤러는 특정 ECC 디코더를 포함하고, 호스트는 다른 ECC 디코더를 포함한다. 호스트 내의 디코더는 메모리 컨트롤러 내의 디코더보다 더 복잡하고 더 높은 오류 정정 능력을 갖는다. 예를 들어, 메모리 컨트롤러 내의 디코더는 하드 디코딩을 적용할 수 있는 반면, 호스트 내의 디코더는 소프트 디코딩을 적용할 수 있다. 이 실시예들에서, 메모리 컨트롤러는 초기에 그것의 로컬 ECC 디코더를 사용해서 주어진 코드 워드를 디코딩하는 시도를 한다. 초기 시도가 실패하는 경우, 메모리 컨트롤러는 코드 워드를 디코딩하기 위해 호스트 내의 고-성능 ECC 디코더를 호출한다.
호스트-지원형 블록 압축
통상적인 플래시 메모리에서, 데이터는 페이지 단위들로 메모리 디바이스들(28)에 기록되지만, 소거는 전체 메모리 블록들에 적용된다. 데이터는 소거된 페이지들에만 기록되고, 따라서 데이터를 제자리에서(in-place) 업데이트하는 것이 가능하지 않다. 데이터를 업데이트하는 것은, 플래시 메모리 내의 다른 물리적 저장 위치에 업데이트된 데이터를 기록하는 것, 데이터의 이전 버전을 무효한 것으로 마킹하는 것, 및 데이터의 논리 어드레스들을 데이터가 저장되는 물리적 저장 위치들로 변환하는 논리-물리 어드레스 매핑을 동적으로 업데이트하는 것을 수반한다.
위의 특성들로 인해, 메모리 디바이스들(28)의 메모리 블록들은 무효 데이터 페이지들을 점진적으로 누적시키는데, 그것의 업데이트된 버전들은 다른 물리적 저장 위치들에 저장되었다. 무효 페이지들의 수를 감소시키기 위해, 메모리 컨트롤러(32)의 프로세서(44)는 압축, 또는 "쓰레기 수집" 프로세스를 수행한다. 이 백그라운드 프로세스는, 압축을 위한 하나 이상의 메모리 블록(소스 블록들로 지칭됨)을 선택하고, 선택된 소스 블록들로부터 하나 이상의 다른 블록(타겟 블록들로도 지칭됨) 내의 다른 저장 위치들로 유효 데이터를 복사하고, 이어서 소스 블록들을 소거한다. 이어서, 소거된 블록들은 후속 프로그래밍을 위해 준비된다.
도 4는 본 발명의 일 실시예에 따른, 호스트-지원형 블록 압축을 위한 방법을 개략적으로 도시하는 흐름도이다. 방법은, 소스 블록 선택 단계(110)에서, 메모리 컨트롤러(32)의 프로세서(44)가 압축을 위한 하나 이상의 소스 블록을 선택하는 것으로 시작한다. 각각의 소스 블록은 통상적으로 유효 데이터 및 무효 데이터 둘 모두를 포함한다. 메모리 컨트롤러는 임의의 적합한 기준을 사용해서 소스 블록들을 선택할 수 있고, 예를 들어 그것은 가장 많은 무효 데이터를 갖는 블록들을 선택할 수 있다.
소스 전달 단계(114)에서, 프로세서(44)는 선택된 소스 블록들을 호스트 시스템(44)으로 전달한다. 프로세서(44)는 전술된 인터페이스들 및 전달 기법들 중 임의의 것을 사용해서, 예를 들어 호스트 버스(56)를 사용해 호스트 프로세서(48)로, 또는 전용 인터페이스(60)를 사용해 DRAM(52)으로 직접적으로, 소스 블록들을 전달할 수 있다.
일부 실시예들에서, 프로세서(44)는 또한 유효 데이터를 식별하는 지시들을 호스트로 전송하여, 호스트가 지시들에 기초하여 소스 블록들로부터 유효 데이터만을 판독할 수 있게 된다. 임의의 적합한 유형의 지시들은 소스 블록들의 일부로서 또는 별개로 전송될 수 있고, 지시들은 임의의 적합한 인터페이스를 사용해서 호스트로 전송될 수 있다. 대안적인 실시예들에서, 메모리 컨트롤러는, 전체 소스 블록들이 아닌, 소스 블록들로부터 유효 데이터만을, 호스트로 전달한다. 본 특허 출원의 맥락과 청구항들에서, 유효 데이터만을 전달하는 것은 또한 압축을 위한 소스 블록들을 전달하는 것으로서 간주된다.
압축 단계(118)에서, 호스트 프로세서(48)는 소스 블록들을 압축한다. 호스트 프로세서는 통상적으로 소스 블록들로부터 유효 데이터를 복사하고 그것을 하나 이상의 목적지 블록에 순차적으로 저장한다. 그 결과, 유효 데이터는 압축 방식으로 목적지 블록들에 저장되는 한편, 무효 데이터의 구역들을 제거한다. 목적지 블록들은 DRAM(52)에 저장된다.
목적지 전달 단계(122)에서, 목적지 블록들은 호스트 시스템(24)으로부터 메모리 컨트롤러(32)로 전달된다. 목적지 블록들의 전달은, 전술된 인터페이스들 및 전달 기술들 중 임의의 것을 사용해서, 예를 들어, 호스트 버스(56)를 사용해 호스트 프로세서(48)으로부터, 또는 전용 인터페이스(60)를 사용해 DRAM(52)으로부터 직접적으로, 수행될 수 있다.
저장 단계(126)에서, 메모리 컨트롤러(32)의 프로세서(44)는 메모리 디바이스들(28)에 목적지 블록들을 저장한다. 추가적으로, 프로세서(44)는 유효 데이터의 새로운 물리적 저장 위치들을 나타내기 위하여 논리-물리 어드레스 매핑을 업데이트한다. 압축 프로세스가 완료된 후, 프로세서(44)는 통상적으로 소스 블록들을 소거한다. 이어서, 이 블록들은 새로운 프로그래밍에 이용가능하다.
호스트의 DRAM(52)은 통상적으로 메모리 컨트롤러(32)의 내부 메모리보다 훨씬 크기 때문에, 호스트에 의해 압축을 수행하는 것은 메모리 컨트롤러에 의해서보다 상당히 더 효율적이다. 예를 들어, 큰 메모리 공간으로 인해, 호스트 프로세서(48)는, (소스 블록들로부터의) 판독 동작들의 긴 시퀀스들을 수행하고 뒤이어 (목적지 블록들에의) 기록 동작들의 긴 시퀀스들을 수행함으로써, 유효 데이터를 복사할 수 있다. 이러한 종류의 순차적 동작은 압축 프로세스의 효율성을 크게 향상시킨다.
DRAM(52) 내의 큰 메모리 공간은, 호스트 프로세서(48)가 다수의 소스 및 목적지 블록을 동시에 다루고 그에 따라 압축 성능을 최적화하는 것을 가능하게 한다. 더욱이, 호스트 프로세서의 높은 연산 능력은 압축 프로세스의 지연을 감소시킨다.
따라서, 전술된 실시예들은 예로서 인용되어 있고 본 발명은 이상의 본 명세서에서 특히 도시되고 설명된 것으로 제한되지 않는다는 것이 이해될 것이다. 오히려, 본 발명의 범주는 본 명세서에서 전술된 다양한 특징들의 조합들 및 하위-조합들 둘 모두뿐만 아니라, 전술한 설명을 읽을 때 당업자에게 떠오를 것이고 종래 기술에서 개시되지 않은 변형들 및 수정들을 포함한다.

Claims (20)

  1. 호스트, 및 상기 호스트와 별개이고 상기 호스트를 위한 데이터를 비휘발성 메모리에 저장하는 메모리 컨트롤러를 포함하는 시스템에서, 압축을 위한 상기 비휘발성 메모리로부터의 하나 이상의 소스 블록을 상기 메모리 컨트롤러로부터 상기 호스트로 전달(transfer)하는 단계;
    상기 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써 상기 호스트에서 상기 소스 블록들을 압축하는 단계;
    상기 호스트로부터 상기 메모리 컨트롤러로 상기 목적지 블록들을 전달하는 단계; 및
    상기 메모리 컨트롤러에 의해 상기 목적지 블록들을 상기 비휘발성 메모리에 저장하는 단계
    를 포함하는, 데이터 저장 방법.
  2. 제1항에 있어서, 상기 소스 블록들을 전달하는 단계는 상기 소스 블록들을 상기 호스트의 랜덤 액세스 메모리(RAM)에 저장하는 단계를 포함하고, 상기 소스 블록들을 압축하는 단계는 상기 호스트의 프로세서를 사용해서 상기 목적지 블록들을 생성하고 상기 목적지 블록들을 상기 RAM에 저장하는 단계를 포함하는, 데이터 저장 방법.
  3. 제1항에 있어서, 상기 유효 데이터를 복사하는 단계는 상기 소스 블록들로부터의 판독 동작들의 제1 시퀀스를 수행하고 이어서 상기 목적지 블록들에의 기록 동작들의 제2 시퀀스를 수행하는 단계를 포함하는, 데이터 저장 방법.
  4. 제1항에 있어서, 상기 목적지 블록들을 저장하는 단계는 상기 비휘발성 메모리 내의 상기 목적지 블록들의 각각의 물리적 저장 위치들을 나타내기 위해 논리-물리 어드레스 매핑(logical-to-physical address mapping)을 업데이트하는 단계를 포함하는, 데이터 저장 방법.
  5. 제1항에 있어서, 상기 소스 블록들을 전달하는 단계는 상기 유효 데이터를 식별하는 지시(indication)들을 상기 호스트로 전송하는 단계를 포함하고, 상기 소스 블록들을 압축하는 단계는 상기 지시들에 기초하여 상기 소스 블록들로부터 상기 유효 데이터를 판독하는 단계를 포함하는, 데이터 저장 방법.
  6. 제1항에 있어서, 상기 소스 블록들을 전달하는 단계는 상기 소스 블록들로부터 상기 유효 데이터만을 상기 호스트로 전송하는 단계를 포함하는, 데이터 저장 방법.
  7. 제1항에 있어서, 상기 소스 블록들 및 상기 목적지 블록들을 전달하는 단계는, 상기 메모리 컨트롤러와 상기 호스트 사이에서 메모리 액세스 커맨드들을 교환하는 데 사용되는 제2 물리적 인터페이스와 별개인 제1 물리적 인터페이스를 통해, 상기 소스 블록들 및 상기 목적지 블록들을 전송하는 단계를 포함하는, 데이터 저장 방법.
  8. 제1항에 있어서, 상기 소스 블록들 및 상기 목적지 블록들을 전달하는 단계는, 상기 소스 블록들 및 상기 목적지 블록들의 전달과 관련된 상기 호스트에 의한 임의의 동작들의 실행 없이, 상기 메모리 컨트롤러에 의해 상기 소스 블록들을 전송하고 상기 목적지 블록들을 인출(fetch)하는 단계를 포함하는, 데이터 저장 방법.
  9. 제1항에 있어서, 상기 소스 블록들 및 상기 목적지 블록들을 전달하는 단계는, 상기 메모리 컨트롤러와 상기 호스트 사이에서 메모리 액세스 커맨드들을 교환하는 데 또한 사용되는 공통 물리적 인터페이스를 통해, 상기 소스 블록들 및 상기 목적지 블록들을 전송하는 단계를 포함하는, 데이터 저장 방법.
  10. 비휘발성 메모리와 통신하도록 구성되는 제1 인터페이스;
    호스트와 통신하도록 구성되는 제2 인터페이스; 및
    압축을 위한 상기 비휘발성 메모리로부터의 하나 이상의 소스 블록을 상기 호스트로 전달하고, 상기 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써 상기 호스트에서 생성된 상기 목적지 블록들을 상기 호스트로부터 수신하고, 상기 목적지 블록들을 상기 비휘발성 메모리에 저장하도록 구성되는 프로세서
    를 포함하는, 데이터 저장 장치.
  11. 제10항에 있어서, 상기 프로세서는 상기 비휘발성 메모리 내의 상기 목적지 블록들의 각각의 물리적 저장 위치들을 나타내기 위해 논리-물리 어드레스 매핑을 업데이트하도록 구성되는, 데이터 저장 장치.
  12. 제10항에 있어서, 상기 프로세서는, 상기 소스 블록들로부터의 판독 동작들의 제1 시퀀스를 수행하고 이어서 상기 목적지 블록들에의 기록 동작들의 제2 시퀀스를 수행함으로써, 상기 유효 데이터를 복사하도록 구성되는, 데이터 저장 장치.
  13. 제10항에 있어서, 상기 프로세서는, 상기 유효 데이터를 식별하는 지시들을 상기 호스트로 전송하여, 상기 호스트가 상기 지시들에 기초하여 상기 소스 블록들로부터 상기 유효 데이터를 판독할 수 있도록 구성되는, 데이터 저장 장치.
  14. 제10항에 있어서, 상기 프로세서는 상기 소스 블록들로부터 상기 유효 데이터만을 상기 호스트로 전송하도록 구성되는, 데이터 저장 장치.
  15. 제10항에 있어서, 상기 프로세서는, 상기 호스트와 메모리 액세스를 교환하는 데 사용되는 제2 물리적 인터페이스와 별개인 제1 물리적 인터페이스를 통해, 상기 소스 블록들 및 상기 목적지 블록들을 전달하도록 구성되는, 데이터 저장 장치.
  16. 제10항에 있어서, 상기 프로세서는, 상기 소스 블록들 및 상기 목적지 블록들의 전달과 관련된 상기 호스트에 의한 임의의 동작들의 실행 없이, 상기 소스 블록들을 전송하고 상기 목적지 블록들을 인출하도록 구성되는, 데이터 저장 장치.
  17. 제10항에 있어서, 상기 프로세서는, 상기 프로세서와 상기 호스트 사이에서 메모리 액세스 커맨드들을 교환하는 데 또한 사용되는 공통 물리적 인터페이스를 통해, 상기 소스 블록들 및 상기 목적지 블록들을 전달하도록 구성되는, 데이터 저장 장치.
  18. 제10항에 있어서, 상기 프로세서는,
    하드웨어 신호를 사용해서, 상기 프로세서와 정보를 교환하기 위한 요청을 상기 호스트로 전송하고,
    상기 요청에 응답하여, 상기 호스트에 의한 적어도 하나의 소스 블록 또는 적어도 하나의 목적지 블록의 교환을 개시함
    으로써, 상기 소스 블록들 및 상기 목적지 블록들을 전달하도록 구성되는, 데이터 저장 장치.
  19. 복수의 메모리 블록을 포함하는 비휘발성 메모리;
    상기 비휘발성 메모리의 하나 이상의 소스 블록을 압축을 위해 수신하고, 상기 소스 블록들로부터 하나 이상의 목적지 블록으로 유효 데이터를 복사함으로써 상기 소스 블록들을 압축하도록 구성되는 호스트; 및
    압축을 위한 상기 소스 블록들을 선택하고, 상기 소스 블록들을 상기 호스트로 전달하고, 상기 호스트로부터 상기 목적지 블록들을 수신하고, 상기 목적지 블록들을 상기 비휘발성 메모리에 저장하도록 구성되는 메모리 컨트롤러
    를 포함하는, 시스템.
  20. 제19항에 있어서, 상기 호스트는, 상기 소스 블록들로부터의 판독 동작들의 제1 시퀀스를 수행하고 이어서 상기 목적지 블록들에의 기록 동작들의 제2 시퀀스를 수행함으로써, 상기 유효 데이터를 복사하도록 구성되는, 시스템.
KR1020157004770A 2012-08-23 2013-08-22 메모리 블록들의 호스트-지원형 압축 KR101663437B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/593,237 2012-08-23
US13/593,237 US8977805B2 (en) 2009-03-25 2012-08-23 Host-assisted compaction of memory blocks
PCT/US2013/056069 WO2014031799A1 (en) 2012-08-23 2013-08-22 Host-assisted compaction of memory blocks

Publications (2)

Publication Number Publication Date
KR20150038308A true KR20150038308A (ko) 2015-04-08
KR101663437B1 KR101663437B1 (ko) 2016-10-14

Family

ID=49117956

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157004770A KR101663437B1 (ko) 2012-08-23 2013-08-22 메모리 블록들의 호스트-지원형 압축

Country Status (6)

Country Link
EP (1) EP2888666B1 (ko)
JP (1) JP5976939B2 (ko)
KR (1) KR101663437B1 (ko)
CN (1) CN104583977B (ko)
TW (1) TWI516928B (ko)
WO (1) WO2014031799A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210001898A (ko) * 2019-06-28 2021-01-06 웨스턴 디지털 테크놀로지스, 인코포레이티드 존 네임스페이스에 대한 존 형성
KR20220102560A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices
JP6482322B2 (ja) * 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
JP6378111B2 (ja) * 2014-12-29 2018-08-22 東芝メモリ株式会社 情報処理装置及びプログラム
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
CN105005536B (zh) * 2015-07-01 2019-08-06 忆正科技(武汉)有限公司 固态存储设备、主机的工作方法及固态存储设备、主机
JP6452595B2 (ja) * 2015-11-13 2019-01-16 株式会社日立ソリューションズ ファイルシステム及びプログラム
CN107526695B (zh) * 2016-06-20 2021-03-02 北京忆芯科技有限公司 NVMe配置空间实现方法与装置
JP6877134B2 (ja) * 2016-12-15 2021-05-26 株式会社東芝 電子装置、通信装置及びプログラム
KR20190029323A (ko) * 2017-09-12 2019-03-20 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2019053415A (ja) 2017-09-13 2019-04-04 東芝メモリ株式会社 メモリシステム、その制御方法及びプログラム
US11061612B2 (en) * 2019-05-20 2021-07-13 Micron Technology, Inc. Internal communication interface management
KR20200142393A (ko) 2019-06-12 2020-12-22 에스케이하이닉스 주식회사 저장 장치, 호스트 장치 및 그들의 동작 방법
CN112486417B (zh) * 2020-12-03 2023-07-04 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
CN115543221B (zh) * 2022-11-29 2023-03-14 苏州浪潮智能科技有限公司 固态硬盘的数据迁移方法、装置、电子设备及存储介质
KR102557557B1 (ko) 2023-04-19 2023-07-24 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802069A (en) * 1995-11-13 1998-09-01 Intel Corporation Implementing mass storage device functions using host processor memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US20070130421A1 (en) * 2005-12-02 2007-06-07 Ahmad Said A Apparatus, system, and method for global metadata copy repair

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3703181B2 (ja) * 1995-09-28 2005-10-05 キヤノン株式会社 フラッシュrom管理方法及び装置
JP2001014216A (ja) * 1999-06-28 2001-01-19 Sharp Corp メモリ制御装置
JP2006252137A (ja) * 2005-03-10 2006-09-21 Matsushita Electric Ind Co Ltd 不揮発性記憶装置の最適化方法
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802069A (en) * 1995-11-13 1998-09-01 Intel Corporation Implementing mass storage device functions using host processor memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US20070130421A1 (en) * 2005-12-02 2007-06-07 Ahmad Said A Apparatus, system, and method for global metadata copy repair

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210001898A (ko) * 2019-06-28 2021-01-06 웨스턴 디지털 테크놀로지스, 인코포레이티드 존 네임스페이스에 대한 존 형성
US11416161B2 (en) 2019-06-28 2022-08-16 Western Digital Technologies, Inc. Zone formation for zoned namespaces
KR20220102560A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance

Also Published As

Publication number Publication date
CN104583977B (zh) 2017-07-14
CN104583977A (zh) 2015-04-29
WO2014031799A1 (en) 2014-02-27
KR101663437B1 (ko) 2016-10-14
TWI516928B (zh) 2016-01-11
TW201415226A (zh) 2014-04-16
EP2888666B1 (en) 2016-10-12
JP2015529917A (ja) 2015-10-08
EP2888666A1 (en) 2015-07-01
JP5976939B2 (ja) 2016-08-24

Similar Documents

Publication Publication Date Title
KR101663437B1 (ko) 메모리 블록들의 호스트-지원형 압축
US8977805B2 (en) Host-assisted compaction of memory blocks
US9317461B2 (en) Use of host system resources by memory controller
US9405705B2 (en) Hierarchical data storage system
US10452532B2 (en) Directed sanitization of memory
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
CN109947663B (zh) 分布式编程操作
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
US11681472B2 (en) Unmap data pattern for coarse mapping memory sub-system
KR20220031490A (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
US20220083256A1 (en) Read Handling in Zoned Namespace Devices
US11403011B1 (en) Host memory buffer allocation management
CN113590503A (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
CN110096452B (zh) 非易失随机访问存储器及其提供方法
US10515693B1 (en) Data storage apparatus and operating method thereof
TW202232331A (zh) 記憶體控制器以及伺服器
US11934686B2 (en) Data reordering at a memory subsystem
US10923178B1 (en) Data storage with improved write performance for preferred user data
US20240061595A1 (en) Optimizing memory for repeating patterns
US11455249B2 (en) Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system
JP2023553681A (ja) メモリシステムの電力管理
TW202405668A (zh) 記憶體控制器和儲存裝置
TW202418097A (zh) 記憶體系統及記憶體系統的操作
CN114442921A (zh) 用于存储器子系统中的高速缓存读取的高速缓存释放命令

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