KR20140098220A - 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 - Google Patents

프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20140098220A
KR20140098220A KR1020147017885A KR20147017885A KR20140098220A KR 20140098220 A KR20140098220 A KR 20140098220A KR 1020147017885 A KR1020147017885 A KR 1020147017885A KR 20147017885 A KR20147017885 A KR 20147017885A KR 20140098220 A KR20140098220 A KR 20140098220A
Authority
KR
South Korea
Prior art keywords
memory
pcm
data
flush
controller
Prior art date
Application number
KR1020147017885A
Other languages
English (en)
Other versions
KR101636634B1 (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 KR20140098220A publication Critical patent/KR20140098220A/ko
Application granted granted Critical
Publication of KR101636634B1 publication Critical patent/KR101636634B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • G11C14/009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
    • GPHYSICS
    • G06COMPUTING; CALCULATING 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/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/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/02Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells

Abstract

프로세서 캐시로부터 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법이 기술된다. 예를 들어, 본 발명의 일 실시예에 따른 시스템은: 데이터가 플러싱되는 캐시를 가진 프로세서 - 데이터는 특정 시스템 어드레스 범위와 연관됨 - ; 및 특정 시스템 어드레스 범위에 대응하는 PCM 메모리 장치에 저장된 데이터에 대한 액세스를 관리하기 위한 PCM 메모리 제어기를 포함하고, 프로세서는 메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 결정하며, 메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되면, 프로세서는 PCM 메모리 장치의 PCM 메모리 제어기에 메모리 플러시 힌트를 송신하고, PCM 메모리 제어기는 메모리 플러시 힌트를 사용해서 플러싱된 데이터를 PCM 메모리 장치에 세이브할 지를 결정한다

Description

프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR INTELLIGENTLY FLUSHING DATA FROM A PROCESSOR INTO A MEMORY SUBSYSTEM}
본 발명은 일반적으로 컴퓨터 시스템들의 분야에 관한 것이다. 특히, 본 발명은 멀티-레벨 메모리 계층을 구현하기 위한 장치 및 방법에 관한 것이다.
A. 현재 메모리 및 기억 장치 구성들
요즘 컴퓨터 혁신을 위한 한계 요인들 중 하나는 메모리 및 기억 장치 기술이다. 종래의 컴퓨터 시스템들에서, 시스템 메모리(메인 메모리, 주 메모리, 실행 가능 메모리라고도 공지됨)는 통상 동적 랜덤 액세스 메모리(DRAM)로 구현된다. 내부 커패시터들을 끊임없이 충전해야만 하기 때문에, 메모리 판독 또는 기입이 발생하지 않더라도, DRAM-기반 메모리는 전력을 소비한다. DRAM-기반 메모리는 휘발성이며, 이는, 전력이 제거되면, DRAM 메모리에 저장된 데이터가 손실됨을 의미한다. 종래의 컴퓨터 시스템들은 또한 성능을 향상시키기 위해 다수의 캐싱 레벨들에 의존한다. 캐시는 시스템 메모리로부터 서비스받을 수 있는 것보다 더 빠르게 메모리 액세스 요청들을 서비스하도록 프로세서 및 시스템 메모리 사이에 배치된 고속 메모리이다. 이 캐시들은 통상 정적 랜덤 액세스 메모리(SRAM)로 구현된다. 캐시 관리 프로토콜들은 가장 빈번하게 액세스된 데이터 및 명령어들이 캐시의 레벨들 중 하나에 저장됨을 보장하는데 사용될 수 있어서, 메모리 액세스 트랜잭션들의 수를 감소시키고 성능을 향상시킨다.
대용량 기억 장치(보조 기억 장치 또는 디스크 기억 장치라고도 공지됨)에 대하여, 종래의 대용량 기억 장치들은 자기 매체(예를 들어, 하드 디스크 드라이브들), 광 매체(예를 들어, 콤팩트 디스크(CD) 드라이브, 디지털 다기능 디스크(DVD) 등), 홀로그램 매체 및/또는 대용량 기억 장치 플래시 메모리(예를 들어, 고체 상태 드라이브들(SSD), 분리형 플래시 드라이브들 등)를 통상 포함한다. 일반적으로, 이 기억 장치들은, 각종 I/O 프로토콜들을 구현하는 각종 I/O 어댑터들을 통해 프로세서에 의해 액세스되기 때문에, 입력/출력(I/O) 장치들이라고 생각된다. 이 I/O 어댑터들 및 I/O 프로토콜들은 상당한 양의 전력을 소비하고, 다이 면적 및 플랫폼의 형태 인자에 상당한 영향을 끼칠 수 있다. 영구 전원에 연결되지 않을 때 제한된 배터리 수명을 가진 휴대형 또는 이동 장치들(예를 들어, 랩탑, 넷북, 태블릿 컴퓨터, 개인 휴대 정보 단말기(PDA), 휴대형 미디어 플레이어, 휴대형 게임 장치, 디지털 카메라, 이동 전화, 스마트폰, 피쳐폰(feature phone) 등)은 활동 및 유휴 전력 예측들을 만족시키기 위해 저전력 인터커넥트들 및 I/O 제어기들을 통해 프로세서에 통상 연결된 분리형 대용량 기억 장치들(예를 들어, 내장 멀티미디어 카드(eMMC), 보안 디지털(SD) 카드)을 포함할 수 있다.
펌웨어 메모리(예를 들어, 부팅 메모리(BIOS 플래시라고도 공지됨))에 대하여, 종래의 컴퓨터 시스템은 종종 판독되지만 거의(또는 결코) 기입되지 않는 지속적 시스템 정보를 저장하기 위해 플래시 메모리 장치들을 통상 사용한다. 예를 들어, 부팅 프로세스(기본 입력 및 출력 시스템(BIOS) 이미지들) 중에 주요 시스템 컴포넌트들을 초기화하기 위해 프로세서에 의해 실행되는 초기 명령어들은 플래시 메모리 장치에 통상 저장된다. 현재 시장에서 구입될 수 있는 플래시 메모리 장치들은 일반적으로 제한된 속도(예를 들어, 50 ㎒)를 가진다. 이 속도는 판독 프로토콜들의 오버헤드에 의해 더 감소된다(예를 들어, 2.5 ㎒). BIOS 실행 속도를 빠르게 하기 위해, 종래의 프로세서들은 부팅 프로세스의 PEI(Pre-Extensible Firmware Interface) 단계 중에 BIOS 코드의 일부분을 일반적으로 캐싱한다. 프로세서 캐시의 크기는 PEI 단계에서 사용되는 BIOS 코드("PEI BIOS 코드"라고도 공지됨)의 크기를 제한한다.
B. 상변화 메모리( PCM ) 및 관련 기술들
때때로 상변화 랜덤 액세스 메모리(PRAM 또는 PCRAM), PCME, 오보닉 통합 메모리(Ovonic Unified Memory) 또는 칼코게나이드 RAM(C-RAM)이라고도 하는 상변화 메모리(PCM)는 칼코겐화 유리의 독특한 습성을 이용하는 비휘발성 컴퓨터 메모리의 한 타입이다. 전기 전류의 전달에 의해 생산되는 열의 결과로서, 칼코겐화 유리는 2개의 상태들: 결정질 및 비결정질 사이에서 전환될 수 있다. PCM의 최근 버전들은 2개의 추가의 별개의 상태들을 달성할 수 있다.
PCM의 메모리 요소가 더 신속하게 전환될 수 있고, 기입(개별 비트들을 1 또는 0으로 변경)이 셀들의 전체 블록을 먼저 소거할 필요 없이 실행될 수 있으며, 기입들로부터의 저하(degradation)는 더 느리기 때문에, PCM은 플래시보다 더 높은 성능을 제공한다(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 시스템 아키텍처를 도시한다.
도 5a는 휘발성 근거리 메모리(volatile near memory) 및 비휘발성 원거리 메모리(non-volatile far memory)를 포함하는 시스템 아키텍처의 일 실시예를 도시한다.
도 5b는 메모리 사이드 캐시(MSC)의 일 실시예를 도시한다.
도 5c는 통합 태그 캐시 및 ECC 생성/검사 로직을 포함하는 메모리 사이드 캐시(MSC)의 다른 실시예를 도시한다.
도 5d는 일례의 태그 캐시 및 ECC 생성자/검사 유닛의 일 실시예를 도시한다.
도 5e는 PCM 제어기를 포함하는 PCM DIMM의 일 실시예를 도시한다.
도 6a는 본 발명의 일 실시예에 따른 특정 지정 시스템 물리 어드레스(SPA) 범위에 전용인 MCE 제어기들 및 캐시들을 도시한다.
도 6b는 본 발명의 일 실시예에 따른 시스템 메모리 맵, 근거리 메모리 어드레스 맵 및 PCM 어드레스 맵 간의 일례의 매핑을 도시한다.
도 6c는 본 발명의 일 실시예에 따른 시스템 물리 어드레스(SPA) 및 PCM 물리 장치 어드레스(PDA) 또는 근거리 메모리 어드레스(NMA) 간의 일례의 매핑을 도시한다.
도 6d는 본 발명의 일 실시예에 따른 시스템 물리 어드레스(SPA) 공간 및 메모리 채널 어드레스(MCA) 공간 내의 메모리 페이지들 간의 인터리빙을 도시한다.
도 7은 본 발명의 실시예들이 구현될 수 있는 일례의 멀티-프로세서 아키텍처를 도시한다.
도 8은 본 발명의 일부 실시예들에 따른 시스템 메모리 맵을 도시한다.
도 9는 플러시 힌트 데이터를 포함하는 메모리 범위 레지스터(MRR)의 일 실시예를 도시한다.
도 10은 PCMS 메모리 제어기의 일 실시예를 도시한다.
도 11은 PCMS 장치로 데이터를 지능적으로 플러싱하기 위한 방법의 일 실시예를 도시한다.
도 12는 본 발명의 일 실시예에 따른 한 방법을 도시한다.
이하의 설명에서, 논리 구현들, 연산 코드들 등의 다수의 특정 세부 사항들은 본 발명의 더 철저한 이해를 제공하기 위해 피연산자들, 리소스 분할/공유/복제 구현들, 시스템 컴포넌트들의 타입들 및 상호 관계들 및 논리 분할/통합 선택 사항들을 명시함을 의미한다. 그러나, 본 발명이 이러한 특정 세부 사항들 없이 실시될 수 있음을 당업자는 알 것이다. 다른 실례들에서, 제어 구조들, 게이트 레벨 회로들 및 풀 소프트웨어 명령어 시퀀스들은 본 발명을 모호하게 하지 않기 위해 상세히 도시되지 않았다. 포함된 설명들로, 당업자는 과도한 실험 없이 적합한 기능을 구현할 수 있을 것이다.
본 명세서에서 "one embodiment(일 실시예)", "an embodiment(일 실시예)", "an example embodiment(일례의 실시예)" 등의 언급은, 기술된 실시예가 특정 특징, 구조 또는 특성을 포함할 수 있지만, 모든 실시예가 특정 특징, 구조 또는 특성을 반드시 포함하지는 않을 수 있음을 나타낸다. 더욱이, 이러한 구절들은 반드시 동일한 실시예를 나타내는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 일 실시예와 관련하여 기술될 때, 명확하게 기술되든 아니든 간에 이러한 특징, 구조 또는 특성을 다른 실시예들과 관련하여 달성하는 것을 당업자가 알고 있다고 제기된다.
이하의 설명 및 청구항들에서, 그 파생어들과 함께, 용어들 "coupled(연결된)" 및 "connected(접속된)"이 사용될 수 있다. 이 용어들은 서로 동의어들로서 의도된 것이 아님을 알아야만 한다. "coupled(연결된)"은 서로 직접적으로 물리적 또는 전기적 접촉중일 수도 있고 아닐 수도 있는 2개의 또는 그 이상의 요소들이 서로 협력 또는 상호 작용함을 나타내는데 사용된다. "connected(접속된)"은 서로 연결된 2개의 또는 그 이상의 요소들 간의 통신의 설정을 나타내는데 사용된다.
대시 경계들(예를 들어, 큰 대시들, 작은 대시들, 점-대시 점들)을 가진 괄호로 묶은 텍스트 및 블록들은 본 발명의 실시예들에 추가 특징들을 추가하는 선택적인 동작들/컴포넌트들을 설명하기 위해 본 명세서에서 때때로 사용된다. 그러나, 이러한 표기법은 본 발명의 특정 실시예들에서 이들이 단지 옵션들 또는 선택적인 동작들/컴포넌트들이고/이거나, 실선 경계들을 가진 블록들이 선택적이 아님을 의미하는 것으로 이해되지 않아야 한다.
서론
메모리 용량 및 성능 요구 사항들은 점점 더 많은 수의 프로세서 코어들 및 가상화 등의 새로운 사용 모델들에 따라 계속해서 증가한다. 또한, 메모리 전력 및 비용은, 각각, 전자 시스템들의 총 전력 및 비용의 중대한 요소가 되어 왔다.
본 발명의 일부 실시예들은 메모리 기술들 간의 성능 요구 사항 및 용량 요구 사항을 지능적으로 더 분할함으로써 상기 도전 사항들을 해결한다. 이 방식의 초점은 상당히 더 싸고 더 밀집한 비휘발성 랜덤 액세스 메모리(NVRAM)를 사용해서 대량의 시스템 메모리를 구현하면서 DRAM 등의 비교적 적은 양의 비교적 더 고속의 메모리를 가진 성능을 제공하는데 있다. 후술되는 본 발명의 실시예들은 NVRAM 사용을 위한 계층적 메모리 서브시스템 조직들을 가능케 하는 플랫폼 구성들을 정의한다. 상세히 후술되는 바와 같이, 메모리 계층의 NVRAM의 사용은 또한 확장된 부팅 공간 및 대용량 기억 장치 구현들 등의 새로운 사용들을 가능케 한다.
도 1은 본 발명의 실시예들에 따른 캐시 및 시스템 메모리 배치를 도시한다. 특히, 도 1은 내부 프로세서 캐시들(120)의 집합, 내부 캐시(들)(106) 및 외부 캐시들(107-109) 둘 다를 포함할 수 있는, 원거리 메모리 캐시(121)로서 동작하는 "근거리 메모리" 및 "원거리 메모리"(122)를 포함하는 메모리 계층을 도시한다. 본 발명의 일부 실시예들에서 "원거리 메모리"로서 사용될 수 있는 한 특정 타입의 메모리는 비휘발성 랜덤 액세스 메모리("NVRAM")이다. NVRAM의 개요가 후술되며, 원거리 메모리 및 근거리 메모리의 개요가 이어진다.
A. 비휘발성 랜덤 액세스 메모리(" NVRAM ")
PCM, 상변화 메모리 및 스위치(PCMS)(PCMS는 PCM의 더 특정 구현임), 바이트-어드레싱가능 지속적 메모리(BPRAM), 유니버설 메모리, Ge2Sb2Te5, PMC(programmable metallization cell), RRAM(resistive memory), RESET (비정질) 셀, SET (결정질) 셀, PCME, 오브신스키 메모리, 강유전성 메모리(폴리머 메모리 및 폴리(N-비닐카르바졸)로도 공지됨), 강자성 메모리(스핀트로닉스, SPRAM(스핀-전달 토크 RAM)으로도 공지됨), STRAM(스핀 터널링 RAM), 자기 저항 메모리, 자기 메모리, 자기 랜덤 액세스 메모리(MRAM) 및 SONOS(Semiconductor-oxide-nitride-oxide-semiconductor)(유전체 메모리라고도 공지됨)을 포함하는, NVRAM을 위한 다수의 가능한 기술 선택 사항들이 존재한다.
본 명세서에 기술된 메모리 계층에서의 사용을 위해, NVRAM은 이하의 특성들을 가진다:
(1) 고체 상태 디스크들(SSD)에서 사용되는 FLASH 메모리와 유사하며, 휘발성인 SRAM 및 DRAM과 상이하게, 전력이 제거되더라도 콘텐츠를 유지하고;
(2) SRAM 및 DRAM 등의 휘발성 메모리들보다 유휴 상태일 때 전력 소비가 더 낮고;
(3) SRAM 및 DRAM과 랜덤 액세스가 유사하고(랜덤 어드레싱 가능으로도 공지됨);
(4) SSD들에서 발견된 FLASH 보다 더 낮은 레벨의 입상도(granularity)(예를 들어, 바이트 레벨)로 재기입 가능하고 소거 가능하고(한번에 한 "블록"만 재기입 및 소거될 수 있음 - NOR FLASH에 대해서는 최소 64 Kbyte 크기이고 NAND FLASH에 대해서는 최소 16 Kbyte임);
(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들에서 사용되는 FLASH 및 부팅 ROM 보다 더 많이) 실패 전에 몇 자리수(예를 들어, 2 또는 3) 더 높은 기입 내구성.
상술된 바와 같이, 한번에 하나의 완전한 "블록"이 재기입 및 소거되어야만 하는 FLASH 메모리와 대조적으로, 임의의 소정의 구현에서 NVRAM이 액세스되는 입상도의 레벨은 특정 메모리 제어기 및 특정 메모리 버스 또는 NVRAM이 연결되는 다른 타입의 버스에 좌우될 수 있다. 예를 들어, NVRAM이 시스템 메모리로서 사용되는 일부 구현들에서, 바이트의 입상도로 액세스되는 고유 능력에도 불구하고, 캐시 라인이 메모리 서브시스템이 메모리에 액세스하는 레벨이기 때문에, NVRAM은 캐시 라인(예를 들어, 64-바이트 또는 128-바이트 캐시 라인)의 입상도로 액세스될 수 있다. 따라서, NVRAM이 메모리 서브시스템 내에서 전개될 때, 동일한 메모리 서브시스템에서 사용되는 DRAM(예를 들어, "근거리 메모리")과 동일한 레벨의 입상도로 액세스될 수 있다. 그렇기는 하지만, 메모리 제어기 및 메모리 버스 또는 다른 타입의 버스에 의한 NVRAM로의 액세스의 입상도의 레벨은 플래시에 의해 사용되는 블록 크기 및 I/O 서브시스템의 제어기 및 버스의 액세스 크기의 레벨보다 더 작다.
특히 시스템 메모리 구현에서와 같이 상당한 수의 기입들이 발생할 수 있는 경우, NVRAM은 원거리 메모리 레벨의 기억 셀들이 다수의 기입 액세스들 후에 마모되기 시작한다는 사실을 고려하기 위해 마모 레벨링 알고리즘들(wear leveling algorithms)을 또한 내장할 수 있다. 고 주기 카운트 블록들이 이러한 방식으로 마모될 가능성이 가장 크기에, 마모 레벨링은 고 주기 카운트 블록들의 어드레스들을 저 주기 카운트 블록들로 교환(swap)함으로써 원거리 메모리 셀들에 걸쳐 기입들을 확산시킨다. 대부분의 어드레스 교환이 통상 응용 프로그램들에게 명백한데, 그 이유는, 그것이 하드웨어, 더 낮은 레벨의 소프트웨어(예를 들어, 저 레벨 드라이버 또는 운영 체제) 또는 이 둘의 조합에 의해 처리되기 때문임을 주지하라.
B. 원거리 메모리
본 발명의 일부 실시예들의 원거리 메모리(122)는 NVRAM으로 구현되지만, 임의의 특정 메모리 기술로 반드시 제한되지는 않는다. 원거리 메모리(122)는 메모리/기억 장치 계층의 특성들 및/또는 응용이라는 면에서 다른 명령어 및 데이터 메모리/기억 장치 기술들과 구별된다. 예를 들어, 원거리 메모리(122)는 이하와 상이하다:
1) 각각, 프로세서 코어들(101-104)의 각각에 전용인 레벨 0 및 레벨 1 내부 프로세서 캐시들(101a-b, 102a-b, 103a-b, 103a-b 및 104a-b) 및 프로세서 코어들에 의해 공유된 더 낮은 레벨의 캐시(LLC)(105)용으로 사용될 수 있는 정적 랜덤 액세스 메모리(SRAM);
2) 프로세서(100)의 내부에 있는(예를 들어, 프로세서(100)와 동일한 다이에 있는) 캐시(106)로서 구성되고/되거나, 프로세서 외부에 있는(예를 들어, 프로세서(100)와 동일한 또는 상이한 패키지에 있는) 하나 이상의 캐시들(107-109)로서 구성된 동적 랜덤 액세스 메모리(DRAM); 및
3) 대용량 기억 장치(도시되지 않음)로서 적용된 FLASH 메모리/자기 디스크/광 디스크; 및
4) 펌웨어 메모리(부팅 ROM, BIOS 플래시 및/또는 TPM 플래시라고 할 수 있음)(도시되지 않음)로서 적용된 FLASH 메모리 또는 다른 판독 전용 메모리(ROM) 등의 메모리.
원거리 메모리(122)는 프로세서(100)에 의해 직접 어드레싱 가능한 명령어 및 데이터 기억 장치로서 사용될 수 있고, 대용량 기억 장치로서 적용된 FLASH/자기 디스크/광 디스크와 대조적으로 프로세서(100)와 충분히 보조를 맞출 수 있다. 더욱이, 상술되고 더 상세히 후술되는 바와 같이, 원거리 메모리(122)는 메모리 버스에 배치될 수 있고, 메모리 제어기와 직접 통신할 수 있으며, 결국, 프로세서(100)와 직접 통신한다.
원거리 메모리(122)는 하이브리드 메모리들(공존 PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)으로도 공지됨)을 형성하기 위해 다른 명령어 및 데이터 저장 기술들(예를 들어, DRAM)과 결합될 수 있다. PCM/PCMS를 포함하는 상술된 기술들 중 적어도 일부가 시스템 메모리 대신 또는 외에 대용량 기억 장치를 위해 사용될 수 있으며, 이러한 방식으로 적용될 때 프로세서에 의해 랜덤으로 액세스되거나, 바이트 어드레싱 가능하거나 또는 직접 어드레싱 가능할 필요가 없음을 주지하라.
설명의 편의성을 위해, 애플리케이션의 나머지의 대부분은 원거리 메모리(122)를 위한 기술 선택 사항으로서 "NVRAM" 또는 더 구체적으로 "PCM" 또는 "PCMS"와 관련될 것이다. 따라서, 용어들 NVRAM, PCM, PCMS 및 원거리 메모리는 이하의 설명에서 상호 교환되어 사용될 수 있다. 그러나, 상술된 바와 같이, 상이한 기술들이 또한 원거리 메모리를 위해 사용될 수 있음을 자각해야만 한다. 또한, NVRAM은 원거리 메모리로서의 사용에 제한되지 않는다.
C. 근거리 메모리
"근거리 메모리"(121)는 원거리 메모리에 대한 더 낮은 판독/기입 액세스 레이턴시 및/또는 더 대칭적인 판독/기입 액세스 레이턴시(즉, 기입 시간에 대략 동등한 판독 시간을 가짐)를 가진 원거리 메모리(122) 앞에 구성된 메모리의 중간 레벨이다. 일부 실시예들에서, 근거리 메모리(121)는 원거리 메모리(122)보다 상당히 더 낮은 기입 레이턴시를 가지지만 유사한(예를 들어, 약간 더 낮거나 또는 동일한) 판독 레이턴시를 갖는데; 예를 들어, 근거리 메모리(121)는 휘발성 랜덤 액세스 메모리(VRAM) 등의 휘발성 메모리일 수 있고, DRAM 또는 다른 고속 커패시터-기반 메모리를 포함할 수 있다. 그러나, 본 발명의 기본 원리들은 이러한 특정 메모리 타입들로 제한되지 않음을 주지하라. 또한, 근거리 메모리(121)는 원거리 메모리(122)보다 비교적 더 낮은 밀도를 가질 수 있고/있거나, 원거리 메모리(122)보다 제조 비용이 더 비쌀 수 있다.
일 실시예에서, 근거리 메모리(121)는 원거리 메모리(122) 및 내부 프로세서 캐시들(120) 사이에 구성된다. 후술되는 실시예들 중 일부 실시예들에서, 근거리 메모리(121)는, 예를 들어, 판독/기입 레이턴시 한계들 및 메모리 저하 한계들을 포함하는 원거리 메모리의 성능 및/또는 사용 한계들을 감추기 위해 하나 이상의 메모리-사이드 캐시들(MSC들)(107-109)로서 구성된다. 이러한 구현들에서, MSC(107-109) 및 원거리 메모리(122)의 조합은 시스템 메모리로서 DRAM만을 사용하는 시스템에 근사하거나, 동등하거나 또는 초과하는 성능 레벨로 동작한다. 상세히 후술되는 바와 같이, 도 1에서 "캐시"라고 도시되더라도, 근거리 메모리(121)는, 캐시의 역할을 실행하는 것 외에 또는 그 대신, 다른 역할들을 실행하는 모드들을 포함할 수 있다.
근거리 메모리(121)는 (예를 들어, 캐시(들)(106)처럼) 프로세서 다이에 위치하고/하거나, (예를 들어, 캐시들(107-109)처럼) 프로세서 다이 외부에 (예를 들어, CPU 패키지에 위치한 별개의 다이 위에, CPU 패키지에 대한 고 대역폭 링크를 가진 CPU 패키지 외부에 위치하거나, 예를 들어, 메모리 듀얼 인-라인 메모리 모듈(DIMM), 라이저/메자닌 또는 컴퓨터 마더보드 위에) 위치할 수 있다. 근거리 메모리(121)는 DDR 또는 다른 트랜잭션 고 대역폭 링크들(상세히 후술됨) 등의 단일 또는 다중 고 대역폭 링크들을 사용해서 프로세서(100)와 통신상 연결될 수 있다.
일례의 시스템 메모리 할당 방식
도 1은 본 발명의 실시예들에서 시스템 물리 어드레스(SPA) 공간(116-119)에 대하여 캐시들(101-109)의 각종 레벨들이 어떻게 구성되는 지를 도시한다. 언급된 바와 같이, 본 실시예는 하나 이상의 코어들(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 공간이 캐시들(107-109)(예를 들어, MSC들로서 구성될 때)에 의해 사용되는 어드레스 공간에 인터리빙되는 시스템들을 위해 사용될 수 있다. 일부 실시예들에서, 이 후자의 어드레스 공간은 메모리 채널 어드레스(MCA) 공간이라고 한다. 일 실시예에서, 내부 캐시들(101a-106)은 전체 SPA 공간에 대한 캐싱 동작들을 실행한다.
본 명세서에서 사용된 시스템 메모리는 프로세서(100)에서 실행되는 소프트웨어에 의해 가시적이고/이거나 직접 어드레싱 가능한 메모리인 한편; 시스템 어드레스 공간의 직접 어드레싱 가능한 부분을 형성하지 않는다는 점에서, 캐시 메모리들(101a-109)은 소프트웨어에 명백하게 동작할 수 있지만, 코어들은 소프트웨어가 캐시(들) 중 일부 또는 전부에 일부 제어(구성, 정책들, 힌트들 등)를 제공할 수 있게 하기 위한 명령어들의 실행을 또한 지원할 수 있다. 시스템 메모리의 영역들(116-119)로의 세분(subdivision)은 (예를 들어, 시스템 설계자에 의해) 시스템 구성 프로세스의 일부로서 수동으로 실행될 수 있고/있거나 소프트웨어에 의해 자동으로 실행될 수 있다.
일 실시예에서, 시스템 메모리 영역들(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) NVRAM(173)을 선택적으로 포함할 수 있는 펌웨어 메모리 레벨(153)을 포함하는 다수의 레벨들을 가진다.
나타난 바와 같이, 근거리 메모리(144)는: 원거리 메모리(FM(150B)를 위한 캐시로서의 근거리 메모리)를 위한 캐시로서 동작하는 제1 모드; 시스템 메모리(151A)로서 동작하고 SPA 공간의 일부분을 차지하는 제2 모드(때때로 근거리 메모리 "직접 액세스" 모드라고 함); 및 스크래치패드 메모리(192) 또는 기입 버퍼(193) 등의 하나 이상의 추가 동작 모드들을 포함하는 각종 상이한 모드들로 동작하도록 구현될 수 있다. 본 발명의 일부 실시예들에서, 근거리 메모리는 분할 가능하며, 각각의 분할은 지원된 모드들 중 상이한 모드로 동시에 동작할 수 있으며; 상이한 실시예들은 하드웨어(예를 들어, 퓨즈들, 핀들), 펌웨어 및/또는 소프트웨어(예를 들어, 각각의 모드 및 분할을 식별하기 위해 저장된 상이한 바이너리 코드들이 있을 수 있는 MSC 제어기(124) 내의 프로그래밍 가능 범위 레지스터들의 집합을 통해)에 의해 분할들의 구성(예를 들어, 크기들, 모드들)을 지원할 수 있다.
도 2의 시스템 어드레스 공간 A(190)는 근거리 메모리가 원거리 메모리(150B)를 위한 MSC로서 구성될 때의 동작을 설명하는데 사용된다. 본 구성에서, 시스템 어드레스 공간 A(190)는 전체 시스템 어드레스 공간을 나타낸다(또한, 시스템 어드레스 공간 B(191)는 존재하지 않음). 대안으로, 시스템 어드레스 공간 B(191)는 근거리 메모리의 전부 또는 일부가 시스템 어드레스 공간의 일부를 할당받을 때의 구현을 보여주는데 사용된다. 본 실시예에서, 시스템 어드레스 공간 B(191)는 근거리 메모리(151A)에 할당된 시스템 어드레스 공간의 범위를 나타내고, 시스템 어드레스 공간 A(190)는 NVRAM(174)에 할당된 시스템 어드레스 공간의 범위를 나타낸다.
또한, 원거리 메모리(150B)를 위한 캐시로서 동작할 때, 근거리 메모리(144)는 MSC 제어기(124)의 제어 하에서 각종 서브-모드들로 동작할 수 있다. 이 모드들 각각에서, 근거리 메모리 어드레스 공간(NMA)은 근거리 메모리가 시스템 어드레스 공간의 직접 어드레싱 가능한 부분을 형성하지 않는다는 점에서 소프트웨어에 명백하다. 이 모드들은 이하를 포함하지만 이하로 제한되지는 않는다:
(1) 후기입 캐싱 모드 ( Write - Back Caching Mode ): 이 모드에서, FM 캐시(150B)로서 동작하는 근거리 메모리의 전부 또는 일부분들은 NVRAM 원거리 메모리(FM)(151B)를 위한 캐시로서 사용된다. 후기입 모드에서, 모든 기입 동작은 처음에 FM(150B)을 위한 캐시로서의 근거리 메모리로 향한다(기입이 향하는 캐시 라인이 캐시에 존재한다는 가정하에). (각각의 기입 동작이 NVRAM FM(151B)에 즉시 전달되는 후술되는 연속 기입 모드(write-through mode)와 대조적으로) 대응 기입 동작은 FM(150B)을 위한 캐시로서의 근거리 메모리 내의 캐시 라인이 다른 캐시 라인으로 대체될 때만 NVRAM FM(151B)을 갱신하도록 실행된다.
(2) 근거리 메모리 우회 모드(Near Memory Bypass Mode): 이 모드에서, 모든 판독들 및 기입들은 FM 캐시(150B)로서 동작하는 NM을 우회하여 NVRAM FM(151B)으로 직접 간다. 이 모드는, 예를 들어, 애플리케이션이 캐시-우호적이 아니거나 또는 데이터가 캐시 라인의 입상도로 지속될 것을 요구할 때, 사용될 수 있다. 일 실시예에서, 프로세서 캐시들(150A)에 의해 실행되는 캐싱 및 FM 캐시(150B)로서 동작하는 NM은 서로 독립적으로 동작한다. 따라서, 데이터는 프로세서 캐시들(150A)에 캐싱되지 않은 FM 캐시(150B)로서 동작하는 NM에 캐싱될 수 있으며(또한, 일부 경우들에서, 프로세서 캐시들(150A)에 캐싱되는 것이 허용되지 않을 수 있음), 반대로도 그렇다. 따라서, 프로세서 캐시들에서 "캐싱될 수 없음(uncacheable)"으로 지정될 수 있는 특정 데이터는 FM 캐시(150B)로서 동작하는 NM 내에 캐싱될 수 있다.
(3) 근거리 메모리 판독-캐시 기입 우회 모드(Near Memory Read-Cache Write Bypass Mode): 이는 NVRAM FM(151B)으로부터의 지속적 데이터의 판독 캐싱이 허용되는(즉, 지속적 데이터가 판독 전용 동작들을 위한 원거리 메모리(150B)를 위한 캐시로서의 근거리 메모리에 캐싱됨) 상기 모드의 변형이다. 이는 지속적 데이터의 대부분이 "판독 전용(Read-Only)"이며 애플리케이션 사용이 캐시-우호적(cache-friendly)일 때 유용하다.
(4) 근거리 메모리 판독-캐시 연속 기입 모드(Near Memory Read-Cache Write-Through Mode): 이는 근거리 메모리 판독-캐시 기입 우회 모드의 변형이며, 판독 캐싱 외에, 기입-히트들이 또한 캐싱된다. FM(150B)을 위한 캐시로서의 근거리 메모리로의 모든 기입은 FM(151B)으로의 기입을 야기한다. 따라서, 캐시의 연속 기입 속성으로 인해, 캐시-라인 지속성이 여전히 보장된다.
근거리 메모리 직접 액세스 모드로 동작할 때, 시스템 메모리(151A)로서의 근거리 메모리의 전부 또는 일부분들은 소프트웨어에 직접 가시적이고, SPA 공간의 일부를 형성한다. 이러한 메모리는 완전히 소프트웨어 제어하에 있을 수 있다. 이러한 방식은 NVRAM 시스템 메모리(174)에 비해 근거리 메모리(144)로부터 더 높은 성능을 획득하는 소프트웨어용 비-균일 메모리 어드레스(NUMA) 메모리 도메인을 생성할 수 있다. 제한이 아니라, 일례로서, 이러한 사용은 특정 데이터 구조들에 대해 매우 빠른 액세스를 요구하는 특정 고성능 컴퓨팅(HPC) 및 그래픽 애플리케이션들에 사용될 수 있다.
다른 실시예에서, 근거리 메모리 직접 액세스 모드는 근거리 메모리에서 특정 캐시 라인들(즉, 또한 동시에 NVRAM(142)에 저장된 데이터를 가진 캐시 라인들)을 "피닝(pinning)"함으로써 구현된다. 이러한 피닝은 더 큰, 다중-방법, 집합-연관 캐시들(larger, multi-way, set-associative caches)에서 효과적으로 실행될 수 있다.
도 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)은, 원거리 메모리(151B)(예를 들어, 근거리 메모리(144)가 존재/동작할 때, 근거리 메모리가 MSC 제어(124)를 통해 FM을 위한 캐시로서 동작하고 있는지 또는 아닌지(캐시(들)(101A-105) 직후에 MSC 제어(124) 없이 액세스되는지)); 단지 NVRAM 시스템 메모리(174)(존재/동작하는 근거리 메모리가 없기 때문에 원거리 메모리로서가 아님; MSC 제어(124) 없이 액세스됨); 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)을 위한 캐시로서 동작하는 근거리 메모리에 존재하는 지를 결정하기 위해 검색을 실행할 MSC 제어기(124)에 판독 동작이 먼저 도달할 것이다. 존재하면, I/O 서브시스템(115)을 통해 요청 CPU, 코어(101-104) 또는 I/O 장치에 데이터를 반환할 것이다. 데이터가 존재하지 않으면, MSC 제어기(124)는 시스템 메모리 어드레스와 함께 요청을 NVRAM 제어기(332)에 송신할 것이다. NVRAM 제어기(332)는 디코드 표(333)를 사용해서, 시스템 메모리 어드레스를 NVRAM 물리 장치 어드레스(PDA)로 번역하고 원거리 메모리(151B)의 이 영역에 대한 판독 동작을 지시할 것이다. 일 실시예에서, 디코드 표(333)는 시스템 메모리 어드레스들 및 NVRAM PDA들 간의 번역을 위해 NVRAM 제어기(332)가 사용하는 어드레스 간접 표(AIT) 컴포넌트를 포함한다. 일 실시예에서, AIT는 메모리 액세스 동작들을 분산해서 NVRAM FM(151B)에 대한 마모를 감소시키도록 구현된 마모 레벨링 알고리즘(wear leveling algorithm)의 일부로서 갱신된다. 대안으로, AIT는 NVRAM 제어기(332) 내에 저장된 별개의 표일 수 있다.
NVRAM FM(151B)으로부터 요청된 데이터를 수신할 때, NVRAM 제어기(332)는 FM 캐시(150B)로서 동작하는 MSC 근거리 메모리에 데이터를 저장할 MSC 제어기(124)에 요청된 데이터를 반환하고, 또한, I/O 서브시스템(115)을 통해 요청 프로세서 코어(101-104) 또는 I/O 장치에 데이터를 송신할 것이다. 이 데이터에 대한 다음 요청들은 일부 다른 NVRAM FM 데이터로 대체될 때까지 FM 캐시(150B)로서 동작하는 근거리 메모리로부터 직접 서비스받을 수 있다.
언급된 바와 같이, 일 실시예에서, 메모리 기입 동작은 FM 캐시(150B)로서 동작하는 MSC 근거리 메모리에 기입하는 MSC 제어기(124)로 또한 먼저 간다. 후기입 캐싱 모드에서, 데이터는 기입 동작이 수신될 때 NVRAM FM(151B)에 직접 송신되지 않을 수 있다. 예를 들어, 데이터가 저장되는 FM 캐시(150B)로서 동작하는 MSC 근거리 메모리의 로케이션이 상이한 시스템 메모리 어드레스에 대해 데이터를 저장하는데 재사용되어야만 할 때만, 데이터는 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개의 별개의 물리 버스들 또는 통신 채널들이 있음을 반드시 의미하지는 않는다. 오히려, 일부 실시예들에서, (도 4a-4m에 대하여 후술되는 바와 같이) 공통 메모리 버스 또는 다른 타입의 버스가 NVRAM 제어기(332)를 FM(151B), NVRAM 대용량 기억 장치(152A) 및 BIOS NVRAM(172)에 통신상 연결하는데 사용된다. 예를 들어, 일 실시예에서, 도 3의 3개의 라인들은 NVRAM 제어기(332)가 NVRAM(142)과 통신하기 위해 트랜잭션 프로토콜을 구현하는 메모리 버스(예를 들어, DDR3, DDR4 등, 버스) 등의 버스를 나타낸다. NVRAM 제어기(332)는 PCI 익스프레스 버스, 데스크탑 관리 인터페이스(DMI) 버스 또는 트랜잭션 프로토콜 및 충분히 작은 트랜잭션 페이로드 크기(예를 들어, 64 또는 128 바이트 등의 캐시 라인 크기)를 사용하는 임의의 다른 타입의 버스 등의 네이티브 트랜잭션 프로토콜을 지원하는 버스를 통해 NVRAM(142)과 또한 통신할 수 있다.
일 실시예에서, 컴퓨터 시스템(300)은 1) 원거리 메모리 캐시(150B)로서 동작하는 근거리 메모리(NM)에 대한 액세스를 제어하기 위한 메모리-사이드 캐시(MSC) 제어기(124); 및 2) NVRAM(142)에 대한 액세스를 제어하기 위한 NVRAM 제어기(332)에 연결된, 프로세서(310)에 대한 중앙 메모리 액세스 제어를 실행하는 통합 메모리 제어기(IMC)(331)를 포함한다. 도 3에 별개의 유닛들로 도시되더라도, MSC 제어기(124) 및 NVRAM 제어기(332)는 IMC(331)의 일부를 논리적으로 형성할 수 있다.
도시된 실시예에서, MSC 제어기(124)는 원거리 메모리 캐시(150B)로서 동작하는 NM을 위해 사용되는 동작 모드(예를 들어, 상술된 후기입 캐싱 모드, 근거리 메모리 우회 모드 등)를 지정하는 범위 레지스터들의 집합(336)을 포함한다. 도시된 실시예에서, DRAM(144)은 원거리 메모리(150B)를 위한 캐시로서 동작하는 NM을 위한 메모리 기술로서 사용된다. 메모리 액세스 요청에 응답해서, MSC 제어기(124)는 요청이 FM(150B)을 위한 캐시로서 동작하는 NM으로부터 서비스받을 수 있는지 또는 후에 NVRAM(142)의 원거리 메모리(FM) 일부분(151B)으로부터의 요청을 서비스할 수 있는 NVRAM 제어기(332)에 요청이 송신되어야만 하는지를 (범위 레지스터들(336)에 지정된 동작 모드에 따라) 결정할 수 있다.
NVRAM(142)이 PCMS로 구현되는 실시예에서, NVRAM 제어기(332)는 PCMS 기술과 일치하는 프로토콜들로 액세스를 실행하는 PCMS 제어기이다. 상술된 바와 같이, PCMS 메모리는 한 바이트의 입상도로 고유하게 액세스될 수 있다. 그래도, NVRAM 제어기(332)는 캐시 라인(예를 들어, 64-비트 또는 128-비트 캐시 라인) 등의 더 낮은 레벨의 입상도 또는 메모리 서브시스템과 일치하는 임의의 다른 레벨의 입상도로 PCMS-기반 원거리 메모리(151B)에 액세스할 수 있다. 본 발명의 기본 원리들은 PCMS-기반 원거리 메모리(151B)에 액세스하기 위한 임의의 특정 레벨의 입상도로 제한되지 않는다. 그러나, 일반적으로, PCMS-기반 원거리 메모리(151B)가 시스템 어드레스 공간의 일부를 형성하는데 사용될 때, 입상도의 레벨은 한 "블록"의 레벨(최소로 NOR FLASH를 위한 64Kbyte 크기 및 NAND FLASH를 위한 16Kbyte)로 재기입 및 소거 동작들만을 실행할 수 있는, FLASH 등의 다른 비휘발성 기억 장치 기술들에 전형적으로 사용되는 것보다 더 높을 것이다.
도시된 실시예에서, NVRAM 제어기(332)는 디코드 표(333)로부터 NVRAM(142)에 대해 상술된 모드들, 크기들 등을 설정하기 위해 구성 데이터를 판독할 수 있으며, 또는 대안으로, IMC(331) 및 I/O 서브시스템(315)으로부터 전달된 디코딩 결과들에 의존할 수 있다. 예를 들어, 제조 시간에 또는 본 분야에서, 컴퓨터 시스템(300)은, 무엇보다, 시스템 메모리, SATA 인터페이스들을 통해 노출된 대용량 기억 장치, USB BOT(Bulk Only Transport) 인터페이스들을 통해 노출된 대용량 기억 장치, TPM 기억 장치를 지원하는 암호화된 기억 장치로서 NVRAM(142)의 상이한 영역들을 표시하도록 디코드 표(333)를 프로그래밍할 수 있다. NVRAM 장치(142)의 상이한 분할들에 대해 액세스가 조정되는 수단은 디코드 로직을 통해서이다. 예를 들어, 일 실시예에서, 각각의 분할의 어드레스 범위는 디코드 표(333)에 정의된다. 일 실시예에서, IMC(331)가 액세스 요청을 수신할 때, 요청의 목표 어드레스는 요청이 메모리를 향하는지, NVRAM 대용량 기억 장치를 향하는지 또는 I/O를 향하는 지를 드러내기 위해 디코딩된다. 메모리 요청이면, IMC(331) 및/또는 MSC 제어기(124)가 요청이 FM(150B)을 위한 캐시로서의 NM으로 향하는지 또는 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-레벨 시스템 메모리의 도입을 나타낸다(예를 들어, 시스템 메모리는 캐시(150B)(DRAM 장치(340)의 일부)로서 근거리 메모리를 포함하는 제1 레벨 시스템 메모리 및 원거리 메모리(FM)(151B)(NVRAM(142)의 일부)를 포함하는 제2 레벨 시스템 메모리를 가지는 것으로 간주될 수 있음).
일부 실시예들에 따라, NVRAM(142)은 플래시/자기/광 대용량 기억 장치(152B)의 총 대체물 또는 보충물로서 동작한다. 상술된 바와 같이, 일부 실시예들에서, NVRAM(152A)이 바이트-레벨 어드레싱 가능하더라도, NVRAM 제어기(332)는 구현(예를 들어, 64 Kbyte, 128 Kbyte 등)에 따라, 다수의 바이트들의 블록들로 NVRAM 대용량 기억 장치(152A)에 여전히 액세스할 수 있다. 데이터가 NVRAM 제어기(332)에 의해 NVRAM 대용량 기억 장치(152A)로부터 액세스되는 특정 방식은 프로세서(310)에 의해 실행되는 소프트웨어에 명백할 수 있다. 예를 들어, NVRAM 대용량 기억 장치(152A)가 플래시/자기/광 대용량 기억 장치(152B)로부터 상이하게 액세스될 수 있더라도, 운영 체제는 NVRAM 대용량 기억 장치(152A)를 표준 대용량 기억 장치(예를 들어, 시리얼 ATA 하드 드라이브 또는 다른 표준 형태의 대용량 기억 장치)로서 여전히 볼 수 있다.
NVRAM 대용량 기억 장치(152A)가 플래시/자기/광 대용량 기억 장치(152B)의 총 대체물로서 동작하는 실시예에서, 블록-어드레싱 가능 기억 장치 액세스를 위해 기억 장치 드라이버들을 사용할 필요가 없다. 기억 장치 액세스로부터의 기억 장치 드라이버 오버헤드의 제거는 액세스 속도 및 세이브 파워를 증가시킬 수 있다. NVRAM 대용량 기억 장치(152A)가 플래시/자기/광 대용량 기억 장치(152B)로부터 구별될 수 없고 블록-액세스 가능한 것으로 OS 및/또는 애플리케이션들에 나타나는 것이 바람직한 대안의 실시예들에서, 에뮬레이트된 기억 장치 드라이버들은 블록-액세스 가능한 인터페이스들(예를 들어, USB(Universal Serial Bus) BOT(Bulk-Only Transfer), 1.0; SATA(Serial Advanced Technology Attachment), 3.0; 및 기타)을 NVRAM 대용량 기억 장치(152A)에 액세스하기 위한 소프트웨어에 노출하는데 사용될 수 있다.
일 실시예에서, NVRAM(142)은 BIOS 플래시(362) 및 TPM 플래시(372)(선택적임을 나타내기 위해 도 3에서 점선들로 도시됨) 등의 펌웨어 메모리의 총 대체물 또는 보충물로서 동작한다. 예를 들어, NVRAM(142)은 BIOS 플래시(362)를 보충 또는 대체하기 위해 BIOS NVRAM(172)을 포함할 수 있고, TPM 플래시(372)를 보충 또는 대체하기 위해 TPM NVRAM(173) 일부분을 포함할 수 있다. 펌웨어 메모리는 민감한 시스템 정보(예를 들어, 암호 키들)을 보호하기 위해 TPM(334)에 의해 사용되는 시스템 지속적 상태들을 또한 저장할 수 있다. 일 실시예에서, 펌웨어 메모리를 위한 NVRAM(142)의 사용은 시스템 동작들에 중대한 코드 및 데이터를 저장하기 위해 제삼자 플래시 부분들에 대한 필요성을 제거한다.
다음으로, 계속해서 도 3의 시스템을 설명하자면, 일부 실시예들에서, 컴퓨터 시스템(100)의 아키텍처는 다수의 프로세서들을 포함할 수 있지만, 간단히, 도 3에는 단일 프로세서(310)가 도시된다. 프로세서(310)는 범용 또는 특수 목적 중앙 처리 장치(CPU), 주문형 반도체(ASIC) 또는 디지털 신호 프로세서(DSP)를 포함하는 임의의 타입의 데이터 프로세서일 수 있다. 예를 들어, 프로세서(310)는 Core™ i3, i5, i7, 2 Duo 및 Quad, Xeon™, 또는 Itanium™ 프로세서 등의 범용 프로세서일 수 있으며, 이 모두는 캘리포니아주 산타클라라(Santa Clara, Calif.)의 인텔사(Intel Corporation)로부터 입수할 수 있다. 대안으로, 프로세서(310)는 캘리포니아주 서니베일(Sunnyvale, CA)의 ARM 홀딩스(ARM Holdings, Ltd.), 캘리포니아주 서니베일(Sunnyvale, CA)의 MIPS 테크놀로지(MIPS Technologies) 등의 다른 회사로부터 온 것일 수 있다. 프로세서(310)는 특수 목적 프로세서, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, 코-프로세서, 내장형 프로세서 등일 수 있다. 프로세서(310)는 하나 이상의 패키지들 내에 포함된 하나 이상의 칩들로 구현될 수 있다. 프로세서(310)는, 예를 들어, BiCMOS, CMOS 또는 NMOS 등의 다수의 프로세스 기술들 중 임의의 기술을 사용해서 하나 이상의 기판들의 일부일 수 있고/있거나, 또는 그 기판들 상에 구현될 수 있다. 도 3에 도시된 실시예에서, 프로세서(310)는 시스템 온 칩(SOC) 구성을 가진다.
일 실시예에서, 프로세서(310)는 3D 또는 2D 그래픽 커맨드들 등의 그래픽 커맨드들을 실행하기 위한 로직을 포함하는 통합 그래픽 유닛(311)을 포함한다. 본 발명의 실시예들이 임의의 특정 통합 그래픽 유닛(311)으로 제한되지 않지만, 일 실시예에서, 그래픽 유닛(311)은 Open GL 및/또는 Direct X 응용 프로그래밍 인터페이스들(API들)(예를 들어, OpenGL 4.1 및 Direct X 11)에 의해 지정된 커맨드들 등의 산업 표준 그래픽 커맨드들을 실행할 수 있다.
프로세서(310)는 하나 이상의 코어들(101-104)을 또한 포함할 수 있지만, 다시 말해서, 명료성을 위해, 도 3에는 단일 코어가 도시된다. 다수의 실시예들에서, 코어(들)(101-104)는 하나 이상의 실행 유닛들, 리타이어먼트 유닛들(retirement units), 범용 및 특정 레지스터들의 집합 등의 내부 기능 블록들을 포함한다. 코어(들)가 멀티-스레드 또는 하이퍼-스레드되면, 각각의 하드웨어 스레드는 또한 "논리" 코어라고 생각될 수 있다. 코어들(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 캐시 등일 수 있다. 또한, 상이한 실시예들에서, 캐시는 다이렉트 매핑 캐시, 충분히 연관된 캐시, 다중-방법 집합-연관 캐시 또는 다른 타입의 매핑을 가진 캐시일 수 있다. 다수의 코어들을 포함하는 다른 실시예들에서, 캐시(313)는 모든 코어들 간에 공유된 하나의 큰 부분을 포함할 수 있으며, 또는 수개의 개별 기능 슬라이스들(예를 들어, 각각의 코어를 위한 하나의 슬라이스)로 분할될 수 있다. 캐시(313)는 모든 코어들 간에 공유된 하나의 일부분 및 코어 당 별개의 기능 슬라이스들인 수개의 다른 일부분들을 또한 포함할 수 있다.
프로세서(310)는 이 컴포넌트들 조정 및 동작 코어(들)(101-104)를 포함하는 홈 에이전트(314)를 또한 포함할 수 있다. 홈 에이전트 유닛(314)은, 예를 들어, 전력 제어 유닛(PCU) 및 디스플레이 유닛을 포함할 수 있다. 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)(예를 들어, 근거리 통신망, 광역 통신망 또는 인터넷), 기억 I/O 장치(예를 들어, 플래시/자기/광 대용량 기억 장치(152B), BIOS 플래시(362), TPM 플래시(372)) 및 하나 이상의 비-기억 I/O 장치들(337)(예를 들어, 디스플레이, 키보드, 스피커 등) 간의 통신을 가능케 한다. I/O 서브시스템(115)은 기억 및 비-기억 I/O 장치들 및 네트워크들에 대한 액세스를 제공하기 위해 수개의 I/O 어댑터들(338) 및 다른 I/O 회로를 더 포함하는 플랫폼 제어기 허브(PCH)(도시되지 않음)를 포함할 수 있다. 이를 달성하기 위해, I/O 서브시스템(115)은 사용된 각각의 I/O 프로토콜을 위한 적어도 하나의 통합 I/O 어댑터(338)를 가질 수 있다. I/O 서브시스템(115)은 프로세서(310)와 동일한 칩에 있거나, 또는 프로세서(310)에 연결된 별개의 칩 및/또는 패키지에 있을 수 있다.
I/O 어댑터들(338)은 프로세서(310) 내에서 사용되는 호스트 통신 프로토콜을 특정 I/O 장치들과 호환 가능한 프로토콜로 번역한다. 플래시/자기/광 대용량 기억 장치(152B)의 경우, I/O 어댑터들(338)이 번역할 수 있는 프로토콜들 중 일부는 무엇보다 PCI(Peripheral Component Interconnect)-익스프레스(PCI-E), 3.0; USB, 3.0; SATA, 3.0; SCSI(Small Computer System Interface), 울트라-640; 및 IEEE(Institute of Electrical and Electronics Engineers) 1394 "파이어와이어"를 포함할 수 있다. BIOS 플래시(362)의 경우, I/O 어댑터들(338)이 번역할 수 있는 프로토콜들 중 일부는 무엇보다 SPI(Serial Peripheral Interface) 및 마이크로와이어를 포함한다. 또한, 하나 이상의 무선 프로토콜 I/O 어댑터들이 있을 수 있다. 무선 프로토콜들의 일례들은, 무엇보다, IEEE 802.15 및 블루투스 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))의 완전성(integrity)을 또한 보고할 수 있다. 이는 외부 리소스(예를 들어, 네트워크 상의 서버)가 플랫폼의 신뢰성을 결정할 수 있게 하지만, 사용자에 의한 플랫폼에 대한 액세스를 방지하지는 않는다.
일부 실시예들에서, I/O 서브시스템(315)은 시스템 관리자가 컴퓨터 시스템(300)을 모니터, 유지, 갱신, 업그레이드 및 보수할 수 있게 하는 마이크로프로세서인 관리 엔진(ME)(335)을 또한 포함한다. 일 실시예에서, 시스템 관리자는 네트워크(336)를 통해 ME(335)를 통해 디코드 표(333)의 콘텐츠를 편집함으로써 컴퓨터 시스템(300)을 원격으로 구성할 수 있다.
설명의 편의를 위해, 애플리케이션의 나머지는 때때로 NVRAM(142)을 PCMS 장치라고 한다. PCMS 장치는 비휘발성이고, 저전력 소비를 하며, 비트 레벨로 변경 가능한 다층 (수직 스택) PCM 셀 어레이들을 포함한다. 용어들 NVRAM 장치 및 PCMS 장치는 이하의 설명에서 상호 교환되어 사용될 수 있다. 그러나, 상술된 바와 같이, PCMS 외의 상이한 기술들이 또한 NVRAM(142)을 위해 사용될 수 있음을 알아야만 한다.
컴퓨터 시스템의 프로세서가 프로세서(310)의 모든 상술된 컴포넌트들을 갖지 않거나 프로세서(310)보다 더 많은 컴포넌트들을 갖더라도, 컴퓨터 시스템이 시스템 메모리, 대용량 기억 장치, 펌웨어 메모리 및/또는 다른 메모리 및 기억 장치를 위해 NVRAM(142)을 사용할 수 있음을 알아야만 한다.
도 3에 도시된 특정 실시예에서, MSC 제어기(124) 및 NVRAM 제어기(332)는 프로세서(310)와 동일한 다이 또는 패키지(CPU 패키지라고 함)에 위치한다. 다른 실시예들에서, MSC 제어기(124) 및/또는 NVRAM 제어기(332)는 (DDR 버스(예를 들어, DDR3, DDR4 등)와 같은) 메모리 버스, PCI 익스프레스 버스, 데스크탑 관리 인터페이스(DMI) 버스 또는 임의의 다른 타입의 버스 등의 버스를 통해 프로세서(310) 또는 CPU 패키지에 연결된 다이 또는 CPU 패키지로부터 멀리 위치할 수 있다.
일례의 PCM 버스 및 패키지 구성
도 4a-4m은 프로세서, 근거리 메모리 및 원거리 메모리가 상이한 방법들로 구성 및 패키지화된 각종 상이한 전개들을 도시한다. 특히, 도 4a-4m에 도시된 일련의 플랫폼 메모리 구성들은 PCM 기술들 또는 더 구체적으로 PCMS 기술들 등의 새로운 비휘발성 시스템 메모리의 사용을 가능케 한다.
동일한 참조 부호들 중 일부가 도 4a-4m의 다수의 도면들에서 사용되지만, 이 참조 부호들에 의해 식별된 구조들이 항상 동일함을 반드시 의미하는 것은 아니다. 예를 들어, 동일한 부호들이 수개의 도면들에서 통합 메모리 제어기(IMC)(331) 및 CPU(401)를 식별하는데 사용되지만, 이 컴포넌트들은 상이한 도면들에서 상이하게 구현될 수 있다. 본 발명의 기본 원리들을 이해하는데 적절하지 않기 때문에, 이 차이들 중 일부는 강조되지 않는다.
수개의 상이한 시스템 플랫폼 구성 방식들이 후술되지만, 이 방식들은 2개의 넓은 카테고리들: 분할 아키텍처 및 통합 아키텍처에 속한다. 간략하게, 분할 아키텍처 방식에서, 메모리 사이드 캐시(MSC) 제어기(예를 들어, 프로세서 다이에 또는 CPU 패키지의 별개의 다이에 위치함)는 모든 시스템 메모리 요청들을 인터셉트한다. 근거리 메모리 및 원거리 메모리에 연결된 CPU 패키지를 떠나는 제어기로부터 "플로 다운스트림(flow downstream)"하는 2개의 별개의 인터페이스들이 있다. 각각의 인터페이스는 특정 타입의 메모리에 맞춰지고, 각각의 메모리는 성능 및 용량 면에서 독립적으로 스케일링된다.
통합 아키텍처 방식에서, 단일 메모리 인터페이스가 프로세서 다이 또는 CPU 패키지를 떠나고, 모든 메모리 요청들이 이 인터페이스로 송신된다. 근거리 및 원거리 메모리 서브시스템들과 함께 MSC 제어기는 이 단일 인터페이스에서 합병된다. 이 메모리 인터페이스는 프로세서의 메모리 성능 요구 사항들을 만족시키도록 맞춰져야만 하고, PCMS 장치들이 판독 요청들을 순서대로 처리하지 않을 수 있기 때문에, 적어도 트랜잭션 무순서(out-of-order) 프로토콜을 지원해야만 한다. 상술된 일반적인 카테고리들에 따라, 이하의 특정 플랫폼 구성들이 사용될 수 있다.
후술되는 실시예들은 각종 타입들의 버스들/채널들을 포함한다. 용어들 "버스(bus)" 및 "채널(channel)"은 본 명세서에서 동의어로 사용된다. 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)은 통합 메모리 제어기(IMC)(331) 및 MSC 제어기(124)를 호스트하는 프로세서(310)에 단일 또는 다중 DRAM 장치들(403-406)을 상호 연결한다. 도 4a 및 후술되는 다른 도면들에서 별개의 유닛들로 도시되더라도, MSC 제어기(124)는 일 실시예에서 메모리 제어기(331) 내에서 통합될 수 있다.
DIMM들(450-451)은 DDR 어드레스, 데이터 및 제어 라인들 및 전압들(예를 들어, JEDEC(Joint Electron Devices Engineering Council)에 의해 정의된 DDR3 또는 DDR4 표준)로 DDR 채널들(440)을 정의하는 DDR 슬롯들 및 전기 커넥션들을 사용한다. DIMM들(450-451) 상의 PCM 장치들은 이 분할 아키텍처의 원거리 메모리 용량을 제공하고, CPU 패키지(401)에 대한 DDR 채널들(440)은 DDR 및 트랜잭션 프로토콜들을 둘 다 캐리(carry)할 수 있다. 프로세서(310) 또는 CPU 패키지 내의 다른 로직(예를 들어, IMC(331) 또는 MSC 제어기(124))이 커맨드를 송신하고 중간 응답을 수신하는 DDR 프로토콜들과 대조적으로, PCM 장치들과 통신하는데 사용되는 트랜잭션 프로토콜은 CPU(401)가 유일한 트랜잭션 ID로 각각 식별되는 일련의 트랜잭션들을 발행할 수 있게 한다. 커맨드들은 잠재적으로 무순서로 응답을 다시 CPU 패키지(401)에 송신하는 PCM DIMM들 중 수신 PCM DIMM의 PCM 제어기에 의해 서비스받는다. 프로세서(310) 또는 CPU 패키지(401) 내의 다른 로직은 응답으로 송신되는 트랜잭션 ID에 의해 각각의 트랜잭션 응답을 식별한다. 상기 구성은 시스템이 표준 DDR DRAM-기반 DIMM들(DDR 전기 커넥션들을 통한 DDR 프로토콜들을 사용) 및 PCM-기반 DIMM들 구성들(동일한 DDR 전기 커넥션들을 통한 트랜잭션 프로토콜들을 사용) 둘 다를 지원할 수 있게 한다.
도 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)은 이 분할 아키텍처의 원거리 메모리 용량을 제공하고, CPU 패키지(401)에 대한 DDR 채널들(442)은 DDR 전기 커넥션들에 기초하며 DDR 및 트랜잭션 프로토콜들을 둘 다 캐리할 수 있다. 이는 시스템이 희망 용량 및/또는 성능 포인트들을 달성하기 위해 변하는 수들의 DDR DRAM DIMM들(452)(예를 들어, DDR4 DIMM들) 및 PCM DIMM들(453)로 구성될 수 있게 한다.
도 4c는 CPU 패키지(401) 상의(프로세서 다이 또는 별개의 다이 상의) 메모리 사이드 캐시(MSC)로서 동작하는 근거리 메모리(403-406)를 호스팅하는 분할 아키텍처를 도시한다. CPU 패키지 상의 고 대역폭 링크들(407)은, 분할 아키텍처들에 의해 정의된 바와 같이, 메모리 제어기(331) 및 MSC 제어기(124)를 호스팅하는 프로세서(310)에 단일 또는 다수의 DRAM 장치들(403-406)을 상호 연결하는데 사용된다. PCM 메모리 장치들 등의 NVRAM은 PCI 익스프레스 버스(454)에 대한 PCI 익스프레스 전기 커넥션들 및 PCI 익스프레스 프로토콜 또는 상이한 트랜잭션 프로토콜을 사용하는 PCI 익스프레스 카드들 또는 라이저들(riser; 455)에 상주한다. PCI 익스프레스 카드들 또는 라이저들(455) 상의 PCM 장치들은 이 분할 아키텍처의 원거리 메모리 용량을 제공한다.
도 4d는 MSC로서 동작하는 근거리 메모리를 형성하기 위해 DDR DRAM-기반 DIMM들(452) 및 DDR 채널들(440)을 사용하는 분할 아키텍처를 도시한다. 프로세서(310)는 메모리 제어기(331) 및 MSC 제어기(124)를 호스팅한다. PCM 메모리 장치들(455) 등의 NVRAM은 PCI 익스프레스 링크(454)에 대한 PCI 익스프레스 전기 커넥션들 및 PCI 익스프레스 프로토콜 또는 상이한 트랜잭션 프로토콜을 사용하는 PCI 익스프레스 카드들 또는 라이저들에 상주한다. PCI 익스프레스 카드들 또는 라이저들(455) 상의 PCM 장치들은 이 분할 아키텍처의 원거리 메모리 용량을 제공하며, CPU 패키지(401)에서 멀리 있는 메모리 채널 인터페이스들은 DDR DRAM DIMM들(452)을 위한 다수의 DDR 채널들(440)을 제공한다.
도 4e는 MSC로서 동작하는 근거리 메모리 및 PCI 익스프레스 버스(454)를 통한 PCI 익스프레스 전기 커넥션들 및 PCI 익스프레스 프로토콜 또는 상이한 트랜잭션 프로토콜을 사용하는 PCI 익스프레스 카드들 또는 라이저들(456) 상의 PCM 등의 원거리 메모리 NVRAM을 둘 다 호스팅하는 통합 아키텍처를 도시한다. 프로세서(310)는 통합 메모리 제어기(331)를 호스팅하지만, 이 통합 아키텍처 경우에, MSC 제어기(124)는, DRAM 근거리 메모리 및 NVRAM 원거리 메모리과 함께, 카드 또는 라이저(456)에 상주한다.
도 4f는 DDR 채널들(457)을 사용하는 DIMM들(458)에서 MSC로서 동작하는 근거리 메모리 및 PCM 등의 원거리 메모리 NVRAM을 둘 다 호스팅하는 통합 아키텍처를 도시한다. 이 통합 아키텍처의 근거리 메모리는 특정 DIMM의 원거리 메모리를 형성하는, 동일한 DIMM(458)에 있는 PCM 장치들에 대한 메모리 사이드 캐시로서 동작하는, 각각의 DIMM(458) 상의 DRAM을 포함한다. MSC 제어기(124)는, 근거리 메모리 및 원거리 메모리와 함께, 각각의 DIMM(458)에 상주한다. 본 실시예에서, DDR 버스(457)의 다수의 메모리 채널들은 CPU 패키지에서 멀리 제공된다. 본 실시예의 DDR 버스(457)는 DDR 전기 커넥션들을 통한 트랜잭션 프로토콜을 구현한다.
도 4g는 하이브리드 분할 아키텍처를 도시하며, MSC 제어기(124)는 프로세서(310)에 상주하고, 근거리 메모리 및 원거리 메모리 인터페이스들은 둘 다 동일한 DDR 버스(410)를 공유한다. 이 구성은 DDR 슬롯들 및 NVRAM(예를 들어, PCM 메모리 장치들)을 사용해서, DDR 버스(410)의 동일한 메모리 채널에 상주하는 PCM-기반 DIMM들(411b)(즉, 원거리 메모리)과 함께 MSC로서 동작하는 근거리 메모리로서 DRAM-기반 DDR DIMM들(411a)을 사용한다. 본 실시예의 메모리 채널들은 각각 근거리 메모리 및 원거리 메모리 DIMM들(411a 및 411b)을 어드레싱하기 위해 DDR 및 트랜잭션 프로토콜들을 둘 다 동시에 캐리한다.
도 4h는 DRAM-기반 DDR DIMM들의 형태로, 메모리 사이드 캐시로서 동작하는 근거리 메모리(461a)가 메자닌 또는 라이저(461)에 상주하는 통합 아키텍처를 도시한다. 메모리 사이드 캐시(MSC) 제어기(124)는 메자닌/라이저(461) 상의 DDR DIMM 채널들(470)에 연결되고 상이한 메모리 링크 등의 고성능 인터커넥트(들)(462)를 통해 CPU에 상호 연결되는 2개의 또는 그 이상의 메모리 채널들을 가질 수 있는 라이저의 DDR 및 PCM 제어기(460)에 위치한다. 연관된 원거리 메모리(461b)는 동일한 메자닌/라이저(461)에 위치하고, DDR 채널들(470)을 사용하고 NVRAM(예를 들어, PCM 장치들)으로 채워진 DIMM들에 의해 형성된다.
도 4i는 DDR 메모리 서브시스템, 및 DDR 버스(471)를 통해, DDR 메모리 서브시스템 상의 CPU 패키지(401)에 연결된 DIMM들(464)에 대한 메모리 용량 확장으로서 사용될 수 있는 통합 아키텍처를 도시한다. 이 구성의 추가 NVM-기반 용량의 경우, MSC로서 동작하는 근거리 메모리는 DRAM 기반 DDR DIMM들(463a)의 형태로 메자닌 또는 라이저(463)에 상주한다. MSC 제어기(124)는 메자닌/라이저 상의 DDR DIMM 채널들(470)에 연결되고 상이한 메모리 링크 등의 고성능 인터커넥트(들)(462)를 통해 CPU에 상호 연결되는 2개의 또는 그 이상의 메모리 채널들을 가질 수 있는 라이저의 DDR 및 PCM 제어기(460)에 위치한다. 연관된 원거리 메모리(463b)는 동일한 메자닌/라이저(463)에 위치하고, DDR 채널들(470)을 사용하고 NVRAM(예를 들어, PCM 장치들)으로 채워진 DIMM들(463b)에 의해 형성된다.
도 4j는 DRAM의 형태로, 메모리 사이드 캐시(MSC)로서 동작하는 근거리 메모리가 각각의 및 모든 DIMM(465)에 상주하는 통합 아키텍처이다. DIMM들(465)은 DIMM들에 위치한 MSC 제어기(124)와 CPU 패키지(401)를 연결하는 상이한 메모리 링크 등의 고성능 인터커넥트/채널(들)(462)에 있다. 연관된 원거리 메모리는 동일한 DIMM들(465)에 위치하고, NVRAM(예를 들어, PCM 장치들)에 의해 형성된다.
도 4k는 DRAM의 형태로, MSC로서 동작하는 근거리 메모리가 모든 DIMM(466)에 상주하는 통합 아키텍처를 도시한다. DIMM들은 DIMM들에 위치한 MSC 제어기(124)와 CPU 패키지(401)를 연결하는 고성능 인터커넥트(들)(470)에 있다. 연관된 원거리 메모리는 동일한 DIMM(466)에 위치하고, NVRAM(예를 들어, PCM 장치들)에 의해 형성된다.
도 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개의 메모리 채널들이 있으면, 시스템 어드레스 공간의 ¼이 각각의 메모리 채널에 할당될 수 있다. 각각의 메모리 채널에 하나의 PCMS-기반 DIMM 및 하나의 DDR DIMM이 제공되면, DDR DIMM은 시스템 어드레스 공간의 ¼ 부분에 대한 MSC로서 동작하도록 구성될 수 있다.
시스템 메모리 및 대용량 기억 장치들의 선택은 본 발명의 실시예들이 사용되는 전자 플랫폼들의 타입에 좌우될 수 있다. 예를 들어, 퍼스널 컴퓨터, 태블릿 컴퓨터, 노트북 컴퓨터, 스마트폰, 이동 전화, 피쳐폰, 개인 휴대 정보 단말기(PDA), 휴대형 미디어 플레이어, 휴대형 게임 장치, 게임 콘솔, 디지털 카메라, 스위치, 허브, 라우터, 셋탑 박스, 디지털 비디오 레코더, 또는 비교적 적은 대용량 기억 요구 사항들을 가진 다른 장치들에서, 대용량 기억 장치는 NVRAM 대용량 기억 장치(152A)만을 사용해서 또는 플래시/자기/광 대용량 기억 장치(152B)와 조합된 NVRAM 대용량 기억 장치(152A)를 사용해서 구현될 수 있다. 비교적 큰 대용량 기억 요구 사항들을 가진 다른 전자 플랫폼들(예를 들어, 대규모 서버들)에서, 대용량 기억 장치는 자기 기억 장치(예를 들어, 하드 드라이브들) 또는 자기 기억 장치, 광 기억 장치, 홀로그램 기억 장치, 대용량 기억 장치 플래시 메모리 및 NVRAM 대용량 기억 장치(152A)의 임의의 조합을 사용해서 구현될 수 있다. 이러한 경우에, 기억할 책임이 있는 시스템 하드웨어 및/또는 소프트웨어는 효율적인 또는 달리 유용한 방식으로 FM(151B)/NVRAM 기억 장치(152A) 및 플래시/자기/광 대용량 기억 장치(152B) 간에 지속적 프로그램 코드 및 데이터의 블록들을 할당하기 위해 각종 지능적 지속적 기억 장치 할당 기술들을 구현할 수 있다.
예를 들어, 일 실시예에서, 고 전력 서버는 대량의 지속적 기억 장치를 위한 근거리 메모리(예를 들어, DRAM), PCMS 장치 및 자기 대용량 기억 장치로 구성된다. 일 실시예에서, 노트북 컴퓨터는 원거리 메모리 및 대용량 기억 장치(즉, 도 3에 도시된 바와 같이 역할들을 실행하기 위해 논리적으로 분할됨) 둘 다의 역할을 실행하는 근거리 메모리 및 PCMS 장치로 구성된다. 홈 또는 오피스 데스크탑 컴퓨터의 일 실시예는 노트북 컴퓨터와 유사하게 구성되지만, 대량의 지속적 기억 기능들을 제공하기 위해 하나 이상의 자기 기억 장치들을 또한 포함할 수 있다.
태블릿 컴퓨터 또는 휴대 전화의 일 실시예는 PCMS 메모리로 구성되지만, (비용/전력 절약을 위해) 잠재적으로 근거리 메모리 및 추가 대용량 기억 장치 없이 구성된다. 그러나, 태블릿/전화는 플래시 또는 PCMS 메모리 스틱 등의 분리형 대용량 기억 장치로 구성될 수 있다.
각종 다른 타입들의 장치들은 상술된 바와 같이 구성될 수 있다. 예를 들어, 휴대형 미디어 플레이어들 및/또는 개인 휴대 정보 단말기들(PDA들)은 상술된 태블릿들/전화들과 유사한 방식으로 구성될 수 있으며, 게임 콘솔들은 데스크탑 또는 랩탑들과 유사한 방식으로 구성될 수 있다. 유사하게 구성될 수 있는 다른 장치들은 디지털 카메라들, 라우터들, 셋탑 박스들, 디지털 비디오 레코더들, 텔레비전들 및 자동차들을 포함한다.
MSC 아키텍처의 실시예들
본 발명의 일 실시예에서, 시스템 메모리의 대량의 DRAM은 PCM으로 대체된다. 상술된 바와 같이, PCM은 DRAM에 비해 상당히 더 낮은 비용으로 메모리 용량을 상당히 개선하며, 비휘발성이다. 그러나, 비대칭 판독-대-기입 성능, 기입 사이클링 피로 한도뿐만 아니라 비휘발성 속성 등의 특정 PCM 특성들은 주요 소프트웨어 변경들을 초래하지 않고 DRAM을 직접 대체하는 것에 도전하게 한다. 후술되는 본 발명의 실시예들은 PCM을 통합하기 위한 소프트웨어-명백한 방법을 제공하면서, 소프트웨어 강화를 통해 더 새로운 사용들을 또한 가능케 한다. 이 실시예들은 메모리 서브시스템 아키텍처의 성공적인 전이를 촉진하며, 단일 PCM 풀을 사용해서 메모리 및 기억 장치 둘 다를 강화하기 위한 방법을 제공해서, 플랫폼의 별개의 비휘발성 기억 장치 단(tier)에 대한 필요성을 경감시킨다.
도 5a에 도시된 특정 실시예는 메모리 요청들을 생성하기 위한 내부 메모리 관리 유닛(MMU)(502) 및 특정 캐시 관리 방침에 따라 프로그램 코드 및 데이터의 라인들을 저장하기 위한 하나 이상의 내부 CPU 캐시들(503)을 각각 가진 하나 이상의 프로세서 코어들(501)을 포함한다. 상술된 바와 같이, 캐시 관리 방침은 배타적인 캐시 관리 방침(계층의 한 특정 캐시 레벨에 존재하는 임의의 라인이 임의의 다른 캐시 레벨에 존재하지 않음) 또는 포괄적인 캐시 관리 방침(복제 캐시 라인들이 캐시 계층의 상이한 레벨들에 저장됨)을 포함할 수 있다. 내부 캐시들(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)을 포함한다. 동작시, (예를 들어, 캐시 히트에 응답해서) 메모리 액세스 요청이 근거리 메모리(518)로부터 서비스받을 수 있다고 캐시 제어 유닛(512)이 결정하면, 근거리 메모리(518) 내에 저장된 데이터를 식별하기 위해 근거리 메모리 어드레스(NMA)를 생성한다. 근거리 메모리 제어 유닛(515)은 NMA를 해석하고, 응답으로 근거리 메모리(518)에 액세스하기 위해 전기 신호들을 생성한다. 상술된 바와 같이, 일 실시예에서, 근거리 메모리는 동적 랜덤 액세스 메모리(DRAM)이다. 이러한 경우에, 전기 신호들은 행 어드레스 스트로브(RAS) 및 열 어드레스 스트로브(CAS) 신호들을 포함할 수 있다. 그러나, 본 발명의 기본 원리들은 근거리 메모리를 위한 DRAM 사용으로 제한되지 않음을 주지해야만 한다.
다른 컴포넌트는 소프트웨어-명백 메모리 애플리케이션이 요구된 성능을 여전히 제공하면서 PCM 원거리 메모리(530) 특성들을 관리하는 최적화된 PCM 원거리 메모리 제어기(521)임을 보장한다. 일 실시예에서, PCM 제어기(521)는 캐시 제어 유닛(515)에 의해 생성된 MCA를 PCM 원거리 메모리(530)를 직접 어드레싱하는데 사용되는 PDA로 번역하는 어드레스 간접 표(520)를 포함한다. 이 번역들은 통상 5KB인 한 "블록(block)"의 입상도로 발생할 수 있다. 일 실시예에서, 임의의 특정 블록에 대한 높은 빈도의 기입들로 인한 마모 핫 스팟들이 없음을 보장하기 위해 원거리 메모리 제어기(521)가 끊임없이 PCM 장치 어드레스 공간의 도처에 PCM 블록들을 이동함에 따라 번역이 요구된다. 상술된 바와 같이, 이러한 기술은 때때로 본 명세서에서 "마모-레벨링(wear-leveling)"이라고 한다.
따라서, MSC(510)는 MSC(510)가 PCM 원거리 메모리(530)로의 트랜잭션들(예를 들어, 판독 및 기입)을 흡수, 합병 및 필터링할 수 있게 하는 캐시 제어 유닛(512)에 의해 관리된다. 캐시 제어 유닛(512)은 근거리 메모리(518) 및 PCM 원거리 메모리(530) 간의 모든 데이터 이동 및 일관성 요구 사항들을 관리한다. 또한, 일 실시예에서, MSC 캐시 제어기(512)는 CPU(들)에 인터페이스하고, 전형적인 DRAM 기반 메모리 서브시스템들에서 사용되는 표준 동기 로드/저장 인터페이스를 제공한다.
일례의 판독 및 기입 동작들이 이제 도 5a에 도시된 아키텍처의 맥락 내에서 기술될 것이다. 일 실시예에서, 판독 동작은 (예를 들어, 태그 캐시(511)를 사용해서) 요청된 데이터가 존재하는 지를 결정하기 위해 검색을 실행할 MSC 제어기(512)에 먼저 도달할 것이다. 존재하면, 요청 CPU, 코어(501) 또는 I/O 장치(도시되지 않음)에 데이터를 반환할 것이다. 데이터가 존재하지 않으면, MSC 제어기(512)는 시스템 메모리 어드레스(본 명세서에서는 메모리 채널 어드레스 또는 MCA라고도 함)와 함께 요청을 PCM 원거리 메모리 제어기(521)에 송신할 것이다. PCM 제어기(521)는 어드레스 간접 표(520)를 사용해서, 어드레스를 PDA로 번역하고 PCM의 이 영역에 대한 판독 동작을 지시할 것이다. PCM 원거리 메모리(530)로부터 요청된 데이터를 수신할 때, PCM 제어기(521)는 MSC 근거리 메모리(518)에 데이터를 저장할 MSC 제어기(512)에 요청된 데이터를 반환하고, 또한, 요청 CPU 코어(501) 또는 I/O 장치에 데이터를 송신할 것이다. 이 데이터에 대한 다음 요청들은 일부 다른 PCM 데이터로 대체될 때까지 MSC 근거리 메모리(518)로부터 직접 서비스받을 수 있다.
일 실시예에서, 메모리 기입 동작은 MSC 근거리 메모리(518)에 기입하는 MSC 제어기(512)로 또한 먼저 간다. 본 실시예에서, 데이터는 기입 동작이 수신될 때 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는 현재 프로세서/시스템 아키텍처들에서 발견된 종래의 캐시들에 비해 매우 크다. 제한 없이, 일례로서, 128GB의 PCM 원거리 메모리의 경우, MSC 근거리 메모리의 크기는 16GB 크기일 수 있다.
도 5b는 MSC(510)의 일 실시예와 연관된 추가 세부 사항들을 도시한다. 본 실시예는 커맨드들/어드레스들을 버퍼링하기 위한 커맨드 버퍼 추적 유닛(542) 및 MSC 범위 레지스터(RR) 유닛(545)으로부터의 제어 신호에 응답해서 MSC 동작 모드를 선택하는 캐시 액세스 모드 검사 유닛(544)을 포함하는 커맨드들 및 어드레싱의 책임이 있는 논리 유닛들의 집합을 포함한다. 수개의 일례의 동작 모드들이 후술된다. 간략하게, 이들은 근거리 메모리가 전형적인 캐싱 역할에서 사용되는 모드들 및 근거리 메모리(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)는 원거리 메모리를 어드레싱하고 데이터 버퍼들(546) 및 원거리 메모리 간에 데이터를 통신하는데 필요한 MCA들을 생성한다.
언급된 바와 같이, 일 실시예에서 사용되는 근거리 메모리(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)와 비교한다. 본 일례에서, 4-바이트 ECC가 데이터(525)의 64 바이트에 대해 생성된다. 그러나, 본 발명의 기본 원리들은 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); 10 및 11 = 미사용(unused))를 나타내며; 비트 23은 캐시 라인이 유효한 지를 나타낸다(예를 들어, 1 = 유효; 0 = 무효).
상술된 바와 같이 다이렉트-매핑 캐시 아키텍처를 사용해서, 근거리 메모리 어드레스가 시스템 메모리 어드레스로부터 직접 추출될 수 있게 하여, MSC(510)가 판독될 수 있기 전에 태그 저장소를 검색하는 레이턴시 비용을 감소시키거나 제거함으로써, 성능을 상당히 향상시킨다. 더욱이, MSC로부터의 데이터 판독의 ECC 검사와 동시에 실행되기에, MSC(510)가 요구된 데이터를 갖고 있는 지를 결정하기 위해 캐시 태그들을 검사하는 시간이 또한 제거된다.
특정 상태에서, 데이터와 함께 태그들을 저장하여 기입들에 대한 발행물을 생성할 수 있다. 일부 다른 어드레스에 대하여 데이터를 중복 기재하지 않음을 보장하기 위해 기입은 먼저 데이터를 판독한다. 모든 기입 전의 이러한 판독은 많은 비용이 들 수 있다. 본 발명의 일 실시예는 최근에 액세스된 근거리 메모리 어드레스들(NMA들)의 태그들을 유지하는 더티 라인 태그 캐시(a dirty line tag cache)를 사용한다. 다수의 기입들이 최근에 액세스된 어드레스들을 목표로 하기에, 꽤 작은 태그 캐시가 기입 전에 대부분의 판독들을 필터링하기 위한 효과적인 적중률을 획득할 수 있다.
PCM 원거리 메모리 제어기(521) 및 PCM 원거리 메모리 모듈들(530a-i)의 집합을 포함하는 PCM DIMM(519)의 일 실시예와 연관된 추가 세부 사항들이 도 5e에 도시된다. 일 실시예에서, PCM 원거리 메모리(530a-i)의 단일 풀은 시스템 메모리 및 기억 장치 사용들 간에 동적으로 공유된다. 본 실시예에서, 전체 PCM 풀(530a-i)은 4KB 크기의 "블록들"로 세분될 수 있다. PCM 기술자 표(PDT)(565)는 메모리 또는 기억 장치로서 각각의 PCM 사용을 식별한다. 예를 들어, PDT의 각각의 행은 각각의 블록의 사용을 식별하는 특정 열로 특정 블록을 나타낼 수 있다(예를 들어, 1 = 메모리; 0 = 기억 장치). 본 실시예에서, 초기 시스템 구성은 PCM 블록들을 (즉, PDT(565)를 프로그래밍함으로써) 기억 장치 및 메모리 사용 사이에서 PCM(530a-i) 내로 분할할 수 있다. 일 실시예에서, 동일한 표는 마모-레벨링 동작들을 위해 나쁜 블록들을 배제하고 여분의 블록들을 제공하는데 사용된다. 또한, PDT(565)는 각각의 PCMS 블록의 소프트웨어에 의해 사용되는 "논리" 블록 어드레스로의 매핑을 또한 포함할 수 있다. 시스템 메모리의 경우에, 논리 블록 어드레스는 MCA 또는 SPA와 동일하다. 이 연관은 PCMS 블록이 마모 레벨링으로 인해 이동될 때마다 어드레스 간접 표(AIT)(563)를 갱신하는데 필요하다. 이러한 상황이 발생할 때, 소프트웨어에 의해 사용된 논리 블록 어드레스는 상이한 PCMS 장치 어드레스(PDA)로 매핑되어야만 한다. 일 실시예에서, 이 매핑은 AIT에 저장되고 마모-레벨 이동시마다 갱신된다.
도시된 바와 같이, PCM 제어기(521)는 SPA들을 PCM 블록들로 매핑하기 위해 마모 관리 유닛(555) 및 어드레스 간접 유닛(563)에 응답하여 동작하는 시스템 물리 어드레스(SPA)-PCM 매퍼(556)를 포함한다. 일 실시예에서, 마모 관리 로직(555)은 PCM(530a-530i)의 기억 셀들이 너무 많은 기입 및/또는 소거 액세스들 후에 마모되기 시작한다는 사실을 고려하기 위해 마모 레벨링 알고리즘을 구현한다. 마모 레벨링은, 예를 들어, 저 사이클 카운트들을 가진 데이터 블록들이 가끔 이동하게 해서, 고 사이클 데이터 블록들이 저 사이클 데이터 블록들을 저장한 메모리 셀들에 배치될 수 있게 함으로써 PCM 장치의 메모리 셀들에 걸쳐 기입들 및 소거들을 확산한다. 통상, 다수의 블록들은 순환하지 않지만, 고 사이클 카운트 블록들은 실패할 가능성이 가장 크고, 마모 레벨링은 고 사이클 카운트 블록들의 어드레스들을 저 사이클 카운트 블록들로 교체한다(swap). 마모 관리 로직(555)은 하나 이상의 카운터들 및 레지스터들을 사용해서 사이클 카운트들을 추적할 수 있다(예를 들어, 카운터들은 사이클이 검출될 때마다 1씩 증분할 수 있으며, 결과는 레지스터들의 집합에 저장될 수 있음).
일 실시예에서, 어드레스 간접 로직(563)은 기입 동작들이 향해야만 하는 PCM 블록들의 표시를 포함하는 어드레스 간접 표(AIT)를 포함한다. AIT는 메모리 및 기억 장치 사용들 간에 블록들을 자동으로 이동하는데 사용될 수 있다. 소프트웨어 관점에서 볼 때, 모든 블록들에 대한 액세스들은 전형적인 메모리 로드/저장 의미들을 사용한다(즉, 마모 레벨링 및 어드레스 간접 동작들은 소프트웨어에 명백하게 발생함). 일 실시예에서, AIT는 소프트웨어에 의해 생성된 SPA를 PDA로 번역하는데 사용된다. 이 번역은 PCMS 장치들을 균일하게 마모하는데 필요하며, 데이터는 임의의 핫스팟들을 방지하기 위해 PDA 공간 주위로 이동될 필요가 있을 것이다. 이러한 이동이 발생하면, SPA 및 PDA 간의 관계는 변할 것이고, AIT는 이 새로운 번역을 반영하기 위해 갱신될 것이다.
SPA의 PCM으로의 매핑에 이어, 스케줄러 유닛(557)은 PCM 장치들(530a-i)에 대한 기본 PCM 동작들(예를 들어, 판독들 및/또는 기입들)의 스케줄을 정하고, PCM 프로토콜 엔진(558)은 판독/기입 동작들을 실행하는데 필요한 전기 신호를 생성한다. ECC 유닛(562)은 오류 검출 및 정정 동작들을 실행하고, 데이터 버퍼들(561)은 PCM 장치들(530a-i)로부터 판독되거나 PCM 장치들(530a-i)에 기입될 데이터를 일시적으로 버퍼링한다. 지속적 기입 버퍼(559)는 예상치 못한 전력 실패의 상황에서도 PCMS로 다시 기입될 것이 보장되는 데이터를 유지하는데 사용된다(예를 들어, 비휘발성 기억 장치를 사용해서 구현됨). 플러시 지원 로직(560)은 정기적으로 및/또는 특정 데이터 플러싱 알고리즘에 따라(예를 들어, 지속적 기입 버퍼들이 특정 임계값에 도달한 후에) 지속적 기입 버퍼들을 PCMS로 플러싱하기 위해 포함된다.
일 실시예에서, MSC(510)는 PCM 원거리 메모리 제어기(521)에 대한 직접 기억 장치 액세스들 및 MSC 캐시 제어 유닛(512)에 대한 메모리 액세스들을 자동으로 라우팅한다. PCM 원거리 메모리 제어기(521)를 향한 기억 장치 액세스들은 규칙적인 판독들 및/또는 기입들로 처리되고, 본 명세서에 기술된 어드레스 간접 및 마모 레벨링 메커니즘들은 평소대로 적용된다. 데이터가 기억 장치 및 메모리 간에 이동될 필요가 있을 때 구현될 수 있는 본 발명의 일 실시예에서 추가 최적화가 사용된다. 공통 PCM 풀(530a-i)이 사용되기에, 데이터 이동은 간단히 번역 표들(예를 들어, AIT)의 포인터들을 변경함으로써 제거 또는 연기될 수 있다. 예를 들어, 데이터가 기억 장치로부터 메모리로 전송될 때, 특정 물리 PCM 기억 장치 로케이션의 데이터를 식별하는 포인터는 동일한 물리 PCM 기억 장치 로케이션이 이제 시스템 메모리의 메모리 로케이션임을 나타내도록 갱신될 수 있다. 일 실시예에서, 이는 성능 및 전력 이점들을 둘 다 제공하기 위해 소프트웨어-명백한 방식(software-transparent manner)으로 하드웨어에 의해 실행된다.
소프트웨어-명백한 동작 모드 외에, MSC 제어기(512)의 일 실시예는 MSC 범위 레지스터들(RR들)(545)에 의해 표시된 대안의 동작 모드들을 제공한다. 이 동작 모드들은 이하를 포함할 수 있지만, 이들로 제한되지는 않는다:
1) 기억 장치 클래스 애플리케이션들을 위한 PCM 메모리의 직접 액세스. 이러한 사용은 PCM(519)에 제시된 기입들이 실제로 지속적 상태에 전념함을 보장하도록 MSC 제어기(512)에 또한 요구할 것이다.
2) 나머지를 MSC로서 유지하면서 직접 사용을 위해 소프트웨어에 그 일부분들을 노출하는, 근거리 메모리(518)의 하이브리드 사용. 근거리 메모리(518)의 일부분이 직접 사용을 위해 소프트웨어에 노출될 때, 그 일부분은 시스템 어드레스 공간 내에서 직접 어드레싱 가능하다. 이는 특정 애플리케이션들이 고성능 소형 영역(근거리 메모리(518)) 및 비교적 더 낮은 성능의 대량 영역(원거리 메모리(530)) 간의 메모리 할당을 명확하게 분할할 수 있게 한다. 대조적으로, MSC 내의 캐시로서 할당된 일부분은 시스템 어드레스 공간의 부분을 형성하지 않는다(그러나, 대신 본 명세서에 기술된 바와 같이 원거리 메모리(530)를 위한 캐시로서 동작함).
상술된 바와 같이, MSC 아키텍처는 수개의 상이한 시스템 분할 방식들이 가능하도록 정의된다. 이 방식들은 2개의 넓은 버킷들에 속한다:
(1) 분할 아키텍처: 이 방식에서, MSC 제어기(512)는 CPU에 위치하고 모든 시스템 메모리 요청들을 인터셉트한다. 근거리 메모리(예를 들어, DRAM) 및 원거리 메모리(예를 들어, PCM)에 연결되기 위해 CPU를 빠져나오는 MSC로부터의 2개의 별개의 인터페이스들이 있다. 각각의 인터페이스는 특정 타입의 메모리에 맞춰지고, 각각의 메모리는 성능 및 용량 면에서 독립적으로 스케일링된다.
(2) 통합 아키텍처: 이 방식에서, 단일 메모리 인터페이스가 CPU를 떠나고, 모든 메모리 요청들이 이 인터페이스로 송신된다. 근거리 메모리(예를 들어, DRAM) 및 원거리 메모리(예를 들어, PCM) 서브시스템과 함께 MSC 제어기(512)는 이 단일 인터페이스에서 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 장치 인터페이스
상이한 근거리 메모리 동작 모드들을 가진 실시예들
상술된 바와 같이, 2-레벨 메모리 계층은 초대형 DRAM-기반 근거리 메모리를 사용하면서 PCM 등의 고속 비휘발성 메모리를 시스템 메모리로서 도입하는데 사용될 수 있다. 근거리 메모리는 하드웨어-관리 캐시로서 사용될 수 있다. 그러나, 일부 애플리케이션들은 하드웨어 캐시-우호적이 아니며, 따라서, 이러한 메모리를 사용하는 대안적인 방법들로부터 이익을 얻는다. 임의의 소정의 시간에 서버에서 실행중인 수개의 상이한 애플리케이션들이 있을 수 있기 때문에, 본 발명의 일 실시예는 동시에 다수의 사용 모드들이 가능하게 할 수 있다. 또한, 일 실시예는 이러한 사용 모드들 각각에 대한 근거리 메모리의 할당을 제어하는 기능을 제공한다.
일 실시예에서, MSC 제어기(512)는 근거리 메모리를 사용하기 위한 이하의 모드들을 제공한다. 상술된 바와 같이, 일 실시예에서, 현재 동작 모드는 MSC 범위 레지스터들(RR들)(545)에 저장된 동작 코드들에 의해 지정될 수 있다.
(1) 후기입 캐싱 모드: 이 모드에서, 근거리 메모리(518)의 전부 또는 일부분들은 PCM 메모리(530)를 위한 캐시로서 사용된다. 후기입 모드에서, (기입이 향하는 캐시 라인이 캐시에 존재한다는 가정 하에) 모든 기입 동작은 처음에 근거리 메모리(518)로 향한다. (각각의 기입 동작이 원거리 메모리(530)에 즉시 전달되는 후술되는 연속 기입 모드와 대조적으로) 대응 기입 동작은 근거리 메모리(518) 내의 캐시 라인이 다른 캐시 라인으로 대체될 때만 PCM 원거리 메모리(530)를 갱신하도록 실행된다.
일 실시예에서, 판독 동작은 (예를 들어, 태그 캐시(511)를 사용해서) 요청된 데이터가 PCM 원거리 메모리(518)에 존재하는 지를 결정하기 위해 검색을 실행할 MSC 캐시 제어기(512)에 먼저 도달할 것이다. 존재하면, 요청 CPU, 코어(501) 또는 I/O 장치(도 5a에 도시되지 않음)에 데이터를 반환할 것이다. 데이터가 존재하지 않으면, MSC 캐시 제어기(512)는 시스템 메모리 어드레스와 함께 요청을 PCM 원거리 메모리 제어기(521)에 송신할 것이다. PCM 원거리 메모리 제어기(521)는 시스템 메모리 어드레스를 PCM 물리 장치 어드레스(PDA)로 번역하고 원거리 메모리(530)의 이 영역에 대한 판독 동작을 지시할 것이다. 상술된 바와 같이, 이 번역은 PCM 제어기(521)가 시스템 메모리 어드레스들 및 PCM PDA들 간의 번역을 위해 사용하는 어드레스 간접 표(AIT)(563)를 사용할 수 있다. 일 실시예에서, AIT는 메모리 액세스 동작들을 분산해서 PCM FM(530)에 대한 마모를 감소시키도록 구현된 마모 레벨링 알고리즘의 일부로서 갱신된다.
PCM FM(530)으로부터 요청된 데이터를 수신할 때, PCM FM 제어기(521)는 MSC 근거리 메모리(518)에 데이터를 저장하는 MSC 제어기(512)에 요청된 데이터를 반환하고, 또한, 요청 프로세서 코어(501) 또는 I/O 장치(도 5a에 도시되지 않음)에 데이터를 송신한다. 이 데이터에 대한 다음 요청들은 일부 다른 PCM FM 데이터로 대체될 때까지 근거리 메모리(518)로부터 직접 서비스받을 수 있다.
일 실시예에서, 메모리 기입 동작은 FM 캐시(518)로서 동작하는 MSC 근거리 메모리에 기입하는 MSC 제어기(512)로 또한 먼저 간다. 본 실시예에서, 데이터는 기입 동작이 수신될 때 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) 근거리 메모리 우회 모드: 이 모드에서, 모든 판독들 및 기입들은 FM 캐시(518)로서 동작하는 NM을 우회하여 PCM 원거리 메모리(530)에 직접 간다. 이 모드는, 예를 들어, 애플리케이션이 캐시-우호적이 아니거나 또는 데이터가 캐시 라인의 입상도로 지속될 것을 요구할 때, 사용될 수 있다. 일 실시예에서, 프로세서 캐시들(503)에 의해 실행되는 캐싱 및 FM 캐시(518)로서 동작하는 NM은 서로 독립적으로 동작한다. 따라서, 데이터는 프로세서 캐시들(503)에 캐싱되지 않은 FM 캐시(518)로서 동작하는 NM에 캐싱될 수 있으며(또한, 일부 경우들에서, 프로세서 캐시들(503)에 캐싱되는 것이 허용되지 않을 수 있음), 반대로도 그렇다. 따라서, 프로세서 캐시들(503)에서 "캐싱될 수 없음"으로 지정될 수 있는 특정 데이터는 FM 캐시(518)로서 동작하는 NM 내에 캐싱될 수 있다.
(3) 근거리 메모리 판독-캐시 기입 우회 모드: 이는 PCM(519)으로부터의 지속적 데이터의 판독 캐싱이 허용되는(즉, 지속적 데이터가 판독 전용 동작들을 위한 MSC(510)에 캐싱됨) 상기 모드의 변형이다. 이는 지속적 데이터의 대부분이 "판독 전용"이며 애플리케이션 사용이 캐시-우호적일 때 유용하다.
(5) 근거리 메모리 판독-캐시 연속 기입 모드: 이는 이전 모드의 변형이며, 판독 캐싱 외에, 기입-히트들이 또한 캐싱된다. MSC 근거리 메모리(518)로의 모든 기입은 PCM 원거리 메모리(530)로의 기입을 야기한다. 따라서, 캐시의 연속 기입 속성으로 인해, 캐시-라인 지속성이 여전히 보장된다.
(5) 근거리 메모리 직접 액세스 모드: 이 모드에서, 근거리 메모리의 전부 또는 일부분들은 소프트웨어에 직접 가시적이고, 시스템 메모리 어드레스 공간의 일부를 형성한다. 이러한 메모리는 완전히 소프트웨어 제어하에 있을 수 있다. PCM 메모리(519)로부터 근거리 메모리의 이 영역으로의 임의의 데이터 이동은 명확한 소프트웨어 복사본들을 요구한다. 이러한 방식은 PCM 원거리 메모리(530)에 비해 근거리 메모리(518)로부터 훨씬 더 높은 성능을 획득하는 소프트웨어용 비-균일 메모리 어드레스(NUMA) 메모리 도메인을 생성할 수 있다. 이러한 사용은 특정 데이터 구조들에 대해 매우 빠른 액세스를 요구하는 특정 고성능 컴퓨팅(HPC) 및 그래픽 애플리케이션들에 사용될 수 있다. 이 근거리 메모리 직접 액세스 모드는 근거리 메모리의 특정 캐시 라인들의 "피닝"과 동등하다. 이러한 피닝은 더 큰, 다중-방법, 집합-연관 캐시들에서 효과적으로 실행될 수 있다.
이하의 표 A에는 상술된 동작 모드들 각각이 요약되어 있다.
모드 판독 기입
후기입 캐시 손실시 할당

더티 퇴거(Dirty Evict)시 후기입
손실시 할당

더티 퇴거시 후기입
캐시 우회 원거리 메모리로 우회
원거리 메모리로 우회
판독 캐시/기입 우회 손실시 할당 원거리 메모리로 우회

캐싱된 라인 무효화
판독 캐시/연속 기입 손실시 할당 히트시에만 갱신

원거리 메모리에 연속 기입
직접 액세스 근거리 메모리로부터 직접 판독

원거리 메모리 액세스 없음
근거리 메모리에 직접 기입

원거리 메모리 액세스 없음
상술된 동작 모드들을 구현하는데 사용된 프로세서 및 칩셋 컴포넌트들은 이하를 포함한다:
(1) 2개의 층 메모리(2LM) 계층에서 근거리 메모리를 관리하는 메모리-사이드-캐시 제어기(512).
(2) 상술된 동작 모드들 각각에 대한 시스템 어드레스 범위들을 결정하는 메모리-사이드-캐시(510)의 범위 레지스터들의 집합(545)(도 5b 참조).
(3) PCM 메모리 서브시스템(519)으로부터 MSC 제어기(515)로의 기입 완료들에 응답하는 메커니즘.
(5) 근거리 메모리(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는 홈 에이전트(605)(예를 들어, 디코딩된 어드레스 공간에 대해 책임이 있는 홈 에이전트)를 식별하기 위해 프로세서 내의 디코드 로직(676)에 의해 먼저 디코딩된다. 선택된 홈 에이전트(605)와 연관된 디코드 로직(677)은 해당 특정 SPA 공간에 할당된 적합한 MSC 캐시 제어기(612)를 식별하는 메모리 채널 어드레스(MCA)를 생성하기 위해 SPA(675)(또는 그 일부분)를 더 디코딩한다. 그 후, 선택된 캐시 제어기(612)는 678에서 근거리 메모리 어드레스에 메모리 액세스 요청을 매핑하며, 680에서 인터리빙 동작(후술됨)이 선택적으로 이어지거나, 또는 대안으로 679에서 선택적 인터리빙 동작이 실행되며, (예를 들어, 상술된 바와 같이 어드레스 간접 및 마모 관리를 사용해서) PCM 장치 어드레스 PDA로의 PCM 원거리 메모리 제어기에 의한 매핑(681)이 이어진다.
선택적 인터리빙 프로세스의 일 실시예가 도 6d에 도시되며, 도 6d는 인터리빙을 사용해서 다수의 MSC들 및 PCM 어드레스 공간들에 걸쳐 소프트웨어 페이지들이 어떻게 분해될 수 있는 지를 도시한다. 도 6d에 도시된 일례에서, SPA 공간 내의 2개의 페이지들(682-683)은 MCA 공간 내의 2개의 집합들의 인터리빙된 라인들(685-686)을 생성하기 위해 캐시-라인 인터리브 로직(685)에 의해 인터리빙된다. 예를 들어, 메모리 페이지들(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)의 대안으로서) MSC들(610) 및/또는 PCM 장치들(619)에 걸쳐 작업량을 분배하는데 사용될 수 있다.
프로세서로부터 메모리 서브시스템으로
데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
현 프로세서 설계들에서, 프로세서 캐시가 플러싱될 때, 프로세서에 의해 더 이상 필요하지 않은(따라서, 폐기될 수 있는) 데이터 및 세이브되어야만 하는 데이터를 구별하기 위한 어떠한 정보도 메모리 서브시스템에 제공되지 않는다. 그 결과, 모든 플러싱된 데이터가 세이브된다. 이러한 정보가 메모리 서브시스템에 제공되는 경우, PCM 또는 더 구체적으로 PCMS 메모리를 사용하는 아키텍처 등의 새로운 아키텍처들의 성능이 향상될 수 있다. 예를 들어, 이러한 정보는, 특히, 기존 마모 레벨링 기술들과 조합해서 사용될 때, 기입들의 수를 감소시켜서 PCMS 메모리에 대한 마모를 감소시키는데 사용될 수 있다.
마모 레벨링은 도 5e에 대하여 상세히 상술되었고, 도 5e는 SPA들을 PCM 블록들로 매핑하기 위해 마모 관리 유닛(555) 및 어드레스 간접 유닛(563)에 응답하여 동작하는 시스템 물리 어드레스(SPA)-PCM 매퍼(556)를 가진 PCM 제어기(521)(일 실시예에서 PCMS 제어기)를 도시한다. 일 실시예에서, 마모 관리 로직(555)은 PCM(530a-530i)의 기억 셀들이 너무 많은 기입 및/또는 소거 액세스들 후에 마모되기 시작한다는 사실을 고려하기 위해 마모 레벨링 알고리즘을 구현한다. 마모 레벨링은, 예를 들어, 저 사이클 카운트들을 가진 데이터 블록들을 가끔 이동하게 해서, 고 사이클 데이터 블록들이 저 사이클 데이터 블록들을 저장한 메모리 셀들에 배치될 수 있게 함으로써 PCM 장치의 메모리 셀들에 걸쳐 기입들 및 소거들을 확산한다. 통상, 다수의 블록들은 순환하지 않지만, 고 사이클 카운트 블록들은 실패할 가능성이 가장 크고, 마모 레벨링은 고 사이클 카운트 블록들의 어드레스들을 저 사이클 카운트 블록들로 교체한다. 마모 관리 로직(555)은 하나 이상의 카운터들 및 레지스터들을 사용해서 사이클 카운트들을 추적할 수 있다(예를 들어, 카운터들은 사이클이 검출될 때마다 1씩 증분할 수 있으며, 결과는 레지스터들의 집합에 저장될 수 있음).
일 실시예에서, 어드레스 간접 로직(563)은 기입 동작들이 향해야만 하는 PCM 블록들의 표시를 포함하는 어드레스 간접 표(AIT)를 포함한다. AIT는 메모리 및 기억 장치 사용들 간에 블록들을 자동으로 이동하는데 사용될 수 있다. 소프트웨어 관점에서 볼 때, 모든 블록들에 대한 액세스들은 전형적인 메모리 로드/저장 의미들을 사용한다(즉, 마모 레벨링 및 어드레스 간접 동작들은 소프트웨어에 명백하게 발생함). 일 실시예에서, AIT는 소프트웨어에 의해 생성된 SPA를 PDA로 번역하는데 사용된다. 이 번역은 PCMS 장치들을 균일하게 마모하는데 필요한 것으로 요구되며, 데이터는 임의의 핫스팟들을 방지하기 위해 PDA 공간 주위로 이동될 필요가 있을 것이다. 이러한 이동이 발생하면, SPA 및 PDA 간의 관계는 변할 것이고, AIT는 이 새로운 번역을 반영하기 위해 갱신될 것이다.
일 실시예에서, 판독 및 기입 데이터 버퍼들(561)은 PCMS 부분들의 수명을 최대화해서, 판독/기입 대역폭을 증가시키고 전력을 감소시키도록, PCMS(530a-i)로부터 데이터를 판독하고 PCMS에 데이터를 기입하는데 사용된다. 본 명세서에 기술된 캐시 플러시 정보가 PCM 제어기(521)에 제공되지 않으면, 프로세서에 의해 더 이상 필요하지 않은 데이터 및 현재 사용중인 데이터를 구별할 수 없어서, PCMS 메모리(530a-i)의 성능을 감소시킨다.
본 명세서에 기술된 본 발명의 실시예들은 PCMS에 대한 기입들의 수를 감소시킴으로써 PCMS 메모리의 성능을 향상시키기 위해 메모리 플러시 정보를 메모리 서브시스템에 전달하기 위한 기술들을 제공한다. 또한, 메모리 플러시 정보는 세이브될 필요가 있는 데이터가 전력 사이클 중에 PCMS 버퍼의 나머지가 아닌 PCMS 메모리 제어기에 기입됨을 보장한다.
본 발명의 일 실시예는 DRAM(예를 들어, DDR) 메모리 및 PCMS 메모리 제어기(521) 등의 버퍼 인터페이스(561)를 가진 메모리를 구별하기 위해 도 5b-5c에 대하여 상술된 메모리 범위 레지스터들(545)을 사용한다. 일 실시예에서, PCMS 장치가 특정 집합의 캐싱 데이터를 저장하는데 사용됨을 범위 레지스터가 나타낼 때, 프로세서가 암묵적으로 또는 명확하게 플러싱될 때 또는 메모리 플러시가 요청될 때, 프로세서는 메모리 서브시스템에 대한 메모리 플러시 "힌트들"을 생성한다. 일 실시예에서, 힌트들은 QPI(QuickPath Interconnect) 인터페이스(특정 프로세서 아키텍처들에서 프론트 사이드 버스(FSB)를 대체하는 본 출원의 양수인에 의해 설계된 지점간 인터커넥트)를 통해 PCM 제어기(521)에 제공된다. 그러나, 본 발명의 기본 원리들은 프로세서 및 메모리 서브시스템 간에 데이터를 교환하기 위한 임의의 특정 타입의 인터페이스로 제한되지 않음을 주지해야만 한다. 그 후, 메모리 서브시스템은 메모리 플러시 힌트들을 사용해서, 메모리의 버퍼링을 관리하며, 필요할 때만 PCMS 메모리에 데이터가 기입됨이 보장된다.
일 실시예에서, 비트가 메모리 범위 레지스터들(545)에 추가되거나, 또는 대안으로, 캐싱되지 않음(UC), 연속 기입(WT), 기입 결합(WC), 기입-보호(WP) 및 후기입(WB) 등의 특정 메모리 범위들에 대한 액세스 모드들을 식별하기 위해 일부 프로세서들에서 사용되는 메모리 타입 범위 레지스터들(MTRR들)에 추가된다. 새로운 비트가 메모리 플러시 데이터를 메모리 제어기에 송신할 지를 나타내는데 사용된다. 일 실시예에서, 프로세서가 메모리 플러시 힌트 범위와 연관된 메모리 영역을 플러싱할 때, 프로세서는 메모리 플러시 힌트를 포함하는 추가 정보를 메모리 제어기에 송신한다. 메모리 제어기가 메모리 플러시 힌트를 수신할 때, 버퍼링된 데이터를 다시 PCMS 메모리 제어기(521)(또는 실제 PCMS 메모리(530a-i))에 기입한다. 제한 없이, 일례로서, 프로세서는 플러싱될 메모리 페이지를 식별하는 특수 메모리 플러시 페이지 명령어(MFLUSH)를 사용할 수 있으며, 동시에(또는 나중에) 메모리 플러시 힌트를 메모리 페이지가 상주하는 메모리 제어기에 제공할 수 있다.
도 7은 서로 통신하고 QPI 인터페이스를 통해 PCMS 메모리 제어기(521)와 통신하는 다수의 CPU들(704-705)을 포함하는 일례의 아키텍처를 도시한다. 사우스 브리지 모듈(706)은 다이렉트 미디어 인터페이스(DMI)를 통해 CPU들에 통신상 연결된다. 또한, 각각의 프로세서는 자신의 DDR 메모리(702-703)에 통신상 연결된다(그러나, DDR은 본 발명의 기본 원리들에 순응하기 위해 반드시 필요한 것은 아님).
도 8은 제1 범위의 시스템 메모리 어드레스들을 DDR 메모리(702)에 매핑하는 엔트리(810); 제2 범위의 시스템 메모리 어드레스들을 DDR 메모리(703)에 매핑하는 엔트리(811); 및 제3 범위의 시스템 메모리 어드레스들을 PCMS 메모리(521)에 매핑하는 엔트리(812)를 포함하는 도 7에 도시된 시스템의 일례의 시스템 메모리 맵(801)을 도시한다.
도 9는 본 발명의 일 실시예에 따른 메모리 플러시 힌트 데이터(901)를 포함하는 일례의 메모리 범위 레지스터(545)를 도시한다. 도시된 구현에서, 메모리 플러시 힌트 데이터(901)는 메모리 플러시 힌트가 제공되는 메모리 영역의 시작의 어드레스를 제공하는 메모리 시작 로케이션(910), 메모리 플러시 힌트가 제공되는 메모리 영역의 길이를 지정하는 메모리 길이 로케이션(911), 및 메모리 시작 로케이션(910) 및 메모리 길이 로케이션(911)에 의해 식별된 메모리 영역이 플러시 상태에 응답해서 PCMS 메모리에 저장되어야만 하는 지를 나타내는 메모리 플러시 인에이블/디스에이블 비트(912)를 포함한다. 일 실시예에서, 메모리 플러시 힌트가 소정의 메모리 영역에 대해 인에이블될 때, CPU는 메모리 플러시 힌트들을 메모리 서브시스템에 송신한다. 메모리 플러시 힌트들은 소프트웨어에 의한 명확한 호출을 통해 또는 CPU 퇴거 알고리즘의 일부로서 생성될 수 있다.
도 10은 시스템 어드레스들을 PCMS 장치 어드레스들로 번역하기 위한 로컬 메모리 어드레스 번역기(1001)에 대한 시스템 어드레스를 포함하는 본 발명의 일 실시예에 따른 PCMS 메모리 제어기(521)를 도시한다. 일 실시예에서, 도 10에 도시된 로컬 메모리 어드레스 번역기(1001)에 대한 시스템 어드레스는 도 5e에 도시된 PCMS 어드레스 맵 모듈(556) 및 어드레스 간접 모듈(563)에 대한 시스템 물리 어드레스를 포함한다. 또한, 일 실시예에서, 구성 레지스터들의 집합(1002)은 본 명세서에 기술된 바와 같이 플러시 힌트들이 각종 시스템 어드레스 범위들에 대해 제공될 것인 지를 지정하기 위한 메모리 범위 레지스터들(545)을 포함한다.
또한, 도 10에 판독 및 기입 버퍼 및 PCMS 프로토콜 엔진(둘 다 도 5e에 대하여 상술됨)이 도시되어 있다. 2개의 별개의 메모리 채널들(채널들 0 및 1)이 도 10에 도시되며, 각각 N개의 PCMS DIMM들을 가진다. 예를 들어, DIMM들(1006)은 메모리 채널 0에 할당되고, DIMM들(1007)은 메모리 채널 1에 할당된다. 물론, 본 발명의 기본 원리들은 임의의 특정 구성의 DIMM들 및 메모리 채널들로 제한되지 않는다.
본 발명의 일 실시예에서, 판독 및 기입 버퍼(561)와 연관된 플러시 힌트 프로세싱 로직(1005)은 메모리 플러시 힌트를 사용해서 버퍼로부터 PCMS DIMM들(1006-1007)로 데이터를 플러싱할 것인지 또는 버퍼에서 데이터를 유지할 것인 지를 결정한다.
도 11은 메모리 플러시 힌트들을 사용하는 방법의 일 실시예를 도시한다. 1101에서, 프로세서는 캐시를 플러싱하고, 1102에서, (예를 들어, MRR 또는 MTRR의 비트를 통해) 메모리 플러시 힌트가 인에이블되는 지에 대해 결정된다. 인에이블되지 않으면, 1103에서, 시스템은 힌트들을 사용하지 않고 실행을 계속한다. 인에이블되면, 1104에서, 메모리 기입들 또는 무효화 동작들에 대한 어드레스를 포함하는 메모리 플러시 힌트가 PCMS 메모리 제어기에 송신된다.
1105에서, 메모리 제어기는 프로세서로부터 메모리 플러시 힌트를 수신하고, 1106에서, 어드레스를 가진 메모리 플러시 힌트가 수신되는 지에 대해 결정된다. 수신되지 않으면, 1107에서, 규칙적인 응답이 프로세서에 송신된다. 예를 들어, 데이터를 수신한 직후에 응답이 다시 송신인에게 송신되면, 일 실시예에 따른 규칙적인 응답은 발송된 기입들이다. 메모리 플러시 힌트가 수신될 때, 메모리는 다시 PCMS에 기입되고, 그 후, 응답은 송신인에게 송신된다. 수신되면, 1108에서, PCMS 버퍼에 저장된 데이터는 (예를 들어, 상술된 바와 같이) 메모리 플러시 힌트에 따라 PCMS 메모리에 세이브된다.
MFLUSH 명령어가 사용되는 실시예들에서, 지속적인 저장소가 요구되면 블로킹 콜(blocking call)로서 지정될 수 있다. 전체 PCMS 어드레스 범위에서 메모리 플러시를 실행하는 것은, PCMS 메모리의 모든 데이터가 PCMS 메모리 장치들로 다시 반환됨을 보장할 것이다. 여기서, PCMS 메모리 어드레스 범위를 플러싱하기 위한 동작들은 특정 페이지 번호를 나타내는 MFLUSH 명령어가 이어지는 메모리 펜스 명령어(MFENCE)로 지정될 수 있다.
상술된 본 발명의 실시예들은 PCMS에 대한 기입들의 수를 감소시킴으로써 PCMS 메모리의 성능을 향상시키기 위해 메모리 서브시스템에 메모리 플러시 정보를 통신한다. 본 실시예들은 세이브될 필요가 있는 데이터가 (전력 사이클 중에 PCMS 버퍼의 나머지가 아닌) PCMS 메모리 제어기에 기입됨을 보장한다.
일 실시예에서, 하나 이상의 범위 레지스터들(RR들)은 범위가 프로세서의 바이트 어드레싱 가능 지속적 메모리의 어드레스 공간을 나타내는 프로세서(프로세서 패키지에 통합되거나 또는 별개의 실리콘)의 메모리 제어기 로직에 추가된다. 상술된 범위 레지스터들에 의해 결정된 지속적 메모리 공간을 목표로 하는 기입들의 경우, 메모리 제어기 로직은 기입들이 실제로 지속적임을 보장한다(즉, PCMS 제어기는 기입이 지속적임을 나타내는 응답을 반환함). PCMS 제어기가 응답을 반환하기 전에 전력-보호 캐시에 기입을 또한 저장하고, PCMS 메모리에 대한 차후 기입을 완료할 수 있음을 주지하라. 이는 PCM/PCMS 제어기에 대한 구현 선택 사항이다.
지속적 메모리에 대한 기입들이 실제로 지속적임을 소프트웨어가 보장하는 메커니즘은 '영속적(durable)'이라고 한다. 지속적 메모리에 대한 기입은 영속성 시점에 이어 발생할 수 있는 전력 사이클 또는 리셋 상태들과 무관하게 기입 내용이 보존될 때 그 시점에 영속적이다.
하나 이상의 범위 레지스터들이 메모리 제어기 로직에 추가되는 실시예에서, 소프트웨어는 메모리 펜스 또는 저장 펜스 명령어를 발행함으로써 소프트웨어는 영속성을 자체 보장할 수 있다. 이 펜스 명령어들은 간단히 프로세서 코어로부터의 두드러진 기입들을 카운트하고, 메모리 제어기 로직으로부터의 기입들에 대한 기입들의 완료를 대기한다. 메모리 제어기 로직이 범위 레지스터들 내에 속한 기입들이 대응 PCMS 제어기에 대해 모두 완료된 경우에만 완료들을 발행할 것이기에, 펜스 명령어의 완료는 지속적 메모리에 대한 기입들이 영속적이라는 소프트웨어에 대한 표시이다. 이 방식은 도 12에 도시된다.
1201에서, 프로세서는 지속적 메모리에 대한 하나 이상의 기입들을 발행하고, 영속성을 보장하기 위해 메모리 펜스 동작들을 발행한다. 기입이 메모리 제어기 범위 레지스터들에 의해 커버된 어드레스를 히트한다고 1202에서 결정되면, 1204에서, 메모리 제어기 로직은 PCMS 제어기에 대한 기입을 발행하고, 응답을 대기한다. 히트하지 않으면, 프로세서는 1203에서 규칙적인 실행을 계속한다.
응답이 PCMS 제어기로부터 수신된다고 1205에서 결정될 때, 1207에서, 프로세서는 메모리 펜스 동작을 완료한다. 응답이 수신될 때까지, 1206 내지 1204에서 프로세서는 응답을 대기한다.
본 발명의 실시예들은 상술된 각종 단계들을 포함할 수 있다. 이 단계들은 범용 또는 특수 목적 프로세서가 단계들을 실행하게 야기하는데 사용될 수 있는 기계 실행 가능 명령어들로 구현될 수 있다. 대안으로, 이 단계들은 단계들을 실행하기 위한 하드와이어드 로직을 포함하는 특정 하드웨어 컴포넌트들에 의해, 또는 프로그래밍된 컴퓨터 컴포넌트들 및 커스텀 하드웨어 컴포넌트들의 임의의 조합에 의해 실행될 수 있다.
본 명세서에 기술된 바와 같이, 명령어들은 특정 동작들을 실행하도록 구성된 또는 미리 결정된 기능을 가진 주문형 반도체들(ASIC들) 등의 하드웨어의 특정 구성들 또는 비일시 컴퓨터 판독 가능 매체로 구현된 메모리에 저장된 소프트웨어 명령어들이라고 할 수 있다. 따라서, 도면들에 도시된 기술들은 하나 이상의 전자 장치들(예를 들어, 종단국, 네트워크 요소 등)에서 저장 및 실행된 코드 및 데이터를 사용해서 구현될 수 있다. 이 전자 장치들은 비일시 컴퓨터 기계 판독 가능 기억 매체(예를 들어, 자기 디스크들; 광 디스크들; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 장치들; 상변화 메모리) 및 일시적 컴퓨터 기계 판독 가능 통신 매체(예를 들어, 전기, 광, 음향 또는 다른 형태의 전달 신호들 - 예를 들어, 반송파들, 적외선 신호들, 디지털 신호들 등) 등의 컴퓨터 기계 판독 가능 매체를 사용해서 코드 및 데이터를 저장하고 (내부적으로 및/또는 네트워크를 통해 다른 전자 장치들과) 통신한다. 또한, 이러한 전자 장치들은 하나 이상의 기억 장치들(비일시 기계 판독 가능 기억 매체), 사용자 입력/출력 장치들(예를 들어, 키보드, 터치스크린 및/또는 디스플레이) 및 네트워크 커넥션들 등의 하나 이상의 다른 컴포넌트들에 연결된 하나 이상의 프로세서들의 집합을 통상 포함한다. 프로세서들의 집합 및 다른 컴포넌트들의 연결은 통상 하나 이상의 버스들 및 브리지들(버스 제어기들이라고도 함)을 통한다. 기억 장치 및 네트워크 트래픽을 캐리하는 신호들은 각각 하나 이상의 기계 판독 가능 기억 매체 및 기계 판독 가능 통신 매체를 나타낸다. 따라서, 소정의 전자 장치의 기억 장치는 해당 전자 장치의 하나 이상의 프로세서들의 집합에서의 실행을 위해 코드 및 데이터를 통상 저장한다. 물론, 본 발명의 일 실시예의 하나 이상의 부분들이 소프트웨어, 펌웨어 및/또는 하드웨어의 상이한 조합들을 사용해서 구현될 수 있다. 이 상세한 설명의 도처에서, 설명을 위해, 다수의 특정 세부 사항들이 본 발명의 철저한 이해를 제공하기 위해 기재되었다. 그러나, 본 발명이 이러한 특정 세부 사항들 중 일부 없이 실현될 수 있음을 당업자는 알 것이다. 특정 실례들에서, 널리 공지된 구조들 및 기능들은 본 발명의 주제를 모호하게 하는 것을 방지하기 위해 정교하게 상세히 기술되지 않았다. 따라서, 본 발명의 범위 및 원리는 이하의 청구항들과 관련하여 판단되어야만 한다.

Claims (29)

  1. 컴퓨터 시스템 내에서 메모리 플러시 힌트들을 사용하기 위한 방법으로서,
    프로세서 캐시로부터 데이터를 플러싱하는 단계;
    상변화 메모리("PCM") 메모리 장치에 할당된 지정된 시스템 어드레스 범위에 대해 메모리 플러시 힌트들이 인에이블되는 지를 결정하는 단계;
    상기 메모리 플러시 힌트들이 상기 지정된 시스템 어드레스 범위에 대해 인에이블되면, 상기 PCM 메모리 장치의 PCM 메모리 제어기에 대한 메모리 플러시 힌트를 생성하는 단계; 및
    상기 메모리 플러시 힌트를 사용해서 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브할 지를 결정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 메모리 플러시 힌트에 따라 상기 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 PCM 메모리 장치는 상변화 메모리 및 스위치("PCMS") 메모리 장치를 포함하는 방법.
  4. 제1항에 있어서,
    플러시 힌트들이 상기 지정된 어드레스 범위에 대해 인에이블되지 않으면, 상기 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브하는 방법.
  5. 제1항에 있어서,
    메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 결정하는 단계는 메모리 범위 레지스터에 저장된 인에이블/디스에이블 비트를 판독하는 단계를 포함하고, 상기 인에이블/디스에이블 비트는 메모리 플러시 힌트들이 인에이블되면 제1 값을 갖고 메모리 플러시 힌트들이 디스에이블되면 제2 값을 갖는 방법.
  6. 제1항에 있어서,
    어드레스 간접 표(AIT)를 사용해서 상기 지정된 시스템 어드레스 범위에 대응하는 특정 PCM 메모리 블록들을 식별하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 시스템 어드레스 범위에 대해 메모리 채널을 지정하는 단계를 더 포함하는 방법.
  8. 시스템으로서,
    데이터가 플러싱되는 캐시를 갖는 프로세서 - 상기 데이터는 특정 시스템 어드레스 범위와 연관됨 - ; 및
    상기 특정 시스템 어드레스 범위에 대응하는 PCM 메모리 장치에 저장된 데이터에 대한 액세스를 관리하기 위한 PCM 메모리 제어기
    를 포함하고,
    상기 프로세서는 메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 결정하고, 메모리 플러시 힌트들이 상기 지정된 시스템 어드레스 범위에 대해 인에이블되면, 상기 프로세서는 상기 PCM 메모리 장치의 PCM 메모리 제어기에 메모리 플러시 힌트를 송신하며, 상기 PCM 메모리 제어기는 상기 메모리 플러시 힌트를 사용해서 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브할 지를 결정하는 시스템.
  9. 제7항에 있어서,
    상기 PCM 메모리 장치는 PCMS 메모리 장치인 시스템.
  10. 제7항에 있어서,
    상기 메모리 플러시 힌트들에 따라 저장될 데이터를 버퍼링하기 위한 상기 PCMS 메모리 제어기 내의 판독 및 기입 버퍼들을 더 포함하는 시스템.
  11. 제8항에 있어서,
    플러시 힌트들이 상기 지정된 어드레스 범위에 대해 인에이블되지 않으면, 상기 PCMS 메모리 제어기는 상기 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브하는 시스템.
  12. 제8항에 있어서,
    메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 나타내는 인에이블/디스에이블 비트를 포함하는 메모리 범위 레지스터를 포함하고, 상기 인에이블/디스에이블 비트는 메모리 플러시 힌트들이 인에이블되면 제1 값을 갖고 메모리 플러시 힌트들이 디스에이블되면 제2 값을 갖는 시스템.
  13. 제12항에 있어서,
    상기 지정된 시스템 어드레스 범위에 대응하는 특정 PCM 메모리 블록들을 식별하는 어드레스 간접 표(AIT)를 더 포함하는 시스템.
  14. 제13항에 있어서,
    상기 시스템 어드레스 범위와 연관된 DIMM 메모리 채널을 더 포함하는 시스템.
  15. 시스템으로서,
    데이터가 플러싱되는 캐시를 갖는 프로세서 - 상기 데이터는 특정 시스템 어드레스 범위와 연관됨 - ; 및
    상기 특정 시스템 어드레스 범위에 대응하는 PCM 메모리 장치에 저장된 데이터에 대한 액세스를 관리하기 위한 PCM 메모리 제어기
    를 포함하고,
    상기 프로세서는 상기 PCM 메모리 장치의 PCM 메모리 제어기에 메모리 플러시 힌트를 송신하고, 상기 PCM 메모리 제어기는 상기 메모리 플러시 힌트를 사용해서 MFLUSH 명령어에 의해 지정된 어드레스 범위 또는 페이지들에 기초하여 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브할 지를 결정하는 시스템.
  16. 제15항에 있어서,
    상기 PCM 메모리 장치는 PCMS 메모리 장치인 시스템.
  17. 제15항에 있어서,
    상기 메모리 플러시 힌트들에 따라 저장될 데이터를 버퍼링하기 위한 상기 PCMS 메모리 제어기 내의 판독 및 기입 버퍼들을 더 포함하는 시스템.
  18. 제15항에 있어서,
    상기 시스템 어드레스 범위와 연관된 DIMM 메모리 채널을 더 포함하는 시스템.
  19. 제15항에 있어서,
    FENCE 명령어는 상기 지정된 메모리 어드레스 범위 또는 페이지들이 캐시로부터 플러싱되게 하고 메모리 플러시 힌트를 상기 PCMS 메모리 제어기에 송신하는 시스템.
  20. 컴퓨터 시스템 내에서 메모리 플러시 힌트들을 사용하기 위한 방법으로서,
    하나 이상의 기입들을 지속적 메모리에 발행하는 단계;
    상기 하나 이상의 기입들을 가진 메모리 펜스 명령어를 발행하는 단계;
    메모리 제어기 범위 레지스터에 의해 커버된 어드레스를 기입이 히트하는 지를 결정하는 단계;
    그렇다면, PCM 제어기에 기입을 발행하고 응답을 대기하는 단계;
    응답을 수신할 때 상기 메모리 펜스 명령어를 완료하는 단계
    를 포함하는 방법.
  21. 제20항에 있어서,
    상기 어드레스가 범위 레지스터에 의해 커버되지 않으면 정상 실행 모드를 계속하는 단계를 더 포함하는 방법.
  22. 제20항에 있어서,
    상기 PCM 제어기는 PCMS 제어기인 방법.
  23. 시스템으로서,
    데이터가 플러싱되는 캐시를 갖는 프로세서 수단 - 상기 데이터는 특정 시스템 어드레스 범위와 연관됨 - ; 및
    상기 특정 시스템 어드레스 범위에 대응하는 PCM 메모리 장치 수단에 저장된 데이터에 대한 액세스를 관리하기 위한 PCM 메모리 제어기 수단
    을 포함하고,
    상기 프로세서 수단은 메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 결정하고, 메모리 플러시 힌트들이 상기 지정된 시스템 어드레스 범위에 대해 인에이블되면, 상기 프로세서 수단은 상기 PCM 메모리 장치 수단의 PCM 메모리 제어기에 메모리 플러시 힌트를 송신하며, 상기 PCM 메모리 제어기 수단은 상기 메모리 플러시 힌트를 사용해서 플러싱된 데이터를 상기 PCM 메모리 장치에 세이브할 지를 결정하는 시스템.
  24. 제23항에 있어서,
    상기 PCM 메모리 장치 수단은 PCMS 메모리 장치인 시스템.
  25. 제23항에 있어서,
    상기 메모리 플러시 힌트들에 따라 저장될 데이터를 버퍼링하기 위한 상기 PCMS 메모리 제어기 수단 내의 판독 및 기입 버퍼 수단을 더 포함하는 시스템.
  26. 제25항에 있어서,
    플러시 힌트들이 상기 지정된 어드레스 범위에 대해 인에이블되지 않으면, 상기 PCMS 메모리 제어기 수단은 상기 플러싱된 데이터를 상기 PCM 메모리 장치 수단에 세이브하는 시스템.
  27. 제26항에 있어서,
    메모리 플러시 힌트들이 지정된 시스템 어드레스 범위에 대해 인에이블되는 지를 나타내는 인에이블/디스에이블 비트를 포함하는 메모리 범위 레지스터 수단을 포함하고, 상기 인에이블/디스에이블 비트는 메모리 플러시 힌트들이 인에이블되면 제1 값을 갖고 메모리 플러시 힌트들이 디스에이블되면 제2 값을 갖는 시스템.
  28. 제27항에 있어서,
    상기 지정된 시스템 어드레스 범위에 대응하는 특정 PCM 메모리 블록들을 식별하는 어드레스 간접 표(AIT) 수단을 더 포함하는 시스템.
  29. 제28항에 있어서,
    상기 시스템 어드레스 범위와 연관된 DIMM 메모리 채널 수단을 더 포함하는 시스템.
KR1020147017885A 2011-12-21 2011-12-21 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 KR101636634B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066492 WO2013095437A1 (en) 2011-12-21 2011-12-21 System and method for intelligently flushing data from a processor into a memory subsystem

Publications (2)

Publication Number Publication Date
KR20140098220A true KR20140098220A (ko) 2014-08-07
KR101636634B1 KR101636634B1 (ko) 2016-07-05

Family

ID=48669089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147017885A KR101636634B1 (ko) 2011-12-21 2011-12-21 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US9269438B2 (ko)
KR (1) KR101636634B1 (ko)
CN (1) CN104115129B (ko)
BR (1) BR112014015051B1 (ko)
DE (1) DE112011106013T5 (ko)
GB (1) GB2514023B (ko)
WO (1) WO2013095437A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190133549A (ko) 2018-05-23 2019-12-03 단국대학교 산학협력단 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법
KR20210103380A (ko) * 2020-02-13 2021-08-23 주식회사 멤레이 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치
WO2024006501A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Dynamic memory reconfiguration

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104126181A (zh) * 2011-12-30 2014-10-29 英特尔公司 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换
EP3025237A4 (en) * 2013-07-26 2017-04-19 Intel Corporation Methods and apparatus for supporting persistent memory
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
WO2015047482A1 (en) * 2013-09-30 2015-04-02 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
JP6131170B2 (ja) * 2013-10-29 2017-05-17 株式会社日立製作所 計算機システム、及びデータ配置制御方法
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US10296240B2 (en) 2014-04-28 2019-05-21 Hewlett Packard Enterprise Development Lp Cache management
CN105278919B (zh) * 2014-10-20 2018-01-19 威盛电子股份有限公司 硬件数据预取器及执行硬件数据的方法
US9891916B2 (en) 2014-10-20 2018-02-13 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system
US10049052B2 (en) 2014-10-27 2018-08-14 Nxp Usa, Inc. Device having a cache memory
US9767041B2 (en) * 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
US20160350534A1 (en) * 2015-05-29 2016-12-01 Intel Corporation System, apparatus and method for controlling multiple trusted execution environments in a system
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US10268382B2 (en) 2015-06-18 2019-04-23 Mediatek Inc. Processor memory architecture
US10423330B2 (en) * 2015-07-29 2019-09-24 International Business Machines Corporation Data collection in a multi-threaded processor
KR102312399B1 (ko) * 2015-09-07 2021-10-15 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
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
US10210088B2 (en) * 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
US10649896B2 (en) 2016-11-04 2020-05-12 Samsung Electronics Co., Ltd. Storage device and data processing system including the same
KR102208058B1 (ko) 2016-11-04 2021-01-27 삼성전자주식회사 저장 장치 및 이를 포함하는 데이터 처리 시스템
CN108241484B (zh) * 2016-12-26 2021-10-15 上海寒武纪信息科技有限公司 基于高带宽存储器的神经网络计算装置和方法
WO2018119773A1 (zh) * 2016-12-28 2018-07-05 华为技术有限公司 非易失内存访问方法、装置和系统
US10229065B2 (en) * 2016-12-31 2019-03-12 Intel Corporation Unified hardware and software two-level memory
US9933963B1 (en) 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
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
US10664406B2 (en) 2017-03-21 2020-05-26 International Business Machines Corporation Coordinated utilization of parallel paths to improve efficiency
US10198369B2 (en) * 2017-03-24 2019-02-05 Advanced Micro Devices, Inc. Dynamic memory remapping to reduce row-buffer conflicts
US20190019568A1 (en) * 2017-07-12 2019-01-17 Nanya Technology Corporation Fuse-blowing system and method for operating the same
US10678475B2 (en) 2017-07-27 2020-06-09 Hewlett Packard Enterprise Development Lp Tracking write requests to media controllers
US20190042445A1 (en) * 2017-08-07 2019-02-07 Intel Corporation Technologies for caching persistent two-level memory data
US11016669B2 (en) * 2018-05-01 2021-05-25 Qualcomm Incorporated Persistent write data for energy-backed memory
CN108959526B (zh) * 2018-06-28 2021-10-15 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
CN112567351B (zh) * 2018-11-15 2024-04-09 华为技术有限公司 控制从动态随机存储器中预取数据的方法、装置及系统
US11307904B2 (en) * 2018-12-18 2022-04-19 Ati Technologies Ulc Configurable peripherals
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
US11567877B2 (en) * 2019-05-03 2023-01-31 Intel Corporation Memory utilized as both system memory and near memory
WO2020236261A1 (en) 2019-05-23 2020-11-26 Cray Inc. Dragonfly routing with incomplete group connectivity
US11656967B2 (en) 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US11467988B1 (en) * 2021-04-14 2022-10-11 Apple Inc. Memory fetch granule
US11853213B2 (en) 2021-04-28 2023-12-26 Seagate Technology Llc Intelligent management of ferroelectric memory in a data storage device
US11899590B2 (en) 2021-06-18 2024-02-13 Seagate Technology Llc Intelligent cache with read destructive memory cells
US20220414001A1 (en) * 2021-06-25 2022-12-29 Microsoft Technology Licensing, Llc Memory inclusivity management in computing systems
CN116196351A (zh) * 2023-02-27 2023-06-02 郝锋 一种小儿退热贴及其制备方法和应用

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222627A1 (en) * 2008-02-29 2009-09-03 Denali Software, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US20100185820A1 (en) * 2009-01-21 2010-07-22 Advanced Micro Devices, Inc. Processor power management and method
US20110107049A1 (en) * 2009-11-02 2011-05-05 Samsung Electronics Co., Ltd. Method and apparatus adapted to prevent code data from being lost in solder reflow

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268022A1 (en) * 2004-05-26 2005-12-01 Pelley Perry H Cache line memory and method therefor
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222627A1 (en) * 2008-02-29 2009-09-03 Denali Software, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US20100185820A1 (en) * 2009-01-21 2010-07-22 Advanced Micro Devices, Inc. Processor power management and method
US20110107049A1 (en) * 2009-11-02 2011-05-05 Samsung Electronics Co., Ltd. Method and apparatus adapted to prevent code data from being lost in solder reflow

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190133549A (ko) 2018-05-23 2019-12-03 단국대학교 산학협력단 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법
KR20210103380A (ko) * 2020-02-13 2021-08-23 주식회사 멤레이 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치
WO2024006501A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Dynamic memory reconfiguration

Also Published As

Publication number Publication date
GB2514023A (en) 2014-11-12
US20140297919A1 (en) 2014-10-02
KR101636634B1 (ko) 2016-07-05
CN104115129B (zh) 2017-09-08
WO2013095437A1 (en) 2013-06-27
US9269438B2 (en) 2016-02-23
GB2514023B (en) 2019-07-03
BR112014015051B1 (pt) 2021-05-25
DE112011106013T5 (de) 2014-10-02
BR112014015051A2 (pt) 2017-06-13
GB201411389D0 (en) 2014-08-13
CN104115129A (zh) 2014-10-22

Similar Documents

Publication Publication Date Title
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
US11200176B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
KR101636634B1 (ko) 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
KR101779723B1 (ko) 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
US9286205B2 (en) Apparatus and method for phase change memory drift management

Legal Events

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

Payment date: 20190530

Year of fee payment: 4