KR101572403B1 - 메모리 채널 셧다운에 의한 전력 절약 - Google Patents

메모리 채널 셧다운에 의한 전력 절약 Download PDF

Info

Publication number
KR101572403B1
KR101572403B1 KR1020147017930A KR20147017930A KR101572403B1 KR 101572403 B1 KR101572403 B1 KR 101572403B1 KR 1020147017930 A KR1020147017930 A KR 1020147017930A KR 20147017930 A KR20147017930 A KR 20147017930A KR 101572403 B1 KR101572403 B1 KR 101572403B1
Authority
KR
South Korea
Prior art keywords
memory
cache lines
dram
channel
power
Prior art date
Application number
KR1020147017930A
Other languages
English (en)
Other versions
KR20140098221A (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 KR20140098221A publication Critical patent/KR20140098221A/ko
Application granted granted Critical
Publication of KR101572403B1 publication Critical patent/KR101572403B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile 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
    • 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)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

더 낮은 전력 상태로 진입할 것을 결정하는 단계 및 그에 응답하여 컴퓨터 시스템 내의 메모리 채널을 셧다운하고 그 후 상기 컴퓨터 시스템 내의 다른 메모리 채널들이 활성 상태로 유지되어 상기 메모리 채널이 셧다운되는 동안 컴퓨터가 동작가능하게 유지하는 단계를 포함하는 방법이 기재된다.

Description

메모리 채널 셧다운에 의한 전력 절약{POWER CONSERVATION BY WAY OF MEMORY CHANNEL SHUTDOWN}
본 발명은 일반적으로 컴퓨터 시스템 분야에 관한 것이다. 특히, 본 발명은 멀티레벨 메모리 계층을 구현하는 장치 및 방법에 관한 것이다.
A. 현재의 메모리 및 저장장치 구성
현재 컴퓨터 혁신을 위한 제한 인자 중의 하나는 메모리 및 저장장치 기술(memory and storage technology)이다. 종래의 컴퓨터 시스템에서는, 시스템 메모리(메인 메모리, 프라이머리 메모리, 실행가능 메모리로도 알려짐)는 일반적으로 다이나믹 랜덤 액세스 메모리(dynamic random access memory; DRAM)에 의해 구현된다. DRAM 기반 메모리는 항상 내부 커패시터를 재충전해야 하기 때문에 메모리 판독 또는 기록이 발생하지 않을 때에도 전력을 소비한다. DRAM 기반 메모리는 휘발성이며, 이는 전력이 제거되면 DRAM 메모리에 저장된 데이터가 분실된다는 것을 의미한다. 종래의 컴퓨터 시스템은 또한 성능을 개선하기 위해 다수 레벨의 캐싱(caching)에 의존한다. 캐시는 프로세서 및 시스템 메모리 사이에 배치되어 시스템 메모리로부터 서비스될 수 있는 것보다 더 빠른 메모리 액세스 요청을 서비스하는 고속 메모리이다. 이러한 캐시는 일반적으로 스태틱 랜덤 액세스 메모리(static random access memory; SRAM)로 구현된다. 캐시 관리 프로토콜은, 가장 빈번히 액세스되는 데이터 및 명령이 캐시의 레벨 중의 하나 내에 저장되도록 보장하는 데 사용될 수 있어, 메모리 액세스 트랜잭션의 수를 감소시키고 성능을 개선한다.
대용량 저장장치(세컨더리 저장장치 또는 디스크 저장장치로도 알려짐)에 대하여, 종래의 대용량 저장장치는 일반적으로 자기 매체(예를 들어, 하드 디스크 드라이브), 광 매체(예를 들어, 콤팩트 디스크(CD) 드라이브, DVD(digital versatile disc) 등), 홀로그램 매체(holographic media) 및/또는 대용량 저장 플래시 메모리(예를 들어, SSD(solid state drive), 제거가능 플래시 장치 등)를 포함한다. 일반적으로, 이러한 저장장치는 다양한 I/O 프로토콜을 구현하는 다양한 I/O 어댑터를 통해 프로세서에 의해 액세스되기 때문에 입출력(I/O) 장치로 간주된다. 이들 I/O 어댑터 및 I/O 프로토콜은 많은 양의 전력을 소비하고 플랫폼의 폼팩터(form factor) 및 다이 면적(die area)에 큰 영향을 줄 수 있다. 영구 전원에 접속되지 않을 때 제한된 배터리 수명을 갖는 휴대용 또는 모바일 장치(예를 들어, 랩탑, 넷북, 태블릿 컴퓨터, 개인 휴대 단말기(personal digital assistant; PDA), 휴대용 미디어 플레이어, 휴대용 게임 장치, 디지털 카메라, 모바일 폰, 스마트폰, 피쳐폰(feature phone), 등)는, 일반적으로 활성 및 유휴(idle) 전력 예산(budget)을 충족하기 위하여 저전력 인터커넥트(interconnect) 및 I/O 제어기를 통해 프로세서에 결합된 제거가능 대용량 저장 장치(예를 들어, eMMC(Embedded Multimedia Card), SD(Secure Digital) 카드)를 포함할 수 있다.
(부트 메모리(또한 BIOS 플래시로 알려짐) 등의) 펌웨어 메모리에 대하여, 종래의 컴퓨터 시스템은, 일반적으로 종종 판독되지만 거의(또는 절대로) 기입되지 않는 지속적인 시스템 정보를 저장하는데 플래시 메모리 장치를 이용한다. 예를 들어, 부트 프로세스(BIOS(basic input and output system) 이미지) 동안 중요한 시스템 컴포넌트를 초기화하기 위하여 프로세서에 의해 실행되는 초기 명령은 일반적으로 플래시 메모리 장치에 저장된다. 시장에서 현재 이용가능한 플래시 메모리 장치는 일반적으로 제한된 속도(예를 들어, 50 MHz)를 갖는다. 이 속도는 판독 프로토콜의 오버헤드(예를 들어, 2.5MHz)만큼 더 감소된다. BIOS 실행 속도를 증가시키기 위하여, 종래의 프로세서는 일반적으로 부트 프로세스의 PEI(Pre-Extensible Firmware Interface) 페이즈 동안 BIOS 코드의 일부를 캐싱한다. 프로세서 캐시의 사이즈는 PEI 페이즈에서 사용되는 BIOS 코드(또한 "PEI BIOS 코드"로 알려짐)의 사이즈에 대한 제한을 가한다.
B. PCM(phase-change memory) 및 관련 기술
때때로 위상 변화 랜덤 액세스 메모리(PRAM 또는 PCRAM), PCME, 오보닉 유니파이드 메모리(Ovonic Unified Memory) 또는 칼코겐 RAM(C-RAM; Chalcogenide RAM)이라 불리우는 PCM(phase-change memory)은 칼코겐 글래스(chalcogenide glass)의 고유 거동(unique behavior)을 활용한 비휘발성 컴퓨터 메모리의 한 종류이다. 전류의 통과에 의해 생성된 열의 결과로서, 칼코겐 글래스는 2개의 상태, 즉, 결정 및 비결정 사이에서 스위칭할 수 있다. 최근 버전의 PCM은 2개의 추가의 별개의 상태를 달성할 수 있다.
PCM의 메모리 소자가 더 신속하게 스위칭될 수 있고, 기입(개별 비트를 1 또는 0으로 변경)이 셀의 전체 블록을 먼저 소거할 필요없이 수행될 수 있고, 기입으로부터의 저하가 더 느리기 때문에(PCM 장치는 대략 1억 기입 사이클을 생존할 수 있고, PCM 열화는 프로그래밍 동안의 열팽창, 금속(및 다른 물질) 이동 및 다른 메카니즘 때문이다), PCM은 플래시보다 더 높은 성능을 제공한다.
다음의 설명 및 첨부된 도면은 본 발명의 실시예를 설명하는데 사용된다.
도 1은 본 발명의 실시예에 따른 캐시 및 시스템 메모리 배치를 나타내는 도면.
도 2는 본 발명의 실시예에서 채용되는 메모리 및 저장장치 계층을 나타내는 도면.
도 3은 시스템 메모리의 DRAM 섹션 및 시스템 메모리의 PCMS 섹션을 갖는 메모리 컴퓨팅 시스템을 나타내는 도면.
도 4는 메모리 채널을 셧다운하는 방법론을 나타내는 도면.
도 5는 메모리 채널을 재활성화하는 방법론을 나타내는 도면.
도 6은 전력 관리 시스템에 의해 사용되는 메모리 전력 상태 표를 나타내는 도면.
도 7은 메모리 채널의 셧다운/재활성화를 구현하는 컴포넌트를 나타내는 도면.
다음의 설명에서, 본 발명의 더 완벽한 이해를 제공하기 위하여, 로직 구현, 오피코드(opcodes), 오퍼랜드를 특정하는 수단, 자원 분할/공유/복제 구현, 시스템 컴포넌트의 타입 및 상관성(interrelationship), 및 로직 분할/통합 선택 등의 수많은 특정 세부사항이 기재된다. 그러나, 당업자는 본 발명이 이러한 특정한 세부사항 없이 실행될 수 있음을 인식할 것이다. 다른 경우에, 제어 구조, 게이트 레벨 회로 및 전체 소프트웨어 명령 시퀀스는 본 발명을 모호하게 하지 않도록 상세히 도시하지 않는다. 당업자는 포함되는 설명으로 과도한 실험없이 적절한 기능을 구현할 수 있을 것이다.
명세서에서, "일 실시예", "실시예", "예시적인 실시예" 등의 언급은 기재된 실시예가 특정한 특징, 구조 또는 특성을 포함할 수 있지만 모든 실시예가 반드시 특정한 특징, 구조 또는 특성을 포함하는 것은 아니라는 것을 나타낸다. 또한, 이러한 구는 반드시 동일한 실시예를 지칭하는 것이 아니다. 또한, 특정 특징, 구조 또는 특성이 실시예와 결합하여 기재될 때, 명시적으로 기재되든 기재되지 않든, 당업자의 지식 내에서 다른 실시예와 결합하여 이러한 특징, 구조 또는 특성이 얻어질 수 있다.
다음의 설명 및 청구범위에서, "결합된" 및 "접속된"이라는 용어는 그 파생어와 함께 사용될 수 있다. 이들 용어는 서로에 대한 동의어로 의도되지 않음을 이해해야 한다. "결합된"은 서로 직접 물리적 또는 전기적으로 접촉하거나 접촉하지 않을 수 있는 2 이상의 소자가 서로 협력하거나 상호작용하는 것을 나타내는데 사용된다. "접속된"은 서로 결합된 2 이상의 소자 간의 통신의 확립을 나타내는데 사용된다.
대시 보더(dashed border)(예를 들어, 큰 대시, 작은 대시, 도트 대시, 도트)를 갖는 괄호로 묶인 텍스트 및 블록은 때때로 본 명세서에서 본 발명의 실시예에 부가적인 특징을 추가하는 선택적 동작/컴포넌트를 나타내는데 사용된다. 그러나, 이러한 표기는 단지 이들이 선택 또는 선택적 동작/컴포넌트이고 및/또는 실선 보더를 갖는 블록이 본 발명의 특정한 실시예에서 선택적이지 않은 것을 의미하는 것은 아니다.
도입
메모리 용량 및 성능 요구사항은 가상화(virtualization) 등의 새로운 사용 모델 및 프로세서 코어의 수의 증가와 함께 계속 증가하고 있다. 또한, 메모리 전력 및 비용은 각각 전자 시스템의 전체 전력 및 비용의 중요한 구성요소가 되어 왔다.
본 발명의 일부 실시예는 메모리 기술 간의 성능 요구사항 및 용량 요구사항을 지능적으로 세분함으로써 상기 문제를 해결한다. 이러한 접근법은 매우 저렴하고 더 밀집된 비휘발성 랜덤 액세스 메모리(NVRAM)를 이용하여 시스템 메모리의 벌크(bulk)를 구현하면서 DRAM 등의 비교적 적은 양의 비교적 고속의 메모리로 성능을 제공하는 것에 중점을 두고 있다. 이하에 기재된 본 발명의 실시예는 NVRAM의 사용을 위해 계층적 메모리 서브시스템의 조직을 가능하게 하는 플랫폼 구성을 정의한다. 메모리 계층에서의 NVRAM의 사용은 또한 이하에서 상세히 설명하는 바와 같이 확장된 부트 공간 및 대용량 저장 구현 등의 새로운 사용을 가능하게 한다.
도 1은 본 발명의 실시예에 따른 캐시 및 시스템 메모리 배치를 나타내는 도면이다. 특히, 도 1은 내부 프로세서 캐시(120)의 세트, 내부 캐시(들)(106)와 외부 캐시들(107 내지 109) 양자를 포함할 수 있는 "파 메모리 캐시(far memory cache)"로서 동작하는 "니어 메모리(near memory)"(121), 및 "파 메모리"(122)를 포함하는 메모리 계층을 나타낸다. 본 발명의 일부 실시예에서 "파 메모리"에 사용될 수 있는 하나의 특정한 타입의 메모리는 비휘발성 랜덤 액세스 메모리("NVRAM")이다. 이와 같이, NVRAM의 개요가 이하에서 제공되고, 그 후, 파 메모리 및 니어 메모리의 개요가 제공된다.
A. 비휘발성 랜덤 액세스 메모리("NVRAM")
PCM, PCMS(Phase change Memory and Switch)(후자는 전자의 더 구체적인 구현예이다), BPRAM(byte-addressable persistent memory), 유니버설 메모리, Ge2Sb2Te5, PMC(programmable metallization cell), RRAM(resistive memory), RESET(비결정) 셀, SET(결정) 셀, PCME, 오브신스키(Ovshinsky) 메모리, 강유전성 메모리(또한 폴리머 메모리 및 폴리(N-비닐카르바졸)로 알려짐), 강자성 메모리(또한 스핀트로닉스(Spintronics), SPRAM(spin-transfer torque RAM), STRAM(spin tunneling RAM), 자기저항 메모리, 자기 메모리, 자기 랜덤 액세스 메모리(MRAM) 및 SONOS(semiconductor-oxide-nitride-oxide-semiconductor)(또한 유전체 메모리로 알려짐)을 포함하는 NVRAM에 대한 많은 가능한 기술 선택이 존재한다.
본 출원에 기재된 메모리 계층에 사용하기 위하여, NVRAM은 다음의 특성을 갖는다.
(1) SSD(solid state disk)에서 사용되는 FLASH 메모리와 유사하고 휘발성인 SRAM 및 DRAM과 다르게, 전력이 제거된 후에도 그 콘텐츠를 유지한다;
(2) SRAM 및 DRAM 등의 휘발성 메모리보다 유휴인 경우 저전력 소비;
(3) (또한 랜덤하게 어드레스 가능한 것으로 알려진) SRAM 및 DRAM과 유사한 랜덤 액세스;
(4) (한번에 "블록" 단위로 단지 재기입 및 소거될 수 있는 - NOR FLASH에 대하여 최소 64Kbyte 크기 및 NAND FLASH에 대하여 16Kbyte) SSD에서 발견되는 FLASH보다 더 낮은 레벨의 그래뉼러리티(granularity)(예를 들어, 바이트 레벨)에서 재기입가능 및 소거가능;
(5) 시스템 메모리로서 이용가능하고 시스템 메모리 어드레스 공간의 전부 또는 일부가 할당됨;
(6) 트랜잭션 프로토콜(트랜잭션 식별자(ID)를 지원하여 상이한 트랜잭션을 구별함으로써 이들 트랜잭션을 비순차적으로(out-of-order) 완료할 수 있는 프로토콜)을 이용하여 버스를 통해 프로세서에 결합될 수 있고 시스템 메모리로서 NVRAM의 동작을 지원하기에 충분히 작은 그래뉼러리티의 레벨에서 액세스(예를 들어, 64 또는 128 바이트 등의 캐시 라인 사이즈)를 허용할 수 있다. 예를 들어, 버스는 정상적으로 사용되는 넌-트랜잭션 프로토콜(non-transactional protocol)과 반대로 트랜잭션 프로토콜을 실행하는 메모리 버스(예를 들어, DDR3, DDR4 등의 DDR 버스)일 수 있다. 다른 예로서, 버스는 PCIE(PCI express) 버스, DMI(desktop management interface) 버스, 또는 트랜잭션 프로토콜 및 충분히 작은 트랜잭션 페이로드 사이즈(예를 들어, 64 또는 128 바이트 등의 캐시 라인 사이즈)를 이용하는 임의의 다른 타입의 버스 등의 트랜잭션 프로토콜(네이티브 트랜잭션 프로토콜(native transactional protocol))을 정상적으로 실행하는 버스일 수 있다; 및
(7) 다음 중의 하나 이상:
a) FLASH 등의 비휘발성 메모리/저장장치 기술보다 더 빠른 기입 속도;
b) 매우 높은 판독 속도(FLASH보다 빠르고 DRAM 판독 속도와 유사(near) 또는 동등)
c) 직접 기입가능(SSD에서 사용되는 FLASH 메모리처럼 데이터를 기입하기 전에 소거(1로 겹쳐 쓰기)를 요구하는 대신); 및/또는
d) (SSD에서 사용되는 부트 ROM 및 FLASH보다) 실패 전에 더 높은 기입 내구성을 갖는 자릿수(예를 들어 2 또는 3).
상술한 바와 같이, 한번에 완전한 "블록" 단위로 재기입 및 소거되어야 하는 FLASH 메모리와 반대로, 임의의 주어진 구현예에서 NVRAM이 액세스되는 그래뉼러리티의 레벨은 NVRAM이 결합된 특정 메모리 제어기 및 특정 메모리 버스 또는 다른 타입의 버스에 의존할 수 있다. 예를 들어, NVRAM이 시스템 메모리로서 이용되는 일부 구현예에서, 바이트의 그래뉼러리티에서 액세스되는 고유 능력에도 불구하고, 캐시 라인은 메모리 서브시스템이 메모리를 액세스하는 레벨이기 때문에, NVRAM은 캐시 라인(예를 들어 64 바이트 또는 128 바이트 캐시 라인)의 그래뉼러리티에서 액세스될 수 있다. 따라서, NVRAM이 메모리 서브시스템 내에 배치될 때, 동일한 메모리 서브시스템에서 사용되는 DRAM(예를 들어, "니어 메모리")과 동일한 그래뉼러리티 레벨에서 액세스될 수 있다. 그렇기는 하지만, 메모리 제어기 및 메모리 버스 또는 다른 타입의 버스에 의한 NVRAM으로의 액세스의 그래뉼러리티의 레벨은 I/O 서브시스템의 제어기 및 버스의 액세스 사이즈 및 플래시에 의해 사용되는 블록 사이즈보다 작다.
NVRAM은 또한 많은 기입 액세스 후에 파 메모리 레벨에서의 저장 셀이 마모되기(wear out) 시작한다는 사실을 설명하는 웨어 레벨링(wear leveling) 알고리즘을 포함할 수 있고, 특히, 상당히 많은 기입이 시스템 메모리 구현에서 발생할 수 있다. 하이 사이클 카운트 블록(high cycle count block)이 이 방식으로 마모될 가능성이 높기 때문에, 하이 사이클 카운트 블록의 어드레스를 로우 사이클 카운트 블록(low cycle count block)과 교체함으로써 파 메모리 셀에 걸쳐 웨어 레벨링이 기입을 확산시킨다(spread). 대부분의 어드레스 교체는 하드웨어, 더 낮은 레벨의 소프트웨어(예를 들어, 낮은 레벨의 드라이버 또는 오퍼레이팅 시스템) 또는 이 둘의 조합에 의해 처리되기 때문에 일반적으로 애플리케이션 프로그램에 투명하다는 것에 주목한다.
B. 파 메모리
본 발명의 일부 실시예의 파 메모리(122)는 NVRAM으로 구현되지만, 반드시 임의의 특정한 메모리 기술로 제한되는 것은 아니다. 파 메모리(122)는 메모리/저장장치 계층 내의 애플리케이션 및/또는 특성에 있어서 다른 명령 및 데이터 메모리/저장장치 기술과 구별가능하다. 예를 들어, 파 메모리(122)는
프로세서 코어(101-104)의 각각에 전용인 레벨 0 및 레벨 1 내부 프로세서 캐시(101a-b, 102a-b, 103a-b, 및 104a-b) 각각에 사용될 수 있는 스태틱 랜덤 액세스 메모리(SRAM) 및 프로세서 코어에 의해 공유되는 더 낮은 레벨의 캐시(LLC)(105);
(예를 들어, 프로세서(100)와 동일한 다이 상의) 프로세서(100) 내부의 캐시(106)로서 구성되고 및/또는 (예를 들어, 프로세서(100)와 동일 또는 상이한 패키지에) 프로세서 외부의 하나 이상의 캐시(107 내지 109)로서 구성된 다이나믹 랜덤 액세스 메모리(DRAM); 및
대용량 저장장치(미도시)로서 적용되는 FLASH 메모리/자기 디스크/광 디스크; 및
(부트 ROM, BIOS 플래시 및/또는 TPM 플래시라 불리울 수 있는) 펌웨어 메모리(미도시)로서 적용되는 FLASH 메모리 또는 다른 판독 전용 메모리(ROM)와 같은 메모리
와 다르다.
파 메모리(122)는, 프로세서(100)에 의해 직접 어드레스 가능하고 대용량 저장장치로서 적용되는 FLASH/자기 디스크/광 디스크와 반대로 프로세서(100)와 충분히 보조를 맞출 수 있는 명령 및 데이터 저장장치로서 사용될 수 있다. 또한, 위에서 설명하고 이하에서 상세히 설명하는 바와 같이, 파 메모리(122)는 메모리 버스 상에 배치될 수 있고 프로세서(100)와 직접 통신하는 메모리 제어기와 직접 통신할 수 있다.
파 메모리(122)는 다른 명령 및 데이터 저장 기술(예를 들어, DRAM)과 결합하여 하이브리드 메모리(또한, 동일 장소 배치(co-locating) PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)으로 알려짐)를 형성할 수 있다. PCM/PCMS를 포함하는 상기 기술 중의 적어도 일부는 시스템 메모리 대신 또는 그에 더하여 대용량 저장장치로서 사용될 수 있고, 이 방식으로 적용될 때 프로세서에 의해 랜덤 액세스가능, 바이트 어드레스 가능 또는 직접 어드레스 가능할 필요가 없다는 것에 주목한다.
설명의 편의를 위하여, NVRAM, PCM, PCMS 및 파 메모리라는 용어가 다음의 설명에서 상호 교환가능하게 이용될 수 있다. 그러나, 상술한 바와 같이, 상이한 기술이 또한 파 메모리에 사용될 수 있음을 알아야 한다. 또한, NVRAM은 파 메모리로서 사용되는 것으로 제한되지 않는다.
예시적인 시스템 메모리 할당 방식
도 1은 본 발명의 실시예에서 시스템 물리 어드레스(SPA; system physical address) 공간(116-119)에 대하여 다양한 레벨의 캐시(101-109)가 구성되는 방법을 나타낸다. 언급한 바와 같이, 이 실시예는 하나 이상의 코어(101-104)를 갖는 프로세서(100)를 포함하고, 각각의 코어는 자신의 전용 상위 레벨 캐시(L0)(101a-104a) 및 중간 레벨 캐시(MLC)(L1)(101b-104b)를 갖는다. 프로세서(100)는 또한 공유 LLC(105)를 포함한다. 이들 다양한 캐시 레벨의 동작은 잘 이해될 것이며 여기에서는 상세히 설명하지 않는다.
도 1에 도시된 캐시(107-109)는 특정 시스템 메모리 어드레스 범위 또는 비인접 어드레스 범위의 세트(a set of non-contiguous address ranges)에 전용일 수 있다. 예를 들어, 캐시(107)는 시스템 메모리 어드레스 범위 #1(116)에 대한 MSC(memory side cache)로서 동작하는 전용이고, 캐시(108 및 109)는 시스템 메모리 어드레스 범위 #2(117) 및 #3(118)의 비중첩 부분에 대한 MSC로서 동작하는 전용이다. 후자의 구현예는, (예를 들어, MSC로서 구성될 때) 프로세서(100)에 의해 사용되는 SPA 공간이 캐시(107-109)에 의해 사용되는 어드레스 공간으로 인터리빙되는(interleaved) 시스템에 사용될 수 있다. 일부 실시예에서, 이러한 후자의 어드레스 공간은 메모리 채널 어드레스(MCA) 공간이라 한다. 일 실시예에서, 내부 캐시(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) 및 시스템 메모리(151A)로서 동작하는 니어 메모리를 포함하는 시스템 메모리 레벨(151), (3) 플래시/자기/광 대용량 저장장치(152B) 및/또는 NVRAM 대용량 저장장치(152A)(예를 들어, NVRAM(142)의 일부)를 포함할 수 있는 대용량 저장장치 레벨(152); 및 (4) BIOS 플래시(170) 및/또는 BIOS NVRAM(172) 및 선택적으로 신뢰성있는 플랫폼 모듈(TPM; trusted platform module) NVRAM(173)을 포함할 수 있는 펌웨어 메모리 레벨(153)을 포함하는 다중 레벨을 갖는다.
표시된 바와 같이, 니어 메모리(144)는 시스템 메모리(151A)로서 동작하고 SPA 공간의 일부를 차지하는 모드(때때로 니어 메모리 "직접 액세스" 모드" 라 함), 및 스크래치패드(scratchpad) 메모리(192) 또는 기입 버퍼(193) 등의 하나 이상의 추가 동작 모드에서 동작하도록 구현될 수 있다. 본 발명의 일부 실시예에서, 니어 메모리는 분할가능하고, 각각의 분할은 지원되는 모드들 중의 상이한 모드에서 동시에 동작할 수 있고, 상이한 실시예는 (예를 들어, 각각의 모드 및 분할을 식별하는 상이한 바이너리 코드를 저장할 수 있는 MSC 제어기(124) 내의 프로그래머블 범위 레지스터의 세트를 통해) 하드웨어(예를 들어, 퓨즈, 핀), 펌웨어 및/또는 소프트웨어에 의해 분할(예를 들어, 사이즈, 모드)의 설정을 지원할 수 있다.
도 2에서 관찰되는 바와 같이, 시스템 어드레스 공간 B(191)은 니어 메모리의 전부 또는 일부에 시스템 어드레스 공간의 일부가 할당될 때의 구현예를 나타내는데 사용된다. 이 실시예에서, 시스템 어드레스 공간 B(191)은 니어 메모리(151A)에 할당된 시스템 어드레스 공간의 범위를 나타내고, 시스템 어드레스 공간 A(190)은 NVRAM(174)에 할당된 시스템 어드레스 공간의 범위를 나타낸다.
니어 메모리 직접 액세스 모드에서 실행될 때, 시스템 메모리(151A)로서의 니어 메모리의 전부 또는 일부가 직접 소프트웨어에 보이고 SPA 공간의 일부를 형성한다. 이러한 메모리는 완전히 소프트웨어 제어하에 있을 수 있다. 이러한 방식은 소프트웨어에 대하여 불균일 메모리 어드레스(NUMA) 메모리 도메인을 생성하고, NVRAM 시스템 메모리(174)에 상대적으로 니어 메모리(144)로부터 더 높은 성능을 얻는다. 예로서, 제한되지 않지만, 이러한 사용은 특정 데이터 구조로의 매우 신속한 액세스를 요구하는 특정 HPC(high performance computing) 및 그래픽 애플리케이션에 채용될 수 있다.
도 2는 또한 NVRAM(142)의 일부가 펌웨어 메모리로서 사용될 수 있는 것을 나타낸다. 예를 들어, BIOS NVRAM(172) 부분은 (BIOS 플래시(170)에 BIOS 정보를 저장하는 대신 또는 그에 더하여) BIOS 이미지를 저장하는데 사용될 수 있다. BIOS NVRAM 부분(172)은 SPA 공간의 일부일 수 있고 프로세서 코어(101-104) 상에서 실행되는 소프트웨어에 의해 직접 어드레스 가능하지만, BIOS 플래시(170)는 I/O 서브시스템(115)을 통해 어드레스 가능하다. 다른 예로서, 신뢰성있는 플랫폼 모듈(TPM) NVRAM(173) 부분은 민감한 시스템 정보(예를 들어, 암호키)를 보호하는데 사용될 수 있다.
따라서, 표시된 바와 같이, NVRAM(142)은 (예를 들어, 니어 메모리(144)가 직접 액세스 모드로 존재/동작할 때) 파 메모리(151B); NVRAM 대용량 저장장치(152A); BIOS NVRAM(172); 및 TPM NVRAM(173)으로서 포함하는 다양한 상이한 모드에서 동작하도록 구현될 수 있다.
시스템 메모리 및 대용량 저장장치의 선택은 본 발명의 실시예가 이용되는 전자 플랫폼의 형태에 의존할 수 있다. 예를 들어, 퍼스널 컴퓨터, 태블릿 컴퓨터, 노트북 컴퓨터, 스마트폰, 모바일 폰, 피처 폰, 개인 휴대 단말기(PDA), 휴대용 미디어 플레이어, 휴대용 게임 장치, 게임 콘솔, 디지털 카메라, 스위치, 허브, 라우터, 셋탑 박스, 디지털 비디오 레코더, 또는 비교적 작은 대용량 저장 요구사항을 갖는 다른 장치에서, 대용량 저장장치는 NVRAM 대용량 저장장치(152A)만을 이용하여 구현되거나 플래시/자기/광 대용량 저장장치(152B)와 결합한 NVRAM 대용량 저장장치(152A)를 이용하여 구현될 수 있다.
비교적 큰 대용량 저장 요구사항을 갖는 다른 전자 플랫폼(예를 들어, 대규모 서버)에서, 대용량 저장장치는 자기 저장장치(예를 들어, 하드 드라이브) 또는 자기 저장장치, 광 저장장치, 홀로그램 저장장치, 대용량 저장 플래시 메모리 및 NVRAM 대용량 저장장치(152A)의 임의의 조합을 이용하여 구현될 수 있다. 이러한 경우, 저장을 담당하는 시스템 하드웨어 및/또는 소프트웨어는 효율적이거나 유용한 방식으로 FM(151B)/NVRAM 저장장치(152A) 및 플래시/자기/광 대용량 저장장치(152B) 사이에 지속적인 프로그램 코드 및 데이터의 블록을 할당하기 위해 다양한 지능적인 지속적 저장 할당 기술을 구현할 수 있다.
예를 들어, 일 실시예에서, 고출력 서버(high powered server)에는 니어 메모리(예를 들어, DRAM), PCMS 장치 및 많은 양의 지속적 저장장치를 위한 자기 대용량 저장 장치가 구성된다. 일 실시예에서, 노트북 컴퓨터에는, 니어 메모리, 및 파 메모리와 대용량 저장장치 양자의 역할을 수행하는 PCMS 장치가 구성된다. 집 또는 사무실 데스크탑 컴퓨터의 일 실시예는 노트북 컴퓨터와 유사하게 구성되지만, 많은 양의 지속적인 저장 능력을 제공하기 위하여 하나 이상의 자기 저장장치를 포함할 수도 있다.
태블릿 컴퓨터 또는 셀룰러 전화 장치의 일 실시예에는 PCMS 메모리가 구성되지만, 잠재적으로는 (비용/전력 절약을 위해) 니어 메모리 및 추가의 대용량 저장 장치를 갖지 않는다. 그러나, 태블릿/전화기에는 플래시 또는 PCMS 메모리 스틱 등의 제거가능 대용량 저장 장치가 구성될 수 있다.
다양한 다른 타입의 장치는 상술한 바와 같이 구성될 수 있다. 예를 들어, 휴대용 미디어 플레이어 및/또는 개인 휴대 단말기(PDA)는 상술한 태블릿/전화기와 유사한 방식으로 구성될 수 있고, 게임 콘솔은 데스크탑 또는 랩탑과 유사한 방식으로 구성될 수 있다. 유사하게 구성될 수 있는 다른 장치는 디지털 카메라, 라우터, 셋탑 박스, 디지털 비디오 레코더, 텔레비전 및 자동차를 포함한다.
예시적인 시스템 메모리 할당 방식
도 3은 복수의 메모리 채널(예를 들어, DDR 채널)(302_1 내지 302_8)로의 각각의 인터페이스(301_1 내지 301_8)를 갖는 컴퓨팅 시스템의 메모리 제어기(300)를 나타내고, 여기서, 각각의 채널은 하나 이상의 DIMM 카드를 지원할 수 있고(즉, 하나 이상의 DIMM 카드가 채널에 플러그인될 수 있다), 도 4 및 5는 메모리 채널 및 그의 대응하는 DIMM 카드를 디스에이블링/인에이블링(disabling/enabling) 함으로써 컴퓨팅 시스템의 소비 전력을 제어하는 방법을 나타낸다. 간략화를 위해, 8개의 메모리 채널이 도시되지만, 당업자는 본 발명이 상이한 수의 메모리 채널을 갖는 시스템에 적용될 수 있음을 이해할 것이다.
도 4의 방법에 따르면, 예를 들어, 현재 동작가능한 메모리 채널을 디스에이블링함으로써 컴퓨터 시스템을 더 낮은 성능 상태로 진입하기 위해 (예를 들어, ACPI 등의 지능적인 전력 관리 소프트웨어에 의해) 결정이 행해질 수 있다. 반대로, 도 5의 방법에 따르면, 현재 동작 불가능한 메모리 채널을 인에이블링함으로써 컴퓨터 시스템이 더 높은 성능 상태로 진입하기 위해 결정이 행해질 수 있다.
도 1로부터, DRAM 및 NVRAM 시스템 메모리 컴포넌트를 갖는 일부 컴퓨팅 시스템 실시예는 DRAM을 위한 시스템 메모리 어드레스의 제1 부분 및 NVRAM을 위한 시스템 메모리 어드레스의 제2 부분을 리저브(reserve)할 수 있다. 즉, "시스템 메모리 접근법으로서 동작하는 니어 메모리"에서, 어드레스 가능한 시스템 메모리는 DRAM(예를 들어, 도 2 참조, 시스템 메모리(151A)로서의 니어 메모리) 및 PCMS(예를 들어, 도 2 참조, NVRAM 시스템 메모리(174)로서 구현되는 파 메모리(151B)) 양자를 포함할 수 있다.
일 실시예에 따르면, 도 3을 다시 참조하면, 메모리 채널(302_1 내지 302_8)의 각각에는 메모리 채널 상에서 이용가능한 저장 공간과 일치하는 컴퓨터의 시스템 메모리 어드레스의 고유 부분 또는 세그먼트가 할당된다. 메모리 채널 상에서 이용가능한 저장 공간은 메모리 채널에 플로그인된 DIMM 카드의 수 및 DIMM 카드 상의 메모리 장치의 저장 밀도의 함수이다.
다른 실시예에 따르면, 메모리 채널의 제1 부분(303)(및 그에 따른 시스템 메모리 어드레스 공간의 대응하는 제1 부분/세그먼트)이 DRAM DIMM을 위해 리저브되고, 메모리 채널의 제2 부분(304)(및 그에 따른 시스템 메모리 어드레스 공간의 대응하는 나머지 제2 부분/세그먼트)이 PCMS DIMM을 위해 리저브된다.
이 특정한 실시예에 따르면, DRAM 저장 공간(303)은 PCMS 저장 공간(304)을 위한 캐시로서 동작하지 않는다. 오히려, 시스템 메모리 공간은 DRAM 저장 공간(303)에 "액세스 시간에 결정적인(access time critical)" 정보(프로그램 코드 명령 또는 적어도 빈번히 이용되는 프로그램 코드 명령)을 저장하고 PCMS 저장 공간(304)에 "액세스 시간에 결정적이지 않거나 덜 결정적인(not, or less, access time critical)" 정보(데이터 또는 적어도 덜 빈번히 액세스되는 데이터)를 저장하도록 구성된다.
따라서, 컴퓨터 CPU 상에서 실행되는 오퍼레이팅 시스템 및/또는 가상 머신 모니터는 이 방식과 일치하는 시스템 메모리 어드레스 공간을 할당한다. 예를 들어, (적어도) 빈번히 사용되는 프로그램 코드 명령에는 DRAM DIMM을 갖는 메모리 채널에 대응하는 어드레스 공간이 주어지고, (적어도) 덜 빈번히 사용되는 데이터 항목에는 PCMS DIMM을 갖는 메모리 채널에 대응하는 어드레스 공간이 주어진다. 다양한 실시예에서, DRAM이든 PCMS이든, 각각의 어드레스에 저장된 콘텐츠는 "캐시 라인"이라 불리우는 고정 길이 데이터 워드(예를 들어, 64비트 데이터 워드 또는 128비트 데이터 워드)이다. 편의를 위해, 시스템 메모리 어드레스에 저장되는 정보를 지칭하기 위하여 "콘텐츠" 또는 "캐시 라인"이라는 용어가 이하의 설명에서 상호 교환가능하게 이용된다.
도 4의 방법론을 참조하면, 바로 위에서 설명한 컴퓨터 시스템에 적용될 때, 더 낮은 성능의 상태로 진입하도록 메모리 채널을 디스에이블링하는 것은 메모리 채널의 DIMM 카드 및 그 대응하는 메모리 장치를 디스에이블링하는 것을 포함하고, 더 높은 성능 상태로 진입하도록 메모리 채널을 인에이블링하는 것은 메모리 채널의 DIMM 카드 및 그 대응하는 메모리 장치를 인에이블링하는 것을 포함한다.
특히, 전력 소비 및 성능의 효율적인 스케일링(scaling)은 DRAM DIMM 카드를 갖는 채널이 인에이블링/디스에이블링되도록 선택될 때 달성될 수 있다. DRAM 장치가 PCMS 장치보다 더 빠르고 더 많은 전력을 소비함에 따라, DRAM 메모리 채널을 셧다운함으로써 더 낮은 성능 상태로 강하하는 것은 컴퓨팅 시스템의 성능 및 전력 소비를 크게 저하시켜야 한다. 마찬가지로, DRAM 메모리 채널을 인에이블링함으로써 더 높은 성능 상태로 상승시키는 것은 컴퓨터 시스템의 성능 및 전력 소비를 크게 증가시켜야 한다.
그러나, 메모리 관리는 주요 관심사이다. 특히, DRAM 메모리 채널이 디스에이블 또는 인에이블되면, 시스템 메모리 어드레스 공간은 이용가능한 DRAM 메모리 공간의 변화를 고려하도록 효율적으로 재구성되어야 한다. 이것은 다른 시스템 메모리 위치로 셧다운될 DRAM 채널의 콘텐츠를 "이동(moving)"하는 것을 포함한다. 도 4의 방법론에 따르면, 이들 중의 임의의 것의 오퍼레이팅 시스템 및/또는 가상 머신 모니터 및/또는 가상 머신 및/또는 전력 관리 컴포넌트(이하, "시스템 소프트웨어"라 한다)는 어떤 가상 어드레스가 더 빈번히 액세스되는지 및/또는 어떤 가상 어드레스거 덜 빈번히 액세스되는지를 이해하기 위하여 DRAM에 할당된 가상 어드레스의 사용을 계속 파악한다(402).
본 기술에 알려진 바와 같이, 시스템 소프트웨어는 일반적으로 가상 어드레스를 참조하도록 설계되고, 하부의 하드웨어는 가상 어드레스를 시스템 내에 상주하는 시스템 메모리의 대응하는 물리 어드레스로 변환하는 것을 담당한다.
DRAM 메모리 채널을 디스에이블링하는 것으로 결정하면, 시스템 소프트웨어는 DRAM 어드레스 공간을 효율적으로 재구성하여 더 빈번히 사용되는 가상 어드레스가 DRAM 어드레스 공간에 할당되도록 유지하고, 셧다운될 DRAM 메모리 채널에 의해 유지되는 물리 어드레스와 대략 또는 동등하게 동일한 수의 덜 사용되는 DRAM 가상 어드레스의 그룹은 PCMS 어드레스 공간에 재할당된다. (셧다운될 DRAM 채널 내의 빈번히 사용되는 어드레스의 콘텐츠의 활성 상태로 유지되는 DRAM 채널로의 이동 및 덜 사용되는 DRAM 어드레스의 콘텐츠의 PCMS 어드레스 공간으로의 이동을 포함하는) 하부의 물리 어드레스의 결과적인 재할당은 반드시 상술한 가상 어드레스 대 물리 어드레스 변환에 영향을 준다.
일반적으로, 중앙 처리 장치(CPU) 또는 "프로세서"(306)에 상주하는 변환 색인 버퍼(TLB; translation lookaside buffer)(305)는 가상 어드레스 대 물리 어드레스 변환의 캐시로서 동작한다. TLB는 본 기술에서 잘 이해되지만, 그 역할 및 기능의 개략적인 개요를 설명할 가치가 있다. TLB는 다수의 변환 엔트리(TE)를 포함하고, 각각의 TE는 어드레스 변환이라 불리우는 특정 가상 어드레스에 대한 고유 물리 어드레스를 식별한다. 일반적으로, 변환 자체는 메모리 페이지의 그래뉼러리티에 특정된다. 그러므로, 가상 어드레스의 TE는 컴퓨팅 시스템의 시스템 메모리 내의 대응하는 메모리 페이지의 물리 어드레스를 포함한다.
TLB는 연관된 가상 어드레스가 실행 프로그램 코드에 의해 가장 최근에 호출된 TE의 세트(TLB의 사이즈까지)를 포함하도록 설계된다. 실행 프로그램 코드에 의해 호출된 가상 어드레스의 각각이 동작될 특정 프로그램 코드 명령 또는 특정 데이터 항목을 식별함에 따라, 다양한 프로세서 아키텍쳐는 명령 TLB 및 데이터 TLB 양자를 포함할 수 있다.
명령 TLB의 경우, 프로그램 코드 실행 동안, 다음 명령에 대한 다음 가상 어드레스가 페치되고, 명령의 가상 어드레스와 명령 TLB TE 내의 가상 어드레스 간의 매칭을 위해 명령 TLB에서 룩업(lookup)이 수행된다. 공통 접근법에서, 가상 어드레스의 낮은 순위의 비트가 룩업에 사용되지 않아, 룩업 파라미터(즉, 가상 어드레스의 더 높은 순위의 비트)는 본질적으로 가상 메모리 페이지의 어드레스에 대응한다. 매칭되면, 매칭 가상 어드레스를 갖는 TE에서 찾은 물리 어드레스는 원하는 명령을 찾을 수 있는 시스템 메모리 내의 특정 메모리 페이지를 식별한다.
매칭 가상 어드레스가 명령 TLB에서 찾을 수 없으면(명령 TLB "미스(miss)"), 프로세서의 테이블워크 하드웨어(tablewalk hardware)는 시스템 메모리로부터 적절한 TE를 페치한다. 시스템 메모리로부터 페치된 TE 내의 물리 어드레스는 다음 명령을 찾을 수 있는 시스템 메모리 내의 메모리 페이지를 식별한다. 시스템 메모리로부터 페치된 TE의 카피는 또한 일반적으로 명령 TLB에 로딩되고, 최소 최근 사용 TE는 명령 TLB로부터 퇴거된다. 시스템 메모리로부터 페치된 본래의 TE는 시스템 메모리에 남아 있다.
데이터 TLB 미스에 응답하는 시스템 동작을 포함하는 데이터 TLB는 가상 어드레스가 원하는 데이터 항목에 대한 것이라는 것을 제외하고 상술한 것과 거의 동일하게 동작하고, 원하는 TE에서 찾은 물리 어드레스는 원하는 데이터를 찾은 시스템 메모리 내의 페이지를 식별한다.
중요하게, 동작 프로그램(예를 들어, 애플리케이션 및/또는 가상 머신)이 이 동작 동안 호출할 수 있는 가상 어드레스의 세트에 대한 (명령 및 데이터 양자에 대한) 모든 가상 어드레스 대 물리 어드레스 변환을 포함하는 TE의 세트가 시스템 메모리에 유지되는 "TE 스토어"라 불리우는 특별 스토어(307)에 위치한다는 것에 주목한다. 실시예에서, 동작 프로그램을 위한 TE 스토어(307)는 실행을 위해 동작 프로그램을 메모리로 로딩하는 것의 일부로서 시스템 메모리로 로딩된다. 다수의 프로그램이 컴퓨터 상에서 동시에 동작할 때, 실시예에서, TE 스토어는 각각의 동작 프로그램에 대한 시스템 메모리에 유지된다. 다른 실시예에서, 모든 TE 스토어 및, 따라서, 모든 TE가 디스에이블링될 수 없는 DRAM 채널 상의 DRAM 시스템 메모리의 특별 세그먼트에 유지된다.
시스템 메모리 공간이 컴퓨터의 성능 상태를 변경하는 전력 관리 결정의 일부로서 메모리 채널의 셧다운(또는 인에이블링)을 고려하도록 재구성되면, DRAM 메모리 콘텐츠의 상술한 이동은, 이동하여 "새로운" 물리 어드레스를 갖는 각각의 캐시 라인에 대하여 그 새로운 물리 어드레스 위치를 반영하도록 대응하는 TE를 업데이트할 필요성을 생성한다(404). 업데이트되어야 하는 특정 TE는 i) 콘텐츠가 셧다운되는 DRAM 채널로부터 셧다운되지 않는 DRAM 채널로 이동하는 더 빈번히 사용되는 DRAM 어드레스의 TE 및 ii) 대응하는 콘텐츠가 PCMS 어드레스 공간으로 이동하는 덜 빈번히 사용되는 DRAM 어드레스의 TE를 포함한다.
예상밖의 상황에서, 가장 덜 빈번히 사용되는 DRAM 어드레스의 모두가 셧다운되는 특정 DRAM 채널 상에 있는 것이 일어난다. 이 경우, 임의의 다른 DRAM 채널 상의 DRAM 어드레스가 채널 셧다운에 의해 영향을 받지 않는다(즉, 셧다운되는 DRAM 채널의 모든 콘텐츠가 PCMS 저장장치로 이동된다). 이처럼, 이러한 예상 밖의 시나리오에서, 셧다운되는 채널의 DRAM 어드레스의 TE만이 PCMS 메모리 내의 새로운 물리 어드레스를 반영하도록 변경된다.
가능성이 큰 시나리오에서, 더 빈번히 사용되는 DRAM 어드레스의 일부가 셧다운되는 메모리 채널 상에 상주하고 덜 빈번히 사용되는 DRAM 어드레스의 일부가 셧다운되지 않는 나머지 채널(들) 상에 상주한다. 실시예에서, PCMS 저장장치로의 이동을 위해 식별된 가장 덜 빈번히 사용되는 DRAM 어드레스의 수는 셧다운될 DRAM 채널에 의해 지원되는 어드레스의 수와 동일(또는 거의 동일)하다. 이것은 본질적으로 PCMS 저장 공간으로의 이동을 위해 플래그(flag)된 DRAM 어드레스의 수를 DRAM 채널의 셧다운에 의해 "분실"된 DRAM 어드레스의 수와 동일하게 하는 것에 대응한다.
이러한 접근법에 의하면, 콘텐츠가 새로운 DRAM 어드레스(특히, 활성 상태로 유지되는 다른 DRAM 채널 상의 어드레스)로 이동될 필요가 있는 셧다운되는 DRAM 채널 상의 빈번히 사용되는 DRAM 어드레스의 수는 콘텐츠가 새로운 PCMS 어드레스(즉, PCMS 저장장치의 어드레스)로 이동될 필요가 있는 활성 상태로 유지되는 DRAM 채널(들) 상의 가장 덜 빈번히 사용되는 DRAM 어드레스의 수와 동일해야 한다. 이처럼, 전자의 콘텐츠는 채널 셧다운 후 활성 상태로 유지되는 DRAM 공간 내의 후자의 콘텐츠를 대체할 수 있다. 즉, 셧다운되는 DRAM 채널 상의 빈번히 사용되는 DRAM 어드레스의 콘텐츠는 셧다운되지 않은 DRAM 채널(들)의 가장 덜 빈번히 사용되는 DRAM 어드레스의 DRAM 어드레스로 기입될 수 있다.
이처럼, 도 4의 접근법에 따르면, 가장 덜 빈번히 사용되는 DRAM 어드레스의 캐시 라인, 즉, 셧다운되는 DRAM 채널 상의 캐시 라인 및 다른 DRAM 채널 상의 캐시 라인 양자가 DRAM으로부터 판독되고 PCMS 저장 공간에 기입된다(403). 시스템 메모리 내의 (각각의 TE 스토어 내의 - 다수의 소프트웨어 애플리케이션은 채널 셧다운에 의해 영향을 받을 수 있기 때문이다) 대응하는 TE에 유지되는 각각의 메모리 페이지에 대한 물리 어드레스 정보는 각각의 새로운 PCMS 어드레스를 반영하도록 변경된다(404).
그 후, 활성 DRAM 채널 상의 "비워진(just vacated)" DRAM 어드레스는 셧다운되는 DRAM 채널 상의 빈번히 사용되는 DRAM 어드레스의 캐시 라인으로 다시 채워진다(405).
이처럼, 나머지 활성 채널 상의 각각의 비워진 가장 덜 빈번히 사용되는 DRAM 어드레스는 셧다운되는 채널 상의 다른 더 빈번히 사용되는 DRAM 어드레스로부터의 캐시 라인으로 재기입된다. 셧다운되는 채널로부터 나머지 활성 DRAM 채널(들)로 이동하는 더 빈번히 사용되는 DRAM 어드레스의 메모리 페이지의 각각에 대한 시스템 메모리 내의 TE 레코드가 새로운 물리 어드레스 위치를 반영하도록 변경된다(406). 특히, 각각의 새로운 물리 어드레스는 가장 덜 빈번히 사용되는 것으로 이미 식별된 어드레스에 대응한다.
실시예에서, (예를 들어, DRAM 채널을 셧다운하려는 결정을 행하기 전에) 본래의 시스템 브링업(bring-up)의 일부로서, PCMS 저장장치(308)의 섹션이 DRAM 채널 셧다운의 경우 캐시 라인의 "DRAM 채널의 가치"를 수신하기 위해 리저브된다. 여기서, DRAM 채널이 셧다운되지 않으면 및 셧다운될 때까지 PCMS 섹션에 활성 정보가 저장되지 않고, 그 포인트에서, 셧다운되는 DRAM 채널의 저장장치 용량과 총 데이터 사이즈에 있어서 동등한 다수의 캐시 라인이 DRAM 저장 공간으로부터 섹션(308)으로 로딩된다. 각각의 TE 스토어 내의 대응하는 TE의 업데이트시, 이들 캐시 라인은 후속으로 PCMS 섹션으로부터 액세스되어 프로그램 동작을 지원한다. PCMS 시스템 메모리의 다수의 그러한 섹션은 상술한 바와 같이 미리 리저브되어 다수의 DRAM 채널이 셧다운되는 동안 동작할 수 있는 시스템을 지원할 수 있다(407).
상술한 시스템 메모리 재구성 프로세스의 일부로서, TLB에 상주하는 변경된 TE의 임의의 카피가 무효화된다. 시스템 동작은 시스템 메모리 구성 동안 정지될 수 있다는 것에 주목한다.
DRAM 채널이 셧다운된 후, 도 5를 참조하여, 현재 비활성인 DRAM 채널(502)의 활성화를 포함하는 더 높은 성능 상태에 진입하기 위해 후속 결정이 시스템 소프트웨어에 의해 수행될 수 있다(502). 이 경우, DRAM으로부터 이동되는 콘텐츠의 저장을 위해 리저브되는 PCMS 시스템 메모리(304)의 상술한 섹션(308)에 상주하는 캐시 라인이 활성화되는 DRAM 채널로 "다시 이동한다(re-migrated back up)"(503). 이러한 모든 캐시 라인의 대응하는 메모리 페이지에 대한 TE의 물리 어드레스 컴포넌트가 TE 스토어(307)에서 변경되어 새롭게 활성화된 DRAM 채널 내의 새로운 저장장치를 반영한다(504). 또한, 시스템 동작은 DRAM 채널 활성화, 캐시 라인 이동, TE 변경 및 TLB 내에 상주하는 변경된 TE의 임의의 카피의 무효화를 구현하기 위해 정지될 수 있다.
도 6은 예를 들어, 상술한 바와 같이 컴퓨터 시스템이 메모리 채널을 인에이블/디스에이블하는 능력을 지원하도록 지능적인 전력 관리 소프트웨어(ACPI 등)에 의해 이용될 수 있는 소프트웨어 표 구조 계층을 나타낸다. 도 6에서 관찰되는 바와 같이, 메모리 전력 상태 표(600) 계층은 헤더(601), 명령 세트(602), 하나 이상의 전력 노드(603_1 내지 603_X)의 정의 및 메모리 전력 상태 표(600)에 의해 표시되는 시스템 메모리의 영역에 의해 지원되는 상이한 전력 상태(604_1 내지 604_Y)의 특성을 포함한다.
메모리 전력 상태 표의 단일 인스턴스(instance)는 예를 들어 전체 시스템 메모리, (시스템 메모리의 DRAM 섹션에 대하여 인스턴스화된(instantiated) 제1 표 및 시스템 메모리의 PCMS 섹션에 대하여 인스턴스화된 제2 표 등의) 시스템 메모리의 기술 특정 영역 등 중의 임의의 것에 대하여 인스턴스화될 수 있다. 헤더 정보(601)는 메모리 전력 상태가 대표해서 인스턴스화되는 시스템 메모리의 일부에 특정된 정보를 포함한다. 실시예에서, 헤더 정보(601)는 i) 표에 대한 서명, ii) 모든 컴포넌트(602, 603, 604)를 포함하는 전체 표의 길이, iii) 표의 구조의 버전 번호, iv) 표에 대한 체크섬(checksum), v) OEM 식별자, vi) 표를 생성한 유틸리티의 판매자의 ID, 및 vii) 표를 생성한 유틸리티의 개정의 ID를 포함한다.
명령의 세트는 전력 상태 표로부터/로 정보를 판독/기입하는 기본 명령 및 그의 다양한 컴포넌트를 포함한다.
메모리 전력 상태 표는 표에 열거된 전력 노드 구조(603)의 수(X)를 식별하고 전력 노드 구조(603_1 내지 603_X) 자체를 포함하거나 적어도 그에 대한 참조를 제공한다. 실시예에서, 다수의 전력 상태(그 중의 임의의 하나는 프로그램가능하게 입력될 수 있다)를 지원할 수 있는 표(600)가 나타내는 메모리의 부분 내의 각각의 메모리 채널에 대한 개별 전력 노드 구조 인스턴스가 생성된다. 예를 들어, 도 3을 간략히 참조하면, 메모리 전력 상태 표(600)가 DRAM(303) 및 PCMS(304) 섹션 양자를 갖는 시스템 메모리의 DRAM 부분(303)을 나타내면, 각각의 DRAM 메모리 채널(302_1 내지 302_4)에 대하여 개별 전력 노드 구조가 인스턴스화될 수 있다.
도 6에서 관찰되는 바와 같이, 전력 노드 구조(603_1) 등의 각각의 전력 노드 구조는 i) 전력 노드 구조의 식별자(605), ii) 전력 노드 구조가 나타내는 시스템 메모리 어드레스 공간의 어드레스 범위(606), 및 iii) 전력 노드 구조로 나타내는 시스템 메모리의 특정 섹션(606)이 현재 있는 전력 상태(607)를 포함한다. 현재 메모리 전력 상태(607)는 전체로서 전력 상태 표(600)에 의해 정의된 메모리 전력 상태(604_1 내지 604_Y)의 세트로부터의 전력 상태들 중의 하나에 대응한다는 것에 주목한다.
전력 노드 구조(603_1)가 DRAM 채널을 나타내는 실시예에서, 전력 노드 구조의 어드레스 범위(606)는 그 물리 어드레스 공간으로의 변환이 채널에 의해 지원되는 물리 어드레스에 대응하는 가상 시스템 메모리 어드레스의 범위에 대응한다. 그러나, 메모리 채널의 상술한 셧다운 및 재-인에이블링(re-enablement)은 다수의 메모리 채널에 걸쳐 인접한 가상 어드레스 범위를 "스크램블"할 수 있다. 달리 말하면, 적어도 채널 셧다운 시퀀스 후에, 단일 메모리 채널이 가상 어드레스 공간의 다수의 비인접 섹션을 지원할 수 있다.
대응하는 물리 저장 자원에 걸친 가상 어드레스 공간의 이러한 프래그멘테이션(fragmentation)은 메모리 채널 셧다운 시퀀스가 개시될 때마다 악화(compound)될 수 있다. 이처럼, 실시예에서, 다수의 추가의 전력 노드 구조(603_1_2 내지 603_1_R)는 동일한 메모리 채널에 대하여 인스턴스화될 수 있고, 여기서, 각각의 그러한 전력 노드 구조 인스턴스는 채널에 효과적으로 저장된 가상 어드레스 공간의 상이한 범위에 대응한다. 다양한 전력 노드 구조 인스턴스는 동일한 전력 노드 구조 식별자 엘리먼트(605)를 그 각각에 입력함으로써 동일한 메모리 채널 상에 저장된 대응하는 가상 어드레스 범위를 나타내는 방식으로 효과적으로 함께 "묶일(tied)" 수 있다. 이 특정한 식별자에 취해지는 임의의 액션은 식별자를 갖는 전력 노드 구조(603_1 및 603_1_2 내지 603_1_R) 모두를 자연스럽게 인보크(invoke)할 것이다.
채널 셧다운 또는 채널 재-인에이블링 천이 동안, 특정 메모리 채널의 전력 노드 구조 인스턴스(들)는 채널이 그 저장장치를 지원하는 "새로운" 가상 어드레스를 반영하도록 변경되어야 한다. 이것은 메모리 채널에 대하여 인스턴스화된 기존의 전력 노드 구조 인스턴스의 삭제 또는 새로운 전력 노드 구조 인스턴스의 추가 및/또는 메모리 채널에 대하여 인스턴스화된 기존의 전력 노드 구조 인스턴스에 특정된 가상 어드레스 범위(606)의 변경 중의 임의의 것을 포함할 수 있다. 이처럼, 다양한 실시예에 따르면, 메모리 채널이 셧다운 또는 재활성화될 때, 영향을 받은 가상 어드레스 대 물리 어드레스 변환을 위해 변경된 시스템 메모리의 TE 스토어 내의 TE 엔트리뿐만 아니라, 전력 관리 소프트웨어에 의해 사용되는 전력 노드 구조의 어드레스 범위(606) 엘리먼트는 물론, 이러한 구조 자체의 수도 변경될 수 있다.
DRAM 메모리 채널이 위에서 상세히 설명한 바와 같이 셧다운되면, 메모리 채널의 전력 노드 구조 인스턴스(들)의 현재 전력 상태(607)는, 메모리 채널이 셧다운되고 활발하게 사용되지 않는 낮은 전력 상태에 대응한다. 이 전력 상태에서, 메모리 채널 상의 DIMM 카드로의 클록, 스트로빙(strobing) 및/또는 리프레쉬 신호의 적용은 정지될 수 있다. 채널 상의 DIMM 카드에 인가되는 전원 전압은 또한 특성의 낮은 전력 상태의 세트의 일부로서 감소될 수 있다.
메모리 채널이 셧다운 후에 재활성화되면, 메모리 채널의 전력 노드 구조 인스턴스(들)의 현재의 전력 상태 설정(607)은 활성인 메모리 채널에 대응하는 다른 전력 상태로 변경할 것이다. 이 경우, 임의의 디스에이블링된 신호 또는 공급 전압이 재인가된다.
위의 전력 상태 천이에 대하여, 메모리 채널과 연관된 오퍼레이팅 시스템에 내장된 드라이버 소프트웨어는 더 높은 전력 상태에 들어갈 때 다양한 신호 및 공급 전압의 인에이블링 뿐만 아니라 낮은 전력 상태에 들어갈 때 다양한 신호 및 공급 전압의 디스에이블링을 감독할 수 있다.
실시예에서, 현재의 메모리 전력 상태 설정(607)은 전력 노드 구조(603_1)가 현재 있는 표(600)에 의해 지원되는 전력 상태(604_1 내지 604_Y)의 세트 중에서 특정 전력 상태를 지적하는 포인터(610)를 포함한다. 실시예에서, 전력 상태 정의(604_1 내지 604_Y) 중 각각의 전력 상태 정의는 시스템 메모리 컴포넌트가 그 전력 상태에 있을 때 소비되는 평균 전력(및/또는 최대-최소 전력 소비 레이트)을 정의한다. 다른 실시예에서, 각각의 전력 상태 정의는 또한 전력 상태 내 또는 밖으로 천이할 때 소요되는 시간량(예를 들어 퇴장 레이턴시(exit latency))의 정의를 포함한다.
상기 설명은 주로 전체 단일 채널의 셧다운에 중심을 두었지만, 본 발명은 더 넓고 더 미세한 그래뉼러리티에 적용될 수 있다는 것에 주목한다. 특히, 본 발명은 1보다 많은 채널이 (예를 들어, 메모리 채널에 걸쳐 인터리빙이 존재하는 경우) 동일한 전력 상태 변경 시퀀스의 일부로서 셧다운되는 시퀀스 또는 (하나의 DRAM 칩의 셧다운 등의) 전체보다 작은 메모리 채널이 셧다운되는 시퀀스에 적용될 수 있다.
도 7은 전력 관리 소프트웨어(710), 상술한 전력 관리 표(700) 및 소프트웨어 프로그램의 가상 어드레스에 대한 사용 레이트를 계속 파악하고 캐시 라인을 이동하는 TE 정보를 업데이트하는 메모리 관리 소프트웨어(712)의 컴포넌트(711)를 포함하는 소프트웨어 아키텍쳐를 나타낸다.
전력 관리 소프트웨어 기능(710)(ACPI 등)은 더 낮은 시스템 전력 상태가 필요한 것으로 결정한다. 전력 관리 표(700)의 이용가능성을 통한, 시스템 메모리가 상이한 전력 상태를 지원하는 다양한 전력 노드(703_1 내지 703_N)로 조직된다는 사전 인식으로, 전력 관리 소프트웨어(710)는 이러한 하나의 전력 노드(703_2) 및 입력되어야 하는 새로운 낮은 전력 상태를 식별하는 명령(702)을 발행한다.
여기서, 전력 노드(703_1 내지 703_N)의 각각은 그 내로 플러그인된 다수의 DIMM 카드를 각각 갖는 컴퓨팅 시스템에 상주하는 상이한 DRAM(그리고 가능하게는 PCMS) 메모리 채널에 대응한다. 이 예에서, 전력 노드(703_2)는 DRAM 메모리 채널에 대응한다. 컴퓨터 시스템의 하부의 메모리 채널에 대한 메모리 관리 소프트웨어(712)는 명령(702)에 응답하여 인보크(713)되고 셧다운되는 특정 DRAM 메모리 채널을 인식한다.
메모리 관리 소프트웨어(712)는 어떤 DRAM 할당 가상 어드레스가 더 빈번히 이용되는지 및 어떤 DRAM 할당 가상 어드레스가 덜 빈번히 사용되는지를 추적하는 추적 컴포넌트(711)를 포함한다. DRAM 메모리 채널의 셧다운으로 DRAM 저장 용량의 손실을 빼면, 시스템에 대한 새로운 더 작은 DRAM 용량이 이해된다. 이 용량과 일치하는 가장 빈번히 사용되는 DRAM 가상 어드레스(및/또는 다른 "시간 액세스 결정적 가상 어드레스가 플래그된다)가 DRAM 저장 장치에 유지(keep in)되도록 식별된다. 나머지는 덜 사용되는 DRAM 가상 어드레스의 모음에 대응하고, 그 대응하는 콘텐츠의 사이즈는 셧다운되는 메모리 채널의 용량과 동등하다.
이동 제어 컴포넌트(714)는 상술한 바와 같이 적절한 캐시 라인 이동을 제어한다. 여기서, 또한, 이동은, DRAM으로부터 덜 사용되는 가상 어드레스와 연관된 캐시 라인(셧다운되는 메모리 채널 상의 캐시 라인 및 다른 DRAM 메모리 채널 상의 캐시 라인)의 판독 및 PCMS 메모리 내의 리저브된 공간으로의 기입을 포함한다. 셧다운되는 메모리 채널 상에 위치하는 빈번히 사용되는 가상 어드레스와 연관된 캐시 라인은 PCMS 메모리 공간으로의 이동에 의해 효과적으로 비워진 나머지 활성 메모리 채널의 위치로 이동한다. 이동에 의해 새로운 물리 어드레스를 갖는 가상 어드레스의 TE 스토어 내의 TE는 업데이트(715)되고, TLB 내의 임의의 영향을 받은 TE는 무효화된다.
그 다음에, 나머지 활성 DRAM 메모리 채널을 나타내는 전력 표(700) 내의 전력 노드의 어드레스 범위 정보가 업데이트(716)되어 새로운 가상 어드레스 범위를 반영한다. 이것은 동일한 전력 노드의 일부로서 식별되는 전력 노드 인스턴스의 생성 또는 삭제를 포함할 수 있다.
그 후, 전력 채널은, 예를 들어, 채널 상의 다양한 클록/스트로브 신호를 정지 또는 감속할 수 있는(그리고, 가능하게는, 메모리 채널 상의 공급 전압을 더 감소시키는) 메모리 채널에 대한 장치 드라이버 소프트웨어(717)에 의해 셧다운된다.
전력 채널은 유사한 플로우에 따라 재활성화될 수 있지만, 여기서 이동 제어 컴포넌트(714)는 PCMS에 미리 저장된 캐시 라인을 재활성화된 메모리 채널로 이동한다.
상술한 방법론은 소프트웨어에서 주로 그렇지 않으면 전적으로 수행되는 것으로 제시되었지만, 전술한 다양한 단계 중 임의의 것은 하드웨어 또는 하드웨어와 소프트웨어의 조합으로 수행될 수 있다.

Claims (28)

  1. 성능 레벨이 현재의 성능 상태보다 낮은, 더 낮은 성능 상태로의 진입에 대한 요구에 응답하여,
    DRAM 메모리 채널 상에 저장된 캐시 라인들을 다른 DRAM 메모리 채널들 및 PCMS 메모리로 이동(migrating)하고 - 상기 캐시 라인들 중 더 빈번히 사용되는 가상 어드레스들과 연관된 캐시 라인들은 상기 다른 DRAM 메모리 채널들로 이동하고, 상기 캐시 라인들 중 덜 빈번히 사용되는 가상 어드레스들과 연관된 캐시 라인들은 상기 PCMS 메모리로 이동함 -,
    상기 DRAM 메모리 채널을 셧다운하는 것을 수행하는 단계
    를 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  2. 제1항에 있어서, PCMS 메모리로 이동한 상기 캐시 라인들은, DRAM 메모리 채널 셧다운 동작에 응답하여 DRAM 저장장치로부터 이동하는 캐시 라인들을 위해 상기 PCMS 메모리에 미리 리저브(reserve)된 저장 공간으로 이동하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  3. 제2항에 있어서, 성능 레벨이 현재의 성능 상태보다 높은, 더 높은 성능 상태로의 진입에 대한 요구에 응답하여,
    상기 DRAM 메모리 채널을 재활성화하고,
    상기 캐시 라인들 중 PCMS 메모리로 이동한 캐시 라인들을 상기 DRAM 메모리 채널로 이동하는 것을 수행하는 단계
    를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  4. 제1항에 있어서, 상기 캐시 라인들에 대한 가상 대 물리 어드레스 변환들(virtual to physical address translations)을 업데이트하는 단계를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  5. 제4항에 있어서, 상기 가상 대 물리 어드레스 변환들은 상기 다른 DRAM 메모리 채널들의 저장 공간에 저장되는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  6. 제5항에 있어서, 변환 색인 버퍼(translation look aside buffer)에서 찾은 상기 캐시 라인들에 대한 임의의 가상 대 물리 어드레스 변환들을 무효화(invalidating)하는 단계를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  7. 소프트웨어 프로그램의 가상 어드레스들의 사용을 추적하는 단계; 및
    성능 레벨이 현재의 성능 상태보다 낮은, 더 낮은 성능 상태로의 진입에 대한 요구에 응답하여,
    상기 소프트웨어 프로그램의 덜 사용되는 가상 어드레스들과 연관된 캐시 라인들을 DRAM 메모리 채널들로부터 판독하고,
    상기 캐시 라인들을 PCMS 메모리에 기입하고,
    상기 DRAM 메모리 채널들 중 하나의 DRAM 메모리 채널의 더 빈번히 사용되는 가상 어드레스들과 연관된 캐시 라인들을 다른 나머지 하나 이상의 DRAM 채널들의 위치들에 기입하고 - 상기 위치들은 PCMS 메모리에 기입된 상기 캐시 라인들 중 적어도 일부를 미리 저장함 -,
    상기 하나의 DRAM 메모리 채널을 셧다운하는 것을 수행하는 단계
    를 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  8. 제7항에 있어서, PCMS 메모리에 기입되는 상기 캐시 라인들은 DRAM 저장 공간으로부터 이동하는 캐시 라인들의 저장을 위해 미리 리저브된 상기 PCMS 메모리의 저장 공간에 기입되는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  9. 제8항에 있어서, 성능 레벨이 현재의 성능 상태보다 높은, 더 높은 성능 상태로의 진입에 대한 요구에 응답하여,
    상기 하나의 DRAM 메모리 채널을 재활성화하고,
    PCMS 메모리에 기입된 상기 캐시 라인들을 상기 DRAM 메모리 채널로 이동하는 것을 수행하는 단계
    를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  10. 제7항에 있어서, 덜 사용되는 가상 어드레스들과 연관된 상기 캐시 라인들 및 더 빈번히 사용되는 가상 어드레스들과 연관된 상기 캐시 라인들에 대하여 가상 대 물리 어드레스 변환들을 업데이트하는 단계를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  11. 제10항에 있어서, 덜 사용되는 가상 어드레스들과 연관된 상기 캐시 라인들 및 더 빈번히 사용되는 가상 어드레스들과 연관된 상기 캐시 라인들에 대하여 변환 색인 버퍼에서 찾은 임의의 가상 대 물리 어드레스 변환들을 무효화하는 단계를 더 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  12. 전력 레벨이 현재의 전력 상태보다 낮은, 더 낮은 전력 상태로 진입할 것을 결정하는 단계; 및
    그에 응답하여 컴퓨터 시스템 내의 메모리 채널을 셧다운하고 그 후 상기 컴퓨터 시스템 내의 다른 메모리 채널들이 활성 상태로 유지되어 상기 메모리 채널이 셧다운되는 동안 컴퓨터를 동작가능하게 유지하는 단계
    를 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  13. 제12항에 있어서, 메모리 전력 상태 표의 전력 노드 구조를 변경하여 상기 메모리 채널을 셧다운하는 단계를 더 포함하고, 상기 전력 노드 구조는 상기 메모리 채널을 나타내는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  14. 제13항에 있어서, 상기 전력 노드 구조는 상기 메모리 채널에 저장되는 대응하는 캐시 라인들의 가상 어드레스들의 범위를 식별하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  15. 제14항에 있어서, 상기 전력 노드 구조의 다수의 인스턴스(instance)가 상기 메모리 채널을 나타내기 위하여 생성되고, 각각의 고유 인스턴스는 상기 메모리 채널에 저장되는 대응하는 캐시 라인들의 상이한 가상 어드레스 세트를 갖는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  16. 제13항에 있어서, 상기 전력 노드 구조는 상기 메모리 채널의 현재 전력 상태를 나타내는 필드를 갖는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  17. 제13항에 있어서, 상기 메모리 전력 상태 표는 다수의 각각의 메모리 채널을 나타내는 다수의 전력 노드 구조를 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  18. 제17항에 있어서, 상기 메모리 전력 상태 표는 상기 다수의 각각의 메모리 채널의 상이한 전력 상태들의 특성들을 포함하는, 컴퓨팅 시스템의 전력 소비를 제어하기 위한 방법.
  19. 컴퓨터 시스템의 중앙 처리 장치에 의해 프로세싱될 때, 방법을 수행하도록 하는 프로그램 코드를 포함하는 머신 판독가능 매체로서,
    상기 방법은,
    성능 레벨이 현재의 성능 상태보다 낮은, 더 낮은 성능 상태로의 진입에 대한 요구에 응답하여,
    DRAM 메모리 채널 상에 저장된 캐시 라인들을 다른 DRAM 메모리 채널들 및 PCMS 메모리로 이동하고 - 상기 캐시 라인들 중 더 빈번히 사용되는 가상 어드레스들과 연관된 캐시 라인들은 상기 다른 DRAM 메모리 채널들로 이동하고, 상기 캐시 라인들 중 덜 빈번히 사용되는 가상 어드레스들과 연관된 캐시 라인들은 상기 PCMS 메모리로 이동함 -,
    상기 DRAM 메모리 채널을 셧다운하는 것을 수행하는 단계
    를 포함하는 머신 판독가능 매체.
  20. 제19항에 있어서, PCMS 메모리로 이동한 상기 캐시 라인들은, DRAM 메모리 채널 셧다운 동작에 응답하여 DRAM 저장장치로부터 이동하는 캐시 라인들을 위해 상기 PCMS 메모리에 미리 리저브된 저장 공간으로 이동하는 머신 판독가능 매체.
  21. 제20항에 있어서, 상기 방법은,
    성능 레벨이 현재의 성능 상태보다 높은, 더 높은 성능 상태로의 진입에 대한 요구에 응답하여,
    상기 DRAM 메모리 채널을 재활성화하고,
    상기 캐시 라인들 중 PCMS 메모리로 이동한 캐시 라인들을 상기 DRAM 메모리 채널로 이동하는 것을 수행하는 단계
    를 더 포함하는 머신 판독가능 매체.
  22. 제19항에 있어서, 상기 방법은 상기 캐시 라인들에 대한 가상 대 물리 어드레스 변환들을 업데이트하는 단계를 더 포함하는 머신 판독가능 매체.
  23. 제22항에 있어서, 상기 가상 대 물리 어드레스 변환들은 상기 다른 DRAM 메모리 채널들의 저장 공간에 저장되는 머신 판독가능 매체.
  24. 제23항에 있어서, 상기 방법은 변환 색인 버퍼에서 찾은 상기 캐시 라인들에 대한 임의의 가상 대 물리 어드레스 변환들을 무효화하는 단계를 더 포함하는 머신 판독가능 매체.
  25. 컴퓨터 시스템의 중앙 처리 장치에 의해 프로세싱될 때, 방법이 수행되도록 하는 프로그램 코드를 포함하는 머신 판독가능 매체로서,
    상기 방법은,
    전력 레벨이 현재의 전력 상태보다 낮은, 더 낮은 전력 상태로 진입할 것을 결정하는 단계; 및
    메모리 전력 상태 표의 전력 노드 구조를 변경하여 컴퓨터 시스템 내의 메모리 채널을 셧다운하는 단계
    를 포함하는 머신 판독가능 매체.
  26. 제25항에 있어서, 상기 전력 노드 구조는 상기 메모리 채널을 나타내는 머신 판독가능 매체.
  27. 제26항에 있어서, 상기 전력 노드 구조는 상기 메모리 채널에 저장되는 대응하는 캐시 라인들의 가상 어드레스들의 범위를 식별하는 머신 판독가능 매체.
  28. 제27항에 있어서, 상기 전력 노드 구조의 다수의 인스턴스가 상기 메모리 채널을 나타내기 위하여 생성되고, 각각의 고유 인스턴스는 상기 메모리 채널에 저장되는 대응하는 캐시 라인들의 상이한 가상 어드레스 세트를 갖는 머신 판독가능 매체.
KR1020147017930A 2011-12-22 2011-12-22 메모리 채널 셧다운에 의한 전력 절약 KR101572403B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067007 WO2013095559A1 (en) 2011-12-22 2011-12-22 Power conservation by way of memory channel shutdown

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020157033114A Division KR101761044B1 (ko) 2011-12-22 2011-12-22 메모리 채널 셧다운에 의한 전력 절약

Publications (2)

Publication Number Publication Date
KR20140098221A KR20140098221A (ko) 2014-08-07
KR101572403B1 true KR101572403B1 (ko) 2015-11-26

Family

ID=48669200

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157033114A KR101761044B1 (ko) 2011-12-22 2011-12-22 메모리 채널 셧다운에 의한 전력 절약
KR1020147017930A KR101572403B1 (ko) 2011-12-22 2011-12-22 메모리 채널 셧다운에 의한 전력 절약

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020157033114A KR101761044B1 (ko) 2011-12-22 2011-12-22 메모리 채널 셧다운에 의한 전력 절약

Country Status (8)

Country Link
US (2) US9612649B2 (ko)
KR (2) KR101761044B1 (ko)
CN (1) CN104115132B (ko)
BR (1) BR112014015441B1 (ko)
DE (1) DE112011106032B4 (ko)
GB (1) GB2513748B (ko)
TW (1) TWI614752B (ko)
WO (1) WO2013095559A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8597360B2 (en) 2004-11-03 2013-12-03 Neuropro Technologies, Inc. Bone fusion device
WO2013023098A1 (en) 2011-08-09 2013-02-14 Neuropro Spinal Jaxx Inc. Bone fusion device, apparatus and method
WO2013101201A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Home agent multi-level nvm memory architecture
US9532883B2 (en) 2012-04-13 2017-01-03 Neuropro Technologies, Inc. Bone fusion device
EP2967659B1 (en) 2013-03-15 2021-03-03 Neuropro Technologies, Inc. Bodiless bone fusion device
JP6431536B2 (ja) * 2013-10-21 2018-11-28 マーベル インターナショナル リミテッド 最終レベルキャッシュシステム及び対応する方法
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same
US9389675B2 (en) * 2013-12-19 2016-07-12 International Business Machines Corporation Power management for in-memory computer systems
CN105531682A (zh) 2014-08-15 2016-04-27 联发科技股份有限公司 管理多通道存储设备以具有改进的通道切换响应时间的方法及相关的存储控制系统
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
US9658793B2 (en) 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault
KR102314138B1 (ko) * 2015-03-05 2021-10-18 삼성전자 주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법
US10127406B2 (en) * 2015-03-23 2018-11-13 Intel Corporation Digital rights management playback glitch avoidance
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
CN105117285B (zh) * 2015-09-09 2019-03-19 重庆大学 一种基于移动虚拟化系统的非易失性存储器调度优化方法
US9990283B2 (en) * 2015-10-16 2018-06-05 SK Hynix Inc. Memory system
US9977605B2 (en) * 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
US9990143B2 (en) * 2015-10-16 2018-06-05 SK Hynix Inc. Memory system
US9977606B2 (en) * 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
US9977604B2 (en) * 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
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
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10698732B2 (en) 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US11977484B2 (en) 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10452539B2 (en) * 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10729560B2 (en) 2017-01-18 2020-08-04 Neuropro Technologies, Inc. Bone fusion system, device and method including an insertion instrument
US10111760B2 (en) 2017-01-18 2018-10-30 Neuropro Technologies, Inc. Bone fusion system, device and method including a measuring mechanism
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
US11216203B2 (en) 2017-09-27 2022-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Method and reallocation component for managing reallocation of information from source to target memory sled
CN108632152A (zh) * 2018-03-30 2018-10-09 上海康斐信息技术有限公司 一种无线路由器及快速启动的方法
EP4345635A3 (en) 2018-06-18 2024-05-29 FLC Technology Group Inc. Method and apparatus for using a storage system as main memory
US11163680B2 (en) 2018-11-28 2021-11-02 International Business Machines Corporation Dynamic write-back to non-volatile memory
US10642734B1 (en) 2018-12-03 2020-05-05 Advanced Micro Devices, Inc. Non-power of two memory configuration
US11307779B2 (en) * 2019-09-11 2022-04-19 Ceremorphic, Inc. System and method for flash and RAM allocation for reduced power consumption in a processor
US20220188208A1 (en) * 2020-12-10 2022-06-16 Advanced Micro Devices, Inc. Methods for configuring span of control under varying temperature
US11721379B2 (en) * 2021-06-17 2023-08-08 Micron Technology, Inc. Cell disturb on power state transition
CN113886291B (zh) * 2021-08-29 2023-08-18 苏州浪潮智能科技有限公司 一种路径的禁用方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100162020A1 (en) 2008-12-22 2010-06-24 International Business Machines Corporation Power Management of a Spare DRAM on a Buffered DIMM by Issuing a Power On/Off Command to the DRAM Device

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US122011A (en) * 1871-12-19 Improvement in keepers for door-latches
US22008A (en) * 1858-11-09 Hoisting-machine
US711129A (en) * 1901-11-18 1902-10-14 Robert Shedenhelm Animal-shears.
US711207A (en) * 1901-12-14 1902-10-14 Martin V Grogan Circular handsaw.
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6917999B2 (en) 2001-06-29 2005-07-12 Intel Corporation Platform and method for initializing components within hot-plugged nodes
US7000102B2 (en) 2001-06-29 2006-02-14 Intel Corporation Platform and method for supporting hibernate operations
US6732241B2 (en) * 2001-09-07 2004-05-04 Hewlett-Packard Development Company, L.P. Technique for migrating data between storage devices for reduced power consumption
US7493438B2 (en) 2001-10-03 2009-02-17 Intel Corporation Apparatus and method for enumeration of processors during hot-plug of a compute node
US7673090B2 (en) 2001-12-19 2010-03-02 Intel Corporation Hot plug interface control method and apparatus
US7117311B1 (en) 2001-12-19 2006-10-03 Intel Corporation Hot plug cache coherent interface method and apparatus
US7003658B2 (en) 2002-02-21 2006-02-21 Inventec Corporation Method for user setup of memory throttling register in north bridge via BIOS to save power
US20040028066A1 (en) * 2002-08-06 2004-02-12 Chris Quanbeck Receiver architectures with dynamic symbol memory allocation and methods therefor
TW200410255A (en) 2002-12-10 2004-06-16 Comax Semiconductor Inc A memory device with power-saving mode and an electrics device with the memory device
US7350087B2 (en) 2003-03-31 2008-03-25 Intel Corporation System and method of message-based power management
TW564991U (en) * 2003-04-25 2003-12-01 Sunplus Technology Co Ltd Power-saving static memory control circuit
US7376775B2 (en) 2003-12-29 2008-05-20 Intel Corporation Apparatus, system, and method to enable transparent memory hot plug/remove
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
US8046488B2 (en) * 2004-05-21 2011-10-25 Intel Corporation Dynamically modulating link width
US7337368B2 (en) 2004-06-07 2008-02-26 Dell Products L.P. System and method for shutdown memory testing
US7480808B2 (en) * 2004-07-16 2009-01-20 Ati Technologies Ulc Method and apparatus for managing power consumption relating to a differential serial communication link
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7246224B2 (en) 2004-09-27 2007-07-17 Intel Corporation System and method to enable platform personality migration
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US8010764B2 (en) * 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
TWM286985U (en) 2005-08-22 2006-02-01 Regulus Technologies Co Ltd Memory module with smart-type power-saving and fault-tolerance
US7376037B1 (en) 2005-09-26 2008-05-20 Lattice Semiconductor Corporation Programmable logic device with power-saving architecture
US8145732B2 (en) 2005-11-21 2012-03-27 Intel Corporation Live network configuration within a link based computing system
US7496742B2 (en) * 2006-02-07 2009-02-24 Dell Products L.P. Method and system of supporting multi-plugging in X8 and X16 PCI express slots
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
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
JP4209906B2 (ja) * 2006-08-02 2009-01-14 株式会社日立製作所 低消費電力メモリ管理方法及びその方法を用いた計算機
US8051253B2 (en) 2006-09-28 2011-11-01 Virident Systems, Inc. Systems and apparatus with programmable memory control for heterogeneous main memory
US7818489B2 (en) * 2006-11-04 2010-10-19 Virident Systems Inc. Integrating data from symmetric and asymmetric memory
US8344475B2 (en) * 2006-11-29 2013-01-01 Rambus Inc. Integrated circuit heating to effect in-situ annealing
US7908501B2 (en) 2007-03-23 2011-03-15 Silicon Image, Inc. Progressive power control of a multi-port memory device
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
US8347005B2 (en) * 2007-07-31 2013-01-01 Hewlett-Packard Development Company, L.P. Memory controller with multi-protocol interface
JP2009211153A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリ装置、情報処理装置及び電力制御方法
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8161304B2 (en) * 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
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
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
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
KR20100133710A (ko) * 2009-06-12 2010-12-22 삼성전자주식회사 메모리 시스템 및 그것의 코드 데이터 로딩 방법
US20110047316A1 (en) * 2009-08-19 2011-02-24 Dell Products L.P. Solid state memory device power optimization
US8578138B2 (en) 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US9041720B2 (en) * 2009-12-18 2015-05-26 Advanced Micro Devices, Inc. Static image retiling and power management method and circuit
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system
US20110161592A1 (en) 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
US8621255B2 (en) * 2010-02-18 2013-12-31 Broadcom Corporation System and method for loop timing update of energy efficient physical layer devices using subset communication techniques
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
US9015441B2 (en) * 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US9032398B2 (en) * 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
JP2012027655A (ja) * 2010-07-22 2012-02-09 Hitachi Ltd 情報処理装置および省電力メモリ管理方法
US8762760B2 (en) * 2010-09-14 2014-06-24 Xilinx, Inc. Method and apparatus for adaptive power control in a multi-lane communication channel
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
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
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
US8671309B2 (en) 2011-07-01 2014-03-11 Intel Corporation Mechanism for advanced server machine check recovery and associated system software enhancements
EP2761467B1 (en) * 2011-09-30 2019-10-23 Intel Corporation Generation of far memory access signals based on usage statistic tracking
CN103946816B (zh) * 2011-09-30 2018-06-26 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
EP2761464B1 (en) 2011-09-30 2018-10-24 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
WO2013048485A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
EP2761476B1 (en) * 2011-09-30 2017-10-25 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US20130275661A1 (en) 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
EP3712774B1 (en) * 2011-09-30 2023-02-15 Tahoe Research, Ltd. Apparatus and method for implementing a multi-level memory hierarchy
EP2761471B1 (en) 2011-09-30 2017-10-25 Intel Corporation Statistical wear leveling for non-volatile system memory
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
WO2013089685A1 (en) * 2011-12-13 2013-06-20 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
US9336147B2 (en) * 2012-06-12 2016-05-10 Microsoft Technology Licensing, Llc Cache and memory allocation for virtual machines
US9811276B1 (en) * 2015-09-24 2017-11-07 EMC IP Holding Company LLC Archiving memory in memory centric architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100162020A1 (en) 2008-12-22 2010-06-24 International Business Machines Corporation Power Management of a Spare DRAM on a Buffered DIMM by Issuing a Power On/Off Command to the DRAM Device

Also Published As

Publication number Publication date
DE112011106032T5 (de) 2014-12-04
WO2013095559A1 (en) 2013-06-27
BR112014015441B1 (pt) 2021-05-25
KR20150138404A (ko) 2015-12-09
KR101761044B1 (ko) 2017-07-24
US9612649B2 (en) 2017-04-04
US20170206010A1 (en) 2017-07-20
US20140143577A1 (en) 2014-05-22
US10521003B2 (en) 2019-12-31
TWI614752B (zh) 2018-02-11
DE112011106032B4 (de) 2022-06-15
BR112014015441A8 (pt) 2017-07-04
GB201411390D0 (en) 2014-08-13
GB2513748B (en) 2020-08-19
TW201331941A (zh) 2013-08-01
GB2513748A (en) 2014-11-05
CN104115132A (zh) 2014-10-22
CN104115132B (zh) 2018-02-06
BR112014015441A2 (pt) 2017-06-13
KR20140098221A (ko) 2014-08-07

Similar Documents

Publication Publication Date Title
KR101572403B1 (ko) 메모리 채널 셧다운에 의한 전력 절약
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
US9817758B2 (en) Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9286205B2 (en) Apparatus and method for phase change memory drift management
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US10795823B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US9269438B2 (en) System and method for intelligently flushing data from a processor into a memory subsystem
US20140229659A1 (en) Thin translation for system access of non volatile semicondcutor storage as random access memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee