KR101480659B1 - 2-레벨 시스템 메인 메모리 - Google Patents

2-레벨 시스템 메인 메모리 Download PDF

Info

Publication number
KR101480659B1
KR101480659B1 KR20137016240A KR20137016240A KR101480659B1 KR 101480659 B1 KR101480659 B1 KR 101480659B1 KR 20137016240 A KR20137016240 A KR 20137016240A KR 20137016240 A KR20137016240 A KR 20137016240A KR 101480659 B1 KR101480659 B1 KR 101480659B1
Authority
KR
South Korea
Prior art keywords
memory
level
memory level
system
data operand
Prior art date
Application number
KR20137016240A
Other languages
English (en)
Other versions
KR20130088883A (ko
Inventor
에릭 제이. 달렌
글렌 제이. 힌턴
라즈 케이. 라마누잔
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US12/976,545 priority Critical
Priority to US12/976,545 priority patent/US8612676B2/en
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Priority to PCT/US2011/061466 priority patent/WO2012087471A2/en
Publication of KR20130088883A publication Critical patent/KR20130088883A/ko
Application granted granted Critical
Publication of KR101480659B1 publication Critical patent/KR101480659B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0602Dedicated interfaces to storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0628Dedicated interfaces to storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, networked record carriers
    • G06F3/0601Dedicated interfaces to storage systems
    • G06F3/0668Dedicated interfaces to storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • G11C14/009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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

Abstract

본 발명의 실시예들은 시스템 디스크 레벨 저장소의 캐시된 서브셋을 포함하는 메모리의 2개의 레벨을 포함하는 시스템 메인 메모리에 대해 설명한다. 이러한 메인 메모리는 휘발성 메모리로 이루어진 메모리를 포함하는 "근거리 메모리(near memory)", 및 근거리 메모리보다 더 크고 더 느린 휘발성 또는 비휘발성 메모리 저장소를 포함하는 "원거리 메모리(far memory)"를 포함하고 있다. 근거리 메모리는 OS에 투명한 원거리 메모리용 캐시인 한편, 원거리 메모리는 호스트 OS에게 "메인 메모리"로서 제시되므로, 종래 기술과 동일한 메인 메모리 솔루션을 OS에게 나타낸다. 2-레벨 메모리의 관리는 호스트 CPU를 통해 실행된 논리와 모듈의 조합에 의해 수행될 수 있다. 근거리 메모리는 고 대역폭(high bandwidth)을 통해 호스트 시스템 CPU에 결합될 수 있는, 효율적인 처리를 위한 저 지연 수단(low latency means)이다. 원거리 메모리는 저 대역폭(low bandwidth)을 통해 CPU에 결합될 수 있는, 고 지연 수단(high latency means)이다.

Description

2-레벨 시스템 메인 메모리{TWO-LEVEL SYSTEM MAIN MEMORY}

본 발명의 실시예들은 일반적으로 컴퓨팅 디바이스와 관련되는 것으로, 특히, 메인 메모리 구성과 관련되는 것이다.

컴퓨팅 시스템 및 디바이스는 일반적으로 시스템의 비휘발성 디스크 저장소(nonvolatile disk storage)의 콘텐츠의 서브셋을 저장하기 위해, 동적 랜덤 액세스 메모리(DRAM)로 구성된, 적절한 메인 메모리를 포함한다. 메인 메모리는 시스템 프로세서가 디스크 저장소로부터의 메모리 피연산자(memory operands)를 저장 및 검색하는 데 있어서의 지연을 감소시키고 대역폭을 증가시키는 데 사용된다.

듀얼 인-라인 메모리 모듈(dual in-line memory modules; DIMMs)과 같은 DRAM 패키지는 그들의 메모리 밀도(memory density) 면에서 제한되고, 또한 비휘발성 메모리 저장소에 비해 일반적으로 비싸다. 현재, 시스템의 메인 메모리의 크기를 증가하기 위해, 시스템의 비용과 볼륨을 증가시키는, 다수의 DIMM이 필요하다. 시스템 볼륨의 증가는, 시스템의 폼 팩터에 악영향을 미친다 - 예컨대, 큰 DIMM 메모리 랭크는 모바일 클라이언트 공간에서 이상적이지 않다. 용량의 증가가 호스트 시스템의 폼 팩터에 악영향을 미치지 않는 효율적인 메인 메모리 시스템이 필요하다.

다음 설명은 본 발명의 실시예의 구현의 예로서 주어진 예시를 갖는 도면들에 대한 논의를 포함한다. 도면은 제한으로서가 아닌 예로서 이해되어야 한다. 여기서 사용된, 하나 이상의 "실시예"라는 언급은 본 발명의 적어도 하나의 구현에 포함되는 특정한 특징, 구조, 또는 특성을 설명하는 것으로 이해되어야 한다. 따라서, 여기에서 등장하는 "하나의 실시예에서" 또는 "대안적인 실시예에서"라는 문구는 다양한 실시예 및 본 발명의 구현을 설명하는 것으로, 이들 모두가 반드시 동일한 실시예를 지칭하는 것일 필요는 없다. 그러나, 그들이 또한 반드시 상호 배타적일 필요도 없다.
도 1은 본 발명의 일 실시예에 따른 2-레벨 시스템 메인 메모리의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 2-레벨 시스템 메인 메모리의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 2-레벨 시스템 메인 메모리의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 디스크 저장소 디바이스와 통합된 메인 메모리 부분을 포함하는 2-레벨 시스템 메인 메모리의 블록도이다.
도 5는 본 발명의 일 실시예의 흐름도이다.
도 6은 본 발명의 일 실시예를 포함하는 시스템의 블록도이다.
아래 설명된 실시예들의 일부 또는 전부를 묘사할 수 있는, 도면들에 대한 설명을 포함하는 것은 물론, 다른 잠재적인 실시예들이나 여기에 제시된 독창적인 개념들에 대한 구현들을 논의하는, 특정 상세들 및 구현들에 대한 설명이 후속된다. 본 발명의 실시예들에 대한 개요가 아래 제공되고, 이어서 도면을 참조한 더 상세한 설명이 뒤따른다.

본 발명의 실시예들은 시스템 디스크 레벨 저장소의 캐시된 서브셋(예를 들어, 런-타임 데이터에 더하여)을 포함하는 2개의 레벨의 메모리(대안적으로, 여기에서는 '2LM'로 칭함)을 포함하는 시스템 메인 메모리에 관한 것이다. 이러한 메인 메모리는, 예를 들어, DRAM으로 이루어진 더 작고 더 빠른 메모리를 포함하는 제1 레벨(대안적으로, 여기에서는 "근거리 메모리(near memory)"로 칭함); 및 (근거리 메모리에 대하여) 더 크고 더 느린 휘발성 메모리(예컨대, DRAM) 또는 비휘발성 메모리 저장소(예컨대, 플래시 메모리)를 포함하는 제2 레벨(대안적으로, 여기에서는 "원거리 메모리(far memory)"로 칭함)을 포함한다.

원거리 메모리는 호스트 운영 체제(OS)에게 "메인 메모리"로서 제시되는 한편, 근거리 메모리는 OS에게 투명한 원거리 메모리용 캐시이므로, 아래 설명된 실시예들이 종래 기술과 동일한 메인 메모리 솔루션들과 동일하게 보이게 한다. 2-레벨 메모리의 관리는 호스트 중앙 처리 유닛(CPU)을 통해 실행된 논리와 모듈의 조합에 의해 수행될 수 있다. 근거리 메모리는 효율적인 처리를 위해 고 대역폭, 저 지연 수단을 통해 호스트 시스템의 CPU에 결합될 수 있다. 원거리 메모리는 (근거리 메모리에 비해) 저 대역폭, 고 지연 수단을 통해 CPU에 결합될 수 있다.

도 1은 본 발명의 일 실시예의 블록도이다. 시스템 메인 메모리(100)는 CPU(110)에 런-타임 데이터 저장 및 시스템 디스크 저장소 메모리(미도시)의 콘텐츠로의 액세스를 제공한다. 상기 CPU는, 메인 메모리(100)의 콘텐츠의 서브셋을 저장하는, 캐시 메모리를 포함할 수 있다.

본 실시예에서, 메인 메모리(100)는 근거리 메모리(DRAM)(120)로서 도시된 휘발성 메모리의 레벨, 및 원거리 메모리(130)로서 도시된 메모리의 레벨을 포함한다. 원거리 메모리는 휘발성 또는 비휘발성 메모리 중 어느 하나를 포함할 수 있다. 본 실시예에서, 근거리 메모리(120)는, 상당히 더 낮은 대역폭 및 더 높은 지연(즉, CPU(110) 액세스를 위한)을 가질 수 있는 원거리 메모리(130)의 저-지연 및 고-대역폭(즉, CPU(110) 액세스를 위한) 캐시로서 제공된다.

본 실시예에서, 근거리 메모리(120)는 근거리 메모리 제어기(NMC)(125)에 의해 관리되는 한편, 원거리 메모리(130)는 원거리 메모리 제어기(FMC)(135)에 의해 관리된다. FMC(135)는 원거리 메모리(130)를 메인 메모리로서 시스템 OS에게 보고한다 - 즉, 시스템 OS는 원거리 메모리(130)의 크기를 시스템 메인 메모리(100)의 크기로서 인식한다. 시스템 OS 및 시스템 애플리케이션은, 근거리 메모리(120)가 원거리 메모리(130)의 "투명한(transparent)" 캐시이기 때문에, 그 존재를 "인식하지 못한다(unaware)".

CPU(110)는 2LM 엔진 모듈/논리(140)를 더 포함한다. "2LM 엔진"은 2-레벨 메인 메모리(100)를 지원하기 위해 하드웨어 및/또는 마이크로-코드 확장을 포함할 수 있는 논리 구조이다. 예를 들어, 2LM 엔진(140)은 원거리 메모리(130)의 건축학상 보이는 모든 요소들(all architecturally visible elements)의 상태를 추적하는 전체 태그 테이블(full tag table)을 유지할 수 있다. 예를 들어, CPU(110)가 메인 메모리(100)에서 특정 데이터 세그먼트에 액세스하려고 시도할 때, 2LM 엔진(140)은 상기 데이터 세그먼트가 근거리 메모리(120)에 포함되어 있는지 여부를 결정하고; 그렇지 않은 경우, 2LM 엔진(140)은 원거리 메모리(130)에서 데이터 세그먼트를 페치하고, 후속해서 데이터 세그먼트를 근거리 메모리(120)에 기록한다(캐시 미스(cache miss)와 유사). 근거리 메모리(120)는 원거리 메모리(130)의 "캐시"의 역할을 하기 때문에, 2LM 엔진(140)은 본 기술 분야에서 알려져 있는 유사한 캐시 효율성 프로세스 또는 데이터 프리페치를 또한 실행할 수 있다는 것이 이해될 것이다.

2LM 엔진(140)은 원거리 메모리(130)의 다른 측면들을 관리할 수 있다. 예를 들어, 원거리 메모리(130)가 비휘발성 메모리를 포함하는 실시예에서, 플래시와 같은 비휘발성 메모리는 상당한 판독/기록으로 인해 메모리 세그먼트가 열화된다는 것이 이해된다. 따라서, 2LM 엔진(140)은 시스템 소프트웨어에 투명한 방식으로 웨어-레벨링(wear-leveling), 불량-블록 회피(bad-block avoidance) 등을 포함하는 기능을 실행할 수 있다. 예를 들어, 웨어-레벨링(wear-leveling) 논리의 실행은, 상대적으로 낮은 소거 사이클 카운트를 갖는, 원거리 메모리(130)에서의 클린 언매핑 세그먼트들(clean unmapped segments)의 프리 풀(free pool)로부터 세그먼트들을 선택하는 것을 포함할 수 있다.

정확한 비율(exact ratio)은, 예를 들어, 시스템의 사용 목적에 따라 달라질 수 있지만, 근거리 메모리(120)는 원거리 메모리(130)보다 크기가 더 작은 것으로 이해될 것이다. 본 실시예에서, 원거리 메모리(130)는 더 조밀하고, 더 저렴한 비휘발성 메모리를 포함하기 때문에, 메인 메모리(100)는 더 저렴하고 더 효율적으로 증가될 수 있으며, 시스템의 DRAM(즉, 근거리 메모리(120))의 양에 독립적일 수 있다는 이해될 것이다.

도 2는 본 발명의 일 실시예를 구현하는 시스템의 블록도이다. 본 실시예에서, 도 1에 설명된 2LM 아키텍처는 "원거리 메모리" 어레이로 및 그로부터(to and from) 전송된 데이터에 대한 압축을 인에이블하도록 확장된다. 위에서 설명한 것과 마찬가지로, 시스템(200)에서, 근거리 메모리 DRAM(220)은, 상당히 더 낮은 대역폭 및 더 높은 지연으로 CPU(210)로/로부터 데이터를 전송하는 원거리 메모리(230)를 위한 저-지연 및 고-대역폭 캐시의 역할을 한다. 따라서, 시스템(200)의 주요 성능 매개 변수는 데이터 세그먼트(예컨대, 페이지 또는 섹터)가 근거리 메모리 서브시스템(220)과 원거리 메모리 서브시스템(230) 사이에서 전송되는 경로의 대역폭이라는 것이 이해된다.

컴퓨터 작업 부하들(computer workloads)은 그들의 "캐시 친화성(cache friendliness)"이 서로 다르다 - 즉, 어떤 작업 부하는 다른 것들보다 훨씬 더 높은 캐시 미스 비율(cache miss-rates)을 생성하고, 따라서 캐시 크기를 더 증가시키지 않는다는 것이 이해된다. 따라서, 시스템(200)의 성능이 근거리 메모리(220)와 원거리 메모리(230) 사이의 대역폭 용량에 부분적으로 의존적이라는 것이 이해될 것이다. 높은 미스-비율 대역폭 요구를 충족하는 능력이 클수록, 근거리-원거리 메모리 전송 경로를 포화할 실제 작업 부하의 수는 더 작다.

본 실시예에서, 근거리-원거리 메모리 전송 경로는 포트 제어 모듈(port control module; 250)에 의해 부분적으로 제어된다. 상기 포트 제어 모듈은 아래에 설명된 전송 프로세스에서 압축 및 압축해제 단계에 의해 생성된 데이터 크기에 있어서의 결과적인 변화를 수용하는 서브-모듈을 포함한다. 본 실시예에서, 포트 제어 모듈(250)은 하드웨어 압축 및 압축해제 엔진(CE)(253), 압축 제어 블록(CC)(251) 및 주소 생성 블록(AG)(252)을 포함한다. CE(253)는 본 기술 분야에 알려지고 시스템(200)의 용도에 적합한 임의의 압축 방법을 이용할 수 있다. 포트 제어 모듈(250)은 또한 CC(251)와 FMC(235) 사이의 메시징을 위한 스킴을 실행할 수 있다.

CE(253)는 I/O 인터페이스(255)를 통해 근거리 메모리(220)와 원거리 메모리(230) 사이에서 이동하는 데이터 페이로드 정보를 처리한다. 하나의 실시예에서, 다수의 FMC 인스턴스를 갖는 시스템 구현을 지원하기 위해, CE(253)의 단일 인스턴스가 공유된다. 또 다른 실시예에서, I/O 인터페이스마다 다수의 CE가 구현된다.

하나의 실시예에서, 원거리 메모리(230)는 압축된 형태로 데이터를 저장하고, 근거리 메모리(220)는 대응하는 압축해제된 버전을 포함한다. 따라서, 근거리 메모리(220)가 원거리 메모리(230)의 콘텐츠를 요청할 때, FMC(235)는 상기 콘텐츠를 검색하고, 사용되는 압축 알고리즘에 일치하도록 조정된(tailored) 고정된 페이로드 크기로 I/O 인터페이스(255)를 통해 그것을 반환한다(예컨대, 256B 전송). 그 다음, CE(253)는 데이터를 압축해제할 수 있으며, 각각의 축적된 캐시 라인은 NMC(225)를 통해 근거리 메모리(220)에 순차적으로 전송될 수 있다.

AG(252)의 초기화는, FMC로부터의 페이로드를 동반하는 헤더로의 벤더-고유의 확장(vendor-specific extensions), 또는 제1 페이로드 전송 이전에 FMC에 의해 발행된 프리앰블 벤더-정의 메시지(VDM) 중 어느 하나에 의해 달성될 수 있다. 하나의 실시예에서, AG(252)는 전송이 시작될 때(at the onset of a transfer) 순차적인 근거리 메모리 캐시 라인 주소들 중 첫 번째로 초기화되고, 전송이 완료될 때까지 순차적인 주소를 생성한다. 따라서, NMC(225)는 포트 제어 모듈(250)과 FMC(235) 사이에서 이용된 어떠한 압축도 "인식하지 못한다".

임의의 소정의 전송시에 달성된 압축의 양이 데이터에 의존적이므로, 본 발명의 실시예는, 데이터 세그먼트에서 고정된 수의 타겟 캐시 라인으로부터 압축된 정보의 마지막 전체 페이로드를 완료하기 위해 패딩(예컨대, 제로들을 추가)을 사용할 수 있다는 것이 이해된다. 예를 들어, 1KB 세그먼트는 근거리 메모리(220)에 각각 64B인 16개의 캐시 라인을 포함할 수 있는데, 이는, 25와 50% 사이의 압축 비율을 고려할 때, I/O 인터페이스(255)를 통한 압축된 데이터의 3개의 256B 페이로드에 대응할 수 있다.

FMC(235)가 근거리 메모리(220)로부터 데이터를 요청하는 경우에, FMC는 CC(251)로 전송 요청을 발행할 수 있고, 이는 또한 근거리 메모리로부터 순차적으로 타겟 캐시 라인을 풀링하도록 AG(252)를 초기화할 수 있다. 그 다음, CE(253)는 풀링된 캐시 라인들을 압축된 고정 페이로드(예컨대, 위에서 논의된 예시적인 실시예와 일관되게 256B)에 패킹할 수 있고, 그것은 그 후, 전송이 완료될 때까지, 순서대로, FMC(235)에 발행된다.

하나의 실시예에서, CC(251)는 압축된 페이로드를 수신하기 위해 FMC(235)에서 목적지 주소로 AG(252)를 초기화하고, AG는 전체 데이터 세그먼트가 전송될 때까지 후속 FMC 타겟 주소들을 자동적으로 생성해야 한다. 예를 들어, FMC(235)는 CC(251)로부터 전송을 요청하고 근거리 메모리(220)의 타겟 데이터 세그먼트와 원거리 메모리(230)의 목적지 둘 다를 규정하기 위해 VDM을 발행할 수 있다. 하나의 실시예에서, FMC(235)는 언제 압축이 존재하고 인에이블되는지를 검출하고, (압축이 존재하지 않거나 인에이블되지 않은 경우, 근거리 메모리(220)로부터 직접 타겟 데이터 세그먼트를 풀링하기 보다는) 위에서 설명한 바와 같이 데이터를 요청한다.

2LM 엔진(240)은 어떤 데이터 세그먼트가 근거리 메모리(220)에 포함되는지 및 어떤 데이터 세그먼트가 원거리 메모리(230)로부터 페치되어야 하는지를 결정하기 위해 "태그 테이블"을 사용할 수 있다. 따라서, 메모리가 압축될 때, 어떤 원거리 메모리 어드레스 블록들이 상기 태그 테이블에 의해 사용된 주소 맵 내의 어떤 데이터 세그먼트에 대응하는지가 결정되어야 한다. 하나의 실시예에서, 이것은 FMC(235)와 2LM 엔진(240) 사이의 "전송 완료" 메시지의 의미론을 확장함으로써 달성된다. 원거리 메모리(230)로의 데이터 전송 시에, FMC(235) 완료는 CE(253)를 통해 라우트되어, 얼마나 많은 블록이 실제로 업데이트되었는지를 보고하고, 그 다음에, CPU(210)는 사용되지 않은 블록을 나중에 사용하기 위해 프리 리스트 구조로 반환할 수 있다.

이러한 메시징은 또한 완료와 CE(253)에서 근거리 메모리(220)로의 최종 데이터 전송 간의 오더링의 시행을 제공할 수 있다. 근거리 메모리(220)로의 데이터 전송시, FMC(235)에 발행된 관련 명령들은 타겟 데이터 세그먼트를 재구성하는데 필요한 원거리 메모리 블록의 실제 수를 나타낼 수 있다. 하나의 실시예에서, 이러한 정보는 메타데이터 확장을 통해 저장된다.

데이터 압축은 선택된 특정 압축 알고리즘, 및 시스템(200)의 작업 부하에 의해 생성 및 사용된 특정 데이터에 따라 I/O 인터페이스(255)의 유효 대역폭을 증가시킬 수 있다는 것이 이해될 것이다. 하나의 실시예에서, 원거리 메모리(230)에 전송된 데이터는 암호화된다. 근거리/원거리 메모리 링크에서 암호화 및 압축을 둘다 지원하기 위해, 본 발명의 실시예는 CE(253)나 FMC(235) 중 어느 하나에서 암호화를 구현할 수 있다. 압축된 데이터를 암호화하는 것이 가능할 수 있을 것이지만, 암호화된 데이터는 효과적으로 압축되지 않을 것이다.

위에서 설명한 바와 같이, DRAM 메모리 디바이스는 시스템 메인 메모리(즉, 도 1 및 2에 각각 도시된 근거리 메모리(120 및 220))의 일부를 위해 이용될 수 있다. DRAM은 데이터 손상을 야기하는 "소프트 에러(soft errors)"의 논-제로 발생률(non-zero incidence)의 대상이 되어, 영향받은 DRAM 위치에서 검색된 데이터가 해당 위치에 저장된 예상 데이터와 매치하지 않는다는 것 또한 이해된다. 많은 시스템은 소프트 에러 비율(SER)의 영향 뿐만 아니라, DRAM에 저장된 데이터의 손상을 야기할 수 있는 다른 잘-알려진 영향들을 완화하기 위해 에러 정정 코드(ECC) 알고리즘을 구현한다. 이러한 시스템에 사용된 ECC 알고리즘의 강건도(robustness)는 시스템의 신뢰성에 직접 영향을 미치지만; ECC 알고리즘에 의해 보호되는 임의의 DRAM 서브시스템은 여전히 검출가능하고 정정할 수 없는 에러(DUE); 즉, ECC 알고리즘에 의해 검출되지만, 그것에 의해 정정될 수 없는 에러(즉, 데이터가 복원되는 것을 방지하는 다수-비트 에러)를 경험하는 논-제로 확률을 갖는다. 2-레벨 시스템 메인 메모리의 실시예들은 DUE 발생율을 감소시키도록 구성될 수 있다.

도 3은 DUE 발생율을 감소시키도록 구성된 2LM 시스템의 블록도이다. 본 실시예에서, 시스템(300)은 현재 ECC 솔루션에 의해 제공된 상기 신뢰성의 레이어를 구현한다. 위에서 설명한 시스템과 유사하게, 시스템(300)은 "근거리 메모리" DRAM(320) 내에 "원거리 메모리" 어레이(330)의 캐시된 서브셋을 유지한다. 본 실시예에서, 근거리 메모리(320)의 콘텐츠는 ECC 알고리즘에 의해 보호된다.

본 실시예에서, 근거리 메모리(320)에 포함된 데이터 세그먼트에서의 DUE는 NMC(325)에 의해 검출될 수 있다. DUE의 존재는 2LM 엔진(350)으로 시그널링된다. 2LM 엔진은 캐시된 주소(즉, 근거리 메모리(320)에서의 위치)와 관련된 물리적 위치(즉, 원거리 메모리(330)에서의 위치) 둘 다를 결정하고, (그것이 '더티(dirty)'인 경우) 데이터 세그먼트가 근거리 메모리에서 수정되었는지 여부를 결정하기 위해 머신 체크 아키텍처(MCA) 코드(351)를 실행할 수 있다. 관련 데이터 세그먼트가 "클린(clean)"인 경우에, 2LM 엔진(350)은 단순히 2LM 미스 코드(352)를 실행하여, DRAM 액세스가 사실상 근거리 메모리 캐시를 "미스"한 것처럼 근거리 메모리(320)로 다시 데이터의 (아마도 손상되지 않은) 원거리 메모리 복사를 리-페치하고, 후속해서, DUE가 전혀 발생하지 않았던 것처럼 CPU(310)가 근거리 메모리(320)에 액세스하도록 허용한다.

근거리 메모리(320) 내의 데이터 세그먼트가 실제로 더티한 경우에, 또는 원거리 메모리(330) 내의 관련된 데이터 세그먼트가 또한 손상된 것으로 FMC(335)에 의해 결정되는 경우에, DUE는 하드웨어에 의해 회복될 수 없으며, 정정될 수 없는 에러로서 보고된다. 따라서, 위의 예시적인 실시예는 DUE의 존재를 완전히 제거하지 않을 것이지만, 그들을 감소시킬 것이고 이로써 시스템(300)의 신뢰성을 현저히 증가시킬 것임이 이해된다. 동작 동안 임의의 주어진 시간에, 근거리 메모리(320) 내의 데이터 세그먼트의 일부(일반적으로 반(half)보다는 훨씬 적은)는 "더티"(즉, 그들은 근거리 메모리 캐시로 이동된 이후에 수정되었다)라는 것이 이해된다. 따라서, 근거리 메모리(320)에서 검출된 DUE는 수정되지 않은(즉, 클린) 데이터 세그먼트에 영향을 미칠 가능성이 있고; 이로써, 상기 실시예에 따른 시스템(300)은 그러한 에러로부터 회복할 수 있다.

본 발명의 실시예는 또한, DUE를 갖는 CPU 캐시에서 클린 히트(clean hit)를, 그것이 실제로 미스(miss)인 것처럼 유사하게 처리하여 CPU(310)의 주요 캐시 구조 내의 DUE 이벤트로부터 회복하기 위해 상기 프로세스를 이용할 수 있다. 소프트웨어는, 영향을 받은 페이지를 디스크 레벨 메모리(미도시)로부터 2-레벨 메인 메모리로 다시 스와핑(swapping)한 후에 에러를 겪은 동작을 점진적으로 재시작할 필요가 있을 수 있지만, 본 발명의 실시예들은 또한 소프트웨어 레벨에서 DUE에서 회복할 수 있다.

하나의 실시예에서, 태그 테이블은 데이터 세그먼트 레벨(예컨대, 페이지 또는 섹터 레벨들)에서 클린/더티 정보를 추적하는 데 사용된다. 상기 태그 테이블은 하드웨어에 보여질 수 있고, 하드웨어에 의해 관리될 수 있다. MCA 코드(351)는 원거리 메모리(330)로부터 수정되지 않은 데이터를 리-페치함으로써 NMC(325)에서 보고된 정정할 수 없는 에러 이벤트로부터 자율적으로 선택적으로 회복하기 위해 이러한 테이블을 사용할 수 있다. 따라서, 도 3에 도시된 예시적인 실시예는 정정할 수 없는 데이터 에러로부터 회복하기 위해 하드웨어-관리 페이징을 사용할 수 있다.

도 4는 디스크 저장소 디바이스와 통합된 메인 메모리 부분을 포함하는 2LM 시스템의 블록도이다. 시스템(400)에서, 비휘발성 2 레벨의 메모리를 포함하는 디바이스는 논리적으로 통합된 디스크 저장소 레벨을 제공하도록 또한 인에이블된다. 본 실시예에서, 시스템(400)은 근거리 메모리(420)와 비휘발성 원거리 메모리(430)(각각 NMC(425)와 FMC(435)에 의해 관리됨)로 구성된 메인 메모리, 및 디스크 저장소 메모리(475)를 포함한다. 시스템(400)은 비휘발성 메모리 서브시스템(490)(적어도 하나의 비휘발성 메모리 디바이스와 제어 로직을 포함함)의 분할(partitioning)을 인에이블하는 모듈/로직을 포함하여, 해당 용량의 일부는 계속 메인 메모리 용도로 할당되고(즉, 위에서 설명한 2LM 시스템마다의 원거리 메모리(430)), 나머지 용량은 통합된 저장 능력에 할당된다.

본 실시예에서, FMC(435)는 메모리 서브시스템(490)을 두 개의 파티션으로 분할하는 모듈/로직을 포함하는데: 제1 파티션(460)은 원거리 메모리(430)(및 메타-데이터/스페어 섹터들(466)을 더 포함할 수 있음)로 구성되고, 제2 파티션(470)은 디스크 레벨 메모리(475)(및 메타-데이터/스페어 블록(476))로 구성된다. 본 실시예에서, 위에서 설명한 원거리 메모리(430)의 분할(즉, 제1 파티션(460))이 구성가능하여, 기본 2LM 기능성은 시스템(400)에 존재하는 용량 일부에만 할당될 수 있고, 그 부분은 나머지 제2 파티션(470)(즉, 디스크 레벨 메모리(475))에 완전히 독립적으로 동작될 수 있다.

본 실시예에서, FMC(435)는 디스크 레벨 메모리(475)를, 시스템(400)의 기본 입/출력 시스템(BIOS)에는 보이지만 2LM 엔진(450)에는 투명하도록 하기 위한 PCI 디바이스 헤더(436)를 포함한다. FMC(435)는 디스크 저장소 메모리(475)의 저장 능력의 소프트웨어 조작을 위한 레지스터 인터페이스를 더 제공할 수 있다. 이는 PCI 표준에 의해 정의된 인터럽트 및 전력 관리 인터페이스뿐만 아니라, 드라이버 및 관리 소프트웨어 조작, 및 디스크 저장소 메모리(475)로 구성된 비휘발성 메모리 서브시스템 파티션(470)의 차별화된 능력을 위한 장치-특정 인터페이스를 포함할 수 있다.

FMC(435)는 디스크 저장소 메모리(475)를 위한 논리적 데이터 세그먼트 어드레싱(예컨대, 블록 어드레싱)을 더 제공할 수 있다. 본 발명의 하나의 실시예에서, FMC(435)는 또한 저장 할당 공간의 일부를, 논리적 저장 데이터 세그먼트보다는, 표준 메모리-매핑된 I/O으로 제시한다. 따라서, CPU(410)를 통해 실행된 소프트웨어는 이러한 빠른 비-휘발성 메모리를 사용하도록 최적화될 수 있으며, 디바이스(490)의 저장 인터페이스를 통해서는 직접 사용할 수 없는 기능을 가질 것이다.

FMC(435)는, 디스크 저장소 메모리(475)의 콘텐츠와 용량을 추적하기 위한 독립적인 태그 테이블의 유지를 포함하는 기능들을 실행할 수 있는, 메모리 디바이스 엔진(437)을 더 포함한다. 메모리 디바이스 엔진(437)은, 디스크 저장소 메모리(475)를 위한, 이전에 설명된 바와 같은, 웨어-레벨링(wear-leveling) 및 불량-블록 관리를 더 실행할 수 있다. 대안적인 실시예에서, 웨어-레벨링(wear-leveling) 및 불량-블록 처리는 드라이버 소프트웨어를 통해 실행된다.

따라서, FMC(435)와 PCI 디바이스 헤더(436)는 디스크 메모리(475)(즉, 디바이스(490)의 파티션(470))에 표준 SATA(Serial Advanced Technology Attachment) 또는 SAS(Serial Attached SCSI) 소프트웨어 인터페이스를 제시할 수 있다. 그 결과로서의 능력은 별도의 디스크 레벨 디바이스와 직접적으로 유사한 부팅가능한 논리 디스크 볼륨(bootable logical disk volume)을 구성한다.

시스템(400)은 데이터 압축, 및 도 2-3에 도시된 바와 같이 원거리 메모리(430)를 포함하는 파티션으로 및 그로부터 이동된 데이터 블록들에서의 데이터 무결성 생성과 체크를 더 구현할 수 있다는 것이 이해될 것이다.

따라서, 시스템(400)에서 구현된 예시적인 실시예는, 시스템의 논리적 메모리 아키텍처에 내장된 미디어의 큰 비휘발성 고성능 어레이를 포함함에 따라, 추가적인 개별 디바이스 모듈 및 인터페이스에 대한 필요성을 제거한다. 도 4에 설명된 예와 유사한 실시예는, 대역폭, 지연, IOPS, 및 전력을 포함하는 모든 주요 메트릭에서, SATA 또는 SAS와 같은 기존의 저장 인터페이스 또는 PCI-익스프레스와 같은 훨씬 더 고속 인터페이스를 통해 부착된 개별 드라이브를 포함하는 시스템을 능가할 것임이 이해될 것이다. 그러한 시스템의 능력을 이용하도록 시스템 OS와 API가 개발될 수 있다.

또한, 도 4의 예시적인 실시예는, 일부 별도의 최소한의 개별 디스크 저장소 능력(some separate minimal discrete disk storage capability)뿐만 아니라 적절한 DRAM 용량을 제공해야 하는, 종래 기술의 시스템에 비해 비용적인 장점을 제공할 수 있다는 것이 이해될 것이다. 이러한 실시예에 따른 최소 기능 시스템은 더 이상 어떠한 개별 디스크 지원도 필요로 하지 않기 때문에, 위에서 설명한 메모리 분할은 특히 모바일 클라이언트 공간과 조밀한 서버 공간에서 혁신적인 폼 팩터를 허용한다는 것이 또한 이해된다.

도 5는 본 발명의 일 실시예를 도시하는 흐름도이다. 여기에 도시된 흐름도는 다양한 프로세스 액션들의 시퀀스의 예들을 제공한다. 특정한 시퀀스 또는 순서로 도시되지만, 달리 명시하지 않는 한, 액션들의 순서는 수정될 수 있다. 따라서, 도시된 구현은 단지 예로서 이해되어야 하고, 도시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 액션들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 액션은 본 발명의 다양한 실시예에서 생략될 수 있으며; 따라서 모든 액션이 모든 구현에 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.

데이터 피연산자에 대한 요청이 수신된다(500). 그 다음, 데이터 피연산자가 메인 메모리에 저장되는지를 결정하고, 본 실시예에서, 메인 메모리는 위에서 설명한 바와 같이 근거리 및 원거리 메모리로 구성된 2-레벨 메모리로 구성된다. 데이터 피연산자가 근거리 메모리에 있는 경우(510), 피연산자는 요청자로 반환된다(520). 그렇지 않으면, 데이터 피연산자가 원거리 메모리에 저장되어 있는지를 결정한다(530). 데이터 피연산자가 원거리 메모리에 있다면, 그것은 근거리 메모리에 캐시되고(560), 그 다음 요청자로 반환된다(520). 데이터 피연산자가 원거리 메모리에 없는 경우, 그것은 디스크 메모리로부터 검색되고(540), 원거리 메모리에 캐시되며(550), 근거리 메모리에 캐시된 다음(560), 요청자로 반환된다(520).

도 6은 본 발명의 실시예를 활용할 수 있는 시스템의 블록도이다. 시스템(600)에는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 넷북, 노트북 컴퓨터, 개인 디지털 보조(PDA), 서버, 워크스테이션, 휴대 전화, 모바일 컴퓨팅 디바이스, 인터넷 제품 또는 임의의 다른 유형의 컴퓨팅 디바이스가 포함될 수 있다.

시스템(600)은, 시스템 버스(690)를 통해, 사용자 인터페이스(660), 메인 메모리(620), 디스크 메모리(630), I/O 디바이스(640) 및 네트워크 커넥터(650)와 데이터를 교환하기 위한 CPU(610)를 포함할 수 있다.

메인 메모리(620)는 근거리 메모리 부분과 원거리 메모리 부분을 포함하는 위에서 설명된 임의의 2LM 실시예를 포함한다. 상기 근거리 메모리 부분은, 예를 들면, 동기식 동적 랜덤 액세스 메모리(SDRAM), 동적 랜덤 액세스 메모리(DRAM), RAMBUS 동적 랜덤 액세스 메모리(RDRAM) 및/또는 임의의 다른 유형의 랜덤 액세스 메모리 디바이스를 포함할 수 있다. 상기 원거리 레벨 메모리는, 예를 들어, 플래시 메모리를 포함할 수 있다.

디스크 메모리(630)는 메인 메모리(620)의 원거리 메모리 부분과 통합될 수도 있고, 별도의 디바이스에 포함될 수도 있다. 디스크의 메모리(630)는, 예를 들어, 솔리드 스테이트 디스크(SSD) 드라이브, 플래시 메모리, 상 변화 메모리(PCM), 판독-전용 메모리(ROM), 전기적 소거가능하고 프로그램가능한 판독-전용 메모리(EEPROM) 또는 임의의 다른 유형의 비휘발성 메모리 디바이스를 포함할 수 있다.

네트워크 커넥터(650)는, 예를 들어, 이더넷 인터페이스, 범용 직렬 버스(USB) 인터페이스, 주변 장치 구성 요소 상호 연결(PCI) 익스프레스 인터페이스, 무선 인터페이스 및/또는 임의의 다른 적절한 유형의 인터페이스를 포함할 수 있다. 하나의 실시예에서, 무선 인터페이스는 IEEE 802.11 표준 및 그의 관련 패밀리, 홈 플러그 AV(HPAV), 울트라 와이드 밴드(UWB), 블루투스, 와이맥스, 또는 무선 통신 프로토콜의 임의의 다른 형태에 따라 동작하지만, 이로 제한되지 않는다.

여기에서 설명된 프로세스, 서버, 또는 툴로 위에서 언급한 다양한 구성 요소는 설명된 기능을 수행하기 위한 수단일 수 있다. 여기에 설명된 각 구성 요소는 소프트웨어나 하드웨어, 또는 이들의 조합을 포함하고 있다. 각각의 및 모든 구성 요소는 소프트웨어 모듈, 하드웨어 모듈, 특수-목적의 하드웨어(예컨대, 애플리케이션 고유의 하드웨어, ASIC, DSP 등), 내장된 제어기, 고정 배선 회로, 하드웨어 논리 등으로 구현될 수 있다. 소프트웨어 콘텐츠(예컨대, 데이터, 명령어, 구성)는 실행될 수 있는 명령어를 나타내는 콘텐츠를 제공하는 비-일시적, 유형 컴퓨터 또는 기계 판독가능한 저장 매체를 포함하는 제조 물품을 통해 제공될 수 있다. 콘텐츠는 컴퓨터로 하여금 여기에 설명된 다양한 기능/동작을 수행하도록 할 수 있다.

컴퓨터 판독가능한 비-일시적 저장 매체는, 기록가능한/기록불가능한 매체(예컨대, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스 등)와 같은, 컴퓨터(예컨대, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 콘텐츠는 직접적으로 실행가능한("객체(object)" 또는 "실행가능한(executable)" 형태), 소스 코드, 또는 차이 코드(difference code)("델타" 또는 "패치" 코드)일 수 있다. 컴퓨터 판독가능한 저장 매체는 또한 콘텐츠가 다운로드될 수 있는 저장소 또는 데이터베이스를 포함할 수 있다. 컴퓨터 판독가능한 매체는 또한 판매 또는 배달시에 콘텐츠가 저장된 디바이스 또는 제품을 포함할 수 있다. 따라서, 저장된 콘텐츠를 갖는 디바이스의 배달, 또는 통신 매체를 통해 다운로드용 콘텐츠의 제공은 여기에 설명된 그러한 콘텐츠를 제조 물품에 제공하는 것으로 이해될 수 있다.

Claims (20)

  1. 휘발성 메모리의 제1 메모리 레벨과, 메모리의 제2 메모리 레벨을 포함하는 시스템 메인 메모리 - 상기 제1 메모리 레벨은 하나 이상의 DRAM 장치를 포함하고 상기 제2 메모리 레벨의 캐시된 서브셋을 포함하며, 상기 제2 메모리 레벨은 비휘발성 메모리를 포함함 - ;
    디스크 저장소 메모리 - 상기 제2 메모리 레벨은 상기 디스크 저장소 메모리의 캐시된 서브셋을 포함함 - ;
    상기 시스템 메인 메모리를 통해 상기 디스크 저장소 메모리의 콘텐츠를 요청하기 위한 애플리케이션 및 운영 체제(OS)를 실행하는 프로세서 - 상기 시스템 메인 메모리의 상기 제1 메모리 레벨 및 상기 제2 메모리 레벨은 상기 프로세서와 별도이고, 상기 OS에 제시되는 상기 시스템 메인 메모리의 크기는 상기 제2 메모리 레벨의 크기임 -; 및
    상기 애플리케이션 요청(들)에 기초하여 상기 프로세서와 상기 시스템 메인 메모리의 상기 제2 메모리 레벨 및 상기 제1 메모리 레벨 사이에서 데이터를 전송하는 메모리 제어기
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 제2 메모리 레벨 및 상기 디스크 저장소 메모리는 적어도 하나의 비휘발성 메모리 디바이스 및 제어 로직을 포함하는 메모리 서브시스템에 포함되며,
    상기 시스템은,
    상기 메모리 서브시스템을, 상기 제2 메모리 레벨을 포함하는 메모리 파티션 및 디스크 저장소 메모리 파티션으로 분할하고, 상기 디스크 저장소 메모리 파티션을, 부팅가능한 논리 디스크 볼륨(bootable logical disk volume)으로서 상기 시스템의 BIOS(basic input/output system)에 제시하는 제2 메모리 레벨 제어기
    를 더 포함하는 시스템.
  3. 제2항에 있어서, 상기 메모리 서브시스템의 상기 비휘발성 메모리 디바이스(들)는 솔리드 스테이트 디스크(SSD) 메모리를 포함하는 시스템.
  4. 제1항에 있어서, 상기 메모리 제어기는 상기 프로세서에 포함되는 시스템.
  5. 제1항에 있어서, 상기 제1 메모리 레벨에서 상기 제2 메모리 레벨로 전송된 데이터를 압축하는 로직을 더 포함하는 시스템.
  6. 제5항에 있어서, 상기 제2 메모리 레벨은 상기 제1 메모리 레벨로부터 전송된 데이터를 압축된 형태로 저장하는 시스템.
  7. 제5항에 있어서, 상기 로직은 또한 상기 제1 메모리 레벨과 상기 제2 메모리 레벨 사이에서 전송된 데이터를 암호화하는 시스템.
  8. 제1항에 있어서, 상기 메모리 제어기는 또한, 상기 제1 메모리 레벨에 포함된 데이터 세그먼트에서 정정할 수 없는 에러를 검출하는 것에 응답하여,
    상기 데이터 세그먼트가 상기 제2 메모리 레벨에 포함된 대응하는 데이터 세그먼트에 대하여 수정되지 않았는지를 결정하고;
    상기 데이터 세그먼트가 수정되지 않았다는 결정에 응답하여 상기 제2 메모리 레벨에 포함된 상기 대응하는 데이터 세그먼트를 상기 제1 메모리 레벨로 복사하고;
    상기 데이터 세그먼트가 수정된 경우, 시스템 에러를 보고하는 시스템.
  9. 제8항에 있어서, 상기 메모리 제어기는, 상기 제2 메모리 레벨에 포함된 상기 대응하는 데이터 세그먼트에서 정정할 수 없는 에러를 검출하는 것에 응답하여, 시스템 에러를 보고하는 시스템.
  10. 디바이스로서,
    휘발성 메모리의 제1 메모리 레벨과, 제2 메모리 레벨을 포함하며, 시스템 메인 메모리로 기능하는 메인 메모리 - 상기 제1 메모리 레벨은 하나 이상의 DRAM 장치를 포함하고 상기 제2 메모리 레벨의 캐시된 서브셋을 포함하며, 상기 제2 메모리 레벨은 비휘발성 메모리를 포함하고, 상기 메인 메모리는 상기 메인 메모리와 별도인 프로세서에 통신상 결합되고, 상기 프로세서에 의해 실행되는 운영 체제(OS)에 제시되는 상기 시스템 메인 메모리의 크기는 상기 제2 메모리 레벨의 크기임 - ; 및
    메인 메모리 제어기
    를 포함하고,
    상기 메인 메모리 제어기는,
    요청된 데이터 피연산자가 상기 제1 메모리 레벨에 저장되어 있는지를 결정하고,
    상기 요청된 데이터 피연산자가 상기 제1 메모리 레벨에 저장되어 있지 않다는 결정에 응답하여, 상기 제2 메모리 레벨로부터 상기 데이터 피연산자를 검색하는 디바이스.
  11. 제10항에 있어서, 상기 제2 메모리 레벨은 디스크 저장소 메모리를 더 포함하는 메모리 서브시스템에 포함되며,
    상기 메모리 서브시스템은,
    적어도 하나의 비휘발성 메모리 디바이스,
    상기 제2 메모리 레벨을 포함하는 메모리 파티션, 및
    상기 디스크 저장소 메모리를 포함하고 부팅가능한 논리 디스크 볼륨을 포함하는 디스크 저장소 메모리 파티션
    을 포함하는 디바이스.
  12. 제11항에 있어서, 상기 메모리 서브시스템의 상기 비휘발성 메모리 디바이스(들)는 SSD 메모리를 포함하는 디바이스.
  13. 제10항에 있어서, 상기 제1 메모리 레벨에서 상기 제2 메모리 레벨로 전송된 데이터를 압축하는 로직을 더 포함하는 디바이스.
  14. 제13항에 있어서, 상기 제2 메모리 레벨은 상기 제1 메모리 레벨로부터 전송된 데이터를 압축된 형태로 저장하는 디바이스.
  15. 제13항에 있어서, 상기 로직은 또한 상기 제1 메모리 레벨과 상기 제2 메모리 레벨 사이에서 전송되는 데이터를 암호화하는 디바이스.
  16. 제10항에 있어서, 상기 메모리 제어기는 또한, 상기 제1 메모리 레벨에 포함된 요청된 데이터 피연산자에서 정정할 수 없는 에러를 검출하는 것에 응답하여,
    상기 요청된 데이터 피연산자가 상기 제2 메모리 레벨에 포함된 대응하는 데이터 피연산자에 대하여 수정되지 않았는지를 결정하고;
    상기 요청된 데이터 피연산자가 수정되지 않았다는 결정에 응답하여, 상기 제2 메모리 레벨에 포함된 상기 대응하는 데이터 피연산자를 상기 제1 메모리 레벨로 복사하고;
    상기 제1 메모리 레벨 내의 상기 요청된 데이터 피연산자가 수정된 경우, 시스템 에러를 보고하는 디바이스.
  17. 제16항에 있어서, 상기 메모리 제어기는, 상기 제2 메모리 레벨에 포함된 상기 대응하는 데이터 피연산자에서 정정할 수 없는 에러를 검출하는 것에 응답하여, 시스템 에러를 보고하는 디바이스.
  18. 프로세서를 통하여 운영 체제(OS) 및 애플리케이션을 실행하는 단계;
    시스템 메인 메모리에서 데이터 피연산자에 대한 요청을 수신하는 단계 - 상기 시스템 메인 메모리는 상기 프로세서와 별도이며, 휘발성 메모리의 제1 메모리 레벨 및 비휘발성 메모리를 포함하는 메모리의 제2 메모리 레벨을 포함하고, 상기 제1 메모리 레벨은 하나 이상의 DRAM 장치를 포함하고 상기 제2 메모리 레벨의 캐시된 서브셋을 포함하며, 상기 제2 메모리 레벨은 비휘발성 메모리를 포함하고, 상기 OS에 제시되는 상기 시스템 메인 메모리의 크기는 상기 제2 메모리 레벨의 크기임 -;
    상기 애플리케이션에 의해 요청된 상기 데이터 피연산자가 상기 시스템 메인 메모리의 제1 메모리 레벨에 저장되어 있는지를 결정하는 단계;
    상기 요청된 데이터 피연산자가 상기 제1 메모리 레벨에 저장되어 있지 않다는 결정에 응답하여, 상기 시스템 메인 메모리의 상기 제2 메모리 레벨로부터 상기 데이터 피연산자를 검색하고, 상기 데이터 피연산자를 상기 제1 메모리 레벨에 저장하는 단계; 및
    상기 제1 메모리 레벨로부터 상기 요청된 데이터 피연산자를 반환하는 단계
    를 포함하는 방법.
  19. 제18항에 있어서, 상기 제2 메모리 레벨은, 상기 제1 메모리 레벨로부터 전송된 데이터를, 압축된 형태 및 암호화된 형태 중 적어도 하나로 저장하는 방법.
  20. 제18항에 있어서,
    상기 제1 메모리 레벨에 포함된 상기 요청된 데이터 피연산자에서 정정할 수 없는 에러를 검출하는 단계;
    상기 데이터 피연산자가 상기 제2 메모리 레벨에 포함된 상기 데이터 피연산자의 대응하는 복사본에 대하여 수정되지 않았는지를 결정하는 단계;
    상기 데이터 피연산자가 수정되지 않았다는 결정에 응답하여 상기 제2 메모리 레벨에 포함된 상기 대응하는 데이터 피연산자를 상기 제1 메모리 레벨로 복사하는 단계; 및
    상기 제1 메모리 레벨에 포함된 상기 요청된 데이터 피연산자가 수정된 경우, 시스템 에러를 보고하는 단계
    를 더 포함하는 방법.
KR20137016240A 2010-12-22 2011-11-18 2-레벨 시스템 메인 메모리 KR101480659B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/976,545 2010-12-22
US12/976,545 US8612676B2 (en) 2010-12-22 2010-12-22 Two-level system main memory
PCT/US2011/061466 WO2012087471A2 (en) 2010-12-22 2011-11-18 Two-level system main memory

Publications (2)

Publication Number Publication Date
KR20130088883A KR20130088883A (ko) 2013-08-08
KR101480659B1 true KR101480659B1 (ko) 2015-01-09

Family

ID=46314707

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20137016240A KR101480659B1 (ko) 2010-12-22 2011-11-18 2-레벨 시스템 메인 메모리

Country Status (5)

Country Link
US (5) US8612676B2 (ko)
EP (2) EP2963554B1 (ko)
KR (1) KR101480659B1 (ko)
TW (1) TWI439858B (ko)
WO (1) WO2012087471A2 (ko)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612676B2 (en) * 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US9077761B2 (en) * 2011-02-16 2015-07-07 Dell Products L.P. System and method for scalable, efficient, and robust system management communications via vendor defined extensions
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
KR101612202B1 (ko) 2011-09-28 2016-04-12 인텔 코포레이션 동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
EP2761465A4 (en) 2011-09-30 2015-06-24 Intel Corp Autonomous initialization of non-volatile random access memory in a computer system
CN103946811B (zh) 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN107391397A (zh) 2011-09-30 2017-11-24 英特尔公司 支持近存储器和远存储器访问的存储器通道
EP2761467B1 (en) 2011-09-30 2019-10-23 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
CN104115136B (zh) 2011-09-30 2017-12-08 英特尔公司 非易失性随机访问存储器中存储bios的装置、方法和系统
CN108549609A (zh) 2011-09-30 2018-09-18 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
CN103946824B (zh) 2011-11-22 2016-08-24 英特尔公司 一种用于非易失性随机访问存储器的访问控制方法、装置及系统
US9829951B2 (en) 2011-12-13 2017-11-28 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
WO2013089686A1 (en) 2011-12-13 2013-06-20 Intel Corporation A method and system for providing instant responses to sleep state transitions with non-volatile random access memory
WO2013095385A1 (en) 2011-12-20 2013-06-27 Intel Corporation Apparatus and method for phase change memory drift management
US9448922B2 (en) 2011-12-21 2016-09-20 Intel Corporation High-performance storage structures and systems featuring multiple non-volatile memories
KR101572403B1 (ko) 2011-12-22 2015-11-26 인텔 코포레이션 메모리 채널 셧다운에 의한 전력 절약
CN104137084B (zh) 2011-12-28 2017-08-11 英特尔公司 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射
CN104126181A (zh) * 2011-12-30 2014-10-29 英特尔公司 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换
US20140006543A1 (en) * 2012-06-29 2014-01-02 William M Pitts Distributed filesystem atomic flush transactions
US9418700B2 (en) 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
US8830716B2 (en) * 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
US9424198B2 (en) * 2012-11-30 2016-08-23 Intel Corporation Method, system and apparatus including logic to manage multiple memories as a unified exclusive memory
KR102053953B1 (ko) * 2013-02-04 2019-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
WO2014143036A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Method for pinning data in large cache in multi-level memory system
CN105051707A (zh) 2013-04-01 2015-11-11 惠普发展公司,有限责任合伙企业 外部存储器控制器
EP2992438B1 (en) * 2013-04-30 2019-08-28 Hewlett-Packard Enterprise Development LP Memory network
EP3025347A1 (en) * 2013-07-26 2016-06-01 Hewlett Packard Enterprise Development LP First data in response to second read request
EP3049943B1 (en) * 2013-09-27 2018-10-24 Intel Corporation Techniques to compose memory resources across devices
WO2015116135A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Reducing read latency of memory modules
US9594910B2 (en) * 2014-03-28 2017-03-14 Intel Corporation In-system provisioning of firmware for a hardware platform
CN103942162A (zh) * 2014-05-14 2014-07-23 清华大学 在存储器中进行多访问的方法、装置和存储系统
US9710173B2 (en) * 2014-05-20 2017-07-18 Micron Technology, Inc. Read cache memory with DRAM class promotion
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
WO2016144362A1 (en) 2015-03-12 2016-09-15 Hewlett Packard Enterprise Development Lp Memory device write based on mapping
US10204047B2 (en) 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US10387259B2 (en) 2015-06-26 2019-08-20 Intel Corporation Instant restart in non volatile system memory computing systems with embedded programmable data checking
US10073659B2 (en) 2015-06-26 2018-09-11 Intel Corporation Power management circuit with per activity weighting and multiple throttle down thresholds
US9817738B2 (en) * 2015-09-04 2017-11-14 Intel Corporation Clearing poison status on read accesses to volatile memory regions allocated in non-volatile memory
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10185501B2 (en) 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10261901B2 (en) 2015-09-25 2019-04-16 Intel Corporation Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US20170109072A1 (en) * 2015-10-16 2017-04-20 SK Hynix Inc. Memory system
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10095618B2 (en) 2015-11-25 2018-10-09 Intel Corporation Memory card with volatile and non volatile memory space having multiple usage model configurations
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US20170160987A1 (en) * 2015-12-08 2017-06-08 Intel Corporation Multilevel main memory indirection
US10067686B2 (en) 2015-12-16 2018-09-04 Intel Corporation Apparatus and method for enforcing timing requirements for a memory device
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US9747041B2 (en) 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US10228870B2 (en) * 2016-02-04 2019-03-12 Seagate Technology Llc Redundant write transfer detection
US10534619B2 (en) 2016-02-26 2020-01-14 Smart Modular Technologies, Inc. Memory management system with multiple boot devices and method of operation thereof
US10120581B2 (en) 2016-03-30 2018-11-06 Qualcomm Incorporated Generating compressed data streams with lookback pre-fetch instructions for pre-fetching decompressed data from a lookback buffer
US10007606B2 (en) 2016-03-30 2018-06-26 Intel Corporation Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory
US10185619B2 (en) * 2016-03-31 2019-01-22 Intel Corporation Handling of error prone cache line slots of memory side cache of multi-level system memory
KR20170143070A (ko) 2016-06-17 2017-12-29 삼성전자주식회사 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈
US10120806B2 (en) 2016-06-27 2018-11-06 Intel Corporation Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US20180088853A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State
US10304418B2 (en) 2016-09-27 2019-05-28 Intel Corporation Operating system transparent system memory abandonment
US10048868B2 (en) 2016-09-29 2018-08-14 Intel Corporation Replacement of a block with a compressed block to increase capacity of a memory-side cache
US10496544B2 (en) 2016-12-29 2019-12-03 Intel Corporation Aggregated write back in a direct mapped two level memory
US10445261B2 (en) 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US10198354B2 (en) 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
US10241916B2 (en) 2017-03-31 2019-03-26 Intel Corporation Sparse superline removal
US10304814B2 (en) 2017-06-30 2019-05-28 Intel Corporation I/O layout footprint for multiple 1LM/2LM configurations
US10372609B2 (en) 2017-09-14 2019-08-06 Intel Corporation Fast cache warm-up

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809526A (en) * 1996-10-28 1998-09-15 International Business Machines Corporation Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3909798A (en) 1974-01-25 1975-09-30 Raytheon Co Virtual addressing method and apparatus
JP3451099B2 (ja) 1991-12-06 2003-09-29 株式会社日立製作所 外部記憶サブシステム
FI102788B (fi) * 1995-09-14 1999-02-15 Nokia Telecommunications Oy Yhteisen levydatan hallinta kahdennetussa tietokoneyksikössä
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JP3210590B2 (ja) 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US5968424A (en) 1997-05-07 1999-10-19 Shigeru Shimosawa Manufacturing method for artificial tooth
US6707948B1 (en) * 1997-11-17 2004-03-16 The Regents Of The University Of California Image compression for memory-constrained decoders
US6480929B1 (en) * 1998-10-31 2002-11-12 Advanced Micro Devices Inc. Pseudo-concurrency between a volatile memory and a non-volatile memory on a same data bus
US6493776B1 (en) 1999-08-12 2002-12-10 Mips Technologies, Inc. Scalable on-chip system bus
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6912695B2 (en) * 2001-09-13 2005-06-28 Pixia Corp. Data storage and retrieval system and method
US7911952B1 (en) 2002-07-12 2011-03-22 Mips Technologies, Inc. Interface with credit-based flow control and sustained bus signals
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US7146455B2 (en) * 2003-05-19 2006-12-05 Accton Technology Corporation System and method for optimized access to memory devices requiring block writing
US7587572B1 (en) * 2004-08-31 2009-09-08 Sun Microsystems, Inc. Method and system for managing process memory configured in resizable uncompressed and compressed regions
US7277988B2 (en) * 2004-10-29 2007-10-02 International Business Machines Corporation System, method and storage medium for providing data caching and data compression in a memory subsystem
IES20040777A2 (en) * 2004-11-22 2006-04-19 Pendula Ltd Protection of electronic data
US7290702B2 (en) * 2004-12-28 2007-11-06 Elbex Video Ltd. Method and apparatus for recording and utilizing unknown signals of remote control devices
US7426649B2 (en) 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
US7437597B1 (en) * 2005-05-18 2008-10-14 Azul Systems, Inc. Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7911474B2 (en) * 2006-04-03 2011-03-22 Siemens Medical Solutions Usa, Inc. Memory management system and method for GPU-based volume rendering
US20070294543A1 (en) * 2006-06-16 2007-12-20 Arachnoid Biometrics Identification Group Corp. Method for reading encrypted data on an optical storage medium
US7761625B2 (en) * 2006-09-28 2010-07-20 Virident Systems, Inc. Methods for main memory with non-volatile type memory modules, and related technologies
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
WO2008055269A2 (en) 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
JP5049733B2 (ja) * 2007-10-17 2012-10-17 株式会社東芝 情報処理システム
US8094504B2 (en) 2008-01-04 2012-01-10 Integrated Device Technology Inc. Buffered DRAM
US20090254705A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Bus attached compressed random access memory
US20090271563A1 (en) * 2008-04-28 2009-10-29 Microsoft Corporation Flash memory transactioning
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US20100005212A1 (en) 2008-07-01 2010-01-07 International Business Machines Corporation Providing a variable frame format protocol in a cascade interconnected memory system
US8205138B2 (en) 2008-08-07 2012-06-19 International Business Machines Corporation Memory controller for reducing time to initialize main memory
JP5231642B2 (ja) 2008-08-08 2013-07-10 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. メモリモジュール内の独立制御式仮想メモリ装置
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR20100133710A (ko) * 2009-06-12 2010-12-22 삼성전자주식회사 메모리 시스템 및 그것의 코드 데이터 로딩 방법
US8484414B2 (en) * 2009-08-31 2013-07-09 Hitachi, Ltd. Storage system having plurality of flash packages
US8479061B2 (en) * 2009-09-24 2013-07-02 AGIGA Tech Solid state memory cartridge with wear indication
TWI433163B (zh) 2009-12-23 2014-04-01 Mstar Semiconductor Inc 記憶體控制器及其控制方法
US8612809B2 (en) * 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US8489833B2 (en) * 2010-08-20 2013-07-16 Transcend Information, Inc. Data backup method for flash memory module and solid state drive
US8527837B2 (en) * 2010-10-15 2013-09-03 Micron Technology, Inc. Selective error control coding in memory devices
US8612676B2 (en) * 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
CN102231424B (zh) * 2011-06-24 2014-04-30 清华大学 相变存储单元及相变存储器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809526A (en) * 1996-10-28 1998-09-15 International Business Machines Corporation Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation

Also Published As

Publication number Publication date
US20180004432A1 (en) 2018-01-04
TW201237624A (en) 2012-09-16
US20140351660A1 (en) 2014-11-27
KR20130088883A (ko) 2013-08-08
EP2963554A1 (en) 2016-01-06
EP2963554B1 (en) 2018-07-18
US20120166891A1 (en) 2012-06-28
US8612676B2 (en) 2013-12-17
WO2012087471A2 (en) 2012-06-28
EP2656225A2 (en) 2013-10-30
US20190243558A1 (en) 2019-08-08
US10365832B2 (en) 2019-07-30
US9087584B2 (en) 2015-07-21
US20160041772A1 (en) 2016-02-11
EP2656225B1 (en) 2019-02-13
WO2012087471A3 (en) 2013-01-10
TWI439858B (zh) 2014-06-01
US9690493B2 (en) 2017-06-27
EP2656225A4 (en) 2015-01-21

Similar Documents

Publication Publication Date Title
CN102598019B (zh) 用于分配存储的设备、系统和方法
US9075710B2 (en) Non-volatile key-value store
US8706968B2 (en) Apparatus, system, and method for redundant write caching
US9519647B2 (en) Data expiry in a non-volatile device
US9529708B2 (en) Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software
US9348760B2 (en) System and method for efficient flash translation layer
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
US9058123B2 (en) Systems, methods, and interfaces for adaptive persistence
US8850114B2 (en) Storage array controller for flash-based storage devices
US8756375B2 (en) Non-volatile cache
US9767032B2 (en) Systems and methods for cache endurance
US9195603B2 (en) Storage caching
KR100881187B1 (ko) 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
US10209904B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
JP2012503835A (ja) Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US10318324B2 (en) Virtualization support for storage devices
US20140304475A1 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US9213633B2 (en) Flash translation layer with lower write amplification
US9772938B2 (en) Auto-commit memory metadata and resetting the metadata by writing to special address in free space of page storing the metadata
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
US20130205114A1 (en) Object-based memory storage
US9442844B2 (en) Apparatus, system, and method for a storage layer
US20130275661A1 (en) Platform storage hierarchy with non-volatile random access memory with configurable partitions
CN103946814B (zh) 计算机系统中的非易失性随机存取存储器的自主初始化

Legal Events

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

Payment date: 20180103

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190103

Year of fee payment: 5