KR20130132651A - 미세 단위 메모리 스페어링을 위한 방법 및 시스템 - Google Patents

미세 단위 메모리 스페어링을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20130132651A
KR20130132651A KR1020137027251A KR20137027251A KR20130132651A KR 20130132651 A KR20130132651 A KR 20130132651A KR 1020137027251 A KR1020137027251 A KR 1020137027251A KR 20137027251 A KR20137027251 A KR 20137027251A KR 20130132651 A KR20130132651 A KR 20130132651A
Authority
KR
South Korea
Prior art keywords
address
block
line
spare
memory
Prior art date
Application number
KR1020137027251A
Other languages
English (en)
Other versions
KR101603004B1 (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 KR20130132651A publication Critical patent/KR20130132651A/ko
Application granted granted Critical
Publication of KR101603004B1 publication Critical patent/KR101603004B1/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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

비휘발성 메모리(48)에서의 미세 단위 스페어링을 위한 방법 및 시스템이 개시된다. 시스템(10)은, 복수의 블록, 복수의 태그(110), 복수의 스페어링된 라인(102)을 갖는 메모리(48) 및 복수의 머신 어드레스(76)를 가지는 테이블(74)을 포함하며, 여기서 각 태그(110)는 복수의 스페어링된 라인(102) 중 하나에 대응하고, 각 머신 어드레스(76)는 복수의 블록의 각 블록(84)에 대한 스페어링 영역(100)에 대응한다. 미세 단위의 스페어링 시스템(70, 100)의 동작 방법 또한 개시된다.

Description

미세 단위 메모리 스페어링을 위한 방법 및 시스템{SYSTEMS AND METHODS FOR FINE GRANULARITY MEMORY SPARING}
본 발명은 미세 단위 메모리 스페어링을 위한 방법 및 시스템에 관한 것이다.
이 섹션은 독자에게 다양한 양태의 기술을 소개하고자 하는 것으로, 이는 아래에서 설명되거나 청구되는 본 발명의 다양한 양태들에 관한 것일 수 있다. 이 논의는 독자에게 본 발명의 다양한 양태들에 관한 더 나은 이해를 돕기 위한 배경 정보를 제공하는 것으로 도움이 될 것이라 생각한다. 따라서, 이 관점에서 이러한 서술들을 읽어야 하며, 종래 기술에 대한 시인으로서 읽지 않아야 한다는 것이 이해되어야 한다.
컴퓨터 시스템은 전반적으로 다양한 컴퓨팅 기능을 제공하기 위한 많은 구성에서 사용된다. 예를 들어, 컴퓨터 시스템은 개인 컴퓨터 시스템(예를 들어, 데스크톱 및 랩톱 컴퓨터), 뿐만 아니라 상업 시스템(예를 들어, 서버 또는 산업용 컴퓨터)을 포함할 수 있다. 이러한 시스템 각각은 신뢰성 있는 컴퓨팅 전력 및 대역폭을 제공하기 위해 상호작용하는 복수의 컴포넌트들에 의존할 수 있다. 예를 들어, 컴퓨터 시스템은 효율적으로 동작하도록 프로세서, 메모리, 입/출력 디바이스, 디스크 드라이브, 전력 공급기, 팬(fans) 등의 조합을 이용할 수 있다.
도 1은 본 발명의 일 실시예에 따른 프로세서 기반 시스템에 관한 블록도이다.
도 2는 본 발명의 일 실시예에 따라 메모리에 대한 논리적-물리적 어드레스 변환에 관한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 스페어링 테이블 룩업에 관한 블록도이다.
도 4는 본 발명의 일 실시예에 따른 스페어링 영역에 관한 블록도이다.
도 5는 본 발명의 다른 실시예에 따른 스페어링 테이블 룩업에 관한 블록도이다.
도 6은 본 발명의 일 실시예에 따른 스페어링 영역에 관한 블록도이다.
도 7은 본 발명의 일 실시예에 따른 "배드" 블록에 관한 블록도이다.
도 8은 본 발명의 일 실시예에 따른 스페어링 색인 버퍼에 관한 블록도이다.
도 9는 본 발명의 일 실시예에 따른 미세 단위 스페어링 시스템에 관한 블록도이다.
본 발명에 관한 하나 이상의 실시예들이 아래에서 설명될 것이다. 이러한 실시예들에 관한 간결한 설명을 제공하기 위해, 실제 구현의 모든 피쳐들이 본 명세서에 설명되지는 않는다. 임의의 그러한 실제 구현에 관한 개발에 있어, 임의의 엔지니어링 또는 설계 프로젝트로서, 많은 구현-구체적인 결정은, 하나의 구현에서부터 다른 구현까지 달라질 수 있는 시스템 관련 및 비지니스 관련 제한사항의 준수와 같은 개발자의 특정 목적을 달성하기 위해 행해져야 한다는 것을 유념해야 한다. 더욱이, 그러한 개발 노력은 복잡하고 시간 소모적일 수 있으나, 그럼에도 불구하고 본 개시물의 이점을 취하는 당업자들에 있어서 설계, 공정, 및 제조에 관한 루틴한 일일 것임을 유념해야 한다.
다양한 메모리 기술은, 휘발성 및 비휘발성 메모리와 같이, 컴퓨터 시스템에서 사용될 수 있다. 비휘발성 메모리의 몇몇 유형은 공정 시 결함 영역(defective areas)을 가질 수 있거나 사용 후에 결함을 가지게 될 수 있다. 예를 들어, 그러한 메모리는 제조 결함을 가질 수 있고 또는 마모된 영역을 갖거나 시간이 지남에 따라 결함을 가지게 될 수 있다. 그러한 메모리는 결함 영역을 대체하는데 사용될 수 있는 스페어 부분(spare portions)을 포함할 수 있다. 전형적으로, 스페어 영역은 "코스(coarse)" 레벨에서 제공되고 퓨즈를 블로윙함(blowing)으로써 영구적으로 활성화된다. 그러나, 스페어 부분을 리매핑(remap)하도록 퓨즈를 블로윙하는 것은 어떤 유동성도 제공하지 않는다. 퓨즈를 블로윙하는 것에 대한 대안, 가령 "소프트-퓨즈"는 전력 사이클마다 스페어 부분의 리매핑을 재발견해야 하고 비휘발성 메모리에 부적합하다.
본 발명의 실시예들은 미세-단위 메모리 동작(fine-grained memory operations)을 가능하게 하는 비휘발성 메모리를 위한 미세-단위 스페어링 시스템(fine-grained sparing system)을 포함한다. 미세-단위 스페어링 시스템은 스페어링을 요구하는 블록의 라인들에 대한 스페어링 데이터만을 제공하는 스페어링 테이블을 포함한다. 일부 실시예들에서, 스페어링 색인 버퍼(a sparing lookaside buffer)는 블록에 대한 스페어링 정보의 검색을 위해 제공된다. 추가적으로, 일부 실시예들은 블록의 스페어링 영역 내 스페어링 태그 정보의 배치(arrangement) 또는 결함("배드(bad)") 블록 내 스페어 라인 및 스페어링 태그 정보의 배치를 포함할 수 있다.
이제 도면들을 살펴보면, 도 1은 전반적으로 참조 번호 10으로 지정된 프로세서 기반 시스템을 도시하는 블록도이다. 시스템(10)은 컴퓨터, 태블릿 컴퓨터, 페이저, 휴대 전화(예를 들어, 스마트폰), 전자 수첩(personal organizer), 제어 회로 등과 같은 임의의 다양한 유형일 수 있다. 전형적인 프로세서 기반 시스템에서, 마이크로프로세서와 같은 하나 이상의 프로세서(12)는 시스템(10) 내 요청과 시스템 기능의 프로세싱을 제어한다.
시스템(10)은 전형적으로 다수의 컴포넌트를 포함한다. 예를 들어, 예증의 실시예에서, 시스템(10)은 전력 공급기(power supply)(14)를 포함한다. 시스템(10)이 이동형 시스템인 경우, 전력 공급기(14)는 영구 배터리, 대체가능 배터리, 및/또는 충전 배터리를 유리하게 포함할 수 있다. 전력 공급기(14)는 또한 AC 어뎁터를 포함할 수 있고, 그래서 시스템(10)은 예를 들어, 벽부착 접속구(wall outlet)에 플러깅될 수 있다. 전력 공급기(14)는 또한 DC 어뎁터를 포함할 수 있고 이로써 시스템(10)은, 예를 들어, 차량 담배 라이터에 플러깅될 수 있다. 다양한 다른 디바이스들은 시스템(10)이 수행하는 기능에 따라 프로세서(12)에 연결될 수 있다. 예증된 실시예에서, 사용자 인터페이스(16)는 프로세서(12)에 연결된다. 사용자 인터페이스(16)는, 예를 들어, 버튼, 스위치, 키보드, 라이트 펜, 마우스, 및/또는 음성 인식 시스템을 포함할 수 있다. 디스플레이(18)는 예증의 실시예에서 프로세서(12)에 연결된다. 디스플레이(18)는, 예를 들어, LCD 디스플레이, CRT, LED, 및/또는 오디오 디스플레이를 포함할 수 있다. 더욱이, RF 서브 시스템/베이스밴드 프로세서(20)는 프로세서(12)에 연결된다. RF 서브 시스템/베이스밴드 프로세서(20)는 RF 수신기 및 RF 전송기(미도시)에 연결되는 안테나를 포함할 수 있다. 통신 포트(22)는 또한 프로세서(12)에 연결된다. 통신 포트(22)는, 모뎀, 프린터, 컴퓨터와 같은 주변 디바이스(24)에 연결되거나, 예를 들어, 근거리 통신망(local area network), 원거리 통신망(remote area network), 인트라넷, 또는 인터넷과 같은 네트워크에 연결되도록 구성될 수 있다.
프로세서(12)는 일반적으로 메모리 내 저장된 소프트웨어 프로그램을 실행함으로써 시스템(10)을 제어한다. 메모리는 다양한 프로그램을 저장하고 실행할 수 있도록 프로세서(12)에 동작가능하게 연결된다. 예를 들어, 프로세서(12)는 동적 랜덤 액세스 메모리(DRAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있는 휘발성 메모리(26)에 연결될 수 있다. 휘발성 메모리(26)는 로딩된 애플리케이션 및 데이터를 동적으로 저장할 수 있다.
프로세서(12)는 또한 비휘발성 메모리(28)에 연결될 수 있고 메모리 컨트롤러(29)를 통해 비휘발성 메모리(28)와 통신할 수 있다. 메모리 컨트롤러(29)는 프로세서(12)와 통합될 수 있거나 별도의 컴포넌트일 수 있다. 비휘발성 메모리(28)는 상 변화 메모리(phase change memory: PCM) 및/또는 멤리스터 메모리(memristor memory)를 포함할 수 있다. 다른 실시예들에서, 비휘발성 메모리(28)는 자기저항식(magnetoresistive) 메모리(MRAM), 강유전성(ferroelectric) 메모리(FeRAM), 저항(resistive) 메모리(RRAM), FE 폴리머 메모리, 폴리머 메모리, 및 스핀 전달 토크 메모리(STTRAM)를 포함할 수 있다. 추가적으로, 비휘발성 메모리(28)는 EPROM과 같은 읽기 전용 메모리(ROM), 및/또는 휘발성 메모리와 결합하여 사용될 플래시 메모리를 포함할 수 있다. ROM의 크기는 전형적으로 임의의 운영 체계, 애플리케이션 프로그램 및 고정 데이터를 저장하기에 충분히 크도록 선택된다. 추가적으로, 비휘발성 메모리(28)는 테이프 드라이브 또는 하드 디스크 드라이브를 포함할 수 있다.
비휘발성 메모리(28)는, 메모리의 일부 부분이 사용할 수 없거나 사용할 수 없게 되는 경우에, "스페어(spare)" 블록, 라인 등과 같은 여분의 스토리지와 함께 제조될 수 있다. 그러한 기술은 "스페어링(sparing)"으로 지칭될 수 있으며, 스페어 블록, 스페어 라인 그룹 등은 "스페어링 영역"으로 지칭될 수 있다. 그러한 메모리에서, 메모리(28)의 스페어 부분은 결함 부분을 대체하도록 배치될 수 있고, 메모리의 사용 수명 및/또는 유효 제조 수율을 증가시킨다.
일부 비휘발성 메모리(28), 가령 PCM 및 멤리스터 메모리는, 코스 레벨(a carse levle), 예를 들어, 블록 레벨에서의 스페어링과 대조적으로 미세 레벨, 예를 들어, 라인 레벨에서의 스페어링을 허용할 수 있다. 그러나, "코스 레벨"에서 스페어 부분을 제공하는 것은 엄청나게 커다란 스페어링 부분을 야기할 수 있다. 본원에서 사용되는 바와 같이, 용어 블록(또한 "페이지"로 지칭됨)은 4kB와 같은 메모리의 상대적으로 큰 유닛을 지칭한다. 일부 실시예들에서, 블록은 512kB, 256kB 등과 같이 4kB보다 더 클 수 있거나 4kB보다 작을 수 있다. 본원에서 사용되는 바와 같이, 용어 라인(또한 "행(row)"으로 지칭됨)은 블록보다 더 작은 메모리의 유닛을 지칭하며 개별적으로 쓰기가능하고 업데이트가능하다. 일부 실시예들에서, 라인은, 가령 프로세서(12)로부터의 데이터 버스의 폭을 맞추기 위해, 64바이트일 수 있다. 다른 실시예들에서, 라인은, 64바이트보다 예를 들어 1바이트 만큼 더 작을 수 있거나, 64바이트보다 예를 들어 1kB까지 더 클 수 있다. 일부 실시예들에서, 비휘발성 메모리(28)는 서브라인에서 어드레싱될 수 있다. 본원에서 사용되는 바와 같이, 용어 "서브-라인"은, 라인보다 더 작은 유닛을 지칭하고, 반드시 독립적으로 쓰기가능해야 하는 것은 아니지만, 별도로 어드레싱될 수 있다. 일부 실시예들에서, 서브 라인은 1kB일 수 있다.
위에서의 논의에 기초하여, 비휘발성 메모리(28)를 위한 메모리 어드레스는 블록 부분(또한 "블록 어드레스"로 지칭됨), 라인 부분(또한 "라인 어드레스"로 지칭됨)을 포함할 수 있고, 일부 실시예들에서 서브 라인 부분(또한 "서브 라인 어드레스")을 포함할 수 있으며, 이는 각 블록, 라인 및 서브 라인을 선택하는 어드레스 내 숫자를 나타낸다. 아래에서 논의되는 실시예들에서의 예증의 목적을 위해, 어드레스는 10비트 블록 어드레스, 6비트 라인 어드레스, 및 6비트 서브 라인 어드레스를 가지는 26비트 어드레스를 포함할 수 있다. 실시예들은 더 긴 어드레싱 스킴, 즉, 26비트보다 더 큰 어드레싱 스킴을 가지고, 더 많은 블록, 라인, 서브라인 등을 가지는 메모리를 포함할 수 있다는 것을 유념해야 한다.
도 2 내지 도 7은, 미세 레벨에서 스페어링하지만 통상적인 테이블 기반 매핑보다 더 적은 상태를 사용하는 유연성 있는 리매핑을 제공하는 미세 단위 스페어링 시스템을 묘사한다. 아래에서 설명되는 스페어링 시스템은, 위에서 논의된 PCM 및 멤리스터 메모리와 같은 미세 단위 쓰기(write)를 허용하는 비휘발성 메모리에 대하여 특히 이점이 있다. 후술되는 미세 단위 스페어링 시스템의 일부 컴포넌트들은 비일시적 유형의 머신 판독가능 매체, 및/또는 하드웨어상에 저장된 명령어로 실행될 수 있다. 그러한 비일시적 유형의 머신 판독가능 매체는 메모리 컨트롤러(29)의 일부일 수 있고, 그러한 하드웨어는 메모리 컨트롤러(29)의 일부 또는 별도의 컴포넌트일 수 있다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리(28)에 대한 액세스 스킴을 도시한다. 논리적 어드레스(32)는 메모리 버스를 거쳐 메모리 컨트롤러로 제공될 수 있고 블록 부분(34), 라인 부분(36), 및 서브 라인 부분(38)을 포함할 수 있다. 메모리 컨트롤러는 논리적 어드레스(32)를 비휘발성 메모리(28)의 특정 위치에 대응하는 물리적 어드레스(44)로 변환하는 변환 계층(a translation layer)(40)을 포함할 수 있다. 변환 계층(40)은, 논리적 어드레스(32)를 수신하고, 가령 도 2에 도시된 바와 같이, 예를 들어, 블록 0 내지 블록 n을 특정하는 것과 같이 블록 어드레스를 특정함으로써 비휘발성 메모리(28)를 액세스하기 위한 물리적 어드레스(44)를 제공한다. 일부 실시예들에서, 변환 계층(40)은 논리적 블록-물리적 블록 변환 로직(logical-block-to-physical-block translation logic)(46)을 통해 논리적 어드레스(32)의 블록 부분(34)을 변환할 수 있다. 그러한 일 실시예에서, 변환 계층(34)은 라인 부분(36) 및 서브 라인 부분(38)과 같은 논리적 어드레스(32)의 다른 부분을 지나갈 수 있다.
도 3은 본 발명의 일 실시예에 따른 스페어링 테이블 룩업(a sparing table lookup)(50)을 도시한다. 전술된 바와 같이, 스페어링 테이블 룩업(50)은 메모리 컨트롤러(29)에 저장될 수 있고 그 일부일 수 있다. 스페어링 테이블 룩업(50)은 물리적 어드레스(44)의 블록 어드레스(52)를 스페어링 영역의 머신 어드레스(54)로 변환한다. 예를 들어, 도 3에 도시된 바와 같이, 1024 블록 메모리의 블록 0 내지 블록 1023 각각은 스페어링 테이블 룩업(50) 내 행에 대응할 수 있다. 물리적 어드레스(44)로부터 판정된 각 블록에 대하여, 스페어링 테이블 룩업(50)은 대응 머신 어드레스, 예를 들어, 0xAFAD4..., 0xAF2439..., 등을 포함할 수 있다. 머신 어드레스(54)는 물리적 어드레스에 대하여 스페어링 영역의 블록의 머신 어드레스를 제공한다. 아래에서 설명되는 바와 같이, 스페어링된 블록에 대한 스페어 라인은 스페어링 영역 자체로부터 판정될 수 있다.
도 4는 본 발명의 일 실시예에 따른 스페어링 영역(56)에 관한 일 실시예를 묘사한다. 스페어링 영역(56)은 블록 내 4개의 스페어 라인(58)을 포함할 수 있으나, 이는 단지 예증이며 다른 실시예들은 블록 내 더 많거나 더 적은 스페어 라인을 포함할 수 있다는 것을 유념해야 한다. 스페어링 영역(56)은 일반적인 데이터를 저장하는데 사용되지 않는 비휘발성 메모리(28)의 물리적 블록 내 저장될 수 있다(그러나 일부 실시예들에서 스페어링 영역은 마모 레벨링 알고리즘(wear leveling algorithms)에 따라 순환될 수 있음).
스페어링 영역(56)의 4개의 라인(58)은 4개의 행(60) 내에 배치될 수 있다. 각 행(60)은 유효 비트(62), 태그(64), 및 스페어 라인들(58) 중 하나를 포함할 수 있다. 유효 비트(62)는 스페어링 영역(56)의 라인(58)이 사용되었는지를 나타내는데, 예를 들어, 라인이 사용된 경우 "1"이고 사용되지 않은 경우 "0"이다. 태그(64)는 각 행이 대응하는 라인 어드레스를 표시한다. 스페어 라인(58)은 스페어링되고 있는 라인을 위한 대체 라인이다. 따라서, 물리적 어드레스(44)의 블록이, 가령 도 3의 스페어 룩업 테이블(50)에서, 스페어링된 것으로 판정되면, 물리적 어드레스의 라인 어드레스는 스페어링 영역(56)과 비교될 수 있다. 태그(64) 중 하나가 물리적 어드레스(44)의 라인 어드레스와 매치되는 경우, 그 행(row)의 스페어 라인(58)은 물리적 어드레스(44)에 특정된 원래 라인 대신 메모리 동작에 사용된다. 따라서, 물리적 어드레스(44)에 의해 식별된 라인은 "스페어링된 라인(spared line)"이라 지칭될 수 있다.
도 3에 도시된 바와 같이, 물리적 어드레스(44)의 블록 어드레스(52)는 우선 스페어링 테이블 룩업(50)에서 매칭될 수 있다. 그 블록 어드레스를 위한 스페어링된 블록이 판정된다면, 물리적 어드레스(44)의 라인 어드레스는 도 4의 스페어링 영역(56)과 비교된다. 예를 들어, 물리적 어드레스의 라인 어드레스가 111111이라면, 이 라인 어드레스는 "1"인 유효 비트(62)를 포함하는 스페어링 영역(50)의 각 행(60)과 비교된다. 도 4에 도시된 바와 같이, 이 물리적 어드레스 111111은 행 66에 매치되며, 그래서 행(66)의 스페어 라인(68)은 라인 어드레스 111111에서의 라인 대신 메모리 동작을 위해 사용될 것이다.
다른 실시예들에서, 더 효율적인 스페어링 룩업 로직이 사용될 수 있다. 도 5는 본 발명의 다른 실시예에 따라 필터(72)를 가진 스페어링 테이블 룩업(70)을 묘사한다. 전술된 바와 같이, 스페어링 테이블 룩업(70)은 메모리 컨트롤러(29)에 저장될 수 있고 메모리 컨트롤러의 일부일 수 있다. 스페어링 테이블 룩업(70)은 필터(72)를 포함하여 물리적 어드레스의 블록이 스페어링이 필요하지 않은지 그리고 대응하는 스페어링 영역을 갖지 않는지를 표시한다. 따라서 필터(72)는 스페어링 테이블 룩업(70)에 의해 수신되는 블록마다 스페어링 영역 어드레스를 반환하는 것을 방지한다. 스페어링 테이블 룩업(70)은 또한 스페어링 룩업에 대한 추가 정보를 제공하는 수정된 스페어링 테이블(a modified sparing table)(74)을 포함할 수 있다. 도 5에 도시된 바와 같이, 스페어링 테이블(74)은 스페어링 영역 어드레스(76), 사용됨 비트(78), 및 크기(80)를 포함할 수 있다.
전술된 바와 같이, 스페어링 영역 룩업(70)은 스페어링된 블록, 예를 들어, 블록 0 내지 1023에 대한 스페어링 영역의 머신 어드레스를 제공하는 스페어링 영역 어드레스(76)를 포함할 수 있다. 스페어링 영역 룩업(70)의 사용됨 비트(78)는, 가령 영역이 사용되고 있다면 "1"을, 영역이 사용되고 있지 않다면 "0"을 제공함으로써, 스페어링 영역이 사용되고 있는지를 나타낸다. 마지막으로, 스페어링 테이블(74)의 크기(80)는 스페어링 영역 어드레스(76)에서의 스페어링 영역의 크기를 제공한다. 스페어링 테이블(74)의 크기(80)는 가변 크기의 스페어링 영역을 허용하고 스페어링 영역 룩업(70)에 그 정보를 제공한다.
도 5를 참조하여, 스페어링 영역 룩업(70)의 동작이 아래에서 설명된다. 스페어링 영역 룩업(70)은 물리적 어드레스(84)의 블록 부분(82)을 머신 어드레스(86)로 변환한다. 스페어링 영역 룩업(70)은 또한 사용된 스페어링 영역 표시자(88) 및 스페어링 영역 크기(90)를 출력한다. 스페어링 영역 룩업(70)은 물리적 어드레스(84)의 블록 어드레스(82)를 수신하고 필터(72)를 통해 블록 어드레스(82)를 우선 프로세싱한다. 일 실시예에서, 필터(72)는 블룸 필터(a bloom filter)이다. 필터(72)는 블록 어드레스(82)에 의해 식별된 블록이 스페어링 영역을 갖는지 갖지 않는지를 표시할 수 있다. 필터(72)는 표시자로 "스페어를 갖는가?(has spare?)" 비트(92)를 출력할 수 있다. 후술되는 바와 같이, "스페어를 갖는가?" 비트가 AND 게이트(94)로 제공될 수 있다. 다른 실시예들에서, 스페어링 데이터는, 도 2의 변환 계층(40)과 같은 논리적-물리적 변환(logical-to-physical translation) 내에 위치될 수 있고, 이로써 스페어링 정보는 논리적-물리적 변환과 동시에 제공된다.
블록 어드레스(82)는 스페어링 테이블(74)에 제공될 수 있고, 이는 블록 어드레스(82)를 스페어링 영역의 머신 어드레스(76)로 변환한다. 예를 들어, 도 5에 도시된 바와 같이, 1024 블록 메모리의 블록 0 내지 1023 각각은 스페어링 테이블(74) 내 행에 대응할 수 있다. 물리적 어드레스(84)로부터 판정된 각 블록에 대하여, 스페어링 테이블(70)은 0xAFAD4, 0x413AE8 등과 같은 대응하는 머신 어드레스를 포함할 수 있다. 스페어링 테이블 룩업(70)은 스페어링 영역의 머신 어드레스(86)를 출력할 수 있다. 추가적으로, 위에서 언급된 바와 같이, 스페어링 테이블(74)은 또한 스페어링 영역이 사용되었는지를 표시하는 "사용됨 비트(used bit)"를 출력할 수 있다. 사용됨 비트는 필터(72)로부터의 "스페어를 갖는가?" 비트(92)와 함께 AND 게이트(94)로 입력될 수 있다. 스페어링 테이블 룩업(70)은 사용된 스페어링 영역 표시자(88)로서 AND 게이트(94)의 결과를 출력한다. AND 게이트(94)로부터의 출력은 사용됨 비트 표시자(88) 및 "스페어를 갖는가?" 비트(92)의 논리 AND이다. 따라서, "스페어를 갖는가?" 비트(92) 및 사용됨 비트 표시자 모두가 "1"인 경우, 사용된 스페어링 영역 표시자(88)는 "1"이고, 이는 블록이 스페어링 영역을 사용하고 있음을 나타낸다. 마지막으로, 위에서 언급된 바와 같이, 스페어링 테이블 룩업(70)은 또한 스페어링 영역의 크기(90)를 출력한다. 다른 실시예들에서, 스페어링 영역의 크기는, 스페어링 테이블(74)에서가 아닌 스페어링 영역 자체와 함께 저장될 수 있다.
일부 실시예들은 스페어링 영역 내 스페어 라인에 관한 다른 물리적 배열을 포함할 수 있다. 도 6은 본 발명의 다른 실시예에 따른 스페어링 영역(100)을 묘사한다. 스페어링 영역(100)은 스페어링 영역(100) 내에 배열된 스페어 라인(102)과 태그 및 유효 정보(104)를 포함한다. 아래에서 설명되는 바와 같이, 스페어링 영역(100)의 스케일은 스페어링 영역(100)의 배열을 더 잘 예증하도록 태그 및 유효 정보(104)와 스페어 라인(102) 사이에서 변경된다.
도 6에 묘사된 태그 및 유효 정보(104)는 라인을 따라 연속하여 배열된 태그 및 유효 정보(104)의, 예를 들어, 64바이트의, 1라인(106)을 묘사한다. 태그 및 유효 정보(104)의 각 개별 엔트리는 유효 비트(108), 6-비트 태그(110), 및 1비트의 "패딩(padding)"(112)를 포함할 수 있다. 따라서, 도 6에 도시된 실시예에서, 태그 및 유효 정보의 각 개별 엔트리는 8비트, 즉, 1바이트이고, 태그 및 유효 정보(104)의 64개의 개별 엔트리로 하여금 64바이트 라인(106) 내에 인접하여 저장되도록 한다. 예를 들어, 제 1 엔트리(114)는 스페어 라인 0에 대하여 태그 및 유효 정보를 저장할 수 있다. 제 1 엔트리(114)는 스페어 라인 0에 대한 6-비트 태그(100), 유효 비트(108), 뿐만 아니라 패딩 비트(112)를 포함할 수 있다. 위에서 설명된 바와 같이, 6-비트 태그는 스페어 라인 0에 의해 스페어링되는 스페어링된 라인에 대응한다. 다른 예시에서, 제 2 엔트리(116)는 스페어 라인 1에 대한 태그 및 유효 정보를 저장할 수 있다. 제 2 엔트리(116)는 스페어 라인 1에 대한 6-비트 태그(100), 유효 비트(108), 뿐만 아니라 패팅 비트(112)를 포함할 수 있다. 이러한 방식으로, 그 다음 엔트리는 추가적인 스페어 라인에 대한 태그 및 유효 정보를 포함할 수 있다. 다시, 다른 실시예들은 더 작거나 더 큰 크기를 가지는 라인과 더 작거나 더 큰 크기를 가지는 태그 및 유효 정보를 포함할 수 있다는 것이 유념되어야 한다.
도 6에 도시된 바와 같이, 스페어 라인(102)은 태그 및 유효 정보(104) 이후에 인접하여 배열될 수 있다. 각 스페어 라인, 예를 들어, 스페어 라인 0, 스페어 라인 1 등은 스페어링 영역(100)의 라인 경계 상에 정렬될 수 있다. 일부 실시예들에서, 스페어 라인(102)은 가변 크기 스페어링 영역 내에 배치됨으로써 가변 크기를 가질 수 있다. 그러한 일 실시예에서, 도 5에 도시된 스페어링 테이블(74)과는 대조적으로, 가변의 크기를 가지는 스페어링 영역의 크기는 스페어링 영역, 가령 태그 및 유효 정보(104)와 함께 저장될 수 있다.
일부 실시예들에서, 스페어링 영역은 기존 배드 블록 내에 제공될 수 있다. 도 7은 본 발명의 일 실시예에 따른 스페어링 영역으로서 사용되는 배드 블록(120)을 묘사한다. 배드 블록(120)은, 라인(122), 예를 들어, 64바이트 라인을 가지는 것으로 예증된다. 배드 블록(120)은 "배드" 영역(124), 예를 들어, 손상되었거나(damaged), 결함있거나(defective), 또는 달리 사용불가능한 영역을 포함할 수 있다. 배드 영역(124)을 가진 라인의 임의 부분이 사용불가능하게 될 수 있기 때문에, 배드 영역(124)은 사용불가능 라인(126)을 야기할 수 있다.
도 7에 도시된 바와 같이, 태그 정보(128) 및 스페어 라인(130)은 블록(120)의 나머지 "굳(good)", 예를 들어, 사용가능 영역에 배열될 수 있다. 태그 정보(120)는 태그 정보(120) 이후에 즉시 배열된 인접한 스페어 라인에 대응할 수 있다. 도 7에 도시된 바와 같이, 라인(132)은 스페어 라인(134, 136, 138 및 140)에 대응하는 태그 정보를 포함할 수 있다. 예를 들어, 태그 정보는 스페어 라인 0, 스페어 라인 1, 스페어 라인 2, 및 스페어 라인 3 각각에 대응하는 "태그0 태그1 태그2 태그3"을 표시하는 비트를 포함할 수 있다. 따라서, 배드 블록(120) 내 배열된 각 스페어링 영역은 적어도 두 개의 인접한 사용가능 라인, 즉 태그 정보에 대한 하나의 라인 및 스페어 라인에 대한 하나의 라인의 사용을 요구한다. 예를 들어, 임의의 다른 사용가능 라인과 인접하지 않은 라인(142 및 144)은 스페어링 영역으로서 사용되지 못할 수 있다.
일부 실시예들에서, 스페어링 캐시는 라인이 대응 스페어 라인 및 스페어링을 필요로 하는 캐시를 제공하는데 사용될 수 있다. 도 8은 본 발명의 일 실시예에 따라 스페어링 색인 버퍼(a sparing lookaside buffer)(150)를 묘사한다. 전술된 바와 같이, 스페어링 색인 버퍼(150)는 메모리 컨트롤러(29)에 저장될 수 있거나 그 일부일 수 있다. 스페어링 색인 버퍼(150)는 스페어링 캐시 테이블(152) 및 버퍼 로직(154)을 포함할 수 있다. 스페어링 색인 버퍼(150)는 블록 어드레스(158) 및 라인 어드레스(160)을 가지는 물리적 어드레스(156)를 수신할 수 있고 스페어링된 라인에 대한 스페어링 라인의 출력 어드레스(162)를 출력할 수 있다. 스페어링 색인 버퍼(150)는 또한 도 5에 대하여 위에서 설명된 바와 같은 "스페어를 갖는가?" 비트(164), 및 스페어링 영역 어드레스(166)를 수신할 수 있다.
스페어링 캐시 테이블(152)은 블록 태그(170), 라인 태그(172), 스페어링 영역 머신 어드레스(174), 및 유효 비트(176)를 포함할 수 있다. 블록 태그(170)는 스페어링된 블록의 어드레스를 포함하고, 라인 태그(172)는 스페어링된 블록 내 스페어링된 라인의 어드레스를 포함하고, 머신 어드레스(174)는 스페어링된 라인에 대한 스페어 라인의 머신 어드레스를 표시한다. 유효 비트(176)는 캐시 테이블(168)의 행이 유효한지 및 사용되어야 하는지를 표시한다. 캐시 테이블(168)은 주어진 블록이 테이블에서 발견되었는지 그리고 스페어링되는지를 표시하는 배드 블록 표시자(a bad block indicator)(178), 및 주어진 라인이 테이블에서 발견되었는지 그리고 스페어링되는지를 표시하는 라인 매치 표시자(a line match indicator)(180), 및 매치된 블록 및 라인에 대한 스페어링 영역의 머신 어드레스(182)를 출력한다. 아래에서 상세히 설명되는 바와 같이, 캐시 로직(154)은 캐시 테이블(152)로부터 출력을 수신하고 머신 어드레스(162)를 출력한다.
버퍼 로직(154)은 버퍼(150)로의 입력을 수신할 수 있고, 입력 라인 어드레스(160)에 대한 스페어 라인의 존재 또는 부재에 기초하여 주어진 물리적 어드레스에 대한 적절한 머신 어드레스를 출력할 수 있다. 결정 블록 184에 도시된 바와 같이, 블록(158)이 스페어링된 영역을 가지고 있지 않은 경우, 예를 들어, "스페어를 갖는가?"가 "0"이라면, 로직(154)은 물리적 라인 어드레스 및 물리적 블록 어드레스를 출력 어드레스(162)로서 출력한다. 결정 블록 186에 도시된 바와 같이, "스페어를 갖는가?"가 "1"이거나 "스페어를 갖는가" 비트가 사용 불가능한 경우, 로직은 캐시 테이블(152)에 질의한다. 전술된 바와 같이, 캐시 테이블은 배드 블록 표시자(178), 매치 표시자(180), 및 스페어 라인의 머신 어드레스(182)를 출력한다. 결정 블록 188에 도시된 바와 같이, "스페어를 갖는가?"가 "1"이고 캐시 테이블(152)로부터 반환된 매치가 존재하는 경우, 출력 어드레스(162)는 캐시 테이블(152)로부터 반환된 캐싱된 머신 어드레스(cached machine address)(182)이다. 결정 블록 190에 도시된 바와 같이, "스페어를 갖는가?"가 "1"이고 어떤 매치도 존재하지 않는("미스(miss)"로 지칭됨) 경우, 배드 블록 표시자는 캐시 테이블로부터 반환되고, 그 블록에 대한 물리적 라인이 스페어링되지 않고 캐시 테이블(152) 내 스페어 라인을 갖지 않았기 때문에, 출력 어드레스(162)는 물리적 라인 및 물리적 블록 어드레스이다.
결정 블록 192에 도시된 바와 같이, "스페어를 갖는가?"가 "1"이고 캐시 테이블(152)로부터 반환된 매치가 존재하지 않고 배드 블록 표시자(178) 또한 캐시 테이블(152)로부터 반환되지 않는 경우, 그 이후 캐시 테이블(152)은 그 블록에 대한 스페어링 데이터를 갖지 않는다. 이 경우, 로직(154)은 스페어링 테이블로부터 수신된 스페어링 영역 어드레스(166)를 사용하여, 캐시 테이블(152)로 스페어링 데이터를 로딩할 수 있다. 일부 실시예들에서, 로직(154)은 캐시 테이블(152)로부터 오래된 엔트리를 축출(evict)할 수 있다. 그러한 축출은 캐시 테이블(152)로부터 전체 블록의 캐싱된 데이터를 축출하는 것을 포함할 수 있으며, 이는 블록의 스페어링된 라인이 얼마나 많이 캐싱되는지 추적할 필요를 없앤다. 캐시 테이블(152)의 머신 어드레스(174)는 스페어링 영역 어드레스(166)의 태그에 대응하는 스페어 라인의 머신 주소로 채워질 수 있다. 캐시 테이블(152)의 로딩이 완료되면, 로직(154)은 캐시 테이블(152)에 다시 질의하고 결정 블록(186, 188 및 190)을 통해 진행될 수 있다. 그 다음 "미스(miss)"가 존재하는 경우, 그 이후 라인(160)은 스페어링되지 않고 로직(154)은 출력 어드레스(162)로서 물리적 블록 및 물리적 라인 어드레스를 출력한다.
위에서 설명된 미세 단위 스페어링 시스템 및 기술은 다른 기술, 가령 마모 레벨링 및 블록 레벨 스페어링과 통합될 수 있다는 것을 유념해야 한다. 도 9는 본 발명의 일 실시예에 따라 메모리(202) 및 미세 단위 스페어링 시스템(204), 논리적-물리적 어드레스 변환(logical-to-physical translation)(206), 및 라인 리맵(a line remap)(208)을 가지는 시스템(200)을 묘사한다. 스페어링 시스템(204)은, 도 3, 5, 및 8에 관하여 위에서 설명된 실시예들에 따라 동작하는 스페어링 테이블(210) 및 스페어링 색인 버퍼(212)를 포함할 수 있다. 시스템(200)의 다양한 컴포넌트는 비일시적 유형의 머신 판독가능 매체(예를 들어, 메모리), 하드웨어, 또는 이들의 임의의 조합에 저장된 명령어로 구현될 수 있다.
도 9에 도시된 바와 같이, 시스템(200)은 도 2에 대하여 위에서 설명된 바와 같이, 물리적 어드레스(216)로 변환되는 논리적 어드레스(214)를 수신할 수 있다. 물리적 어드레스(216)의 라인 부분(218)은 라인 리맵(208)에 제공될 수 있다. 라인 리맵(208)은 물리적 어드레스(216)의 라인 부분(218)을 리매핑된 물리적 라인 어드레스(220)로 리매핑할 수 있다. 물리적 어드레스(216)의 블록 부분(222)은 스페어링 테이블(210) 및 스페어링 색인 버퍼(212)에 제공될 수 있다. 위에서 도 5에 대하여 설명된 바와 같이, 스페어링 테이블(210)은 스페어링 영역 어드레스(224) 및 "스페어를 갖는가?" 비트(226)를 출력할 수 있다.
스페어링 색인 버퍼(212)는 라인 리맵(208)으로부터의 리매핑된 물리적 라인 어드레스(220), 물리적 블록 어드레스(216), 및 스페어링 영역 어드레스(224) 및 "스페어를 갖는가?" 비트(226)를 수신할 수 있다. 도 8에 대하여 위에서 설명된 바와 같이, 스페어링 색인 버퍼(212)는 출력 어드레스(228)을 제공할 수 있다. 위에서 설명된 로직에 기초하여, 출력 어드레스(228)는 물리적 블록 어드레스(222) 및 리매핑된 라인 어드레스(220)일 수 있거나, 출력 어드레스(228)는 캐시 테이블(230)로부터 읽힌 스페어 라인의 머신 어드레스일 수 있다. 위에서 또한 설명된 바와 같이, 스페어링 색인 버퍼(212)는 스페어링 영역 데이터(231), 예를 들어, 태그를 메모리(202)로부터 페치(fetch)하고 이 데이터를 캐시 테이블(230) 내에 로딩할 수 있다.
위에서 설명된 바와 같이, 메모리(202)는 블록(232) 내에 배열될 수 있고, 도 6 및 도 7에 대하여 설명된 바와 같이, 스페어링 영역(234)을 포함할 수 있다. 스페어링 영역(234)은 스페어 라인을 표시하는 태그를 포함할 수 있고, 그 태그는 스페어링 색인 버퍼(212)에 제공될 수 있다. 메모리(202)는, 스페어링 색인 버퍼(212)로부터 수신된 출력 어드레스에서 메모리 동작, 예를 들어, 읽기, 쓰기, 소거(erase)에 응답할 수 있고, 데이터(236)를 입력 또는 출력할 수 있다.
이롭게도, 위에서 설명된 미세 단위 스페어링 시스템에 관한 실시예들은, 메모리의 전체 라인 수가 아닌, 결함 라인의 수 및 라인의 수에 비례하도록 스페어 라인을 추적하는데 요구되는 상태를 감소시킨다. 또한, 메모리 내 스페어 라인의 수는 제조 시에 고정되지 않고 메모리의 수명 동안 수정될 수 있다. 마지막으로, 스페어링 영역 및 대응 태그는 달리 사용불가능한 결함 블록들 내에 저장될 수 있다.

Claims (20)

  1. 시스템으로서,
    복수의 블록, 복수의 태그 및 복수의 스페어링된 라인(a plurality of spared lines)을 포함하는 메모리 ― 각 태그는 상기 복수의 스페어링된 라인 중 하나에 대응함 ― 와,
    복수의 머신 어드레스를 포함하는 제 1 테이블 ― 각 머신 어드레스는 상기 복수의 블록 각각에 대하여 복수의 스페어링 영역(a plurality of sparing areas) 중 하나에 대응함 ― 을 포함하는
    시스템.
  2. 제 1 항에 있어서,
    논리적 메모리 어드레스를 물리적 머신 어드레스로 변환하는 어드레스 변환기(an address translator)를 포함하는
    시스템.
  3. 제 1 항에 있어서,
    상기 복수의 태그의 제 1 그룹은 상기 복수의 블록의 제 1 블록의 제 1 인접 부분(a first contiguous portion)에 저장되고
    상기 복수의 스페어링된 라인의 제 1 그룹은 상기 메모리의 블록의 제 2 인접 부분에 저장되는
    시스템.
  4. 제 1 항에 있어서,
    상기 제 1 테이블은 상기 복수의 블록 각각에 대하여 복수의 스페어링 영역 각각의 크기를 나타내는 복수의 크기를 포함하는
    시스템.
  5. 제 1 항에 있어서,
    상기 복수의 블록의 블록이 스페어링 영역을 갖는지 판정하는 블룸 필터(a bloom filter)를 포함하는
    시스템.
  6. 제 1 항에 있어서,
    상기 복수의 머신 어드레스의 일부 및 상기 복수의 태그의 일부를 저장하는 스페어링 캐시를 포함하는
    시스템.
  7. 제 1 항에 있어서,
    상기 메모리는 상 변화 메모리(phase change memory) 또는 멤리스터 메모리(memristor memory)를 포함하는
    시스템.
  8. 프로세서 기반 시스템의 메모리에 대한 라인 어드레스 및 블록 어드레스를 포함하는 물리적 메모리 어드레스를 수신하는 단계와,
    상기 물리적 메모리 어드레스의 상기 블록 어드레스에 대한 스페어링 영역을 판정하는 단계와,
    상기 물리적 메모리 어드레스의 라인 어드레스가 상기 스페어링 영역 내 스페어 라인을 갖는지 판정하는 단계와,
    상기 스페어 라인에 관한 판정에 기초하여 출력 어드레스를 제공하는 단계를 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 물리적 메모리 어드레스의 블록 어드레스에 대한 스페어링 영역을 판정하는 단계는 스페어링 테이블로부터 상기 스페어링 영역에 대한 머신 어드레스를 검색하는 것을 포함하는
    방법.
  10. 제 8 항에 있어서,
    상기 물리적 메모리 어드레스의 블록 어드레스에 대한 상기 스페어링 영역을 판정하는 단계는 상기 블록 어드레스를 블룸 필터에 제공하는 것을 포함하는
    방법.
  11. 제 8 항에 있어서,
    상기 스페어링 영역의 크기를 판정하는 단계를 포함하는
    방법.
  12. 제 8 항에 있어서,
    상기 스페어 라인의 상기 머신 어드레스를 판정하는 단계를 포함하는
    방법.
  13. 제 8 항에 있어서,
    상기 출력 어드레스는 상기 물리적 메모리 어드레스의 라인 어드레스를 포함하는
    방법.
  14. 제 8 항에 있어서,
    상기 출력 어드레스는 상기 스페어 라인의 머신 어드레스를 포함하는
    방법.
  15. 프로세서 기반 시스템의 메모리의 라인 및 블록을 포함하는 물리적 어드레스를 검색하는 단계와,
    상기 물리적 어드레스의 블록이 스페어링 영역을 갖는지 판정하는 단계와,
    상기 물리적 어드레스의 라인을 캐시와 비교하는 단계와,
    상기 비교에 기초하여 출력 어드레스를 출력하는 단계를 포함하는
    방법.
  16. 제 15 항에 있어서,
    상기 물리적 어드레스의 블록이 스페어링 영역을 갖는지 판정하는 단계는 상기 물리적 어드레스의 블록을 상기 캐시와 비교하는 것을 포함하는
    방법.
  17. 제 15 항에 있어서,
    상기 캐시는 스페어 라인의 머신 어드레스, 블록 태그, 및 라인 태그를 포함하는
    방법.
  18. 제 15 항에 있어서,
    상기 출력 어드레스를 출력하는 단계는 상기 블록이 스페어링 영역을 갖지 않는 경우 상기 물리적 어드레스의 라인 및 블록을 출력하는 것을 포함하는
    방법.
  19. 제 17 항에 있어서,
    상기 출력 어드레스를 출력하는 단계는 상기 블록이 스페어링 영역을 갖는 경우 상기 스페어 라인의 머신 어드레스를 출력하는 것을 포함하는
    방법.
  20. 제 17 항에 있어서,
    상기 블록 태그, 라인 태그, 및 머신 어드레스를 상기 캐시에서 축출(evict)하고, 제 2 블록 태그, 제 2 라인 태그, 및 제 2 머신 어드레스를 상기 캐시에 로딩하는 단계를 포함하는
    방법.
KR1020137027251A 2011-03-16 2011-03-16 미세 단위 메모리 스페어링을 위한 방법 및 시스템 KR101603004B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/028615 WO2012125163A1 (en) 2011-03-16 2011-03-16 Systems and methods for fine granularity memory sparing

Publications (2)

Publication Number Publication Date
KR20130132651A true KR20130132651A (ko) 2013-12-04
KR101603004B1 KR101603004B1 (ko) 2016-03-11

Family

ID=46831028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137027251A KR101603004B1 (ko) 2011-03-16 2011-03-16 미세 단위 메모리 스페어링을 위한 방법 및 시스템

Country Status (4)

Country Link
US (2) US20140006712A1 (ko)
EP (1) EP2686773A4 (ko)
KR (1) KR101603004B1 (ko)
WO (1) WO2012125163A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6623522B2 (ja) * 2015-01-26 2019-12-25 セイコーエプソン株式会社 ロボット、ロボットシステムおよびサーバー
KR102617416B1 (ko) * 2016-03-16 2023-12-26 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
US10528438B2 (en) * 2017-05-25 2020-01-07 Avago Technologies International Sales Pte. Limited Method and system for handling bad blocks in a hardware accelerated caching solution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223248B1 (en) * 1997-04-29 2001-04-24 Texas Instruments Incorporated Circuits systems and methods for re-mapping memory row redundancy during two cycle cache access
US20020120824A1 (en) * 2000-12-20 2002-08-29 Hooper William G. Method and system for data block sparing in a solid-state storage device
US20080307189A1 (en) * 2007-06-11 2008-12-11 Microsoft Corporation, Data partitioning via bucketing bloom filters

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784706A (en) * 1993-12-13 1998-07-21 Cray Research, Inc. Virtual to logical to physical address translation for distributed memory massively parallel processing systems
US6023746A (en) * 1997-04-14 2000-02-08 International Business Machines Corporation Dual associative-cache directories allowing simultaneous read operation using two buses with multiplexors, address tags, memory block control signals, single clock cycle operation and error correction
US6577472B2 (en) 1997-07-24 2003-06-10 Hitachi, Ltd. Glass substrate for a magnetic disk, a magnetic disk which can be formed with a stable texture
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US6832294B2 (en) * 2002-04-22 2004-12-14 Sun Microsystems, Inc. Interleaved n-way set-associative external cache
US8184513B2 (en) * 2003-04-15 2012-05-22 Samsung Electronics Co., Ltd. Recording/reproducing method, recording/reproducing apparatus, optical recording medium, and computer readable recording medium having recorded thereon program for the recording/reproducing method
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
US20110099347A1 (en) * 2009-10-26 2011-04-28 Plasek James M Managing allocation and deallocation of storage for data objects
US7987320B2 (en) * 2007-12-06 2011-07-26 International Business Machines Corporation Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
US20110153674A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Data storage including storing of page identity and logical relationships between pages
US8201024B2 (en) * 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223248B1 (en) * 1997-04-29 2001-04-24 Texas Instruments Incorporated Circuits systems and methods for re-mapping memory row redundancy during two cycle cache access
US20020120824A1 (en) * 2000-12-20 2002-08-29 Hooper William G. Method and system for data block sparing in a solid-state storage device
US20080307189A1 (en) * 2007-06-11 2008-12-11 Microsoft Corporation, Data partitioning via bucketing bloom filters

Also Published As

Publication number Publication date
US20140006712A1 (en) 2014-01-02
KR101603004B1 (ko) 2016-03-11
US20160179645A1 (en) 2016-06-23
EP2686773A1 (en) 2014-01-22
WO2012125163A1 (en) 2012-09-20
EP2686773A4 (en) 2015-11-04

Similar Documents

Publication Publication Date Title
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US10761780B2 (en) Memory system
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US8438361B2 (en) Logical block storage in a storage device
US8055837B2 (en) Data writing method for non-volatile memory and controller using the same
US20170235681A1 (en) Memory system and control method of the same
CN105718530B (zh) 文件存储系统及其文件存储控制方法
US20100115175A9 (en) Method of managing a large array of non-volatile memories
US10162554B2 (en) System and method for controlling a programmable deduplication ratio for a memory system
US20150378948A1 (en) Auxiliary Interface for Non-Volatile Memory System
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
US10503647B2 (en) Cache allocation based on quality-of-service information
US20130262738A1 (en) Page replacement method and memory system using the same
CN103164346A (zh) Lba位图使用
US11334272B2 (en) Memory system and operating method thereof
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
US9946476B2 (en) Memory management method, memory control circuit unit and memory storage apparatus
CN111352866A (zh) 用于管理存储器突发存取的方法和系统
US10769062B2 (en) Fine granularity translation layer for data storage devices
US20160179645A1 (en) Systems and methods for fine granularity memory sparing
US20100082903A1 (en) Non-volatile semiconductor memory drive, information processing apparatus and data access control method of the non-volatile semiconductor memory drive
JP6093322B2 (ja) キャッシュメモリおよびプロセッサシステム
US20190286343A1 (en) Mapping table management method for solid state storage device
US11809713B1 (en) Method and apparatus for performing data access management of memory device with aid of randomness-property control

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee