KR20160105734A - 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장 - Google Patents

다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장 Download PDF

Info

Publication number
KR20160105734A
KR20160105734A KR1020160107694A KR20160107694A KR20160105734A KR 20160105734 A KR20160105734 A KR 20160105734A KR 1020160107694 A KR1020160107694 A KR 1020160107694A KR 20160107694 A KR20160107694 A KR 20160107694A KR 20160105734 A KR20160105734 A KR 20160105734A
Authority
KR
South Korea
Prior art keywords
data
memory
layer
ecc
volatile
Prior art date
Application number
KR1020160107694A
Other languages
English (en)
Other versions
KR102009003B1 (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 KR20160105734A publication Critical patent/KR20160105734A/ko
Application granted granted Critical
Publication of KR102009003B1 publication Critical patent/KR102009003B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터를 메모리에서 관리하는 방법 및 장치가 개시된다. 일부 실시예들에 따르면, 데이터 객체는 다중 계층 메모리 구조의 제 1 비휘발성 계층에 저장된다. 판독 동작 동안 데이터 객체 내의 적어도 하나의 비트 에러를 검출하도록 적응되는 ECC 데이터 세트가 발생된다. ECC 데이터 세트는 다중 계층 메모리 구조의 다른 제 2 비휘발성 계층에 저장된다.

Description

다중 계층 메모리 구조에 에러 정정 코드(ECC) 데이터의 저장{STORING ERROR CORRECTION CODE(ECC) DATA IN A MULTI-TIER MEMORY STRUCTURE}
본 개시의 다양한 실시예들은 일반적으로 데이터를 메모리에서 관리하는 것에 관한 것이다.
일부 실시예들에 따르면, 데이터 객체는 다중 계층 메모리 구조의 제 1 비휘발성 계층(tier)에 저장된다. 적어도 하나의 비트 에러를 판독 동작 동안 데이터 객체에서 검출하도록 적응되는 ECC 데이터 세트가 발생된다. ECC 데이터 세트는 다중 계층 메모리 구조의 상이한 제 2 비휘발성 계층에 저장된다.
본 개시의 다양한 실시예들을 특징짓는 이들 및 다른 특징들 및 양상들은 이하의 상세한 논의 및 첨부 도면들을 고려하여 이해될 수 있다.
도 1은 본 개시의 다양한 실시예들에 따른 다중 계층 메모리 구조를 갖는 데이터 저장 장치의 기능 블록 표현이다.
도 2는 도 1의 다중 계층 메모리 구조에 유용한 소거가능 메모리의 개략적 표현이다.
도 3은 도 1의 다중 계층 메모리 구조에 유용한 재기록가능 메모리의 개략적 표현을 제공한다.
도 4는 도 1로부터의 선택된 메모리 계층의 배열을 도시한다.
도 5는 도 1의 장치에 의해 사용되는 데이터 객체들, ECC 데이터 및 메타데이터 유닛들에 대한 예시적 포맷들을 예시한다.
도 6은 일부 실시예들에 따른 도 1의 장치에 대한 부분들의 기능 블록 표현이다.
도 7은 도 6의 데이터 객체 엔진의 양상들을 더 상세히 도시한다.
도 8은 도 6의 ECC 엔진의 양상들을 더 상세히 도시한다.
도 9는 도 6의 메타데이터 엔진의 양상들을 더 상세히 도시한다.
도 10은 하부 메모리 계층 내의 데이터 객체에 대한 상부 메모리 계층 내의 선택된 데이터 객체의 저장 및 대응하는 ECC 데이터의 저장을 예시한다.
도 11은 일부 실시예들에 따른 더 높은 계층 내의 ECC 데이터의 저장 및 더 낮은 계층 내의 대응하는 데이터 객체의 저장을 도시한다.
도 11은 다른 실시예들에 따른 더 높은 계층 내의 데이터 객체의 저장 및 더 낮은 계층 내의 대응하는 ECC 데이터 세트의 저장을 도시한다.
도 12는 일부 실시예들에 따른 데이터 기록 동작 동안 수행되는 단계들을 제공한다.
도 13은 일부 실시예들에 따른 후속 데이터 판독 동작 동안 수행되는 단계들을 예시한다.
도 14는 다양한 실시예들에 따른 유용한 가비지 수집 유닛들(GCU들)의 동작 라이프 사이클을 도시한다.
도 15는 일부 실시예들에 따른 가비지 수집 동작 동안 수행되는 단계들을 도시한다.
본 개시 일반적으로 다중 계층 메모리 구조 내의 데이터의 관리에 관한 것이다.
데이터 저장 장치들은 일반적으로 데이터의 블록들을 메모리에 저장하기 위해 동작한다. 장치들은 블록들이 저장된 데이터에 대한 판독 요청에 대응하여 나중에 검색될 수 있도록 블록들의 물리적 위치들을 추적하기 위해 데이터 관리 시스템들을 이용할 수 있다. 장치에는 상이한 레벨들, 또는 계층들에 상이한 타입들의 메모리를 갖는 계층적(다중 계층) 메모리 구조가 제공될 수 있다. 계층들은 상이한 속성들 및 워크로드 능력들을 갖는 데이터를 수용하기 위해 선택된 우선순위 순서로 배열된다.
다양한 메모리 계층들은 소거가능 또는 재기록가능할 수 있다. 소거가능 메모리들(예를 들어, 플래시 메모리, 많은 기록 광 디스크 매체 등)은 새로운 데이터가 주어진 메모리 위치에 기록될 수 있기 전에 소거 동작을 일반적으로 필요로 하는 소거가능 비휘발성 메모리 셀들로 구성된다. 따라서, 갱신된 데이터 세트를 새로운 상이한 위치에 기록하고 이전에 저장된 버전의 데이터를 스테일(stale)로서 마킹하는 것은 소거가능 메모리에서 일반적이다.
재기록가능 메모리들(예를 들어, 동적 랜덤 액세스 메모리(DRAM), 저항 랜덤 액세스 메모리(RRAM), 자기 디스크 매체 등)은 휘발성 또는 비휘발성일 수 있고, 갱신된 데이터 세트가 개재 소거 동작에 대한 요구 없이 주어진 위치 내의 기존 더 오래된 버전의 데이터 상에 중복 기재될 수 있도록 재기록가능 비휘발성 메모리 셀들로 형성된다.
에러 정정 코드(ECC) 데이터 및 메타데이터와 같은 상이한 타입들의 제어 정보는 사용자 데이터의 기록 및 후속 재판독을 원조하기 위해 메모리 구조에 저장될 수 있다. ECC 데이터는 메모리로부터 재판독되는 데이터 객체의 카피로 비트 에러들의 선택된 수까지의 검출 및/또는 정정을 용이하게 하는 것을 허용한다. 메타데이터 유닛들은 메모리 공간에 저장된 논리 요소들(논리 블록 어드레스들, LBA들과 같은)과 메모리 공간의 물리적 위치들(물리 블록 어드레스들, PBA들과 같은) 사이의 관계를 추적한다. 메타데이터는 전체 수의 축적된 기록들/소거들/판독들, 에이징, 드리프트 파라미터들, 추정된 또는 측정된 웨어(wear) 등과 같은, 저장된 사용자 데이터 및 연관된 메모리 위치와 연관되는 상태 정보를 포함할 수도 있다.
본 개시의 다양한 실시예들은 데이터를 다중 계층 메모리 구조에서 관리하는 개선된 접근법을 제공한다. 아래에 설명되는 바와 같이, 데이터 객체들은 하나 이상의 사용자 데이터 블록들(예를 들어, LBA들)로 형성되고 다중 계층 메모리 구조 내의 선택된 계층에 저장된다. ECC 데이터 세트는 각각의 데이터 객체를 위해 발생되고, 데이터 객체를 저장하기 위해 사용되는 계층보다 더 낮은 계층 또는 더 높은 계층과 같은 상이한 계층에 저장된다. ECC 데이터의 크기 및 구성은 대응하는 데이터 객체와 연관되는 데이터 속성들에 대해 그리고 ECC 데이터가 저장되는 선택된 계층의 메모리 속성들에 대해 선택될 수 있다. 메타데이터는 데이터 객체 및 ECC 데이터의 위치들을 추적하기 위해 더 발생될 수 있고, 메타데이터는 데이터 객체 및 ECC 데이터를 각각 저장하기 위해 사용되는 계층들과 다른 제 3 계층에 저장될 수 있다.
이러한 방법으로, 특정 저장 구체적 속성들을 갖는 데이터 객체들은 쌍을 이루거나 그룹화되고 이 속성들과 일치하는 적절한 메모리 계층에 저장될 수 있다. ECC 데이터는 ECC 데이터의 속성들 및 데이터 객체와 연관되는 예상된 또는 관찰된 워크로드와 일치하는 적절한 메모리 계층에 발생되고 저장될 수 있다.
본 명세서에 설명되는 다양한 실시예들의 이들 및 다른 특징들은 데이터 저장 장치(100)의 기능 블록 표현을 제공하는 도 1의 검토부터 시작하면 이해될 수 있다. 장치(100)는 컨트롤러(102) 및 다중 계층 메모리 구조(104)를 포함한다. 컨트롤러(102)는 장치(100)의 최고 레벨 제어를 제공하고, 메모리 구조(104)는 외부 호스트 장치(분리적으로 도시되지 않음)와 같은 리퀘스터 엔티티로부터/로 사용자 데이터를 저장하고 검색한다.
메모리 구조(104)는 MEM 1-3으로 표시되는 다수의 메모리 계층들(106, 108 및 110)을 포함한다. 다양한 계층들 내의 메모리의 번호 및 타입들은 원하는 대로 변화될 수 있다. 일반적으로, 우선순위 순서는 메모리 구조(104) 내의 더 높은 계층들이 더 작은 및/또는 더 빠른 메모리로 구성될 수 있고 메모리 구조 내의 더 낮은 계층들이 더 큰 및/또는 더 느린 메모리로 구성될 수 있도록 제공될 것이다. 다른 특성들은 계층들의 우선순위 순서화를 결정할 수 있다.
하나의 구체적인 예를 제공하는 목적들을 위해, 시스템(100)은 하부 메모리 계층들 중 적어도 하나가, 소거가능 플래시 메모리를 이용하는 메인 스토어를 제공하도록 SSD(solid state drive), 휴대용 썸 드라이브, 메모리 스틱, 메모리 카드, 하이브리드 저장 장치 등과 같은 플래시 메모리 기반 저장 장치로 고려된다. 더 높은 메모리 계층들 중 적어도 하나는 저항 랜덤 액세스 메모리(RRAM), 상 변화 랜덤 액세스 메모리(PCRAM), 스핀 토크 전달 랜덤 액세스 메모리(STRAM) 등과 같은 재기록가능 비휘발성 메모리를 제공한다. 이것은 단지 예시적이고 제한되지 않는다. 다른 레벨들은 휘발성 또는 비휘발성 캐시 레벨들, 버퍼들 등과 같은 메모리 구조에 통합될 수 있다.
도 2는 소거가능 메모리 셀들(122)의 어레이로 구성되는 소거가능 메모리(120)를 예시하며, 그것은 이 경우에 제한 없이 플래시 메모리 셀들을 특징으로 한다. 소거가능 메모리(120)는 도 1 내의 메모리 구조(104)의 다양한 메모리 계층들 중 하나 이상으로 이용될 수 있다. 플래시 메모리 셀들의 경우에, 셀들(122)은 축적된 전하를 저장하도록 적응되는 부동 게이트를 갖는 일반적인 nMOSFET(n-channel metal oxide semiconductor field effect transistor) 구성을 갖는 프로그램가능 요소들의 형태를 일반적으로 취할 수 있다. 각각의 플래시 메모리 셀(122)의 프로그램된 상태는 셀을 소스-드레인 전도 상태에 배치하기 위해 셀(122)의 제어 게이트에 인가될 필요가 있는 전압의 양에 대해 설정될 수 있다.
도 2의 메모리 셀들(122)은 셀들(122)의 열들 각각이 비트 라인(BL)(124)에 연결되고 셀들(122)의 행들 각각이 분리 워드 라인(WL)(126)에 연결된 상태에서 다수의 행들 및 열들로 배열된다. 데이터는 데이터의 페이지로서 셀들의 각각의 행을 따라 저장될 수 있으며, 이는 메모리 스토리지의 선택된 유닛(8192 비트와 같은)을 나타낼 수 있다.
상기 언급된 바와 같이, 플래시 메모리 셀들(122)와 같은 소거가능 메모리 셀들은 데이터를 셀 당 하나 이상의 비트들의 형태로 저장하도록 적응될 수 있다. 그러나, 새로운 갱신 데이터를 저장하기 위해, 셀들(122)은 연관된 부동 게이트들로부터 축적된 전하를 제거하는 소거 동작의 적용을 필요로 한다. 따라서, 플래시 메모리 셀들(122)의 그룹들은 소거 블록들로 배열될 수 있으며, 이는 유닛으로서 소거될 수 있는 가장 작은 수의 셀들을 나타낸다.
도 3은 재기록가능 메모리 셀들(132)의 어레이로 구성되는 재기록가능 메모리(130)를 예시한다. 각각의 메모리 셀(32)은 스위칭 장치(MOSFET)(136)와 직렬인 RSE(resistive sense element)(134)를 포함한다. 각각의 RSE(134)는 프로그램된 전기 저항에 대해 상이한 프로그램된 데이터 상태들을 나타내는 프로그램가능 메모리 요소이다. 재기록가능 메모리 셀들(132)은 RRAM, STRAM, PCRAM 등과 같은 임의의 수의 적절한 형태들을 취할 수 있다.
상기 언급된 바와 같이, 도 3의 셀들(134)과 같은 재기록가능 메모리 셀들은 셀들을 알려진 상태로 리셋하기 위해 소거 동작을 필연적으로 필요로 하는 것 없이 새롭게 갱신된 데이터를 받아들일 수 있다. 다양한 셀들(132)은 비트 라인들(BL)(138), 소스 라인들(SL)(140) 및 워드 라인들(WL)(142)을 통해 상호 연결된다. 단 2개의 제어 라인(예를 들어, 비트 라인 및 소스 라인)을 각각의 메모리 셀에 상호 연결하는 교차점 어레이들을 포함하는 다른 배열들이 예상된다.
도 4는 도 1의 다중 계층 메모리 구조(104)에 유용한 선택된 메모리 계층(150)을 예시한다. 메모리 계층(150)은 각각 데이터 객체들, ECC 데이터 및 메타데이터를 위한 저장 공간들(152, 154 및 156)을 제공하도록 배열된다. 이것은 개별 계층들이 한 타입의 데이터(예를 들어, 데이터 객체들)의 저장에 전적으로 전용일 수 있거나, 3개의 상이한 타입의 데이터 세트들 중 단 2개에 대한 저장에 전용일 수 있으므로 단지 예시적이고 제한되지 않는다.
이러한 다른 타입들의 데이터 세트들에 대한 주어진 메모리 계층 내의 공간의 실제 양은 광범위하게 변화될 수도 있으며; 예를 들어, 특정 메모리 계층은 90%가 데이터 객체들의 저장에 전용이고 10%가 메타데이터에 전용이도록 배열될 수 있다. 아래에 설명되는 바와 같이, 주어진 메모리 계층 내의 ECC 데이터 및 메타데이터(예를 들어, 도 4의 메모리 공간들(154, 156) 내의 데이터)는 그 계층 내의 데이터 객체들(예를 들어, 도 4의 메모리 공간(152) 내의 데이터 세트들)과 반드시 관련되는 것은 아닐 수 있다.
데이터 객체들에 대한 전체 이용가능 저장 공간을 메모리 구조(104) 내에서 증가시키는 것 뿐만 아니라, 데이터 객체들에 대한 이용가능 공간을 더 높은 레벨들의 I/O 데이터 전송 속도 성능(예를 들어, 시간 단위 당 전송되는 데이터 단위들)을 갖는 더 높은 계층들에서 증가시키는 것은 전체 성능 응답 레벨들을 리퀘스터 레벨에서 개선하는 경향이 있을 수 있다는 점이 이해될 것이다. 최종적으로, 데이터 기록 및 판독 동작들의 일반적 목적은 사용자 데이터를 리퀘스터로부터 그리고 리퀘스터로 효율적인 방식으로 전송하는 것이다.
도 6은 데이터 객체(162), ECC 데이터(또는 ECC 데이터 세트)(164) 및 메타데이터(또는 메타데이터 유닛)(166)로 구성된 데이터 구조(160)에 대한 예시적 포맷을 예시한다. 많은 경우들에서, 데이터 객체(162)는 대응하는 데이터 객체와 비교하여 크기(전체 비트에 대해)가 대략 10% 이하인 ECC 데이터 및 메타데이터 유닛들과 같은 대응하는 ECC 데이터(164) 및 메타데이터 유닛(166)보다 상당히 더 클 것이다. 그럼에도 불구하고, 데이터 객체들, ECC 데이터 세트들 및 메타데이터 유닛들의 개별 크기들은 데이터 객체들 내의 데이터 블록들(LBA들)의 수, 적용된 ECC의 레벨 및 메타데이터의 입도에 의존할 것이다. 본 명세서에 사용되는 바와 같이, 더 낮은 메타데이터 입도는 사용자 데이터의 더 많은(더 미세한) 기술을 암시하므로 더 낮은 입도는 더 큰 메타데이터 유닛 크기를 야기하는 경향이 있을 수 있다.
다양한 데이터 세트들(162, 164 및 166)의 예시적 내용은 도 5에 설명되어 있다. 내용의 다른 형태들 및 배열들이 제공될 수 있다. 데이터 객체(162)는 어드레스가능 유닛으로서 관리되고 리퀘스터(호스트)에 의해 공급되는 하나 이상의 데이터 블록들로 형성된다. 따라서, 데이터 객체는 헤더 정보, 사용자 데이터 및 해시 값들과 같은 다른 제어 정보를 포함할 수 있다.
헤더 정보는 데이터 객체에 저장된 사용자 데이터 블록들과 연관되는 논리 어드레스(예를 들어, LBA 값 또는 LBA들의 범위)와 같은 적절한 식별자 정보를 제공한다. 시간/날짜 스탬프 정보 및 상태 정보와 같은 다른 데이터는 헤더에 통합될 수 있다. 해시 값(들)은 기록 증폭의 빠른 거절 처리를 위해, Sha 해시와 같은 적절한 해시 함수를 사용하는 사용자 데이터 블록들로 형성될 수 있다. 예를 들어, 해시 값(들)은 기록 동작 동안 더 새로운 버전의 동일한 LBA에 대한 하나 이상의 해시 값들 또는 LBA들의 범위와 비교될 수 있다. 해시 값들이 일치하면, 더 새로운 버전은 이것이 동일한 사용자 데이터의 복사 세트를 나타낼 수 있으므로 메모리 구조(104)에 저장될 필요가 없을 수 있다.
ECC 데이터(164)는 BCH(Bose, Ray-Chaudhuri and Hocquenghem) 코드들 또는 리드 솔로몬 코드들, LDPC(low density parity check) 코드들, XOR(exclusive-or) 값들, 아웃터코드, IOEDC 값들, 체크섬들, 및 데이터 객체(162)에서 비트 에러들의 선택된 수까지를 검출 및/또는 정정하기 위해 계산될 수 있는 제어 데이터의 다른 형태들과 같은 주기적 에러 정정 코드들과 같은 여러 가지 적절한 형태들을 취할 수 있다. 하나보다 많은 타입의 ECC 코드 데이터는 선택된 데이터 객체에 대한 ECC 데이터 세트로 발생될 수 있다.
ECC 데이터의 크기 및 강도는 데이터 객체의 속성들에 기초할 뿐만 아니라 ECC 데이터가 저장되는 메모리 계층의 속성들(예를 들어, 기록들/소거들/판독들의 수, 에이징, 드리프트 파라미터들 등)에 기초하여 선택된 후에 조정될 수 있다. 일반적으로, ECC 코드 워드의 크기는 일반적으로 ECC 저장 풋프린트(코드레이트)의 크기를 결정한다. 유사하게, 서브코드 워드 입도는 동작 동안 ECC에 따라 판독-수정-기록 동작들의 가능성을 고려하여 선택될 수 있다.
ECC 데이터 세트의 강도는 일반적으로 데이터 비트 에러들의 선택된 수까지를 검출하고, 이용되는 바와 같이 정정할 시에 ECC 데이터 세트가 얼마나 유효한지에 관한 것이다. 더 강한 ECC 데이터 세트는 일반적으로 더 약한 ECC 데이터 세트보다 더 많은 에러들을 검출하고 정정할 것이다.
레이어드(layered) ECC는 ECC 보호를 강화하기 위해 사용될 수 있다. BCH와 같은 제 1 타입의 코드는 데이터 객체에 적용될 수 있다. 그 다음, 리드 솔로몬과 같은 제 2 타입의 코드는 BCH 코드 워드들의 일부 또는 전부에 적용될 수 있다. 다른 계층들은 전체 원하는 강도를 달성하기 위해 적용될 수 있다. ECC의 강도는 연관된 데이터의 저장 특성들에 기초하여 선택될 수 있으며; 강한 성능(높은 내구성, 좋은 유지 특성들, 낮은 데이터 비트 에러들 등)을 입증하는 메모리 계층은 비교적 더 약한 ECC 방식의 사용을 보장할 수 있다는 점이 주목될 것이다. 역으로, 더 오래된, 워언(worn) 및 또는 비교적 낮은 내구성 메모리는 더 강한 ECC의 사용을 보장할 수 있다. 본 실시예들에서 ECC는 데이터 객체들로부터 개별적으로 저장되므로, 유연성은 보호된 데이터 객체들과 동일한 계층에서 ECC를 유지하는 제약 없이 적절한 레벨의 ECC가 적용되는 것을 허용하기 위해 제공된다.
메타데이터 유닛(166)은 장치(100)가 데이터 객체들 및 ECC 데이터를 위치시킬 수 있게 하고 따라서 데이터 객체(DO) 어드레스 정보, ECC 어드레스 정보, 데이터 및 메모리 속성 정보, 하나 이상의 전방향 포인터들 및 상태 값과 같은 다양한 제어 정보를 저장한다. 다른 메타데이터 포맷들이 사용될 수 있다. 어드레스 정보(174)는 각각 데이터 객체(162) 및 ECC 데이터(164)의 물리적 어드레스들을 식별하고, 논리적 대 물리적 어드레스 변환 정보를 또한 제공할 수 있다. 물리적 어드레스는 어느 계층(예를 들어, 도 1의 MEM 1-3)이 데이터 세트를 저장하는지 뿐만 아니라, 행(캐시 라인), 다이, 어레이, 평면, 소거 블록, 페이지, 비트 오프셋, 및/또는 다른 어드레스 값들과 같은 적절한 어드레스 식별자들을 사용하여 데이터 세트가 저장되는 연관된 계층 내의 물리적 위치를 포함할 것이다.
데이터 속성 정보는 상태, 교정 레벨, 타임스탬프 데이터, 워크로드 지시자들 등과 같은 데이터 객체와 연관되는 속성들을 식별한다. 메모리 속성 정보는 데이터 객체 및/또는 ECC 데이터가 저장되는 물리적 위치와 연관되는 파라미터 속성들을 구성한다. 예들은 전체 수의 기록들/소거들, 전체 수의 판독들, 추정된 또는 측정된 효과들, 전하 또는 저항 드리프트 파라미터들, 비트 에러율(BER) 측정들, 에이징 등을 포함한다. 이러한 각각의 속성 세트는 컨트롤러에 의해 유지되며/되거나 이전 메타데이터 엔트리들에 기초하여 갱신될 수 있다.
전방향 포인터들은 메타데이터의 다른 카피들을 메모리 구조(104)에서 참조함으로써 가장 통용되는 버전의 데이터 세트(예를 들어, 데이터 객체 및/또는 ECC 데이터)에 대한 검색을 가능하게 하기 위해 사용될 수 있다. 상태 값(들)은 연관된 데이터 세트의 현재 상태(예를 들어, 스테일, 유효 등)를 표시한다. 원하는 바와 같이, 비교적 작은 메타데이터 ECC 값들은 재판독 동안 메타데이터의 검증을 위해 발생되어 메타데이터 유닛에 추가될 수 있다.
도 6은 일부 실시예들에 따라 동작가능한 장치(100)의 저장 매니저(170)를 도시한다. 저장 매니저(170)는 컨트롤러 기능성의 일부로 형성될 수 있다. 데이터 객체 엔진(172), ECC 엔진(174) 및 메타데이터 엔진(176)을 포함하는 다수의 동작 모듈들을 포함하는 저장 매니저(170)가 도시된다. 이러한 각각의 엔진들 각각은 리퀘스터에 의해 공급되는 데이터 블록들(LBA들)에 대응하여 데이터 객체들, ECC 데이터 및 메타데이터 유닛들을 발생시킨다.
NV-RAM 모듈(178), RRAM 모듈(180), PCRAM 모듈(182), STRAM 모듈(184), 플래시 모듈(186) 및 디스크 모듈(188)을 포함하는 다수의 예시적 계층들을 포함하는 도 1의 다중 계층 메모리 구조(104)는 도 6에 도시된다. 이들은 임의의 수의 상이한 타입들 및 배열들의 메모리 모듈들이 원하는 대로 다양한 계층들에 사용될 수 있으므로 단지 예시적이다.
NV-RAM(178)은 저장된 데이터를 비휘발성 상태로 유지하기 위해 전용 배터리 백업 또는 다른 메커니즘을 갖는 휘발성 SRAM 또는 DRAM을 포함한다. RRAM(180)은 인터페이스를 가로지르는 이온들의 이동에 대응하여 다르게 프로그램된 전기 저항 레벨들에 대한 데이터를 저장하는 저항 감지 메모리 셀들의 어레이를 포함한다. PCRAM(182)은 결정질(저저항)과 비정질(고저항) 사이의 재료의 상 변화들에 기초하여 다르게 프로그램된 저항들을 나타내는 상 변화 저항 감지 메모리 셀들의 어레이를 포함한다.
STRAM(184)은 고정 자기 배향을 갖는 재료의 기준 층 및 가변 자기 배향을 갖는 자유 층으로 구성된 적어도 하나의 자기 터널링 접합을 각각 갖는 저항 감지 메모리 셀들의 어레이를 포함한다. 각각의 MTJ의 유효 전기 저항, 및 따라서 프로그램된 상태는 자유 층의 프로그램된 자기 배향에 대해 설정될 수 있다.
플래시 메모리(186)는 부동 게이트 구조 상의 축적된 전하의 양에 대한 데이터를 저장하는 플래시 메모리 셀들의 어레이를 포함한다. 재기록가능 비휘발성 메모리 셀들을 포함하는 것으로 모두 고려되는 NV-RAM, RRAM, PCRAM 및 STRAM과 다르게, 플래시 메모리 셀들은 새로운 데이터가 기록될 수 있기 전에 소거 동작이 일반적으로 요구되도록 소거가능하다. 플래시 메모리 셀들은 각각의 메모리 셀이 단일 비트(SLC의 경우에) 또는 다수의 비트들(MLC의 경우에)을 저장하도록 SLC들(single level cells) 또는 MLC들(multi-level cells)로 구성될 수 있다. 재기록가능 메모리 계층들 내의 메모리 셀들은 원하는 대로 MLC들로 구성될 수도 있다.
디스크 메모리(188)는 HDD(hard disc drive) 또는 유사한 저장 장치와 같은 자기 회전가능 매체일 수 있다. 다른 형태들의 고체 상태 및/또는 디스크 메모리, 원격 서버 메모리, 휘발성 및 비휘발성 버퍼 층들, 프로세서 캐시들, 중간 캐시들 등을 포함하는 계층들의 다른 시퀀스들, 조합들 및 수들은 원하는 대로 이용될 수 있다.
각각의 계층은 그 자체의 연관된 메모리 저장 속성들(예를 들어, 용량, 데이터 유닛 크기, I/O 데이터 전송 속도들, 내구성 등)을 갖는 것이 고려된다. 가장 높은 순서 계층(예를 들어, NV-RAM(178))은 가장 빠른 I/O 데이터 전송 속도 성능(또는 다른 적절한 성능 메트릭)을 갖는 경향이 있을 것이고 가장 낮은 순서 계층(예를 들어, 디스크(188))은 가장 느린 성능을 갖는 경향이 있을 것이다. 나머지 계층들 각각은 중간 성능 특성들을 거의 순차적인 방식으로 가질 것이다. 계층들의 적어도 일부는 할당 풀로부터 할당되는 가비지 수집 유닛들(GCU들)의 형태로 배열되고, 데이터를 저장하기 위해 사용되며, 후속 재할당을 위한 할당 풀에 리턴되기 전에 가비지 수집 동안 주기적으로 리셋되는 데이터 셀들을 가질 수 있다.
도 6의 저장 매니저(170)에 의해 각각의 데이터 객체, ECC 데이터 및 메타데이터는 상이한 메모리 계층들(178-188)에 저장되는 것으로서 고려된다. 일 예에서, 데이터 객체는 플래시 메모리(186)에 저장되고, 데이터 객체에 대한 ECC 데이터는 RRAM 모듈(180)에 저장되며 메타데이터는 PCRAM 모듈(182)에 저장된다. 적절한 계층은 각각의 데이터 세트를 위해 선택될 것이고, 데이터 세트들은 관찰된 사용 패턴들 및 측정된 메모리 파라미터들에 기초하여 나중에 상이한 계층들에 이동될 수 있다.
도 7은 일부 실시예들에 따른 도 6으로부터의 데이터 객체 엔진(172)을 도시한다. 데이터 객체 엔진(172)은 그러한 것이 메모리 구조(104)에 이전에 저장되었다면, 리퀘스터로부터 데이터 블록(들)(LBA들) 뿐만 아니라, 데이터 블록들의 이전 버전(들)과 연관되는 장치(100)에 저장된 기존 메타데이터(MD)를 수신한다. 데이터베이스(190)에 유지되는 메모리 계층 속성 데이터는 또한 엔진(172)에 의해 이용될 수 있다.
엔진(172)은 데이터 객체에 대한 적절한 포맷 및 위치를 결정하기 위해 데이터 블록(들)을 분석한다. 데이터 객체는 데이터 블록(들)의 내용 뿐만 아니라 데이터 객체와 연관되는 다양한 데이터 관련 속성들을 사용하여 DO 발생기(192)에 의해 발생된다. 계층 선택 모듈(194)은 발생된 데이터 객체를 저장하는 메모리 구조(104)의 적절한 메모리 계층을 선택한다.
전체 데이터 객체 크기를 포함하는 데이터 객체의 배열은 선택된 메모리 계층과 일치될 수 있으며; 예를 들어, 페이지 레벨 데이터 세트들은 저장을 위해 플래시 메모리(186)에 사용될 수 있고 LBA 크기 데이터 세트들은 RRAM, PCRAM 및 STRAM 메모리들(180, 182, 184)에 사용될 수 있다. 다른 유닛 크기들이 사용될 수 있다. 데이터 객체의 유닛 크기는 리퀘스터 레벨에 이용되는 유닛 크기에 대응할 수 있거나 대응하지 않을 수 있으며; 예를 들어, 리퀘스터는 공칭적으로 512 바이트 크기의 사용자 데이터의 블록들을 전송할 수 있다. 데이터 객체들은 이러한 동일 사용자 데이터 용량을 가질 수 있거나, 리퀘스터 블록 크기의 비정수 배수인 양을 포함하는 사용자 데이터의 일부 더 크거나 더 작은 양을 가질 수 있다.
DO 계층 선택 모듈(194)에 의해 식별되는 DO 저장 위치는 데이터 객체(DO)의 저장을 선택된 메모리 계층 내의 표시된 물리적 어드레스에서 관리하기 위해 메모리 모듈(104)에 입력으로서 제공된다. 데이터 객체 및 DO 저장 위치 정보는 또한 ECC 및 메타데이터 엔진들(174, 176)에 전송된다.
도 8에서, ECC 발생기(202) 및 ECC 계층 선택 모듈(204)을 포함하는 ECC 엔진(174)이 도시된다. ECC 엔진(174)은 데이터 객체에 대한 ECC 데이터의 적절한 크기, 강도 및 레벨 뿐만 아니라 ECC 데이터를 저장하는 적절한 메모리 계층을 발생시키기 위해 데이터 객체, 데이터 객체의 물리적 위치(예를 들어, 계층 및 그 안의 물리적 어드레스), 다양한 데이터 객체 관련 속성들, 및 메모리 계층 속성 데이터를 사용한다.
메타데이터(MD) 발생기(212) 및 MD 계층 선택 모듈(214)을 포함하는 도 7로부터의 메타데이터 엔진(176)이 도 9에 도시된다. MD 엔진(176)은 메타데이터 유닛(166)에 대한 포맷, 입도 및 저장 위치를 선택하기 위해 데이터베이스(190)로부터 DO 속성들, DO 저장 위치, ECC 저장 위치, 기존 MD(이용가능하다면) 및 메모리 계층 정보와 같은 다수의 입력들을 사용한다. 일부 경우들에서, 다수의 데이터 객체들 및/또는 ECC 데이터 세트들은 함께 그룹화되고 단일 메타데이터 유닛에 의해 설명될 수 있다.
분리 메모리 위치에 유지되거나 메모리 구조(104)를 통해 분배될 수 있는 MD 테이블(216)과 같은 최고 레벨 MD 데이터 구조는 장래의 참조를 위한 메타데이터의 물리적 위치를 반영하기 위해 갱신될 수 있다. MD 데이터 구조(216)는 논리 어드레스들(예를 들어, LBA들)을 연관된 메타데이터 유닛들에 상관시키는 룩업 테이블의 형태일 수 있다.
ECC 데이터는 데이터 객체들의 크기의 비교적 작은 부분이 되는 경향이 있을 수 있기 때문에, 메모리 구조(104) 내의 더 높은 계층들은, 특히 ECC가 반복적으로 복구되고 갱신되는 비교적 높은 기록 강도 환경들에서, ECC 데이터의 저장을 위한 적절한 위치들일 수 있다. 도 10은 메모리 구조(104)에서의 상부 메모리 계층(220) 내의 ECC 데이터의 저장, 및 메모리 구조에서의 비교적 하부 메모리 계층(222)의 대응하는 데이터 객체의 저장을 이 조건들 하에 예시한다. 각각의 상부 및 하부 계층들(220, 222)은 하부 계층(222)이 상부 계층(220)과 비교하여 메모리 구조(104)의 우선순위 순서에서 낮기만 하면, 도 6의 각각의 예시적 계층들, 또는 다른 메모리 계층들 중 어느 하나에 대응할 수 있다는 점이 이해될 것이다.
역으로, 도 11에 도시된 바와 같이, 비교적 더 작은 ECC 풋프린트 때문에 데이터 객체를 상부 계층(220)에 저장하고 ECC 데이터를 하부 계층(222)에 저장하는 것이 바람직할 수 있다. 대응하는 데이터 객체와 비교하여 ECC 데이터를 메모리 구조(104) 내의 하부 계층에 저장하는 것은 데이터 객체 기록들과 ECC 기록들 사이의 레이트 매칭(rate matching)을 용이하게 할 수 있다.
예를 들어, ECC 데이터는 데이터 객체의 크기의 대략 10%이고, 하부 계층(222)은 상부 계층(220)보다 더 느린 대략 10 배(10X)이면(예를 들어, 하부 계층(222)은 상부 계층(220)의 데이터 전송 속도의 대략 10%인 데이터 I/O 전송 속도를 가짐), 상부 계층(220)에 데이터 객체의 기록과 병렬로 ECC를 하부 계층(222)에 기록하는 것은 양 데이터 세트들을 상부 계층(220)에 기록하는 것보다 더 빠를 수 있다. 이것은 데이터 객체를 상부 계층(220)에 기록하는 경향이 있는 것처럼 ECC 데이터를 하부 계층(222)에 기록하는데 대략 동일한 양의 시간이 걸리고, 둘 다가 추정하건대 동일한 기록 간격 동안 기록될 수 있기 때문이다.
ECC를 더 느린 하부 계층(222)에 저장하는 것은 더 빠른 상부 계층(220)으로부터 데이터 객체를 재판독하는데 필요한 시간 동안 ECC가 하부 계층(222)으로부터 실질적으로 복구될 수 있으므로 재판독 처리 동안 어떤 중요한 레이턴시를 주지 않는다. 또한, ECC를 더 느린 하부 계층(222)에 저장하는 것은 부가 데이터 객체 세트들의 저장을 위한 상부 계층(220)에서 그 공간을 해방시킨다.
본 명세서에 개시된 바와 같은 계층 ECC의 사용(예를 들어, ECC를 연관된 데이터 객체로부터 상이한 계층에 저장하는 것)은 더 큰 코드워드가 ECC 알고리즘들의 더 효율적인 사용을 제공하므로 ECC 데이터 세트의 크기가 효율을 위해 상당히 증가되는 것을 허용한다. ECC의 서브세트가 갱신될 때마다 발생하는 임의의 기록 증폭은 대응하는 데이터 객체를 저장하는 메모리보다 더 큰 내구성을 갖는 메모리에 ECC가 위치될 수 있기 때문에 허용가능하다. 계층 ECC를 제공하는 것은 또한 다수의 플래시 메모리 페이지들을 가로지르는 것과 같이, 상이한 ECC 방향들의 발생을 용이하게 한다. 이용된 ECC 코드워드의 크기 및 강도는 메모리 및 데이터의 저장 및 워크로드 속성들에 기초하여 동적으로 조정될 수 있다. 물론, ECC 데이터를 재기록가능 메모리 계층들에 기록하는 것은 갱신된 버전의 ECC 데이터가 이전 버전의 ECC 데이터 상에 직접 기록됨으로써 이전 버전을 교체할 수 있도록 플레이스 동작들(place operations)의 갱신을 허용한다.
계층 ECC의 다른 이득은 앞서 논의된 바와 같이, 메모리의 전체 계층이 데이터 객체들의 저장에 전용임으로써, 데이터의 속성들에 가장 적절한 위치들에 데이터의 저장을 용이하게 할 수 있다는 것이다. 대안적으로, 주어진 계층은 ECC 데이터(및 메타데이터)가 상이한 계층 내의 데이터 객체들을 설명하는 상태에서, 데이터 객체들 및 ECC 데이터(및 또한 메타데이터)에 대한 전용 공간들을 가질 수 있다. 이것은 저장 매니저가 데이터 저장 계층, ECC 저장 계층, 데이터+ECC 저장 계층 등으로서 메모리 계층의 가장 좋은 이용을 동적으로 선택하는 것을 허용한다. 주어진 계층이 시간에 따라 쇠퇴되고(wear) 저하된 성능을 나타내므로, ECC에 할당된 메모리 계층의 퍼센트는 증가될 수 있다(그리고 더 큰 레벨들의 ECC는 그 계층에 저장된 데이터에 적용될 수 있음). 저장 및 메모리 속성들에 기초한 동적 할당은 또한 국부적인 워크로드 레벨들이 적응적으로 달성되는 것을 허용하여, 캐시 히트들 및 다른 효율적인 데이터 전송들을 개선한다.
일부 경우들에서, 다양한 데이터 세트들(데이터 객체들, ECC 데이터 세트들 및 메타데이터 유닛들)은 동일한 또는 상이한 비교적 더 높은 계층들에 각각 저장될 수 있고, 시간에 따라 현재 버전(유효) 데이터 세트들은 더 낮은 계층들로 순차적으로 이동될 수 있다. 정의에 의해, 시간에 따라 메모리(가비지 수집 유닛과 같은)의 주어진 부분이 스테일(더 오래된 버전) 및 유효(현재 버전) 데이터 둘 다를 가지면, 유효 데이터는 가장 길게 갱신되었던 것에 대해 "가장 오래된" 데이터가 되는 경향이 있을 것이다. 따라서, 유효 데이터 세트들을 가비지 수집 처리 동안 하부 계층으로 강등시키는 것은 각 타입의 데이터가 그 자체의 적절한 레벨을 메모리 구조 내에서 달성하는 것을 허용할 수 있다.
그 후, 데이터 액세스 동작들은 이전 논의에 따른 메모리 구조(104)에 저장된 데이터 객체들, ECC 데이터 및 메타데이터 유닛들에 따라 수행될 수 있다. 도 12는 이전에 저장된 사용자 데이터를 리퀘스터에 리턴시키기 위해 판독 동작 동안 수행될 수 있는 다양한 단계들을 도시한다.
판독 동작 동안, 선택된 LBA, 또는 LBA들의 범위에 대한 판독 요청은 수신되고 MD 데이터 구조(190) 또는 다른 데이터 구조에 대한 액세스를 통해 선택된 LBA(들)와 연관되는 메타데이터를 위치시킴으로써 서비스된다(블록 230). 메타데이터 유닛이 저장되는 물리적 위치가 식별되고 판독 동작은 블록 232에서 로컬 메모리에 대한 메타데이터 유닛을 검색하기 위해 수행된다. 로컬 메모리는 장치(100)의 휘발성 버퍼 메모리일 수 있다.
블록 234에서, 데이터 객체의 물리적 어드레스 및 ECC 데이터의 물리적 어드레스는 메타데이터로부터 추출되고, 이 어드레스들은 데이터 객체 및 ECC 데이터의 카피들을 로컬 메모리로 리턴시키기 위해 각각의 판독 동작들을 수행하도록 블록 236에서 사용된다. 상기 논의된 바와 같이, 이 판독 동작들은 2개의 상이한 메모리 계층으로부터 병렬로 수행될 수 있다.
ECC 데이터는 블록 238에서 비트 에러들을 검출 및/또는 정정하기 위해 복구된 데이터 객체의 적절한 부분들에 적용된다. 복호화 등과 같은 다른 디코딩 단계들은 이 시점에 또한 적용될 수 있다. 그 후, 에러 프리 사용자 데이터 블록들은 블록 240에서 리퀘스터로 리턴되고, 메타데이터 유닛은 연관된 데이터 객체에 대한 판독 카운트의 증가를 반영하기 위해 갱신될 수 있다. 메모리에 관련된 다른 파라미터들은 또한 관찰된 비트 에러율(BER), 증분된 판독 카운트들, 측정된 드리프트 파라미터들 등과 같은 메모리 계층 데이터 구조에 기록될 수 있다. 반드시 요구되는 것은 아니지만, 새로운 갱신 메타데이터 유닛은 전과 같이 동일한 메모리 계층에 유지되는 것이 고려된다.
재기록가능 메모리 계층들의 경우에, 메타데이터(예를 들어, 증분된 판독 카운트, 상태 정보 등)에 대한 새로운 갱신들은 연관된 데이터 객체에 대한 기존 메타데이터 상에 중복 기재될 수 있다. 소거가능 메모리 계층(예를 들어, 플래시 메모리(216))에 저장되는 메타데이터를 위해, 메타데이터 유닛(또는 그것의 일부)은 계층 내의 새로운 위치에 기록을 필요로 할 수 있다.
최종적으로, 판독 동작에 기초하여, 데이터 객체, ECC 데이터 및/또는 메타데이터 유닛의 어느 하나, 일부 또는 전부에 대한 포맷 및/또는 메모리 계층의 조정들은 보증된 것으로서 수행된다(블록 244). 예를 들어, 비교적 높은 관찰 비트 에러율(BER), 저장된 데이터 객체와 연관되는 파라미터들의 검출된 드리프트, 판독 카운트들, 에이징 등과 같은 속성들에 기초하여, 저장 매니저(170)(도 7)는 계속해서 ECC 데이터 레벨을 증가시킬 수 있으며; 예를 들어, LDPC 값은 더 강한 ECC 능력들을 후속 판독 동작 동안 데이터에 따라 제공하기 위해 리드 솔로몬 코드에 의해 증가되거나 대체될 수 있다. 일 실시예에서, ECC 강도는 선택된 수의 판독 비트 에러들이 데이터 객체의 재판독 동안 검출되면 다음 더 높은 레벨로 자동으로 증분된다.
갱신된 ECC 데이터는 전과 같이 동일한 메모리 계층에 저장될 수 있거나, 새로운 계층이 선택될 수 있다. 새로운 계층이 선택되면, 연관된 메타데이터 유닛은 ECC 데이터에 대한 새로운 위치를 반경하기 위해 갱신될 것이다. 다른 조정들이 또한 이루어질 수 있다. 배경 처리는 데이터 객체, ECC 데이터 및 메타데이터에 대한 기존 메모리 계층들 및 포맷들의 지속적인 적합성을 평가하기 위해 각각의 판독 동작(또는 미리 결정된 임계값들 외에 있는 파라미터들을 나타내는 각각의 판독 동작)의 마지막에 수행된다는 점이 주목될 것이다. 부가적으로 및/또는 대안적으로, 유휴 기가들 동안의 주기적 분석은 기존 파라미터 설정들 평가하고 그러한 조정들을 이루기 위해 수행될 수 있다.
주어진 메타데이터 유닛은 빈번한 갱신들을 필요로 하는 부분들이 빈번한 갱신들을 쉽게 수용할 수 있는 한 계층(재기록가능 계층 및/또는 더 큰 내구성을 갖는 계층과 같은)에 저장되고 덜 빈번하게 갱신되는 메타데이터의 더 안정한 부분들이 상이한 계층(소거가능 계층 및/또는 더 작은 내구성을 갖는 계층과 같은)에 유지될 수 있도록 상이한 계층들에 걸쳐 분배될 수 있는 점이 주목된다. 유사하게, ECC 데이터는 상이한 레벨들의 ECC 보호를 데이터 세트들에 제공하기 위해 상이한 계층들에 걸쳐 분배될 수 있다.
도 13은 일부 실시예들에 따라 수행될 수 있는 기록 동작 처리를 도시한다. 메모리 구조(104)에 새로운 데이터의 기록 동안, 기록 커맨드 및 연관된 사용자 데이터 세트는 리퀘스터로부터 장치(100)로 제공되어, 그러한 것이 존재하면 이전에 저장된 가장 통용되는 버전의 데이터를 위치시키도록 초기 메타데이터 룩업 동작을 야기한다(블록 250). 그렇다면, 메타데이터는 검색되고 예비 기록 증폭 필터링 분석은 새롭게 제공된 데이터가 상이한 버전의 데이터를 나타내는 것을 보장하기 위해 블록 252에서 발생할 수 있다.
블록 254에서, 데이터 객체가 발생되고 데이터 객체에 대한 적절한 메모리 계층 레벨이 선택된다. 상기 논의된 바와 같이, 다양한 데이터 및 메모리 관련 속성들은 적절한 메모리 계층을 선택하기 위해 사용될 수 있고, 이 때 그 계층 내의 다음 이용가능 메모리 위치는 데이터 객체의 전송을 위해 할당될 수 있다. 유사한 동작들은 앞서 논의된 다양한 인자들에 기초하여 대응하는 계층들에 대한 적절한 ECC 데이터 및 메타데이터 유닛들을 발생시키기 위해 블록들 256 및 258에서 수행된다. 그 후, 각각의 데이터 객체, ECC 데이터 및 메타데이터 유닛은 블록 260에서 상이한 계층들에 저장된다. 일부 경우들에서, 전송들은 동일한 전체 시간 간격 동안 병렬로 수행될 수 있다.
이전 버전의 데이터 객체, ECC 데이터 및 메타데이터가 메모리 구조(104)에 상주하는 경우에, 이러한 데이터 세트들의 새로운 버전들은 이전 버전들과 동일한 각각의 메모리 계층들에 저장될 수 있거나 저장되지 않을 수 있다는 점이 주목될 것이다. 더 오래된 버전의 데이터 세트들은 새로운 위치의 지점에 오래된 MD 유닛 내의 하나 이상의 전방향 포인터들의 추가에 의해서와 같이, 스테일로 마킹되고 필요에 따라 조정될 수 있다. 이러한 동작은 블록 262에 표시된다.
메타데이터 입도는 대응하는 데이터 객체의 특성들에 기초하여 선택된다. 본 명세서에 사용되는 바와 같이, 입도는 일반적으로 주어진 메타데이터 유닛에 의해 설명되는 사용자 데이터의 유닛 크기를 지칭하며; 메타데이터 입도가 더 작아질수록, 유닛 크기가 더 작아지고 그 역도 또한 마찬가지이다. 메타데이터 입도가 감소할수록, 메타데이터 유닛의 크기가 증가할 수 있다. 이것은 사용자 데이터의 1 메가바이트(MB)를 단일 유닛(큰 입도)으로서 설명하는데 필요한 메타데이터가 사용자 데이터의 그 동일한 1 MB의 각각의 16 바이트(또는 512 바이트 등)(작은 입도)를 개별적으로 설명하는데 필요한 메타데이터보다 상당이 더 작기 때문이다. ECC 데이터는 메타데이터의 입도에 대응하는 적절한 레벨을 갖도록 선택될 수 있다.
도 14는 이전 논의에 따라 수행될 수 있는 가비지 수집 프로세스를 도시한다. 메모리 구조(104) 내의 다양한 메모리 계층들(도 6의 다양한 계층들(178-188)과 같은)의 하나, 일부 또는 전부는 유닛으로서 할당되고 리셋되는 가비지 수집 유닛들(GCU들)로 배열될 수 있다.
GCU들은 선택된 위치에 새로운 데이터의 저장 전에 분리 소거 동작을 필요로 하는, 플래시 메모리와 같은 소거가능 메모리들에 특히 적절하다. GCU들은 더 큰 메모리 공간을, 필요에 따라 할당되고, 리셋되며, 이용가능 할당 풀로 리턴될 수 있는 더 작고 더 관리가능한 부분들로 분할하기 위해 재기록가능 메모리들에 사용될 수도 있다. 소거가능 및 재기록가능 메모리들 둘 다 내의 GCU들의 사용은 메모리 이력 메트릭들 및 파라미터들의 더 좋은 추적을 가능하게 할 수 있고 개선된 레벨 로딩을 제공할 수 있으며; 즉, GCU들은 주어진 계층 내의 메모리 셀들의 전부가 I/O 워크로드의 대부분을 수용하는 하나의 특정 영역에 집중하는 것보다는 오히려, 실질적으로 동일한 일반적인 양의 사용을 기록 데이터에 수용하는 것을 보장하는데 도움이 될 수 있다.
GCU 할당 풀은 도 14의 270에 표시된다. 이것은 새로운 데이터 세트들을 수용하도록 저장 매니저에 의해 선택될 수 있는 다수의 이용가능 GCU들(GCU A, GCU B 및 GCU C로 도 14에 표시됨)을 나타낸다. 할당되면, GCU는 동작 상태 272로 전환되며, 그 동안에 다양한 데이터 I/O 동작들은 앞서 논의된 바와 같이 수행된다. 선택된 시간 기간 후에, GCU는 274로 표시된 바와 같이, 가비지 수집 처리를 받을 수 있다.
가비지 수집 처리는 일반적으로 도 15의 흐름으로 표시된다. GCU(GCU B와 같은)가 단계 280에서 선택된다. 선택된 GCU는 데이터 객체들, ECC 데이터, 메타데이터 유닛들 또는 이 타입들의 데이터 세트들의 3개 모두를 저장할 수 있다. 저장 매니저(170)(도 6)는 어느 것이 유효 데이터를 나타내고 어느 것이 스테일 데이터를 나타내는지를 판단하기 위해 데이터 세트들 각각의 상태를 선택된 GCU에서 검사한다. 스테일 데이터 세트들은 앞서 논의된 바와 같이 메타데이터 또는 다른 데이터 구조들로부터 표시될 수 있다. 스테일 데이터 세트들은 일반적으로 지속적인 저장을 필요로 하지 않는 데이터 세트들을 나타내므로, 폐기될 수 있다는 점이 이해될 것이다. 유효 데이터 세트들은 유지되어야 하며, 예컨대 데이터 세트들은 가장 통용되는 버전의 데이터를 나타내기 때문에, 데이터 세트들은 다른 데이터(예를 들어, 다른 메타데이터 유닛들 등에 포인팅되는 전방향 포인터들을 갖는 메타데이터 유닛들) 등에 액세스하기 위해 요구된다.
선택된 GCU로부터의 유효 데이터 세트들은 단계 282에서 이동된다. 대부분의 경우들에서, 유효 데이터 세트들은 메모리 구조(104) 내의 하부 메모리 계층 내의 새로운 위치에 카피되는 것이 고려된다. 주어진 응용의 요건들에 따라, 유효 데이터 세트들의 적어도 일부는 데이터 액세스 요건들 등에 기초하여 동일한 메모리 계층 내의 상이한 GCU에서 유지될 수 있다. 강등된 데이터의 모두는 동일한 하부 계층에 송신될 수 있거나, 강등된 데이터 세트들의 상이한 것들은 상이한 하부 계층들에 분배될 수 있다는 점이 이해될 것이다.
선택된 GCU 내의 메모리 셀들은 다음에 단계 284에서 리셋된다. 이러한 동작은 메모리의 구성에 의존할 것이다. PCRAM 계층(182)(도 6)과 같은 재기록가능 메모리에서, 예를 들어 GCU 내의 셀들 내의 상 변화 재료는 더 낮은 저항 결정질 상태에 리셋될 수 있다. 플래시 메모리 계층(186)과 같은 소거가능 메모리에서, 소거 동작은 셀들을 소거 상태에 리셋시키기 위해 플래시 메모리 셀들의 부동 게이트들로부터 축적된 전하의 전부를 실질적으로 제거하도록 플래시 메모리 셀들에 적용될 수 있다. 선택된 GCU가 리셋되었다면, GCU는 시스템에 의해 후속 재할당을 보류하는 단계 286에서 GCU 할당 풀로 리턴된다.
이전 논의에 기초하여, 다음 더 낮은 레벨로 ECC 데이터의 이동은 데이터를 하부 계층으로 이동시키고 더 높은 우선순위 데이터의 저장을 위한 기존 계층을 해방시킬 시에 유리할 수 있다는 점이 인식될 수 있다. 강등된 ECC 데이터의 ECC 레벨은 새로운 하부 메모리 계층에 더 잘 적응되는 포맷으로 평가되어 조정될 수 있다.
본 명세서에 사용되는 바와 같이, "소거가능" 메모리 셀들 등은 기록되면, 부동 게이트 구조로부터 축적된 전하를 제거하는 소거 동작을 필요로 하는 플래시 메모리 셀들의 경우에서와 같이, 개재 소거 동작 없이 모든 이용가능 프로그램된 상태들보다 더 적게 재기록될 수 있는 메모리 셀들과 같이 이전 논의와 일치하는 것으로 이해될 것이다. "재기록가능" 메모리 셀들이라는 용어 등은 기록되면, 임의의 초기 데이터 상태(예를 들어, 논리 0, 1, 01 등)을 취할 수 있는 NV-RAM, RRAM, STRAM 및 PCRAM 셀들의 경우에서와 같이, 개재 리셋 동작 없이 모든 다른 이용가능 프로그램된 상태들에 재기록되고 나머지 이용가능 논리 상태들(예를 들어, 논리 1, 0, 10, 11, 00 등) 중 어느 하나에 기록될 수 있는 메모리 셀들과 같이 이전 논의와 일치하는 것으로 이해될 것이다.
본 개시의 다양한 실시예들의 다수의 특성들 및 장점들은 구조적 및 기능적 상세들과 함께, 이전 설명에 진술되었다. 그럼에도 불구하고, 이 상세한 설명은 단지 예시적이고, 변경들은 특히 첨부된 청구항들이 표현되는 용어들의 넓은 일반적 의미에 의해 표시되는 전체 범위까지 본 개시의 원리들 내에서 부분들의 구조 및 배열들에 관하여, 상세히 이루어질 수 있다.

Claims (18)

  1. 방법으로서,
    데이터 객체를 다중 계층 메모리 구조의 제 1 비휘발성 계층에 저장하는 단계;
    상기 데이터 객체 내의 적어도 하나의 비트 에러를 판독 동작 동안 검출하도록 적응되는 ECC 데이터 세트를 발생시키는 단계; 및
    상기 ECC 데이터 세트를 상기 다중 계층 메모리 구조의 다른 제 2 비휘발성 계층에 저장하는 단계를 포함하며,
    상기 제 1 비휘발성 계층은 상기 다중 계층 메모리 구조 내의 제 2 비휘발성 계층보다 더 높은 계층이고,
    상기 제 1 비휘발성 계층은 상기 다중 계층 메모리 구조 내의 제 2 비휘발성 계층의 데이터 I/O 전송 속도 능력보다 더 빠른 데이터 I/O 전송 속도 능력을 가지고,
    이에 의해, 상기 데이터 객체를 상기 제 1 비휘발성 계층에 기록하는 것과 대략 동일한 양의 시간이 상기 ECC 데이터를 상기 제 2 비휘발성 계층에 기록하는데 걸리는,
    방법.
  2. 제 1 항에 있어서,
    상기 제 2 비휘발성 계층은 상기 데이터 객체와 연관되는 데이터 속성 및 상기 제 2 비휘발성 계층과 연관되는 저장 속성에 대응하여 선택되는,
    방법.
  3. 제 1 항에 있어서,
    상기 다중 계층 메모리 구조는 상이한 데이터 전송 속성들을 각각 갖는 복수의 비휘발성 메모리 계층들 및 가장 높은 것에서 가장 낮은 것까지 순차적인 우선순위 순서로 배열되는 대응하는 메모리 셀 구성들을 포함하는,
    방법.
  4. 제 1 항에 있어서,
    상기 저장 단계는 상기 데이터 객체의 크기에 대한 ECC 데이터 세트의 크기에 대응하여 상기 다중 계층 메모리 구조 내의 복수의 이용가능 하부 계층들로부터 상기 제 2 비휘발성 계층을 선택하는 단계를 포함하는,
    방법.
  5. 제 4 항에 있어서,
    상기 저장 단계는 상기 제 1 비휘발성 계층의 데이터 I/O 전송 속도에 대한 제 2 비휘발성 계층의 데이터 I/O 전송 속도에 대응하여 상기 다중 계층 메모리 구조 내의 복수의 이용가능 하부 계층들로부터 상기 제 2 비휘발성 계층을 선택하는 단계를 더 포함하는,
    방법.
  6. 제 1 항에 있어서,
    상기 데이터 객체 및 상기 ECC 데이터 세트는 공통 경과 시간 간격 동안 각각의 제 1 및 제 2 비휘발성 메모리 계층들에 동시에 저장되는,
    방법.
  7. 제 1 항에 있어서,
    상기 데이터 객체는 상기 다중 계층 메모리 구조 내의 저장을 위해 리퀘스터 장치에 의해 공급되는 적어도 하나의 사용자 데이터 블록을 포함하고, 상기 ECC 데이터 세트는 재판독 동작 동안 상기 데이터 블록 내의 적어도 하나의 비트 에러까지를 검출하고 정정하도록 적응되는 코드워드를 포함하는,
    방법.
  8. 제 1 항에 있어서,
    상기 데이터 객체의 저장 위치를 상기 제 1 비휘발성 메모리 계층 내에서 식별하고 상기 ECC 데이터 세트의 저장 위치를 상기 제 2 비휘발성 메모리 계층 내에서 식별하는 어드레스 정보를 포함하는 메타데이터 유닛을 발생시키는 단계를 더 포함하며, 상기 메타데이터 유닛은 상기 다중 계층 메모리 구조 내의 다른 제 3 비휘발성 계층에 저장되는,
    방법.
  9. 제 1 항에 있어서,
    상기 제 1 또는 제 2 계층들 중 선택된 하나는 재기록가능 비휘발성 메모리 셀들을 포함하고 상기 제 1 또는 제 2 계층들 중 나머지 하나는 소거가능 비휘발성 메모리 셀들을 포함하는,
    방법.
  10. 제 1 항에 있어서,
    상기 다중 계층 메모리 구조는 복수의 계층들을 순차적인 순서로 가장 빠른 계층에서 가장 느린 계층까지 제공하고, 상기 제 2 계층은 상기 제 1 계층보다 더 느리고, 상기 방법은 제 2 데이터 객체를 상기 제 1 계층에 저장하고 상기 제 2 데이터 객체 내의 적어도 하나의 비트 에러를 정정하는 대응하는 제 2 ECC 데이터 세트를 제 3 계층에 저장하는 단계를 더 포함하며, 상기 제 3 계층은 상기 제 1 계층보다 더 빠른,
    방법.
  11. 제 1 항에 있어서,
    상기 다중 계층 메모리 구조는 상이한 데이터 저장 속성들을 각각 갖는 복수의 비휘발성 메모리 계층들을 포함하고, 상기 방법은 상기 데이터 객체 및 상기 ECC 데이터 세트의 데이터 저장 속성들을 각각의 제 1 및 제 2 계층들에 일치시킴으로써 상기 제 1 및 제 2 계층들을 선택하는 단계를 더 포함하는,
    방법.
  12. 장치로서,
    상이한 데이터 전송 속성들을 각각 갖는 복수의 비휘발성 메모리 계층들 및 대응하는 메모리 셀 구성들을 포함하는 다중 계층 메모리 구조 ― 상기 메모리 계층들은 가장 빠른 데이터 I/O 데이터 전송 속도 능력에서 가장 느린 데이터 I/O 데이터 전송 속도 능력까지 우선순위 순서로 배열됨 ―; 및
    리퀘스터(requestor)에 의해 공급되는 하나 이상의 데이터 블록들에 대응하여 데이터 객체를 발생시키고, 재판독 동작 동안 상기 데이터 객체 내의 재판독 비트 에러들의 선택된 수까지를 검출하는 ECC 데이터 세트를 발생시키고, 상기 데이터 객체를 상기 다중 계층 메모리 구조의 제 1 선택된 메모리 계층에 저장하며, 그리고 상기 ECC 데이터 세트를 상기 다중 계층 메모리 구조의 다른 제 2 선택된 메모리 계층에 저장하도록 적응되는 저장 매니저를 포함하며,
    상기 제 1 선택된 메모리 계층은 상기 다중 계층 메모리 구조 내의 제 2 선택된 메모리 계층보다 더 높은 계층이고,
    상기 제 1 선택된 메모리 계층은 상기 다중 계층 메모리 구조 내의 제 2 선택된 메모리 계층의 데이터 I/O 전송 속도 능력보다 더 빠른 데이터 I/O 전송 속도 능력을 가지고,
    이에 의해, 상기 데이터 객체를 상기 제 1 선택된 메모리 계층에 기록하는 것과 대략 동일한 양의 시간이 상기 ECC 데이터를 상기 제 2 선택된 메모리 계층에 기록하는데 걸리는,
    장치.
  13. 제 12 항에 있어서,
    상기 저장 매니저는 상기 데이터 객체와 연관되는 데이터 속성 및 상기 제 2 선택된 메모리 계층과 연관되는 저장 속성에 대응하여 제 2 선택된 메모리 계층을 선택하는,
    장치.
  14. 제 12 항에 있어서,
    상기 제 1 선택된 메모리 계층은 비교적 더 빠른 메모리를 포함하고 상기 제 2 선택된 메모리 계층은 비교적 더 느린 메모리를 포함하는,
    장치.
  15. 제 12 항에 있어서,
    상기 제 1 선택된 메모리 계층은 비교적 더 느린 메모리를 포함하고 상기 제 2 선택된 메모리 계층은 비교적 더 빠른 메모리를 포함하는,
    장치.
  16. 제 12 항에 있어서,
    상기 제 1 또는 제 2 선택된 메모리 계층들 중 선택된 하나는 소거가능 비휘발성 메모리를 포함하고 상기 제 1 또는 제 2 선택된 메모리 계층들 중 나머지 하나는 재기록가능 비휘발성 메모리를 포함하는,
    장치.
  17. 제 12 항에 있어서,
    상기 저장 매니저는 상기 데이터 객체의 크기에 대한 ECC 데이터 세트의 크기에 대응하여 상기 다중 계층 메모리 구조 내의 복수의 이용가능 하부 계층들로부터 제 2 선택된 메모리 계층을 선택하는,
    장치.
  18. 제 12 항에 있어서,
    상기 저장 매니저는 상기 데이터 객체의 저장 위치를 제 1 선택된 메모리 계층 내에서 식별하고 상기 ECC 데이터 세트의 저장 위치를 제 2 선택된 메모리 계층 내에서 식별하는 어드레스 정보를 포함하는 메타데이터 유닛을 더 생성하며, 상기 메타데이터 유닛은 상기 다중 계층 메모리 구조 내의 다른 제 3 선택된 계층에 저장되는,
    장치.
KR1020160107694A 2013-02-08 2016-08-24 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장 KR102009003B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/762,765 2013-02-08
US13/762,765 US20140229655A1 (en) 2013-02-08 2013-02-08 Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020140012590A Division KR20140101296A (ko) 2013-02-08 2014-02-04 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장

Publications (2)

Publication Number Publication Date
KR20160105734A true KR20160105734A (ko) 2016-09-07
KR102009003B1 KR102009003B1 (ko) 2019-08-08

Family

ID=51276596

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140012590A KR20140101296A (ko) 2013-02-08 2014-02-04 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장
KR1020160107694A KR102009003B1 (ko) 2013-02-08 2016-08-24 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020140012590A KR20140101296A (ko) 2013-02-08 2014-02-04 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장

Country Status (4)

Country Link
US (1) US20140229655A1 (ko)
JP (1) JP5792841B2 (ko)
KR (2) KR20140101296A (ko)
CN (1) CN103984605B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200137443A (ko) * 2019-05-30 2020-12-09 트럼피아 주식회사 다중 계층 구조의 데이터 접근 제어 시스템 및 방법

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10116336B2 (en) * 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US20160041762A1 (en) 2014-08-08 2016-02-11 Kabushiki Kaisha Toshiba Memory system, host device and information processing system
GB2529669B8 (en) 2014-08-28 2017-03-15 Ibm Storage system
US9436397B2 (en) 2014-09-23 2016-09-06 Sandisk Technologies Llc. Validating the status of memory operations
US10176117B2 (en) * 2014-10-01 2019-01-08 Cacheio Llc Efficient metadata in a storage system
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9558125B2 (en) 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
US9817752B2 (en) * 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) * 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9753653B2 (en) 2015-04-14 2017-09-05 Sandisk Technologies Llc High-priority NAND operations management
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US20160316450A1 (en) * 2015-04-22 2016-10-27 Pebble Technology Corp. Living notifications
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US9563505B2 (en) 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US9836349B2 (en) 2015-05-29 2017-12-05 Winbond Electronics Corp. Methods and systems for detecting and correcting errors in nonvolatile memory
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
KR101694774B1 (ko) * 2015-11-04 2017-01-10 최승신 원타임 키패드를 이용한 이동식 메모리 보안 시스템 및 방법
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US10019367B2 (en) 2015-12-14 2018-07-10 Samsung Electronics Co., Ltd. Memory module, computing system having the same, and method for testing tag error thereof
KR102491651B1 (ko) 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US9787624B2 (en) 2016-02-22 2017-10-10 Pebble Technology, Corp. Taking actions on notifications using an incomplete data set from a message
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10073732B2 (en) 2016-03-04 2018-09-11 Samsung Electronics Co., Ltd. Object storage system managing error-correction-code-related data in key-value mapping information
US10459793B2 (en) 2016-03-17 2019-10-29 Western Digital Technologies, Inc. Data reliability information in a non-volatile memory device
US9977626B2 (en) * 2016-06-30 2018-05-22 Seagate Technology Llc Implementing scattered atomic I/O writes
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
CN107817946B (zh) * 2016-09-13 2021-06-04 阿里巴巴集团控股有限公司 用于混合存储设备读写数据的方法以及装置
CN106598730B (zh) * 2016-11-24 2020-06-12 上海交通大学 基于非易失性内存的可在线恢复对象分配器设计方法
US10769013B1 (en) * 2018-06-11 2020-09-08 Cadence Design Systems, Inc. Caching error checking data for memory having inline storage configurations
JP2019215662A (ja) * 2018-06-12 2019-12-19 株式会社日立製作所 不揮発性メモリデバイス、及びインターフェース設定方法
KR102549346B1 (ko) 2018-07-24 2023-06-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메타 데이터 액세스 방법
KR20200017664A (ko) * 2018-08-09 2020-02-19 삼성전자주식회사 저장 장치의 데이터 액세스 방법, 데이터 관리 방법 및 이를 수행하는 저장 장치
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US10963336B2 (en) 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11200118B2 (en) * 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
CN116594924B (zh) * 2023-05-19 2023-10-24 无锡众星微系统技术有限公司 一种片上ecc存储器的访问方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980024690A (ko) * 1996-09-18 1998-07-06 아사무라 다카시 다중레벨 반도체 장치 및 그에 대한 데이터 기입/판독 방법과이 데이터 판독/기입을 위한 프로그램 코드가 저장된 저장 매체
US20090037644A1 (en) * 2007-07-31 2009-02-05 Seagate Technology, Llc System and Method of Storing Reliability Data
US20120117303A1 (en) * 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
KR20120119092A (ko) * 2011-04-20 2012-10-30 삼성전자주식회사 반도체 메모리 시스템 및 이의 구동 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10111839A (ja) * 1996-10-04 1998-04-28 Fujitsu Ltd 記憶回路モジュール
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US8458562B1 (en) * 2008-12-30 2013-06-04 Micron Technology, Inc. Secondary memory element for non-volatile memory
US8341339B1 (en) * 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US20120173921A1 (en) * 2011-01-05 2012-07-05 Advanced Micro Devices, Inc. Redundancy memory storage system and a method for controlling a redundancy memory storage system
JP5703939B2 (ja) * 2011-04-28 2015-04-22 株式会社バッファロー 記憶装置、コンピュータ装置、コンピュータの制御方法、およびコンピュータプログラム
US9021337B1 (en) * 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980024690A (ko) * 1996-09-18 1998-07-06 아사무라 다카시 다중레벨 반도체 장치 및 그에 대한 데이터 기입/판독 방법과이 데이터 판독/기입을 위한 프로그램 코드가 저장된 저장 매체
US20090037644A1 (en) * 2007-07-31 2009-02-05 Seagate Technology, Llc System and Method of Storing Reliability Data
US20120117303A1 (en) * 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
KR20120119092A (ko) * 2011-04-20 2012-10-30 삼성전자주식회사 반도체 메모리 시스템 및 이의 구동 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200137443A (ko) * 2019-05-30 2020-12-09 트럼피아 주식회사 다중 계층 구조의 데이터 접근 제어 시스템 및 방법

Also Published As

Publication number Publication date
CN103984605A (zh) 2014-08-13
KR102009003B1 (ko) 2019-08-08
JP2014154167A (ja) 2014-08-25
JP5792841B2 (ja) 2015-10-14
CN103984605B (zh) 2018-03-30
KR20140101296A (ko) 2014-08-19
US20140229655A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
KR102009003B1 (ko) 다중 계층 메모리 구조에 에러 정정 코드(ecc) 데이터의 저장
US10430084B2 (en) Multi-tiered memory with different metadata levels
US9201728B2 (en) Memory device with variable code rate
US20140229654A1 (en) Garbage Collection with Demotion of Valid Data to a Lower Memory Tier
US20210182166A1 (en) Zoned namespace management of non-volatile storage devices
US9043668B2 (en) Using ECC data for write deduplication processing
US8738846B2 (en) File system-aware solid-state storage management system
US9959059B2 (en) Storage error management
US8799747B2 (en) Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US20140244897A1 (en) Metadata Update Management In a Multi-Tiered Memory
JP5918284B2 (ja) メモリセルの抵抗偏移を逆転させるためのバイアス信号のメモリセルへの印加
US9158681B1 (en) Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
US11200162B2 (en) Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
US9058870B2 (en) Hash functions used to track variance parameters of resistance-based memory elements
CN111078131A (zh) 使用交叉写入分开晶片平面
US20160011782A1 (en) Semiconductor storage
CN107003942A (zh) 对用于增强存储设备的性能和持久性的解除映射命令的处理
JP2015201204A (ja) データ記憶装置におけるデータ保全性管理
CN103377010A (zh) 管理数据存储系统中的不可靠存储器
TWI625626B (zh) 管理記憶體裝置中記憶體單元的實體資訊的方法及系統
CN108399110B (zh) 高容量固态驱动器中的软信息管理
US9524112B2 (en) Process and apparatus to reduce declared capacity of a storage device by trimming
US9563362B2 (en) Host system and process to reduce declared capacity of a storage device by trimming

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right