KR20140094468A - 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 - Google Patents

비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 Download PDF

Info

Publication number
KR20140094468A
KR20140094468A KR1020140007211A KR20140007211A KR20140094468A KR 20140094468 A KR20140094468 A KR 20140094468A KR 1020140007211 A KR1020140007211 A KR 1020140007211A KR 20140007211 A KR20140007211 A KR 20140007211A KR 20140094468 A KR20140094468 A KR 20140094468A
Authority
KR
South Korea
Prior art keywords
data
record
nvm
lba
host
Prior art date
Application number
KR1020140007211A
Other languages
English (en)
Other versions
KR102155191B1 (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
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20140094468A publication Critical patent/KR20140094468A/ko
Application granted granted Critical
Publication of KR102155191B1 publication Critical patent/KR102155191B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7202Allocation control and policies
    • 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/7211Wear leveling

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)
  • Memory System (AREA)

Abstract

SSD의 비휘발성 메모리에 대한 기록들에 대한 영역 선택의 관리는 SSD의 성능, 신뢰도, 단가, 및/또는 개발비를 향상시킨다. 제어기는 (예를 들어, 기록 데이터, 기록 데이터 소스를 분석하고/하거나 힌트를 수신함으로써) 기록들의 특징들을 수신하고 결정하며, 비휘발성 메모리의 결정된 특징들 및 특성들에 기초하여 영역을 선택한다. 예를 들어, 제어기는 판독 전용 데이터이도록 결정된 기록들을 수신하고, 기록 실패들을 가질 수도 있는 셀들을 포함하는 비휘발성 메모리의 영역들을 선택한다. 기록 실패 경향이 있는 영역들에 판독 전용 데이터를 배치함으로써, 에러의 가능성이 감소되어서 신뢰도를 향상시킨다. 다른 예로서, 제어기는 압축불가능한 것으로 힌트되는 기록들을 수신하고, 압축불가능한 데이터를 포함하는 비휘발성 메모리의 영역들을 선택한다

Description

비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택{MANAGEMENT OF AND REGION SELECTION FOR WRITES TO NON-VOLATILE MEMORY}
관련 출원들의 상호 참조
[0001] 본 출원에 대한 우선권 이익 청구들은 (임의의 경우, 적절한 것으로서) 첨부하는 출원 데이터 시트(Data Sheet), 리퀘스트(Request) 또는 트랜스미탈(Transmittal)에서 이루어진다. 본 출원(instant application)의 타입에 의해 허용되는 범위로, 본 출원은 모든 목적들을 위해 하기 출원들을 인용에 의해 통합하며, 이들 모두는 발명이 구성된 시점에 본 출원으로 공동으로 소유되었다:
2011년 3월 11일 출원되고, 제 1 발명자 이름이 Hao 이며, LDPC ERASURE DECODING FOR FLASH MEMORIES이란 명칭의 PCT 출원(대리인 사건 번호 SF-10-01PCTB 및 국제 출원 번호 PCT/US11/28244);
2011년 10월 26일 출원되고, 제 1 발명자 이름이 Yan LI이며, ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY BASED DATA STORAGE이란 명칭의 PCT 출원(대리인 사건 번호 SF-10-03PCT 및 국제 출원 번호 PCT/US11/57914);
2012년 1월 18일 출원되고, 제 1 발명자 이름이 Jeremy Isaac Nathaniel WERNER이며, HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION이란 명칭의 PCT 출원 (대리인 사건 번호 SF-10-14PCT 및 국제 출원 번호 PCT/US12/21682); 및
2013년 1월 22일 출원되고, 제 1 발명자 이름이 Earl T. COHEN이며, MANAGEMENT OF AND REGION SELECTION FOR WRITES TO NON-VOLATILE MEMORY라는 명칭의 미국 가출원 (대리인 사건 번호 SF-11-01 및 출원 번호 61/755,442)
[0002] 분야: 스토리지 디바이스 기술 및 제조에서의 진보들이 비용, 수익성, 성능, 효율성, 및 사용의 유용성에서 개선들을 제공하기 위해 요구된다.
[0003] 관련된 기술: 공개적으로 또는 잘 알려진 것으로 명시적으로 식별되지 않는 한, 맥락, 정의들 또는 비교 목적들에 대한 것을 비롯하여, 기술들 및 개념들에 대한 본원에서의 언급은, 그와 같은 기술들 및 개념들이 이전에 공개적으로 알려지거나 그렇지 않으면 종래 기술의 일부라는 것에 대한 승인으로서 해석되어서는 안 된다. 이로써, 특허들, 특허 출원들 및 공개공보들을 비롯하여 (임의의 경우) 본원에 인용된 모든 참조들은 구체적으로 통합되든지 아니든지 간에, 모든 목적들을 위해, 그 전체들이 인용에 의해 통합된다.
개요
[0004] 본 발명은 예를 들어, 프로세스, 제조물, 장치, 시스템, 물질의 구성물, 및 컴퓨터 판독가능 저장 매체(예를 들어, 디스크와 같은 광 및/또는 자기 대량 스토리지 디바이스, 플래시 스토리지와 같은 비휘발성 스토리지를 갖는 집적 회로에서의 매체들), 또는 프로그램 명령들이 광 또는 전자 통신 링크들을 통해 전송되는 컴퓨터 네트워크와 같은 컴퓨터 판독가능 매체로서, 다수의 방식들로 구현될 수도 있다. 상세한 설명은, 위에서 식별된 분야에서의 비용, 수익성, 성능, 효율성 및 이용 활용성에서의 개선들을 가능하게 하는 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 나머지 상세한 설명의 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 본원에 설명된 개념들에 따른 시스템들, 방법들, 제조 물건들 및 컴퓨터 판독가능한 매체 중 하나 또는 그 초과의 것의 예시적인 실시예들을 포함한다. 결론들에서 더 상세하게 논의되는 바와 같이, 본 발명은 발행된 청구항들의 범위 내에서 모든 가능한 변경들 및 변형들을 포괄한다.
[0005] 도 1a는 비휘발성 메모리의 영역들에 대한 기록들의 관리 및 영역 선택을 수행하도록 인에이블된 고체 상태 디스크(SSD) 제어기를 포함하는 SSD의 실시예의 선택된 상세사항들을 예시한다.
[0006] 도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세사항들을 예시한다.
[0007] 도 2는 논리 블록 어드레스(LBA)의 논리 페이지 번호(LPN) 부분을 매핑하는 실시예의 선택된 상세사항들을 예시한다.
[0008] 도 3은 판독 유닛들의 양자들에서 측정된 길이를 집합적으로 갖는 다양한 판독 유닛들로서 구성된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 비휘발성 메모리(NVM)에 액세스하는 실시예의 선택된 상세사항들을 예시한다.
[0009] 도 4a는 판독 유닛의 실시예의 선택된 상세사항들을 예시한다.
[0010] 도 4b는 판독 유닛의 다른 실시예의 선택된 상세사항들을 예시한다.
[0011] 도 5는 다수의 필드들을 갖는 헤더의 실시예의 선택된 상세사항들을 예시한다.
[0012] 도 6은 다중의 NVM 디바이스들의 블록들, 페이지들, 및 판독 유닛들의 실시예의 선택된 상세사항들을 예시한다.
[0013] 도 1은 SSD의 NVM의 특정한 대역들에 데이터를 선택적으로 배치하는 SSD의 실시예의 선택된 상세사항들을 개념적으로 예시한다.
[0014] 도 8은 제 1 레벨 맵(FLM) 및 하나 또는 그 초과의 제 2 레벨 맵(SLM) 페이지들을 갖는 2-레벨 맵을 통해 NVM에 저장된 논리 블록(LB)들에 LBA들을 매핑하는 실시예의 선택된 상세사항들을 예시한다.
[0015] 도 9는 (예를 들어, SSD에서) NVM들의 데이터 대역들의 대역 관리 흐름의 실시예의 선택된 상세사항들의 흐름도를 예시한다.
도면들에서 참조 부호들의 리스트
[0016]
Figure pat00001

Figure pat00002

Figure pat00003
Figure pat00004
[0017] 본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세사항들을 예시하는 첨부한 도 면들과 함께 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예 시적인 것으로 이해되고, 본 발명은 명백하게, 여기에서의 실시예들 중 임의의 실시예들 또는 이들 모두로 또는 이들에 의해 제한되지 않으며, 본 발명은 다수의 대안들, 변경, 및 등가물들을 포괄한다. 설명의 단조 로움을 회피하기 위해, 다양한 단어 라벨(word label)들(제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 주목할만한을 포함하지만 이로 제한되지 않음)이 실시예들의 개별 세트들에 적용될 수도 있 고; 여기에서 사용되는 바와 같이, 이러한 라벨들은 명백하게 품질, 또는 임의의 형태의 우선순위 또는 편견 을 전달하는 것으로 뜻하는 것이 아니라, 단지 개별 세트들 사이를 편리하게 구별하기 위한 것이다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위내에서 변경가능하다. 다수의 실시예들이 프로세스, 방 법 및/또는 프로그램 명령 특징들에서 변동들을 설명하는 역할을 하는 경우에, 다른 실시예들은, 사전결정되 거나 동적으로 결정된 기준에 따라 복수의 다수의 실시예들에 각각 대응하는 복수의 동작의 모드들 중 하나 의 정적 및/또는 동적 선택을 수행한다는 것이 고려된다. 다수의 특정한 상세사항들은 본 발명의 완전한 이 해를 제공하기 위해 아래의 설명에 설명된다. 상세사항들은 예시를 목적으로 제공되고 본 발명은 상세사항 들 중 일부 또는 모두 없이 청구항들에 따라 실시될 수도 있다. 명확성을 목적으로, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명이 필요없이 모호해지지 않도록 상세히 설명하지 않는다.
도입
[0018] 이러한 도입부는 단지 상세한 설명의 더욱 빠른 이해를 용이하게 하기 위해 포함되고; 임의의 도 입부의 단락들이 반드시 전체 주제에 대한 축약된 관점이고 철저한 또는 제한적인 설명인 것을 뜻하지 않기 때문에, 본 발명은 (만약 있다면, 명백한 예들을 포함하는) 도입부에 제공되는 개념들로 제한되지 않는다. 예를 들어, 다음의 도입부는 특정한 실시예들에 대해서만 공간 및 구조화에 의해 제한된 개요 정보를 제공한 다. 청구항들이 명세서의 나머지 부분 전반에 걸쳐 궁극적으로 도시되고 논의되는 것들을 비롯하여, 다수의 다른 실시예들이 제공된다.
약어들
[0019] 여기에 정의된 다양한 축약된 약어들(예를 들어 , 두문자어들)의 적어도 일부가 여기에 사용된 특정한 엘리먼트들을 지칭한다.
Figure pat00005
Figure pat00006
[0020] 다양한 실시예들에서, 영역들(예를 들어, 데이터 영역 들)은 SSD에서 NVM들의 블록들의 관리된 그룹들이다. 아래의 논의에서, "블록이 하나 또는 그 초과의 논리 특성들을 갖는다"는 "블록이 하나 또는 그 초과의 논리 특성들을 갖도록 프로젝트(projected)되거나 관측된 데이터에 할당된다"는 것을 의미하는 것으로 이해된다. 다양한 실시예들에서, 블록들은 논리적, 특성들, 물 리적 특성들을 갖고/갖거나 하나 또는 그 초과의 기록 데이터 소스들로부터의 데이터를 포함한다. 다양한 실시예들에서, 대역들은 특정한 물리적 특성들, 특정한 논리적 특성들의 특정 조합을 갖는 블록들을 오직 포 함하고/하거나 특정한 기록 데이터 소스들로부터의 데이터를 포함한다.
[0021] 다양한 실시예들에서 , 대역들은 하나 또는 그 초과의 특정한 논리적 특성들을 갖는 블록들을 포함한다. 다양한 실시예들에서, 특정한 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것(예를 들어, '핫터(hot ter)' 또는 '핫(hot)'), 더욱 상대적으로 덜 빈번하게 기록되는 것(예를 들어, '콜더(colder)' 또는 '콜드( cold)'), 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구 가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 ECC 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것 중 어느 하나 또는 초과의 것이다. 다양한 실시예들에서, 제 1 및 제 2 대역들은 특정한 제 1 및 제 2 논리적 특성들을 갖도록 프로젝트되거나 그 제 1 및 제 2 논리 특성들을 갖도록 관측되는 데이터에 할당된 블록들을 포함한다.
[0022] 다양한 실시예들에서, 대역들은 특정 한 물리적 특성들을 갖는 블록들을 오직 포함한다. 제 1 예로서, 대역은 하위 페이지 블록들을 오직 포함한 다. 제 2 예로서, 대역은 상위 페이지 블록들을 오직 포함한다. 다른 실시예들은 다른 특정한 물리적 특성 들을 갖는 블록들을 갖는 대역들을 포함한다.
[0023] 다양한 실시예들에서, 대역들은 특정한 기록 데이터 소스로부터의 데이터 블록들만을 오직 포함한다. 기록 데이터 소스들의 예들은 호스트 데이터, 리사 이클링함으로써 생성된 데이터(예를 들어, 소거될 블록으로부터의 유효 데이터), 및 예를 들어, SSD의 제어 기에 의해 수행된 시스템 동작들에 의해 생성된 데이터 (예를 들어, 맵 데이터)를 제공하는 컴퓨팅 호스트를 포함한다.
[0024] 다양한 실시예들에서, 대역들을 관리하는 것이 바람직하고, SSD의 성능, 신뢰도, 단가, 및 개발비 중 하나 또는 그 초과의 것을 향상시킨다. 예를 들어, 기록 실패들을 가질 가능성이 있는 NVM 셀들을 포함하는 블록들이 콜드 대역에 할당되어서, 신뢰도를 향상시킨다. 다른 예에 있어서, SLC들로 서 구성되거나 대안적으로 사용된 NVM 셀들을 포함하는 블록들이 시스템 데이터(예를 들어, 맵 데이터)에 할 당된다.
예시적인 실시예들
[0025] 상세한 설명에 대한 도입부를 끝내며, 후속하는 것은 본원에 설명된 개념들에 따른 다양한 실시예 타입들의 추가적인 설명을 제공하면서 "EC들"(예시적인 조합들)로서 명 시적으로 열거된 적어도 일부를 포함하는 예시적인 실시예들의 집합이다; 이들 예들은 상호 배타적이거나, 완벽한 것(exhaustive)이거나 제한적인 것을 뜻하지 않는다; 그리고 본 발명은 이들 예시적인 실시예들로 제 한되는 것이 아니라, 오히려 발행된 청구항들의 범위 내의 모든 가능한 수정들 및 변형들 그리고 이들의 등 가물들을 포괄한다.
[0026] EC1) 방법으로서,
호스트로부터 수신된 기록을 분석하여 기록의 특 징을 결정하는 단계;
특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하 나를 선택하는 단계; 및
선택된 대역에 기록의 데이터를 기록하는 단계
를 포함하고,
대역들 각 각은 NVM의 관리된 부분인, 방법.
[0027] EC2) EC1 방법에 있어서, 특징은 압축가능한 기록의 데이 터를 포함하는, 방법.
[0028] EC3) EC1 방법에 있어서, 특징은 실행가능한 기록의 데이터를 포함하 는, 방법.
[0029] EC4) EC1 방법에 있어서, 특징은 기록에 대응하는 논리 블록 어드레스(LBA)와 연 관된 카운터에 적어도 부분적으로 기초하는, 방법.
[0030] EC5) EC4 방법에 있어서, 카운터를 통해 LBA에 대한 기록들의 수를 카운팅하는 단계를 더 포함하는, 방법.
[0031] EC65) EC4 방법에 있어서 , 카운터를 통해 LBA의 판독들의 수와 LBA의 기록들의 수 사이의 차이를 카운팅하는 단계를 더 포함하는, 방 법.
[0032] EC7) EC1 방법에 있어서, 대역들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 방 법.
[0033] EC8) EC1 방법에 있어서, 대역들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는 , 방법.
[0034] EC9) EC1 방법에 있어서, 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따르 고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번 하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것 , 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 방법.
[0035] EC1 0) EC1 방법에 있어서, 대역들 중 제 1 대역으로부터 대역들 중 제 2 대역으로 데이터를 리사이클링하는 단 계를 더 포함하고, 제 2 대역은 호스트에 의해 직접 기록된 데이터 및 제 1 대역으로부터 리사이클링된 데이 터 양자를 포함하는, 방법.
[0036] EC11) EC1 방법에 있어서, 기록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 호스트로부터 수신되는, 방법.
[0037] EC12) EC1 방법에 있어서, 데이터를 기록하는 단계는 NVM과 통신하도록 인에이블된 플래시 메모리 인터페이 스를 적어도 부분적으로 통하는, 방법.
[0038] EC13) EC1 방법에 있어서, NVM은 적어도 하나의 플래 시 메모리를 포함하는, 방법.
[0039] EC19) EC1 방법에 있어서,
기록은 하나 또는 그 초과의 스 토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 호스트로부터 수신되고,
데이터를 기록하는 단계는 적어도 부분적으로, NVM과 통신하도록 인에이블된 플래시 메모리 인터페이스를 통해 이루어 지고,
NVM은 적어도 하나의 플래시 메모리를 포함하며,
스토리지 인터페이스 및 플래시 메모리 인터 페이스는 단일 집적 회로에 구현된 제어기에 포함되는, 방법.
[0040] EC15) 시스템으로서,
호스 트로부터 수신된 기록을 분석하여 기록의 특징을 결정하기 위한 수단;
특징에 적어도 부분적으로 기초하 여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하기 위한 수단; 및
선택된 대역에 기록의 데 이터를 기록하기 위한 수단
을 포함하고,
대역들 각각은 NVM의 관리된 부분인, 시스템.
[0041] EC16) EC15 시스템에 있어서, 특징은 압축가능한 기록의 데이터를 포함하는, 시스템.
[0042] EC17) EC15 시스템에 있어서, 특징은 실행가능한 기록의 데이터를 포함하는, 시스템.
[0043] EC18) EC15 방법에 있어서, 특징은 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터에 적어도 부분적으로 기 초하는, 시스템.
[0044] EC19) EC18 시스템에 있어서, 카운터를 통해 LBA에 대한 기록들의 수를 카 운팅하기 위한 수단을 더 포함하는, 시스템.
[0045] EC20) EC18 시스템에 있어서, 카운터를 통해 L BA의 판독들의 수와 LBA의 기록들의 수 사이의 차이를 카운팅하기 위한 수단을 더 포함하는, 시스템.
[ 0046] EC21) EC15 시스템에 있어서, 대역들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 시스템.
[0047] EC22) EC15 시스템에 있어서, 대역들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 시 스템.
[0048] EC23) EC15 시스템에 있어서, 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따 르고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈 번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있 는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것 , 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 시스템.
[0049] EC24) EC15 시스템에 있어서, 대역들 중 제 1 대역으로부터 대역들 중 제 2 대역으로 데이터를 리사이클링하 기 위한 수단을 더 포함하고, 제 2 대역은 호스트에 의해 직접 기록된 데이터 및 제 1 대역으로부터 리사이 클링된 데이터 양자를 포함하는, 시스템.
[0050] EC25) EC15 시스템에 있어서, 기록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 호스트로부터 수신되는, 시스 템.
[0051] EC26) EC15 시스템에 있어서, 데이터를 기록하기 위한 수단은 NVM과 통신하도록 인에이 블된 플래시 메모리 인터페이스를 포함하는, 시스템.
[0052] EC27) EC15 시스템에 있어서, NVM은 적 어도 하나의 플래시 메모리를 포함하는, 시스템.
[0053] EC28) EC15 시스템에 있어서,
기록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 호스트로부터 수신되고,
데이터를 기록하기 위한 수단은 NVM과 통신하도록 인에이블된 플래시 메모리 인터페이스를 포 함하고,
NVM은 적어도 하나의 플래시 메모리를 포함하며,
스토리지 인터페이스 및 플래시 메모리 인 터페이스는 단일 집적 회로에 구현된 제어기에 포함되는, 시스템.
[0054] EC29) 프로세싱 엘리먼트 에 의해 실행될 때, 프로세싱 엘리먼트로 하여금, 하기의 동작들을 수행 및/또는 제어하게 하는 명령들의 세 트가 저장된 유형의 컴퓨터 판독가능 매체로서, 동작들은,
호스트로부터 수신된 기록을 분석하여 기록의 특징을 결정하는 것;
특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하 나를 선택하는 것; 및
선택된 대역에 기록의 데이터를 기록하는 것
을 포함하고,
대역들 각각은 NVM의 관리된 부분인, 유형의 컴퓨터 판독가능 매체.
[0055] EC30) EC29 유형의 컴퓨터 판독가능 매 체에 있어서, 특징은 압축가능한 기록의 데이터를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0056] EC31) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 특징은 실행가능한 기록의 데이터를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0057] EC32) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 특징은 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터에 적어도 부분적으로 기초하는, 유형의 컴퓨터 판독가능 매체.
[0058] EC33) EC32 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 카운터를 통해 LBA에 대 한 기록들의 수를 카운팅하는 것을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
[0059] EC34) EC32 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 카운터를 통해 LBA의 판독들의 수와 LBA의 기록들의 수 사 이의 차이를 카운팅하는 것을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
[0060] EC35) EC29 유형 의 컴퓨터 판독가능 매체에 있어서, 대역들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 유형의 컴퓨 터 판독가능 매체.
[0061] EC36) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 대역들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0062] EC37) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 논리 특성들 은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하 고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
[006 3] EC38) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 대역들 중 제 1 대역으로부터 대역들 중 제 2 대역으로 데이터를 리사이클링하는 것을 더 포함하고, 제 2 대역은 호스트에 의해 직접 기록된 데이 터 및 제 1 대역으로부터 리사이클링된 데이터 양자를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0064] EC39) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 기록은 하나 또는 그 초과의 스토리지 인터페이스 표준 들과 호환가능한 스토리지 인터페이스를 통해 호스트로부터 수신되는, 유형의 컴퓨터 판독가능 매체.
[ 0065] EC40) EC29 유형의 컴퓨터 판독가능 매체에 있어서, 데이터를 기록하는 단계는 NVM과 통신하도록 인에이블된 플래시 메모리 인터페이스를 적어도 부분적으로 통하는, 유형의 컴퓨터 판독가능 매체.
[00 66] EC41) EC29 유형의 컴퓨터 판독가능 매체에 있어서, NVM은 적어도 하나의 플래시 메모리를 포함하는 , 유형의 컴퓨터 판독가능 매체.
[0067] EC42) EC29 유형의 컴퓨터 판독가능 매체에 있어서,
기 록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 호스트로 부터 수신되고,
데이터를 기록하는 단계는 적어도 부분적으로, NVM과 통신하도록 인에이블된 플래시 메 모리 인터페이스를 통해 이루어지고,
NVM은 적어도 하나의 플래시 메모리를 포함하며,
프로세싱 엘 리먼트, 스토리지 인터페이스, 및 플래시 메모리 인터페이스는 단일 집적 회로에 구현된 제어기에 포함되는 , 유형의 컴퓨터 판독가능 매체.
[0068] EC43) 장치로서,
호스트로부터 수신된 기록을 분석하여 기록의 특징을 결정하도록 인에이블된 기록 분석 하드웨어 로직 회로;
특징에 적어도 부분적으로 기초하 여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하도록 인에이블된 대역 선택 하드웨어 로직 회로 ; 및
선택된 대역에 기록의 데이터를 기록하도록 인에이블된 메모리 기록 하드웨어 로직 회로
를 포 함하고,
대역들 각각은 NVM의 관리된 부분인, 장치.
[0069] EC44) EC43 장치에 있어서, 특징은 압축가능한 기록의 데이터를 포함하는, 장치.
[0070] EC45) EC43 장치에 있어서, 특징은 실행가능한 기록의 데이터를 포함하는, 장치.
[0071] EC46) EC43 장치에 있어서, 대역들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 장치.
[0072] EC47) EC43 장치에 있어서, 대역들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 장치.
[0073] EC48) EC43 장치에 있어서, 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기 록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전 력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기 법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 장치.
[0074] EC49) EC43 장치에 있어서, 대역들 중 제 1 대역으로부터 대역들 중 제 2 대역으로 데이터를 리사이클링하도록 인에이블된 리사이클러 하드웨어 로직 회로를 더 포함하고, 제 2 대역 은 호스트에 의해 직접 기록된 데이터 및 제 1 대역으로부터 리사이클링된 데이터 양자를 포함하는, 장치.
[0075] EC50) EC43 장치에 있어서, 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터를 더 포 함하고, 특징은 카운터에 적어도 부분적으로 기초하는, 장치.
[0076] EC51) EC50 장치에 있어서, 카 운터는 LBA에 대한 기록들의 수를 카운팅하도록 인에이블되는, 장치.
[0077] EC52) EC50 장치에 있 어서, 카운터는 LBA의 판독들의 수와 LBA의 기록들의 수 사이의 차이를 카운팅하도록 인에이블되는, 장치.
[0078] EC53) EC43 장치에 있어서, 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토 리지 인터페이스를 더 포함하고, 기록은 스토리지 인터페이스를 통해 호스트로부터 수신되는, 장치.
[0 079] EC54) EC43 장치에 있어서, 메모리 기록 하드웨어 로직 회로는 NVM과 통신하도록 인에이블된 플래 시 메모리 인터페이스를 포함하는, 장치.
[0080] EC55) EC43 장치에 있어서, NVM은 적어도 하나의 플래시 메모리를 포함하는, 장치.
[0081] EC56) EC43 장치에 있어서, 장치는 단일 집적 회로에 구현 된 제어기에 포함되는, 장치.
[0082] EC57) 방법으로서,
기록 데이터의 적어도 일부 특징들을 결정하는 단계;
특징들에 적어도 부분적으로 기초하여 하나 또는 그 초과의 비휘발성 메모리(NVM)들의 블록들의 복수의 관리된 그룹들 중 하나를 선택하는 단계; 및
선택된 관리 그룹에 기록 데이터를 기록하 는 단계
를 포함하고,
결정하는 단계, 선택하는 단계, 및 기록하는 단계는 스토리지 시스템의 제어 기에 의해 수행되며,
관리된 그룹들 각각은 하나 또는 그 초과의 동작들에 관하여 관리되고, 관리 동작 들은 리사이클링 동작 및 기록 할당 동작 중 어느 하나 또는 그 초과의 것을 포함하며, 관리된 그룹들 각각 은 NVM들의 적어도 2개의 다이에 의해 제공된 스토리지를 포함하는, 방법.
[0083] EC58) EC57 방법 에 있어서, 관리된 그룹들 각각은 NVM의 각각의 관리 방식에 대응하는, 방법.
[0084] EC59) EC58 방 법에 있어서, 각각의 관리 방식들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상 대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보 존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용 하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 ECC 방식들로 에러들에 대해 보호되는 것 , 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는 각각의 논리 특성들에 따 르는, 방법.
[0085] EC60) EC58 방법에 있어서, 각각의 관리 방식들은 하위-페이지 블록들만을 포함 하는 것 및 상위-페이지 블록들만을 포함하는 것을 포함하는 각각의 물리적 특성들에 따르는, 방법.
[0 086] EC61) EC58 방법에 있어서, 각각의 관리 방식들은 호스트 데이터, 리사이클링함으로써 생성된 데이 터, 및 시스템 동작들에 의해 생성된 데이터를 제공하는 컴퓨팅 호스트를 포함하는 각각의 기록 데이터 소스 들에 따르는, 방법.
[0087] EC62) EC57 방법에 있어서, 관리된 그룹들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 방법.
[0088] EC63) EC57 방법에 있어서, 관리된 그룹들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 방법.
[0089] EC64) EC57 방법에 있어서, 관리된 그룹들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번 하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능 하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특 정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드 (ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않 는 것을 포함하는, 방법.
[0090] EC65) EC57 방법에 있어서, 관리된 그룹들 중 제 1 관리된 그룹으 로부터 관리된 그룹들 중 제 2 관리된 그룹으로 데이터를 리사이클링하는 단계를 더 포함하고, 제 2 관리된 그룹은 호스트에 의해 직접 기록된 데이터 및 제 1 관리된 그룹으로부터 리사이클링된 데이터 양자를 포함하 는, 방법.
[0091] EC66) EC57 방법에 있어서, 호스트로부터 기록 데이터를 수신하는 단계를 더 포함 하는, 방법.
[0092] EC67) EC57 방법에 있어서, 기록 데이터는 제어기에 의해 생성되는, 방법.
[0093] EC68) EC57 방법에 있어서, 기록 데이터는 사용자 기록 데이터, 재기록 데이터, 시스템 데이터, 재기록 시스템 데이터, 및 재기록 사용자 데이터 중 어느 하나 또는 그 초과의 것을 포함하는, 방법.
[ 0094] EC69) EC68 방법에 있어서, 시스템 데이터는 체크포인트 데이터를 포함하는, 방법.
[0095] EC70) EC57 방법에 있어서, 결정하는 단계는 힌트(hint)에 응답하는, 방법.
[0096] EC71) EC70 방법 에 있어서, 힌트는 호스트로부터 수신되는, 방법.
[0097] EC72) EC70 방법에 있어서, 힌트는 기록 데이터가 판독 전용 데이터 또는 기록 전용 데이터 중 어느 하나이라는 것을 나타내는, 방법.
[0098] EC73) EC57 방법에 있어서, 결정하는 단계는 기록 데이터를 분석하는 것에 응답하는, 방법.
[0099] EC74) EC73 방법에 있어서, 분석하는 것은 하드웨어, 소프트웨어, 및 펌웨어 중 어느 하나 또는 그 초과의 것에서 적어도 부분적으로 수행되는, 방법.
[0100] EC75) EC74 방법에 있어서, 하드웨어는 데이터 감소 엔진, 데이터 중복제거 엔진, 및 데이터 압축 엔진 중 어느 하나 또는 그 초과의 것을 포함하는, 방법 .
[0101] EC76) EC57 방법에 있어서, 결정하는 단계는 하드웨어를 적어도 부분적으로 통해 수행되는 , 방법.
[0102] EC77) EC76 방법에 있어서, 하드웨어는 데이터 감소 엔진을 포함하는, 방법.
[0103] EC78) EC76 방법에 있어서, 특징들은 실행가능한 기록 데이터를 포함하는, 방법.
[0104] EC79) EC76 방법에 있어서, 특징들은 압축불가능한 기록 데이터를 포함하는, 방법.
[0105] EC80) EC76 방법에 있어서, 특징들은 감소불가능한 기록 데이터를 포함하는, 방법.
[0106] EC81) EC57 방 법에 있어서, 특징들은 이전 기록들의 수, 이전 판독들의 수, 이전 기록들에 대한 이전 판독들의 비율, 기록 데이터가 압축불가능하다는 표시, 기록 데이터가 압축가능하다는 표시, 기록 데이터가 실행가능하다는 표시 , 및 기록 데이터가 복구불가능하다는 표시 중 어느 하나 또는 그 초과의 것을 포함하는, 방법.
[0107] EC82) EC57 방법에 있어서, 특징들은 관리된 그룹들 중 이전에 선택된 관리 그룹들 중 어느 하나 또는 그 초 과의 것을 포함하는, 방법.
[0108] EC83) EC57 방법에 있어서, 관리된 그룹들 중 어느 하나 또는 그 초과의 것은 결정하는 단계가 빈번하게 판독되는 것, 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 및 복구불가능한 것 중 하나 또는 그 초과의 것으로서 특징화한 데이터를 포함하는 블록들 중 하나를 포 함하는, 방법.
[0109] EC84) EC57 방법에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스 템 데이터, 사용자 데이터, 및 재기록 데이터 중 어느 하나를 포함하는 블록들 중 하나만을 갖는, 방법.
[0110] EC85) EC57 방법에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및/또는 재기록 데이터 중 어느 하나 또는 2개를 포함하는 블록들 중 하나만을 갖는, 방법.
[0 111] EC86) EC57 방법에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 블록들 중 하위-페이지 또 는 상위 페이지 블록만을 갖는, 방법.
[0112] EC87) EC57 방법에 있어서, 관리된 그룹들 중 제 1 및 제 2 그룹들은 상이한 에러 정정을 갖는, 방법.
[0113] EC88) EC57 방법에 있어서, 제어기는 적어도 하나의 스토리지 인터페이스 표준과 호환가능한 적어도 하나의 스토리지 인터페이스를 통해 호스트에 인터페 이싱하도록 인에이블되는, 방법.
[0114] EC89) EC57 방법에 있어서, 제어기는 적어도 하나의 메모리 인터페이스를 통해 다이 중 적어도 하나에 인터페이싱하도록 인에이블되는, 방법.
[0115] EC90) EC 57 방법에 있어서, NVM들은 적어도 하나의 플래시 메모리를 포함하는, 방법.
[0116] EC91) 시스템으 로서,
기록 데이터의 적어도 일부 특징들을 결정하기 위한 수단;
특징들에 적어도 부분적으로 기초 하여 하나 또는 그 초과의 비휘발성 메모리(NVM)들의 블록들의 복수의 관리된 그룹들 중 하나를 선택하기 위 한 수단; 및
선택된 관리 그룹에 기록 데이터를 기록하기 위한 수단
을 포함하고,
결정하기 위 한 수단, 선택하기 위한 수단, 및 기록하기 위한 수단은 스토리지 시스템의 제어기의 엘리먼트들이며,
관리된 그룹들 각각은 하나 또는 그 초과의 동작들에 관하여 관리되고, 관리 동작들은 리사이클링 동작 및 기록 할당 동작 중 어느 하나 또는 그 초과의 것을 포함하며, 관리된 그룹들 각각은 NVM들의 적어도 2개의 다이에 의해 제공된 스토리지를 포함하는, 시스템.
[0117] EC92) EC91 시스템에 있어서, 관리된 그 룹들 각각은 NVM들의 각각의 관리 방식에 대응하는, 시스템.
[0118] EC93) EC92 시스템에 있어서, 각각의 관리 방식들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되 는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 ECC 방식들로 에러들에 대해 보호되는 것, 리사이클링 의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는 각각의 논리 특성들에 따르는, 방법.
[0119] EC94) EC92 시스템에 있어서, 각각의 관리 방식들은 하위-페이지 블록들만을 포함하는 것 및 상 위-페이지 블록들만을 포함하는 것을 포함하는 각각의 물리적 특성들에 따르는, 시스템.
[0120] EC 95) EC92 시스템에 있어서, 각각의 관리 방식들은 호스트 데이터, 리사이클링함으로써 생성된 데이터, 및 시 스템 동작들에 의해 생성된 데이터를 제공하는 컴퓨팅 호스트를 포함하는 각각의 기록 데이터 소스들에 따르 는, 시스템.
[0121] EC96) EC91 시스템에 있어서, 관리된 그룹들 각각은 하나 또는 그 초과의 R-블 록들을 포함하는, 시스템.
[0122] EC97) EC91 시스템에 있어서, 관리된 그룹들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 시스템.
[0123] EC98) EC91 시스템에 있어서, 관리된 그룹들 각 각은 복수의 논리 특성들 중 적어도 하나에 따라고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불 가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것 , 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 시스템.
[0124] EC99) EC91 시스템에 있어서, 관리된 그룹들 중 제 1 관리된 그룹으로부터 관리된 그룹들 중 제 2 관리된 그룹으로 데이터를 리사이클링하기 위한 수단을 더 포함하고, 제 2 관리된 그룹은 호스트에 의해 직접 기록된 데이터 및 제 1 관리된 그룹으로부터 리사이클링된 데이터 양자를 포함하는, 시스템.
[0125] EC100) EC91 시스템에 있어서, 호스트로부터 기록 데이터를 수신 하기 위한 수단을 더 포함하는, 시스템.
[0126] EC101) EC91 시스템에 있어서, 기록 데이터는 제어 기에 의해 생성되는, 시스템.
[0127] EC102) EC91 시스템에 있어서, 기록 데이터는 사용자 기록 데 이터, 재기록 데이터, 시스템 데이터, 재기록 시스템 데이터, 및 재기록 사용자 데이터 중 어느 하나 또는 그 초과의 것을 포함하는, 시스템.
[0128] EC103) EC102 시스템에 있어서, 시스템 데이터는 체크포 인트 데이터를 포함하는, 시스템.
[0129] EC104) EC91 시스템에 있어서, 결정하기 위한 수단은 힌트 에 응답하는, 시스템.
[0130] EC105) EC104 시스템에 있어서, 힌트는 호스트로부터 수신되는, 시스 템.
[0131] EC106) EC104 시스템에 있어서, 힌트는 기록 데이터가 판독 전용 데이터 또는 기록 전용 데이터 중 어느 하나이라는 것을 나타내는, 시스템.
[0132] EC107) EC91 시스템에 있어서, 결정 하기 위한 수단은 기록 데이터의 분석에 응답하는, 시스템.
[0133] EC108) EC107 시스템에 있어서, 분석은 하드웨어, 소프트웨어, 및 펌웨어 중 어느 하나 또는 그 초과의 것에서 적어도 부분적으로 수행되는 , 시스템.
[0134] EC109) EC108 시스템에 있어서, 하드웨어는 데이터 감소 엔진, 데이터 중복제거 엔진, 및 데이터 압축 엔진 중 어느 하나 또는 그 초과의 것을 포함하는, 시스템.
[0135] EC110) E C91 시스템에 있어서, 결정하기 위한 수단은 데이터 감소 엔진을 포함하는, 시스템.
[0136] EC111 ) EC110 시스템에 있어서, 특징들은 실행가능한 기록 데이터를 포함하는, 시스템.
[0137] EC112) EC110 시스템에 있어서, 특징들은 압축불가능한 기록 데이터를 포함하는, 시스템.
[0138] EC113) EC110 시스템에 있어서, 특징들은 감소불가능한 기록 데이터를 포함하는, 시스템.
[0139] EC114) E C91 시스템에 있어서, 특징들은 이전 기록들의 수, 이전 판독들의 수, 이전 기록들에 대한 이전 판독들의 비 율, 기록 데이터가 압축불가능하다는 표시, 기록 데이터가 압축가능하다는 표시, 기록 데이터가 실행가능하 다는 표시, 및 기록 데이터가 복구불가능하다는 표시 중 어느 하나 또는 그 초과의 것을 포함하는, 시스템.
[0140] EC115) EC91 시스템에 있어서, 특징들은 관리된 그룹들 중 이전에 선택된 관리 그룹들 중 어느 하나 또는 그 초과의 것을 포함하는, 시스템.
[0141] EC116) EC91 시스템에 있어서, 관리된 그룹들 중 어느 하나 또는 그 초과의 것은 결정하기 위한 수단이 빈번하게 판독되는 것, 빈번하게 기록되는 것, 압 축불가능한 것, 실행가능한 것, 및 복구불가능한 것 중 하나 또는 그 초과의 것으로서 특징화한 데이터를 포 함하는 블록들 중 하나를 포함하는, 시스템.
[0142] EC117) EC91 시스템에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및 재기록 데이터 중 어느 하나를 포함하는 블 록들 중 하나만을 갖는, 시스템.
[0143] EC118) EC91 시스템에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및/또는 재기록 데이터 중 어느 하나 또는 2개를 포함하는 블록들 중 하나만을 갖는, 시스템.
[0144] EC119) EC91 시스템에 있어서, 관리된 그룹들 중 하나 또 는 그 초과의 것은 블록들 중 하위-페이지 또는 상위 페이지 블록만을 갖는, 시스템.
[0145] EC120 ) EC91 시스템에 있어서, 관리된 그룹들 중 제 1 및 제 2 그룹들은 상이한 에러 정정을 갖는, 시스템.
[0146] EC121) EC91 시스템에 있어서, 제어기는 적어도 하나의 스토리지 인터페이스 표준과 호환가능한 적어도 하나의 스토리지 인터페이스를 통해 호스트에 인터페이싱하도록 인에이블되는, 시스템.
[0147] EC122) EC91 시스템에 있어서, 제어기는 적어도 하나의 메모리 인터페이스를 통해 다이 중 적어도 하나에 인 터페이싱하도록 인에이블되는, 시스템.
[0148] EC123) EC91 시스템에 있어서, NVM들은 적어도 하나 의 플래시 메모리를 포함하는, 시스템.
[0149] EC124) 프로세싱 엘리먼트에 의해 실행될 때, 프로세 싱 엘리먼트로 하여금, 하기의 동작들을 수행 및/또는 제어하게 하는 명령들의 세트가 저장된 유형의 컴퓨터 판독가능 매체로서, 동작들은,
기록 데이터의 적어도 일부 특징들을 결정하는 것;
특징들에 적어도 부분적으로 기초하여 하나 또는 그 초과의 비휘발성 메모리(NVM)들의 블록들의 복수의 관리된 그룹들 중 하 나를 선택하는 것; 및
선택된 관리 그룹에 기록 데이터를 기록하는 것
을 포함하고,
프로세싱 엘리먼트는 스토리지 시스템의 제어기에 포함되며,
관리된 그룹들 각각은 하나 또는 그 초과의 동작들에 관하여 관리되고, 관리 동작들은 리사이클링 동작 및 기록 할당 동작 중 어느 하나 또는 그 초과의 것을 포 함하며, 관리된 그룹들 각각은 NVM들의 적어도 2개의 다이에 의해 제공된 스토리지를 포함하는, 유형의 컴퓨 터 판독가능 매체.
[0150] EC125) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 관리된 그룹들 각 각은 NVM들의 각각의 관리 방식에 대응하는, 유형의 컴퓨터 판독가능 매체.
[0151] EC126) EC125 유 형의 컴퓨터 판독가능 매체에 있어서, 각각의 관리 방식들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하 게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하 고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정 한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 ECC 방식들로 에 러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는 각각의 논리 특성들에 따르는, 유형의 컴퓨터 판독가능 매체.
[0152] EC127) EC125 방법에 있어서, 각각의 관리 방식들은 하위-페이지 블록들만을 포함하는 것 및 상위-페이지 블록들만을 포함하는 것을 포함 하는 각각의 물리적 특성들에 따르는, 유형의 컴퓨터 판독가능 매체.
[0153] EC128) EC125 방법에 있어서, 각각의 관리 방식들은 호스트 데이터, 리사이클링함으로써 생성된 데이터, 및 시스템 동작들에 의해 생성된 데이터를 제공하는 컴퓨팅 호스트를 포함하는 각각의 기록 데이터 소스들에 따르는, 유형의 컴퓨터 판독가능 매체.
[0154] EC129) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 관리된 그룹들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0155] EC130) EC124 유 형의 컴퓨터 판독가능 매체에 있어서, 관리된 그룹들 NVM들의 하나 또는 그 초과의 블록들을 포함하는, 유형 의 컴퓨터 판독가능 매체.
[0156] EC131) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 관리된 그 룹들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 논리 특성들은 빈번하게 판독되는 것, 상대적으 로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것 , 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에 러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대 상이 되지 않는 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0157] EC132) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 관리된 그룹들 중 제 1 관리된 그룹으로부터 관리된 그룹들 중 제 2 관리 된 그룹으로 데이터를 리사이클링하는 것을 더 포함하고, 제 2 관리된 그룹은 호스트에 의해 직접 기록된 데 이터 및 제 관리된 그룹으로부터 리사이클링된 데이터 양자를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0158] EC133) EC124의 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 호스트로부터 기록 데이터를 수신하는 것을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
[0159] EC134) EC124 유형의 컴퓨터 판 독가능 매체에 있어서, 기록 데이터는 제어기에 의해 생성되는, 유형의 컴퓨터 판독가능 매체.
[0160] EC135) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 기록 데이터는 사용자 기록 데이터, 재기록 데이터, 시스템 데이터, 재기록 시스템 데이터, 및 재기록 사용자 데이터 중 어느 하나 또는 그 초과의 것을 포함하 는, 유형의 컴퓨터 판독가능 매체.
[0161] EC136) EC135 유형의 컴퓨터 판독가능 매체에 있어서, 시 스템 데이터는 체크포인트 데이터를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0162] EC137) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 결정하는 단계는 힌트에 응답하는, 유형의 컴퓨터 판독가능 매체.
[0163] EC138) EC137 유형의 컴퓨터 판독가능 매체에 있어서, 힌트는 호스트로부터 수신되는, 유형의 컴 퓨터 판독가능 매체.
[0164] EC139) EC137 유형의 컴퓨터 판독가능 매체에 있어서, 힌트는 기록 데 이터가 판독 전용 데이터 또는 기록 전용 데이터 중 어느 하나이라는 것을 나타내는, 유형의 컴퓨터 판독가 능 매체.
[0165] EC140) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 결정하는 단계는 기록 데이 터를 분석하는 것에 응답하는, 유형의 컴퓨터 판독가능 매체.
[0166] EC141) EC140 유형의 컴퓨터 판독가능 매체에 있어서, 분석하는 것은 데이터 감소 엔진, 데이터 중복제거 엔진, 및 데이터 압축 엔진 중 어느 하나 또는 그 초과의 것과 함께 적어도 부분적으로 수행되는, 유형의 컴퓨터 판독가능 매체.
[016 7] EC142) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 특징들은 이전 기록들의 수, 이전 판독들의 수 , 이전 기록들에 대한 이전 판독들의 비율, 기록 데이터가 압축불가능하다는 표시, 기록 데이터가 압축가능 하다는 표시, 기록 데이터가 실행가능하다는 표시, 및 기록 데이터가 복구불가능하다는 표시 중 어느 하나 또는 그 초과의 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0168] EC143) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 특징들은 관리된 그룹들 중 이전에 선택된 관리 그룹들 중 어느 하나 또는 그 초과 의 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0169] EC144) EC124 유형의 컴퓨터 판독가능 매 체에 있어서, 관리된 그룹들 중 어느 하나 또는 그 초과의 것은 결정하는 단계가 빈번하게 판독되는 것, 빈 번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 및 복구불가능한 것 중 하나 또는 그 초과의 것으로 서 특징화한 데이터를 포함하는 블록들 중 하나를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0170] EC145) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및 재기록 데이터 중 어느 하나를 포함하는 블록들 중 하나만을 갖는, 유형의 컴퓨 터 판독가능 매체.
[0171] EC146) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및/또는 재기록 데이터 중 어느 하나 또는 2개를 포함하는 블록들 중 하나만을 갖는, 유형의 컴퓨터 판독가능 매체.
[0172] EC147) EC124 유형의 컴 퓨터 판독가능 매체에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 블록들 중 하위-페이지 또는 상 위 페이지 블록만을 갖는, 유형의 컴퓨터 판독가능 매체.
[0173] EC148) EC124 유형의 컴퓨터 판독 가능 매체에 있어서, 관리된 그룹들 중 제 1 및 제 2 그룹들은 상이한 에러 정정을 갖는, 유형의 컴퓨터 판 독가능 매체.
[0174] EC149) EC124 유형의 컴퓨터 판독가능 매체에 있어서, 제어기는 적어도 하나의 스토리지 인터페이스 표준과 호환가능한 적어도 하나의 스토리지 인터페이스를 통해 호스트에 인터페이싱하 도록 인에이블되는, 유형의 컴퓨터 판독가능 매체.
[0175] EC150) EC124 유형의 컴퓨터 판독가능 매 체에 있어서, 제어기는 적어도 하나의 메모리 인터페이스를 통해 다이 중 적어도 하나에 인터페이싱하도록 인에이블되는, 유형의 컴퓨터 판독가능 매체.
[0176] EC151) EC124 유형의 컴퓨터 판독가능 매체에 있어서, NVM들은 적어도 하나의 플래시 메모리를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0177] EC152) 장치로서,
기록 데이터의 적어도 일부 특징들을 결정하도록 인에이블된 기록 데이터 특징화 하드 웨어 로직 회로;
특징들에 적어도 부분적으로 기초하여 하나 또는 그 초과의 비휘발성 메모리(NVM)들의 블록들의 복수의 관리된 그룹들 중 하나를 선택하도록 인에이블된 관리된 그룹 선택 하드웨어 로직 회로; 및
선택된 관리 그룹에 기록 데이터를 기록하도록 인에이블된 메모리 기록 하드웨어 로직 회로
를 포함하고 ,
장치는 스토리지 시스템의 제어기에 포함되며,
관리된 그룹들 각각은 하나 또는 그 초과의 동작들 에 관하여 관리되고, 관리 동작들은 리사이클링 동작 및 기록 할당 동작 중 어느 하나 또는 그 초과의 것을 포함하며, 관리된 그룹들 각각은 NVM들의 적어도 2개의 다이에 의해 제공된 스토리지를 포함하는, 장치.
[0178] EC153) EC152 장치에 있어서, 관리된 그룹들 각각은 NVM들의 각각의 관리 방식에 대응하는, 장치 .
[0179] EC154) EC153 장치에 있어서, 각각의 관리 방식들은 빈번하게 판독되는 것, 상대적으로 더 욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복 구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 ECC 방식 들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포 함하는 각각의 논리 특성들에 따르는, 장치.
[0180] EC155) EC153 장치에 있어서, 각각의 관리 방식 들은 하위-페이지 블록들만을 포함하는 것 및 상위-페이지 블록들만을 포함하는 것을 포함하는 각각의 물리 적 특성들에 따르는, 장치.
[0181] EC156) EC153 장치에 있어서, 각각의 관리 방식들은 호스트 데이 터, 리사이클링함으로써 생성된 데이터, 및 시스템 동작들에 의해 생성된 데이터를 제공하는 컴퓨팅 호스트 를 포함하는 각각의 기록 데이터 소스들에 따르는, 장치.
[0182] EC157) EC152 장치에 있어서, 관리 된 그룹들 각각은 하나 또는 그 초과의 R-블록들을 포함하는, 장치.
[0183] EC158) EC152 장치에 있 어서, 관리된 그룹들 각각은 NVM의 하나 또는 그 초과의 블록들을 포함하는, 장치.
[0184] EC159) EC152 장치에 있어서, 관리된 그룹들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또 는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대 상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 장치.
[0185] EC160) EC152 장치에 있어서, 관리된 그룹들 중 제 1 관리된 그룹으로부터 관리된 그룹들 중 제 2 관리된 그룹으로 데이터를 리사 이클링하도록 인에이블된 리사이클러 하드웨어 로직 회로를 더 포함하고, 제 2 관리된 그룹은 호스트에 의해 직접 기록된 데이터 및 제 관리된 그룹으로부터 리사이클링된 데이터 양자를 포함하는, 장치.
[0186] EC161) EC152 장치에 있어서, 기록 데이터는 호스트로부터 수신되는, 장치.
[0187] EC162) EC152 장 치에 있어서, 기록 데이터는 제어기에 의해 생성되는, 장치.
[0188] EC163) EC152 장치에 있어서, 기록 데이터는 사용자 기록 데이터, 재기록 데이터, 시스템 데이터, 재기록 시스템 데이터, 및 재기록 사용 자 데이터 중 어느 하나 또는 그 초과의 것을 포함하는, 장치.
[0189] EC164) EC163 장치에 있어서 , 시스템 데이터는 체크포인트 데이터를 포함하는, 장치.
[0190] EC165) EC152 장치에 있어서, 기록 데이터 특징화 하드웨어 로직 회로는 힌트에 응답하는, 장치.
[0191] EC166) EC165 장치에 있어서, 힌트는 호스트로부터 수신되는, 장치.
[0192] EC167) EC165 장치에 있어서, 힌트는 기록 데이터가 판독 전용 데이터 또는 기록 전용 데이터 중 어느 하나이라는 것을 나타내는, 장치.
[0193] EC168) EC152 장치에 있어서, 기록 데이터 특징화 하드웨어 로직 회로는 데이터 감소 엔진을 포함하는, 장치.
[0194] EC169) EC168 장치에 있어서, 특징들은 실행가능한 기록 데이터를 포함하는, 장치.
[0195] EC170) EC168 장치에 있어서, 특징들은 압축불가능한 기록 데이터를 포함하는, 장치.
[0196] EC17 1) EC168 장치에 있어서, 특징들은 감소불가능한 기록 데이터를 포함하는, 장치.
[0197] EC172) EC 152 장치에 있어서, 특징들은 이전 기록들의 수, 이전 판독들의 수, 이전 기록들에 대한 이전 판독들의 비율 , 기록 데이터가 압축불가능하다는 표시, 기록 데이터가 압축가능하다는 표시, 기록 데이터가 실행가능하다 는 표시, 및 기록 데이터가 복구불가능하다는 표시 중 어느 하나 또는 그 초과의 것을 포함하는, 장치.
[0198] EC173) EC152 장치에 있어서, 특징들은 관리된 그룹들 중 이전에 선택된 관리 그룹들 중 어느 하 나 또는 그 초과의 것을 포함하는, 장치.
[0199] EC174) EC152 장치에 있어서, 관리된 그룹들 중 어 느 하나 또는 그 초과의 것은 기록 데이터 특징화 하드웨어 로직 회로가 빈번하게 판독되는 것, 빈번하게 기 록되는 것, 압축불가능한 것, 실행가능한 것, 및 복구불가능한 것 중 하나 또는 그 초과의 것으로서 특징화 한 데이터를 포함하는 블록들 중 하나를 포함하는, 장치.
[0200] EC175) EC152 장치에 있어서, 관리 된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및 재기록 데이터 중 어느 하나를 포함하는 블록들 중 하나만을 갖는, 장치.
[0201] EC176) EC152 장치에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 시스템 데이터, 사용자 데이터, 및/또는 재기록 데이터 중 어느 하나 또는 2개를 포함하는 블록들 중 하나만을 갖는, 장치.
[0202] EC177) EC152 장치에 있어서, 관리된 그룹들 중 하나 또는 그 초과의 것은 블록들 중 하위-페이지 또는 상위 페이지 블록만을 갖는, 장치.
[0203] EC178) EC152 장치에 있어서, 관리된 그룹들 중 제 1 및 제 2 그룹들은 상이한 에러 정정을 갖는, 장치.
[0204] EC179) EC152 장치에 있어서, 제어기에 포함되고 제어기를 호스트에 인터페이싱하도록 인에이블 된 스토리지 인터페이스를 더 포함하고, 스토리지 인터페이스는 적어도 하나의 스토리지 인터페이스 표준과 호환가능한, 장치.
[0205] EC180) EC152 장치에 있어서, 제어기에 포함되고 제어기를 다이 중 적어 도 하나에 인터페이싱하도록 인에이블된 플래시 메모리 인터페이스를 더 포함하는, 장치.
[0206] E C181) EC152 장치에 있어서, NVM들은 적어도 하나의 플래시 메모리를 포함하는, 장치.
[0207] EC18 2) 스토리지 인터페이스 표준을 갖거나 참조하는 임의의 상술한 EC들로서, 스토리지 인터페이스 표준은,
범용 직렬 버스(USB) 인터페이스 표준,
콤팩트 플래시(CF) 인터페이스 표준,
멀티미디어카드(MMC) 인터페이스 표준,
내장형 MMC(eMMC) 인터페이스 표준,
썬더볼트 인터페이스 표준,
UFS 인터페이 스 표준,
보안 디지털(SD) 인터페이스 표준,
메모리 스틱 인터페이스 표준,
xD-픽처 카드 인터 페이스 표준,
집적 드라이브 전자장치(IDE) 인터페이스 표준,
직렬 어드밴스드 기술 부착(SATA) 인 터페이스 표준,
외부 SATA(eSATA) 인터페이스 표준,
소형 컴퓨터 시스템 인터페이스(SCSI) 인터페이 스 표준,
직렬 부착 소형 컴퓨터 시스템 인터페이스(SAS) 인터페이스 표준,
섬유 채널 인터페이스 표준,
이더넷 인터페이스 표준, 및
주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스 표준 중 하나 또는 그 초과를 포함하는, EC들.
[0208] EC183) 플래시 메모리 인터페이스를 갖거나 참조하는 임의의 상술한 EC들로서, 플래시 메모리 인터페이스는,
오픈 NAND 플래시 인터페이스(ONFI),
토글 모드 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
DDR2 동기 인터페이스,
동기 인터 페이스, 및
비동기 인터페이스 중 하나 또는 그 초과의 것과 호환가능한, EC들.
[0209] EC184) 컴퓨팅 호스트를 갖거나 참조하는 임의의 상술한 EC들로서, 컴퓨팅 호스트는,
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
스토리지 서버,
스토리지 부착 네트워크(SAN),
네트워크 부착 스토리 지(NAS) 디바이스,
직접 부착 스토리지(DAS) 디바이스,
스토리지 기구,
개인 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
태블릿 디바이스 또는 컴퓨터,
울트라북 컴퓨터 ,
전자 판독 디바이스(e-리더),
휴대 보조 단말기(PDA),
네비게이션 시스템,
(핸드헬드) 글 로벌 포지셔닝 시스템(GPS) 디바이스,
자동 제어 시스템,
자동 미디어 제어 시스템 또는 컴퓨터,
프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스,
판매 시점 정보 관리(POS) 디바이스,
캐시- 레지스터,
미디어 플레이어,
텔레비전,
미디어 리코더,
디지털 비디오 리코더(DVR),
디 지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 및
전자 게임 중 하나 또는 그 초과를 포 함하는, EC들.
[0210] EC185) 적어도 하나의 플래시 메모리를 갖거나 참조하는 임의의 상술한 EC들 로서, 적어도 하나의 플래시 메모리의 적어도 일부는,
NAND 플래시 기술 스토리지 셀들, 및
NOR 플 래시 기술 스토리지 셀들 중 하나 또는 그 초과의 것을 포함하는, EC들.
[0211] EC186) 적어도 하나 의 플래시 메모리를 갖거나 참조하는 임의의 상술한 EC들로서, 적어도 하나의 플래시 메모리의 적어도 일부 는,
단일 레벨 셀(SLC) 플래시 기술 스토리지 셀들, 및
멀티 레벨 셀(MLC) 플래시 기술 스토리지 셀 들 중 하나 또는 그 초과의 것을 포함하는, EC들.
[0212] EC187) 적어도 하나의 플래시 메모리를 갖 거나 참조하는 임의의 상술한 EC들로서, 적어도 하나의 플래시 메모리의 적어도 일부는,
폴리실리콘 기 술 기반 전하 스토리지 셀들, 및
실리콘 질화물 기술 기반 전하 스토리지 셀들 중 하나 또는 그 초과의 것을 포함하는, EC들.
[0213] EC188) 적어도 하나의 플래시 메모리를 갖거나 참조하는 임의의 상술 한 EC들로서, 적어도 하나의 플래시 메모리의 적어도 일부는,
2차원 기술 기반 플래시 메모리 기술, 및
3차원 기술 기반 플래시 메모리 기술 중 하나 또는 그 초과의 것을 포함하는, EC들.
시스템
[0214] 일부 실시예들에서, SSD와 같은 I/O 디바이스들은 SSD 제어기를 포함한다. SSD 제어기는 SSD의 호스트 인터 페이스와 NVM 사이의 브리지로서 작용하고, SSD의 호스트 인터페이스를 통해 컴퓨팅 호스트로부터 전송된 호 스트 프로토콜의 커맨드들을 실행한다. 커맨드들 중 적어도 일부는 SSD에게 컴퓨팅 호스트로부터 및 컴퓨팅 호스트로 각각 전송된 데이터로 NVM을 기록 및 판독하도록 지시한다. 다른 실시예들에서, SSD 제어기는 호 스트 프로토콜의 LBA들과 NVM에서의 물리적 스토리지 어드레스들 사이를 변환(translate)하는데 맵의 사용을 가능하게 한다. 다른 실시예들에서, 맵의 적어도 일부는 I/O 디바이스의 사설 스토리지(컴퓨팅 호스트에는 보이지 않음)를 위해 사용된다. 예를 들어, 컴퓨팅 호스트에 의해 액세스불가능한 LBA들의 일부가 로그들, 통계들, 또는 다른 사설 데이터에 대한 액세스를 관리하기 위해 I/O 다바이스에 의해 사용된다.
[0215] 일부 실시예들에서, NVM에서의 가변 사이즈 양자들(quanta)의 압축된 데이터에 액세스하는 것은 일부 사용 시나리오들에서 개선된 스토리지 효율을 제공한다. 예를 들어, SSD 제어기는 (예를 들어, 디스크 기록 커맨 드에 관하여) 컴퓨팅 호스트로부터 (비압축) 데이터를 수신하고, 데이터를 압축하며, 압축된 데이터를 플래 시 메모리에 저장한다. (예를 들어, 디스크 판독 커맨드에 관한) 컴퓨팅 호스트로부터의 후속 요청에 응답 하여, SSD 제어기는 플래시 메모리로부터의 압축된 데이터를 판독하고, 압축된 데이터를 압축해제하여, 압축 해제된 데이터를 컴퓨팅 호스트에 제공한다. 압축된 데이터는 가변 사이즈 양자들에 따라 플래시 메모리에 저장되고, 양자들 사이즈는 예를 들어, 압축 알고리즘, 동작 모드, 및 다양한 데이터에 대한 압축 유효성으 로 인해 변한다. SSD 제어기는 헤더(들)가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 포함된 맵 테이블을 컨설팅함으로써 부분적으로 데이터를 압축해제한다. SSD 제어기는 적절한 (압축된) 데이터가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 플래시 메모리로부터 획득된 헤더(들)를 분석한다. SSD 제어기는 압축해제된 데이터를 생성하여 컴퓨팅 호스트에 제공하기 위해 플래시 메모리로부터의 적절한 데이터를 압축해제한다. 본 출원에서, 압축해제(uncompress)(및 그것의 변형들)는 비압축(decompress)(및 그것의 변형들)과 동의어이다.
[0216] 다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페 이스하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM와 인터페이스하기 위한 인터페이스, 및 인터페 이스들을 제어하고 압축 및 비압축을 수행(및/또는 그 수행의 다양한 양태들을 제어)하기 위한 회로 뿐만 아 니라 하위 레벨 리던던시 및/또는 에러 정정, 상위 레벨 리던던시 및/또는 에러 정정, 및 독립 실리콘 엘리 먼트들을 갖는 동적 상위 레벨 리던던시 모드 관리를 포함한다.
[0217] 다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페 이스 표준, 썬더볼트(Thunderbolt) 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스 틱 인터페이스 표준, xD-픽처 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인 터페이스 표준, SAS 인터페이스 표준, 및 PCIe 인터페이스 표준 중 하나 또는 그 초과와 호환가능하다. 다 양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN , NAS 디바이스, DAS 디바이스, 스토리지 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바 이스 또는 컴퓨터, 울트라북 컴퓨터, (e-판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸 드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형(all-in-one) 디바이스, POS 디바이스, 캐시-레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 모두 또는 임의의 부 분들이다. 일부 실시예들에서, (SAS/SATA 브리지와 같은) 인터페이싱 호스트는 컴퓨팅 호스트 및/또는 컴퓨 팅 호스트에 대한 브리지로서 동작한다.
[0218] 다양한 실시예들에서, SSD 제어기는 하나 또는 그 초과의 프로세서들을 포함한다. 프로세서들은 SSD 제어기의 동작을 제어 및/또는 수행하기 위해 펌웨어를 실행한다. SSD 제어기는 커맨드들 및/또는 상태 뿐만 아니라 데이터를 전송 및 수신하기 위해 컴퓨팅 호스 트와 통신한다. 컴퓨팅 호스트는 운영 시스템, 드라이버, 및 애플리케이션 중 하나 또는 그 초과의 것을 실 행한다. 컴퓨팅 호스트에 의한 SSD 컴퓨터와의 통신은 옵션으로 및/또는 선택적으로 드라이버 및/또는 애플 리케이션을 통한다. 제 1 예에서, SSD 제어기로의 모든 통신은 드라이버를 통해 이루어지고, 애플리케이션 은 드라이버가 SSD 제어기에 대한 특정한 커맨드로 변환하는 상위 레벨 커맨드들을 드라이버에 제공한다. 제 2 예에서, 드라이버는 바이패스 모드를 구현하고, 애플리케이션은 드라이버를 통해 특정한 커맨드들을 S SD 제어기에 전송하도록 인에이블된다. 제 3 예에서, PCIe SSD 제어기는 하나 또는 그 초과의 가상 함수(V F)들을 지원하고, 이는 구성되면, 애플리케이션이 드라이버를 바이패스하여 SSD 제어기와 직접 통신하게 할 수 있다.
[0219] 다양한 실시예들에 따르면, 일부 SSD들은 HDD들, CD 드라이브들 및 DVD 드라이브들 과 같은 자기 및/또는 광학 비휘발성 스토리지에 의해 이용되는 폼-팩터들, 전기적 인터페이스들 및/또는 프 로토콜들과 호환가능하다. 다양한 실시예들에서, SSD들은 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비(Viterbi) 또는 다른 트 렐리스(trellis) 코드들 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합들을 이용한다.
[0220] 도 1a는 비휘발성 메모리의 영역들에 대한 기록들의 관리 및 영역 선택을 수행하도록 인에이블된 SSD 제어기 를 포함하는 SSD의 실시예의 선택된 상세사항들을 예시한다. SSD 제어기는 예를 들어, NVM 엘리먼트들(예를 들어, 플래시 메모리들)을 통해 구현된, 비휘발성 스토리지를 관리하기 위한 것이다. SSD 제어기(100)는 하 나 또는 그 초과의 외부 인터페이스(110)들을 통해 호스트(미도시)에 통신가능하게 커플링된다. 다양한 실 시예들에 따르면, 외부 인터페이스들(110)은 SATA 인터페이스, SAS 인터페이스, PCIe 인터페이스, 섬유 채널 인터페이스, (10 기가바이트 이더넷과 같은) 이더넷 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 커스텀 인터페이스, 또는 스토리지 및/또는 통신 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 사용된 임 의의 다른 타입의 인터페이스 중 하나 또는 그 초과의 것이다. 예를 들어, 일부 실시예들에서, SSD 제어기 (100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
[0221] SSD 제어기(100)는 플래시 디바이 스(192)의 하나 또는 그 초과의 인스턴스들과 같은 하나 또는 그 초과의 스토리지 디바이스들을 포함하는 N VM(199)에 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해 더 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 비동기 인터페이스, 동기 인터페이스, 단일 데이터 레이 트(SDR) 인터페이스, 더블 데이터 레이트(DDR) 인터페이스, DRAM-호환가능 DDR 또는 DDR2 동기 인터페이스, ONFI 2.2 또는 ONFI 3.0 호환가능 인터페이스와 같은 ONFI 호환가능 인터페이스, 토글 모드 호환가능 플래시 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 커스텀 인터페이스, 또는 스토리지 디바이스들에 접 속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과의 것이다.
[0222] 각 플 래시 디바이스(192)는 일부 실시예들에서, 하나 또는 그 초과의 개별 플래시 다이(194)를 갖는다. 플래시 디바이스(192)의 특정한 하나의 타입에 따르면, 특정한 플래시 디바이스(192)에서의 복수의 플래시 다이(19 4)는 옵션으로 및/또는 선택적으로 병렬로 액세스가능하다. 플래시 디바이스(192)는 SSD 제어기(100)에 통 신가능하게 커플링하도록 인에이블된 스토리지 디바이스의 일 타입을 단지 나타낸다. 다양한 실시예들에서 , SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기 술 기반 전하 스토리지 셀들을 사용하는 플래시 메모리, 2차원 또는 3차원 기술 기반 플래시 메모리, 판독 전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성 메모리, 위상 변화 메모리, 레이 스트랙(racetrack) 메모리, ReRAM, 또는 임의의 다른 타입의 메모리 디바이스 또는 스토리지 매체와 같은 임 의의 타입의 스토리지 디바이스가 사용가능하다.
[0223] 다양한 실시예들에 따르면, 디바이스 인터 페이스들(190)은 버스 당 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들을 갖는 하나 또는 그 초 과의 버스들, 버스 당 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들을 갖는 버스들의 하나 또는 그 초과의 그룹들 - 그룹에서의 버스들은 일반적으로 병렬로 액세스됨 -, 또는 디바이스 인터페이스들(190) 상의 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들의 임의의 다른 구성으로서 구성된다.
[0 224] 도 1a에 계속하여, SSD 제어기(110)는 호스트 인터페이스들(111), 데이터 프로세싱(121), 버퍼(13 1), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 로직(191), 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 예시된 특정한 모듈들 및 상호접속들은 단지 하나의 실시예를 나타내 며, 예시되지 않은 추가의 모듈들 뿐만 아니라 모듈들 중 일부 또는 모두의 다수의 배열들 및 상호접속들이 구상된다. 제 1 예에서, 일부 실시예들에서, 듀얼-포팅(dual-porting)을 제공하기 위해 2개 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 예에서, 일부 실시예들에서, 데이터 프로세싱부(121) 및/또는 ECC(161)는 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예들에서, 호스트 인터페이스들(111)은 버퍼(13 1)에 직접 커플링되고, 데이터 프로세싱부(121)는 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택 적으로 동작한다. 제 4 예에서, 일부 실시예들에서, 디바이스 인터페이스 로직(191)은 버퍼(131)에 직접 커 플링되고, ECC(161)는 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택적으로 동작한다.
[022 5] 호스트 인터페이스들(111)은 외부 인터페이스들(110)을 통해 커맨드들 및/또는 데이터를 송신하고 수 신하고, 일부 실시예들에서는, 태그 트래킹(113)을 통해 개별 커맨드들의 진행을 트래킹한다. 예를 들어, 커맨드들은 판독할 (다수의 LBA 양자들, 예를 들어, 섹터들과 같은) 데이터의 양 및 (LBA와 같은) 어드레스 를 특정하는 판독 커맨드를 포함한다; 이에 응답하여, SSD는 판독 상태 및/또는 판독 데이터를 제공한다. 다른 예에서, 커맨드들은 기록할 (다수의 LBA 양자들, 예를 들어, 섹터들과 같은) 데이터의 양 및 (LBA와 같 은) 어드레스를 특정하는 기록 커맨드를 포함한다; 이에 응답하여, SSD는 기록 상태를 제공하고 그리고/또는 기록 데이터를 요청하며 옵션으로 후속하여 기록 상태를 제공한다. 또 다른 예에서, 커맨드들은 더 이상 할 당될 필요가 없는 (하나 또는 그 초과의 LBA들과 같은) 하나 또는 그 초과의 어드레스들을 특정하는 할당해 제(de-allocation) 커맨드(예를 들어, 트림(trim) 커맨드)를 포함한다; 이에 응답하여, SSD는 그에 맞춰(ac cordingly) 맵을 수정하며 옵션으로 할당-해제 상태를 제공한다. 일부 맥락들에서, ATA 호환가능한 TRIM 커 맨드는 예시적인 할당-해제 커맨드이다. 또 다른 예에서, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데 이터 경화 성공 질문(data hardening success query)을 포함한다; 이에 응답하여, SSD는 적절한 상태를 제공 한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하며, NCQ 커맨드들을 이 용하여, 각각이 0 내지 31의 숫자로 표현된 고유한 태그를 갖는 최대 32개의 계류중인 커맨드들을 갖는 것이 가능해진다. 일부 실시예들에서, 태그 트래킹(113)은 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트래 킹하기 위해 이용된 내부 태그와, 외부 인터페이스들(110)을 통해 수신된 커맨드에 대한 외부 태그를 연관시 키는 것이 가능하다.
[0226] 다양한 실시예들에 따르면, 하나 또는 그 초과의 것은 다음과 같다 : 데이터 프로세싱(121)은 옵션으로 그리고/또는 선택적으로 버퍼(131)와 외부 인터페이스들(110) 사이에 송신 된 일부 또는 모든 데이터를 프로세싱한다; 그리고 데이터 프로세싱(121)은 옵션으로 그리고/또는 선택적으 로, 버퍼(131)에 저장된 데이터를 프로세싱한다. 일부 실시예들에서, 데이터 프로세싱(121)은: 포맷팅; 리 포맷팅; 트랜스코딩; 및 임의의 다른 데이터 프로세싱 및/또는 조작 태스크 중 하나 또는 그 초과의 것을 수 행하기 위해 하나 또는 그 초과의 엔진들(123)을 이용한다.
[0227] 버퍼(131)는 디바이스 인터페이 스들(190)로부터 외부 인터페이스들(110)로, 외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 전송된 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 하나 또는 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들을 관리하기 위해 SSD 제어기(100)에 의해 사용된 맵 테이블들 중 일부 또는 모두와 같 은 시스템 데이터를 추가로 저장한다. 다양한 실시예들에서, 버퍼(131)는 데이터의 임시 스토리지를 위해 사용된 메모리(137), 버퍼(131)로 및/또는 버퍼(131)로부터의 데이터의 이동을 제어하기 위해 사용된 DMA(1 33), 상위 레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 사용된 ECC-X(135), 및 다른 데이터 이 동 및/또는 조작 기능들 중 하나 또는 그 초과의 것을 갖는다. 상위 레벨 리던던시 기능의 일례는, 디스크 레벨 대신 플래시 디바이스(예를 들어, 플래시 디바이스(192)의 다수의 플래시 디바이스들) 레벨 및/또는 플 래시 다이(예를 들어, 플래시 다이(194)) 레벨에서의 리던던시를 갖는, RAID형 능력(예를 들어, RASIE)이다 .
[0228] 다양한 실시예들에 따르면, 하나 또는 그 초과의 것은 다음과 같다: ECC(161)는 옵션으로 그리고/또는 선택적으로, 버퍼(131)와 디바이스 인터페이스들(190) 사이에 송신된 일부 또는 모든 데이터를 프로세싱하며; 그리고 ECC(161)는 옵션으로 그리고/또는 선택적으로, 버퍼(131)에 저장된 데이터를 프로세싱 한다. 일부 실시예들에서, ECC(161)는, 예컨대 하나 또는 그 초과의 ECC 기술들에 따라, 하위-레벨 에러 정 정 및/또는 리던던시 기능들을 제공하기 위해 이용된다. 일부 실시예들에서, ECC(161)는: CRC 코드; 해밍 코드; RS 코드; BCH 코드; LDPC 코드; 비터비 코드; 트렐리스 코드; 하드-결정(hard-decision) 코드; 소프트 -결정(soft-decision) 코드; 소거-기반 코드; 임의의 에러 검출 및/또는 정정 코드; 및 전술한 것의 임의의 조합 중 하나 또는 그 초과의 것을 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
[0229] 디바이스 인터페이스 로직(191)은 디바이스 인터페이 스들(190)을 통해 플래시 디바이스(192)의 인스턴스들(instances)을 제어한다. 디바이스 인터페이스 로직( 191)은 플래시 디바이스(192)의 프로토콜에 따라 플래시 디바이스(192)의 인스턴스들에/인스턴스들로부터 데 이터를 송신하는 것이 가능해진다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위한 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉하고, 그리고 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들의 각각의 것들이 이용가능함에 따라 플 래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들의 각각의 것들에 동작들을 선택적으로 송신하는 것이 가능해진다.
[0230] 맵(141)은, NVM(199)에서의 위치들로 외부 데이터 어드레스들을 매핑하기 위해 테이블(143)을 이용하여, 디바이스 인터페이스들(190) 상에 이용된 데이터 어드레싱과 외부 인터페이스 들(110) 상에 이용된 데이터 어드레싱 사이에서 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 외부 인터페이스들(110) 상에 이용된 LBA들을 테이블(143)에 의해 제공된 매핑을 통해, 하나 또는 그 초과의 플래 시 다이(194)를 목표로 하는 블록 및/또는 페이지 어드레스들로 변환한다. 드라이브 제조 또는 할당해제 이 후로는 전혀 기록되지 않은 LBA들에 대해, 맵은 LBA들이 판독되는 경우에 리턴하기 위한 디폴트 값을 지시한 다(point to). 예를 들어, 할당 해제 커맨드를 프로세싱할 때, 할당 해제된 LBA들에 대응하는 엔트리들(en tries)이 디폴트 값들 중 하나를 지시하도록 맵이 수정된다. 다양한 실시예들에서, 다양한 디폴트 값들이 존재하며, 이 각각은 대응하는 포인터를 갖는다. 복수의 디폴트 값들은 하나의 디폴트 값으로서 (예컨대 제 1 범위에서) 일부 할당해제된 LBA들을 판독하는 것을 가능하게 하는 한편, 다른 디폴트 값으로서 (예컨대 제 2 범위에서) 다른 할당해제된 LBA들을 판독하는 것을 가능하게 한다. 다양한 실시예들에서, 디폴트 값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시 인수들(primitive arguments) 및/또는 파라미터들, 프로그램가능한 레지스터들 또는 이들의 다양한 조합들에 의해 정의된다.
[0231] 일부 실시예들에서 , 맵(141)은 외부 인터페이스들(110)상에서 사용된 어드레스들과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 변환을 수행하고/하거나 룩업하기 위해 테이블(143)을 사용한다. 다양한 실시예 들에 따르면, 테이블(143)은 1-레벨 맵, 2-레벨 맵, 멀티-레벨 맵, 맵 캐시, 압축된 맵, 일 어드레스 공간으 로부터 다른 어드레스 공간으로의 임의의 타입의 매핑, 및 이들의 임의의 조합 중 하나 또는 그 초과의 것이 다. 다양한 실시예들에 따르면, 테이블(143)은 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, (플래 시 메모리와 같은) NVM, 캐시 메모리, 온-칩 메모리, 오프-칩 메모리, 및 이들의 임의의 조합 중 하나 또는 그 초과의 것을 포함한다.
[0232] 일부 실시예들에서, 리사이클러(151)는 가비지(garbage) 수집을 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재기록가능하기 이전에 소거되어야 하는 블록을 포함한다. 리사이클러(151)는 예를 들어, 맵(141)에 의해 유지된 맵을 스캔 함으로써 플래시 디바이스(192)의 인스턴스들 중 어느 부분들이 액티브하게 사용중인지 (예를 들어, 할당해 제 대신에 할당되는지)를 결정하고, 그리고 비사용 부분들을 소거함으로써 플래시 디바이스(192)의 인스턴스 들의 비사용(예를 들어, 할당해제되는) 부분들을 기록을 위해 이용가능하게 하는 것이 가능하다. 추가적인 실시예들에서, 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들 내에 저장된 데이터를 이동시켜, 플래 시 디바이스(192)의 인스턴스들의 더 큰 인접한 부분들이 기록을 위해 이용가능하게 하는 것이 가능하다.
[0233] 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 상이한 타입들 및/또는 특성들의 데이 터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖도록 선택적으로 및/또는 동적으로 구성되고, 관리되고 /되거나 사용된다. 대역들의 수, 배열, 사이즈, 및 타입은 동적으로 변경가능하다. 예를 들어, 컴퓨팅 호 스트로부터의 데이터는 핫(hot)(액티브한) 대역에 기록되지만, 리사이클러(151)로부터의 데이터는 콜드(col d)(덜 액티브한) 대역에 기록된다. 일부 사용 시나리오들에서, 컴퓨팅 호스트가 긴 순차적 스트림을 기록하 면, 핫 대역의 사이즈가 증가하는 반면에, 컴퓨팅 호스트가 랜덤하게 기록하거나 거의 기록하지 않으면, 콜 드 대역의 사이즈가 증가한다.
[0234] CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. 다양한 실시예들에 따라, CPU 코어(172)는 하나 또는 그 초과의 단 일-코어 또는 멀티-코어 프로세서들이다. 일부 실시예들에서, CPU 코어(172)에서의 개별 프로세서 코어들은 멀티-쓰레드된다(multi-threaded). CPU 코어(172)는 명령어 및/또는 데이터 캐시들 및/또는 메모리들을 포 함한다. 예를 들어, 명령 메모리는 CPU 코어(172)로 하여금 SSD 제어기(100)를 제어하기 위해 프로그램(예 를 들어, 때때로 펌웨어로 칭하는 소프트웨어)을 실행할 수 있게 하기 위한 명령들을 포함한다. 일부 실시 예들에서, CPU 코어(172)에 의해 실행된 펌웨어 중 일부 또는 모두는 (예를 들어, 도 1b에서 NVM(199)의 펌 웨어(106)로서 예시된 바와 같이) 플래시 디바이스(192)의 인스턴스들상에 저장된다.
[0235] 다양한 실시예들에서, CPU(171)는: 커맨드들이 진행중인 동안 외부 인터페이스들(110)을 통해 수신된 커맨드들을 트 래킹하고 제어하기 위한 커맨드 관리(173); 버퍼(131)의 할당 및 이용을 제어하기 위한 버퍼 관리(175); 맵 (141)을 제어하기 위한 변환 관리(177); 데이터 어드레싱의 일치성을 제어하고, 예컨대 외부 데이터 액세스 들과 리사이클 데이터 액세스들 사이의 충돌들을 회피하기 위한 코히어런시 관리(179); 디바이스 인터페이스 로직(191)을 제어하기 위한 디바이스 관리(181); 식별 정보의 수정 및 통신을 제어하기 위한 아이덴티티 관 리(182), 및 옵션으로 다른 관리 유닛들을 더 포함한다. 다양한 실시예들에 따르면, CPU(171)에 의해 수행 된 관리 기능들 중 그 어느 것도 하드웨어에 의해, (외부 인터페이스들(110)을 통해 접속된 호스트 상에 또 는 CPU 코어(172) 상에 실행하는 펌웨어와 같은) 소프트웨어에 의해, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리되지 않거나; 또는 CPU(171)에 의해 수행된 관리 기능들 중 임의의 것 또는 그 전부가, 하드웨 어에 의해, (외부 인터페이스들(110)을 통해 접속된 호스트 상에 또는 CPU 코어(172) 상에 실행하는 펌웨어 와 같은) 소프트웨어에 의해, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리된다.
[0236] 일부 실시예들에서, CPU(171)는 다른 관리 태스크들, 예컨대, 성능 통계들을 수집하고 그리고/또는 보고하는 것; SMART를 구현하는 것; 전력 시퀀싱을 제어하는 것, 전력 소모를 제어하는 것 및/또는 모니터링하는 것 및/또 는 조정하는 것; 전력 실패들에 응답하는 것; 클록 레이트들을 제어하는 것 및/또는 모니터링하는 것 및/또 는 조정하는 것; 및 다른 관리 태스크들 중 하나 또는 그 초과의 것을 수행하는 것이 가능하다.
[0237] 다양한 실시예들은 SSD 제어기(100)와 유사하고 예를 들어, 호스트 인터페이스들(111) 및/또는 외부 인터페 이스들(110)의 적응을 통해 다양한 컴퓨팅 호스트들과의 동작과 호환가능한 컴퓨팅 호스트 플래시 메모리 제 어기를 포함한다. 다양한 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, N AS 디바이스, DAS 디바이스, 스토리지 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이 스 또는 컴퓨터, 울트라북 컴퓨터, (e-판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드 헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DV R, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합을 포함한 다.
[0238] 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또 는 임의의 부분들은 단일 IC, 멀티-다이 IC의 단일 다이, 멀티-다이 IC의 복수의 다이들, 또는 복수의 IC들 상에 구현된다. 예를 들어, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들과 동일한 다이상에 구현된다. 다른 예에 있어서, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들과는 서로 다른 다이상에 구현된다.
[0239] 도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들 의 선택된 상세사항들을 예시한다. SSD(101)는 디바이스 인터페이스들(190)을 통해 NVM(199)에 커플링된 S SD 제어기(100)를 포함한다. 도면은 다양한 클래스들의 실시예들: 호스트에 직접 커플링된 단일 SSD, 각각 의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링되는 복수의 SSD들, 및 다양한 상호접속 엘리 먼트들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들을 예시한다.
[0240] 호스 트에 직접적으로 커플링된 단일 SSD의 예시적인 실시예로서, SSD(101)의 하나의 인스턴스는 외부 인터페이스 들(110)을 통해 호스트(102)에 직접적으로 커플링된다(예를 들어, 스위치/패브릭/중간 제어기(103)가 생략되 고, 바이패스되거나, 통과된다). 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링된 복 수의 SSD들의 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들 각각은 외부 인터페이스들(110)의 각각의 인스턴스를 통해 호스트(102)에 직접적으로 각각 커플링된다(예를 들어, 스위치/패브릭/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 다양한 상호접속 엘리먼트들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들 각각은 호 스트(102)에 간접적으로 각각 커플링된다. 각각의 간접 커플링은 스위치/패브릭/중간 제어기(103)에 커플링 된 외부 인터페이스들(110)의 각각의 인스턴스, 및 호스트(102)에 커플링하는 중간 인터페이스들(104)을 통 한다.
[0241] 스위치/패브릭/중간 제어기(103)를 포함하는 실시예들 중 일부는 메모리 인터페이스( 180)를 통해 커플링되고 SSD들에 의해 액세스가능한 카드 메모리(112C)를 또한 포함한다. 다양한 실시예들 에서, SSD들, 스위치/패브릭/중간 제어기, 및/또는 카드 메모리 중 하나 또는 그 초과의 것은 물리적으로 식 별가능한 모듈, 카드, 또는 플러그가능한 엘리먼트(예를 들어, I/O 카드(116))상에 포함된다. 일부 실시예 들에서, SSD(101)(또는 그것의 변형들)는 호스트(102)로서 동작하는 개시자(initiator)에 커플링되는 SAS 드 라이브 또는 SATA 드라이브에 대응한다.
[0242] 호스트(102)는 OS(105), 드라이버(107), 애플리케이 션(109), 및 멀티-디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은 호스트 소프트웨어(115)의 다양한 엘리먼트들을 실행하도록 인에이블된다. 점선 화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신, 예를 들어, 드라이버(107), 드라이버(107), 및 애플리케이션(109)을 통해, 드라이버(107)를 통하거나 VF로서 직접적으로, SSD(101)의 인스턴스들 중 하나 또는 그 초과의 것으로/로부터 전송/수신되고, OS(105)의 임의 의 하나 또는 그 초과의 것으로부터/로 수신/전송된 데이터를 나타낸다.
[0243] OS(105)는 SSD와의 인터페이싱을 위해 (드라이버(107)에 의해 개념적으로 예시된) 드라이버들을 포함하고 그리고/하거나 그 드 라이버들과 동작하도록 인에이블된다. 다양한 버전들의 윈도우즈(예를 들어, 95, 98, ME, NT, XP, 2000, 서 버, 비스타, 및 7), 다양한 버전들의 리눅스(예를 들어, Red Hat, Debian, 및 Ubuntu), 및 다양한 버전들의 MacOS(예를 들어, 8, 9 및 X)가 OS(105)의 예들이다. 다양한 실시예들에서, 드라이버들은 표준 인터페이스 및/또는 SATA, AHCI, 또는 NVM 익스프레스와 같은 프로토콜과 동작가능한 표준 및/또는 일반 드라이버들(때 때로, "수축 포장(shrink-wrapped)" 또는 "사전 설치(pre-installed)"로 칭함)이거나, 옵션으로는 SSD(101) 에 특정한 커맨드들의 사용을 가능하게 하도록 커스터마이징되고/되거나 판매자 특정된다. 일부 드라이브들 및/또는 드라이버들은 애플리케이션(109)과 같은 애플리케이션 레벨 프로그램들이 최적화된 NAND 액세스(때 때로 ONA로 칭함) 또는 직접 NAND 액세스(때때로, DNA로 칭함) 기법들을 통해 SSD(101)에 직접적으로 커맨드 들을 통신할 수 있게 하기 위한 통과(pass-through) 모드들을 갖고, 이것은 커스터마이징된 애플리케이션이 일반 드라이버를 갖더라도 SSD(101)에 특정된 커맨드들을 사용할 수 있게 한다. ONA 기법들은 비표준 수정 자들(힌트들)의 사용, 판매자 특정 커맨드들의 사용, 압축성(compressibility)에 따른 실제 NVM 사용과 같은 비표준 통계의 통신, 및 다른 기법들 중 하나 또는 그 초과의 것을 포함한다. DNA 기법들은 NVM에 매핑되지 않은 판독, 기록, 및/또는 소거 액세스를 제공하는 비표준 커맨드들 또는 판매자 특정 커맨드들의 사용, 예 를 들어, I/O 디바이스가 그렇지 않으면 행할 데이터의 포맷팅을 바이패스함으로써 NVM에 더욱 직접적인 액 세스를 제공하는 비표준 또는 판매자 특정 커맨드들의 사용, 및 다른 기법들 중 하나 또는 그 초과의 것을 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA-인에이블된 드라이버, DNA-인에이블 된 드라이버, 및 ONA/DNA-인에이블된 드라이버이다. 드라이버의 추가의 예들은 판매자-제공, 판매자-개발, 및/또는 판매자-강화 드라이버, 및 클라이언트-제공, 클라이언트-개발, 및/또는 클라이언트-강화 드라이버이 다.
[0244] 애플리케이션-레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA- 인에이블된 애플리케이션, DNA-인에이블된 애플리케이션, 및 ONA/DNA-인에이블된 애플리케이션이다. 점선 화살표(109D)는 애플리케이션←→ I/O 디바이스 통신(예를 들어, 드라이버를 통한 바이패스 또는 애플리케이 션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS를 사용하는 애플리케이션없이 SSD와 통신하는 O NA-인에이블된 애플리케이션 및 ONA-인에이블된 드라이버를 나타낸다. 점선 화살표(109V)는 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS 또는 드라이버를 사용하는 애플리케이션없이 SSD와 통신하는 DNA-인에이블된 애플리케이션 및 DNA-인에이블 된 드라이버를 나타낸다.
[0245] 일부 실시예들에서, NVM(199)의 하나 또는 그 초과의 부분들은 펌 웨어 스토리지, 예를 들어, 펌웨어(106)에 대해 사용된다. 펌웨어 스토리지는 하나 또는 그 초과의 펌웨어 이미지들(또는 그것의 부분들)을 포함한다. 예를 들어, 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CP U 코어(172)에 의해 실행되는 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 다른 예에 있어서, 펌웨어 이미지는 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는 상수들, 파라미터 값들, 및 NVM 디바이스 정보의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 (펌웨어 업데이트들에 관한) 제로 또는 그 초과의 이전의 펌웨어 이미지들에 대응한다. 다양한 실시예들에 서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드 들 중 하나 또는 그 초과는 드라이버에 의해 옵션으로 통신되고/되거나 제공되는 키들 또는 다양한 소프트웨 어 기법들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "언락(unlock)"된다).
[0246] 스위치/패브릭/중간 제어기들이 부족한 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접적으 로 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은 다른 제어기들의 하 나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그것의 변 형들)는 SAS 드라이브 또는 SATA 드라이브에 대응하고, 스위치/패브릭/중간 제어기(103)는 개시자에 차례로 커플링되는 확장자에 대응하거나, 대안적으로, 스위치/패브릭/중간 제어기(103)는 확장자를 통해 개시자에 간접적으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/패브릭/중간 제어기(103)는 하나 또 는 그 초과의 PCIe 스위치들 및/또는 구조들을 포함한다.
[0247] 컴퓨팅 호스트(예를 들어, 컴퓨터 , 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DAS 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)로서 호스트(102)를 갖는 실시예들 중 일부와 같은 다양한 실 시예들에서, 컴퓨팅 호스트는 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 옵션의 서버들(11 8))과 (예를 들어, 옵션의 I/O & 저장 디바이스들/리소스들(117) 및 옵션의 LAN/WAN(119)을 통해) 통신하도 록 옵션으로 인에이블된다. 예를 들어, 통신은 SSD(101) 엘리먼트들 중 임의의 하나 또는 그 초과의 로컬 및/또는 원격 액세스, 관리, 및/또는 사용을 인에이블한다. 일부 실시예들에서, 통신은 전체적으로 또는 부 분적으로 이더넷을 통한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 섬유 채널을 통한다. 다양한 실시예들에서, LAN/WAN(119)은 서버 팜에서의 네트워크, 서버 팜들을 커플링하는 네트워크, 메트로- 영역 네트워크, 및 인터넷 중 임의의 하나 또는 그 초과의 것과 같은 하나 또는 그 초과의 로컬 및/또는 광 역 네트워크들을 나타낸다.
[0248] 다양한 실시예들에서, 하나 또는 그 초과의 NVM들과 결합하여 S SD 제어기 및/또는 컴퓨팅-호스트 플래시 메모리 제어기는 USB 스토리지 컴포넌트, CF 스토리지 컴포넌트, MMC 스토리지 컴포넌트, eMMC 스토리지 컴포넌트, 썬더볼트 스토리지 컴포넌트, UFS 스토리지 컴포넌트, SD 스토리지 컴포넌트, 메모리 스틱 스토리지 컴포넌트, 및 xD-픽처 카드 스토리지 컴포넌트와 같은 비휘발성 스토리지 컴포넌트로서 구현된다.
[0249] 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플 래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 제어기가 커플링될 호스트(예를 들 어, 도 1b의 호스트(102))에서 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메 모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 하드웨어(예를 들어, 로직 회로), 소프트 웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 및/또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합 을 통해 구현된다. 예를 들어, (도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사한) ECC 유닛의 기능 또는 그 와 연관된 기능은, 부분적으로는 호스트상의 소프트웨어를 통해 그리고 부분적으로는 SSD 제어기에서의 펌웨 어와 하드웨어의 조합을 통해 구현된다. 다른 예에 있어서, (예를 들어, 도 1a의 리사이클러(151)와 유사한 ) 리사이클러 유닛의 기능 또는 그와 연관된 기능은, 부분적으로는 호스트상의 소프트웨어를 통해 그리고 부 분적으로는 컴퓨팅-호스트 플래시 메모리 제어기에서의 하드웨어를 통해 구현된다.
매핑 동작
[025 0] 도 2는 LBA의 LPN 부분을 매핑하는 실시예의 선택된 상세사항들을 예시한다. 일부 실시예들에서, 판 독 유닛은 NVM의 페이지의 부분과 같이, 독립적으로 판독가능한 NVM의 가장 미세한 입도(finest granularit y)이다. 추가의 실시예들에서, 판독 유닛은 체크 비트들에 의해 보호된 모든 데이터에 따라 (하위 레벨) 에 러 정정 코드의 체크 비트들(때때로, 리던던시라 칭함)에 대응한다. 예를 들어, 도 1a의 ECC(161)는 LDPC 코드를 통하는 것과 같이 체크 비트들을 통해 에러 정정을 구현하고, 판독 유닛은 LDPC 코딩 비트들에 의해 보호된 데이터에 부가하여 LDPC 코드를 구현하는 코딩 비트들에 대응한다.
[0251] 일부 실시예들에 서, 맵(141)은 (도 1a에 예시된 바와 같이) 테이블(143)을 통해서와 같이, LPN에 대한 맵 정보(221)에 LBA( 211)의 LPN(213) 부분을 매핑한다. (LPN에 대한 맵 정보(221)와 같은) LPN에 대한 맵 정보는 때때로 맵 엔 트리로 칭한다. 맵(141)은 LPN을 대응하는 맵 엔트리와 연관시킨다 할 수 있다. 다양한 실시예들에서, 매 핑은 하나 또는 그 초과의 연관 룩업들, 하나 또는 그 초과의 비연관 룩업들, 및/또는 하나 또는 그 초과의 다른 기법들을 통한다.
[0252] 일부 실시예들에서, SSD 제어기(100)는 사용중에 잠재적으로 및/또는 액티브하게 각 LPN에 대한 하나의 맵 엔트리를 유지한다.
[0253] 일부 실시예들에서, LPN에 대한 맵 정보(221)는 각각의 판독 유닛 어드레스(223) 및 판독 유닛들에서의 길이(225)를 포함한다. 일부 실시예들 에서, 길이 및/또는 스팬은 예를 들어, 판독 유닛들에서의 길이(225) 중 모두 또는 임의의 부분들에 스팬으 로부터의 오프셋으로서 길이를 저장함으로써 저장되어 인코딩된다. 추가의 실시예들에서, 제 1 LPN은 제 1 맵 엔트리와 연관되고, 제 2 LPN(제 1 LPN과 상이하지만 제 1 LPN에 의해 참조되는 논리 페이지와 동일한 사 이즈의 논리 페이지를 참조함)은 제 2 맵 엔트리와 연관되며, 제 1 맵 엔트리의 판독 유닛들에서의 각각의 길이는 제 2 맵 엔트리의 판독 유닛들에서의 각각의 길이와 상이하다.
[0254] 다양한 실시예들에서 , 동일한 시점에, 제 1 LPN은 제 1 맵 엔트리와 연관되고, (제 1 LPN과는 상이한) 제 2 LPN은 제 2 맵 엔트 리와 연관되며, 제 1 맵 엔트리의 각각의 판독 유닛 어드레스는 제 2 맵 엔트리의 각각의 판독 유닛 어드레 스와 동일하다. 추가의 실시예들에서, 제 1 LPN과 연관된 데이터 및 제 2 LPN과 연관된 데이터 양자는 NVM (199)에서의 동일한 디바이스의 동일한 물리적 페이지에 저장된다.
[0255] 다양한 실시예들에 따르 면, 판독 유닛 어드레스(223)는 NVM에서의 시작 어드레스, NVM에서의 종료 어드레스, 이들의 임의의 오프셋 , 및 LPN(213)과 연관된 NVM의 부분을 식별하는 임의의 다른 기법들 중 하나 또는 그 초과의 것과 연관된다 .
[0256] 도 3은 판독 유닛들의 양자들에서 측정된 길이를 집합적으로 갖는 다양한 판독 유닛들로서 구성된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 NVM에 액세스하는 실시예의 선택된 상세사항들 을 예시한다. 다양한 실시예들에 따르면, 제 1 판독 유닛(313)은 NVM의 어드레스 공간에서 최저의 어드레스 를 갖는 판독 데이터(311)에서의 판독 유닛들 중 하나; 판독 유닛들 중 고정된 판독 유닛; 판독 유닛들 중 임의의 판독 유닛; 판독 유닛들 중 가변 판독 유닛; 및 임의의 다른 기법에 의해 선택된 판독 유닛들 중 하 나의 판독 유닛 중 하나 또는 그 초과의 것이다. 다양한 실시예들에서, SSD 제어기(100)는 판독 유닛들에서 의 길이(225)에 의해 특정된 판독 유닛들의 수 보다 많지 않게 판독함으로써 NVM(199)에 액세스하고 판독 데 이터(311)를 생성하도록 인에이블된다.
[0257] 도 4a는 판독 유닛(401A)으로서 (도 3의 판독 유닛들 (313 또는 315)과 같은) 판독 유닛의 실시예의 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 사 용 시나리오들에서, 헤더 1(411A) 내지 헤더 N(419A)은 인접하고, 헤더들 각각에 의해 (각각의 오프셋들을 통한 것과 같이) 식별된 각각의 데이터 영역들은 헤더들 중 최종 헤더에 후속하여 인접한다. 데이터 영역들 은 데이터 바이트들(421A)을 집합적으로 형성한다. 데이터 영역들은 헤더들이 저장되는 위치 순서에 매칭하 는 위치 순서로 저장된다. 예를 들어, 판독 유닛의 시작에서 제 1 헤더를 고려하면, 제 2 헤더 및 제 3 헤 더는 제 1 헤더에 인접하게 후속한다. (제 1 헤더에서의 제 1 오프셋에 의해 식별된) 제 1 데이터 영역은 제 3 헤더에 인접하게 후속한다. (제 2 헤더에서의 제 2 오프셋에 의해 식별된) 제 2 데이터 영역은 제 1 데이터 영역에 인접하게 후속한다. 유사하게는, (제 3 헤더에 의해 식별된) 제 3 데이터 영역은 제 2 데이 터 영역에 인접하게 후속한다.
[0258] 도 4b는 판독 유닛(401B)으로서 (도 3의 판독 유닛들(313 또 는 315)과 같은) 판독 유닛의 다른 실시예의 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 헤더 마커(HM)(410B)는 다수의 후속하는 인접 헤더들(헤더 1(411B), 헤더 2(412B) ... 헤더 N(419B))를 나타내는 (1-바이트 필드와 같은) 옵션의 초기 필드이다. 데이터 영역들(데이터 바이트들(421B ), 데이터 바이트들(422B) ... 데이터 바이트들(429B))은 헤더들(헤더 1(411B), 헤더 2(412B) ... 헤더 N(4 19B))에 의해 각각 식별되고, 헤더들이 저장되는 위치 순서와 반대인 위치 순서로 저장된다. 헤더들은 판독 유닛의 시작에서 시작하고, 대응하는 데이터 영역들이 판독 유닛의 종료에서 시작한다. 일부 실시예들에서 , 데이터 영역내의 데이터 바이트들(예를 들어, 데이터 바이트들(421B), 데이터 바이트들(422B) ... 데이터 바이트들(429B))은 순방향 순서(위치 순서에 매칭하는 바이트 순서)로 배열되고, 다른 실시예들에서, 데이터 바이트들은 역방향 순서(위치 순서에 관하여 반전된 바이트 순서)로 배열된다. 일부 실시예들에서, 헤더 마 커가 판독 유닛들에서 사용되고, 여기서, 헤더들 및 데이터 바이트들이 (예를 들어, 도 4a에 예시되어 있는 바와 같은) 동일한 위치 순서로 저장된다.
[0259] 일부 실시예들에서, 옵션의 패딩 바이트들(431A) (또는 431B)은 특정한 LPN과 연관된 데이터의 입도에 따른다. 예를 들어, 일부 실시예들에서, 데이터 바이 트들(421A)(또는 집합적으로, 데이터 바이트들(421B), 데이터 바이트들(422B) ... 데이터 바이트들(429B))이 헤더 1(411A) 내지 헤더 N(419A)(또는 헤더 1(411B), 헤더 2(412B) ... 헤더 N(419B)) 중 최종 헤더 이외의 모두와 연관된 데이터를 저장한 이후에, 8 바이트와 같이 고정된 양 보다 적은 나머지 공간을 가지면, 최종 헤더와 연관된 LPN에 대한 데이터는 후속 판독 유닛에서 시작한다. 추가의 실시예들에서, 최종 헤더에서의 특정한 오프셋 값들(예를 들어, 모두 1)은 최종 헤더와 연관된 LPN에 대한 데이터가 후속 판독 유닛에서 시 작한다는 것을 나타낸다.
[0260] 도 5는 다수의 필드들을 갖는 (도 4a의 임의의 헤더 1(411A) 내지 헤더 N(419A) 또는 도 4b의 헤더 1(411B) 내지 헤더(419B)와 같은) 헤더의 실시예의 선택된 상세사항들을 예 시한다. 일부 실시예들에서, 헤더들은 고정 길이이다(예를 들어, 각 헤더는 동일한 수의 바이트 길이이다) . 헤더(501)는 필드 타입(511), 최종 표시자(513), 플래그들(515), LPN(517), 길이(519), 및 오프셋(521)을 포함한다. 타입 필드는 데이터 바이트들의 카테고리를 식별한다. 예를 들어, 타입 필드는 데이터 바이트들 의 카테고리가 호스트 데이터(예를 들어, 논리 페이지 데이터) 또는 시스템 데이터(예를 들어, 맵 정보 또는 체크포인트 정보) 중 하나이라는 것을 나타낸다. 최종 필드는 헤더가 데이터 바이트들 이전의 최종 헤더라 는 것을 나타낸다. 헤더 마커를 갖는 일부 실시예들에서, 최종 필드는 옵션으로 생략된다. LPN 필드는 헤 더가 연관되는 LPN이다. LPN 필드는 예를 들어, 특정한 LPN에 매칭하는 LPN 필드를 갖는 하나에 대한 헤더 들을 탐색함으로써, 헤더들의 분석이 특정한 LPN과 연관되는 헤더들 중 특정한 하나를 결정할 수 있게 한다 . 길이 필드는 데이터 바이트들의 바이트 단위의 길이이다(예를 들어, 헤더(501)와 연관된 데이터 바이트들 (421A)에 얼마나 많은 데이터의 바이트들이 존재하는지이다). 일부 실시예에서, 오프셋 필드에서의 오프셋 은 특정한 입도(예를 들어, 8 바이트 입도)에 따라 반올림(round)된다.
[0261] 다양한 실시예들에서 , 특정한 LPN과 연관된 일부 또는 모든 정보는 특정한 LPN과 연관된 맵 엔트리, 특정한 LPN과 연관된 헤더, 또는 이들 양자에 저장된다. 예를 들어, 일부 실시예들에서, 길이(519)의 일부 또는 모두는 헤더 보다는 맵 엔트리에 저장된다.
[0262] 도 6은 논리 슬라이스들 및/또는 섹션들에서 관리되는 다중의 NVM 디바 이스들(예를 들어, 하나 또는 그 초과의 플래시 다이 및/또는 플래시 칩들)의 블록들, 페이지들, 및 판독 유 닛들의 실시예의 선택된 상세사항들을 예시한다. 관리 기능들은 판독, 리사이클링, 소거, 프로그래밍/기록 , 및 다른 관리 기능들 중 어느 하나 또는 그 초과의 것을 포함한다. 논리 슬라이스들 및/또는 섹션들을 때 때로 R-블록들로 칭한다. 도면은 66개의 플래시 다이를 갖는 실시예를 예시한다. 플래시 다이 중 3개(플래 시 다이(610.65, 610.1, 및 610.0))가 명시적으로 예시되고, 플래시 다이 중 63개(610.64 ... 610.2)가 암시 적으로 예시된다.
[0263] (플래시 다이(610.65 ... 610.1, 및 610.1 중 어느 하나와 같은) 플래시 다이 각각은, (플래시 다이(610.65)의 블록들(610.65BB .. 610.65B1, 및 610.65B0); 플래시 다이(610.0)의 블록들(610.0BB ... 610.B1, 및 610.0B0) 등과 같은) 블록들로서 구성된 스토리지를 제공한다. 차례로, 블 록들은 (블록(610.65B0)의 페이지들(610.65PP ... 610.65P1, 및 610.65P0); 블록(610.0B0)의 페이지들(610. 0PP ... 610.0P1, 및 610.0P0) 등과 같은) 페이지들을 포함한다. 차례로, 페이지들은 (페이지(610.65P0)의 판독 유닛들(610.65RR ... 61065R1, 및 610.65R0); 페이지(610.0P0)의 판독 유닛들(610.0RR ... 610.0R1, 및 610.0R0) 등과 같은) 판독 유닛들을 포함한다.
[0264] 일부 실시예들에서, 각 플래시 다이는 정수의 블록들(예를 들어, N개의 블록들)을 포함하고 블록은 소거의 가장 작은 양자이다. 일부 실시예들에서, 각 블록은 정수의 페이지들을 포함하고 페이지는 기록의 가장 작은 양자이다. 다양한 실시예들에 따르면, 판독 유닛 중 하나 또는 그 초과는 판독 및 에러 정정의 가장 작은 양자이고, 각 페이지는 정수의 판독 유닛들을 포함하고, 2개 또는 그 초과의 페이지들의 연관된 그룹은 정수의 판독 유닛들을 포함하며, 판독 유닛들은 옵 션으로 및/또는 선택적으로 페이지 경계들을 스팬한다.
[0265] 다양한 실시예들에서, 다양한 NVM 관 리 기능들(예를 들어, 판독, 리사이클링, 소거, 및/또는 프로그래밍/기록)이 R-블록들의 유닛들에서 수행된 다. R-블록은 예를 들어, 플래시 메모리의 다양한 다이(예를 들어, 모든 다이, 전체적으로 또는 부분적으로 고장난 것들을 제외한 모든 다이, 및/또는 다이의 하나 또는 그 초과의 선택된 서브세트들)에 걸쳐 논리적 슬라이스 또는 섹션으로서 예시된다. 예를 들어, 각 플래시 다이가 N개의 블록들을 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N개의 블록들에 대해 함께 취해진 플래시 다이 각각으로부터의 i번 째 블록이다. 다른 예에 있어서, N개의 블록들을 각각 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N/2개 R-블록들에 대해 플래시 다이 각각으로부터의 i번째 및 (i+1)번째 블록이다. 또 다른 예 에 있어서, 복수의 듀얼 평면 디바이스들을 갖는 플래시 메모리에서, 각 R-블록은 듀얼 평면 디바이스들 각 각으로부터의 i번째 짝수 블록 및 i번째 홀수 블록이다. 최종 예에 있어서, N개의 블록들을 각각 갖는 R 플 래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N/k개 R-블록들에 대해 플래시 다이 각각으로부터의 i번째 내지 (i+1)번째 블록이다.
[0266] 블록들이 R-블록을 형성하는 일부로서 쌍으로 또는 다른 연 관된 그룹들로 취급되는 다양한 실시예들에서, 블록들의 연관된 그룹의 각 블록으로부터의 각각의 페이지들 은 더 큰 멀티-블록 페이지를 적어도 기록하고 형성하는 유닛으로서 또한 취급된다. 예를 들어, 상술한 듀 얼 평면 예에 계속하여, 짝수 블록들 중 특정한 하나의 제 1 페이지 및 홀수 블록들 중 연관된 하나의 제 1 페이지가 기록을 위한 유닛으로서 취급되고, 옵션으로 및/또는 선택적으로 판독을 위한 유닛으로서 취급된다 . 유사하게는, 특정한 짝수 블록의 제 2 페이지 및 연관된 홀수 블록의 제 2 페이지가 유닛으로서 취급된다 . 다양한 실시예들에 따르면, 본원에 사용되는 바와 같은 NVM의 페이지는, NVM의 단일 페이지, NVM의 멀티 -블록 페이지, 판독을 위한 하나 또는 그 초과의 개별 페이지들로서 옵션으로 및/또는 선택적으로 취급되는 기록을 위한 NVM의 멀티-블록 페이지, 및 NVM의 페이지들의 임의의 다른 그룹화 또는 연관 중 하나 또는 그 초과의 것을 지칭한다.
[0267] 도면은 복수의 예시적인 R-블록들, 이들 중 명시적으로 3개(660.0, 660.1, 및 660.R)를 예시한다. 각 예시적인 R-블록은 함께 취해진 플래시 다이 각각으로부터의 i번째 블록 이다. 예를 들어, R-블록(660.0)은 플래시 다이(610.65)로부터의 블록(610.65B0), (명시적으로 예시되지 않 은) 플래시 다이(610.64)로부터의 블록(0) 등 내지 플래시 다이(610.1)의 블록(610.1B0), 및 플래시 다이(6 10.0)의 블록(610.0B0)이다. 플래시 다이 당 N개의 블록들이 존재하기 때문에, 따라서, 총 N개의 R-블록들 (R-블록(660.R) ... R-블록(660.1), 및 R-블록(660.0))이 존재한다.
[0268] R-블록의 다른 예는 함 께 취해진 플래시 다이 각각으로부터의 i번째 및 (i+1)번째 블록이다(예를 들어, 플래시 다이(610.65)로부터 의 블록들(610.65B0 및 610.65B1), (명시적으로 예시되지 않은) 플래시 다이(610.64)로부터의 블록들(0 및 1) 등 내지 플래시 다이(610.1)로부터의 블록들(610.1B0 및 610.1B1), 및 플래시 다이(610.0)로부터의 블록 들(610.0B0 및 610.0B1)). 따라서, 각 플래시 다이에 N개의 블록들이 존재하면, N/2개의 R-블록들이 존재한 다. R-블록의 또 다른 예는 복수의 듀얼 평면 디바이스들 각각으로부터의 i번째 짝수 및 홀수 블록들이다. R-블록들로서 관리를 위한 플래시 다이 블록들의 다른 배열들이 예상되고, 일부 블록들이 동작불능인 경우에 도, R-블록들이 각 다이로부터 하나의 블록을 갖는다는 것을 보장하기 위해 가상과 물리적 블록 어드레스들 사이의 매핑을 포함한다. 다양한 실시예들에서, 각 플래시 다이에서의 N개의 블록들 중 일부는, 가상과 물 리적 블록 어드레스들 사이의 매핑이 R-블록들에서의 블록들 중 결함이 있는 블록들을 대체하기 위해 스페어 (그렇지 않으면 미사용됨) 블록들을 갖도록 스페어들로서 사용된다.
[0269] 다양한 실시예들에서, 플래시 다이에서의 정보의 판독들 및/또는 기록들은 '판독 유닛 먼저(read unit first)' 순서 또는 '페이지 먼저(page first)' 순서와 같은 순서에 따라 수행된다. 도면에 예시된 판독 유닛들에 대한 판독 유닛 먼저 순서의 일례는 판독 유닛(610.0R0)으로 시작하여, 610.1R0 ... 610.65R0, 610.0R1, 610.1R1 ... 610.65R1 등 이 후속하고, 610.65RR로 종료한다. 도면에 예시된 판독 유닛들에 대한 페이지 먼저 순서의 일례는 판독 유 닛(610.0R0)으로 시작하여, 610.0R1 ... 610.0RR, 610.1R0, 610.1R1 ... 610.1RR ... 610.65R0, 610.65R1 등 이 후속하고, 610.65RR로 종료한다.
[0270] 다양한 실시예들에서, R-블록내의 데이터의 기록 및/또 는 스트라이핑 순서는 모든 디바이스들 (예를 들어, 스트라이핑 방향(600)에 의해 개념적으로 제안된 바와 같이, 최하 내지 최상 넘버링된 디바이스들)에 걸쳐 페이지(예를 들어, 최하 내지 최상) 먼저이고, 그 후, (모든 디바이스에 걸쳐) 다음으로 최상의 페이지 등이고, R-블록의 최종 페이지까지 계속된다. 구체적으로 , R-블록(660.0)에 관하여, 예시적인 순서는 페이지(610.0P0)(플래시 다이(610.0)의 제 1 블록에서의 제 1 페이지)로 시작하고, 페이지(610.1P0)(플래시 다이(610.1)의 제 1 블록에서의 제 1 페이지)가 후속하고, 페 이지(610.65P0)(플래시 다이(610.65)의 제 1 블록에서의 제 1 페이지, 및 R-블록(660.0)의 최종 블록)로 계 속된다. 예시적인 순서는 페이지(610.0P1)(플래시 다이(610.0)의 제 1 블록에서의 제 2 페이지)로 계속되고 , 페이지(610.1P1)(플래시 다이(610.1)의 제 1 블록에서의 제 2 페이지)가 후속하고, 페이지(610.65P1)(플래 시 다이(610.65)의 제 1 블록에서의 제 2 페이지)로 계속된다. 예는 동일한 순서로 계속된다. 예시적인 순 서는 페이지(610.0PP)(플래시 다이(610.0)의 제 1 블록에서의 최종 페이지)로 완료되고, 페이지(610.1PP)(플 래시 다이(610.1)의 제 1 블록에서의 최종 페이지)가 후속하고, 페이지(610.65PP)(플래시 다이(610.65)의 제 1 블록에서의 최종 페이지, 및 R-블록(660.0)의 최종 블록에서의 최종 페이지)로 종료된다.
[0271] 다양한 실시예들에서, 플래시 다이(610.65 .. 610.1 및 610.0)는 도 1a의 하나 또는 그 초과의 개별 플래시 다이의 각각의 다이들에 대응한다. 일부 실시예들에서, 플래시 다이(610.65 ... 610.1, 및 610.0)는 모든 NVM(199) 보다 작은 부분이다. 예를 들어, 다양한 실시예들에서, 데이터는 플래시 다이의 다중의 그룹들에 걸쳐 독립적으로 스트라이프되고, 플래시 다이의 그룹들 각각은 독립적으로 액세스가능하다.
대역 선택
[0272] 도 1은 SSD의 NVM의 특정한 대역들에 데이터를 선택적으로 배치하는 SSD의 실시예의 선택된 상세 사항들을 개념적으로 예시한다. 개념적으로, SSD의 NVM들에 대한 기록들은 기록 데이터 소스들(700)의 하나 또는 그 초과의 엘리먼트들로부터 발생하고, 대역 관리부(710)에 의해 분석되고, 데이터 변환부(717)에 의해 변환되며, SSD의 NVM들의 특정한 데이터 대역들(730)에 배치된다.
[0273] 일부 실시예들에서, 기록 데이터 소스들(700)의 엘리먼트들은 기록 데이터(708)를 NVM에 제공한다. 기록 데이터 소스들(700)의 엘리 먼트들의 예들은 호스트 데이터(701), 리사이클링된 데이터(702), 시스템 데이터(703), 및 기타 데이터(704 )를 포함한다. 일부 실시예들에서, 대역 관리부(710)는 기록 데이터 소스들의 엘리먼트들 중 일부 또는 모 두를 동일하게 프로세싱한다. 예를 들어, 일부 실시예들은 시스템 데이터 및 호스트 데이터를 동일하게 취 급한다. 다양한 실시예들에서, 기록 데이터 소스들은 상기 언급되지 않은 엘리먼트들을 포함한다. 호스트 데이터(701)의 예는 (예를 들어, 호스트 인터페이스(111)를 통해 또는 호스트(102)로부터) 호스트에 의해 기 록된 데이터이다. 리사이클링된 데이터(702)의 예는 (예를 들어, 리사이클러(151)에 의해) 기록된 데이터이 다. 시스템 데이터(703)의 예는 맵(7110에 관한 데이터이다. 일부 실시예들에서, 시스템 데이터(703)는 S SD 제어기(100)에 의해 생성된다. 기타 데이터(704는 호스트 데이터가 아니고, 리사이클링된 데이터가 아니 며, 시스템 데이터가 아닌 데이터이다.
[0274] 소스 ID(706)가 기록 데이터 소스들의 엘리먼트들 사 이의 멀티플렉서를 제어하고, 어느 엘리먼트가 기록 데이터(708) 및 연관된 소스 정보(707)를 제공하는지를 나타낸다. 소스 정보는 대역 관리부(710)에 통신된다. 소스 정보의 예들은 기록 데이터의 LBA, 기록 데이 터의 LBA 범위, R-블록 어드레스, 및/또는 리사이클링 데이터가 (예를 들어, 리사이클링된 데이터에 대해) 이전에 어느 대역에 배치되었는지를 포함한다. 기록 데이터는 데이터 분석부(713)에 통신된다.
[0275] 대역 관리부(710)는 기록 데이터 및 소스 정보의 특징들을 결정하고, 적절한 대역을 선택한다. 예시된 실시 예에서, 대역 관리부(710)는 여러 모듈들: 맵(711), LBA 카운터 어레이(712), 데이터 분석부(713) 및 대역 선택기(714)를 포함한다.
[0276] 예시된 실시예에서, LBA 카운터 어레이는 LBA들로의 액세스들의 특 징들을 트래킹한다(예를 들어, LBA 또는 예를 들어, 인접한 LBA들의 그룹에 대한 판독/기록 동작들의 수를 각각 트래킹하는 복수의 카운터들). 맵(711)은 LBA들을 NVM의 블록 및/또는 페이지 어드레스로 변환하고, 각 맵 엔트리는 LBA 카운터 어레이(712)의 엘리먼트와 연관된다. LBA 카운터 어레이의 엘리먼트들은 연관된 LBA 또는 예를 들어, 인접한 LBA들의 그룹에 관한 정보를 각각 트래킹하는 하나 또는 그 초과의 카운터들을 포함한다. 다양한 실시예들에서, LBA 카운터 어레이의 각 엘리먼트는: 연관된 LBA에 대한 판독들, 연관된 LBA에 대한 기록들, 연관된 LBA에 대한 판독들 대 연관된 LBA에 대한 기록들의 비, 연관된 LBA에 대한 연속 판독들, 연관된 LBA에 대한 연속 기록들, 및 연관된 LBA에 대한 기록들 만큼 증분되고 연관된 LBA에 대한 판 독들 만큼 감분되는 카운터 중 하나 또는 그 초과의 것을 포함한다. 일부 실시예들에서, 소소 정보(예를 들 어, LBA)는 LBA 카운터 어레이에 액세스하고 LBA 카운터 어레이의 특정한 엘리먼트로부터 기록 데이터에 관 한 정보를 검색하기 위해 사용된다.
[0277] 예시된 실시예에서, 데이터 분석부(713)는 기록 데이터 (708)의 특징들을 결정한다. 일례로서, 데이터 분석부는 기록 데이터의 윈도우가 x86 상대적 브랜치 명령들 이도록 나타나는 임계수의 데이터 바이트들을 포함하는지를 검사하여, 기록 데이터가 실행가능한 데이터이라 는 것을 결정한다. 일부 실시예들에서, 실행가능한 데이터는 예를 들어, 상대적 어드레스들을 절대적 어드 레스들로 변환함으로써 더 변환된다. 다른 예로서, 데이터 분석부는 기록 데이터가 압축불가능한지(예를 들 어, 데이터가 JPEG, MP3, PDF, MPEG, ZIP 등 또는 암호화된 데이터와 같은 압축된 포맷에 있는지)를 검사한 다. 일부 사용 시나리오들에서, 실행가능하고 압축불가능한 데이터는 특정한 시간 간격을 통해 기록된 것 보다 상대적으로 더욱 빈번하게 판독되고, 일부 실시예들에서는, 특정한 대역들에 선택적으로 배치된다. 데 이터 분석부의 다양한 실시예들은 소프트웨어, 펌웨어, 및/또는 하드웨어의 임의의 조합을 포함한다.
[ 0278] 일부 실시예들에서, 옵션의 힌트 유닛(705)이 기록 데이터와 연관된 소스 정보(707)를 수신하고, 옵션의 힌트(709)를 대역 선택기(714)에 통신한다. 제 1 예로서, 힌트는 기록 데이터가 판독 전용이거나 주 로 판독용(예를 들어, 멀티-미디어 데이터, 또는 데이터베이스에서의 판독 전용 테이블)이라는 것을 나타내 고, 따라서, 기록될 가능성이 없다. 제 2 예로서, 힌트는 기록 데이터가 기록 전용이거나 주로 판독용(예를 들어, 로그 파일 또는 파일 시스템 저널)이라는 것을 나타내고, 따라서, 판독될 가능성이 없다. 힌트 유닛 의 다양한 실시예들은 소프트웨어, 펌웨어, 및/또는 하드웨어의 임의의 조합을 포함한다. 다양한 실시예들 에서, 힌트 유닛 소프트웨어 및/또는 펌웨어는 CPU(171)상에서 실행된다. 다양한 실시예들에서, 힌트 유닛 은 소스 정보(예를 들어, LBA, LBA 범위)를 힌트와 연관시키는 테이블을 포함한다. 일부 실시예들에서, 힌 트 유닛은 (예를 들어, 호스트 데이터(701)를 제공하는) 호스트로부터 수신된 힌트 정보에 적어도 부분적으 로 기초하여 동작한다.
[0279] 예시된 실시예에서, LBA 카운터 어레이(712), 데이터 분석부(713) 및 /또는 옵션의 힌트(709)에 의해 결정된 특징들의 일부 조합에 기초하고, 소스 ID(706)와 결합하여, 대역 선 택기(714)는 데이터 대역들(730)로부터 기록 데이터(708)에 대한 대역을 선택한다. 일부 실시예들에서, 대 역 선택기는 SSD에 대한 성능, 웨어 레벨링(wear leveling), 전력 소모 및/또는 신뢰도를 향상시키기 위한 대역을 선택한다. 일부 실시예들에서, 대역 선택기는 상대적으로 더욱 빈번하게 기록되는 것으로 결정된 기 록 데이터에 대한 핫터 대역을 선택한다(예를 들어, 새롭게 기록된 호스트 데이터, 또는 여기서, LBA 카운터 는 특정한 시간 간격에 걸쳐 상대적으로 다수의 기록들을 나타낸다). 대역 선택기는 덜 빈번하게 기록되는 것으로 결정된 기록 데이터에 대한 콜더 대역을 선택한다(예를 들어, 실행가능하거나 압축됨, 또는 여기서, LBA 카운터들은 특정한 시간 간격에 걸쳐 상대적으로 적은 기록들, 또는 리사이클링된 데이터를 나타낸다). 일부 사용 시나리오들에서, 대역 선택기가 리사이클링된 데이터에 대해 콜더 대역들을 선택하고 대역 선택기 가 빈번하게 기록된 데이터에 대해 핫터 대역들을 선택하기 때문에, 리사이클링은 핫 및 콜드 데이터를 상이 한 대역들로 분리한다. 일부 실시예들에서, 힌트들은 대역 선택기가 코드 대역을 선택하도록 (호스트 데이 터(701)로부터의) 기록 데이터가 콜드이라는 것을 나타냄으로써 핫 및 콜드 데이터의 분리를 가속시킨다. 일부 실시예들에서, 기록 실패들을 가질 가능성이 있는 NVM 셀들을 포함하는 블록들이 콜드 대역에 할당되어 서, 신뢰도를 향상시킨다. 일부 실시예들에서, 기록 실패들을 가질 가능성이 없는 NVM 셀들을 포함하는 블 록들이 핫 대역에 할당되어서, 웨어 레벨링 및 신뢰도를 향상시킨다. 일부 사용 시나리오들에서, 핫 대역은 더 많은 자유 공간을 갖는 블록들을 가져서, 더욱 효율적인 리사이클링을 가능하게 한다.
[0280] 일 부 실시예들에서, 대역 선택기는 압축불가능한 기록 데이터에 대해 압축불가능한 대역을 선택한다. 일부 실 시예들에서, 대역 선택기는 압축가능한 기록 데이터에 대해 압축가능한 대역을 선택한다. 일부 실시예들에 서, 대역 선택기는 실행가능한 기록 데이터에 대해 실행가능한 대역을 선택한다. 일부 실시예들에서, 대역 선택기는 (예를 들어, LBA 카운터 어레이 또는 힌트에 의해) 기록 전용인 것으로 결정되는 기록 데이터에 대 해 핫 대역을 선택할 것이고, 다른 팩터들을 무시할 것이다. 일부 실시예들에서, 대역 선택기는 기록 전용 인 것으로 결정된 기록 데이터에 대한 리사이클링에 영향을 받지 않는 대역을 선택한다.
[0281] 예 시된 실시예에서, 기록 데이터(716)는 데이터 변환부(717)로 통신된다. 다양한 사용 시나리오들에서, 데이 터 변환부는 기록 데이터를 암호화하고 그리고/또는 압축하여, 변환된 데이터(718)를 출력한다. 데이터 분 석부의 다양한 실시예들은 소프트웨어, 펌웨어, 및/또는 하드웨어의 임의의 조합으로 구현된다. 다양한 실 시예들에서, 데이터 변환은 개념적으로, 데이터 분석 이전에, 그와 병행하여, 그에 후속하여, 또는 그와 조 합하여 발생한다. 예를 들어, 일부 실시예들에서, 데이터 변환부에 의해 수행된 프로세싱은 데이터 분석부 에 의해 사용된 기록 데이터의 특징들을 결정한다. 다양한 실시예들에서, 데이터 변환부는 기록 데이터를 변환하지 않고, 변환된 데이터는 기록 데이터와 동일하거나 동일한 기록 데이터이다.
[0282] 대역 선택기는 선택된 대역의 대역 ID(715)를 데이터 대역들(760)에 통신한다. 대역 ID는 대역들(731, 732 ... 73N) 중 어느 것이 선택되었는지를 나타낸다. 각 대역은 기록 데이터를 수신하기 위해 이용가능한 R-블록이 다. 변환된 데이터(718)는 선택된 대역에서 이용가능한 R-블록으로 전송되고 NVM에 기록된다.
[0283] 다양한 실시예들에서, 예시한 바와 같은 데이터 대역들(730)은 개념적이고, 기반 스토리지 뿐만 아니라 연관 된 제어 기능들을 나타낸다. 일례로서, 데이터 대역들(730)은 변환된 데이터(718)를 대역 ID(715)에 의해 식별된 바와 같은 NVM의 특정한 영역으로 다이렉팅하기 위해 NVM 뿐만 아니라 하드웨어, 소프트웨어, 및/또 는 펌웨어의 임의의 조합을 포함한다. 예를 들어, 도 1a의 맥락에서, 기반 스토리지는 NVM(199)의 임의의 부분들에 대응하고, 연관된 제어 기능들은 CPU 코어(172), 버퍼 관리(175), 및 스케줄링(193) 중 어느 하나 또는 그 초과의 것의 임의의 부분들에 대응한다.
[0284] 다양한 실시예들에서, 데이터 대역들(730) 의 대역들 중 하나 또는 그 초과의 것은 NVM들(예를 들어, NVM(199))의 블록들의 관리된 그룹들이다. 예를 들어, 예시된 실시예에서, R-블록들(731.1 ... 731.M)은 NVM들의 블록들이고, 대역 1(731)은 R-블록들(731. 1 ... 731.M)의 관리된 그룹이다. 다양한 실시예들에서, R-블록들(660.0)은 R-블록들(731.1 ... 73N.K)의 예시적인 구현이다.
[0285] 다양한 실시예들에서, 대역들은 기록 데이터 소스들(700)의 엘리먼트들 중 특정한 하나로부터의 블록들만 오직 포함한다. 다양한 실시예들에서, 기록 데이터 소스들의 엘리먼트들 중 특정한 하나는 호스트 데이터(701), 리사이클링된 데이터(702), 시스템 데이터(703), 및 기타 데이터(70 4) 중 어느 하나이다. 각각의 실시예들에서, 대역들은 리사이클링된 시스템 데이터와 함께 리사이클링된 호 스트 데이터, 리사이클링된 시스템 데이터, 및 리사이클링된 호스트 데이터만을 각각 포함하는 블록들을 포 함한다.
[0286] 다른 예로서, 대역은 시스템 데이터(703)의 하위 페이지 블록들을 오직 포함한다. 다른 예로서, 대역은 빈번하게 판독되는 상위 페이지 블록들을 오직 포함한다. 다른 예로서, 대역은 빈번하 게 판독되는 시스템 데이터(703)를 갖는 블록들을 오직 포함한다. 다른 예로서, 대역은 빈번하게 기록되는 시스템 데이터(703)를 갖는 상위 페이지 블록들을 오직 포함한다.
[0287] 도 8은 FLM 및 하나 또는 그 초과의 SLM 페이지들을 갖는 2-레벨 맵을 통해 NVM에 저장된 LB들에 LBA들을 매핑하는 실시예의 선택된 상세사항들을, LBA - NVM 위치 매핑(800)으로서 예시한다. 2-레벨 맵은 (단일 엘리먼트 SLM 페이지(820)로 서 개념적으로 예시된) 하나 또는 그 초과의 제 2 레벨 엘리먼트들에 커플링된 제 1 레벨 엘리먼트(FLM(810 ))를 통해 구현된다. FLM은 복수의 엔트리들(SLM 페이지/길이(810.1) ... SLM 페이지/길이(810.M))을 포함 한다. FLM의 엔트리들 각각은 (SLM 페이지(820)와 같은) SLM 페이지들 중 하나를 지시한다. SLM 페이지는 복수의 엔트리들(LB 페이지/길이(820.1) ... LB 페이지/길이(820.N))을 포함한다. SLM 페이지들의 엔트리들 각각은 데이터가 시작하는 NVM에서의 위치(예를 들어, LBA에 대한 호스트 기록의 시작을 적어도 저장하는 판 독 유닛)를 지시한다.
[0288] 다양한 실시예들에서, 도면은 도 1a의 맵(141) 및/또는 테이블(143) 의 또는 그에 관한 선택된 상세사항들의 예시이다. 예를 들어, 일부 실시예들에서, 맵(141) 및/또는 테이블 (143)은 FLM의 하나 또는 그 초과의 엔트리들 및/또는 SML의 하나 또는 그 초과의 엔트리들과 같은, 매핑 정 보의 하나 또는 그 초과의 캐시들을 구현한다. FLM 및/또는 SLM의 전체 이미지는 NVM(예를 들어, 도 1a의 NVM(199))의 부분에 유지되고, 예를 들어, 캐시들이 이전에 캐싱된 하나 또는 그 초과의 FLM 및/또는 SLM 엔 트리들을 대체할 때 업데이트된다. 일부 실시예들에서, FLM 및/또는 SLM 전체 이미지들은 롤링(rolling) 또 는 핑-퐁(ping-pong) 체크포인트들을 통해 구현되고, 체크포인트들 각각은 각각의 전체 맵 이미지의 일부이 다.
[0289] 다양한 실시예들에서, SLM 페이지들의 엔트리들 각각은 LBA 카운터들과 연관되어서, 각 LBA(821)는 LBA - NVM 위치 매핑(800)을 통해 LBA 카운터들과 연관된다. 예를 들어, 예시된 실시예에서, L B 페이지/길이(820.1)는 LBA 카운터들(822.1)과 연관되고, LB 페이지/길이(820.2)는 LBA 카운터들(822.2)과 연관되고, LB 페이지/길이(820.N)는 LBA 카운터들(822.N)과 연관된다. 일부 실시예들에서, LBA 카운터들은 SLM 페이지(820)에 저장되고; 다른 실시예들에서, LBA 카운터들은 SLM 페이지(820)와 별개인 데이터 구조에 저장된다. 일부 실시예들에서, LBA 카운터들은 다수의 인접한 LBA들과 연관되고; 다른 실시예들에서, LBA 카운터들은 단일 LBA와 연관되고; 다른 실시예들에서, 일부 LBA 카운터들은 다수의 인접한 LBA들과 연관되고 다른 LBA 카운터들은 단일 LBA와 연관된다. 일부 실시예들에서, LBA 카운터들은 연관된 LBA에 관한 하나 또 는 그 초과의 통계를 포함한다. 통계의 일부 예들은 연속 판독들의 수, 연속 기록들의 수, 판독들의 수, 기 록들의 수, 판독들의 수와 기록들의 수의 비, 및 판독들의 수와 기록들의 수 사이의 차이이다. 일부 실시예 들에서, LBA에 대한 일부 또는 모든 액세스들은 각각의 LBA 카운터들을 업데이트한다. 일부 실시예들에서, LBA에 대한 제 1 액세스는 연관된 LBA 카운터들을 초기화한다.
[0290] 분할기(정수 분할기(822))는 어느 FLM 엔트리를 선택하고 (선택된 FLM 엔트리에 의해 지시된 SLM 페이지내의) 어느 SLM 엔트리를 선택할 지 결정하기 위해 인커밍 LBA를 분할하도록 예를 들어, 프로그램가능한 하드웨어 레지스터(SLM 엔트리들/SL M 페이지(CSR)(823))로부터 파라미터를 수신한다. 분할기는 FLM 및 SLM 페이지들에 커플링된다.
[0291 ] 동작중에, LBA(821)가 정수 분할기(822)에 제공된다. 분할기는 SLM 엔트리들/SLM 페이지(CSR)(823)에 의해 제공될 때, SLM 페이지 당 SLM 엔트리들의 수로 LBA를 분할하여, 몫(FLM 인덱스(822Q))과 나머지(SLM 페이지 인덱스(822R))를 발생시킨다. 몫은 FLM 엔트리들 중 하나를 선택하기 위해 사용되고, 선택된 FLM 엔 트리의 페이지 필드가 판독된다(SLM 포인터(810S)). 페이지 필드는 SLM 페이지들 중 하나(예를 들어, SLM 페이지(820))를 선택하기 위해 사용되고, 나머지는 선택된 SLM 페이지의 엔트리를 선택하기 위해 (예를 들어 , 오프셋으로서) 사용된다. 선택된 SLM 페이지 엔트리의 페이지 필드는 특정한 판독 유닛과 같은 NVM에서의 특정한 위치를 선택하기 위해 사용되고, 여기서, 제공된 LBA에 대응하는 LB의 적어도 시작이 저장된다(LB 포 인터(820L)). 다양한 실시예들에서, LB 포인터들은 NVM의 판독 유닛의 어드레스(예를 들어, 도 2의 판독 유 닛 어드레스(223))를 포함한다. 일부 실시예들에서, 각각의 SLM 엔트리들 각각은 각각의 SLM 엔트리의 각각 의 LB의 데이터와 연관된 필드 인코딩(예를 들어, 길이 및/또는 스팬)을 포함한다. 예를 들어, 스팬은 모든 정보(정정되지 않은 데이터 및 연관된 에러 정정 체크 비트들)를 획득하여 각각의 LB의 (에러 정정된) 데이 터를 결정하기 위해 얼마나 많은 (인접한) 판독 유닛들이 액세스되는지를 설명한다. 이 예에 계속하여, 길 이는 (예를 들어, 도 2의 판독 유닛들(225)에서 길이에 의해 예시된 바와 같은 판독 유닛들에서의) 얼마나 많은 판독 정보가 각각의 LB의 데이터에 대응하는지를 설명한다. 일부 실시예들에서, 각각의 FLM 엔트리들 각각은 필드 인코딩, 예를 들어, FLM 엔트리의 페이지 필드에 의해 특정된 각각의 SLM 페이지 전체의 판독과 연관된 길이 및/또는 스팬을 포함한다. 예를 들어, 스팬은 모든 정보(정정되지 않은 데이터 및 연관된 에러 정정 체크 비트들)를 획득하여 각각의 SLM 페이지의 (에러 정정된) 데이터를 결정하기 위해 얼마나 많은 (인 접한) 판독 유닛들이 액세스되는지를 설명한다. 이 예에 계속하여, 길이는 (예를 들어, 도 2의 판독 유닛들 (225)에서 길이에 의해 예시된 바와 같은 판독 유닛들에서의) 얼마나 많은 판독 정보가 각각의 SLM의 데이터 에 대응하는지를 설명한다.
[0292] 다양한 실시예들에서, 몫은 SLM 페이지들의 완전하게 연관된 캐 시와 같은 캐시에 액세스하기 위한 키로서 사용된다. 특정한 SLM 페이지에 대한 캐시에 힌트가 있다면, 특 정한 SLM 페이지의 최근의 카피가 NVM에 액세스하지 않고 캐시에서 발견된다. 복수의 SLM 페이지들에 대한 고속 액세스의 제공은, 일부 실시예들 및/또는 사용 시나리오들에서, NVM에 대한 랜덤 액세스들 및/또는 NV M에 대한 순차적 데이터 액세스들의 복수의 독립적 스트림들의 더욱 효율적인 프로세싱을 가능하게 한다(예 를 들어, LBA들의 제 1 영역에 대한 순차적 데이터 액세스들의 제 1 스트림은 LBA들의 제 2 영역에 대한 순 차적 데이터 액세스들의 제 2 스트림과 점재된다).
[0293] 도 9는 (예를 들어, SSD에서) NVM들의 데 이터 대역들의 대역 관리 흐름(900)의 실시예의 선택된 상세사항들의 흐름도를 예시한다. 대역 관리 흐름( 900)은 대역 관리 흐름의 다양한 양상들의 예시적인 동작(예를 들어, 도 7의 대역 관리부(710)에 의해 수행 된 바와 같은 프로세싱)이다. 대역 관리 흐름은 복수의 기록 데이터 소스들(예를 들어, 도 7의 기록 데이터 소스들(700))의 엘리먼트로부터의 기록 데이터(예를 들어, 도 7의 기록 데이터(708)) 및 소스 정보(예를 들 어, 도 7의 소스 정보(707))를 수신하는 것을 포함한다. 대역 관리 흐름은 기록 데이터를 데이터 대역들(예 를 들어, 도 7의 데이터 대역들(730))에 선택적으로 배치하는 것을 더 포함한다.
[0294] 기록 데이 터를 제공하는 기록 데이터 소스에 응답하여, 흐름이 시작한다(시작(901)). 대역 관리 흐름은 기록 데이터 및 기록 데이터 소스로부터 기록 데이터 소스를 식별하는 소스 정보를 수신한다(기록 데이터, 소스 정보를 수신(902)). 대역 관리 흐름은 기록 데이터의 특징들 및 기록 데이터에 대한 액세스들의 특징들을 결정하기 위해 기록 데이터 및 소스 정보를 분석한다(기록 데이터, 소스 정보를 분석(903)). 결정된 특징들에 기초하 여, 대역 관리 흐름은 기록 데이터에 대한 대역을 선택한다(데이터 대역을 선택(904)). 대역 관리 흐름은 대역 식별자(도 7의 대역 ID(715))로서 선택된 대역의 표시자를 복수의 데이터 대역들(예를 들어, 도 7의 데 이터 대역들(730))을 갖고, 관리하고/하거나 제어하는 엘리먼트에 전송한다. 대역 관리 흐름은 데이터를 변 환하고 기록을 위한 변환된 데이터를 선택된 데이터 대역에 전송하는 데이터 변환 엘리먼트(예를 들어, 도 7의 데이터 변환부(717))에 기록 데이터를 전송한다(데이터를 대역에 할당(905)). 그 후, 흐름이 완료된다 (종료(906)).
[0295] 다양한 실시예들에서, 도 7은 도 1a 및 도 1b의 또는 그에 관한 선택된 상세사 항들의 예시이다. 예를 들어, 맵(711) 및/또는 LBA 카운터 어레이(712)의 모두 또는 임의의 부분들은 맵(1 41) 및/또는 테이블(143)의 모두 또는 임의의 부분들에 대응한다. 일부 실시예들에서, LBA 카운터 어레이( 712)는 맵(141) 및/또는 테이블(143)의 일부이고; 다른 실시예들에서, LBA 카운터 어레이(712)는 맵(141)과 별개인 데이터 구조이다.
[0296] 일부 실시예들에서, 대역 관리부(710)의 부분들은 SSD 제어기(100 )의 부분들에 의해 구현된다. 예를 들어, 데이터 분석부(713) 및/또는 데이터 변환부(717)는 CPU(171)상에 서 실행되는 소프트웨어 및/또는 펌웨어로서 전체적으로 또는 부분적으로 구현된다. 다른 예에 있어서, SS D 제어기(100)는 데이터 분석부(713) 및/또는 데이터 변환부(717)를 위해 사용된 하드웨어를 포함한다.
[0297] 다양한 실시예들에서, 도 8은 도 1a의 맵(141) 및/또는 테이블(143) 및/또는 도 7의 맵(711) 및 /또는 LBA 카운터 어레이(712)의 또는 그에 관한 선택된 상세사항들의 예시이다. 다양한 실시예들에서, LB A - NVM 매핑(800)은 맵(141) 및/또는 맵(711)의 임의의 부분들의 구현이다. 다양한 실시예들에서, 테이블 (143)은 다중의 FLM(810) 및/또는 SLM 페이지들(820)을 포함한다.
예시적인 구현 기법들
[0298] 일부 실시예들에서, 비휘발성 메모리(예를 들어, 플래시 메모리들), 컴퓨팅-호스트 플래시 메모리 제어기, 및/또는 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기의 영역들에 대한 기록들의 관리 및 영역 선택을 수행 하도록 인에이블된 시스템, SSD, 또는 SSD 제어기에 의해 수행된 동작들의 모두 또는 임의의 부분들, 그리고 프로세서, 마이크로프로세서, 시스템-온-칩, 응용 주문형 집적 회로, 하드웨어 가속기, 또는 상기 언급한 동 작들의 모두 또는 일부들을 제공하는 다른 회로의 일부들에 대한 다양한 조합들이, 컴퓨터 시스템에 의한 프 로세싱과 호환가능한 사양에 의해 특정된다. 그 사양은 하드웨어 디스크립션(description) 언어, 회로 디스 크립션들, 네트리스트(netlist) 디스크립션들, 마스크 디스크립션들 또는 레이아웃 디스크립션들과 같은 다 양한 디스크립션들에 따른다. 예시적인 디스크립션들은: 베릴로그(Verilog), VHDL, SPICE, PSpice와 같은 SPICE 변형들, IBIS, LEF, DEF, GDS-II, OASIS 또는 다른 디스크립션들을 포함한다. 다양한 실시예들에서, 프로세싱은 하나 또는 그 초과의 집적 회로들에 대한 포함을 위해 적합한 로직 및/또는 회로를 생성하고, 검증하거나 특정하기 위해 해석(interpretation), 컴필레이션, 시뮬레이션 및 합성의 임의의 조합을 포함한다 . 다양한 실시예들에 따른 각각의 집적 회로는 다양한 기술들에 따라 설계가능 및/또는 제조가능하다. 기 술들은 (필드 또는 마스크 프로그램가능한 게이트 어레이 집적 회로와 같은) 프로그램가능 기술, (전적 또는 부분적 셀-기반 집적 회로와 같은) 세미-커스텀(semi-custom) 기술 및 (실질적으로 특화되는 집적 회로와 같 은) 풀-커스텀(full-custom) 기술 및 이들의 임의의 조합 또는 집적 회로들의 설계 및/또는 제조와 호환가능 한 임의의 다른 기술을 포함한다.
[0299] 일부 실시예들에서, 한 세트의 명령들이 저장되어 있는 컴 퓨터 판독가능한 매체에 의해 설명된 바와 같은 동작들의 전부 또는 일부들의 다양한 조합들은, 하나 또는 둘 이상의 프로그램 명령들의 실행 및/또는 해석에 의해, 하나 또는 둘 이상의 소스 및/또는 스크립트 언어 구문들의 해석 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 구문들에 표현된 정보를 컴파일링, 변환, 및/또는 해석함으로써 생성되는 이진 명령들의 실행에 의해 수행된다. 구문들은 (C, C++, 포트란, 파스칼, Ada, Java, VBscript 및 쉘(Shell)과 같은) 임의의 표준 프로그래밍 또는 스크립팅 언어와 호환가능하다. 프로그램 명령들, 언어 구문들 또는 이진 명령들 중 하나 또는 둘 이상은 하나 또는 둘 이상 의 컴퓨터 판독가능한 스토리지 매체 엘리먼트들 상에 임의선택적으로 저장된다. 다양한 실시예들에서, 프 로그램 명령어들 중 일부, 모두, 또는 다양한 부분들은 하나 또는 그 초과의 함수들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들, 또는 이들의 부분들로서 실현된다.
결론
[0300] 단지 텍스 트 및 도면들을 준비하는데 편의를 위해 특정 선택들이 설명에서 구성되었으며 반대의 표시가 존재하지 않는 한 그 선택들은 그 자체가, 설명된 실시예들의 구조 또는 동작에 관한 추가적인 정보를 전달하는 것으로서 해석되어서는 안 된다. 선택들의 예들은: 실시예들의 특징들 및 엘리먼트들을 식별하고 참조하기 위해 이용 되는 엘리먼트 식별자들(예를 들어, 콜아웃들(callouts) 또는 수치적 지시자들)의 특정 구조 또는 할당 그리 고 도면 넘버링을 위해 이용되는 지시들의 특정 구조 또는 할당을 포함한다.
[0301] 용어들 "포함하 다(includes)" 또는 "포함하는(including)"은 구체적으로, 허용범위가 넓은(open-ended) 범위의 논리적 세트 들을 설명하는 추상적 개념들(abstractions)로서 해석되도록 의도되며 용어 "~내의(within)"가 명시적으로 후속하지 않는 한 물리적 제한(physical containment)을 전달하는 것을 의미하지 않는다.
[0302] 전 술한 실시예들이 설명 및 이해의 명확화를 목적으로 다소 상세히 설명되었지만, 본 발명은 제공된 상세사항 들로 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이며 제한적이지 않는다.
[0303] 설명에 일치하는 구성, 배열 및 이용에서의 많은 변형들이 가능하며, 이러한 많은 변형들은 발행 특허의 청구항들의 범위 내에 속함이 이해될 것이다. 예를 들어, 상호접속 및 기능-유닛(fu nction-unit) 비트-폭들, 클록 속도들 및 사용되는 기술의 타입은 각 컴포넌트 블록에서의 다양한 실시예들 에 따라 가변적이다. 상호접속 및 로직에 정해지는 명칭들은 단지 예시적이며, 설명된 개념들을 제한하는 것으로 해석되어서는 안 된다. 순서도 및 흐름도 프로세스, 동작 및 기능 엘리먼트들의 순서 및 배열은 다 양한 실시예들에 따라 가변적이다. 또한, 구체적으로 반대로 서술되지 않는 한, 특정된 값 범위들, 이용된 최대 및 최소 값들 또는 (플래시 메모리 기술 타입들; 및 레지스터들 및 버퍼들에서의 엔트리들 또는 스테이 지들의 수와 같은) 다른 특정 사양들은 단지 설명된 실시예들에 대한 것이며, 구현 기술에서의 개선들 및 변 경들을 따를(track)것이 예상되며, 제한들로서 해석되어서는 안 된다.
[0304] 기술분야에 알려진 기 능적으로 동등한 기술들이, 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인- 라인 루틴들, 절차들, 매크로들 또는 이들의 일부들을 구현하도록, 설명된 것들 대신에 사용가능하다. 실시 예의 기능이 (하드웨어에서의 이전의 기능들의 소프트웨어로의 이동을 용이하게 하는) 더 빠른 프로세싱 및 (소프트웨어에서의 이전의 기능들의 하드웨어로의 이동을 용이하게 하는) 더 높은 집적 밀도의 설계 제약들 및 기술 트렌드들에 의존하기 때문에, 실시예들의 다수의 기능적 양태들이 하드웨어(예를 들어, 일반적으로 전용 회로) 또는 소프트웨어(예를 들어, 프로그램된 제어기 또는 프로세서의 일부 방식을 통해) 선택적으로 실현가능하다는 것이 또한 이해된다. 다양한 실시예들에서의 특정한 변형들은, 파티셔닝하는데 있어서의 차 이들; 상이한 폼 팩터들 및 구성들; 상이한 운영 시스템들 및 다른 시스템 소프트웨어의 사용; 상이한 인터 페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용; 및 특정한 애플리케이션의 고유 엔지니어링 및 비즈니스 제약들에 따라 본원에 설명된 개념들을 구현할 때 기대되는 다른 변형들을 포함하지만, 이에 제 한되지 않는다.
[0305] 실시예들은 설명된 실시예들의 많은 양상들의 최소 구현을 위해 요구되는 것 을 훨씬 넘어선 상세 및 환경적 맥락으로 설명되었다. 기술분야의 당업자는 일부 실시예들이 나머지 엘리먼 트들 사이의 기본적 협력을 변경하지 않고서 개시된 컴포넌트들 또는 특징들을 생략함을 인식할 것이다. 따 라서 개시된 상세사항들 중 다수는 설명된 실시예들의 다양한 양상들을 구현하는데 요구되지 않음이 이해된 다. 나머지 엘리먼트들이 종래 기술과 구별가능한 범위까지, 생략되는 컴포넌트들 및 특징들은 본원에 설명 된 개념들에 대해 제한하지 않는다.
[0306] 설계에 있어서 이러한 모든 변형들은 설명된 실시예들에 의해 전달되는 교시들에 대한 비현실적(insubstantial) 변경들이다. 본원에 설명된 실시예들은 다른 컴퓨팅 및 네트워킹 애플리케이션들로의 광범위한 적용가능성을 가지며, 설명된 실시예들의 특정 애플리케이션 또는 산업으로 제한되지 않음이 또한 이해된다. 본 발명은 따라서, 발행 특허의 청구항들의 범위 내에 포괄되는 모든 가능한 수정들 및 변형들을 포함하는 것으로 해석된다.

Claims (25)

  1. 방법으로서,
    호스트로부터 수신된 기록을 분석하여 상기 기록의 특징을 결정하는 단계;
    상기 특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하는 단계; 및
    선택된 대역에 상기 기록의 데이터를 기록하는 단계
    를 포함하고,
    상기 대역들 각각은 상기 NVM의 관리된 부분인, 방법.
  2. 제 1 항에 있어서,
    상기 특징은 압축가능한 상기 기록의 데이터를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 특징은 실행가능한 상기 기록의 데이터를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 특징은 상기 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터에 적어도 부분적으로 기초하는, 방법.
  5. 제 4 항에 있어서,
    상기 카운터를 통해 상기 LBA에 대한 기록들의 수를 카운팅하는 단계를 더 포함하는, 방법.
  6. 제 4 항에 있어서,
    상기 카운터를 통해 상기 LBA의 판독들의 수와 상기 LBA의 기록들의 수 사이의 차이를 카운팅하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 기록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 상기 호스트로부터 수신되고,
    상기 데이터를 기록하는 단계는 적어도 부분적으로, 상기 NVM과 통신하도록 인에이블된 플래시 메모리 인터페이스를 통해 이루어지고,
    상기 NVM은 적어도 하나의 플래시 메모리를 포함하며,
    상기 스토리지 인터페이스 및 상기 플래시 메모리 인터페이스는 단일 집적 회로에 구현된 제어기에 포함되는, 방법.
  8. 제 1 항에 있어서,
    상기 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 상기 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 방법.
  9. 시스템으로서,
    호스트로부터 수신된 기록을 분석하여 기록의 특징을 결정하기 위한 수단;
    상기 특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하기 위한 수단; 및
    선택된 대역에 상기 기록의 데이터를 기록하기 위한 수단
    을 포함하고,
    상기 대역들 각각은 상기 NVM의 관리된 부분인, 시스템.
  10. 제 9 항에 있어서,
    상기 특징은 압축가능한 상기 기록의 데이터를 포함하는, 시스템.
  11. 제 9 항에 있어서,
    상기 특징은 실행가능한 상기 기록의 데이터를 포함하는, 시스템.
  12. 제 9 항에 있어서,
    상기 특징은 상기 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터에 적어도 부분적으로 기초하는, 시스템.
  13. 제 12 항에 있어서,
    상기 카운터를 통해 상기 LBA에 대한 기록들의 수를 카운팅하기 위한 수단을 더 포함하는, 시스템.
  14. 제 12 항에 있어서,
    상기 카운터를 통해 상기 LBA의 판독들의 수와 상기 LBA의 기록들의 수 사이의 차이를 카운팅하기 위한 수단을 더 포함하는, 시스템.
  15. 프로세싱 엘리먼트에 의해 실행될 때, 상기 프로세싱 엘리먼트로 하여금, 동작들을 수행하고 그리고/또는 제어하게 하는 명령들의 세트가 저장된 유형의 비일시적 컴퓨터 판독가능 매체로서, 상기 동작들은,
    호스트로부터 수신된 기록을 분석하여 상기 기록의 특징을 결정하는 것;
    상기 특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하는 것; 및
    선택된 대역에 상기 기록의 데이터를 기록하는 것
    를 포함하고,
    상기 대역들 각각은 상기 NVM의 관리된 부분인, 유형의 비일시적 컴퓨터 판독가능 매체.
  16. 제 15 항에 있어서,
    상기 특징은 압축가능한 상기 기록의 데이터를 포함하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  17. 제 15 항에 있어서,
    상기 특징은 실행가능한 상기 기록의 데이터를 포함하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  18. 제 15 항에 있어서,
    상기 특징은 상기 기록에 대응하는 논리 블록 어드레스(LBA)와 연관된 카운터에 적어도 부분적으로 기초하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  19. 제 18 항에 있어서,
    상기 동작들은 상기 카운터를 통해 상기 LBA에 대한 기록들의 수를 카운팅하는 것을 더 포함하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  20. 제 18 항에 있어서,
    상기 동작들은 상기 카운터를 통해 상기 LBA의 판독들의 수와 상기 LBA의 기록들의 수 사이의 차이를 카운팅하는 것을 더 포함하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  21. 제 15 항에 있어서,
    상기 기록은 하나 또는 그 초과의 스토리지 인터페이스 표준들과 호환가능한 스토리지 인터페이스를 통해 상기 호스트로부터 수신되고,
    상기 데이터를 기록하는 것은 적어도 부분적으로, 상기 NVM과 통신하도록 인에이블된 플래시 메모리 인터페이스를 통해 이루어지고,
    상기 NVM은 적어도 하나의 플래시 메모리를 포함하며,
    상기 프로세싱 엘리먼트, 상기 스토리지 인터페이스, 및 상기 플래시 메모리 인터페이스는 단일 집적 회로에 구현된 제어기에 포함되는, 유형의 비일시적 컴퓨터 판독가능 매체.
  22. 제 15 항에 있어서,
    상기 대역들 각각은 복수의 논리 특성들 중 적어도 하나에 따르고, 상기 논리 특성들은 빈번하게 판독되는 것, 상대적으로 더욱 빈번하게 기록되는 것, 더욱 상대적으로 덜 빈번하게 기록되는 것, 압축불가능한 것, 실행가능한 것, 복구불가능하고 전력 손실 이후에 보존될 필요가 있는 것, 복구가능하고 전력 손실 이후에 보존될 필요가 없는 것, 특정한 기법 또는 키를 사용하여 암호화되는 것, 특정한 기법 또는 키를 사용하여 또는 특정한 에러 정정 코드(ECC) 방식들로 에러들에 대해 보호되는 것, 리사이클링의 대상이 되는 것 및 리사이클링의 대상이 되지 않는 것을 포함하는, 유형의 비일시적 컴퓨터 판독가능 매체.
  23. 장치로서,
    호스트로부터 수신된 기록을 분석하여 기록의 특징을 결정하도록 인에이블된 기록 분석 하드웨어 로직 회로;
    상기 특징에 적어도 부분적으로 기초하여 비휘발성 메모리(NVM)의 복수의 대역들 중 하나를 선택하도록 인에이블된 대역 선택 하드웨어 로직 회로; 및
    선택된 대역에 상기 기록의 데이터를 기록하도록 인에이블된 메모리 기록 하드웨어 로직 회로
    를 포함하고,
    상기 대역들 각각은 상기 NVM의 관리된 부분인, 장치.
  24. 제 23 항에 있어서,
    상기 특징은 압축가능한 상기 기록의 데이터를 포함하는, 장치.
  25. 제 23 항에 있어서,
    상기 특징은 실행가능한 상기 기록의 데이터를 포함하는, 장치.
KR1020140007211A 2013-01-22 2014-01-21 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 KR102155191B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361755442P 2013-01-22 2013-01-22
US61/755,442 2013-01-22

Publications (2)

Publication Number Publication Date
KR20140094468A true KR20140094468A (ko) 2014-07-30
KR102155191B1 KR102155191B1 (ko) 2020-09-11

Family

ID=49949587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140007211A KR102155191B1 (ko) 2013-01-22 2014-01-21 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택

Country Status (6)

Country Link
US (1) US9395924B2 (ko)
EP (1) EP2757479A1 (ko)
JP (1) JP6387231B2 (ko)
KR (1) KR102155191B1 (ko)
CN (1) CN103942010B (ko)
TW (1) TWI537724B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354745A (zh) * 2015-07-13 2017-01-25 三星电子株式会社 用于提供计算机装置的接口的方法和计算机装置
KR20170043993A (ko) * 2015-10-14 2017-04-24 삼성전자주식회사 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US20170046092A1 (en) * 2014-07-04 2017-02-16 Hewlett Packard Enterprise Development Lp Data deduplication
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US20160092118A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
US9858008B2 (en) * 2014-10-30 2018-01-02 ScaleFlux Method to reduce flash memory IOs with host maintained address mapping table
DK3059679T3 (en) * 2014-12-05 2018-12-17 Huawei Tech Co Ltd CONTROL UNIT, FLASH MEMORY UNIT, PROCEDURE FOR IDENTIFICATION OF DATA BLOCK STABILITY, AND PROCEDURE FOR STORING DATA ON THE FLASH MEMORY UNIT
US9471448B2 (en) * 2014-12-10 2016-10-18 Intel Corporation Performing an atomic write operation across multiple storage devices
WO2016095103A1 (zh) * 2014-12-16 2016-06-23 华为技术有限公司 存储空间管理方法及装置
WO2016101145A1 (zh) * 2014-12-23 2016-06-30 华为技术有限公司 一种控制器、识别数据块稳定性的方法和存储系统
US9678665B2 (en) 2015-03-06 2017-06-13 Western Digital Technologies, Inc. Methods and systems for memory page allocation
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
CN107924368A (zh) * 2015-07-23 2018-04-17 慧与发展有限责任合伙企业 在计算机系统破坏时保存易失性内存
KR102491624B1 (ko) 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
US9886398B2 (en) * 2015-12-01 2018-02-06 International Business Machines Corporation Implicit sharing in storage management
KR20170075855A (ko) * 2015-12-23 2017-07-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10481799B2 (en) * 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
KR102615593B1 (ko) * 2016-05-04 2023-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI635746B (zh) * 2016-05-10 2018-09-11 晨星半導體股份有限公司 扭曲畫面校正裝置及方法
KR102567224B1 (ko) 2016-07-25 2023-08-16 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US10229047B2 (en) * 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
KR20180021284A (ko) * 2016-08-18 2018-03-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10275165B2 (en) 2016-09-12 2019-04-30 Toshiba Memory Corporation Memory controller
US10216417B2 (en) * 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
CN106527987B (zh) * 2016-11-04 2019-06-04 湖南国科微电子股份有限公司 一种不带dram的ssd主控可靠性提升系统及方法
GB2559119B (en) * 2017-01-20 2020-12-30 Advanced Risc Mach Ltd Apparatus and methods to prolong lifetime of memories
US11188456B2 (en) * 2017-03-21 2021-11-30 Western Digital Technologies Inc. Storage system and method for predictive block allocation for efficient garbage collection
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
US10068663B1 (en) * 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10275162B2 (en) 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
FR3070081B1 (fr) * 2017-08-10 2021-04-09 Safran Identity & Security Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire
KR20190052366A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN109857330B (zh) * 2017-11-30 2022-02-15 宜鼎国际股份有限公司 数据存取效率的预估方法
CN108153487B (zh) * 2017-11-30 2021-04-13 西安空间无线电技术研究所 一种基于nand flash的星载固存多源数据文件系统
US10878859B2 (en) 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
KR20190078133A (ko) * 2017-12-26 2019-07-04 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11099831B2 (en) * 2018-02-08 2021-08-24 Micron Technology, Inc. Firmware update in a storage backed memory system
US11803325B2 (en) 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
WO2020028812A1 (en) * 2018-08-03 2020-02-06 Burlywood, Inc. Power loss protection and recovery
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
CN109144424B (zh) * 2018-09-04 2021-10-15 浪潮电子信息产业股份有限公司 一种固态硬盘的读写方法、装置、设备及存储介质
US11169726B2 (en) 2018-09-13 2021-11-09 Toshiba Memory Corporation Pool-level storage management
WO2020069074A1 (en) * 2018-09-28 2020-04-02 Burlywood, Inc. Write stream separation into multiple partitions
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
CN109802684B (zh) * 2018-12-26 2022-03-25 华为技术有限公司 进行数据压缩的方法和装置
TWI740187B (zh) * 2019-02-20 2021-09-21 慧榮科技股份有限公司 存取方法
CN109918317A (zh) * 2019-03-01 2019-06-21 重庆大学 一种基于磨损感知的nvm条间磨损均衡方法
US11327809B2 (en) 2019-06-19 2022-05-10 International Business Machines Corporation Virtual machine memory removal increment selection
CN110716699A (zh) * 2019-10-17 2020-01-21 北京百度网讯科技有限公司 用于写入数据的方法和装置
CN111104066B (zh) 2019-12-17 2021-07-27 华中科技大学 数据写入方法、装置及存储服务器和计算机可读存储介质
US11544186B2 (en) 2020-07-16 2023-01-03 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
CN113946279A (zh) * 2020-07-16 2022-01-18 慧荣科技股份有限公司 主机效能加速模式的数据读取方法及装置
US11429545B2 (en) 2020-07-16 2022-08-30 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
US11544185B2 (en) 2020-07-16 2023-01-03 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
CN112149169A (zh) * 2020-10-12 2020-12-29 Oppo广东移动通信有限公司 一种应用访问方法、装置及计算机可读存储介质
KR20220067795A (ko) 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
TWI821152B (zh) * 2021-02-23 2023-11-01 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
TWI808384B (zh) * 2021-02-23 2023-07-11 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11942111B2 (en) * 2021-06-15 2024-03-26 Western Digital Technologies, Inc. Data storage device and method for auto-peeling of surveillance video content to increase archival storage
TWI771079B (zh) * 2021-06-24 2022-07-11 群聯電子股份有限公司 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN113590502B (zh) * 2021-07-23 2024-03-22 合肥康芯威存储技术有限公司 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统
CN114594908A (zh) * 2022-02-25 2022-06-07 阿里巴巴(中国)有限公司 基于固态硬盘ssd的数据处理方法、设备及存储介质
TWI814590B (zh) * 2022-09-26 2023-09-01 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7017004B1 (en) * 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
US20070106844A1 (en) * 2005-11-04 2007-05-10 Yasukichi Ohkawa Data processing system and program for transferring data
US20090089489A1 (en) * 2007-09-27 2009-04-02 Tdk Corporation Memory controller, flash memory system with memory controller, and control method of flash memory
US20110010489A1 (en) * 2009-07-09 2011-01-13 Phison Electronics Corp. Logical block management method for a flash memory and control circuit storage system using the same
US20110145486A1 (en) * 2009-12-16 2011-06-16 Tsutomu Owa Memory management device and method
US20110238890A1 (en) * 2010-03-25 2011-09-29 Kabushiki Kaisha Toshiba Memory controller, memory system, personal computer, and method of controlling memory system

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942552A (en) 1986-11-20 1990-07-17 Allen-Bradley Company, Inc. Method and apparatus for saving and performing industrial control commands
JPH03250499A (ja) * 1990-02-27 1991-11-08 Nec Corp データ記憶回路
JP3212787B2 (ja) 1993-12-02 2001-09-25 日本電気株式会社 転送データ管理方式およびホスト・端末間データ転送方式
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6324669B1 (en) * 1997-11-17 2001-11-27 Seagate Technology Llc Method and apparatus for using CRC for data integrity in on-chip memory
US6269413B1 (en) * 1998-10-30 2001-07-31 Hewlett Packard Company System with multiple dynamically-sized logical FIFOs sharing single memory and with read/write pointers independently selectable and simultaneously responsive to respective read/write FIFO selections
US6427198B1 (en) 2000-02-15 2002-07-30 International Business Machines Corporation Method, system, and program for determining system configuration
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP2002342164A (ja) * 2001-05-22 2002-11-29 Hitachi Ltd 記憶装置及びデータ処理装置並びに記憶部制御方法
DE60226627D1 (de) 2001-08-24 2008-06-26 Intel Corp Ehörige verfahren um datenintegrität zu verwalten
JP2003087348A (ja) 2001-09-14 2003-03-20 Matsushita Graphic Communication Systems Inc 通信制御方法及び通信制御装置並びにadsl通信装置
KR100445134B1 (ko) 2002-01-31 2004-08-21 삼성전자주식회사 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법
US6968439B2 (en) 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
KR100498233B1 (ko) * 2002-10-31 2005-07-01 한국전자통신연구원 선입선출 메모리 회로 및 그 구현 방법
JP4175185B2 (ja) 2003-06-06 2008-11-05 日本電気株式会社 ネットワーク情報記録装置
CN1670701A (zh) 2004-03-17 2005-09-21 德鑫科技股份有限公司 压缩数据存储方法
US20060174067A1 (en) 2005-02-03 2006-08-03 Craig Soules Method of caching data
CN100361094C (zh) 2005-07-01 2008-01-09 华为技术有限公司 一种节省全局变量内存空间的方法
CN101390043A (zh) 2005-07-01 2009-03-18 美国日本电气实验室公司 嵌入式系统用的存储器体系结构
US7159082B1 (en) 2005-10-03 2007-01-02 Hewlett-Packard Development Company, L.P. System and method for throttling memory accesses
US7719983B2 (en) 2006-01-06 2010-05-18 International Business Machines Corporation Method for autonomic system management using adaptive allocation of resources
JP4855102B2 (ja) 2006-02-23 2012-01-18 株式会社日立製作所 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法
US7594073B2 (en) 2006-09-29 2009-09-22 Intel Corporation Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
JP2009026296A (ja) 2007-06-21 2009-02-05 Toshiba Corp 電子デバイス、メモリデバイス、ホスト装置
US8078787B2 (en) 2007-06-22 2011-12-13 Apple Inc. Communication between a host device and an accessory via an intermediate device
US8429358B2 (en) 2007-08-14 2013-04-23 Samsung Electronics Co., Ltd. Method and data storage device for processing commands
JP2009230407A (ja) * 2008-03-21 2009-10-08 Toshiba Corp データの更新方法、メモリシステムおよびメモリデバイス
US8473707B2 (en) 2008-03-27 2013-06-25 Open Invention Network, Llc Method for achieving sequential I/O performance from a random workload
US7769919B2 (en) 2008-05-15 2010-08-03 International Business Machines Corporation Protecting computer memory from simultaneous direct memory access operations using active and inactive translation tables
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US20090319721A1 (en) * 2008-06-19 2009-12-24 Silicon Motion, Inc. Flash memory apparatus and method for operating the same
TWI398770B (zh) * 2008-07-08 2013-06-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
TW201007734A (en) 2008-08-06 2010-02-16 Genesys Logic Inc Flash memory control apparatus having signal-converting module
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US7925925B2 (en) 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
CN101576834B (zh) 2009-05-08 2012-05-30 西安蓝海本立信息科技有限公司 基于时间戳建立数据视图的连续数据保护系统及方法
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8560765B2 (en) * 2009-09-08 2013-10-15 Lsi Corporation Systems and methods for variable level use of a multi-level flash memory
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US8700841B2 (en) * 2010-04-19 2014-04-15 International Business Machines Corporation Sub-LUN input/output profiling for SSD devices
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8489855B2 (en) 2010-05-07 2013-07-16 Ocz Technology Group Inc. NAND flash-based solid state drive and method of operation
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US20120059976A1 (en) 2010-09-07 2012-03-08 Daniel L. Rosenband Storage array controller for solid-state storage devices
CN102023818A (zh) 2010-12-06 2011-04-20 成都市华为赛门铁克科技有限公司 一种存储设备容量调整方法、装置及存储设备
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
KR101467941B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US9021319B2 (en) * 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
CN103392207B (zh) 2011-10-05 2017-08-04 希捷科技有限公司 非易失性存储的自身日志记录和层级一致性
JP5583227B1 (ja) * 2012-09-21 2014-09-03 株式会社東芝 物理ブロック間でデータをコピーするディスクアレイ装置、ディスクアレイコントローラ及び方法
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
JP2014098978A (ja) * 2012-11-13 2014-05-29 Sony Corp メモリ制御装置、メモリシステム、情報処理システムおよびメモリ制御方法
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9292228B2 (en) * 2013-02-06 2016-03-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Selective raid protection for cache memory
US8990614B2 (en) * 2013-03-14 2015-03-24 Apple Inc. Performance of a system having non-volatile memory
CN104794063A (zh) * 2014-01-17 2015-07-22 光宝科技股份有限公司 一种具备电阻式存储器的固态储存装置的控制方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7017004B1 (en) * 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
US20070106844A1 (en) * 2005-11-04 2007-05-10 Yasukichi Ohkawa Data processing system and program for transferring data
US20090089489A1 (en) * 2007-09-27 2009-04-02 Tdk Corporation Memory controller, flash memory system with memory controller, and control method of flash memory
US20110010489A1 (en) * 2009-07-09 2011-01-13 Phison Electronics Corp. Logical block management method for a flash memory and control circuit storage system using the same
US20110145486A1 (en) * 2009-12-16 2011-06-16 Tsutomu Owa Memory management device and method
US20110238890A1 (en) * 2010-03-25 2011-09-29 Kabushiki Kaisha Toshiba Memory controller, memory system, personal computer, and method of controlling memory system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354745A (zh) * 2015-07-13 2017-01-25 三星电子株式会社 用于提供计算机装置的接口的方法和计算机装置
US11249951B2 (en) 2015-07-13 2022-02-15 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US11989160B2 (en) 2015-07-13 2024-05-21 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
KR20170043993A (ko) * 2015-10-14 2017-04-24 삼성전자주식회사 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
JP2014167790A (ja) 2014-09-11
EP2757479A1 (en) 2014-07-23
JP6387231B2 (ja) 2018-09-05
US9395924B2 (en) 2016-07-19
CN103942010A (zh) 2014-07-23
CN103942010B (zh) 2019-05-10
TW201443641A (zh) 2014-11-16
KR102155191B1 (ko) 2020-09-11
US20140208007A1 (en) 2014-07-24
TWI537724B (zh) 2016-06-11

Similar Documents

Publication Publication Date Title
US11449252B2 (en) Method of writing and reading data in an NVM using Lpage identification headers
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
US10936251B2 (en) I/O device and computing host interoperation
US9851910B2 (en) Scalable data structures for control and management of non-volatile storage
US10241908B2 (en) Techniques for dynamically determining allocations and providing variable over-provisioning for non-volatile storage
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
KR101564569B1 (ko) 상위-레벨 리던던시 정보 계산
KR20130114681A (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
KR20140084337A (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US9396104B1 (en) Accessing compressed data of varying-sized quanta in non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant