KR20150138399A - 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 - Google Patents

2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 Download PDF

Info

Publication number
KR20150138399A
KR20150138399A KR1020157032928A KR20157032928A KR20150138399A KR 20150138399 A KR20150138399 A KR 20150138399A KR 1020157032928 A KR1020157032928 A KR 1020157032928A KR 20157032928 A KR20157032928 A KR 20157032928A KR 20150138399 A KR20150138399 A KR 20150138399A
Authority
KR
South Korea
Prior art keywords
memory
cache
msc
pcm
controller
Prior art date
Application number
KR1020157032928A
Other languages
English (en)
Other versions
KR101915073B1 (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 KR20150138399A publication Critical patent/KR20150138399A/ko
Application granted granted Critical
Publication of KR101915073B1 publication Critical patent/KR101915073B1/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/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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/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
    • 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/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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/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/0751Error or fault detection not based on redundancy
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/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 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/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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/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
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/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
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • G06F2212/69
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

멀티 레벨 메모리 계층구조 내의 메모리측 캐쉬(MSC)의 특정된 영역을 플러쉬하기 위한 시스템 및 방법이 설명된다. 예를 들어, 한 실시예에 따른 컴퓨터 시스템은: 비휘발성 시스템 메모리와 상기 비휘발성 시스템 메모리의 부분들을 캐슁하기 위한 휘발성 메모리측 캐쉬(MSC)로 구성된 메모리 서브시스템; 및 MSC의 특정된 영역과 연관된 비활성화 조건에 응답하여 MSC의 특정된 영역을 상기 비휘발성 시스템 메모리에 플러쉬하기 위한 플러쉬 엔진을 포함한다.

Description

2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단{DYNAMIC PARTIAL POWER DOWN OF MEMORY-SIDE CACHE IN A 2-LEVEL MEMORY HIERARCHY}
본 발명은 대체로 컴퓨터 시스템 분야에 관한 것이다. 더 구체적으로는, 본 발명은 멀티 레벨 메모리 계층구조를 구현하기 위한 장치 및 방법에 관한 것이다.
A. 현재의 메모리 및 스토리지 구성
오늘날 컴퓨터 혁신에 대한 제한 요소들 중 하나는 메모리와 스토리지 기술이다. 종래의 컴퓨터 시스템에서, (메인 메모리, 1차 메모리, 실행가능한 메모리라고도 알려진) 시스템 메모리는 통상적으로 동적 랜덤 액세스 메모리(DRAM)에 의해 구현된다. DRAM-기반의 메모리는 아무런 메모리 판독이나 기입이 발생하지 않더라도 끊임없이 내부 커패시터를 재충전해야 하므로 전력을 소비한다. DRAM-기반의 메모리는 휘발성으로서, 이것은 DRAM 메모리에 저장된 데이터는 일단 전력이 제거되고 나면 소실된다는 것을 의미한다. 종래의 컴퓨터 시스템은 성능을 개선시키기 위해 멀티 레벨의 캐슁에도 의존한다. 캐쉬는, 시스템 메모리로부터 서비스될 수 있는 것보다 빠른 메모리 액세스 요청을 서비스하기 위해 프로세서와 시스템 메모리 사이에 위치한 고속 메모리이다. 이러한 캐쉬는 통상적으로 정적 랜덤 액세스 메모리(SRAM)로 구현된다. 캐쉬 관리 프로토콜은, 가장 빈번하게 액세스되는 데이터와 명령어가 캐쉬 레벨들 중 하나 내에 저장되도록 보장하는데 사용될 수 있음으로써, 메모리 액세스 트랜잭션의 횟수를 줄이고 성능을 향상시킨다.
(2차 스토리지 또는 디스크 스토리지라고도 알려진) 대용량 스토리지에 관하여, 종래의 대용량 스토리지 장치는, 통상적으로, 자기 매체(예를 들어, 하드 디스크 드라이브), 광학 매체(예를 들어, 컴팩트 디스크(CD) 드라이브, 디지털 범용 디스크(DVD) 등), 홀로그래픽 매체, 및/또는 대용량-스토리지 플래시 메모리(예를 들어, 고체 상태 드라이브(SSD), 착탈식 플래시 드라이브 등)를 포함한다. 일반적으로, 이들 스토리지 장치는, 다양한 I/O 프로토콜을 구현하는 다양한 I/O 어댑터를 통해 프로세서에 의해 액세스되기 때문에 입력/출력(I/O) 장치로 간주된다. 이들 I/O 어댑터 및 I/O 프로토콜은 상당한 양의 전력을 소비하고, 다이 면적과 플랫폼의 폼팩터에 상당한 영향을 미칠 수 있다. 영구적 전원에 접속되지 않을 때 제한된 배터리 수명을 갖는 휴대형 또는 모바일 장치(예를 들어, 랩탑, 넷북, 태블릿 컴퓨터, PDA(personal digital assistant), 휴대형 매체 재생기, 휴대형 게임 장치, 디지털 카메라, 모바일 전화, 스마트폰, 피쳐 폰 등)는, 활성 및 유휴 전력 예산을 충족하기 위하여 통상적으로 저전력 인터커넥트와 I/O 제어기를 통해 프로세서에 결합되는 착탈식 대용량 스토리지 장치(예를 들어, 임베디드 멀티미디어 카드(eMMC), SD(Secure Digital) 카드)를 포함할 수 있다.
(BIOS 플래시라고 알려진) 부트 메모리 등의) 펌웨어 메모리에 관하여, 종래의 컴퓨터 시스템은, 자주 판독되지만 좀처럼(또는 전혀) 기입되지 않는 영구 시스템 정보를 저장하기 위해 통상적으로 플래시 메모리 장치를 이용한다. 예를 들어, 부트 프로세스 동안에 핵심 시스템 컴포넌트(기본 입출력 시스템(BIOS) 이미지)를 초기화하기 위해 프로세서에 의해 실행되는 초기 명령어는 통상적으로 플래시 메모리 장치에 저장된다. 시장에서 현재 이용가능한 플래시 메모리 장치는 일반적으로 제한된 속도(예를 들어, 50 MHz)를 가진다. 이 속도는 판독 프로토콜에 대한 오버헤드에 의해 더 감소된다(예를 들어, 2.5 MHz). BIOS 실행 속도를 가속하기 위하여, 종래의 프로세서는 일반적으로 부트 프로세스의 PEI(Pre-Extensible Firmware Interface) 국면 동안에 BIOS 코드의 일부를 캐슁한다. 프로세서 캐쉬의 크기는 ("PEI" 바이오스 코드"라고도 알려진) PEI 국면 동안에 이용되는 BIOS 코드의 크기에 제약을 부과한다.
B. 상변화 메모리(PCM; Phase-Change Memory) 및 관련 기술
때때로 상변화 랜덤 액세스 메모리(PRAM 또는 PCRAM), PCME, OUM(Ovonic Unified Memory), 또는 칼코겐화물 RAM(C-RAM)이라고도 하는 상변화 메모리(PCM)는, 칼코겐화물 유리(chalcogenide glass)의 고유 거동을 활용하는 비휘발성 컴퓨터 메모리 유형이다. 전류의 통과에 의해 생성되는 열의 결과로서, 칼코겐화물 유리는 2개 상태: 결정 및 아몰퍼스 사이에서 스위칭될 수 있다. 최근 버전의 PCM은 2개의 추가적인 별개의 상태들을 달성할 수 있다.
PCM은 플래시보다 높은 성능을 제공하는데, 이것은, PCM의 메모리 요소는 더 신속하게 스위칭될 수 있고, 기입(개개의 비트를 1이나 0으로 변경하는 것)이 셀들의 전체 블록을 먼저 소거할 필요없이 이루어질 수 있고, 기입으로부터 열화가 더 느리기 때문이다(PCM 장치는 대략 1억회의 기입 사이클까지 견딜 수 있고; PCM 열화는 프로그래밍 동안의 열 팽창, 금속(및 기타 재료) 마이그레이션, 및 기타의 메커니즘에 기인한 것이다).
이하의 설명과 첨부된 도면은 본 발명의 실시예를 예시하는데 이용된다. 도면에서:
도 1은 본 발명의 실시예에 따른 캐쉬 및 시스템 메모리 배열을 나타낸다;
도 2는 본 발명의 실시예에 채용된 메모리 및 스토리지 계층구조를 나타낸다;
도 3은 본 발명의 실시예들이 구현될 수 있는 컴퓨터 시스템을 나타낸다;
도 4a는 본 발명의 실시예에 따른 PCM을 포함하는 제1 시스템 아키텍쳐를 나타낸다;
도 4b는 본 발명의 실시예에 따른 PCM을 포함하는 제2 시스템 아키텍쳐를 나타낸다;
도 4c는 본 발명의 실시예에 따른 PCM을 포함하는 제3 시스템 아키텍쳐를 나타낸다;
도 4d는 본 발명의 실시예에 따른 PCM을 포함하는 제4 시스템 아키텍쳐를 나타낸다;
도 4e는 본 발명의 실시예에 따른 PCM을 포함하는 제5 시스템 아키텍쳐를 나타낸다;
도 4f는 본 발명의 실시예에 따른 PCM을 포함하는 제6 시스템 아키텍쳐를 나타낸다;
도 4g는 본 발명의 실시예에 따른 PCM을 포함하는 제7 시스템 아키텍쳐를 나타낸다;
도 4h는 본 발명의 실시예에 따른 PCM을 포함하는 제8 시스템 아키텍쳐를 나타낸다;
도 4i는 본 발명의 실시예에 따른 PCM을 포함하는 제9 시스템 아키텍쳐를 나타낸다;
도 4j는 본 발명의 실시예에 따른 PCM을 포함하는 제10 시스템 아키텍쳐를 나타낸다;
도 4k는 본 발명의 실시예에 따른 PCM을 포함하는 제11 시스템 아키텍쳐를 나타낸다;
도 4l은 본 발명의 실시예에 따른 PCM을 포함하는 제12 시스템 아키텍쳐를 나타낸다;
도 4m는 본 발명의 실시예에 따른 PCM을 포함하는 제13 시스템 아키텍쳐를 나타낸다;
도 7a 및 도 7b는 MSC의 영역을 비활성화하기 위한 본 발명의 실시예를 나타낸다;
도 7a 및 도 7b는 MSC의 영역을 비활성화하기 위한 본 발명의 실시예를 나타낸다;
도 8a 및 도 8b는 전원 고장 상태에 응답하여 MSC를 플러쉬하기 위한 본 발명의 실시예를 나타낸다;
도 9a 및 도 9b는 하이버네이션 상태에 응답하여 MSC로부터 더티 캐쉬 라인(dirty cache line)을 플러쉬하기 위한 본 발명의 실시예를 나타낸다.
이하의 설명에서, 본 발명의 더 철저한 이해를 제공하기 위하여, 로직 구현, 연산코드, 피연산자 명시 수단, 자원 분할/공유/복제 구현, 시스템 컴포넌트의 유형 및 상호관계, 및 로직 분할/통합 선택 등의 다양한 특정한 세부사항이 개시된다. 그러나, 당업자라면 본 발명은 이와 같은 특정한 세부사항없이 실시될 수 있다는 것을 이해할 것이다. 다른 예들에서, 제어 구조, 게이트 레벨 회로, 및 전체 소프트웨어 명령어 시퀀스는 본 발명을 불명확하게 하지 않도록 상세히 도시되지 않았다. 당업자라면, 포함된 설명을 통해, 과도한 실험없이 적절한 기능을 구현할 수 있을 것이다.
명세서에서 "하나의 실시예", "실시예", "예시적 실시예" 등의 언급은, 설명되는 실시예가 특정한 피쳐, 구조, 또는 특징을 포함할 수 있지만, 모든 실시예가 반드시 그 특정한 피쳐, 구조, 또는 특징을 포함하는 것은 아님을 나타낸다. 게다가, 이와 같은 문구는 반드시 동일한 실시예를 가리키는 것은 아니다. 또한, 특정한 피쳐, 구조, 또는 특징이 실시예와 연계하여 기술될 때, 명시적으로 설명되든 아니든 다른 실시예와 연계하여 이와 같은 피쳐, 구조, 또는 특징에 영향을 미치는 것은 당업자의 지식의 범위 내에 있는 것이라고 간주할 수 있다.
이하의 설명 및 청구항에서, 용어 "결합된" 및 "접속된"은, 이들의 파생어와 함께 사용될 수 있다. 이들 용어들은 서로 동의어로서 의도한 것은 아님을 이해해야 한다. "결합된"은, 물리적 또는 전기적으로 서로 직접 접촉할 수도 있고 아닐 수도 있는 2개 이상의 요소가 서로 협력하거나 상호작용함을 나타내기 위해 사용된다. "접속된"은 서로 결합된 2개 이상의 요소들 간의 통신의 확립을 나타내기 위해 사용된다.
대괄호로 묶은 텍스트와 점선(예를 들어, 큰 점선, 작은 점선, 도트-점선, 도트) 테두리의 블록들이 때때로 본 명세서에서 사용되어 본 발명의 실시예들에 추가의 피쳐를 첨가하는 선택사항적인 동작/컴포넌트를 나타낸다. 그러나, 이러한 표기가, 이러한 것들이 단지 옵션이거나 선택사항적인 동작/컴포넌트임을 의미하거나 및/또는 굵은 테두리의 블록들이 본 발명의 소정 실시예에서 선택사항이 아니라는 것을 의미하는 것으로 간주되어서는 안 된다.
서언
메모리 용량과 성능 요건은, 가상화 등의 새로운 사용 모델 및 증가하는 프로세서 코어수와 함께 계속 증가한다. 또한, 메모리 전력과 비용은 각각 전자 시스템의 전체 전력과 비용의 중요한 성분이 되었다.
본 발명의 일부 실시예는, 메모리 기술들간의 성능 요건과 용량 요건을 지능적으로 세분함으로써 상기 도전과제를 해결한다. 이 접근법의 초점은, DRAM 등의 비교적 고속 메모리의 비교적 작은 양으로 성능을 제공하는 한편, 상당히 더 싸고 더 조밀한 비휘발성 랜덤 액세스 메모리(NVRAM)를 이용하여 시스템 메모리의 벌크를 구현하는데 있다. 이하에서 설명되는 본 발명의 실시예는, NVRAM의 이용을 위한 계층구조적 메모리 서브시스템 조직을 가능케 하는 플랫폼 구성을 정의한다. 메모리 계층구조에서 NVRAM의 이용은 또한, 이하에서 상세히 설명되는 바와 같이, 확장된 부트 공간과 대용량 스토리지 구현 등의 새로운 사용법을 가능케 한다.
도 1은 본 발명의 실시예에 따른 캐쉬 및 시스템 메모리 배열을 나타낸다. 구체적으로, 도 1은, 한 세트의 내부 프로세서 캐쉬(120), 내부 캐쉬(들)(106)과 외부 캐쉬들(107-109) 양쪽 모두를 포함할 수 있는 원격 메모리 캐쉬(121)로서 역할하는 "근방 메모리(near memory)", 및 "원격 메모리(far memory)"(122)를 포함하는 메모리 계층구조를 도시하고 있다. 본 발명의 일부 실시예에서 "원격 메모리"로 이용될 수 있는 메모리의 한 특정한 유형은 비휘발성 랜덤 액세스 메모리("NVRAM")이다. 따라서, NVRAM의 개요가 이하에서 제공되고, 원격 메모리와 근방 메모리의 개요가 후속된다.
A. 비휘발성 랜덤 액세스 메모리("NVRAM")
PCM, 상변화 메모리 및 스위치(Phase Change Memory and Switch; PCMS) (후자는 전자보다 더 구체적인 구현임), 바이트-어드레싱가능한 영구 메모리(byte-addressable persistent memory; BPRAM), 범용 메모리(universal memory), Ge2Sb2Te5, 프로그래머블 금속화 셀(programmable metallization cell; PMC), 저항성 메모리(resistive memory; RRAM), RESET (아몰퍼스) 셀, SET (결정성) 셀, PCME, 오브신스키 메모리(Ovshinsky memory), (중합체 메모리 및 폴리(N-vinylcarbazole)이라고도 알려진) 강유전성 메모리, (스핀트로닉스(Spintronics)라고도 알려진) 강자성 메모리, SPRAM (spin-transfer torque RAM), STRAM (spin tunneling RAM), 자기저항 메모리, 자기 메모리, 자기 랜덤 액세스 메모리(MRAM)), 및 반도체-산화물-질화물-산화물-반도체(SONOS, 유전체 메모리라고도 알려짐)를 포함한, NVRAM을 위한 많은 가능한 기술적 선택이 있다.
본 출원에서 설명되는 메모리 계층구조에서의 이용을 위해, NVRAM은 다음과 같은 특성을 가진다:
(1) 고체 상태 디스크(SSD)에서 이용되는 FLASH 메모리와 유사하지만 휘발성인 SRAM 및 DRAM과는 달리 전원이 제거되더라도 그 내용을 유지;
(2) 유휴상태일 때 SRAM 및 DRAM 등의 휘발성 메모리보다 낮은 전력 소비;
(3) (랜덤 액세스가능한 것으로도 알려진) SRAM 및 DRAM과 유사한 랜덤 액세스;
(4) (NOR FLASH의 경우 크기는 최소 64 Kbyte이고 NAND FLASH의 경우 16 Kbyte인 "블록"만을 한 번에 재기입할 수 있고 소거할 수 있는) SSD에서 발견되는 FLASH보다 낮은 입도 레벨(예를 들어, 바이트 레벨)에서 재기입가능하고 소거가능;
(5) 시스템 메모리로서 이용가능하고 시스템 메모리 어드레스 공간의 전부 또는 일부를 할당받음;
(6) 트랜잭션 프로토콜(상이한 트랜잭션들을 구분하여 이들 트랜잭션들이 비순차적으로 완료될 수 있게 트랜잭션 식별자(ID)들을 지원하는 프로토콜)을 이용하여 버스를 통해 프로세서에 결합될 수 있고, 시스템 메모리로서 NVRAM의 동작을 지원하기에 충분히 작은 입도 레벨(예를 들어, 64 또는 128 바이트 등의 캐쉬 라인 크기)에서의 액세스를 허용. 예를 들어, 버스는, 통상적으로 이용되는 비-트랜잭션 프로토콜과는 대조적으로 트랜잭션 프로토콜이 운용되는 메모리 버스(예를 들어, DDR3, DDR4 등과 같은 DDR 버스)일 수 있음. 또 다른 예로서, 버스는, PCI 익스프레스(PCIE) 버스, 데스크탑 관리 인터페이스(DMI) 버스, 또는 트랜잭션 프로토콜과 작은 충분한 트랜잭션 페이로드 크기(예를 들어, 64 또는 128 바이트 등의 캐쉬 라인 크기)를 이용하는 기타 임의 유형의 버스 등의, 통상적으로 트랜잭션 프로토콜(네이티브 트랜잭션 프로토콜)이 운용되는 버스일 수도 있음; 및
(7) a) FLASH 등의 비휘발성 메모리/스토리지 기술보다 빠른 기입 속도;
b) 초고속 판독 속도(FLASH보다 빠르고 DRAM 판독 속도와 같거나 그 부근);
c) (SSD에서 이용되는 FLASH 메모리처럼 데이터를 기입하기 전에 소거(1로 오버라이트하는 것)를 요구하는 대신) 직접 기입가능; 및/또는
d) (SSD에서 이용되는 부트 ROM 및 FLASH보다) 고장전 더 높은 차수(예를 들어, 2 또는 3)의 기입 내구성
중 하나 이상.
앞서 언급된 바와 같이, 한 번에 전체의 "블록"을 재기입하고 소거해야 하는 FLASH 메모리와는 대조적으로, 임의의 주어진 구현에서 NVRAM이 액세스되는 입도 레벨은, 특정한 메모리 제어기와 특정한 메모리 버스 또는 NVRAM이 결합되는 버스의 기타 유형에 의존할 수 있다. 예를 들어, NVRAM이 시스템 메모리로서 이용되는 일부 구현에서, 캐쉬 라인은 메모리 서브시스템이 메모리에 액세스하는 레벨에 있기 때문에, NVRAM은, 바이트 입도로 액세스되는 고유 능력에도 불구하고, 캐쉬 라인의 입도(예를 들어, 64-바이트 또는 128-바이트 캐쉬 라인)로 액세스될 수 있다. 따라서, NVRAM이 메모리 서브시스템 내에 배치될 때, NVRAM은 동일한 메모리 서브시스템에서 이용되는 DRAM(예를 들어, "근방 메모리")과 동일한 입도 레벨에서 액세스될 수 있다. 그렇다고 해도, 메모리 제어기와 메모리 버스 또는 기타 유형의 버스에 의한 NVRAM으로의 액세스의 입도 레벨은 Flash에 의해 이용되는 블록 크기와 I/O 서브시스템의 제어기 및 버스의 액세스 크기의 경우보다 작다.
NVRAM은 또한, 원격 메모리 레벨에서의 스토리지 셀은, 다수의 기입 액세스 후에, 특히 시스템 메모리 구현에서와 같이 상당한 횟수의 기입이 발생할 수 있는 경우에, 마모(wear out)되기 시작한다는 사실을 감안한 마모 균등화(wear leveling) 알고리즘을 병합할 수도 있다. 이런 방식으로 높은 사이클 카운트의 블록들은 가장 마모되기 쉽기 때문에, 마모 균등화는 높은 사이클 카운트의 블록들의 어드레스를 낮은 사이클 카운트의 블록들로 스왑핑함으로써 원격 메모리 셀들에 걸쳐 기입을 확산시킨다. 대부분의 어드레스 스와핑은, 하드웨어, 더 낮은 레벨의 소프트웨어(예를 들어, 로우 레벨 드라이버 또는 운영 체제) 또는 이 둘의 조합에 의해 취급되기 때문에, 통상적으로는 애플리케이션 프로그램에게 투명하다는 점에 유의한다.
B. 원격 메모리
본 발명의 일부 실시예의 원격 메모리(122)는 NVRAM으로 구현되지만, 반드시 임의의 특정한 메모리 기술로 제한되는 것은 아니다. 원격 메모리(122)는 그 특성 및/또는 메모리/스토리지 계층구조에서의 그 응용의 관점에서 기타의 명령어 및 데이터 메모리/스토리지 기술들과는 구별될 수 있다. 예를 들어, 원격 메모리(122)는 하기와는 상이하다:
1) 레벨 0 및 레벨 1에 이용될 수 있는 정적 랜덤 액세스 메모리(SRAM), 각각의 프로세서 코어들(101-104)에 각각 전용되는 내부 프로세서 캐쉬들(101a-b, 102a-b, 103a-b, 103a-b, 및 104a-b), 및 프로세서 코어들에 의해 공유되는 더 낮은 레벨 캐쉬(LLC)(105);
2) 프로세서(100) 내부의 (예를 들어, 프로세서(100)과 동일한 다이 상의) 캐쉬(106)로서 구성되거나 및/또는 프로세서 외부의 (예를 들어, 프로세서(100)와 동일하거나 상이한 팩키지 내의) 하나 이상의 캐쉬(107-109)로서 구성되는 동적 랜덤 액세스 메모리(DRAM);
3) (도시되지 않은) 대용량 스토리지로서 적용되는 FLASH 메모리/자기 디스크/광 디스크; 및
4) (도시되지 않은) (부트 ROM, BIOS Flash 및/또는 TPM Flash라 불릴 수 있는) 펌웨어 메모리로서 응용되는 FLASH 또는 기타의 판독 전용 메모리(ROM) 등의 메모리.
원격 메모리(122)는, 대용량 스토리지로서 응용되는 FLASH/자기 디스크/광 디스크와는 대조적으로, 프로세서(100)에 의해 직접 어드레싱가능하고 프로세서(100)와 충분히 보조를 맞출 수 있는 명령어 및 데이터 스토리지로서 이용될 수 있다. 게다가, 앞서 논의되고 이하에서 상세히 설명되는 바와 같이, 원격 메모리(122)는 메모리 버스 상에 놓일 수 있고, 메모리 제어기와 직접 통신할 수도 있어, 결국, 프로세서(100)와 직접 통신한다.
원격 메모리(122)는 기타의 명령어 및 데이터 스토리지 기술(예를 들어, DRAM)과 조합되어 (함께 배치된 PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)이라고도 알려진) 하이브리드 메모리를 형성할 수 있다. PCM/PCMS를 포함한 상기 기술들 중 적어도 일부는 시스템 메모리 대신에 또는 이에 추가하여 대용량 스토리지용으로 이용될 수 있고, 이런 방식으로 적용될 때 프로세서에 의해 랜덤 액세스 가능, 바이트 어드레스가능, 또는 직접 어드레싱가능할 필요가 없다는 점에 유의한다.
설명의 편의를 위해, 본 출원의 나머지 대부분은, 원격 메모리(122)를 위한 기술 선택으로서, "NVRAM", 또는, 더 구체적으로는, "PCM" 또는 "PCMS"를 언급할 것이다. 따라서, 용어, NVRAM, PCM, PCMS, 및 원격 메모리는 이하의 논의에서 상호교환가능하게 사용될 수 있다. 그러나, 앞서 논의된 바와 같이, 원격 메모리를 위해 상이한 기술들도 이용될 수도 있다는 점을 깨달아야 한다. 또한, NVRAM은 원격 메모리로서의 이용으로 제한되는 것은 아니라는 점도 깨달아야 한다.
C. 근방 메모리
"근방 메모리"(121)는, 원격 메모리에 비해 더 낮은 판독/기입 액세스 레이턴시 및/또는 더 대칭적인 판독/기입 액세스 레이턴시를 갖는(즉, 기입 시간과 대략 대등한 판독 시간을 갖는) 원격 메모리(122)의 전면에 구성된 중간 레벨의 메모리이다. 일부 실시예에서, 근방 메모리(121)는 원격 메모리(122)보다 상당히 낮은 기입 레이턴시를 갖지만 유사한(예를 들어, 약간 낮거나 같은) 판독 레이턴시를 갖고; 예를 들어, 근방 메모리(121)는 휘발성 랜덤 액세스 메모리(VRAM) 등의 휘발성 메모리일 수 있고 DRAM 또는 기타의 고속 커패시터-기반의 메모리를 포함할 수 있다. 그러나, 본 발명의 기저 원리는 이들 특정한 메모리 유형으로 제한되는 것은 아니라는 점에 유의한다. 추가적으로, 근방 메모리(121)는 원격 메모리(122)보다 비교적 더 낮은 밀도를 갖거나 및/또는 제조하기에 더 비쌀 수도 있다.
한 실시예에서, 근방 메모리(121)는 원격 메모리(122)와 내부 프로세서 캐쉬(120) 사이에서 구성된다. 이하에서 설명되는 실시예들의 일부에서, 근방 메모리(121)는, 예를 들어, 판독/기입 레이턴시 제약과 메모리 열화 제약을 포함한 원격 메모리의 성능 및/또는 사용량 제약을 마스킹하기 위해 하나 이상의 메모리측 캐쉬(MSC)(107-109)로서 구성된다. 이들 구현에서, MSC(107-109)와 원격 메모리(122)의 조합은, 시스템 메모리로서 DRAM만을 이용하는 시스템과 가깝거나, 대등하거나, 이를 초과하는 성능 수준에서 동작한다. 이하에서 상세히 논의되는 바와 같이, 도 1에서는 "캐쉬"로서 도시되어 있지만, 근방 메모리(121)는, 캐쉬의 역할을 수행하는 것에 추가하여, 또는 그 대신에, 다른 역할들을 수행하는 모드들을 포함할 수 있다.
근방 메모리(121)는, 프로세서 다이 상에(캐쉬(들)(106)로서) 위치하거나 및/또는 프로세서 다이 외부에(캐쉬들(107-109)로서)(예를 들어, CPU 팩키지 상에 위치하거나 CPU 팩키지로의 높은 대역폭 링크를 갖는 CPU 팩키지 외부에 위치한 별개의 다이 상에, 예를 들어, DIMM(memory dual in-line memory module), 라이저/메자닌(riser/mezzanine), 또는 컴퓨터 마더보드 상에) 위치할 수 있다. 근방 메모리(121)는, (이하에서 상세히 설명되는 바와 같이) DDR 또는 기타의 트랜잭션 높은 대역폭 링크 등의, 단일의 또는 복수의 높은 대역폭 링크를 이용하여 프로세서(100)와 통신하도록 결합될 수 있다.
예시적인 시스템 메모리 할당 방식
도 1은 다양한 레벨의 캐쉬들(101-109)이 본 발명의 실시예의 시스템 물리적 어드레스(SPA; system physical address) 공간(116-119)에 관하여 어떻게 구성되는지를 나타낸다. 언급된 바와 같이, 이 실시예는 하나 이상의 코어(101-104)를 갖는 프로세서(100)를 포함하고, 각 코어는 그 자신의 전용의 상위 레벨 캐쉬(L0)(101a-104a)와 중간 레벨 캐쉬(MLC)(L1)(101b-104b)를 가진다. 프로세서(100)는 또한 공유된 LLC(105)를 포함한다. 이들 다양한 캐쉬 레벨들의 동작은 용이하게 이해되므로 여기서 상세히 설명되지 않을 것이다.
도 1에 나타낸 캐쉬들(107-109)은 특정한 시스템 메모리 어드레스 범위나 한 세트의 불연속 어드레스 범위에 전용될 수 있다. 예를 들어, 캐쉬(107)는 시스템 메모리 어드레스 범위 #1(116)에 대한 MSC로서의 역할에 전용되고 캐쉬들(108 및 109)은 시스템 메모리 어드레스 범위 #2(117) 및 #3(118)의 비중복 부분에 대한 MSC로서의 역할에 전용된다. 후자의 구현은, 프로세서(100)에 의해 이용되는 SPA 공간이 (예를 들어, MSC로서 구성될 시의) 캐쉬들(107-109)에 의해 이용되는 어드레스 공간 내로 인터리빙되는 시스템을 위해 이용될 수 있다. 일부 실시예에서, 이 후자의 어드레스 공간은 메모리 채널 어드레스(MCA; memory channel address) 공간이라 부른다. 한 실시예에서, 내부 캐쉬들(101a-106)은 전체 SPA 공간에 대한 캐슁 동작을 수행한다.
본 명세서에서 사용될 때 시스템 메모리는 프로세서(100) 상에서 실행되는 소프트웨어가 볼 수 있고 및/또는 직접 액세스할 수 있는 메모리인 반면; 캐쉬 메모리들(101a-109)은, 이들이 시스템 어드레스 공간의 직접-어드레싱가능한 부분을 형성하지는 않지만, 코어들이 소프트웨어가 소정의 제어(구성, 정책, 힌트 등)를 캐쉬(들)의 일부 또는 전부에게 제공하도록 허용하는 명령어의 실행을 지원할 수도 있다는 의미에서, 소프트웨어에게 투명하게 동작할 수 있다. 시스템 메모리의 영역들(116-119)로의 세분은 (예를 들어, 시스템 설계자에 의해) 시스템 구성 프로세스의 일부로서 수동으로 수행되거나 및/또는 소프트웨어에 의해 자동으로 수행될 수 있다.
한 실시예에서, 시스템 메모리 영역(116-119)은, 원격 메모리(예를 들어, PCM), 및 일부 실시예에서는, 시스템 메모리로서 구성된 근방 메모리를 이용하여 구현된다. 시스템 메모리 어드레스 범위 #4는, (캐슁 모드와는 대조되는) 시스템 메모리 모드로 구성된 근방 메모리일 수 있는 DRAM 등의 더 높은 속도의 메모리를 이용하여 구현된 어드레스 공간을 나타낸다.
도 2는 본 발명의 실시예에 따른 메모리/스토리지 계층구조(140)와 근방 메모리(144) 및 NVRAM에 대한 동작의 상이한 구성가능한 모드들을 나타내고 있다. 메모리/스토리지 계층구조(140)는, (1) 프로세서 캐쉬(150A)(예를 들어, 도 1의 캐쉬들(101a-105))과 선택사항으로서 (여기서 설명된 바와 같은 소정의 동작 모드들에서) 원격 메모리에 대한 캐쉬로서의 근방 메모리(150B)를 포함할 수 있는 캐쉬 레벨(150); (2) 근방 메모리가 존재할 때 원격 메모리(151B)(예를 들어, PCM 등의 NVRAM)(또는 근방 메모리가 존재하지 않을 때에는 시스템 메모리(174)로서의 NVRAM만)와, 선택사항으로서 (여기서 설명된 바와 같은 소정의 동작 모드들에서) 시스템 메모리(151A)로서 동작하는 근방 메모리를 포함할 수 있는 시스템 메모리 레벨(151); (3) 플래시/자기/광 대용량 스토리지(152B) 및/또는 NVRAM 대용량 스토리지(152A)(예를 들어, NVRAM(142)의 일부)를 포함할 수 있는 대용량 스토리지 레벨(152); 및 (4) BIOS 플래시(170) 및/또는 BIOS NVRAM(172) 및 선택사항으로서 신뢰받는 플랫폼 모듈(TPM; trusted platform module) NVRAM(173)을 포함할 수 있는 펌웨어 메모리 레벨(153)을 포함한 복수의 레벨을 가진다.
나타낸 바와 같이, 근방 메모리(144)는, 원격 메모리에 대한 캐쉬(FM에 대한 캐쉬로서의 근방 메모리(150B))로서 동작하는 제1 모드; (때때로 근방 메모리 "직접 액세스" 모드라고도 불리는) 시스템 메모리(151A)로서 동작하고 SPA 공간의 일부를 점유하는 제2 모드; 및 스크래치패드 메모리(192) 또는 기입 버퍼(193) 등의 하나 이상의 추가적 동작 모드를 포함한 다양한 상이한 모드들에서 동작하도록 구현될 수 있다. 본 발명의 일부 실시예에서, 근방 메모리는 분할가능하고, 각 파티션은 지원되는 모드들 중 상이한 하나에서 동시에 동작할 수 있으며; 상이한 실시예들은, 하드웨어(예를 들어, 퓨즈, 핀), 펌웨어, 및/또는 소프트웨어에 의해(예를 들어, 각 모드와 파티션을 식별하는 상이한 2진 코드들이 저장될 수 있는 MSC 제어기(124) 내의 한 세트의 프로그램가능한 범위 레지스터들을 통해) 파티션들의 구성(예를 들어, 크기, 모드)을 지원할 수 있다.
도 2의 시스템 어드레스 공간 A(190)는 근방 메모리가 원격 메모리에 대한 MSC(150B)로서 구성될 때의 동작을 나타내기 위해 이용된다. 이 구성에서, 시스템 어드레스 공간 A(190)는 전체의 시스템 어드레스 공간을 나타낸다(그리고 시스템 어드레스 공간 B(191)는 존재하지 않는다). 대안으로서, 시스템 어드레스 공간 B(191)는 근방 메모리의 전부 또는 일부가 시스템 어드레스 공간의 일부를 할당받을 때의 구현을 도시하기 위해 이용된다. 이 실시예에서, 시스템 어드레스 공간 B(191)는 근방 메모리(151A)에 할당된 시스템 어드레스 공간의 범위를 나타내고, 시스템 어드레스 공간 A(190)는 NVRAM(174)에 할당된 시스템 어드레스 공간의 범위를 나타낸다.
또한, 원격 메모리에 대한 캐쉬(150B)로서 역할할 때, 근방 메모리(144)는 MSC 제어기(124)의 제어하에 다양한 서브-모드들에서 동작할 수 있다. 이들 모드들 각각에서, 근방 메모리 어드레스 공간(NMA; memory address space)은, 근방 메모리는 시스템 어드레스 공간의 직접-어드레싱가능한 부분을 형성하지 않는다는 의미에서 소프트웨어에게 투명하다. 이들 모드들은 다음과 같은 모드들을 포함하지만 이것으로 제한되지 않는다:
(1) 라이트-백 캐슁 모드 (Write-Back Caching Mode): 이 모드에서, FM 캐쉬로서 역할하는 근방 메모리(150B)의 전부 또는 일부는 NVRAM 원격 메모리(FM)(151B)에 대한 캐쉬로서 이용된다. 라이트-백 모드에 있는 동안, 모든 기입 동작은 처음에 FM에 대한 캐쉬로서의 근방 메모리(150B)로 향한다(기입이 향하는 캐쉬 라인이 캐쉬 내에 존재한다고 가정). (각각의 기입 동작이 NVRAM FM(151B)에 즉각 전파되는 이하에서 설명되는 라이트-쓰루(write-through) 모드와는 대조적으로) FM에 대한 캐쉬로서의 근방 메모리(150B) 내의 캐쉬 라인이 또 다른 캐쉬 라인에 의해 대체되려 할 때에만 대응하는 기입 동작이 수행되어 NVRAM FM(151B)을 업데이트한다.
(2) 근방 메모리 바이패스 모드 (Near Memory Bypass Mode): 이 모드에서, 모든 판독 및 기입은 FM 캐쉬로서 역할하는 NM(150B)을 바이패스하고 NVRAM FM(151B)으로 바로 간다. 이러한 모드는, 예를 들어, 애플리케이션이 캐쉬 친화적이 아니고 데이터가 캐쉬 라인의 입도에서 영구적으로 남도록 요구할 때 이용될 수 있다. 한 실시예에서, 프로세서 캐쉬(150A)와 FM 캐쉬로서 역할하는 NM(150B)에 의해 수행되는 캐슁은 서로 독립적으로 동작한다. 결과적으로, 프로세서 캐쉬(150A)에 캐슁되지 않은(그리고, 일부 경우에는, 프로세서 캐쉬(150A)에 캐슁되는 것이 허용되지 않을 수 있는) 데이터는 FM 캐쉬로서 역할하는 NM(150B)에 캐슁될 수 있고 그 반대로 마찬가지이다. 따라서, 프로세서 캐쉬 내에 "캐슁불가"로서 지정될 수 있는 소정의 데이터는 FM 캐쉬로서 역할하는 NM(150B) 내에 캐슁될 수 있다.
(3) 근방 메모리 판독- 캐쉬 기입 바이패스 모드 (Near Memory Read-Cache Write Bypass Mode): 이것은 상기 모드의 변형으로서 NVRAM FM(151B)으로부터의 영구 데이터의 판독 캐슁이 허용된다(즉, 영구 데이터는 판독-전용 동작에 대해서 원격 메모리에 대한 캐쉬로서의 근방 메모리(150B)에 캐슁된다). 이 모드는 대부분의 영구 데이터가 "판독-전용"이고 애플리케이션 사용법이 캐쉬-친화적일 때 유용하다.
(4) 근방 메모리 판독- 캐쉬 라이트- 쓰루 모드 (Near Memory Read-Cache Write-Through Mode): 이것은 근방 메모리 판독-캐쉬 기입 바이패스 모드의 변형으로서, 판독 캐슁 외에, 기입-적중(write-hit)도 역시 캐슁된다. FM에 대한 캐쉬로서의 근방 메모리(150B)로의 모든 기입은 FM(151B)에 대한 기입을 야기한다. 따라서, 캐쉬의 라이트-쓰루 성질로 인해, 캐쉬-라인 지속성이 여전히 보장된다.
근방 메모리 직접 액세스 모드에서 동작할 때, 시스템 메모리(151A)로서의 근방 메모리의 전부 또는 일부는 소프트웨어에게 직접 보여질 수 있고 SPA 공간의 일부를 형성한다. 이러한 메모리는 완전히 소프트웨어 제어하에 있을 수 있다. 이러한 방식은, 소프트웨어에 대해 불균일한 메모리 어드레스(NUMA; non-uniform memory address) 메모리 영역을 생성하여, 이 곳에서는 NVRAM 시스템 메모리(174)에 비해 근방 메모리(144)로부터 더 높은 성능을 얻게 된다. 제한이 아닌 예로서, 이러한 사용법은, 소정의 고성능 컴퓨팅(HPC) 및 소정의 데이터 구조에 대한 매우 빠른 액세스를 요구하는 그래픽 애플리케이션에 채용될 수 있다.
대안적 실시예에서, 근방 메모리 직접 액세스 모드는 근방 메모리 내의 소정의 캐쉬 라인들(즉, NVRAM(142)에 동시에 저장되는 데이터를 갖는 캐쉬 라인들)을 "핀닝(pinning)"함으로써 구현된다. 이러한 핀닝은, 더 큰 멀티웨이 집합-연관 캐쉬(multiway, set-associative cache)에서 효과적으로 이루어질 수 있다.
도 2는 또한, NVRAM(142)의 일부가 펌웨어 메모리로서 이용될 수 있음을 나타내고 있다. 예를 들어, BIOS NVRAM(172) 부분은 (BIOS 정보를 BIOS 플래시(170)에 저장하는 것 대신에 또는 이에 추가하여) BIOS 이미지를 저장하는데 이용될 수 있다. BIOS NVRAM 부분(172)은 SPA 공간의 일부일 수 있고 프로세서 코어들(101-104) 상에서 실행된 소프트웨어에 의해 직접 어드레싱가능한 반면, BIOS 플래시(170)는 I/O 서브시스템(115)을 통해 어드레싱가능하다. 또 다른 예로서, 신뢰받는 플랫폼 모듈(TPM) NVRAM(173) 부분은 민감한 시스템 정보(예를 들어, 암호화 키)를 보호하는데 이용될 수도 있다.
따라서, 나타낸 바와 같이, NVRAM(142)은, 원격 메모리(151B)로서(예를 들어, 근방 메모리(144)가 존재/동작할 때, 근방 메모리는 MSC 제어(124)를 통해 FM에 대한 캐쉬로서 역할하든지 또는 그렇지 않든지(캐쉬(들)(101a-105) 직후에 및 MSC 제어(124)없이 액세스됨)); (근방 메모리가 존재/동작하지 않고; MSC 제어(124)없이 액세스되기 때문에 원격 메모리로서가 아니라) 단지 NVRAM 시스템 메모리(174)로서; NVRAM 대용량 스토리지(152A)로서; BIOS NVRAM(172)으로서; 및 TPM NVRAM(173)으로서 포함한, 다양한 상이한 모드들에서 동작하도록 구현될 수 있다. 상이한 실시예들은 다양한 방식으로 NVRAM 모드들을 명시할 수 있지만, 도 3은 디코드 테이블(333)의 이용을 기술하고 있다.
도 3은 본 발명의 실시예들이 구현될 수 있는 예시적 컴퓨터 시스템(300)을 나타낸다. 컴퓨터 시스템(300)은, 프로세서(310)와, 시스템 메모리, 대용량 스토리지 및 선택사항으로서 펌웨어 메모리 양쪽 모두에 이용되는 NVRAM(142)을 갖춘 메모리/스토리지 서브시스템(380)을 포함한다. 한 실시예에서, NVRAM(142)은, 데이터, 명령어, 상태, 및 기타의 영구적 및 비-영구적 정보를 저장하기 위해 컴퓨터 시스템(300)에 의해 이용되는 전체의 시스템 메모리와 스토리지 계층구조를 포함한다. 앞서 논의된 바와 같이, NVRAM(142)은, 시스템 메모리, 대용량 스토리지, 및 펌웨어 메모리, TPM 메모리 등의 전형적인 메모리와 스토리지 계층구조에서 역할을 구현하도록 구성될 수 있다. 도 3의 실시예에서, NVRAM(142)은, FM(151B), NVRAM 대용량 스토리지(152A), BIOS NVRAM(173), 및 TMP NVRAM(173)으로 분할된다. 상이한 역할을 갖는 스토리지 계층구조들이 역시 고려될 수 있고 NVRAM(142)의 응용은 전술된 역할로 제한되지 않는다.
예로서, FM에 대한 캐쉬로서의 근방 메모리(150B)는 라이트-백 캐슁 중에 있을 동안의 동작이 설명된다. 한 실시예에서, FM에 대한 캐쉬로서의 근방 메모리(150B)가 전술된 라이트-백 캐슁 모드에 있는 동안, 판독 동작은 먼저, (예를 들어, 태그 캐쉬(342)를 이용하여) 요청된 데이터가 FM에 대한 캐쉬로서 역할하는 근방 메모리(150B)에 존재하는지를 결정하기 위해 참조(look up)를 수행하는 MSC 제어기(124)에 도달할 것이다. 존재한다면, MSC 제어기는 그 데이터를 I/O 서브시스템(115)을 통해 요청 CPU, 코어(101-104) 또는 I/O 장치에게 반환할 것이다. 데이터가 존재하지 않는다면, MSC 제어기(124)는 그 요청을 시스템 메모리 어드레스와 함께 NVRAM 제어기(332)에 전송할 것이다. NVRAM 제어기(332)는, 시스템 메모리 어드레스를 NVRAM 물리적 장치 어드레스(PDA; physical device address)로 변환하고 판독 동작을 원격 메모리(151B)의 이 영역으로 보내기 위해 디코드 테이블(333)을 이용할 것이다. 한 실시예에서, 디코드 테이블(333)은, 시스템 메모리 어드레스와 NVRAM PDA 사이에서 변환하기 위해 NVRAM 제어기(332)가 이용하는 어드레스 우회 테이블(AIT; address indirection table) 컴포넌트를 포함한다. 한 실시예에서, AIT는, 메모리 액세스 동작을 분산시켜 NVRAM FM(151B) 상의 마모를 감소시키도록 구현된 마모 균등화 알고리즘(wear leveling algorithm)의 일부로서 업데이트된다. 대안으로서, AIT는 NVRAM 제어기(332) 내에 저장된 별개의 테이블일 수도 있다.
NVRAM FM(151B)으로부터 요청된 데이터를 수신하면, NVRAM 제어기(332)는 그 요청된 데이터를 MSC 제어기(124)에게 반환할 것이고, MSC 제어기(124)는 그 데이터를 FM 캐쉬로서 역할하는 MSC 근방 메모리(150B)에 저장하고 또한 그 데이터를 I/O 서브시스템(115)을 통해 요청 프로세서 코어(101-104), 또는 I/O 장치에 전송할 것이다. 이 데이터에 대한 후속 요청은, 이 데이터가 어떤 다른 NVRAM FM 데이터에 의해 대체될 때까지는 FM 캐쉬로서 역할하는 근방 메모리(150B)로부터 직접 서비스될 수 있다.
언급된 바와 같이, 한 실시예에서, 메모리 기입 동작도 역시 먼저 MSC 제어기(124)로 가고, MSC 제어기(124)는 그것을 FM 캐쉬로서 역할하는 MSC 근방 메모리(150B) 내에 기입한다. 라이트-백 캐슁 모드에서, 기입 동작이 수신될 때 데이터는 NVRAM FM(151B)으로 바로 전송되지 않을 수도 있다. 예를 들어, 데이터는, 데이터가 저장되는 FM 캐쉬로서 역할하는 MSC 근방 메모리(150B) 내의 위치가 상이한 시스템 메모리 어드레스에 대한 데이터를 저장하기 위해 재사용되어야 될 때에만 NVRAM FM(151B)에 전송될 수 있다. 이러한 상황이 발생하면, MSC 제어기(124)는, 데이터가 현재 NVRAM FM(151B)에 있지 않고 그에 따라 FM 캐쉬로서 역할하는 근방 메모리(150B)로부터 데이터를 회수하여 NVRAM 제어기(332)에 전송할 것이라고 통보한다. NVRAM 제어기(332)는 시스템 메모리 어드레스를 위해 PDA를 참조한 다음 그 데이터를 NVRAM FM(151B)에 기입한다.
도 3에서, NVRAM 제어기(332)는, 3개의 별개의 라인을 이용하여 FM(151B), NVRAM 대용량 스토리지(152A), 및 BIOS NVRAM(172)에 접속된 것으로 도시되어 있다. 그러나, 이것은, NVRAM 제어기(332)를 NVRAM(142)의 이들 부분들에 접속하는 3개의 별개의 물리적 버스 또는 통신 채널이 있다는 것을 반드시 의미하는 것은 아니다. 오히려, 일부 실시예에서는, NVRAM 제어기(332)를, FM(151B), NVRAM 대용량 스토리지(152A), 및 BIOS NVRAM(172)에 통신가능하게 결합하기 위해 공통의 메모리 버스나 (도 4a 내지 도 4m에 관하여 이하에서 설명되는 것들과 같은) 기타 유형의 버스가 이용된다. 예를 들어, 한 실시예에서, 도 3의 3개의 라인은, NVRAM 제어기(332)가 NVRAM(142)과 통신하기 위해 트랜잭션 프로토콜(transactional protocol)을 구현하는 메모리 버스(예를 들어, DDR3, DDR4 등의 버스) 등의, 버스를 나타낸다. NVRAM 제어기(332)는 또한, PCI 익스프레스(PCIE) 버스, 데스크탑 관리 인터페이스(DMI) 버스, 또는 트랜잭션 프로토콜과 작은 충분한 트랜잭션 페이로드 크기(예를 들어, 64 또는 128 바이트 등의 캐쉬 라인 크기)를 이용하는 기타 임의 유형의 버스 등의, 네이티브 트랜잭션 프로토콜을 지원하는 버스를 통해 NVRAM(142)과 통신할 수도 있다.
한 실시예에서, 컴퓨터 시스템(300)은, 1) 원격 메모리 캐쉬로서 역할하는 근방 메모리(NM)(150B)에 대한 액세스를 제어하는 메모리측 캐쉬(MSC) 제어기(124); 및 2) NVRAM(142)에 대한 액세스를 제어하는 NVRAM 제어기(332)에 결합된, 프로세서(310)에 대한 중앙 메모리 액세스 제어를 수행하는 통합된 메모리 제어기(IMC; integrated memory controller)(331)를 포함한다. 도 3에는 별개의 유닛들로서 예시되어 있지만, MSC 제어기(124) 및 NVRAM 제어기(332)는 논리적으로 IMC(331)의 일부를 형성할 수도 있다.
예시된 실시예에서, MSC 제어기(124)는, 원격 메모리 캐쉬로서 역할하는 NM(150B)용으로 이용하기 위한 동작 모드(예를 들어, 전술된 라이트-백 캐슁 모드, 근방 메모리 바이패스 모드 등)를 명시하는 한 세트의 범위 레지스터(336)를 포함한다. 예시된 실시예에서, DRAM(144)은, 원격 메모리에 대한 캐쉬로서 역할하는 NM(150B)을 위한 메모리 기술로서 이용된다. 메모리 액세스 요청에 응답하여, MSC 제어기(124)는, 그 요청이 (범위 레지스터(336)에 명시된 동작 모드에 따라) FM에 대한 캐쉬로서 역할하는 NM(150B)으로부터 서비스될 수 있는지, 또는 그 요청이, NVRAM(142)의 원격 메모리(FM) 부분(151B)로부터 그 요청을 서비스할 수 있는 NVRAM 제어기(332)에 전송되어야 하는지를 결정할 수 있다.
NVRAM(142)이 PCMS로 구현되는 실시예에서, NVRAM 제어기(332)는 PCMS 기술과 일치하는 프로토콜로 액세스를 수행하는 PCMS 제어기이다. 앞서 논의된 바와 같이, PCMS 메모리는 고유하게 바이트의 입도로 액세스될 수 있다. 그럼에도 불구하고, NVRAM 제어기(332)는 캐쉬 라인(예를 들어, 64비트 또는 128비트 캐쉬 라인) 등의 더 낮은 입도 레벨에서 또는 메모리 서브시스템과 일치하는 기타 임의의 입도 레벨에서 PCMS-기반의 원격 메모리(151B)에 액세스할 수 있다. 본 발명의 기저 원리는 PCMS-기반의 원격 메모리(151B)에 액세스하기 위한 임의의 특정한 입도 레벨로 제한되지 않는다. 그러나, 일반적으로, PCMS-기반의 원격 메모리(151B)가 시스템 어드레스 공간의 일부를 형성하는데 이용될 때, 입도 레벨은, "블록" 레벨(NOR FLASH의 경우 크기가 최소한 64K바이트이고 NAND FLASH의 경우 16K바이트)에서만 재기입 및 소거 동작을 수행할 수 있는 FLASH 등의 다른 비휘발성 스토리지 기술에 전통적으로 이용되는 입도 레벨보다 높을 것이다.
예시된 실시예에서, NVRAM 제어기(332)는 디코드 테이블(333)로부터 구성 데이터를 판독하여 NVRAM(142)에 대한 이전에 기술된 모드들, 크기들 등을 설정하거나, 대안으로서, IMC(331) 및 I/O 서브시스템(315)으로부터 전달된 디코딩 결과에 의존할 수 있다. 예를 들어, 제조시에 또는 현장에서, 컴퓨터 시스템(300)은, NVRAM(142)의 상이한 영역들을, 특히, 시스템 메모리, SATA 인터페이스를 통해 노출된 대용량 스토리지, USB BOT(Bulk Only Transport) 인터페이스를 통해 노출된 대용량 스토리지, TPM 스토리지를 지원하는 암호화된 스토리지로서 마킹하기 위해 디코드 테이블(333)을 프로그램할 수 있다. 액세스를 NVRAM 장치(142)의 상이한 파티션들로 조향하기 위한 수단은 디코드 로직을 통해서이다. 예를 들어, 한 실시예에서, 각 파티션의 어드레스 범위는 디코드 테이블(333)에서 정의된다. 한 실시예에서, IMC(331)가 액세스 요청을 수신하면, 요청의 타겟 어드레스가 디코딩되어 그 요청이 메모리로 향할지, NVRAM 대용량 스토리지로 향할지, 또는 I/O로 향할지를 드러내게 된다. 그것이 메모리 요청이라면, IMC(331) 및/또는 MSC 제어기(124)는 타겟 어드레스로부터 그 요청이 FM에 대한 캐쉬로서의 NM(150B)으로 향할지 FM(151B)로 향할지를 더 결정한다. FM(151B) 액세스의 경우, 요청은 NVRAM 제어기(332)로 포워딩된다. IMC(331)는, 이 요청이 I/O(예를 들어, 비-스토리지 및 스토리지 I/O 장치)로 향하는 것이라면, 그 요청을 I/O 서브시스템(115)에 전달한다. I/O 서브시스템(115)은 또한 어드레스를 디코딩하여 어드레스가 NVRAM 대용량 스토리지(152A)를 가리키는지, BIOS NVRAM(172)을 가리키는지, 또는 기타의 비-스토리지 또는 스토리지 I/O 장치를 가리키는지를 결정한다. 이 어드레스가 NVRAM 대용량 스토리지(152A) 또는 BIOS NVRAM(172)을 가리킨다면, I/O 서브시스템(115)은 그 요청을 NVRAM 제어기(332)에 포워딩한다. 이 어드레스가 TMP NVRAM(173)을 가리킨다면, I/O 서브시스템(115)은 보안된 액세스를 수행하기 위해 요청을 TPM(334)에 전달한다.
한 실시예에서, NVRAM 제어기(332)에 포워딩된 각 요청에는 액세스의 유형을 나타내는 ("트랜잭션 유형"이라고도 알려진) 속성이 동반된다. 한 실시예에서, NVRAM 제어기(332)는 요청된 액세스 유형에 대한 액세스 프로토콜을 에뮬레이팅하여, 플랫폼의 나머지가 메모리 및 스토리지 계층구조에서 NVRAM(142)에 의해 수행되는 복수의 역할을 알지 못한 채 남아 있게 한다. 대안적 실시예에서, NVRAM 제어기(332)는 트랜잭션 유형에 관계없이 NVRAM(142)에 대한 메모리 액세스를 수행할 수 있다. 디코드 경로는 전술된 것과는 상이할 수 있다는 것을 이해해야 한다. 예를 들어, IMC(331)는 액세스 요청의 타겟 어드레스를 디코딩할 수 있고 그것이 NVRAM(142)으로 향하는지를 결정한다. NVRAM(142)으로 향한다면, IMC(331)는 디코드 테이블(333)에 따라 속성을 생성한다. 속성에 기초하여, IMC(331)는 요청을 적절한 다운스트림 로직(예를 들어, NVRAM 제어기(332) 및 I/O 서브시스템(315))에 포워딩하여 요청된 데이터 액세스를 수행한다. 역시 또 다른 실시예에서, NVRAM 제어기(332)는 대응하는 속성이 업스트림 로직(예를 들어, IMC(331) 및 I/O 서브시스템(315))으로부터 전달되지 않았다면 타겟 어드레스를 디코딩할 수 있다. 다른 디코드 경로들도 역시 구현될 수 있다.
본 명세서에서 개시된 새로운 메모리 아키텍쳐의 존재는 풍부한 새로운 가능성을 제공한다. 이하에서 훨씬 더 길게 논의되지만, 이들 가능성들 중 일부는 바로 아래에서 신속하게 강조된다.
한 가능한 구현에 따르면, NVRAM(142)은 시스템 메모리 내의 전통적인 DRAM 기술에 대한 완전한 대체 또는 보충으로서 역할한다. 한 실시예에서, NVRAM(142)은 제2 레벨 시스템 메모리의 도입을 나타낸다(예를 들어, 시스템 메모리는 캐쉬로서 근방 메모리(DRAM 장치(340) 부분)(150B)를 포함하는 제1 레벨 시스템 메모리와 원격 메모리(FM)(151B)(NVRAM(142) 부분)를 포함하는 제2 레벨 시스템 메모리를 갖는 것으로 간주될 수 있다).
일부 실시예에 따르면, NVRAM(142)은 플래시/자기/광 대용량 스토리지(152B)에 대한 완전한 대체 또는 보충으로서 역할한다. 앞서 설명된 바와 같이, 일부 실시예에서, NVRAM(152A)은 바이트-레벨 어드레스가능하지만, NVRAM 제어기(332)는 구현(예를 들어, 64K 바이트, 128K 바이트 등)에 따라 복수 바이트로 이루어진 블록들로 NVRAM 대용량 스토리지(152A)에 여전히 액세스할 수 있다. NVRAM 대용량 스토리지(152A)로부터 NVRAM 제어기(332)에 의해 데이터를 액세스하는 특정한 방식은 프로세서(310)에 의해 실행되는 소프트웨어에게 투명할 수 있다. 예를 들어, NVRAM 대용량 스토리지(152A)는 플래시/자기/광 대용량 스토리지(152A)와는 달리 액세스될 수 있지만, 운영 체제는 여전히 NVRAM 대용량 스토리지(152A)를 표준 대용량 스토리지 장치(예를 들어, 직렬 ATA 하드 드라이브 또는 기타의 표준 형태의 대용량 스토리지 장치)로 간주할 수 있다.
NVRAM 대용량 스토리지(152A)가 플래시/자기/광 대용량 스토리지(152B)에 대한 완전한 대체로서 역할하는 실시예에서, 블록-어드레싱가능한 스토리지 액세스를 위한 스토리지 구동기를 이용하는 것은 필요하지 않다. 스토리지 액세스로부터의 스토리지 구동기 오버헤더의 제거는 액세스 속도를 증가시키고 전력을 절감할 수 있다. NVRAM 대용량 스토리지(152A)가 OS 및/또는 애플리케이션에게 블록-액세스가능하고 플래시/자기/광 대용량 스토리지(152B)와 구별불가능한 것처럼 보이는 것이 바람직한 대안적 실시예에서, NVRAM 대용량 스토리지(152A)에 액세스하기 위한 소프트웨어에게 블록-액세스가능한 인터페이스(예를 들어, USB BOT(Universal Serial Bus Bulk-Only Transfer) 1.0; SATA(Serial Advanced Technology Attachment) 3.0 등)를 노출시키기 위해 에뮬레이팅된 스토리지 구동기가 이용될 수 있다.
한 실시예에서, NVRAM(142)은, (선택사항임을 나타내기 위해 도 3에서 점선으로 예시된) BIOS 플래시(362) 및 TPM 플래시(372) 등의 펌웨어 메모리에 대한 완전한 대체 또는 보충으로서 역할한다. 예를 들어, NVRAM(142)은 BIOS 플래시(362)를 보충하거나 대체하기 위해 BIOS NVRAM(172) 부분을 포함할 수 있고, TPM 플래시(372)를 보충하거나 대체하기 위해 TPM NVRAM(173) 부분을 포함할 수 있다. 펌웨어 메모리는 또한, 민감한 시스템 정보(예를 들어, 암호화 키)를 보호하기 위해 TPM(334)에 의해 이용되는 시스템 영구 상태를 저장할 수 있다. 한 실시예에서, 펌웨어 메모리를 위한 NVRAM(142)의 이용은 시스템 동작에 결정적인 코드와 데이터를 저장하기 위한 제3자 플래시 부품에 대한 필요성을 제거한다.
도 3의 시스템의 논의를 계속하면, 일부 실시예에서, 간소화를 위해 도 3에서는 단일 프로세서(310)가 예시되어 있지만, 컴퓨터 시스템(100)의 아키텍쳐는 복수의 프로세서를 포함할 수 있다. 프로세서(310)는, 범용 또는 특별 목적 중앙 처리 장치(CPU), 주문형 집적 회로(ASIC), 또는 디지털 신호 처리기(DSP)를 포함한 임의 유형의 데이터 프로세서일 수 있다. 예를 들어, 프로세서(310)는, 캘리포니아주, 산타 클라라에 위치한 인텔사에서 모두 입수가능한 CoreTMi3, i5, i7, 2 Duo 및 Quad, XeonTM 또는 ItaniumTM 프로세서 등의 범용 프로세서일 수도 있다. 대안으로서, 프로세서(310)는, 캘리포니아주 서니베일에 위치한 ARM Holdings, Ltd, 캘리포니아주 서니베일에 위치한 MIPS 테크놀로지 등의 다른 회사로부터 제작된 것일 수도 있다. 프로세서(310)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, 코-프로세서, 임베디드 프로세서 등과 같은 특별-목적 프로세서일 수도 있다. 프로세서(310)는 하나 이상의 팩키지 내에 포함된 하나 이상의 칩 상에 구현될 수도 있다. 프로세서(310)는, 예를 들어, BiCMOS, CMOS, 또는 NMOS 등의 다수의 프로세스 기술들 중 임의의 것을 이용하여 하나 이상의 기판들 상에 구현되거나 및/또는 그 일부일 수도 있다. 도 3에 도시된 실시예에서, 프로세서(310)는 시스템-온-칩(SOC) 구성을 가진다.
한 실시예에서, 프로세서(310)는, 3D 또는 2D 그래픽 명령어 등의 그래픽 명령어를 실행하기 위한 로직을 포함하는 통합된 그래픽 유닛(311)을 포함한다. 본 발명의 실시예들이 임의의 특정한 통합된 그래픽 유닛(311)으로 제한되는 것은 아니지만, 한 실시예에서, 그래픽 유닛(311)은, Open GL 및/또는 Direct X 애플리케이션 프로그래밍 인터페이스(API)(예를 들어, OpenGL 4.1 및 DirectX 11)에 의해 명시된 명령어 등의 산업 표준 그래픽 명령어를 실행할 수 있다.
다시 한번 명료화를 위해, 도 3에는 단일 코어가 예시되어 있지만, 프로세서(310)는 또한 하나 이상의 코어(101-104)를 포함할 수 있다. 많은 실시예들에서, 코어(들)(101-104)은 하나 이상의 실행 유닛, 퇴거 유닛(retirement unit), 한 세트의 범용 및 특정 레지스터 등과 같은 내부 기능 블록들을 포함한다. 코어(들)이 멀티-쓰레드형 또는 하이퍼-쓰레드형이면, 각 하드웨어 쓰레드는 마찬가지로 "논리적" 코어로서 간주될 수도 있다. 코어들(101-104)은 아키텍쳐 및/또는 명령어 세트의 관점에서 동종 또는 이종일 수 있다. 예를 들어, 코어들의 일부는 순차형일 수 있지만 다른 것들은 비순차형이다. 또 다른 예로서, 코어들 중 2개 이상은 동일한 명령어 세트를 실행할 수 있는 반면, 다른 것들은 그 명령어 세트의 서브셋 또는 상이한 명령어 세트만을 실행할 수도 있다.
프로세서(310)는 또한, SRAM 및/또는 DRAM으로서 구현될 수 있는 캐쉬(313) 등의 하나 이상의 캐쉬를 포함할 수 있다. 도시되지 않은 많은 실시예에서, 캐쉬(313) 이외의 추가 캐쉬들이 구현되어 코어(들)(101-104) 내의 실행 유닛과 메모리 장치(150B 및 151B) 사이에 복수 레벨의 캐쉬들이 존재한다. 예를 들어, 공유된 캐쉬 유닛들의 세트는, 레벨 1(L1) 캐쉬 등의 상위-레벨 캐쉬, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 등의 중간 레벨 캐쉬들, 또는 다른 레벨의 캐쉬들, (LLC), 및/또는 이들의 상이한 조합을 포함할 수 있다. 상이한 실시예들에서, 캐쉬(313)는 상이한 방식으로 배분될 수 있고, 상이한 실시예들에서 많은 상이한 크기들 중 하나일 수도 있다. 예를 들어, 캐쉬(313)는 8 메가바이트(MB) 캐쉬, 16 MB 캐쉬 등일 수 있다. 추가적으로, 상이한 실시예들에서 캐쉬는, 직접 맵핑된 캐쉬(direct mapped cache), 완전 연관 캐쉬(fully associative cache), 멀티웨이 집합-연관 캐쉬(multi-way set-associative cache), 또는 또 다른 유형의 맵핑을 갖는 캐쉬일 수 있다. 복수의 코어를 포함하는 다른 실시예에서, 캐쉬(313)는 모든 코어들 간에 공유된 하나의 큰 부분을 포함하거나, 수 개의 별개 기능 슬라이스들로 분할될 수 있다(예를 들어, 각 코어당 하나의 슬라이스). 캐쉬(313)는 또한, 모든 코어들간에 공유된 하나의 부분과 코어마다의 기능 슬라이스들로 분할된 수 개의 다른 부분들을 포함할 수 있다.
프로세서(310)는 또한, 코어(들)(101-104)을 조율하고 동작시키는 컴포넌트들을 포함하는 홈 에이전트(314)를 포함할 수 있다. 홈 에이전트 유닛(314)은, 예를 들어, 전력 제어 유닛(PCU; power control unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어(들)(101-104) 및 통합된 그래픽 유닛(311)의 전력 상태를 조절하는데 필요한 로직 및 컴포넌트들이거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부적으로 접속된 디스플레이를 구동하기 위한 것이다.
언급된 바와 같이, 일부 실시예에서, 프로세서(310)는, 통합된 메모리 제어기(IMC)(331), 근방 메모리 캐쉬(MSC) 제어기, 및 NVRAM 제어기(332)를 포함하고, 이들 모두는 프로세서(310)와 동일한 칩 상에, 또는 프로세서(310)에 접속된 별개의 칩 및/또는 팩키지 상에 있을 수 있다. DRAM 장치(144)는 IMC(331) 및 MSC 제어기(124)와 동일한 칩 또는 상이한 칩 상에 있을 수 있고; 따라서, 하나의 칩은 프로세서(310)와 DRAM 장치(144)를 가질 수 있고; 하나의 칩은 프로세서(310)와 또 다른 DRAM 장치(144)를 가질 수 있고 (이들 칩은 동일하거나 상이한 팩키지 내에 있을 수 있다); 하나의 칩은, 코어(들)(101-104) 및 또 다른 IMC(331), MSC 제어기(124) 및 DRAM(144)을 가질 수 있고(이들 칩들은 동일하거나 상이한 팩키지들 내에 있을 수 있다); 하나의 칩은, 코어(들)(101-104), 또 다른 IMC(331) 및 MSC 제어기(124), 및 또 다른 DRAM(144)을 가질 수 있는 등이다(이들 칩들은 동일하거나 상이한 팩키지 내에 있을 수 있다).
일부 실시예에서, 프로세서(310)는 IMC(331)에 결합된 I/O 서브시스템(115)을 포함한다. I/O 서브시스템(115)은, 프로세서(310)와, 후속하는 직렬 또는 병렬 I/O 장치들: (근거리 통신망, 광역 네트워크 또는 인터넷 등의) 하나 이상의 네트워크(336), (플래시/자기/광 대용량 스토리지(152B), BIOS 플래시(362), TPM 플래시(372) 등의) 스토리지 I/O 장치, 및 (디스플레이, 키보드, 스피커 등과 같은) 하나 이상의 비-스토리지 I/O 장치(337) 사이의 통신을 가능케 한다. I/O 서브시스템(115)은, 스토리지 및 비-스토리지 I/O 장치와 네트워크로의 액세스를 제공하기 위해 수 개의 I/O 어댑터(338)와 기타의 I/O 회로를 더 포함하는 플랫폼 제어기 허브(PCH; platform controller hub)(미도시)를 포함할 수 있다. 이를 달성하기 위해, I/O 서브시스템(115)은, 이용되는 각각의 I/O 프로토콜에 대한 적어도 하나의 통합된 I/O 어댑터(338)를 가질 수 있다. I/O 서브시스템(115)은, 프로세서(310)와 동일한 칩 상에, 또는 프로세서(310)에 접속된 별개의 칩 및/또는 팩키지 상에 있을 수 있다.
I/O 어댑터(338)는 프로세서(310) 내에서 이용되는 호스트 통신 프로토콜을 특정한 I/O 장치와 호환되는 프로토콜로 변환한다. 플래시/자기/광 대용량 스토리지(152B)의 경우, I/O 어댑터(338)가 변환할 수 있는 프로토콜들 중 일부로는, 특히, PCI-E(Peripheral Component Interconnect-Express) 3.0; USB 3.0; SATA 3.0; SCSI(Small Computer System Interface), Ultra-640; 및 IEEE 1394 "Firewire"가 포함된다. BIOS 플래시(362)의 경우, I/O 어댑터(338)가 변환할 수 있는 프로토콜들 중 일부로는, 특히, SPI(Serial Peripheral Interface), Microwire가 포함된다. 추가적으로, 하나 이상의 무선 프로토콜 I/O 어댑터가 있을 수 있다. 무선 프로토콜의 예들은, 특히, IEEE 802.15 및 Bluetooth 4.0 등의 개인 영역 네트워크; IEEE 802.11-기반의 무선 프로토콜 등의 무선 근거리 통신망; 및 셀룰러 프로토콜에서 이용된다.
일부 실시예에서, I/O 서브시스템(115)은 TPM 제어(334)에 결합되어, 보안 데이터, 암호화 키, 플랫폼 구성 정보 등과 같은 시스템 영구 상태로의 액세스를 제어한다. 한 실시예에서, 이들 시스템은 영구 상태는 TMP NVRAM(173)에 저장되고 NVRAM 제어기(332)를 통해 액세스된다.
한 실시예에서, TPM(334)은 암호 기능을 갖춘 보안 마이크로-제어기이다. TPM(334)은 다수의 신뢰-관련 기능들; 예를 들어, TPM에 의해 보호된 데이터는 동일한 TPM에 대해서만 이용가능하도록 보장하기 위한 SEAL 기능을 가진다. TPM(334)은 그 암호화 기능을 이용하여 데이터와 키(예를 들어, 비밀)을 보호할 수 있다. 한 실시예에서, TPM(334)은, 하드웨어 장치들과 플랫폼의 인증을 허용하는 고유한 비밀 RSA 키를 가진다. 예를 들어, TPM(334)은, 컴퓨터 시스템(300)에 저장된 데이터로의 액세스를 시도하는 시스템이 예상된 시스템인지를 확인할 수 있다. TPM(334)은 또한, 플랫폼(예를 들어, 컴퓨터 시스템(300))의 무결성을 보고할 수 있다. 이것은, 외부 자원(예를 들어, 네트워크 상의 서버)이 플랫폼의 신뢰성을 결정하는 것을 허용하지만, 사용자에 의해 플랫폼으로의 액세스를 방지하지는 않는다.
일부 실시예에서, I/O 서브시스템(315)은 또한, 시스템 관리자가 컴퓨터 시스템(300)을 모니터링, 유지, 업데이트, 업그레이드, 및 수리하는 것을 허용하는 마이크로프로세서인 관리 엔진(ME; Management Engine)(335)을 포함한다. 한 실시예에서, 시스템 관리자는, 네트워크(336)를 경유하여 ME(335)를 통해 디코드 테이블(333)의 내용을 편집함으로써 컴퓨터 시스템(300)을 원격으로 구성할 수 있다.
설명의 편의를 위해, 본 출원의 나머지는 때때로 NVRAM(142)을 PCMS 장치라고 부른다. PCMS 장치는, 비휘발성이고, 낮은 전력 소비를 가지며, 비트 레벨에서 수정가능한, 다층(수직 적층된) PCM 셀 어레이를 포함한다. 따라서, 용어, NVRAM 장치와 PCMS 장치는 이하의 논의에서 상호교환가능하게 사용될 수 있다. 그러나, 앞서 논의된 바와 같이, NVRAM(142)을 위해 PCMS 이외의 상이한 기술들도 이용될 수도 있다는 점을 깨달아야 한다.
컴퓨터 시스템은, 컴퓨터 시스템의 프로세서가 프로세서(310)의 전술된 컴포넌트들 모두를 갖지는 않거나, 프로세서(310)보다 더 많은 컴포넌트를 갖더라도, 시스템 메모리, 대용량 스토리지, 펌웨어 메모리 및/또는 기타의 메모리 및 스토리지 목적을 위해, NVRAM(142)을 이용할 수 있다는 것을 이해하여야 한다.
도 3에 도시된 특정한 실시예에서, MSC 제어기(124) 및 NVRAM 제어기(332)는 프로세서(310)와 동일한 다이 또는 팩키지(CPU 팩키지라고 함) 상에 위치할 수 있다. 다른 실시예에서, MSC 제어기(124) 및/또는 NVRAM 제어기(332)는, (DDR 버스(예를 들어, DDR3, DDR4 등) 등의) 메모리 버스, PCI 익스프레스 버스, 데스크탑 관리 인터페이스(DMI; desktop management interface) 버스, 또는 기타 임의 유형의 버스 등의 버스를 통해 프로세서(310) 또는 CPU 팩키지에 결합되어, 다이로부터 따로 떨어져 또는 CPU 팩키지로부터 따로 떨어져 위치할 수도 있다.
예시적인 PCM 버스 및 팩키징 구성
도 4a 내지 도 4m은, 프로세서, 근방 메모리, 및 원격 메모리가 상이한 방식으로 구성되고 팩키징되는, 다양한 상이한 배치들을 나타낸다. 특히, 도 4a 내지 도 4m에 나타낸 일련의 플랫폼 메모리 구성은, PCM 기술, 또는 더 구체적으로는 PCMS 기술 등의, 새로운 비휘발성 시스템 메모리의 이용을 가능케한다.
동일한 수치 표기들 중 일부가 도 4a 내지 도 4n의 복수의 도면들에 걸쳐 이용되고 있지만, 이것은, 이들 수치 표기들에 의해 식별되는 구조가 항상 동일하다는 것을 반드시 의미하는 것은 아니다. 예를 들어, 동일한 숫자가 수 개의 도면들에서 통합된 메모리 제어기(IMC)(331)와 CPU(401)를 식별하는데 이용되지만, 이들 컴포넌트들은 상이한 도면들에서 상이하게 구현될 수도 있다. 이들 차이점들 중 일부는, 본 발명의 기저 원리를 이해하는 것과 관련되지 않으므로 강조되지 않는다.
수 개의 상이한 시스템 플랫폼 구성 접근법들이 이하에서 설명되지만, 이들 접근법들은 2개의 넓은 범주: 분할(split) 아키텍쳐 및 단일화된(unified) 아키텍쳐에 해당된다. 요약하면, 분할 아키텍쳐 방식에서, 메모리측 캐쉬(MSC) 제어기(예를 들어, 프로세서 다이에 위치하거나 CPU 팩키지 내의 별개의 다이에 위치함)은 모든 시스템 메모리 요청을 가로챈다. 제어기로부터 "하류로 흘러" CPU 팩키지를 벗어나 근방 메모리와 원격 메모리에 결합되는 2개의 별개의 인터페이스가 있다. 각 인터페이스는 특정한 유형의 메모리용으로 조정되고, 각 메모리는 성능과 용량의 관점에서 독립적으로 스케일링될 수 있다.
단일화된 아키텍쳐 방식에서, 단일의 메모리 인터페이스가 프로세서 다이 또는 CPU 팩키지를 벗어나고 모든 메모리 요청은 이 인터페이스에 전송된다. MSC 제어기는 근방 및 원격 메모리 서브시스템과 함께 이 단일 인터페이스 상에 병합된다. 이 메모리 인터페이스는 프로세서의 메모리 성능 요건을 충족하도록 조정되어야 하고, PCMS 장치들은 판독 요청을 순차적으로 처리할 수 없기 때문에 적어도 트랜잭션 비순차 프로토콜을 지원해야 한다. 상기의 일반적 범주에 따라, 다음과 같은 특정한 플랫폼 구성이 채용될 수 있다.
후술되는 실시예들은 다양한 유형의 버스/채널들을 포함한다. 용어 "버스" 및 "채널"은 여기서는 동의어로서 사용된다. DIMM 소켓당 메모리 채널수는 컴퓨터 시스템에서 사용되는 특정한 CPU 팩키지에 의존할 것이다(일부 CPU 팩키지는, 예를 들어, 소켓당 3개의 메모리 채널을 지원한다).
추가적으로, DRAM을 이용하는 후술되는 실시예들에서, 제한이 아닌 예로서, DDR 채널(예를 들어, DDR3, DDR4, DDR5 등)을 포함한 사실상 임의 유형의 DRAM 메모리 채널들이 이용될 수 있다. 따라서, 산업에서의 폭넓은 수용, 결과적인 가격 지수 등으로 인해 DDR이 유익하지만, 본 발명의 기저 원리는 임의의 특정한 유형의 DRAM이나 휘발성 메모리로 제한되지 않는다.
도 4a는 (프로세서 다이 상의 또는 별개의 다이 상의) CPU 팩키지(401)에서 FM에 대한 캐쉬(즉, MSC)로 역할하는 근방 메모리로서 동작하는 하나 이상의 DRAM 장치(403-406)와 원격 메모리로서 역할하는 DIMM(450-451) 상에 존재하는 PCM 메모리 등의 하나 이상의 NVRAM 장치를 포함하는 분할 아키텍쳐의 한 실시예를 나타낸다. CPU 팩키지(401) 상의 높은 대역폭 링크(407)는, 하나의 또는 복수의 DRAM 장치(403-406)를, 통합된 메모리 제어기(IMC)(331) 및 MSC 제어기(124)를 호스팅하는 프로세서(310)에 상호접속한다. 도 4a와 후술되는 다른 도면들에서는 별개의 유닛으로서 예시되어 있지만, 한 실시예에서 MSC 제어기(124)는 메모리 제어기(331) 내에 통합될 수도 있다.
DIMM(450-451)은, DDR 주소, 데이터 및 제어 라인과 전압들(예를 들어, JEDEC(Joint Electron Devices Engineering Council)에 의해 정의된 DDR3 또는 DDR4 표준)을 갖는 DDR 채널(440)을 정의하는 전기 접속과 DDR 슬롯을 이용한다. DIMM(450-451) 상의 PCM 장치들은, 이 분할 아키텍쳐의 원격 메모리 용량을, DDR 채널(440)에 의해, DDR 및 트랜잭션 프로토콜 양쪽 모두를 운반할 수 있는 CPU 팩키지(401)에 제공한다. 프로세서(310) 또는 CPU 팩키지 내의 기타의 로직(예를 들어, IMC(331) 또는 MSC 제어기(124))이 명령을 전송하고 즉각적 응답을 수신하는 DDR 프로토콜과는 대조적으로, PCM 장치와 통신하는데 이용되는 트랜잭션 프로토콜은 CPU(401)가 각각 고유 트랜잭션 ID로 식별되는 일련의 트랜잭션을 발부하는 것을 허용한다. 명령들은 PCM DIMM들 중 수신 DIMM 상의 PCM 제어기에 의해 서비스되고, 이 수신 DIMM은, 잠재적으로 비순차적으로, CPU 팩키지(401)에 응답을 되전송한다. CPU 팩키지(401) 내의 프로세서(310) 또는 기타의 로직은, 각각의 트랜잭션 응답을, 응답과 함께 전송된 그 트랜잭션 ID로 식별한다. 상기의 구성은, 시스템이, (DDR 전기 접속을 통한 DDR 프로토콜을 이용한) 표준 DDR DRAM-기반의 DIMM들 및 (동일한 DDR 전기 접속을 통한 트랜잭션 프로토콜을 이용한) PCM-기반의 DIMM 구성 양쪽 모두를 지원하는 것을 허용한다.
도 4b는, MSC로서 역할하는 근방 메모리를 형성하기 위해 DDR 채널(440)을 통해 결합된 DDR DRAM-기반의 DIMM(452)을 이용하는 분할 아키텍쳐를 나타낸다. 프로세서(310)는 메모리 제어기(331)와 MSC 제어기(124)를 호스팅한다. PCM 메모리 장치 등의 NVRAM 장치는 CPU 팩키지(401)로부터 따로 떨어진 추가의 DDR 채널(442) 상의 전기 접속과 DDR 슬롯을 이용하는 PCM-기반의 DIMM(453) 상에 존재한다. PCM-기반의 DIMM(453)은, 이 분할 아키텍쳐의 원격 메모리 용량을, DDR 채널(442)에 의해, DDR 전기 접속에 기초하고 DDR 및 트랜잭션 프로토콜 양쪽 모두를 운반할 수 있는 CPU 팩키지(401)에 제공한다. 이것은, 시스템이, 원하는 용량 및/또는 성능 지수를 달성하기 위해 다양한 수의 DDR DRAM DIMM(452)(예를 들어, DDR4 DIMMS)과 PCM DIMM(453)으로 구성되는 것을 허용한다.
도 4c는 (프로세서 다이 상의 또는 별개의 다이 상의) CPU 팩키지(401) 상에서 메모리측 캐쉬(MSC)로서 역할하는 근방 메모리(403-406)를 호스팅하는 분할 아키텍쳐를 나타낸다. CPU 팩키지 상의 높은 대역폭 링크(407)는, 하나의 또는 복수의 DRAM 장치(403-406)를, 분할 아키텍쳐에서 정의된 바와 같은, 메모리 제어기(331) 및 MSC 제어기(124)를 호스팅하는 프로세서(310)에 상호접속하는데 이용된다. PCM 메모리 장치 등의 NVRAM은, PCI Express 전기 접속과 PCI Express 프로토콜 또는 PCI Express 버스(454)를 통한 상이한 트랜잭션 프로토콜을 이용하는 PCI Express 카드 또는 라이저(risers; 455) 상에 존재한다. PCI Express 카드 또는 라이저(455) 상의 PCM 장치들은 이 분할 아키텍쳐의 원격 메모리 용량을 제공한다.
도 4d는, MSC로서 역할하는 근방 메모리를 형성하기 위해 DDR DRAM-기반의 DIMM(452)과 DDR 채널(440)을 이용하는 분할 아키텍쳐이다. 프로세서(310)는 메모리 제어기(331)와 MSC 제어기(124)를 호스팅한다. PCM 메모리 장치(455) 등의 NVRAM은, PCI Express 전기 접속과 PCI Express 프로토콜 또는 PCI Express 링크(454)를 통한 상이한 트랜잭션 프로토콜을 이용하는 PCI Express 카드 또는 라이저 상에 존재한다. PCI Express 카드 또는 라이저(455) 상의 PCM 장치는, DDR DRAM DIMM(452)에 대한 복수의 DDR 채널(440)을 제공하는 CPU 팩키지(401)로부터 따로 떨어진 메모리 채널 인터페이스를 이용하여, 이 분할 아키텍쳐의 원격 메모리 용량을 제공한다.
도 4e는, MSC로서 역할하는 근방 메모리와, PCI Express 전기 접속과 PCI Express 프로토콜 또는 PCI Express 버스(454)를 통한 상이한 트랜잭션 프로토콜을 이용하는 PCI Express 카드 또는 라이저(456) 상의 PCM 등의 원격 메모리 NVRAM 양쪽 모두를 호스팅하는 단일화된 아키텍쳐를 나타낸다. 프로세서(310)는 통합된 메모리 제어기(331)를 호스팅하지만, 이 단일화된 아키텍쳐의 경우, MSC 제어기(124)는, DRAM 근방 메모리 및 NVRAM 원격 메모리와 함께, 카드 또는 라이저(456) 상에 존재한다.
도 4f는, DDR 채널(457)을 이용하는 DIMM(458) 상의, MSC로서 역할하는 근방 메모리와 PCM 등의 원격 메모리 NVRAM 양쪽 모두를 호스팅하는 단일화된 아키텍쳐를 나타낸다. 이 단일화된 아키텍쳐의 근방 메모리는 각 DIMM(458) 상에 DRAM을 포함하고, 각 DIMM(458) 상의 DRAM은 특정 DIMM의 원격 메모리를 형성하는 동일한 DIMM(458) 상의 PCM 장치에 대한 메모리측 캐쉬로서 역할한다. MSC 제어기(124)는, 근방 및 원격 메모리와 함께, 각 DIMM(458) 상에 존재한다. 이 실시예에서, DDR 버스(457)의 복수의 메모리 채널은 CPU 팩키지로부터 따로 떨어져 제공된다. 이 실시예의 DDR 버스(457)는 DDR 전기 접속을 통한 트랜잭션 프로토콜을 구현한다.
도 4g는 하이브리드 분할 아키텍쳐를 나타내며, 여기서, MSC 제어기(124)는 프로세서(310) 상에 존재하고, 근방 메모리와 원격 메모리 양쪽 모두는 동일한 DDR 버스(410)를 공유한다. 이 구성은, DDR 슬롯과 (PCM 메모리 장치 등의) NVRAM을 이용하여, MSC로서 역할하는 근방 메모리로서의 DRAM-기반의 DDR DIMM(411a)을, DDR 버스(410)의 동일한 메모리 채널에 존재하는 PCM-기반의 DIMM(411b)과 함께 이용한다. 이 실시예의 메모리 채널은 각각 근방 메모리와 원격 메모리 DIMM(411a 및 411b)를 어드레싱하기 위해 DDR과 트랜잭션 프로토콜을 동시에 운반한다.
도 4h는, 메모리측 캐쉬로서 역할하는 근방 메모리(461a)가, 메자닌(mezzanine) 또는 라이저(461) 상에서 DRAM-기반의 DDR DIMM의 형태로 존재하는 단일화된 아키텍쳐를 나타낸다. 메모리측 캐쉬(MSC) 제어기(124)는, 메자닌/라이저(461) 상의 DDR DIMM 채널(470)에 접속되고 차등 메모리 링크 등의 고성능 인터커넥트(들)(462)를 통해 CPU에 상호접속되는 2개 이상의 메모리 채널을 가질 수 있는 라이저의 DDR 및 PCM 제어기(460)에 위치한다. 연관된 원격 메모리(461b)는 동일한 메자닌/라이저(461) 상에 놓여 있고, DDR 채널(470)을 이용하고 (PCM 장치 등의) NVRAM으로 채워진 DIMM으로 형성된다.
도 4i는, DDR 메모리 서브 시스템과, 그 DDR 메모리 서브시스템 상의 CPU 팩키지(401)에 DDR 버스(471)를 통해 접속된 DIMM(464)에 대한 메모리 용량 확장으로서 이용될 수 있는 단일화된 아키텍쳐를 나타낸다. 이 구성에서의 추가의 NVM-기반의 용량을 위해, MSC로서 역할하는 근방 메모리는 메자닌 또는 라이저(463) 상에서 DRAM 기반의 DDR DIMM(463a)의 형태로 존재한다. MSC 제어기(124)는, 메자닌/라이저 상의 DDR DIMM 채널(470)에 접속되고 차등 메모리 링크 등의 고성능 인터커넥트(들)(462)를 통해 CPU에 상호접속되는 2개 이상의 메모리 채널을 가질 수 있는 라이저의 DDR 및 PCM 제어기(460)에 위치한다. 연관된 원격 메모리(463b)는 동일한 메자닌/라이저(463) 상에 놓여 있고, DDR 채널(470)을 이용하고 (PCM 장치 등의) NVRAM으로 채워진 DIMM(463b)으로 형성된다.
도 4j는, 메모리측 캐쉬(MSC)로서 역할하는 근방 메모리가 각각의 및 모든 DIMM(465) 상에서 DRAM의 형태로 존재하는 단일화된 아키텍쳐이다. DIMM(465)은, CPU 팩키지(401)를 DIMM 상에 위치한 MSC 제어기(124)와 결합하는, 차등 메모리 링크 등의 고성능 인터커넥트/채널(들)(462) 상에 있다. 연관된 원격 메모리는 동일한 DIMM(465) 상에 놓여 있고, (PCM 장치 등의) NVRAM에 의해 형성된다.
도 4k는, MSC로서 역할하는 근방 메모리가 모든 DIMM(466) 상에서 DRAM의 형태로 존재하는 단일화된 아키텍쳐를 나타낸다. DIMM은, CPU 팩키지(401)를 DIMM 상에 위치한 MSC 제어기(124)와 접속하는 고성능 인터커넥트(들)(470) 상에 있다. 연관된 원격 메모리는 동일한 DIMM(466) 상에 놓여 있고, (PCM 장치 등의) NVRAM에 의해 형성된다.
도 4l은, MSC로서 역할하는 필요한 근방 메모리를 형성하기 위해 DDR 버스(471) 상의 DDR DRAM-기반의 DIMM(464)을 이용하는 분할 아키텍쳐를 나타낸다. 프로세서(310)는 통합된 메모리 제어기(331)와 메모리측 캐쉬 제어기(124)를 호스팅한다. PCM 메모리 등의 NVRAM은, 트랜잭션 프로토콜을 이용하여 CPU 팩키지(401)와 통신하는 고성능 인터커넥트(468)를 이용하는 카드 또는 라이저(467) 상에 존재하는 원격 메모리를 형성한다. 원격 메모리를 호스팅하는 카드 또는 라이저(467)는 그 라이저 상에 접속된 복수의 PCM-기반의 메모리 또는 복수의 PCM-기반의 DIMM을 제어할 수 있는 단일 버퍼/제어기를 호스팅한다.
도 4m은, MSC로서 역할하는 필요한 근방 메모리를 형성하기 위해 카드 또는 라이저(469) 상의 DRAM을 이용할 수 있는 단일화된 아키텍쳐를 나타낸다. PCM 메모리 장치 등의 NVRAM은, CPU 팩키지(401)로의 고성능 인터커넥트(468)를 이용하는 카드 또는 라이저(469) 상에 역시 존재하는 원격 메모리를 형성한다. 원격 메모리를 호스팅하는 카드 또는 라이저(469)는, 그 라이저(469) 상의 복수의 PCM-기반의 장치 또는 복수의 PCM-기반의 DIMM을 제어할 수 있는 단일 버퍼/제어기를 호스팅하고, 또한 메모리측 캐쉬 제어기(124)를 통합하고 있다.
도 4g에 나타낸 것과 같은, 전술된 실시예들 중 일부에서, DRAM DIMM(411a)과 PCM-기반의 DIMM(411b)은 동일한 메모리 채널 상에 존재한다. 결과적으로, CPU를 DRAM과 PCM 메모리들 양쪽 모두에 접속하기 위해 동일한 세트의 어드레스/제어 및 데이터 라인들이 이용된다. CPU 메쉬 인터커넥트를 통한 데이터 트래픽의 양을 감소시키기 위하여, 한 실시예에서, PCM-기반의 DIMM과의 공통 메모리 채널 상의 DDR DIMM이 PCM-기반의 DIMM에 저장된 데이터에 대한 유일한 MSC로서 역할하도록 구성된다. 이러한 구성에서, PCM-기반의 DIMM에 저장된 원격 메모리 데이터는 동일한 메모리 채널 내의 DDR DIMM 근방 메모리에서만 캐슁됨으로써, 메모리 트랜잭션을 그 특정 메모리 채널로 국지화한다.
추가적으로, 상기 실시예를 구현하기 위해, 시스템 어드레스 공간은 상이한 메모리 채널들 사이에서 논리적으로 세분될 수 있다. 예를 들어, 4개의 메모리 채널이 있다면, 시스템 어드레스 공간의 1/4 부분이 각 메모리 채널에 할당될 수 있다. 각 메모리 채널에 하나의 PCMS-기반의 DIMM과 하나의 DDR DIMM이 제공된다면, DDR DIMM은 시스템 어드레스 공간의 그 1/4 부분에 대한 MSC로서 역할하도록 구성될 수 있다.
시스템 메모리와 대용량 스토리지 장치의 선택은, 본 발명의 실시예가 채용되는 전자 플랫폼의 유형에 의존할 수 있다. 예를 들어, 비교적 작은 대용량 스토리지 요건을 갖는, 개인용 컴퓨터, 태블릿 컴퓨터, 노트북 컴퓨터, 스마트폰, 모바일 전화, 피처 폰, PDA(personal digital assistant), 휴대형 매체 재생기, 휴대형 게임 장치, 게임 콘솔, 디지털 카메라, 스위치, 허브, 라우터, 셋탑 박스, 디지털 비디오 레코더, 또는 기타의 장치들에서, 대용량 스토리지는, NVRAM 대용량 스토리지(152A) 단독만을 이용하여, 또는 플래시/자기/광 대용량 스토리지(152B)와 조합한 NVRAM 대용량 스토리지(152A)를 이용하여 구현될 수 있다. 비교적 큰 대용량 스토리지 요건을 갖는 다른 전자 플랫폼(예를 들어, 대규모 서버)에서, 대용량 스토리지는, 자기 스토리지(예를 들어, 하드 드라이브)를 이용하여, 또는 자기 스토리지, 광학 스토리지, 홀로그래픽 스토리지, 대용량 스토리지 플래시 메모리, 및 NVRAM 대용량 스토리지(152A)의 임의 조합을 이용하여 구현될 수 있다. 이러한 경우에, 스토리지를 책임지는 시스템 하드웨어 및/또는 소프트웨어는, 효율적이거나 기타 유용한 방식으로 FM(151B)/NVRAM 스토리지(152A)와 플래시/자기/광 대용량 스토리지(152B) 사이에서 영구 프로그램 코드 및 데이터의 블록들을 할당하기 위해 다양한 지능적인 영구 스토리지 할당 기술을 구현할 수 있다.
예를 들어, 한 실시예에서, 고성능 서버는, 대량의 영구 스토리지를 위해 근방 메모리(예를 들어, DRAM), PCMS 장치, 및 자기 대용량 스토리지 장치로 구성된다. 한 실시예에서, 노트북 컴퓨터는, 근방 메모리와, 원격 메모리 및 대용량 스토리지 장치 양쪽 모두의 역할을 수행하는(즉, 도 3에 도시된 바와 같이, 이들 역할들을 수행하기 위해 논리적으로 분할되는) PCMS 장치로 구성된다. 가정 또는 사무실 데스크탑 컴퓨터의 한 실시예는 노트북 컴퓨터와 유사하게 구성되지만, 대량의 영구 스토리지 능력을 제공하기 위해 하나 이상의 자기 스토리지 장치를 포함할 수도 있다.
태블릿 컴퓨터 또는 셀룰러 전화 장치의 한 실시예는 PCMS 메모리로 구성되지만 (비용/전력 절감을 위해) 잠재적으로 어떠한 근방 메모리도 없고 어떠한 추가적인 대용량 스토리지도 없다. 그러나, 태블릿/전화는 플래시 또는 PCMS 메모리 스틱 등의 착탈식 대용량 스토리지 장치로 구성될 수 있다.
다양한 다른 유형의 장치들이 전술된 바와 같이 구성될 수 있다. 예를 들어, 휴대형 매체 재생기 및/또는 PDA(personal digital assistant)는 전술된 태블릿/전화와 유사한 방식으로 구성될 수 있고, 게임 콘솔은 데스크탑 또는 랩탑과 유사한 방식으로 구성될 수 있다. 유사하게 구성될 수 있는 기타의 장치들로는, 디지털 카메라, 라우터, 셋탑 박스, 디지털 비디오 레코더, 텔레비전, 및 자동차가 포함된다.
MSC 아키텍쳐의 실시예
본 발명의 한 실시예에서, 시스템 메모리에서의 DRAM의 벌크는 PCM으로 대체된다. 앞서 논의된 바와 같이, PCM은 DRAM에 비해 상당히 낮은 비용으로 메모리 용량에서의 상당한 향상을 제공하고 비휘발성이다. 그러나, 비대칭적인 판독-대-기입 성능, 기입 사이클링 내구성 제한, 뿐만 아니라 그 비휘발 성질 등의 소정의 PCM 특성들은 주요 소프트웨어 변경을 요하지 않고 DRAM을 바로 대체하는 것을 어렵게 한다. 후술되는 본 발명의 실시예들은, 소프트웨어 향상을 통한 더 새로운 사용법을 가능케 하면서 PCM을 통합하는 소프트웨어-투명적인(software-transparent) 방식을 제공한다. 이들 실시예들은 메모리 서브시스템 아키텍쳐에서의 성공적 천이를 촉진하고 단일 PCM 푸울(pool)을 이용하여 메모리와 스토리지 양쪽 모두를 통합하는 방식을 제공하므로 플랫폼에서의 별도의 비휘발성 스토리지 계층(tier)에 대한 필요성을 완화시킨다.
도 5a에 나타낸 특정 실시예는 하나 이상의 프로세서 코어(501)를 포함하고, 각각의 코어는 메모리 요청을 생성하기 위한 내부 메모리 관리 유닛(MMU)(502)과, 명시된 캐쉬 관리 정책에 따라 프로그램 코드와 데이터 라인들을 저장하기 위한 하나 이상의 내부 CPU 캐쉬(503)를 가진다. 앞서 언급된 바와 같이, 캐쉬 관리 정책은 (계층 구조 내의 하나의 특정한 캐쉬 레벨에 존재하는 임의의 라인이 기타 임의의 캐쉬 레벨에는 존재하지 않는) 배타적 캐쉬 관리 정책, 또는 (복사판 캐쉬 라인들이 캐쉬 계층구조의 상이한 레벨들에서 저장되는) 내포적 캐쉬 관리 정책을 포함할 수 있다. 내부 캐쉬(503)를 관리하기 위해 채용될 수 있는 특정한 캐쉬 관리 정책은 당업자에 의해 충분히 이해되므로, 여기서는 상세히 설명되지 않을 것이다. 본 발명의 기저 원리는 임의의 특정 캐쉬 관리 정책으로 제한되지 않는다.
도 5a에는, 메모리 요청에 대해 메모리 채널 어드레스(MCA)를 생성함으로써 MSC(510)로의 액세스를 제공하는 홈 에이전트(505)도 역시 도시되어 있다. 홈 에이전트(505)는 명시된 메모리 어드레스 공간을 관리할 책임을 지고, 그 메모리 공간으로 향하는 메모리 액세스 충돌을 해결한다. 따라서, 임의의 코어가 주어진 어드레스 공간에 액세스할 필요가 있다면, 그 코어는 홈 에이전트(505)에게 요청을 전송하고, 홈 에이전트(505)는 그 요청을 특정 MMU(502)에게 전송한다. 한 실시예에서, 하나의 홈 에이전트(505)는 MMU(502)마다 할당되지만; 일부 실시예에서, 하나의 홈 에이전트(505)가 하나보다 많은 메모리 관리 유닛(502)에 서비스할 수 있다.
도 5a에 나타낸 바와 같이, MSC(510)는 PCM-기반의 원격 메모리(519) 앞에서 구성된다. MSC(510)는 근방 메모리(518)로의 액세스를 관리하고, 적절할 때(예를 들어, 요청이 근방 메모리(518)로부터 서비스될 수 없을 때) 메모리 액세스 요청(예를 들어, 판독 및 기입)을 원격 메모리 제어기(521)에 포워딩한다. MSC(510)는, 근방 메모리(518) 내에 포함된 캐쉬 라인들을 식별하는 태그들을 저장하는 태그 캐쉬(511)에 응답하여 동작하는 캐쉬 제어 유닛(512)을 포함한다. 동작시, (예를 들어, 캐쉬 적중(cache hit)에 응답하여) 메모리 액세스 요청이 근방 메모리(518)로부터 서비스될 수 있다고 캐쉬 제어 유닛(512)이 결정하면, 캐쉬 제어 유닛(512)은 근방 메모리(518) 내에 저장된 데이터를 식별하기 위해 근방 메모리 어드레스(NMA)를 생성한다. 근방 메모리 유닛(515)은 NMA를 해석하고 응답하여 근방 메모리(518)에 액세스하기 위해 전기 신호를 생성한다. 앞서 언급된 바와 같이, 한 실시예에서, 근방 메모리는 동적 랜덤 액세스 메모리(DRAM)이다. 이러한 경우에, 전기 신호는 행 어드레스 스트로브(RAS) 및 열 어드레스 스트로브(CAS) 신호를 포함할 수 있다. 그러나, 본 발명의 기저 원리는 근방 메모리에 대한 DRAM의 이용으로 제한되는 것은 아니라는 점에 유의해야 한다.
소프트웨어-투명적 메모리 애플리케이션을 보장하는 또 다른 컴포넌트는, 요구되는 성능을 제공하면서 PCM 원격 메모리(530) 특징을 관리하는 최적화된 PCM 원격 메모리 제어기(521)이다. 한 실시예에서, PCM 제어기(521)는, 캐쉬 제어 유닛(515)에 의해 생성된 MCA를 PCM 원격 메모리(530)를 직접 어드레싱하는데 이용되는 PDA로 변환하는 어드레스 우회 테이블(520)을 포함한다. 이러한 변환은 통상적으로 5KB인 "블록"의 입도에서 발생할 수 있다. 한 실시예에서, 원격 메모리 제어기(521)는, 임의의 특정한 블록에 대한 높은 빈도의 기입으로 인해 어떠한 마모된 핫 스폿도 없도록 보장하기 위해 PCM 블록들을 PCM 장치 어드레스 공간 도처에 지속적으로 이동시키기 때문에 변환이 요구된다. 전술된 바와 같이, 이러한 기술은 때때로 본 명세서에서 "마모-균등화(wear-leveling)"라고 언급된다.
따라서, MSC(510)는, MSC(510)가 PCM 원격 메모리(530)에 대한 트랜잭션(예를 들어, 판독 및 기입)을 흡수, 합동, 및 필터링하는 것을 허용하는 캐쉬 제어 유닛(512)에 의해 관리된다. 캐쉬 제어 유닛(512)은 근방 메모리(518)와 PCM 원격 메모리(530) 사이의 모든 데이터 이동 및 일관성 요건을 관리한다. 추가적으로, 한 실시예에서, MSC 캐쉬 제어기(512)는 CPU(들)과 인터페이싱하고 전통적인 DRAM 기반의 메모리 서브시스템에서 이용되는 표준 동기 로드/저장 인터페이스를 제공한다.
이제, 도 5a에 도시된 아키텍쳐의 정황 내에서 예시적인 판독 및 기입 동작이 설명될 것이다. 한 실시예에서, 판독 동작은 먼저, (예를 들어, 태그 캐쉬(511)를 이용하여) 요청된 데이터가 존재하는지를 결정하기 위해 참조(look-up)를 수행하는 MSC 제어기(512)에 도달할 것이다. 존재한다면, MSC 제어기는 그 데이터를 요청 CPU, 코어(501) 또는 I/O 장치(미도시)에게 반환할 것이다. 데이터가 존재하지 않는다면, MSC 제어기(512)는 그 요청을 (여기서는 메모리 채널 어드레스 또는 MCA라고도 하는) 시스템 메모리 어드레스와 함께 PCM 원격 메모리 제어기(521)에 전송할 것이다. PCM 제어기(521)는 그 어드레스를 PDA로 변환하고 판독 동작을 PCM의 이 영역으로 보내기 위해 어드레스 우회 테이블(520)을 이용할 것이다. PCM 원격 메모리(530)로부터 요청된 데이터를 수신하면, PCM 제어기(521)는 그 요청된 데이터를 MSC 제어기(512)에게 반환할 것이고, MSC 제어기(512)는 그 데이터를 MSC 근방 메모리(518)에 저장하고 또한 그 데이터를 요청 CPU 코어(501), 또는 I/O 장치에 전송할 것이다. 이 데이터에 대한 후속 요청은, 이 데이터가 어떤 다른 PCM 데이터에 의해 대체될 때까지는 MSC 근방 메모리(518)로부터 직접 서비스될 수 있다.
한 실시예에서, 메모리 기입 동작도 역시 먼저 MSC 제어기(512)로 가고, MSC 제어기(512)는 그것을 MSC 근방 메모리(518) 내에 기입한다. 이 실시예에서, 기입 동작이 수신될 때 데이터는 PCM 원격 메모리(530)로 바로 전송되지 않을 수도 있다. 예를 들어, 데이터는, 데이터가 저장되는 MSC 근방 메모리(518) 내의 위치가 상이한 시스템 메모리 어드레스에 대한 데이터를 저장하기 위해 재사용되어야 될 때에만 PCM 원격 메모리(530)에 전송될 수 있다. 이러한 상황이 발생하면, MSC 제어기(512)는, 데이터가 현재 PCM 원격 메모리(530)에 있지 않고 그에 따라 근방 메모리(518)로부터 데이터를 회수하여 PCM 제어기(521)에 전송할 것이라고 통보한다. PCM 제어기(521)는 시스템 메모리 어드레스를 위해 PDA를 참조한 다음 그 데이터를 PCM 원격 메모리(530)에 기입한다.
한 실시예에서, MSC 근방 메모리(518)의 크기는 작업량 메모리 요건 뿐만 아니라 근방 및 원격 메모리 성능에 의해 지시될 것이다. DRAM-기반의 MSC의 경우, 크기는 작업량 메모리 풋프린트의 크기 또는 PCM 원격 메모리(530) 크기의 1/10로 설정될 수 있다. 이러한 MSC는 현재의 프로세서/시스템 아키텍쳐에서 발견되는 종래의 캐쉬에 비해 매우 크다. 제한이 아닌 예로서, 128 GB의 PCM 원격 메모리 크기에 대해, MSC 근방 메모리의 크기는 16GB정도로 클 수 있다.
도 5b는 MSC(510)의 한 실시예와 연관된 추가의 상세한 사항을 나타낸다. 이 실시예는, MSC 범위 레지스터(RR) 유닛(545)으로부터의 제어 신호에 응답하여 MSC 동작 모드를 선택하는 캐쉬 액세스 모드 검사 유닛(544)과 명령어/어드레스를 버퍼링하기 위한 명령어 버퍼 트랙킹 유닛(542)을 포함한, 명령어 및 어드레싱을 책임지는 한 세트의 로직 유닛을 포함한다. 수 개의 예시적인 동작 모드들이 이하에서 설명된다. 요약하면, 이 모드들은, 근방 메모리가 전통적인 캐슁 역할에서 이용되는 모드들과, 근방 메모리(518)가 시스템 메모리의 일부를 형성하는 모드들을 포함할 수 있다. 태그 검사/명령어 스케쥴러(550)는 태그 캐쉬(511)로부터의 태그들을 이용하여 특정한 캐쉬 라인이 근방 메모리(518)에 저장되어 있는지를 결정하고 근방 메모리 제어기(515)는 채널 어드레스 신호(예를 들어, CAS 및 RAS 신호)를 생성한다.
이 실시예는 또한, 근방 메모리로부터 인출되거나 근방 메모리에 저장되는 데이터를 저장하기 위한 한 세트의 데이터 버퍼(546)를 포함한 데이터 라우팅과 처리를 책임지는 한 세트의 로직 유닛을 포함한다. 한 실시예에서, 근방 메모리 및/또는 원격 메모리로부터 사전인출된 데이터를 저장하기 위한 사전인출 데이터 캐쉬(547)도 역시 포함된다. 그러나, 사전인출 데이터 캐쉬(547)는 선택사항이고 본 발명의 기저 원리에 따르기 위해 필수적인 것은 아니다.
에러 정정 코드(ECC) 생성기/검사기 유닛(552)은, 근방 메모리에 기입되거나 근방 메모리로부터 판독되는 데이터가 에러가 없다는 것을 보장하기 위해 ECC를 생성하고 검사한다. 이하에서 논의되는 바와 같이, 본 발명의 한 실시예에서, ECC 생성기/검사기 유닛(552)은 캐쉬 태그를 저장하도록 수정된다. 구체적인 ECC는 당업자에 의해 충분히 이해될 것이므로 여기서는 상세히 설명되지 않을 것이다. 채널 제어기(553)는 근방 메모리(518)의 데이터 버스를 MSC(510)에 결합하고 근방 메모리(518)에 액세스하기 위한 필요한 전기 시그널링(예를 들어, DRAM 근방 메모리에 대한 RAS 및 CAS 시그널링)을 생성한다.
도 5b에는 또한, MSC(510)를 원격 메모리에 결합하기 위한 원격 메모리 제어 인터페이스(548)가 예시되어 있다. 특히, 원격 메모리 제어 인터페이스(548)는 원격 메모리를 어드레싱하는데 요구되는 MCA를 생성하고 데이터 버퍼(546)와 원격 메모리 사이에서 데이터를 전달한다.
언급된 바와 같이, 한 실시예에서 채용되는 근방 메모리(518)는 현재의 프로세서/시스템 아키텍쳐에서 발견되는 종래의 캐쉬들에 비해 매우 크다. 결과적으로, 근방 메모리 어드레스로의 시스템 메모리 어드레스 변환을 유지하는 태그 캐쉬(511)도 역시 매우 클 수 있다. MSC 태그들을 저장하고 참조하는 비용은 큰 캐쉬를 구축하는데 대한 중요한 장애가 될 수 있다. 따라서, 본 발명의 한 실시예에서, 이 문제는 ECC 보호를 위해 MSC에서 할당된 스토리지 내에 캐쉬 태그들을 저장하는 혁신적 방식을 이용하여 해결됨으로써, 본질적으로 태그에 대한 스토리지 비용을 제거한다.
이 실시예가, 캐쉬 태그들을 저장/관리하고, ECC 데이터를 저장하며, ECC 동작을 수행하기 위한 통합된 태그 캐쉬와 ECC 유닛(554)을 도시하는 도 5c에서 전반적으로 예시되어 있다. 예시된 바와 같이, (예를 들어, 데이터의 특정한 블록이 근방 메모리 캐쉬(518) 내에 저장되어 있는지를 결정하기 위해) 태그 검사 동작을 수행할 때 요청시에 저장된 태그들이 태그 검사/명령어 스케쥴러(550)에 제공된다.
도 5d는 예시적인 세트의 데이터(524) 및 대응하는 ECC(523)와 태그(522)의 조직을 나타낸다. 예시된 바와 같이, 태그(522)는 태그 캐쉬/ECC 유닛(554)의 메모리(예를 들어, 한 실시예에서 DDR DRAM)의 ECC(523)와 함께 위치한다. 이 예에서, 총 64바이트에 달하는 수 개의 데이터 블록들이 태그 캐쉬/ECC 유닛(554) 내에서 판독되었다. ECC 검사/생성기 유닛(554a)은 데이터(525)를 이용하여 ECC를 생성하고, 생성된 ECC를 데이터와 연관된 기존 ECC(523)와 대비하여 비교한다. 이 예에서, 데이터(525)의 64 바이트에 대해 4-바이트 ECC가 생성된다. 그러나, 본 발명의 기저 원리는 ECC의 임의의 특정한 유형이나 크기로 제한되지 않는다. 추가적으로, 용어 "데이터"는, 본 명세서에서, 도 5d에 도시된 데이터 스토리지(525)에 저장될 수 있는 실행가능한 프로그램 코드와 데이터 양쪽 모두를 지칭하기 위해 광의적으로 사용된다는 점을 유의해야 한다.
한 실시예에서, 3-바이트(24-비트) 태그(522)가 도 5d에 나타낸 비트 할당과 함께 이용된다. 구체적으로는, 비트 00 내지 16은 캐쉬 라인의 상위 어드레스 비트들을 제공하는 어드레스 비트들이다. 56 비트(예를 들어, SPA[55:00])를 갖는 시스템 어드레스의 경우, 비트 00 내지 16은 시스템 어드레스의 비트 55-29로 맵핑되어, 512MB의 가장 작은 캐쉬 크기를 허용한다. 3-바이트 태그로 되돌아가면, 비트 17-19는 보류되고; 비트 20-21은 캐쉬 라인의 원격 CPU 캐슁에 관한 정보를 제공하는(예를 들어, 라인이 캐슁되어 있는 다른 CPU들에 관한 표시를 제공) 디렉토리 비트이고; 비트 21-22는 캐쉬 라인의 현재 상태를 나타내고(예를 들어, 00=클린(clean); 01=더티(dirty); 및 11=미사용(unused)); 비트 23은 캐쉬 라인이 유효한지를 나타낸다(예를 들어, 1=유효; 0=무효).
근방 메모리 어드레스가 시스템 메모리 어드레스로부터 직접 추출되는 것을 허용하는 전술된 바와 같은 직접-맵핑형 캐쉬 아키텍쳐를 이용하면, MSC(510)가 판독될 수 있기 전에 태그 저장소를 참조하는 레이턴시 비용이 감소되거나 제거됨으로써, 성능을 상당히 향상시킨다. 게다가, MSC(510)가 요구되는 데이터를 갖고 있는지를 결정하기 위해 캐쉬 태그들을 검사하는 시간도 역시 제거되는데, 이것은 MSC로부터 판독된 데이터의 ECC 검사와 병렬로 이루어지기 때문이다.
소정의 조건 하에서, 데이터 함께 태그를 저장하는 것은 기입의 경우 문제를 발생시킬 수 있다. 기입은, 어떤 다른 어드레스에 대한 데이터를 오버라이트하지 않도록 보장하기 위해, 먼저 데이터를 판독한다. 매 기입 이전의 이러한 판독은 비용이 크게 된다. 본 발명의 한 실시예는, 최근에 액세스된 근방 메모리 어드레스(NMA)들의 태그들을 유지하는 더티 라인 태그 캐쉬를 채용한다. 많은 기입들은 최근에 액세스된 어드레스들을 목표로 하므로, 합리적으로 작은 태그 캐쉬는 기입 이전의 판독들 대부분을 필터링하기에 효과적인 적중률(hit rate)을 얻을 수 있다.
PCM 원격 메모리 제어기(521)와 한 세트의 PCM 원격 메모리 모듈(530a-i)을 포함하는 PCM DIMM(519)의 한 실시예와 연관된 추가 상세사항이 도 5e에 예시되어 있다. 한 실시예에서, 단일 푸울의 PCM 원격 메모리(530a-i)는 시스템 메모리와 스토리지 사용 사이에서 동적으로 공유된다. 이 실시예에서, 전체의 PCM 푸울(530a-i)은 4KB 크기의 "블록들"로 세분될 수 있다. PCM 디스크립터 테이블(PDT; PCM Descriptor Table)(565)은 각 PCM 블록의 이용을 메모리 또는 스토리지로서 식별한다. 예를 들어, PDT의 각 행은 각 블록의 이용(예를 들어, 1=메모리; 0=스토리지)을 식별하는 특정한 열을 갖는 특정한 블록을 나타낼 수 있다. 이 실시예에서, 초기 시스템 구성은 (예를 들어, PDT(565)를 프로그래밍함으로써) PCM(530a-i) 내의 PCM 블록들을 스토리지와 메모리 이용으로 분할할 수 있다. 한 실시예에서, 불량 블록들을 배제하고 마모-균등화 운용을 위한 여분 블록들을 제공하기 위해 동일한 테이블이 이용된다. 또한, PDT(565)는 소프트웨어에 의해 이용되는 "논리적" 블록 어드레스로의 각 PCMS 블록의 맵핑을 포함할 수도 있다. 시스템 메모리의 경우, 논리적 블록 어드레스는 MCA 또는 SPA와 동일하다. 이 연관은, 마모 균등화로 인해 PCMS 블록이 이동되는 때마다 어드레스 우회 테이블(AIT)(563)을 업데이트하는데 필요하다. 이러한 상황이 발생하면, 소프트웨어에 의해 이용되는 논리적 블록 어드레스는 상이한 PCMS 장치 어드레스(PDA)로 맵핑되어야 한다. 한 실시예에서, 이 맵핑은 AIT에 저장되고 매 마모-균등화 이동(every wear-level move)시마다 업데이트된다.
예시된 바와 같이, PCM 제어기(521)는, 마모 관리 유닛(555)과 어드레스 우회 유닛(563)에 응답하여 SPA를 PCM 블록으로 맵핑하도록 동작하는 시스템 물리적 어드레스(SPA)-대-PCM 맵퍼(556)를 포함한다. 한 실시예에서, 마모 관리 로직(555)은, PCM(530a-530i)의 스토리지 셀들이 너무 많은 기입 및/또는 소거 액세스 이후에 마모되기 시작한다는 사실을 감안하여 마모 균등화 알고리즘을 구현한다. 마모 균등화는, 예를 들어, 낮은 사이클 카운트를 갖는 데이터 블록들을 가끔 이동시켜, 높은 사이클 데이터 블록이 낮은 사이클 데이터 블록을 저장했던 메모리 셀들에 배치되는 것을 허용함으로써 기입과 소거를 PCM 장치의 메모리 셀들에 걸쳐 확산시킨다. 통상적으로, 다수의 블록들은 사이클되지 않지만, 높은 사이클 카운트 블록들은 고장나기 쉽고, 마모 균등화는 높은 사이클 카운트 블록과 낮은 사이클 카운트 블록의 어드레스를 스왑핑한다. 마모 관리 로직(555)은 하나 이상의 카운터와 레지스터를 이용하여 사이클 카운트를 추적할 수 있다(예를 들어, 카운터는 사이클이 검출될 때마다 1씩 증가되고 그 결과는 레지스터 세트에 저장될 수 있다).
한 실시예에서, 어드레스 우회 로직(563)은, 기입 동작이 보내져야 하는 PCM 블록들의 표시를 포함하는 어드레스 우회 테이블(AIT)을 포함한다. AIT는 블록들을 메모리와 스토리지 사용법 사이에서 자동으로 이동시키는데 이용될 수 있다. 소프트웨어 관점에서, 모든 블록들로의 액세스는 전통적인 메모리 로드/저장 시맨틱스(semantics)를 이용한다(즉, 마모 균등화와 어드레스 우회 동작은 소프트웨어에게 투명하게 발생한다). 한 실시예에서, AIT는 소프트웨어에 의해 생성된 SPA를 PDA로 변환하는데 이용된다. 이 변환은, PCMS 장치를 균등하게 마모시킬 필요성으로 요구되며, 데이터는 임의의 핫 스폿을 피하기 위해 PDA 공간 주변에서 이리저리 이동될 필요가 있을 것이다. 이러한 이동이 발생하면, SPA와 PDA 사이의 관계는 변할 것이고 AIT는 이 새로운 변환을 반영하도록 업데이트될 것이다.
SPA 대 PCM 맵핑에 이어, 스케쥴러 유닛(557)은 PCM 장치들(530a-i)에 대한 기저 PCM 동작(예를 들어, 판독 및/또는 기입)을 스케쥴링하고, PCM 프로토콜 엔진(558)은 판독/기입 동작을 수행하는데 요구되는 전기 시그널링을 생성한다. ECC 유닛(562)은 에러 검출 및 정정 동작을 수행하고 데이터 버퍼(561)는 PCM 장치들(530a-i)로부터 판독되거나 이에 기록되는 데이터를 임시적으로 버퍼링한다. 영구 기입 버퍼(559)는, 예상치 못한 전원 고장의 경우에도 PCMS로 다시 기입되는 것이 보장되는 데이터를 보유하는데 이용된다(예를 들어, 이 버퍼는 비휘발성 스토리지를 이용하여 구현된다). 플러쉬 지원 로직(560)이 포함되어, 주기적으로 및/또는 명시된 데이터 플러쉬 알고리즘에 따라(예를 들어, 영구 기입 버퍼가 명시된 임계치에 도달한 후) PCMS로 영구 기입 버퍼를 플러쉬한다.
한 실시예에서, MSC(510)는 스토리지 액세스를 직접 PCM 원격 메모리 제어기(521)에 자동으로 라우팅하고 메모리 액세스를 MSC 캐쉬 제어 유닛(512)에 자동으로 라우팅한다. PCM 원격 메모리 제어기(521)로 오는 스토리지 액세스는 정상(regular)의 판독 및 기입으로 취급되고 여기서 설명된 어드레스 우회 및 마모 균등화 메커니즘은 평상시처럼 적용된다. 데이터가 스토리지와 메모리 사이에서 이동될 필요가 있을 때 구현될 수 있는 추가의 최적화가 본 발명의 한 실시예에서 채용된다. 공통 PCM 푸울(530a-i)이 이용되므로, 간단히 변환 테이블(예를 들어, AIT) 내의 포인터를 변경함으로써 데이터 이동이 제거되거나 연기될 수 있다. 예를 들어, 데이터가 스토리지로부터 메모리로 전송될 때, 특정 물리적 PCM 스토리지 위치의 데이터를 식별하는 포인터가 업데이트되어 동일한 물리적 PCM 스토리지 위치가 이제는 시스템 메모리 내의 메모리 위치임을 나타낼 수 있다. 한 실시예에서, 이것은 성능과 전력 이점 양쪽 모두를 제공하기 위해 소프트웨어-투명적 방식으로 하드웨어에 의해 이루어진다.
소프트웨어 투명적 동작 모드 외에도, MSC 제어기(512)의 한 실시예는 MSC 범위 레지스터(RR)(545)에 의해 나타낸 바와 같은 대안적 동작 모드를 제공한다. 이들 동작 모드들은 하기를 포함하지만 이것으로 제한되지 않는다:
1) 스토리지 클래스 애플리케이션을 위한 PCM 메모리의 직접 액세스. 이러한 사용법은 또한 MSC 제어기(512)가 PCM(519)에 제출된 기입이 실제로 영구 상태로 남겨지도록 보장할 것을 요구한다.
2) 근방 메모리의 일부를 직접적 이용을 위한 소프트웨어에 노출시키면서 나머지는 MSC로서 유지하는, 근방 메모리(518)의 하이브리드 이용. 근방 메모리(518)의 일부가 직접적 이용을 위한 소프트웨어에 노출될 때, 그 부분은 시스템 어드레스 공간 내에서 직접 어드레싱가능하다. 이것은 소정 애플리케이션이 그들의 메모리 할당을 고성능의 작은 영역(근방 메모리(518))과 비교적 더 낮은 성능의 벌크 영역(원격 메모리(530))으로 명시적으로 분할하는 것을 허용한다. 대조적으로, MSC 내의 캐쉬로서 할당된 부분은 시스템 어드레스 공간의 일부를 형성하지 않는다(그러나, 대신에 여기서 설명된 원격 메모리(530)에 대한 캐쉬로서 역할한다).
앞서 논의된 바와 같이, MSC 아키텍쳐는, 수 개의 상이한 시스템 분할 접근법들이 가능하도록 정의된다. 이들 접근법들은 2개의 넓은 버킷들에 해당한다:
(1) 분할 아키텍쳐: 이 방식에서, MSC 제어기(512)는 CPU 내에 위치하고 모든 시스템 메모리 요청을 가로챈다. MSC로부터 CPU를 벗어나 근방 메모리(예를 들어, DRAM) 및 원격 메모리(예를 들어, PCM)에 접속되는 2개의 별개의 인터페이스가 있다. 각 인터페이스는 특정한 유형의 메모리용으로 조정되고, 각 메모리는 성능과 용량의 관점에서 독립적으로 스케일링될 수 있다.
(2) 단일화된 아키텍쳐: 이 방식에서 단일의 메모리 인터페이스가 CPU를 벗어나고 모든 메모리 요청은 이 인터페이스에 전송된다. MSC 제어기(512)는 근방 메모리(예를 들어, DRAM) 및 원격 메모리(예를 들어, PCM) 서브시스템과 함께 이 단일 인터페이스 상에서 CPU 외부에 통합된다. 한 실시예에서, 이 메모리 인터페이스는 CPU의 메모리 성능 요건을 충족하도록 조정되고 트랜잭션 비순차 프로토콜을 지원한다. 근방 및 원격 메모리 요건은 이들 인터페이스들 각각 상에서 "단일화된" 방식으로 충족된다.
상기 버킷들의 범위 내에서 수 개의 상이한 분배 옵션들이 가능성 있고 이들 중 일부가 이하에서 설명된다.
(1) 분할 예:
근방 메모리 : DDR5 DIMM
근방 메모리 인터페이스: 하나 이상의 DDR5 채널
원격 메모리: PCI 익스프레스(PCIe) 카드 상의 PCM 제어기/장치
원격 메모리 인터페이스: x16 PCIe, Gen 3
2) 단일화된 예:
CPU 메모리 인터페이스: 하나 이상의 KTMI(또는 QPMI) 채널
라이저 카드 상에 MSC/PCM 제어기를 갖춘 근방/원격 메모리
MSC/PCM 제어기로부터 따로 떨어진 근방 메모리 인터페이스: DDR5 인터페이스
MSC/PCM 제어기로부터 따로 떨어진 원격 메모리 인터페이스: PCM 장치 인터페이스
상이한 근방 메모리 동작 모드들을 갖는 실시예
앞서 논의된 바와 같이, 대규모 DRAM-기반의 근방 메모리를 이용하면서 시스템 메모리로서 PCM 등의 고속 비휘발성 메모리를 도입하기 위해 2-레벨 메모리 계층구조가 이용될 수 있다. 근방 메모리는 하드웨어-관리되는 캐쉬로서 이용될 수 있다. 그러나, 일부 애플리케이션은 하드웨어 캐쉬 친화적이지 않으므로, 이러한 메모리를 이용하기 위한 대안적 방식들로부터 혜택을 볼 것이다. 임의의 주어진 시간에 서버 상에서 수 개의 상이한 애플리케이션들이 실행 중일 수도 있기 때문에, 본 발명의 한 실시예는 복수의 사용 모드들이 동시에 인에이블되는 것을 허용한다. 추가적으로, 한 실시예는 이들 사용 모드들 각각에 대해 근방 메모리의 할당을 제어할 능력을 제공한다.
한 실시예에서, MSC 제어기(512)는 근방 메모리를 이용하기 위한 다음과 같은 모드들을 제공한다. 앞서 언급된 바와 같이, 한 실시예에서, 현재의 동작 모드는 MSC 범위 레지스터(RR)(545)에 저장된 동작 코드들에 의해 명시될 수 있다.
(1) 라이트-백 캐슁 모드 (Write-Back Caching Mode): 이 모드에서, 근방 메모리(518)의 전부 또는 일부는 PCM 메모리(530) 대한 캐쉬로서 이용된다. 라이트-백 모드에 있는 동안, 모든 기입 동작은 처음에 근방 메모리(518)로 향한다(기입이 향하는 캐쉬 라인이 캐쉬 내에 존재한다고 가정). (각각의 기입 동작이 원격 메모리(530)에 즉각 전파되는 이하에서 설명되는 라이트-쓰루(write-through) 모드와는 대조적으로) 근방 메모리(518) 내의 캐쉬 라인이 또 다른 캐쉬 라인에 의해 대체되려 할 때에만 대응하는 기입 동작이 수행되어 PCM 원격 메모리(530)를 업데이트한다.
한 실시예에서, 판독 동작은 먼저, (예를 들어, 태그 캐쉬(511)를 이용하여) 요청된 데이터가 PCM 원격 메모리(518)에 존재하는지를 결정하기 위해 참조를 수행하는 MSC 캐쉬 제어기(512)에 도달할 것이다. 존재한다면, MSC 캐쉬 제어기는 그 데이터를 요청 CPU, 코어(501) 또는 I/O 장치(도 5a에는 미도시)에게 반환할 것이다. 데이터가 존재하지 않는다면, MSC 캐쉬 제어기(512)는 그 요청을 시스템 메모리 어드레스와 함께 PCM 원격 메모리 제어기(521)에 전송할 것이다. PCM 원격 메모리 제어기(521)는, 시스템 메모리 어드레스를 PCM 물리적 장치 어드레스(PDA)로 변환하고 판독 동작을 원격 메모리(530)의 이 영역으로 보낼 것이다. 앞서 언급된 바와 같이, 이 변환은, 시스템 메모리 어드레스와 PCM PDA 사이에서 변환하기 위해 PCM 제어기(521)가 이용하는 어드레스 우회 테이블(AIT)(563)을 이용할 수 있다. 한 실시예에서, AIT는, 메모리 액세스 동작을 분산시켜 PCM FM(530) 상의 마모를 감소시키도록 구현된 마모 균등화 알고리즘의 일부로서 업데이트된다.
PCM FM(530)로부터 요청된 데이터를 수신하면, PCM FM 제어기(521)는 그 요청된 데이터를 MSC 제어기(512)에게 반환하고, MSC 제어기(512)는 그 데이터를 MSC 근방 메모리(518)에 저장하고 또한 그 데이터를 요청 프로세서 코어(501), 또는 I/O 장치(도 5a에는 미도시)에 전송한다. 이 데이터에 대한 후속 요청은, 이 데이터가 어떤 다른 PCM FM 데이터에 의해 대체될 때까지는 근방 메모리(518)로부터 직접 서비스될 수 있다.
한 실시예에서, 메모리 기입 동작도 역시 먼저 MSC 제어기(512)로 가고, MSC 제어기(512)는 그것을 FM 캐쉬(518)로서 역할하는 MSC 근방 메모리 내에 기입한다. 이 실시예에서, 기입 동작이 수신될 때 데이터는 PCM FM(530)으로 바로 전송되지 않을 수도 있다. 예를 들어, 데이터는, 데이터가 저장되는 FM 캐쉬(518)로서 역할하는 MSC 근방 메모리 내의 위치가 상이한 시스템 메모리 어드레스에 대한 데이터를 저장하기 위해 재사용되어야 될 때에만 PCM FM(530)에 전송될 수 있다. 이러한 상황이 발생하면, MSC 제어기(512)는, 데이터가 현재 PCM FM(530)에 있지 않고 그에 따라 FM 캐쉬(518)로서 역할하는 근방 메모리로부터 데이터를 회수하여 PCM FM 제어기(521)에 전송할 것이라고 통보한다. PCM 제어기(521)는 시스템 메모리 어드레스를 위해 PDA를 참조한 다음 그 데이터를 PCM FM(530)에 기입한다.
(2) 근방 메모리 바이패스 모드 (Near Memory Bypass Mode): 이 모드에서 모든 판독 및 기입은 FM 캐쉬(518)로서 역할하는 NM을 바이패스하고 PCM 원격 메모리(530)로 바로 간다. 이러한 모드는, 예를 들어, 애플리케이션이 캐쉬 친화적이 아니고 데이터가 캐쉬 라인의 입도에서 영구적으로 남도록 요구할 때 이용될 수 있다. 한 실시예에서, 프로세서 캐쉬(503)와 FM 캐쉬(518)로서 역할하는 NM에 의해 수행되는 캐슁은 서로 독립적으로 동작한다. 결과적으로, 프로세서 캐쉬(503)에 캐슁되지 않은(그리고, 일부 경우에는, 프로세서 캐쉬(503)에 캐슁되는 것이 허용되지 않을 수 있는) 데이터는 FM 캐쉬(518)로서 역할하는 NM에 캐슁될 수 있고 그 반대로 마찬가지이다. 따라서, 프로세서 캐쉬(503) 내에 "캐슁불가"로서 지정될 수 있는 소정의 데이터는 FM 캐쉬(518)로서 역할하는 NM 내에 캐슁될 수 있다.
(3) 근방 메모리 판독- 캐쉬 기입 바이패스 모드 (Near Memory Read-Cache Write Bypass Mode): 이것은 상기 모드의 변형으로서 PCM(519)으로부터의 영구 데이터의 판독 캐슁이 허용된다(즉, 영구 데이터는 판독-전용 동작에 대해 MSC(510)에 캐슁된다). 이 모드는 대부분의 영구 데이터가 "판독-전용"이고 애플리케이션 사용법이 캐쉬-친화적일 때 유용하다.
(4) 근방 메모리 판독- 캐쉬 라이트- 쓰루 모드 (Near Memory Read-Cache Write-Through Mode): 이것은 이전 모드의 변형으로서, 판독 캐슁 외에, 기입-적중(write-hit)도 역시 캐슁된다. MSC 근방 메모리(518)로의 모든 기입은 PCM 원격 메모리(530)로의 기입을 야기한다. 따라서, 캐쉬의 라이트-쓰루 성질로 인해, 캐쉬-라인 지속성이 여전히 보장된다.
(5) 근방 메모리 직접 액세스 모드: 이 모드에서, 근방 메모리의 전부 또는 일부는 소프트웨어에게 직접 보여질 수 있고 시스템 메모리 어드레스 공간의 일부를 형성한다. 이러한 메모리는 완전히 소프트웨어 제어하에 있을 수 있다. PCM 메모리(519)로부터 근방 메모리의 이 영역으로의 임의의 데이터 이동은 명시적인 소프트웨어 사본들을 요구한다. 이러한 방식은, 소프트웨어에 대해 불균일한 메모리 어드레스(NUMA; non-uniform memory address) 메모리 영역을 생성하여, 이 곳에서는 PCM 원격 메모리(530)에 비해 근방 메모리(518)로부터 훨씬 더 높은 성능을 얻게 된다. 이러한 사용법은, 소정의 고성능 컴퓨팅(HPC) 및 소정의 데이터 구조에 대한 매우 빠른 액세스를 요구하는 그래픽 애플리케이션에 채용될 수 있다. 이 근방 메모리 직접 액세스 모드는 근방 메모리에서의 소정의 캐쉬 라인들의 "핀닝"과 동등하다. 이러한 핀닝은, 더 큰 멀티웨이 집합-연관 캐쉬(multiway, set-associative cache)에서 효과적으로 이루어질 수 있다.
아래의 표 1은 전술된 동작 모드들 각각을 요약하고 있다.
Figure pat00001
상기 동작 모드들을 구현하는데 이용되는 프로세서와 칩셋 컴포넌트들은 다음과 같은 것들을 포함한다:
(1) 2층 메모리(2LM) 계층구조의 근방 메모리를 관리하는 메모리측-캐쉬 제어기(512).
(2) 전술된 동작 모드들 각각에 대한 시스템 어드레스 범위를 결정하는 메모리측-캐쉬(510) 내의 한 세트의 범위 레지스터(545)(도 5b 참조).
(3) PCM 메모리 서브시스템(519)으로부터 MSC 제어기(515)로의 기입 완료를 통보하는(acknowledge) 메커니즘.
(4) 근방 메모리(518) 내의 라인들을 무효화하는 메커니즘.
(5) 근방 메모리 어드레스 공간의 명시된 영역들에서 더티 라인들을 PCM으로 퇴거시키고 무효화하는 플러쉬 엔진.
한 실시예에서, 사용법 모드들 각각에 대한 메모리 범위들은 시스템 어드레스 공간에서 연속적이다. 그러나, 복수의 해체된 영역들이 동일한 모드를 이용할 수도 있다. 한 실시예에서, MSC RR(545) 세트 내의 각 모드 범위 레지스터는 다음과 같은 정보를 제공한다:
(1) 동작 모드(예를 들어, 라이트-백, 근방 메모리 바이패스 모드 등);
(2) 시스템 어드레스 공간 내의 범위 베이스(예를 들어, 2MB 입도 이상에서); 및
(3) 영역의 크기를 식별하는 범위 마스크 필드.
한 실시예에서, 지원되는 모드수는 구현-특유이지만, 각 동작 모드에 대해 단 하나의 연속된 시스템 어드레스 범위가 이용가능하다고 가정된다. 근방 메모리 직접 액세스 범위 레지스터가 명시되면, 이것이 근방 메모리 어드레스 공간의 하부에서 시작하는 연속 영역으로 맵핑될 것이라고 가정된다. 이러한 연속 영역은 근방 메모리의 크기보다 작아야 한다. 추가적으로, 캐슁 모드들 중 임의의 것이 이용된다면, 직접 액세스 영역 크기는, 요구되는 성능에 대한 적절한 캐쉬 크기를 허용하기 위해 근방 메모리 크기보다 작아야 한다. 다양한 모드들에 대한 근방 메모리의 이러한 할당은 사용자에 의해 구성가능할 수 있다.
요약하면, 본 발명의 한 실시예는 다음과 같은 동작 세트에 따라 구현된다:
(1) 임의의 판독 또는 기입 액세스가 메모리측-캐쉬 제어기(512)에 도달하면, 이 제어기는 현재의 동작 모드를 결정하기 위해 범위 레지스터(545)(도 5b)를 검사한다.
(2) 임의의 판독 캐쉬/기입 바이패스 액세스의 경우, MSC 제어기(512)는 검사하여 어드레스가 현재 캐슁되어 있는지를 알아 낸다. 캐슁되어 있다면, 제어기는 기입 완료를 소스에 다시 전송하기 전에 그 라인을 무효화해야 한다.
(3) 임의의 기입 바이패스 직접 PCM 동작의 경우, MSC 제어기(512)는 기입이 전역적 가시 버퍼에 인도되도록 보장하기 위해 PCM 제어기(521)로부터 되돌아오는 완료를 기다린다.
(4) 근방 메모리 내의 직접 액세스 모드 공간으로의 임의의 판독 또는 기입은 근방 메모리의 적절한 영역으로 향해진다. 어떠한 트랜잭션도 PCM 메모리에 전송되지 않는다.
(5) 임의의 기존 영역을 증가 또는 감소시키거나 새로운 영역을 추가하는 범위 레지스터 구성에서의 임의의 변경은 PCM으로의 적절한 캐슁된 영역들의 플러쉬를 요구할 것이다. 예를 들어, 소프트웨어가 라이트-백 캐쉬 영역을 감소시킴으로써 직접 액세스 모드 영역의 크기를 증가시키기를 원한다면, 소프트웨어는 먼저 근방 메모리 영역의 적절한 부분을 퇴거 및 무효화한 다음 근방 메모리 직접 액세스 모드 범위 레지스터를 변경함으로써 그렇게 할 수 있다. 그러면, MSC 제어기(510)는 미래의 캐슁이 더 작은 근방 메모리 액세스 공간에 대해 이루어진다는 것을 알 것이다.
시스템 물리적 어드레스(SPA) 공간이 복수의 MSC들 사이에 분배되는 본 발명의 한 특정한 실시예가 도 6a에 예시되어 있다. 예시된 실시예에서, MSC 캐쉬(654) 및 제어기(656)는 SPA 영역(667a)과 연관되고; MSC 캐쉬(655) 및 제어기(657)는 SPA 영역(667b)과 연관되고; MSC 캐쉬(661) 및 제어기(663)는 SPA 영역(667c)과 연관되고; MSC 캐쉬(660) 및 제어기(662)는 SPA 영역(667d)과 연관된다. 2개의 CPU(670 및 671)가 예시되어 있고, 각각은 4개의 코어들(650 및 651)과 홈 에이전트(652 및 653)를 각각 가진다. 2개의 CPU(670 및 671)는 각각 원격 메모리 인터페이스(659 및 665)를 통해 공통의 원격 메모리 제어기(666)에 결합된다.
따라서, 도 6a에서, 전체의 SPA 메모리 공간은 영역들로 세분되고, 각 영역은 특정한 MSC 및 제어기와 연관된다. 이 실시예에서, 주어진 MSC는 불연속 SPA 공간 할당을 가질 수 있지만 어떠한 2개의 MSC도 중복되는 SPA 공간을 갖지 않을 것이다. 게다가, MSC들은 비-중복 SPA 공간과 연관되고 어떠한 MSC간 일관성 기술도 요구되지 않는다.
전술된 근방 메모리 모드들 중 임의의 것이 도 6a에 도시된 아키텍쳐에 채용될 수 있다. 예를 들어, 각 MSC 제어기(656-657, 662-663)는, 라이트-백 캐슁 모드, 근방 메모리 바이패스 모드, 근방 메모리 판독-캐쉬 기입 바이패스 모드, 근방 메모리 판독-캐쉬 라이트-쓰루 모드, 또는 근방 메모리 직접 액세스 모드에서 동작하도록 구성될 수 있다. 앞서 논의된 바와 같이, 각 MSC(610)에 대해 범위 레지스터(RR)(655) 내에서 특정한 모드가 명시된다.
한 실시예에서, 상이한 MSC들은 상이한 동작 모드들을 동시에 구현할 수 있다. 예를 들어, MSC 제어기(656)의 범위 레지스터들은, 근방 메모리 직접 액세스 모드를 명시할 수 있고, MSC 제어기(657)의 범위 레지스터는, 라이트-백 캐쉬 모드를 명시할 수 있으며, MSC 제어기(662)의 범위 레지스터는 판독 캐쉬/기입 바이패스 모드를 명시할 수 있고, MSC 제어기(663)는 판독 캐쉬/라이트 쓰루 모드를 명시할 수 있다. 또한, 일부 실시예에서, 개개의 MSC는 상이한 동작 모드들을 동시에 구현할 수 있다. 예를 들어, MSC 제어기(656)는, 소정의 시스템 어드레스 범위에 대해 근방 메모리 직접 액세스 모드를 구현하고, 다른 시스템 어드레스 범위에 대해서는 근방 메모리 바이패스 모드를 구현하도록 구성될 수 있다.
상기 조합들은, 물론, MSC 제어기들이 독립적으로 프로그램될 수 있는 방식을 예시하기 위한 것일 뿐이다. 본 발명의 기저 원리는 이들 또는 기타 임의의 조합으로 제한되지 않는다.
(예를 들어, 도 4g에 관하여 설명된 것 등의) 전술된 실시예들 중 일부에 관하여 설명된 바와 같이, MSC 및 그 MSC 제어기는 특정한 SPA 범위에 대해 책임지는 PCM DIMM과 동일한 메모리 채널(예를 들어, 동일한 물리적 DDR 버스) 상에서 동작하도록 구성된다. 결과적으로, 이 실시예에서, 지정된 SPA 범위 내에서 발생하는 메모리 트랜잭션은 동일한 메모리 채널 내로 국지화됨으로써, CPU 메쉬 인터커넥트를 통한 데이터 트래픽을 감소시킨다.
도 6b는, 시스템 메모리 어드레스 맵(620), 근방 메모리 어드레스 맵(621), 및 PCM 어드레스 맵(622)이 본 발명의 실시예에 따라 어떻게 구성될 수 있는지의 그래픽 표현을 제공한다. 앞서 논의된 바와 같이, MSC 제어기(606)는 범위 레지스터(RR)(605)에 의해 식별된 모드에서 동작한다. 시스템 메모리 맵(620)은, 근방 메모리 직접 액세스 모드에 할당된 제1 영역(602), 근방 메모리 바이패스 모드에 할당된 제2 영역(603), 및 라이트-백 캐쉬 모드에 할당된 제3 영역(605)을 가진다. MSC 제어기(606)는, 라이트 백 캐쉬 모드에 할당된 제1 영역(608), 및 근방 메모리 직접 액세스 모드에 할당된 제2 영역(609)을 포함하는, 근방 메모리 어드레스 맵(621)에 의해 표시된 근방 메모리에 대한 액세스를 제공한다. 예시된 바와 같이, 근방 메모리 캐쉬 바이패스 동작이, (근방 메모리 바이패스 모드를 위한) 근방 메모리 바이패스 영역(611) 및 (라이트-백 캐쉬 모드를 위한) 라이트-백 캐쉬 영역(612)을 포함하는, PCM 어드레스 맵(622)에 따라 동작하는 PCM 제어기(610)에 직접 제공된다. 결과적으로, 시스템 메모리 맵(620), 근방 메모리 어드레스 맵(621), 및 PCM 어드레스 맵(622)은, MSC 제어기에 의해 구현된 특정 모드에 기초하여 세분될 수 있다.
도 6c 및 도 6d는, 본 발명의 한 실시예에서 채용되는 어드레싱 기술을 나타낸다(이들 중 일부는 이미 전반적으로 설명되었다). 특히, 도 6c는, 시스템 물리적 어드레스(SPA)(675)가 근방 메모리 어드레스(NMA) 또는 PCM 장치 어드레스(PDA)로 어떻게 맵핑되는지를 도시한다. 특히, SPA는 먼저 프로세서 내의 디코드 로직(676)에 의해 디코딩되어 홈 에이전트(605)(예를 들어, 디코딩된 어드레스 공간을 책임지는 홈 에이전트)를 식별한다. 선택된 홈 에이전트(605)와 연관된 디코드 로직(677)은 SPA(675)(또는 그 일부)를 더 디코딩하여 그 특정 SPA 공간에 할당된 적절한 MSC 캐쉬 제어기(612)를 식별하는 메모리 채널 어드레스(MCA)를 생성한다. 그러면, 선택된 캐쉬 제어기(612)는, 678에서, 메모리 액세스 요청을 근방 메모리 어드레스로 맵핑하고, 후속해서, 선택사항으로서, (이하에서 기술되는) 680에서의 인터리빙 동작이 이어지거나, 또는 대안으로서, 679에서 선택사항적인 인터리빙 동작을 수행하고, 후속해서, (예를 들어, 전술된 어드레스 우회 및 마모 관리를 이용하여) PCM 원격 메모리 제어기에 의한 PCM 장치 어드레스 PDA로의 맵핑(681)이 이어진다.
선택사항적인 인터리빙 프로세스의 한 실시예가, 인터리빙을 이용하여 소프트웨어 페이지들이 복수의 MSC들과 PCM 어드레스 공간들 사이에서 어떻게 분할될 수 있는지를 도시하는 도 6d에 예시되어 있다. 도 6d에 도시된 예에서, SPA 공간 내의 2개의 페이지(682-683)는 캐쉬-라인 인터리브 로직(685)에 의해 인터리빙되어 MCA 공간 내의 2개 세트의 인터리빙된 라인들(685-686)을 생성한다. 예를 들어, 메모리 페이지들(682-683)로부터의 홀수 라인들 모두(예를 들어, 라인 1, 3, 5 등)는 제1 MCA 공간(685)에 전송될 수 있고, 메모리 페이지들(682-683)로부터의 짝수 라인들 모두(예를 들어, 라인 2, 4, 6 등)는 제2 MCA 공간(686)에 전송될 수 있다. 한 실시예에서, 페이지들은 5 KByte 페이지들이지만, 본 발명의 기저 원리는 임의의 페이지 크기로 제한되지 않는다. 그러면, 어드레스 우회 테이블(AIT) 및 마모 관리 로직에 따라 동작하는 PCM 제어기(687-688)는 (전술된 바와 같은) PCM 장치 어드레스(PDA) 메모리 공간 내에서 캐쉬 라인들을 재정렬한다. 이러한 성질의 인터리빙은, (예를 들어, 불균일 메모리 어드레스(NUMA; non-uniform memory address)에 대한 대안으로서) MSC(610) 및/또는 PCM 장치(619)에 걸쳐 작업부하를 분산시키는데 이용될 수 있다.
멀티 레벨 메모리 계층구조에서의 MSC의 동적인 부분적 전원 차단을 위한 시스템 및 방법의 실시예
컴퓨터 시스템의 메모리 서브시스템은, 특히, 큰 메모리 용량을 갖는 서버에서, 전체 시스템 전력의 상당한 양을 소비한다. (여기서 기술된 MSC를 갖는 2-레벨 서브시스템 등의) 멀티 레벨 메모리 서브시스템에서, MSC는 서버 상에서 실행될 수 있는 모든 작업부하들의 최대량을 수용하도록 크기조정되기 때문에, 전력의 많은 부분이, PCM(또는 더 구체적으로는 PCMS) 등의 크고 빠른 NVM 스토리지 앞에 놓인 휘발성(예를 들어, DRAM-기반의) MSC에 집중된다. 실행되는 작업부하와 캐슁 요건은 하루에도 상당히 달라질 수 있으므로, 이러한 큰 캐쉬에 전원을 유지하는 것은 부하-라인에 상당한 충격을 줄 것이다.
후술되는 실시예들 중 일부는, (1) (본 발명의 기저 원리는 임의의 멀티 레벨 메모리 계층구조의 정황에서 이용될 수 있지만) 명시된 방식으로 더티 캐쉬 라인들을 퇴거시키고 무효화하며; (2) 캐쉬 사용을 동적으로 모니터링하고; (3) 소프트웨어가 전력 관리 정책을 명시하도록 허용하며; (4) 휘발성 메모리 기반의 MSC의 명시된 부분을 비활성화하는, 플러쉬 엔진을 포함하는 MSC를 갖는 2-레벨 메모리 계층구조를 가정한다.
멀티 레벨 메모리 계층구조에서의 MSC는 집합-연관, 라이트-백 캐쉬일 수도 있다. 이러한 캐쉬에서의 웨이수는 달라질 수 있지만, 2개의 특정적 실시예가 여기서 설명될 것이다:
(1) 8-16 범위의 웨이수를 갖는 멀티웨이 집합 연관 캐쉬; 및
(2) 직접-맵핑형 캐쉬라고도 하는, 1-웨이 집합 연관 캐쉬.
2. 플러쉬 엔진(701)
도 7a에 나타낸 바와 같이, 멀티 레벨 메모리 서브시스템에서의 플러쉬 엔진(701)의 한 실시예는 MSC 제어기(512)에 존재하고, 수 개의 상이한 용도를 가지며, 그 하나는, 여기서 설명되는 바와 같은, 동적 캐쉬 전력 관리이다. 이 실시예에서, 소프트웨어(750)는 플러쉬 엔진(701)을 활성화하여 특정한 전력 관리 정책을 시행할 수 있다. 이들 정책들은 다음과 같은 것들을 포함할 수 있다(그러나 이것으로 제한되지 않는다):
(1) 소프트웨어(750)는 비활성화되거나 재활성화될 캐쉬(740)의 특정 부분을 식별한다. 한 실시예에서, 그 부분은 특정한 웨이수로서 식별된다. 대안으로서, 또는 추가적으로, 이것은 캐쉬의 특정한 비율(예를 들어, 50%)로서 명시될 수 있다.
(2) 소프트웨어(750)는, 플러쉬 엔진(701)이 모니터링하고 비활성화하거나 재활성화할 캐쉬의 양을 동적으로 결정할 수 있는 평균 미스 레이트(average miss-rate) 또는 점유율(occupancy) 등의 사용 메트릭(usage metric)을 명시한다. 예를 들어, 특정한 영역에 대한 평균 미스 레이트가 명시된 임계치 위로 상승한다면, 이 영역은 비활성화될 수 있다.
이하의 논의는 캐쉬의 부분들의 비활성화에 중점을 두고 있지만, 당업자라면 동일한 기본 기술을 이용하여 동적 재활성화가 수행될 수도 있다는 것을 이해할 것이다.
한 실시예에서, 일단 소프트웨어(750)에 의해 플러쉬 엔진(701)에 관한 정책이 설정되고 나면, 플러쉬 엔진은 먼저 (예를 들어, 상기 언급된 미스 레이트를 이용하거나 소프트웨어에 의해 식별된 영역들을 플러쉬하여) 비활성화될 캐쉬의 특정 영역을 결정함으로써 그 정책을 구현한다. 그 다음, 플러쉬 엔진(701)은 이 영역(또는 영역들)을 순차적으로 판독하고, 각 캐쉬 라인을 스캐닝하며, 필요에 따라 더티 캐쉬 라인들을 PCM 메모리로 퇴거시키고, 일단 서비스되고 나면 각 캐쉬 라인을 무효화한다. 한 실시예에서, 플러쉬 엔진은, 현재 비활성화 중인 MSC의 영역의 "세트-어드레스(Set-Address)"를 유지하는 플러쉬 어드레스 카운터(702)를 유지한다. 이하에서 논의되는 바와 같이, 한 실시예에서, 세트 어드레스는, 메모리에 액세스하기 위해 소프트웨어에 의해 생성된 시스템 어드레스로부터 유도된다.
3. 캐쉬 사용 모니터링
한 실시예에서, MSC는 캐쉬의 사용을 동적으로 모니터링하는 카운터(730)를 가질 것이다. 예를 들어, 이러한 모니터링은, 일부 키 메트릭들의 이동 평균(running average)을 유지함으로써 이루어질 수 있고, 그 일부 예는 캐쉬 점유율 및 이동 평균 미스 레이트를 포함한다:
(1) 캐쉬 점유율 : 캐쉬는 다수의 영역들로 구분된다. 멀티웨이 연관 캐쉬에서, 예를 들어, 영역은 웨이로서 정의될 수 있다. 소정 영역에 새로운 라인이 할당될 때마다, 영역 점유율 카운터가 증가한다. 영역에서 라인이 대체되거나 무효화될 때, 영역 점유율 카운터가 감소한다.
(2) 이동 평균 미스 레이트: 명시된 시구간 동안, 영역의 평균 미스 레이트가 플러쉬 엔진(701)에 의해 계산된다. 이 실시예에서, 소프트웨어(750)는, 플러쉬 엔진(701)이 각각의 캐쉬 영역의 비활성화를 가능케하기 위해 이용하는 미스 레이트에 대한 임계치를 제공할 수 있다.
4. 캐쉬 비활성화 메커니즘
캐쉬 비활성화를 수행하기 위해 다양한 구현-특유의 방식들이 가능하다. 여기서 주요 사상은, 캐쉬의 명시된 영역을 가능한 최저 전력 상태로 두면서 여전히 합리적인 고속의 재활성화를 허용하는 것이다. 통상적으로, 이것은, 전력이 차단되지는 않지만, 한 실시예에서, 클록이 디스에이블되고(또는 쓰로틀 다운되고(throttled down)) 캐쉬 영역에 대한 자체-리프레쉬가 비활성될 수도 있다는 것을 암시한다. 이러한 경우에, 재활성화는 소정의 시간을 요구하고 캐쉬의 다른 부분들이 여전히 활성인 동안 백그라운드에서 이루어질 수도 있다는 점에 유의한다.
비활성화 영역의 입도는 특정한 구현에 의존하고, MSC에 대해 DRAM이 이용된다면, DRAM 아키텍쳐에 의존할 것이다. 당업자라면, 영역 입도를 독립된 "랭크들"로 제약하는 것을 포함한 수 개의 방식들이 가능하다는 것을 이해할 것이다. 메모리 모듈 상의 각각의 단일의 "랭크"는 다른 랭크들과 동일한 메모리 컴포넌트들의 배열을 형성한다. (본 발명의 기저 원리는 임의의 특정한 개수의 랭크로 제한되지 않지만) 흔히 사용되는 메모리 모듈들은 단일 랭크의 메모리, 2중 랭크의 메모리, 또는 4개 랭크의 메모리를 가진다.
본 발명의 한 특정한 실시예의 동작 세부사항이 이제 설명될 것이다. 그러나, 본 발명의 기저 원리는 이러한 특정한 세트의 동작 파라미터들로 제한되지 않는다는 점에 유의해야 한다. 예를 들어, 본 발명의 기저 원리는 임의의 특정 어드레스 또는 데이터 포멧으로 제한되지 않는다.
한 실시예에서, 캐쉬 비활성화를 위한 정책은 소프트웨어(750)에 의해 플러쉬 엔진(701)에게 명시된다. 더 복합한 경우에 해당하는 직접 맵핑형 캐쉬의 특정 경우가 여기서 설명된다. 당업자라면, 이 설명을 이용하여 멀티웨이 연관 캐쉬 구현을 위한 구성을 용이하게 유도할 수 있을 것이다.
(A) 첫 번째, 도 7a에 나타낸 바와 같이, (예를 들어, 소프트웨어(750)에 의해) 비활성화될 캐쉬 영역(740)이 식별된다. 캐쉬의 1/2이 명시된다면, 세트 어드레스가 1비트만큼 떨어질 것이다. 제한이 아닌 예로서, 1 TB 또는 40b의 시스템 어드레스 공간과, 64B의 라인 크기를 갖는 1 GB의 직접-맵핑형 캐쉬의 예에서, 세트-어드레스는 24b 폭이고 (64B 라인들에 대한) 태그는 10b 폭일 것이다. 캐쉬의 절반이 비활성화되고 512MB로 떨어지면, 세트 어드레스는 이제 23b일 것이고 태그 크기는 11b로 증가할 것이다.
(B) 두 번째, 부적중 임계치, 평균화 구간 및 비활성화에 대한 영역 입도가 명시된다. 제한이 아닌 예로서, 부적중 임계치는 평균 100ms 구간에서 0.01이고, 비활성화에 대한 영역 입도는 캐쉬의 1/4일 수 있다. 다시 한번, 영역 크기에 기초하여, 세트-어드레스와 태그가 적절하게 변경될 것이다. 일단 정책이 설정되고 플러쉬 엔진(701)이 인에이블되고 나면, 적절한 트리거가 그 작업을 개시하기를 기다린다.
도 7a는, 비활성화를 위해 캐쉬의 상위 1/2이 식별되는 특정한 구현을 나타낸다. 이 구현에 따르면, 플러쉬 엔진(701)은 다음과 같은 동작을 수행할 수 있다:
(1) 플러쉬할 직접-맵핑형 MSC(510)의 상반부(top-half; 740)를 선택.
(2) 플러쉬 어드레스 카운터(702)(세트 어드레스)를 캐쉬의 상부로 설정하고, 연속해서 각 라인의 퇴거와 무효화를 시작. 각 라인을 통해 진행함에 따라, 플러쉬 어드레스 카운터(702)는 감소할 것이다. 도 7a는, 플러쉬된 영역(710)으로서 식별된 영역에 관해 비활성화가 성공적으로 수행되었고 비활성화가 여전히 수행될 필요가 있는 (역시 MSC의 상반부(upper half) 내의) 플러쉬 보류 영역(711)이 도시되어 있는, 구체적인 예를 제공한다.
(3) 한 실시예에서, 플러쉬 어드레스 카운터 위의 임의의 캐쉬 영역(710)은 미사용으로 남는 것을 보장하기 위하여, 다음과 같은 규칙들을 따른다:
a. 플러쉬 어드레스 카운터(702) 위에 있는 임의의 CPU 판독 어드레스는, 감축된 세트 어드레스(우리의 예에서는, 이것은 23b 세트 어드레스일 것이다)를 이용하여 자동으로 캐쉬의 하반부(bottom half)만을 참조할 것이다. 이것이 도 7a에 적색 라인으로 예시되어 있다.
b. 태그 검사 유닛(550) 내에 저장된 태그는 최소 캐쉬를 수용하기 위해 가능한 가장 큰 것일 것이다. 도 7a에 도시된 특정 예에서, 판독 어드레스 동작은 정확한 매치를 보장하기 위해 11b 태그를 검사할 것이다.
c. 동작에 응답하여 캐쉬 부적중이 있다면, MSC(741)의 하반부에서만 할당이 발생할 것이다.
d. 판독 동작이 플러쉬 카운트 어드레스(702) 아래에 있지만 캐쉬의 하반부 위에 (즉, 플러쉬 보류 영역(711)에) 있다면, 한 실시예에서, 12b 세트 어드레스를 이용한 정상적(normal)의 참조와 10b 태그를 이용한 정상적 매치를 수행할 것이다.
e. 적중이 있다면, 단순히 그 데이터를 이용할 것이다. 부적중이 있다면, 2가지 선택이 있다 : (i) (도 7a의 #1 원으로 식별되는 원형 점선으로 표시된 바와 같이) 보통처럼 할당하지만 결국에는 플러쉬가 이 라인을 제거할 것으로 예상, 또는 (ii) 라인에 대해 캐쉬의 하반부를 검사하고 부적중이 있다면, (도 7a의 #2 원으로 식별되는 점선으로 표시된 바와 같이) 하반부에서만 할당.
f. 한 실시예에서, 캐쉬 라인 기입은 위의 (a)-(e)에서 설명된 것과 동일한 규칙을 따를 것이다.
(4) 일단 플러쉬 엔진(701)이 선택된 영역의 끝(이 경우에는 상반부(740)의 바닥)에 도달하면, 이 전체 영역이 이제 무효화되고 오프될 수 있다.
(5) 캐쉬 영역 비활성화 메커니즘은 MSC(510)의 이 부분(740)을 끊고 오프한다.
(6) 캐쉬 세트-어드레스는 이제 23b가 될 것이고, MSC(510)의 하반부(741)만을 가리킬 것이다.
상기 방식으로 명백한 바와 같이, MSC의 일부의 비활성화는 애플리케이션에게 투명하게 수행되고 캐쉬 사용에 어떠한 중요한 영향도 없다.
멀티 레벨 메모리 계층구조에서 MSC의 동적인 부분적 전원 차단을 위한 방법의 한 실시예가 도 7b에 예시되어 있다. 도 7b에 예시된 동작은, 전술된 소프트웨어(750), 플러쉬 엔진(701), 및 MSC 제어기(512)의 정황에서 구현될 수 있지만, 이 방법은 반드시 임의의 특정한 아키텍쳐로 제한되는 것은 아니다.
760에서, 캐쉬 사용 모니터링이 개시된다. 모니터링에 기초하여, 761에서 캐쉬의 일부가 비활성화를 위해 식별된다. 예를 들어, 앞서 논의된 바와 같이, 영역 점유율 카운터는, 영역에서 새로운 캐쉬 라인이 할당될 때마다 증가될 수 있고, 영역에서 캐쉬 라인이 대체되거나 무효화될 때 감소된다. 그러면, 점유율 카운터의 값은 영역을 비활성화할지를 결정하는데 이용될 수 있다(즉, 더 낮은 점유율 영역은 더 높은 점유율 영역 이전에 무효화된다). 대안으로서, 캐쉬 영역의 평균 미스 레이트는 명시된 시구간 동안 계산될 수 있다. 이 실시예에서, 각각의 캐쉬 영역의 비활성화를 가능케 하기 위해 임계치 미스 레이트가 제공될 수 있다.
762에서, 플러쉬 어드레스 카운터가 캐쉬의 식별된 부분으로 설정된다. 763에서, 각각의 캐쉬 라인이 퇴거되고 무효화되며 카운터는 각 무효화 이후에 감소된다. 764에서, 판독 또는 기입 동작이 개시되고, 765에서, 그 동작이 플러쉬된 영역(F)으로 향하는지, 플러쉬 보류 영역(FP)으로 향하는지, 또는 무효화되지 않는 캐쉬의 일부(NI)로 향하는지에 관해 결정이 이루어진다. 동작이 플러쉬된 영역으로 향한다면, 768에서, 그 동작은 비활성화되지 않는 캐쉬의 일부로 재방향지정된다. 구체적으로는, 한 실시예에서, 캐쉬 라인은 (예를 들어, 전술된 바와 같은) 감축된 세트 어드레스를 이용하여 할당된다.
동작이 플러쉬 보류 영역(FP)으로 향한다면, 캐쉬 라인은 정상적으로 할당될 수 있고, 그 라인은 결국 플러쉬될 것으로 예상된다. 대안으로서, 캐쉬 라인은 (예를 들어, 전술된 바와 같은) 감축된 세트 어드레스를 이용하여 할당될 수 있다.
동작이 무효화되지 않는 캐쉬의 부분으로 향한다면, 766에서, 판독/기입 동작이 감축된 세트 어드레스와 함께 평상시처럼 수행된다.
전술된 본 발명의 실시예는 서버와 기타 유형의 컴퓨터 시스템에서 이용되어 전력 소비를 상당히 감소시킬 수 있다. 전술된 바와 같이 직접 맵핑형 캐쉬를 취급하는 것 외에도, 본 발명의 실시예는 점유율과 미스 레이트 등의 사용 메트릭에 기초하여 캐쉬 크기를 동적으로 조정하는 방식을 가능케 한다.
멀티 레벨 메모리 계층구조를 이용한 전력 절감 메모리 시스템 및 방법
데이터 센터 서버들은 통상적으로 매우 값비싼 무정전 전원("UPS") 시스템을 이용하여 전원 고장으로 보호된다. 이러한 시스템은 통상적으로, 모든 메모리 내용과 기타의 휘발성 시스템 상태를 영구적 매체에 저장하기에 충분히 오랫동안 서버에게 전원을 공급하는데 이용된다. 영구적 매체는 통상적으로 네트워크 상에 존재할 수 있는 하드 디스크이므로, 메모리 덤프를 수행할 때 상당한 양의 시간과 전력이 소비된다.
후술되는 본 발명의 실시예에서, PCM 또는 기타의 비휘발성 메모리는 이들 문제를 해결함으로써 UPS 시스템에 대한 필요성을 완화시키는데 이용된다. 물론, 하이-엔드 데이터 센터들은 (메모리 상태 덤프를 보장하기 위한 것이 아니라) 가용성을 위해 UPS 시스템을 여전히 이용할 수 있다.
도 8a에 나타낸 바와 같이, 본 발명의 실시예는 원격 메모리로서의 PCM(530)(예를 들어, PCMS)와 휘발성 MSC 근방 메모리(510)(예를 들어, DRAM)를 이용하는 멀티 레벨 메모리 계층구조를 채용한다. 다른 컴포넌트들은 다음 중 하나 이상을 포함한다:
(1) 더티 라인들을 MSC로부터 PCM으로 라이트-백하는데 이용될 수 있는 플러쉬 엔진(701). 플러쉬 엔진(701)은 또한, CPU에 의한 후속 판독 및 기입 액세스에 이용되는 플러쉬 어드레스 카운터(702)를 유지한다.
(2) 플러쉬 엔진(701)이 동작하도록 트리거할 초기 전원 고장 검출 유닛(830).
(3) 플러쉬가 발생하는 동안 전력을 유지하기 위한 백업 전원 유닛(820). 플러쉬는 장시간을 요구하지 않기 때문에, 이 백업 전원 유닛(820)은 매우 비싼 UPS 시스템을 이용할 필요가 없다. 대신에, 일부 랙- 또는 서버-레벨 배터리 백업 모듈이면 충분하다.
(4) 캐쉬 라인들이 플러쉬된 후에 라이트-쓰루 동작 모드로 스위칭하는 (MSC 제어기(512)의 제어하의) MSC(510)의 능력.
(5) 소프트웨어(850)가 폐기될 MSC(510) 내의 페이지들을 (예를 들어, 후술되는 바와 같이 페이지들을 마킹함으로써) 식별하기 위한 메커니즘. 이러한 페이지들은 PCMS로 플러쉬될 필요가 없다. 이들 페이지들의 마킹은, H/W가 캐쉬를 플러싱할 때 이 정보에 액세스하게 되는 방식으로 이루어져야 한다.
(6) 소프트웨어가 폐기될 페이지들을 마킹할 수 있는(예를 들어, 제로로 마킹) PCMS 어드레스 우회 테이블(AIT)(563).
(7) 소프트웨어(850)에게 플러쉬가 완료되는 때를 통보하는 방법.
한 실시예에서, MSC(510)를 PCM(530)에 플러싱하는데 필요한 최대 시간은 PCM 서브시스템의 캐쉬 크기와 성능에 의존할 것이다. 한 실시예에서, 전원 고장 검출 시스템(830)은, MSC(510)에 누적될 더티 라인들의 평균 개수를 예측하는데 이용될 수 있는 실제 작업부하 사용량으로 조정된다. 대부분의 서버 작업부하의 경우, 이것은 판독/기입 비율을 추적할 것이고, 보통 MSC 크기의 약 1/3이 될 것이다.
또한, 소프트웨어(850)는 플러쉬 엔진(701)에게 MSC(510)으로부터 "제로" 또는 "폐기된" 페이지들을 무효화하도록 명령할 수 있다. 이들 페이지들이 나중에 PCM(530)으로부터 판독될 때, PCM 제어기(521)는 페이지들을 MSC(510)에 반환하기 전에 페이지들을 제로화할 것이다. 한 실시예에서, PCM 제어기(521)는 각 페이지의 상태를 나타내는 페이지-레벨 메타데이터를 유지하는 AIT(563)를 이용한다. 한 실시예에서, 이 정보는 매 판독 또는 기입 동작시에 액세스된다. 페이지(및 연관된 캐쉬 라인들)의 상태는 소프트웨어(850)에 의해 설정될 수 있다.
한 실시예에서, 전원고장 검출 유닛(830)이 전원 고장 상태를 검출하고 플러쉬 엔진(701)에게 경고를 발생하면, 다음과 같은 시퀀스가 발생한다:
(1) 플러쉬 엔진(701)이 트리거되어 더티 라인들을 찾기 위해 MSC(510)의 순차적 검토를 개시한다.
(2) 이들 더티 라인들은 PCM 제어기(521)에 의해 PCM(530)에 플러쉬되고, 각 플러쉬된 라인은 "클린" 상태로 설정된다. 플러쉬 어드레스 카운터(702)는 (예를 들어, 전술된 바와 같이) 각 라인이 처리됨에 따라 업데이트된다.
(3) 후속 판독들은 여전히 캐쉬의 플러쉬된 영역에서 적중하는 것이 허용된다.
(4) 그러나, 캐쉬의 플러쉬된 영역으로의 임의의 기입은 라이트-쓰루 또는 라이트-바이패스 동작을 야기할 것이다. 데이터가 현재 MSC(510) 내에 있지 않다면 라이트-바이패스가 발생할 것이다. 데이터가 MSC(510)에 있다면, 그 데이터는 업데이트된다.
(5) 전체의 MSC(510)가 플러쉬되면, 플러쉬 엔진(701)은 명시적인 플러쉬 명령을 PCM 제어기(521)에 전송할 것이다. PCM 제어기(521)는, 이 명령이 모든 이전의 기입을 PCM(530)에 성공적으로 푸시했을 때 이 명령을 접수확인할 것이다.
(6) 이 시점에서, 플러쉬 엔진(701)은 소프트웨어(850)에게 플러쉬 이벤트의 성공적 완료를 통보할 수 있다(예를 들어, "플러쉬 완료" 명령을 생성).
(7) 소프트웨어(850)는 이제 시스템의 질서정연한 셧다운을 시작하거나 전력이 종료되면 재시작할 장소로부터 체크포인트 상태를 설정할 수 있다.
(8) 전력의 복원시에, 소프트웨어(850)는 PCM 메모리(530) 내의 체크포인트 상태로부터 재개할 수 있다. 어떠한 시스템 리부트도 요구되지 않는다.
MSC 및 PCM 메모리를 갖는 멀티 레벨 메모리 시스템에서 전원 고장 이벤트에 응답하기 위한 전력 절감 방법의 한 실시예가 도 8b에 예시되어 있다. 도 8b에 예시된 동작은, 도 8a에 도시된 아키텍쳐의 정황에서 구현될 수 있지만, 이 방법은 반드시 임의의 특정한 아키텍쳐로 제한되는 것은 아니다.
801에서, 전원 고장 경고가 검출된다. 예를 들어, 전원 고장 검출 회로는 명시된 임계치 아래로 떨어지는 입력 전력의 전압을 검출할 수 있다. 802에서, 플러쉬 엔진이 트리거되고 (예를 들어, 전술된 바와 같이 플러쉬 어드레스 카운터(702)를 이용하여) 더티 라인들을 찾기 위해 MSC의 순차적 검토를 시작한다.
803에서, 임의의 판독 동작이 MSC의 플러쉬된 영역에 적중하는 것이 허용되고, 804에서, 플러쉬된 영역으로 향하는 임의의 기입은 (예를 들어, MSC를 바이패싱함으로써) 라이트-쓰루 또는 기입 바이패스 동작을 생성한다. 일단 전체 MSC가 플러쉬되고 나면, 이것은 805에서 결정되고, 명시적인 플러쉬 명령이 PCM 제어기에 전송된다. 이 단계에서, 통보 명령도 역시 시스템 소프트웨어에 전송될 수 있다(즉, 시스템에게 플러쉬된 상태를 통보한다).
전술된 기술들이 이용되어 값비싼 UPS 시스템이 더 이상 요구되지 않기 때문에 데이터 센터에서의 TCO를 상당히 감소시킬 수 있다.
멀티 레벨 메모리 계층구조를 갖는 고속 하이버네이션을 위한 시스템 및 방법
서버에서 하이버네이션에 진입하고 하이버네이션으로부터 복귀하는 속도는 메모리의 상태를 하드 드라이브 또는 SSD 등의 스토리지 장치에 저장하고 이로부터 회수하는 것에 의해 제한된다. 더 고속의 메모리-기반의 하이버네이션은 DRAM 메모리가 휘발성이고 하이버네이션 동안에 배터리에 의해 백업되어야 하고 자체-리프레쉬에 놓여야 하므로 동일한 전력 절감을 달성할 수 없다.
여기서 설명된 바와 같은 멀티 레벨 계층구조 메모리 서브시스템에 의해, PCM 메모리는 비휘발성이고 DRAM-기반의 캐쉬는 배터리 백업될 필요가 없으므로 매우 고속의 메모리 기반의 하이버네이션이 달성될 수 있다. 이 접근법에 의해, 서버는 훨씬 더 자주 하이버네이션에 진입할 수 있으므로, 데이터 센터에서 상당한 전력과 에너지 절감을 가능케 한다.
도 9a에 나타낸 바와 같이, 후술되는 본 발명의 실시예는, MSC(510)와 PCM(예를 들어, PCMS) 메인 메모리(530)를 포함하고 하드웨어 기반의 플러쉬 엔진(701)을 채용하는 멀티 레벨 메모리 계층구조를 활용한다. 앞서 논의된 바와 같이, 멀티 레벨 아키텍쳐에서, PCM-기반의 비휘발성 메모리는 소프트웨어가 볼 수 있는 메모리 어드레스 공간을 제공한다. 직접 소프트웨어 액세스로부터 PCM 성능 특징을 숨길 필요성으로 인해, (예를 들어, MSC 제어기(512)를 통해) 하드웨어 관리되고 소프트웨어에게 보여지지 않을 수 있는 큰 DRAM 기반의 라이트-백 MSC(510)가 채용된다. 정상 시스템 동작 동안에, 임의의 소프트웨어 메모리 액세스는 PCM으로부터의 데이터는 MSC 내에 회수되고, 여기서 데이터는 또 다른 액세스에 의해 퇴거되지 않는 한 유지된다. 한 실시예에서, MSC(510)는 라이트-백이므로, 시간 경과에 따라 다수의 캐쉬 위치들이 "더티", 즉, PCM(530)에 저장된 사본에 더 이상 반영되지 않는 수정된 상태가 될 것이다.
소프트웨어와 하드웨어 양쪽 모두에 의해 제어되는 다양한 정책에 기초하여, 시스템은 하이브네이션 상태에 진입하거나 하이버네이션 상태를 벗어날 수 있다. 시스템이 하이버네이션에 진입하도록 구성될 수 있는 특정한 방식은 당업자에 의해 충분히 이해될 것이므로 여기서는 상세히 설명되지 않을 것이다. 하이버네이션에 있을 때, 메모리 상태는 보존되어야 하지만, 대부분의 시스템은 전력을 절감하기 위해 전원차단될 것이다. 보통, 이 상태는 "유휴" 상태에서 보낸 시간에 기초하여 소프트웨어 제어하에 진입된다. 이 상태는 다양한 공지된 트리거 조건에 기초하여 하드웨어 제어하에 벗어난다.
한 실시예에서, 하이버네이션에 진입하는 정책은 하이버네이션 상태에 진입하고 벗어나는 속도에 의해 결정된다. 주요 비용은 메모리 상태 모두를 소정 비휘발성 스토리지 매체에 저장하거나 이로부터 회수하는 오버헤드이다. 스토리지 매체가 디스크이면, 메모리 상태는 직접 메모리 액세스(DMA)를 이용하여 저장되거나 회수되어야 한다.
여기서 설명된 멀티 레벨 메모리 아키텍쳐에서, 대부분의 메모리 상태는 비휘발성 PCM 메모리(530)에 이미 유지되어 있다. 하이브네이션에 진입할 때 PCM(530)에 전달될 필요가 있는 추가의 메모리 상태만이 MSC(510) 내의 "더티" 라인들이다. 이것은 플러쉬 엔진(701)이 "더티" 라인들을 찾기 위해 MSC 모두를 스캐닝하는데 이용할 때이다. 이들 라인들은 매우 신속하게 PCM에 "플러쉬"되어 원래의 위치들을 최신의 데이터로 업데이트한다. 캐쉬 내의 "클린" 라인들은 플러쉬될 필요가 없다(즉, 클린 사본들은 이미 PCM에 저장되어 있음). 한 실시예의 플러쉬 엔진(701)은 시스템에 대한 하이버네이션 정책을 실행하는 소프트웨어(910)(또는 펌웨어)에 의해 프로그램된다. 플러쉬 엔진(701)은 모든 더티 라인들을 취하여 이들을 PCM(530)에 전송하도록 명령될 필요만 있으므로 프로그래밍은 최소한이다. 더티 라인들의 위치의 어드레스는 다층 메모리 계층구조의 일부로서 이미 유지되고 소프트웨어(910)에 의해 명시적으로 지정될 필요는 없다.
한 실시예에서, 플러쉬가 완료되면, 플러쉬 엔진(701)은 소프트웨어(910)에게 어느 것이 셧다운 프로세스의 나머지 부분들을 종료할 수 있는지를 통보할 것이다. 하이버네이션으로부터 복귀할 때, 비휘발성 PCM으로부터의 메모리 상태의 어떠한 명시적 복사도 수행될 필요가 없다. PCM(530)으로부터 메모리 위치를 인출하고 인출된 캐쉬 라인들을 MSC(510)에 저장하기 위한 정규 멀티 레벨 메모리 기술들은 필요에 따라 자동으로 이것을 행할 것이다. 결과적으로, 여기서 설명된 멀티 레벨 메모리 아키텍쳐를 이용하여 하이버네이션으로부터 재개하는 것이 극히 빠르다.
하이버네이션으로부터의 재개시에 기능을 개시하기 위해 멀티 레벨 메모리 계층구조에 대해 소정의 기본적 초기화가 수행된다. 한 실시예에서, 이것은 (예를 들어, 도 2에 도시된) 시스템 BIOS(170)에 의해 관리된다. 한 실시예에서, 초기화는 고속 어드레스 변환을 가능케하기 위해 SRAM 또는 DRAM에 상주하는 테이블을 셋업하는 것을 포함한다. 이 프로세스도 역시 매우 고속이므로 재개 오버헤드에 최소한으로 기여한다.
여기서 설명된 하이버네이션 기술들의 혜택은 현재의 하이버네이션 기술들에 비해 방대한 개선을 제시한다. 예를 들어, 서버는 현재, 메모리에 전원투입을 유지하는 비용이 너무 높으므로 메모리-기반의 하이버네이션을 이용하지 않는다. 대신에, 하이버네이션은 메모리 상태를 HDD 또는 SSD 등의 스토리지 장치에 저장하거나 이로부터 회수할 것을 요구한다. 이것은 통상적으로 메모리와 스토리지 장치 사이에서 DMA 동작을 행하도록 어댑터를 프로그램하는 소프트웨어 드라이버를 포함할 것이다. 이러한 동작은 매우 높은 오버헤드를 갖고 전력을 절감하기 위한 하이버네이션을 이용하는 응용성을 제한한다. 소프트웨어는 또한 스토리지 장치에 대한 메모리 이미지의 생성에 크게 관련되어 있다.
대조적으로, 여기서 설명된 본 발명의 실시예들은 메모리-상주 하이버네이션을 행하기 위해 비휘발성 메모리(예를 들어, PCM)를 갖는 멀티 레벨 메모리 계층구조를 이용한다. 플러쉬 엔진(701)은 MSC로부터 PCMS로 더티 라인들의 축출을 가속하여 성능을 상당히 개선하는데 이용된다.
MSC 및 PCM 메모리를 갖는 멀티 레벨 메모리 시스템에서 전원 고장 이벤트에 응답하기 위한 전력 절감 방법의 한 실시예가 도 8b에 예시되어 있다. 도 8b에 예시된 동작은, 도 8a에 도시된 아키텍쳐의 정황에서 구현될 수 있지만, 이 방법은 반드시 임의의 특정한 아키텍쳐로 제한되는 것은 아니다.
801에서, 전원 고장 경고가 검출된다. 예를 들어, 전원 고장 검출 회로는 명시된 임계치 아래로 떨어지는 입력 전력의 전압을 검출할 수 있다. 802에서, 플러쉬 엔진이 트리거되고 (예를 들어, 전술된 바와 같이 플러쉬 어드레스 카운터(702)를 이용하여) 더티 라인들을 찾기 위해 MSC의 순차적 검토를 시작한다.
803에서, 임의의 판독 동작이 MSC의 플러쉬된 영역에 적중하는 것이 허용되고, 804에서, 플러쉬된 영역으로 향하는 임의의 기입은 (예를 들어, MSC를 바이패싱함으로써) 라이트-쓰루 또는 기입 바이패스 동작을 생성한다. 일단 전체 MSC가 플러쉬되고 나면, 805에서 결정되고, 명시적인 플러쉬 명령이 PCM 제어기에 전송된다. 이 단계에서, 통보 명령도 역시 시스템 소프트웨어에 전송될 수 있다(즉, 시스템에게 플러쉬된 상태를 통보한다).
본 발명의 실시예들은 전술된 다양한 단계들을 포함할 수도 있다. 이 단계들은 범용 컴퓨터 또는 특별 목적 프로세서가 단계들을 수행하게 하는데 이용될 수 있는 머신-실행가능한 명령어들로 구현될 수도 있다. 대안으로서, 이들 단계들은, 단계들을 수행하기 위한 하드와이어드 로직을 포함하는 특정의 하드웨어 컴포넌트들에 의해 수행되거나, 프로그램된 컴퓨터 컴포넌트 및 맞춤형 하드웨어 컴포넌트들의 임의 조합에 의해 수행될 수도 있다.
여기서 설명된 바와 같이, 명령어들은, 소정 동작들을 수행하도록 구성되거나 비일시적 컴퓨터 판독가능한 매체로 구현된 메모리에 저장된 소프트웨어 명령어 또는 미리결정된 기능을 갖는 주문형 집적 회로(ASIC)와 같은 하드웨어의 특정 구성을 나타낼 수 있다. 따라서, 도면에 도시된 기술들은, 하나 이상의 전자 장치들(예를 들어, 종단국, 네트워크 요소 등) 상에 저장되어 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 이와 같은 전자 장치들은, 비일시적 컴퓨터 머신-판독가능한 스토리지 매체(예를 들어, 자기 디스크; 광 디스크; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 장치; 상-변화 메모리)와 일시적 컴퓨터 머신-판독가능한 통신 매체(예를 들어, 전기적, 광학적, 음향적 또는 반송파, 적외선 신호, 디지털 신호 등과 같은 기타의 전파되는 신호 형태 등)와 같은 컴퓨터 머신-판독가능한 매체를 이용하여 (내부적으로 및/또는 네트워크를 통해 다른 전자 장치들과) 코드 및 데이터를 저장 및 통신할 수 있다. 또한, 이와 같은 전자 장치들은 전형적으로, 하나 이상의 스토리지 장치(비일시적 컴퓨터-판독가능한 스토리지 매체), 사용자 입력/출력 장치(예를 들어, 키보드, 터치스크린, 및/또는 디스플레이), 및 네트워크 접속과 같은 하나 이상의 다른 컴포넌트들에 결합된 하나 이상의 프로세서 세트를 포함한다. 프로세서 세트와 기타 컴포넌트들의 결합은 전형적으로 하나 이상의 버스 및 브릿지(버스 제어기라고도 칭함)를 통해 이루어진다. 스토리지 장치 및 네트워크 트래픽을 운송하는 신호는 각각 하나 이상의 머신-판독가능한 스토리지 매체와 머신-판독가능한 통신 매체를 나타낸다. 따라서, 주어진 전자 장치의 스토리지 장치는 전형적으로 그 전자 장치의 하나 이상의 프로세서 세트 상에서의 실행을 위한 코드 및/또는 데이터를 저장한다. 물론, 본 발명의 실시예의 하나 이상의 부분은 소프트웨어, 펌웨어, 및/또는 하드웨어의 상이한 조합들을 이용하여 구현될 수 있다. 이 상세한 설명 전체를 통틀어, 설명의 목적을 위해, 많은 구체적인 세부사항이 본 발명의 철저한 이해를 제공하기 위하여 개시되었다. 그러나, 본 발명은 이와 같은 구체적인 세부사항들 중 일부가 없이도 실시될 수 있다는 것은 당업자에게 명백할 것이다. 소정 예들에서, 공지된 구조와 기능은 본 발명의 주제를 흐리지 않도록 공을 들여 상세히 설명되지는 않았다. 따라서, 본 발명의 범위와 사상은 이하의 청구항들에 관하여 판단되어야 한다.

Claims (1)

  1. 장치.
KR1020157032928A 2011-12-20 2011-12-20 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 KR101915073B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066302 WO2013095404A1 (en) 2011-12-20 2011-12-20 Dynamic partial power down of memory-side cache in a 2-level memory hierarchy

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147017055A Division KR101571991B1 (ko) 2011-12-20 2011-12-20 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단

Publications (2)

Publication Number Publication Date
KR20150138399A true KR20150138399A (ko) 2015-12-09
KR101915073B1 KR101915073B1 (ko) 2018-11-06

Family

ID=48669062

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157032928A KR101915073B1 (ko) 2011-12-20 2011-12-20 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단
KR1020147017055A KR101571991B1 (ko) 2011-12-20 2011-12-20 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147017055A KR101571991B1 (ko) 2011-12-20 2011-12-20 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단

Country Status (8)

Country Link
US (2) US10795823B2 (ko)
KR (2) KR101915073B1 (ko)
CN (2) CN103988183B (ko)
BR (1) BR112014013390A2 (ko)
DE (1) DE112011105984B4 (ko)
GB (1) GB2510760B (ko)
TW (1) TWI489276B (ko)
WO (1) WO2013095404A1 (ko)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
WO2013101201A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Home agent multi-level nvm memory architecture
WO2013101209A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Thin translation for system access of non volatile semicondcutor storage as random access memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9003218B2 (en) * 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
EP2915045B1 (en) * 2012-11-02 2019-01-02 Hewlett-Packard Enterprise Development LP Selective error correcting code and memory access granularity switching
US9098402B2 (en) 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9239610B2 (en) * 2013-02-28 2016-01-19 Sandisk Technologies Inc. Systems and methods for managing data in a system for hibernation states
WO2015047348A1 (en) 2013-09-27 2015-04-02 Intel Corporation Cache operations for memory management
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
US9542336B2 (en) * 2013-12-18 2017-01-10 Intel Corporation Isochronous agent data pinning in a multi-level memory system
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US9558120B2 (en) 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory
WO2015147868A1 (en) * 2014-03-28 2015-10-01 Empire Technology Development Llc Magnetoresistive random-access memory cache write management
US9779025B2 (en) * 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US9536590B1 (en) * 2014-09-03 2017-01-03 Marvell International Ltd. System and method of memory electrical repair
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
WO2016099567A1 (en) * 2014-12-19 2016-06-23 Hewlett Packard Enterprise Development Lp Flushing data content in response to a power loss event to a processor
US9430396B2 (en) 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
WO2016122549A1 (en) * 2015-01-29 2016-08-04 Hewlett Packard Enterprise Development Lp Read only bufferpool
US9690716B2 (en) * 2015-02-13 2017-06-27 Intel Corporation High performance persistent memory for region-centric consistent and atomic updates
US10013360B2 (en) 2015-03-04 2018-07-03 Cavium, Inc. Managing reuse information with multiple translation stages
US9720773B2 (en) 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US20160259732A1 (en) * 2015-03-04 2016-09-08 Cavium, Inc. Managing reuse information for memory pages
CN105988735B (zh) * 2015-03-06 2019-03-19 华为技术有限公司 数据写入控制装置及方法
US9866647B2 (en) * 2015-03-26 2018-01-09 Alcatel Lucent Hierarchical cost based caching for online media
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US9792190B2 (en) * 2015-06-26 2017-10-17 Intel Corporation High performance persistent memory
US10423330B2 (en) * 2015-07-29 2019-09-24 International Business Machines Corporation Data collection in a multi-threaded processor
US9959075B2 (en) 2015-08-05 2018-05-01 Qualcomm Incorporated System and method for flush power aware low power mode control in a portable computing device
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
CN106547480B (zh) * 2015-09-17 2019-04-12 慧荣科技股份有限公司 数据储存装置及其数据读取方法
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US10241918B2 (en) * 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US9824419B2 (en) * 2015-11-20 2017-11-21 International Business Machines Corporation Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other
US10152421B2 (en) 2015-11-23 2018-12-11 Intel Corporation Instruction and logic for cache control operations
CN106775436B (zh) * 2015-11-24 2019-10-25 群联电子股份有限公司 数据存取方法、存储器控制电路单元与存储器
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10073790B2 (en) 2015-12-03 2018-09-11 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
US9934154B2 (en) 2015-12-03 2018-04-03 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
US10515016B2 (en) * 2015-12-03 2019-12-24 Hitachi, Ltd. Method and apparatus for caching in software-defined storage systems
US20170177482A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US9928168B2 (en) * 2016-01-11 2018-03-27 Qualcomm Incorporated Non-volatile random access system memory with DRAM program caching
US9984009B2 (en) * 2016-01-28 2018-05-29 Silicon Laboratories Inc. Dynamic containerized system memory protection for low-energy MCUs
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US9798672B1 (en) * 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
US10282302B2 (en) 2016-06-30 2019-05-07 Hewlett Packard Enterprise Development Lp Programmable memory-side cache management for different applications
US10776216B2 (en) * 2016-08-18 2020-09-15 Red Hat, Inc. Tiered cloud storage for different availability and performance requirements
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US20180091150A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Fused voltage level shifting latch
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10489313B2 (en) 2016-10-31 2019-11-26 Alibaba Group Holding Limited Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture
US10956325B2 (en) * 2016-12-12 2021-03-23 Intel Corporation Instruction and logic for flushing memory ranges in a distributed shared memory system
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
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
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
US10318417B2 (en) * 2017-03-31 2019-06-11 Intel Corporation Persistent caching of memory-side cache content
US11175853B2 (en) 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
US11449431B2 (en) 2017-05-30 2022-09-20 Seagate Technology Llc Data storage device with rewritable in-place memory
US10591978B2 (en) 2017-05-30 2020-03-17 Microsoft Technology Licensing, Llc Cache memory with reduced power consumption mode
US10068663B1 (en) 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10090067B1 (en) 2017-05-30 2018-10-02 Seagate Technology Llc Data storage device with rewritable in-place memory
US10147501B1 (en) 2017-05-30 2018-12-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US11126550B1 (en) 2017-09-01 2021-09-21 Crossbar, Inc Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism
US10853299B2 (en) 2017-09-15 2020-12-01 Dell Products L.P. Hot-plugged PCIe device configuration system
US10437499B2 (en) * 2017-12-22 2019-10-08 Nanya Technology Corporation Hybrid memory system and method of operating the same
KR20190088790A (ko) 2018-01-19 2019-07-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN110297787B (zh) * 2018-03-22 2021-06-01 龙芯中科技术股份有限公司 I/o设备访问内存的方法、装置及设备
CN111971660A (zh) * 2018-06-05 2020-11-20 拉姆伯斯公司 高速缓存动态随机存取存储器
US11086526B2 (en) * 2018-06-07 2021-08-10 Micron Technology, Inc. Adaptive line width cache systems and methods
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration
US10937961B2 (en) * 2018-11-06 2021-03-02 International Business Machines Corporation Structure and method to form bi-layer composite phase-change-memory cell
KR20200114481A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10860491B2 (en) 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
JP6796681B2 (ja) * 2019-05-13 2020-12-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR102671743B1 (ko) * 2019-05-31 2024-06-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102671736B1 (ko) * 2019-05-31 2024-06-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102687354B1 (ko) 2019-08-01 2024-07-22 삼성전자주식회사 스토리지 장치
US11526448B2 (en) * 2019-09-27 2022-12-13 Intel Corporation Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US20200226066A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Apparatus and method for efficient management of multi-level memory
KR20220023598A (ko) 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
WO2022086559A1 (en) * 2020-10-23 2022-04-28 Hewlett-Packard Development Company, L.P. Access to volatile memories
KR20220066741A (ko) 2020-11-16 2022-05-24 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105141A (en) * 1998-06-04 2000-08-15 Apple Computer, Inc. Method and apparatus for power management of an external cache of a computer system
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
JP4034923B2 (ja) * 1999-05-07 2008-01-16 富士通株式会社 半導体記憶装置の動作制御方法および半導体記憶装置
EP1182559B1 (en) * 2000-08-21 2009-01-21 Texas Instruments Incorporated Improved microprocessor
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
JP4056768B2 (ja) 2002-03-04 2008-03-05 富士通株式会社 マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法
US7100013B1 (en) 2002-08-30 2006-08-29 Nvidia Corporation Method and apparatus for partial memory power shutoff
US8392655B2 (en) * 2003-09-30 2013-03-05 Lenovo (Singapore) Pte Ltd. Apparatus for reducing accesses to levels of a storage hierarchy in a computing system
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US20050268022A1 (en) 2004-05-26 2005-12-01 Pelley Perry H Cache line memory and method therefor
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
CN1787015A (zh) 2004-12-07 2006-06-14 曾蒙汉 交通事故记录装置
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US7620773B2 (en) * 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7752173B1 (en) 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7492656B2 (en) 2006-04-28 2009-02-17 Mosaid Technologies Incorporated Dynamic random access memory with fully independent partial array refresh function
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
US7774556B2 (en) * 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
US20080183968A1 (en) 2007-01-30 2008-07-31 Chi-Ting Huang Computer system having cache system directly connected to nonvolatile storage device and method thereof
US8427891B2 (en) 2007-04-17 2013-04-23 Rambus Inc. Hybrid volatile and non-volatile memory device with a shared interface circuit
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8156299B2 (en) * 2007-10-19 2012-04-10 Virident Systems Inc. Managing memory systems containing components with asymmetric characteristics
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8145932B2 (en) * 2008-06-30 2012-03-27 Dell Products L.P. Systems, methods and media for reducing power consumption in multiple controller information handling systems
US8250310B2 (en) * 2008-07-31 2012-08-21 International Business Machines Corporation Assigning data to NVRAM of shared access hybrid hard drives
CN101673188B (zh) * 2008-09-09 2011-06-01 上海华虹Nec电子有限公司 一种固态硬盘的数据存取方法
US9003118B2 (en) 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US8195887B2 (en) 2009-01-21 2012-06-05 Globalfoundries Inc. Processor power management and method
US9105323B2 (en) 2009-01-23 2015-08-11 Micron Technology, Inc. Memory device power managers and methods
US8195891B2 (en) 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8132045B2 (en) * 2009-06-16 2012-03-06 SanDisk Technologies, Inc. Program failure handling in nonvolatile memory
US8489814B2 (en) * 2009-06-23 2013-07-16 Mediatek, Inc. Cache controller, method for controlling the cache controller, and computing system comprising the same
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
KR20110048304A (ko) 2009-11-02 2011-05-11 삼성전자주식회사 솔더 리플로우에서 코드 데이터의 손실을 방지할 수 있는 방법과 그 장치들
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
KR20110103258A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 전력 소모 저감을 위한 하이브리드 메모리 장치 및 그 방법
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US20120297147A1 (en) 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
US20130036270A1 (en) * 2011-08-04 2013-02-07 The Regents Of The University Of Michigan Data processing apparatus and method for powering down a cache
EP2761469B1 (en) 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage

Also Published As

Publication number Publication date
KR101915073B1 (ko) 2018-11-06
KR101571991B1 (ko) 2015-11-25
CN103988183B (zh) 2017-06-13
US20140304475A1 (en) 2014-10-09
GB2510760A (en) 2014-08-13
DE112011105984B4 (de) 2024-10-17
DE112011105984T5 (de) 2014-09-18
CN107368433B (zh) 2021-06-22
US20210056035A1 (en) 2021-02-25
BR112014013390A2 (pt) 2017-06-13
CN103988183A (zh) 2014-08-13
GB2510760B (en) 2020-05-20
TWI489276B (zh) 2015-06-21
GB201408834D0 (en) 2014-07-02
WO2013095404A1 (en) 2013-06-27
TW201346554A (zh) 2013-11-16
CN107368433A (zh) 2017-11-21
US11200176B2 (en) 2021-12-14
KR20140098167A (ko) 2014-08-07
US10795823B2 (en) 2020-10-06

Similar Documents

Publication Publication Date Title
US11200176B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US10719443B2 (en) Apparatus and method for implementing a multi-level memory hierarchy
US11132298B2 (en) Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
GB2514023B (en) System and method for intelligently flushing data from a processor into a memory subsystem
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9286205B2 (en) Apparatus and method for phase change memory drift management

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
E801 Decision on dismissal of amendment
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant