KR101673280B1 - 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들 - Google Patents

영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들 Download PDF

Info

Publication number
KR101673280B1
KR101673280B1 KR1020140031292A KR20140031292A KR101673280B1 KR 101673280 B1 KR101673280 B1 KR 101673280B1 KR 1020140031292 A KR1020140031292 A KR 1020140031292A KR 20140031292 A KR20140031292 A KR 20140031292A KR 101673280 B1 KR101673280 B1 KR 101673280B1
Authority
KR
South Korea
Prior art keywords
memory
random access
access memory
volatile random
processor
Prior art date
Application number
KR1020140031292A
Other languages
English (en)
Other versions
KR20140113605A (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 KR20140113605A publication Critical patent/KR20140113605A/ko
Application granted granted Critical
Publication of KR101673280B1 publication Critical patent/KR101673280B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Abstract

본원에 기재되는 프로세서는 비휘발성 랜덤 액세스 메모리와 로직 회로로의 인터페이스를 갖는다. 로직 회로는 비휘발성 랜덤 액세스 메모리를 트랜잭션의 영구 저장소로 보는 트랜잭션에 의해 수정되는 캐시 라인들을 식별한다. 로직 회로는 또한 비휘발성 랜덤 액세스 메모리를 영구 저장소로 보는 트랜잭션과는 다른 소프트웨어 프로세스에 의해 수정되는 캐시 라인들을 식별한다.

Description

영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들{INSTRUCTIONS TO MARK BEGINNING AND END OF NON TRANSACTIONAL CODE REGION REQUIRING WRITE BACK TO PERSISTENT STORAGE}
본 발명은 일반적으로 컴퓨터 시스템 분야에 관한 것이다. 보다 구체적으로, 본 발명은 비휘발성 메모리 티어(tier)를 포함하는 멀티-레벨 메모리 계층을 구현하기 위한 디바이스 및 방법에 관한 것이다.
A. 현재의 메모리 및 저장소 구성
현재 컴퓨터 혁신에 대한 제한 요소들 중 하나는 메모리 및 저장소 기술이다. 종래의 컴퓨터 시스템에서, 시스템 메모리(메인 메모리, 프라이머리 메모리(primary memory), 실행가능 메모리로도 알려짐)는 동적 랜덤 액세스 메모리(DRAM)에 의해 일반적으로 구현된다. DRAM 기반 메모리는, 계속적으로 내부 커패시터들을 충전해야 하므로 메모리 판독 또는 기록이 발생하지 않는 때에도 전력을 소모한다. DRAM 기반 메모리는 휘발성이며, 이것은 일단 전력이 제거되면 DRAM 메모리에 저장된 데이터가 소실됨을 의미한다. 종래의 컴퓨터 시스템은 또한 성능을 향상시키기 위해 복수 개의 레벨의 캐싱(caching)에 의존한다. 캐시(cache)는, 메모리 액세스 요청을 시스템 메모리로부터 서비스될 수 있는 것보다 빠르게 서비스하기 위해 프로세서와 시스템 메모리 사이에 위치하는 고속 메모리이다. 이러한 캐시는 통상적으로 정적 랜덤 액세스 메모리(SRAM)으로 구현된다. 가장 자주 액세스되는 데이터 및 명령어가 캐시 레벨 중 하나 안에 저장되도록 보장하여, 메모리 액세스 동작의 수를 줄이고 성능을 향상시키기 위해, 캐시 관리 프로토콜이 사용될 수 있다.
대용량 저장소(2차 저장소 또는 디스크 저장소로도 알려짐)와 관련하여, 종래의 대용량 저장 디바이스는 통상적으로 자기 매체(예를 들어, 하드 디스크 드라이브), 광학 매체(예를 들어, 컴팩트 디스크(CD) 드라이브, 디지털 다기능 디스크(DVD) 등), 홀로그래픽 매체(holographic media), 및/또는 대용량-저장 플래시 메모리(예를 들어, 고체 상태 드라이브(SSD), 제거가능 플래시 드라이브 등)를 포함한다. 일반적으로, 이러한 저장 디바이스는, 다양한 I/O 프로토콜을 구현하는 다양한 I/O 어댑터(I/O adapter)를 통해 프로세서에 의해 액세스되므로, 입력/출력(I/O) 디바이스로 간주된다. 이러한 I/O 어댑터 및 I/O 프로토콜은 상당한 양의 전력을 소모하고 다이 면적(die area) 및 플랫폼(platform)의 폼 팩터(form factor)에 상당한 영향을 미칠 수 있다. 영구적 전원에 연결되지 않았을 때 제한된 배터리 수명을 가지는 포터블 또는 이동 디바이스(예를 들어, 랩탑, 노트북, 태블릿 컴퓨터, 개인 디지털 어시스턴트(PDA), 포터블 미디어 플레이어, 포터블 게임 디바이스, 디지털 카메라, 이동 전화, 스마트폰, 피쳐 폰(feature phone) 등)은 활성 및 유휴 전력 버짓(active and idle power budget)을 맞추기 위해 저전력 인터커넥트(interconnect) 및 I/O 컨트롤러를 통해 프로세서에 통상적으로 연결되는 제거가능 대용량 저장 디바이스(예를 들어, 임베디드 멀티미디어 카드(eMMC), 시큐어 디지털(SD) 카드)를 포함할 수 있다.
(부트 메모리(BIOS 플래시로도 알려짐)와 같은) 펌웨어 메모리와 관련하여, 종래의 컴퓨터 시스템은 통상적으로, 자주 판독되나 좀처럼(또는 결코) 기입되지 않는 영구 시스템 정보(persistent system information)를 저장하기 위해 플래시 메모리 디바이스를 사용한다. 예를 들어, 부트 프로세스(boot process) 동안 키 시스템 컴포넌트를 초기화하기 위해 프로세서에 의해 실행되는 초기 명령어들(기본 입력 및 출력 시스템(Basic Input and Output System; BIOS) 이미지)는 통상적으로 플래시 메모리 디바이스에 저장된다. 시장에서 현재 구할 수 있는 플래시 메모리 디바이스는 일반적으로, 제한된 속도(예를 들어, 50 MHz)를 가진다. 이 속도는 판독 프로토콜을 위한 오버헤드에 의해 더 감소된다(예를 들어, 2.5 MHz). BIOS 실행 속도를 높이기 위해, 종래의 프로세서는 일반적으로, 부트 프로세스의 프리-익스텐서블 펌웨어 인터페이스(Pre-Extensible Firmware Interface; PEI) 단계 동안, BIOS 코드의 일부를 캐싱한다. 프로세서 캐시의 크기가 PEI 단계에서 사용되는 BIOS 코드(PEI BIOS 코드로도 알려짐)의 크기에 제한을 가한다.
B. 상변화 메모리( Phase - Change Memory ; PCM ) 및 관련 기술
때때로 상변화 랜덤 액세스 메모리(phase change random access memory; PRAM or PCRAM), PCME, 오브닉 통합 메모리(Ovonic Unified Memory), 또는 칼코게나이드 RAM(Chalcogenide RAM; C-RAM)으로도 불리는, 상변화 메모리(PCM)는 칼코게나이드 유리의 고유한 특징을 이용하는 비휘발성 컴퓨터 메모리의 일종이다. 전류의 통과에 의해 발생하는 열(heat)의 결과로, 칼코게나이드 유리는 크리스탈(crystalline) 및 비정질(amorphous)의 두 상태들 사이에서 전환될 수 있다. PCM의 최근 버전은 두 개의 추가적인 구별되는 상태들을 달성할 수 있다.
PCM의 메모리 요소는 보다 빨리 스위칭될 수 있고, (개별 비트를 1 또는 0으로 변환하는) 기입은 먼저 셀의 전체 블록을 삭제할 필요없이 이루어질 수 있고, 기입으로부터의 열화가 더 느리기 때문에(PCM 디바이스는 대략 1억 번의 기입 사이클을 견딜 수 있다; PCM 열화는 프로그래밍, 금속(또는 다른 물질의) 완화(migration), 및 다른 매커니즘 동안의 열 확장(thermal expansion)에 기인한다), PCM은 플래시보다 고성능을 제공한다.
이하 상세한 설명 및 첨부 도면은 본 발명의 실시예를 설명하기 위해 사용된다.
도 1은 본 발명의 일 실시예에 따른 캐시 및 시스템 메모리 구성을 도시한다.
도 2는 본 발명의 일 실시예에서 채택된 메모리 및 저장소 계층을 도시한다.
도 3은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 도시한다.
도 4는 트랜잭션 프로세스를 도시한다.
도 5는 캐시에 이루어진 변화를 트랙킹하기 위한 특별한 하드웨어를 가지는 프로세서를 도시한다.
도 6은 영구 저장소(persistence storage)에 비 트랜잭션 데이터 변화를 기입하기 위해 도 5의 특별한 하드웨어를 사용하는 프로세스를 도시한다.
도 7은 트랜잭션 롤 백(transactional roll back) 및 영구 저장소로의 비 트랜잭션 기입을 지원하기 위해 도 5의 특별한 하드웨어가 사용될 수 있는 것을 도시하는 통합 프로세스를 도시한다.
도 8은 컴파일(compilation) 프로세스를 도시한다.
다음의 설명에서, 본 발명에 대한 좀 더 철저한 이해를 제공하기 위해, 로직 구현, 오피코드(opcode), 오퍼랜드를 지정하는 수단, 리소스 파티셔닝/공유/이중화 구현, 시스템 컴포넌트의 타입 및 상호 관계, 및 로직 파티셔닝/통합 선택과 같은 많은 구체적인 세부사항이 기술될 수 있다. 그러나, 당업자라면 본 발명이 그러한 구체적인 세부사항 없이도 실시될 수 있음을 인식할 것이다. 다른 경우, 제어 구조, 게이트 레벨 회로, 및 전체(full) 소프트웨어 명령어 시퀀스는 본 발명을 불명확하게 하지 않도록 하기 위해 상세히 제시되지 않을 수 있다. 당업자는 포함된 설명에 따라 과도한 실험 없이도 적절한 기능을 구현할 수 있을 것이다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예" 등에 대한 언급은 기술된 실시예가 특정한 특징, 구조, 또는 특성을 포함할 수 있다는 것을 의미하지만, 모든 실시예가 반드시 그러한 특정한 특징, 구조, 또는 특성을 포함하는 것은 아닐 수 있다. 더욱이, 그러한 문구는 반드시 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정한 특징, 구조, 또는 특성이 실시예와 관련하여 기술된 경우, 이것은 명시적으로 기술되든 기술되지 않든 당업자의 지식 내에서 다른 실시예와 관련하여 그러한 특징, 구조, 또는 특성을 달성할 것으로 생각된다.
이하의 설명 및 청구범위에서, 용어 "연결된(coupled)"과 "접속된(connected)"이 그 파생어와 함께 사용될 수 있다. 이러한 용어가 서로 동의어로 의도된 것이 아니라는 점이 이해되어야 한다. "연결된"은 서로 직접적인 물리적 또는 전기적 접촉에 있거나 있지 않은 두 개 또는 그 이상의 요소들이, 서로 협력하거나 상호작용하는 것을 표시하기 위해 사용된다. "접속된"은 서로 연결된 두 개 이상의 요소의 통신의 구축(establishment of communication)을 표시하기 위해 사용된다.
괄호로 묶은 텍스트 및 대시 기호로 이루어진 보더(borders)(예를 들어, 큰 대시, 작은 대시, 도트 대시, 도트)는 본 발명의 실시예에 추가적인 특징들을 추가하기 위한 선택적인 동작/컴포넌트를 도시하기 위해 때때로 본 명세서에서 사용된다. 하지만, 이러한 표기는 이러한 것들이 유일한 선택사항 또는 선택적 동작/컴포넌트를 의미하고/의미하거나 솔리드 보더(solid border)의 블록이 특정 실시예에서 선택적이 아니라는 것을 의미하는 것으로 이해되어서는 안 된다.
도입
프로세서 코어 개수의 증가와 가상화(virtualization)와 같은 새로운 사용 모델과 함께, 메모리 용량 및 성능 요구도 계속하여 증가한다. 또한, 메모리 전력 및 코스트(cost)는 전자 시스템의 전체 전력 및 코스트 각각의 중요한 요소가 되고 있다.
일부 실시예는, 메모리 기술 사이의 성능 요구사항과 용량 요구사항을 지능적으로 세분화으로써 이러한 도전을 해결한다. 이러한 접근 방식의 초점은 시스템 메모리의 대부분은 매우 조밀한 비휘발성 랜덤 액세스 메모리(NVRAM)를 사용하여 구현하면서도 상대적으로 적은 양의 DRAM과 같은 상대적으로 고속 메모리로 성능을 제공하는 데 있다. 이하에 기술된 본 발명의 실시예는, NVRAM의 사용을 위해 계층 메모리 서브시스템 구조를 가능하게 하는 플랫폼 구성을 정의한다. 메모리 계층에서 NVRAM의 사용은 또한 부트 공간 및 대용량 저장소 구현과 같은 새로운 사용을 가능하게 한다.
도 1은 본 발명의 일 실시예에 따른 캐시 및 시스템 메모리 구성을 도시한다. 특히, 도 1은 내부 프로세서 캐시(120), 내부 캐시(들)(106) 및 외부 캐시(107-109) 양자를 포함할 수 있고 파 메모리 캐시(far memory cache)처럼 동작하는 "니어 메모리(near memory)"(121) 및 "파 메모리(far memory)"(122)의 세트를 포함하는 메모리 계층을 도시한다. 본 발명의 일부 실시예에서 "파 메모리"로서 사용될 수 있는 하나의 특정한 종류의 메모리는 비휘발성 랜덤 액세스 메모리(NVRAM)이다. 따라서, NVRAM의 개요가 아래에 설명되고, 이어서 파 메모리 및 니어 메모리의 개요가 이어진다.
A. 비휘발성 랜덤 액세스 메모리( NVRAM )
PCM, 상변화 메모리 및 스위치(Phase Change Memory and Switch; PCMS)(후자가 전자보다 더 구체적인 구현임), 바이트-액세스가능 영구 메모리(BPRAM), 저장 클래스 메모리(storage class memory; SCM), 유니버셜 메모리, Ge2Sb2Te5, 프로그램가능한 금속화 셀(programmable metallization cell; PMC), 저항성 메모리(RRAM), RESET(아모퍼스) 셀, SET(크리스탈) 셀, PCME, 오브신스키 메모리(Ovshinsky memory), 강유전성 메모리(폴리머 메모리 및 폴리(N-비닐카르바졸)로도 알려짐), 강자성 메모리(스핀트로닉스(Spintronics), 스핀-이동 토크 RAM(spin-transfer torque RAM; SPRAM), 스핀 터널링 RAM(spin tunneling RAM; STRAM), 자기 저항성 메모리(magnetoresistive memory), 자기 메모리, 자기 랜덤 액세스 메모리(MRAM)로도 알려짐), 및 반도체-산화물-질화물-산화물-반도체(Semiconductor-oxide-nitride-oxide-semiconductor; SONOS, 유전체 메모리로도 알려짐)를 포함하여, NVRAM을 위한 많은 가능한 기술 선택이 있다.
NVRAM은 다음의 특성을 가진다:
(1) 고체 상태 디스크(SSD)에서 사용되는 플래시 메모리와 유사하고, 휘발성인 SRAM 및 DRAM과는 상이하게, 전력이 제거되더라도 그 내용을 유지한다;
(2) SRAM 및 DRAM과 같은 휘발성 메모리보다 적은 전력을 소모;
(3) SRAM 및 DRAM과 유사한 랜덤 액세스(랜덤 어드레스가능(randomly addressable)으로도 알려짐);
(4) SSD에서 발견되는 플래시보다 낮은 레벨의 단위(granularity)(예를 들어, 바이트 레벨)로 재기입되거나 삭제될 수 있음(한번에 하나의 "블록"만 재기입 및 삭제될 수 있음 - NOR 플래시의 경우 최소 64K바이트 크기, NAND 플래시의 경우 16K바이트);
(5) 시스템 메모리로 사용되고, 시스템 메모리 어드레스 스페이스의 전부 또는 부분에 할당됨;
(6) 비순차 동작(out-of-order operation)을 지원하기 위한 식별자(ID)를 지원하는 프로토콜을 사용하여 버스를 통해 프로세서에 연결될 수 있고 시스템 메모리로서의 NVRAM의 동작을 지원하기에 충분히 작은 레벨의 단위(64 또는 128 바이트와 같은 캐시 라인 크기)로 액세스하는 것을 허락. 예를 들어, 버스는 비순차가 아닌 메모리 버스(예를 들어, DDR3, DDR4 등과 같은 DDR 버스)일 수 있다. 다른 예로서, 버스는 PCI 익스프레스(PCIE) 버스, 데스크탑 관리 인터페이스(DMI) 버스, 또는 비순차 프로토콜 및 충분히 작은 페이로드(payload) 크기(예를 들어, 64 또는 128 바이트와 같은 캐시 라인 크기)를 사용하는 다른 종류의 버스일 수 있다;
(7) 다음 중 하나 이상:
a) 플래시와 같은 비-휘발성 메모리/저장 기술보다 빠른 기입 속도;
b) (플래시보다 빠르고, DRAM 판독 속도에 근접 또는 동등한) 초고속 판독 속도;
c) (SSD에서 사용되는 플래시 메모리와 같이 데이터를 기입하기 전에 (1로 덮어쓰는) 삭제를 요구하지 않는) 직접 기입가능;
d) (부트 ROM 및 SSD에서 사용되는 플래시보다) 고장(failure) 전에 더 많은 수의 기입; 및/또는
위에서 설명한 바와 같이, 한번에 완전한 "블록"으로 재기입 및 삭제되어야 하는, 플래시 메모리와 달리, 임의의 주어진 구현에서 NVRAM이 액세스되는 단위의 레벨은, NVRAM이 연결되는 특정 메모리 컨트롤러 및 특정 메모리 버스 또는 다른 종류의 버스에 의존할 수 있다. 예를 들어, NVRAM이 시스템 메모리로서 사용되는 일부 구현에서, 하나의 바이트의 단위로 액세스될 수 있는 내재 능력과는 상관 없이, NVRAM은 캐시 라인의 단위(예를 들어, 64 바이트 또는 128 바이트 캐시 라인)로 액세스될 수 있고, 이것은 캐시 라인이 메모리 서브시스템이 메모리를 액세스하는 레벨이기 때문이다. 따라서, NVRAM이 메모리 서브시스템 내에 배치될 때, 동일한 메모리 서브시스템에서 사용되는 DRAM(예를 들어, "니어 메모리")와 동일한 레벨의 단위로 액세스될 수 있다. 그러한 경우에도, 메모리 컨트롤러 및 메모리 버스 또는 다른 종류의 버스에 의해 NVRAM에 액세스하는 단위의 레벨은 플래시에 의해 사용되는 블록 크기의 단위 및 I/O 서브시스템의 컨트롤러 및 버스의 액세스 크기보다 작다.
NVRAM은, 특히 시스템 메모리 구현에서와 같이 상당 수의 기입들이 발생할 수 있는 수 많은 기입 액세스들 이후, 파 메모리 레벨(far memory level)에서의 저장 셀들이 마모되기 시작한다는 사실을 위해 웨어 레벨링(wear leveling) 알고리즘을 또한 포함할 수 있다. 고주기 카운트 블록들(high cycle count blocks)은 이런 방식으로 마모될 확률이 높으므로, 웨어 레벨링 스프레드들은 고주기 카운트 블록들의 어드레스들을 저주기 카운트 블록들(low cycle count blocks)과 스와핑함으로써 파 메모리 셀에 기입한다. 대부분의 어드레스 스와핑은 하드웨어, 저레벨 소프트웨어(예를 들면, 저레벨 드라이버 또는 운영체제) 또는 이 둘의 조합에 의해 다뤄지므로, 대부분의 어드레스 스와핑은 일반적으로 애플리케이션 프로그램들에게 명료하다(transparent)는 것에 주의한다.
B. 파 메모리( Far Memory )
본 발명의 일부 실시예들의 파 메모리(122)는 NVRAM으로 구현되지만, 임의의 특정 메모리 기술에 반드시 제한되는 것은 아니다. 파 메모리(122)는 메모리/저장 계층구조에서 그 특징 및/또는 그 응용에 있어서 다른 명령어 및 데이터 메모리/저장 기술들로부터 구별된다. 예를 들면, 파 메모리(122)는,
1) 각각의 프로세서 코어들(101-104)마다의 전용 레벨 0 및 레벨 1 내부 프로세서 캐시들(101a-b, 102a-b, 103a-b, 및 104a-b) 및 프로세스 코어들에 의해 공유되는 저레벨 캐시(LLC; 105)를 위해 사용될 수 있는 정적 랜덤 액세스 메모리(SRAM);
2) 프로세서(100) 내부의(예를 들면, 프로세서(100)와 동일 다이 상의) 캐시(106)로 구성되고/구성되거나 프로세서 외부의(예를 들면, 프로세서(100)와 동일하거나 다른 패키지 내의) 하나 이상의 캐시들(107-109)로 구성되는 동적 랜덤 액세스 메모리(DRAM); 및
3) 대용량 저장소로 적용되는 플래시 메모리/자기 디스크/광 디스크(미도시); 및
4) (부트 ROM, BIOS 플래시 및/또는 TPM 플래시를 참조할 수 있는) 펌웨어 메모리로 적용되는 플래시 메모리 또는 다른 판독 전용 메모리(ROM)와 같은 메모리(미도시)
와 상이하다.
파 메모리(122)는, 프로세서(100)에 의해 직접 어드레스 지정 가능하고(addressable) 대용량 저장소로 적용되는 플래시/자기 디스크/광 디스크와 대조적으로 프로세서(100)와 충분히 보조를 맞출 수 있는 명령어 및 데이터 저장소로 사용될 수 있다. 더구나, 위에서 논의되고 아래에서 자세히 기술되듯이, 파 메모리(122)는 메모리 버스 상에 위치될 수 있고 메모리 컨트롤러와 직접 통신할 수 있으며 그 후 프로세서(100)와 직접 통신한다.
파 메모리(122)는 (같은 곳에 배치되는(Co-locating) PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)으로도 알려진) 하이브리드 메모리들을 형성하기 위하여 다른 명령어 및 데이터 저장 기술들(예를 들면, DRAM)과 조합될 수 있다. PCM/PCMS를 포함하는 위의 기술들 중 적어도 일부는 시스템 메모리 대신 또는 시스템 메모리에 더하여 대용량 저장소를 위해 사용될 수 있고, 이런 방식으로 적용될 때에는 프로세서에 의해 랜덤 액세스 가능하거나 바이트 어드레스 지정 가능하거나(byte addressable), 직접 어드레스 지정 가능할 필요가 없음을 주의한다.
설명의 편의를 위하여, 본 출원의 남은 부분의 대부분은 "NVRAM" 또는 보다 구체적으로 "PCM" 또는 "PCMS"를 파 메모리(122)를 위한 기술 선택으로 지칭할 것이다. 따라서, 용어들 NVRAM, PCM, PCMS 및 파 메모리는 앞으로의 논의에서 교체가능하게 사용될 수 있다. 그러나, 위에서 논의된 바와 같이 파 메모리를 위한 다른 기술들이 또한 활용될 수 있다는 것을 알아야 한다. 또한, NVRAM은 파 메모리로서의 사용으로 제한되지 않는다.
C. 니어 메모리( Near Memory )
"니어 메모리(121)"는 파 메모리(122) 앞에 구성되는 중간 레벨의 메모리로서 파 메모리에 비해 낮은 판독/기입 액세스 지연(read/write access latency)을 가지고/가지거나 보다 대칭적인(symmetric) 판독/기입 액세스 지연을 가진다(즉, 기입 시간과 거의 동등한 판독 시간을 가짐). 일부 실시예에서, 니어 메모리(121)는 파 메모리(122)보다 상당히 낮은 기입 지연을 가지지만 비슷한(예를 들면, 약간 낮거나 동일한) 판독 지연을 가진다; 예를 들면, 니어 메모리(121)는 휘발성 랜덤 액세스 메모리(VRAM)와 같이 휘발성 메모리일 수 있고, DRAM 또는 다른 고속 커패시터 기반 메모리를 포함할 수 있다. 그러나, 본 발명의 근본적인 원리들은 이러한 특정 메모리 종류들에 제한되지 않음에 주의한다. 추가적으로, 니어 메모리(121)는 상대적으로 낮은 밀도를 가질 수 있고/가질 수 있거나 파 메모리(122)보다 제조하는 데 비용이 더 많이 들 수 있다.
일 실시예에서, 니어 메모리(121)는 파 메모리(122)와 내부 프로세서 캐시들(120) 사이에 구성된다. 아래에 기술될 일부 실시예에서, 니어 메모리(121)는, 예를 들면 판독/기입 지연 제한들 및 메모리 열화 제한들을 포함하는 파 메모리의 성능 및/또는 사용 제한들을 마스킹하는 하나 이상의 MSC들(memory-side caches)(107-109)로 구성된다. 이러한 구현들에서, MSC(107-109)와 파 메모리(122)의 조합은, 시스템 메모리로 오직 DRAM만을 사용하는 시스템과 비슷하거나(approximates), 동등하거나, 또는 이를 능가하는 성능 레벨에서 동작한다. 아래에서 자세히 논의되듯이, 도 1에서 "캐시"로 도시되지만, 니어 메모리(121)는 캐시의 역할을 수행하는 것에 더하여, 또는 그 대신에 다른 역할들을 수행하는 모드를 포함할 수 있다.
니어 메모리(121)는 (캐시(들)(106)와 같이) 프로세서 다이 상에 위치할 수 있고/있거나 (캐시들(107-109)과 같이) 프로세서 다이 외부에 위치할 수 있다(예를 들면, CPU 패키지 상에 위치하는 별개의 다이 상에 위치하거나, CPU 패키지로의 고대역폭 링크를 갖는 CPU 패키지 외부에 위치한 별개의 다이 상에, 예를 들면 메모리 듀얼 인-라인 메모리 모듈(DIMM), 라이저/메자닌(riser/mezzanine) 또는 컴퓨터 마더보드 상에 위치). 니어 메모리(121)는, (아래에서 자세히 기술되는 바와 같이) DDR 또는 다른 고대역폭 링크들과 같은 단일 또는 복수의 고대역폭 링크들을 이용하여 프로세서(100)와 통신하도록 연결될 수 있다.
예시적인 시스템 메모리 할당 방식
도 1은 본 발명의 실시예들에서 다양한 레벨의 캐시들(101-109)이 SPA(system physical address) 스페이스(116-119)에 대하여 어떻게 구성되는지를 도시한다. 언급한 바와 같이, 본 실시예는 하나 이상의 코어들(101-104)을 갖는 프로세서(100)를 포함하고, 각 코어는 자신의 고유의 전용 상부 레벨 캐시(L0; 101a-104a) 및 중간레벨 캐시(MLC; L1; 101b-104b)를 갖는다. 프로세서(100)는 또한 공유되는 LLC(105)를 포함한다. 이러한 다양한 캐시 레벨들의 동작은 잘 이해되고 여기에서 자세히 기술되지 않을 것이다.
도 1에 도시된 캐시들(107-109)은 특정 시스템 메모리 어드레스 범위, 또는 비연속 어드레스 범위들의 세트에 전용될 수 있다. 예를 들면, 캐시(107)는 시스템 메모리 어드레스 범위 #1(116)를 위한 MSC로 동작하도록 전용되고, 캐시들(108 및 109)은 시스템 메모리 어드레스 범위들 #2(117) 및 #3(118)의 겹치지 않는 부분들을 위한 MSC들로 동작하도록 전용된다. 후자의 구현은, (예를 들어, MSC들로 구성될 때) 프로세서(100)에 의해 사용되는 SPA 스페이스가 캐시들(107-109)에 의해 사용되는 어드레스 스페이스로 끼워지는(interleaved) 시스템들을 위해 사용될 수 있다. 일부 실시예들에서, 이러한 후자 어드레스 스페이스는 MCA(memory channel address) 스페이스로 지칭된다. 일 실시예에서, 내부 캐시들(101a-106)은 전체 SPA 스페이스를 위한 캐싱 동작들을 수행한다.
본 명세서에서 사용되는 시스템 메모리는 프로세서(100) 상에서 실행되는 소프트웨어에게 보이고/보이거나 상기 소프트웨어에 의해 직접 어드레스 지정가능한 메모리이다; 캐시 메모리들(101a-109)은 그들이 시스템 어드레스 스페이스의 직접-어드레스 지정가능 부분(a directly-addressable portion)을 형성하지 않는다는 점에서 소프트웨어에게 명료하게 동작할 수 있는 반면, 코어들은 또한 소프트웨어가 일부 제어(구성, 정책들, 힌트들 등)을 일부 또는 전체 캐시(들)에게 제공하도록 명령어들의 실행을 지원할 수 있다. 시스템 메모리의 영역들(116-119)로의 세분화가 (예를 들면, 시스템 설계자에 의해) 시스템 구성 프로세서의 일부로서 수동으로 수행될 수 있고/있거나 소프트웨어에 의해 자동으로 수행될 수 있다.
일 실시예에서, 시스템 메모리 영역들(116-119)은 파 메모리(예를 들면, PCM) 및 일부 실시예들에서는 시스템 메모리로서 구성된 니어 메모리를 이용하여 구현된다. 시스템 메모리 어드레스 범위 #4는 (캐싱 모드가 아닌) 시스템 메모리 모드에서 구성되는 니어 메모리일 수 있는 DRAM과 같은 더 고속의 메모리를 이용하여 구현되는 어드레스 범위를 나타낸다.
도 2는 본 발명의 실시예들에 따른 니어 메모리(144) 및 NVRAM을 위한 메모리/저장소 계층(140) 및 다른 구성가능한 동작 모드들을 도시한다. 메모리/저장소 계층(140)은 (1) 프로세서 캐시들(150A) (예를 들면 도 1에서 캐시들(101A-105)) 및 선택적으로 (본 명세서에서 기술되는 특정 동작 모드에서) 파 메모리를 위한 캐시로서의 니어 메모리(150B)를 포함할 수 있는 캐시 레벨(150), (2) 니어 메모리가 존재할 때(또는 니어 메모리가 존재하지 않을 때 시스템 메모리(174)로서의 NVRAM만 존재)의 파 메모리(151B)(예를 들면, PCM과 같은 NVRAM) 및 선택적으로 (본 명세서에서 기술되는 특정 동작 모드에서) 시스템 메모리로서 동작하는 니어 메모리(151A)를 포함할 수 있는 시스템 메모리 레벨(151), (3) 플래시/자기/광학 대용량 저장소(152B) 및/또는 NVRAM 대용량 저장소(152A) (예를 들면, NVRAM(142)의 일부)를 포함할 수 있는 대용량 저장소 레벨(152) 및 (4) BIOS 플래시(170) 및/또는 BIOS NVRAM(172) 및 선택적으로 TPM(trusted platform module) NVRAM(173)을 포함할 수 있는 펌웨어 메모리 레벨(153)을 포함하는 복수의 레벨을 갖는다.
지적된 바와 같이, 니어 메모리(144)는, 니어 메모리가 파 메모리를 위한 캐시로서 동작하는 제1 모드(FM를 위한 캐시로서의 니어 메모리(150B)); 니어 메모리가 시스템 메모리로서 동작하고(151A) SPA 스페이스의 일부를 차지하는 제2 모드(때때로 니어 메모리 "직접 액세스" 모드로 지칭함); 및 스크래치패드 메모리(192) 또는 기입 버퍼(193)와 같이 하나 이상의 추가적인 동작 모드를 포함하는 여러 상이한 모드들에서 동작하도록 구현될 수 있다. 본 발명의 일부 실시예들에서, 니어 메모리는 파티셔닝 가능하여(partitionable) 각각의 파티션은 지원되는 모드들 중 상이한 하나에서 동시에 동작할 수 있고, 상이한 실시예들은 하드웨어(예를 들면, 퓨즈들, 핀들), 펌웨어, 및/또는 소프트웨어에 의하여(일례로 각각의 모드 및 파티션을 식별하는 저장된 상이한 이진법 코드들일 수 있는, MSC 컨트롤러(124) 내의 프로그램가능한 범위 레지스터들의 세트를 통하여) 파티션들의 구성(예를 들면, 사이즈들, 모드들)을 지원할 수 있다.
도 2의 시스템 어드레스 스페이스 A(190)는 니어 메모리가 파 메모리를 위한 MSC(150B)로 구성될 때의 동작을 도시하도록 사용된다. 이 구성에서, 시스템 어드레스 스페이스 A(190)는 전체 시스템 어드레스 스페이스를 나타낸다(그리고 시스템 어드레스 스페이스 B(191)는 존재하지 않음). 대안적으로, 시스템 어드레스 스페이스 B(191)는 니어 메모리의 전체 또는 일부가 시스템 어드레스 스페이스의 일부에 할당될 때의 구현을 보여주는 데 사용된다. 이 실시예에서, 시스템 어드레스 스페이스 B(191)는 니어 메모리(151A)에 할당된 시스템 어드레스 스페이스의 범위를 나타내고, 시스템 어드레스 스페이스 A(190)는 NVRAM(174)에 할당된 시스템 어드레스 스페이스의 범위를 나타낸다.
추가로, 파 메모리를 위한 캐시(150B)로 동작할 때, 니어 메모리(144)는 MSC 컨트롤러(124)의 제어 하에서 여러 서브모드들로 동작할 수 있다. 이러한 모드들 각각에서, NMA(near memory address space)는, 니어 메모리가 시스템 어드레스 스페이스의 직접-어드레스 지정 가능한 부분을 형성하지 않는다는 점에서 소프트웨어에 명료하다. 이러한 모드들은 아래 모드들을 포함하지만 이에 제한되지는 않는다:
(1) 라이트백 캐싱 모드 ( Write - Back Caching Mode ): 이 모드에서 FM 캐시로 동작하는 니어 메모리(150B)의 전부 또는 일부는 NVRAM 파 메모리(FM)(151B)를 위한 캐시로 사용된다. 라이트백 모드 동안에, (기입이 디렉팅되는(directed) 캐시 라인이 캐시 내에 존재하는 것을 가정할 때) 모든 기입 동작은 처음에 FM을 위한 캐시로서의 니어 메모리(150B)로 디렉팅된다. 대응하는 기입 동작이 수행되어 (이하에서 기술될, 각각의 기입 동작이 NVRAM FM(151B)로 즉시 전파되는 연속 기입 모드와 대조적으로) FM을 위한 캐시로서의 니어 메모리(150B) 내의 캐시라인이 또다른 캐시라인에 의해 대체되는 경우에만 NVRAM FM(151B)을 업데이트한다.
(2) 니어 메모리 우회 모드 ( Near Memory Bypass Mode ): 이 모드에서 모든 판독 및 기입은 FM 캐시(150B)로 동작하는 NM을 우회하고(bypass) NVRAM FM(151B)으로 바로 간다. 이 모드는, 예를 들면, 애플리케이션이 캐싱하기 좋지 않거나(not cache friendly) 또는 데이터가 캐시 라인의 단위로 영구 저장소에 커밋되는 것을 요구하는 경우 사용될 수 있다. 일 실시예에서, 프로세서 캐시들(150A) 및 FM 캐시로 동작하는 NM(150B)에 의해 수행되는 캐싱은 서로에게 독립적으로 동작한다. 따라서, 프로세서 캐시들(150A)에 캐시되지 않은 (그리고 일부의 경우에서 프로세서 캐시들(150A)에 캐시되는 것이 허용되지 않을 수 있는) 데이터가 FM 캐시로 동작하는 NM(150B)에 캐싱될 수 있고 또한 반대의 경우도 성립한다. 따라서, 프로세서 캐시들에서 "캐싱될 수 없는" 것으로 지정될 수 있는 특정 데이터는 FM 캐시로 동작하는 NM(150B) 내에 캐싱될 수 있다.
(3) 니어 메모리 판독-캐시 기입 우회 모드( Near Memory Read - Cache Write Bypass Mode ): 이 모드는 위 모드의 변형으로서 NVRAM FM(151B)으로부터의 영구 데이터의 판독 캐싱이 허용된다(즉, 영구 데이터가 판독전용(read-only) 동작들을 위하여 파 메모리를 위한 캐시로서의 니어 메모리(150B)에 캐싱됨). 이는 대부분의 영구 데이터가 "판독전용"이고 애플리케이션 사용이 캐싱하기 좋은 경우 유용하다.
(4) 니어 메모리 판독-캐시 연속 기입 모드( Near Memory Read - Cache Write -Through Mode ): 이 모드는 니어 메모리 판독-캐시 기입 우회 모드의 변형으로서, 판독 캐싱에 더하여 기입-히트(write-hit) 역시 캐싱된다. FM를 위한 캐시로서의 니어 메모리(150B)로의 모든 기입은 FM(151B)으로의 기입을 유발한다. 따라서, 캐시의 연속 기입 속성 때문에, 캐시-라인 영속성(cache-line persistence)은 여전히 보장된다.
니어 메모리 직접 액세스 모드에서 동작할 때, 시스템 메모리로서의 니어 메모리(151A)의 전부 또는 일부는 소프트웨어에 직접 보이고 SPA 스페이스의 일부를 형성한다. 이러한 메모리는 전적으로 소프트웨어 제어 하에 있을 수 있다. 이런 방식은, NVRAM 시스템 메모리(174)에 비해 니어 메모리(144)로부터 더 높은 성능을 갖는 소프트웨어를 위한 NUMA(non-uniform memory address) 메모리 도메인을 생성할 수 있다. 일 예로, 이런 사용은 특정 데이터 구조에 매우 빠른 액세스를 요구하는 특정 HPC(high performance computing) 및 그래픽 애플리케이션들을 위해 이용될 수 있지만, 이에 제한되지는 않는다.
대안적인 실시예에서, 니어 메모리 직접 액세스 모드는 니어 메모리 내의 특정 캐시 라인들(즉, NVRAM(142)에 동시에 저장된 데이터를 갖는 캐시 라인들)을 "피닝(pinning)"함으로써 구현된다. 이러한 피닝은 더 크고, 다중경로(multi-way), 세트 연상형(set-associative) 캐시들에서 효과적으로 행해질 수 있다.
도 2는 또한 NVRAM(142)의 일부가 펌웨어 메모리로 사용될 수 있다는 것을 도시한다. 예를 들면, BIOS NVRAM(172) 부분은 (BIOS 플래시(170)에 BIOS 정보를 저장하는 대신 또는 그에 더하여) BIOS 이미지들을 저장하도록 사용될 수 있다. BIOS NVRAM 부분(172)은 SPA 스페이스의 일부일 수 있고, 프로세서 코어들(101-104) 상에서 실행되는 소프트웨어에 의해 직접 어드레스 지정가능하며, BIOS 플래시(170)는 I/O 서브시스템(115)을 통해 어드레스 지정가능하다. 또다른 예로서, TPM(trusted platform module) 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)는 상기 전체 시스템 메모리와, 데이터, 명령어들, 상태들, 그리고 그 외 영구(persistent) 및 비영구(non-persistent) 정보들을 저장하기 위해 컴퓨터 시스템(300)에 의해 사용되는 저장소 계층을 포함한다. 상술한 바와 같이, NVRAM(142)는 전형적인 메모리 내에서의 역할들 및 시스템 메모리, 대용량 저장소, 펌웨어 메모리, TPM 메모리 또는 이와 유사한 것들의 저장소 계층을 구현하기 위해 구성될 수 있다. 도 3의 상기 실시예에서는, NVRAM(142)는 FM(151B), NVRAM 대용량 저장소(152A), BIOS NVRAM(172) 및 TMP NVRAM(173)으로 파티셔닝된다. 다른 역할들의 저장소 계층들도 또한 고려될 수 있으며 NVRAM(142)의 응용은 상기 서술된 역할들로 제한되지 않는다.
예로서, FM을 위한 캐시로서의 니어 메모리(150B)가 라이트백 캐싱 중인 동안의 동작이 설명된다. 일 실시예에서, FM을 위한 캐시로서의 니어 메모리(150B)가 상술된 라이트백 캐싱 모드에 있는 동안, 판독 동작이 상기 요청된 데이터가 FM을 위한 캐시로서 동작하는(예를 들면, 태그 캐시(342)를 이용하는) 니어 메모리(150B) 내에 존재하는지를 판단하기 위해 룩업을 수행하는 상기 MSC 컨트롤러(124)에 첫번째로 도달한다. 만일 존재한다면, 상기 데이터를 I/O 서브시스템(115)를 통해 상기 요청한 CPU의 코어(101-104) 또는 I/O 디바이스로 반환한다. 만일 상기 데이터가 존재하지 않는다면, 상기 MSC 컨트롤러는 NVRAM 컨트롤러(332)로 상기 요청을 시스템 메모리 어드레스와 함께 보낸다. 상기 NVRAM 컨트롤러(332)는 디코드 테이블(333)를 사용하여 상기 시스템 메모리 어드레스를 NVRAM 물리적 디바이스 어드레스(PDA)로 변환하고(translate), 상기 판독 동작을 상기 파 메모리(151B)의 이 영역으로 디렉팅한다. 일 실시예에서, 상기 디코드 테이블(333)은 상기 NVRAM 컨트롤러(332)가 시스템 메모리 어드레스들과 NVRAM PDA들 사이를 변환하기 위해 사용하는 어드레스 인디렉션 테이블(address indirection table:AIT) 구성요소를 포함한다. 일 실시예에서, 상기 AIT는 메모리 액세스 동작들을 분산시키고 이를 통해 상기 NVRAM FM(151B) 상의 마모를 줄이기 위해 구현된 웨어 레벨링 알고리즘의 일부로서 업데이트된다. 대안으로, AIT는 NVRAM 컨트롤러(332) 내에 저장된 별개의 테이블일 수 있다.
상기 요청한 데이터를 상기 NVRAM FM(151B)로부터 수신하면, 상기 NVRAM 컨트롤러(332)는 상기 요청된 데이터를 상기 MSC 컨트롤러(124)로 반환하고, 상기 MSC 컨트롤러는 상기 데이터를 FM 캐시로 동작하는 MSC 니어 메모리(150B) 내에 저장하고 또한 상기 데이터를 상기 I/O 서브시스템(115)를 통해 상기 요청한 프로세서 코어(101-104) 또는 I/O 디바이스에 보낸다. 이 데이터에 대한 후속 요청은 어떤 다른 NVRAM FM 데이터에 의해 교체될 때까지 FM 캐시로 동작하는 상기 니어 메모리(150B)로부터 직접 서비스될 수도 있다.
상술한 바와 같이, 일 실시예에서, 메모리 기입 동작이 이를 FM 캐시로 동작하는 상기 MSC 니어 메모리(150B) 내에 이를 기입하는 상기 MSC 컨트롤러(124)로 먼저 갈 수 있다. 라이트백 캐싱 모드에서, 상기 데이터는 기입 동작이 수신되었을 때 상기 NVRAM FM(151B)로 직접 보내지지 않을 수 있다. 예를 들면, 상기 데이터는 상기 데이터가 저장되어 있는 FM 캐시로 동작하는 상기 MSC 니어 메모리(150B) 내의 상기 위치가 다른 시스템 메모리 어드레스에 대해 데이터를 저장하기 위해 반드시 재사용되어야 하는 경우에만 상기 NVRAM FM(151B)로 보내질 수 있다. 이런 일이 발생하면, 상기 MSC 컨트롤러(124)는 상기 데이터가 NVRAM FM(151B) 내에 현재 없음을 인지하고 따라서 FM 캐시로 동작하는 니어 메모리(150B)로부터 이를 회수하여 상기 NVRAM 컨트롤러(332)로 보낼 것이다. 상기 NVRAM 컨트롤러(332)는 상기 시스템 메모리 어드레스를 위해 상기 PDA를 룩업하고 상기 데이터를 상기 NVRAM FM(151B)에 기입한다.
도 3에서, 상기 NVRAM 컨트롤러(332)가 세 개의 개별 라인들을 이용하여 상기 FM(151B), NVRAM 대용량 저장소(152A) 및 BIOS NVRAM(172)에 접속되어 있음이 도시된다. 그러나, 이것이 상기 NVRAM 컨트롤러(332)를 상기 NVRAM(142)의 이들 부분들로 접속하는 세 개의 개별 물리적 버스 또는 통신 채널이 있어야 함을 의미하는 것은 아니다. 반면, 일부 실시예들에서는, 상기 NVRAM 컨트롤러(332)를 상기 FM(151B), NVRAM 대용량 저장소(152A) 및 BIOS NVRAM(172)로 통신가능하게 연결하기 위해 공통 메모리 버스나 다른 유형의 버스가 사용된다. 예를 들어, 일 실시예에서는, 도 3의 상기 세 라인은 상기 NVRAM 컨트롤러(332)가 상기 NVRAM(142)와 통신하기 위한 (예를 들면 비순차) 프로토콜을 그 위에 구현하는 메모리 버스(예를 들어, DDR3, DDR4 등의 버스)를 나타낼 수 있다. 상기 NVRAM 컨트롤러(332)는 또한 PCI 익스프레스 버스, 데스크톱 관리 인터페이스(Desktop Management Interface: DMI)버스 같은 기본 프로토콜을 지원하는 버스나, 또는 비순차 프로토콜 및 충분히 작은 페이로드 크기(예를 들면, 64 또는 128 바이트와 같은 캐시 라인 크기)를 활용하는 다른 유형의 버스 상으로 상기 NVRAM(142)과 통신할 수 있다.
일 실시예에서, 컴퓨터 시스템(300)은 프로세서(310)를 위해 상기 중앙 메모리 액세스 제어를 수행하고 1) 파 메모리 캐시로 동작하는 니어 메모리(NM)(150B)로의 액세스를 제어하는 메모리 사이드 캐시(memory-side cache: MSC) 컨트롤러(124); 및 2) NVRAM(142)로의 액세스를 제어하는 NVRAM 컨트롤러(332)와 연결된 통합 메모리 컨트롤러(integrated memoery controller: IMC)(331)를 포함한다. 도 3에는 개별 유닛들로 도시되어 있으나, 상기 MSC 컨트롤러(124) 및 NVRAM 컨트롤러(332)는 논리적으로 상기 IMC(331)의 일부분을 형성할 수 있다.
도시된 실시예에서, 상기 MSC 컨트롤러(124)는 파 메모리 캐시로 동작하는 상기 NM(150B)에 대해 사용되고 있는 동작의 모드(예를 들면 상술된 라이트백 캐싱 모드, 니어 메모리 바이패스 모드 등)를 특정하는 범위 레지스터들(range registers)(336)의 세트를 포함한다. 도시된 실시예에서, DRAM(144)이 파 메모리를 위한 캐시로 동작하는 NM(150B)을 위한 메모리 기술로서 사용된다. 메모리 액세스 요청에 대한 응답으로, 상기 MSC 컨트롤러(124)는 (상기 범위 레지스터들(336)에 특정된 상기 동작 모드에 의존하여) 상기 요청이 FM을 위한 캐시로 동작하는 상기 NM(150B)으로부터 서비스될 수 있는지 또는 상기 요청이 상기 NVRAM 컨트롤러(332)로 보내져야 하는지 여부를 결정할 수 있고, 그 후 상기 NVRAM(142)의 상기 파 메모리(FM)부분(151B)으로부터의 상기 요청을 서비스할 수 있다.
NVRAM(142)가 PCMS로 구현되는 실시예에서, NVRAM 컨트롤러(332)는 PCMS 기술과 일치하는 프로토콜로 액세스를 수행하는 PCMS 컨트롤러이다. 상술한 바와 같이, 상기 PCMS 메모리는 본질적으로 바이트 단위로 액세스하는 능력이 있다. 그럼에도 불구하고, 상기 NVRAM 컨트롤러(332)는 캐시 라인(예를 들면 64비트 또는 128비트 캐시 라인)과 같은 더 낮은 레벨의 단위로, 또는 상기 메모리 서브시스템과 일치하는 다른 레벨의 단위로 PCMS 기반 파 메모리(151B)에 액세스할 수 있다. 본 발명의 근본적인 원리는 PCMS 기반 파 메모리(151B)에 액세스하는 어떤 특정 수준의 단위에 제한되지 않는다. 그러나, 일반적으로는, PCMS 기반 파 메모리(151B)가 시스템 어드레스 스페이스의 일부를 형성하기 위해 사용되는 경우, "블록(최소한 NOR 플래시에 대해서 64K바이트 크기 또는 NAND 플래시에 대해서 16K바이트 크기)" 레벨로만 재기입 및 삭제 동작을 수행할 수 있는 플래시와 같은 다른 비휘발성 저장 디바이스 기술에 대해 종래에 사용된 것보다 단위의 레벨이 높을 것이다.
도시된 실시예에서, NVRAM 컨트롤러(332)는 이상에서 기술된 상기 NVRAM(142)를 위한 모드들, 크기들, 등을 설정하기 위한 설정 데이터를 디코드 테이블(333)로부터 판독할 수 있거나, 선택적으로는 IMC(331) 및 I/O 서브시스템(315)로부터 전달된(passed) 상기 디코딩 결과에 의존할 수 있다. 예를 들어, 양산 시점 또는 필드에서, 컴퓨터 시스템(300)은 시스템 메모리인 NVRAM(142), SATA 인터페이스들을 통해 노출된 대용량 저장소, USB Bulk Only Tranport(BOT) 인터페이스들을 통해 노출된 대용량 저장소, TPM 저장소를 지원하는 암호화된 저장소, 그 외의 것들 중에서의 서로 다른 영역들을 표시하기 위해 디코드 테이블(333)을 프로그램할 수 있다. 액세스 수단은 디코드 로직을 통해 NVRAM 디바이스(142)의 서로 다른 파티션들로 디렉팅될 수 있다. 예를 들어, 일 실시예에서, 각 파티션의 어드레스 범위가 상기 디코드 테이블(333) 내에 정의되어 있다. 일 실시예에서, IMC(331)가 액세스 요청을 수신하면, 상기 요청이 메모리, NVRAM 대용량 저장소 또는 I/O로 디렉팅되는지 여부를 밝혀내기 위해 상기 요청의 타겟 어드레스가 디코딩된다. 메모리 요청인 경우, IMC(331) 및/또는 MSC 컨트롤러(124)는 상기 요청이 FM의 캐시로서의 NM(150B) 또는 FM(151B)로 향하는지 여부를 상기 타겟 어드레스로부터 더 판단한다. FM(151B) 액세스을 위해, 상기 요청은 NVRAM 컨트롤러(332)로 포워딩된다. IMC(331)는 이 요청이 I/O(예를 들면 비-저장 또는 저장 I/O 디바이스들)로 디렉팅되는 경우 상기 요청을 상기 I/O 서브시스템(115)로 전달한다. I/O 서브시스템(115)는 상기 어드레스가 NVRAM 대용량 저장소(152A), BIOS NVRAM(172) 또는 다른 비-저장 또는 저장 I/O 디바이스들을 향하는지를 판정하기 위해 상기 어드레스를 더 디코딩한다. 이 어드레스가 NVRAM 대용량 저장소(152A) 또는 BIOS NVRAM(172)를 가리키면, I/O 서브시스템(115)는 상기 요청을 NVRAM 컨트롤러(332)로 포워드한다. 이 어드레스가 TMP NVRAM(173)을 가리키면, I/O 서브시스템(115)은 보안 액세스를 수행하기 위해 상기 요청을 TPM(334)으로 전달한다.
본 명세서에 기술된 것과 같은 새로운 메모리 아키텍처는 수익의 새로운 가능성을 제공한다. 이하에서 보다 상세히 설명되겠지만, 이들 가능성의 일부는 바로 아래에서 강조된다.
가능한 일 구현에 따르면, NVRAM(142)는 시스템 메모리에서의 종래의 DRAM 기술에 대한 완전한 대체물 또는 보완물이 될 수 있다. 일 실시예에서, NVRAM(142)는 2-레벨 시스템 메모리의 도입을 나타내고, 예를 들면, 상기 시스템 메모리는 캐시로서의 니어 메모리(150B)(상기 DRAM 디바이스(340)의 일부분)를 포함하는 1-레벨 시스템 메모리와 파 메모리(FM(151B))(상기 NVRAM(142)의 일부분)를 포함하는 2-레벨 시스템 메모리를 갖는 것으로 보여질 수 있다.
일부 실시예들에 따르면, NVRAM(142)는 플래시/자기/광학 대용량 저장소(152B)의 완전한 대체물 또는 보완물로서의 역할을 한다. 상술한 바와 같이, 일부 실시예들에서, 상기 NVRAM(152A)가 바이트-레벨 어드레스 지정 가능함에도, NVRAM 컨트롤러(332)는 여전히 NVRAM 대용량 저장소(152A)를 구현에 따라 (예를 들면 64K 바이트, 128K 바이트 등의) 복수의 바이트의 블록으로 액세스할 수 있다. NVRAM 컨트롤러(332)에 의해 NVRAM 대용량 저장소(152A)로부터 데이터에 액세스하는 특정한 방식은 상기 프로세서(310)에 의해 실행되는 소프트웨어에 대해 명료할 수 있다. 예를 들어, NVRAM 대용량 저장소(152A)가 플래시/자기/광학 대용량 저장소(152A)와는 다르게 액세스될 수 있다 하더라도, 운영체제는 여전히 NVRAM 대용량 저장소(152A)를 표준적인 대용량 저장소(예를 들면 직렬 ATA 하드 드라이브 또는 다른 표준 유형의 대용량 저장소)로 간주할 것이다.
NVRAM 대용량 저장소(152A)가 플래시/자기/광학 대용량 저장소(152B)의 완전한 대체물 또는 보완물로서의 역할을 수행하는 일 실시예에서, 블록 어드레스 지정 가능 저장소 액세스를 위한 저장 드라이버들을 사용할 필요는 없다. 저장소 액세스로부터의 저장 드라이버 오버헤드의 제거는 액세스 속도를 증가시키고 전력을 절감할 수 있다. NVRAM 대용량 저장소(152A)가 OS 및/또는 애플리케이션에 블록 액세스 가능하고 플래시/자기/광학 대용량 저장소(152B)로부터 구분 불가능하게 보이는 것이 바람직한 대안적 실시예에서, 에뮬레이트된 저장 드라이버들이 NVRAM 대용량 저장소(152A)에 액세스하기 위해 소프트웨어로 블록 액세스 가능 인터페이스들(예를 들어, 범용 직렬 버스(Universal Serial Bus: USB), Bulk-Only Transfer(BOT), 1.0; Serial Advanced Technology Attachment(SATA), 3.0 등)을 노출하기 위해 사용될 수 있다.
일 실시예에서, 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)의 아키텍처는, 간소화를 위해 단일 프로세서(310)만이 도 3 내에 도시되어 있음에도 불구하고 복수의 프로세서를 포함할 수 있다. 프로세서(310)는 범용 목적 또는 특수 목적 중앙 처리 유닛(CPU), 주문형 반도체(application-specific integrated circuit: ASIC) 또는 디지털 신호 처리기(digital singal processor: DSP)를 포함하는 어떤 유형의 데이터 프로세서라도 될 수 있다. 예를 들어, 프로세서(310)는 CoreTM i3, i5, i7, 2 Duo 및 Quad, XeonTM, ItaniumTM 프로세서와 같은 범용 목적 프로세서일 수 있으며 이들은 모두 칼리프 산타 클라라의 인텔 주식회사로부터 이용 가능하다. 대안적으로, 프로세서(310)는 캘리포니아 서니베일의 ARM 홀딩스 Ltd., 캘리포니아 서니베일의 MIPS 테크놀러지스 등의 다른 회사로부터일 수도 있다. 프로세서(310)는 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽스 프로세서, 코프로세서, 임베디드 프로세서 또는 이와 유사한 특수 목적 프로세서일 수 있다. 프로세서(310)는 하나 또는 그 이상의 패키지 내에 포함된 하나 이상의 칩으로 구현될 수 있다. 프로세서(310)는 예를 들면 BiCMOS, CMOS 또는 NMOS와 같은 임의의 숫자의 프로세스 기술들을 사용한 하나 또는 그 이상의 기판의 일부 및/또는 기판 상에 구현될 수 있다. 도 3에 도시된 실시예에서, 프로세서(310)는 시스템-온-칩(system-on-a-chip: SOC) 구성을 갖고 있다.
일 실시예에서, 상기 프로세서(310)는 3D 또는 2D 그래픽 명령어들과 같은 그래픽 명령어들을 실행시키기 위한 로직을 포함하는 통합 그래픽 유닛(311)을 포함한다. 본 발명의 실시예들이 특정 통합 그래픽 유닛(311)에 제한되는 것은 아니지만, 일 실시예에서, 상기 그래픽 유닛(311)은 Open GL 및/또는 다이렉트 X 어플리케이션 프로그래밍 인터페이스(application programming interface : API)(예를 들면 OpenGL 4.1 및 다이렉트 X 11)에 의해 특정된 것과 같은 산업 표준 그래픽 명령어들을 실행시킬 수 있다.
명확성을 위해 도 3에는 단일 코어만이 도시되어 있음에도, 프로세서(310)는 또한 하나 이상의 코어(101-104)를 포함할 수 있다. 다수의 실시예에서, 상기 코어들(101-104)은 하나 이상의 실행 유닛, 회수 유닛들(retirement units), 범용 목적 또는 특수 목적 레지스터들의 세트 등과 같은 내부 기능 블록들을 포함한다. 만일 코어가(코어들이) 멀티쓰레드 또는 하이퍼쓰레드를 지원하면, 각 하드웨어 스레드들은 또한 하나의 "논리적" 코어로 간주된다. 상기 코어들(101-104)은 아키텍처 또는 명령어 세트의 면에서 동종이거나 이종일 수 있다. 예를 들어, 일부의 코어는 순차적이고 다른 코어들은 비순차적일 수 있다. 또 다른 예시로, 둘 이상의 코어는 동일한 명령어 세트를 실행할 수 있는 반면 다른 코어들은 상기 명령어 세트의 일부만을 실행할 수 있거나 다른 명령어 세트를 실행할 수 있을 수 있다.
상기 프로세서(310)는 또한 SRAM 및/또는 DRAM으로 구현될 수 있는 캐시(313)와 같은 하나 이상의 캐시를 포함할 수 있다. 도시되지 않은 수많은 실시예에서, 캐시(313) 외의 부가적인 캐시들이 구현되어 상기 코어(들)(101-104)과 메모리 디바이스들(150B 및 151B) 사이에 복수의 레벨의 캐시가 존재하도록 할 수 있다. 예를 들어, 공유된 캐시 유닛들의 세트는 레벨 1(L1) 캐시와 같은 상위 레벨 캐시, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 LLC와 같은 다른 레벨의 캐시와 같은 중간 수준의 캐시들 및/또는 이들의 다른 조합들을 포함할 수 있다. 다른 실시예들에서, 캐시(313)는 다른 방식으로 분배되고 다른 실시예들에서는 서로 다른 크기들 중의 하나가 될 수 있다. 예를 들어, 캐시(313)는 8 메가바이트(MB) 캐시 또는 16MB 캐시일 수 있다. 나아가, 다른 실시예들에서 상기 캐시는 직접-매핑되는(direct-mapped) 캐시, 완전 연관(fully associatve) 캐시, 멀티웨이 집합-연관(multi-way set-associatve) 캐시 또는 다른 유형의 매핑을 갖는 캐시일 수 있다. 복수의 코어를 포함하는 다른 실시예들에서, 캐시(313)는 모든 코어들이 공유하는 하나의 큰 부분을 포함하거나 또는 여러 개의 개별적으로 기능하는 단편들(slices)(예를 들면, 각 코어마다 하나의 단편)로 분할될 수 있다. 캐시(313)는 또한 모든 코어들이 공유하는 하나의 부분 및 코어마다 분리된 기능적 단편들인 여러 개의 다른 부분들을 포함할 수 있다.
상기 프로세서(310)는 이들 구성 요소들을 조정하고 코어(들)(101-104)를 동작시키는 홈 에이전트(314)를 포함할 수 있다. 상기 홈 에이전트 유닛(314)은, 예를 들면, 전력 제어 유닛(power control unit: 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 디바이스들: (LAN(Local Area Network), WAN(Wide Area Network) 또는 인터넷과 같은) 하나 이상의 네트워크(336), (플래시/자기/광학 대용량 저장소(152B), BIOS 플래시(362), TPM 플래시(372)와 같은) 저장 I/O 디바이스 및 (디스플레이, 키보드, 스피커 등과 같은) 하나 이상의 비-저장 I/O 디바이스들(337) 간의 통신을 가능하게 한다. I/O 서브시스템(115)은, 여러개의 I/O 어댑터들(338) 및 다른 I/O 회로를 더 포함하여 저장 및 비-저장 I/O 디바이스들 및 네트워크들에의 액세스를 제공하는 플랫폼 컨트롤러 허브(platform controller hub)(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)-Express(PCI-E), 3.0; USB, 3.0; SATA, 3.0; SCSI(Small Computer System Interface), Ultra-640; 및 IEEE(Institute of Electrical and Electronics Engineers) 1394 "Firewire"를 포함한다. BIOS 플래시(362)에 대해, I/O 어댑터들(338)이 변환할 수 있는 프로토콜들의 일부는 특히, SPI(Serial Peripheral Interface), 마이크로와이어를 포함한다. 추가적으로, 하나 이상의 무선 프로토콜 I/O 어댑터들이 있을 수 있다. 무선 프로토콜들의 예들은, 특히, IEEE 802.15 및 블루투스 4.0과 같은 개인 영역 네트워크들; IEEE802.11 기반 무선 프로토콜들과 같은 무선 LAN; 및 셀룰러 프로토콜들에 이용된다.
일부 실시예들에서, I/O 서브시스템(115)은 보안 데이터, 암호화 키들, 플랫폼 구성 정보 등과 같은 시스템 영구 상태들에 대한 액세스를 제어하기 위하여 TPM 제어(334)에 연결된다. 일 실시예에서, 이들 시스템 영구 상태들은 TMP NVRAM(173)에 저장되고, NVRAM 컨트롤러(332)를 통해 액세스된다.
일 실시예에서, TPM(334)는 암호 기능들을 갖는 보안 마이크로 컨트롤러이다. TPM(334)는 다수의 신뢰 관련 성능들(trust-related capabilities), 예를 들어, TPM에 의해 보호되는 데이터가 오직 동일한 TPM에 대해서만 이용가능한 것을 보장하는 SEAL 성능을 갖는다. TPM(334)는 데이터 및 키들(예를 들어, 비밀들)을 그 암호화 성능들을 이용하여 보호할 수 있다. 일 실시예에서, TPM(334)는 하드웨어 디바이스들 및 플랫폼들을 인증할 수 있게 하는 고유한 비밀 RSA 키를 갖는다. 예를 들어, TPM(334)는 컴퓨터 시스템(300)에 저장된 데이터에 대한 액세스를 시도하는 시스템이 예상되는 시스템인 것을 검증할 수 있다. TPM(334)는 또한 플랫폼(예를 들어 컴퓨터 시스템(300))의 무결성을 보고할 수 있다. 이는 외부 소스(예를 들어, 네트워크 상의 서버)가 플랫폼이 신뢰성 있음(trustworthiness)을 판정하지만, 그 플랫폼으로의 사용자에 의한 액세스를 막지는 않는다.
일부 실시예들에서, I/O 서브시스템(315)은 또한, 시스템 관리자가 컴퓨터 시스템(300)을 모니터링, 유지, 업데이트, 업그레이드 및 수리할 수 있게 하는 마이크로프로세서인 관리 엔진(Management Engine)(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)는 다이에서 벗어나서 또는 CPU 패키지에서 벗어나서 위치될 수 있고, (DDR 버스(예를 들어, DDR3, DDR4 등)와 같은) 메모리 버스, PCI express 버스, 데스크톱 관리 인터페이스(desktop management interface)(DMI) 버스 또는 그외의 임의의 유형의 버스와 같은 버스를 통해 프로세서(310) 또는 CPU 패키지에 연결될 수 있다.
트랜잭션 멀티-쓰레디드 소프트웨어 및 비 트랜잭션 소프트웨어를 위해 사용되는 파 사이드 메모리
프로세서 설계자들은 멀티-쓰레디드 소프트웨어의 "트랜잭션" 지원을 가능하게 하는 향상된 명령어 세트들을 현재 설계하고 있다. 종래의(즉, 트랜잭션) 멀티쓰레디드 소프트웨어에서, 프로그램들은 데이터를 "락(locks)"을 이용해 보호한다. 단 하나의 쓰레드만이 임의의 한 시점에서 락을 보유할 수 있고, 그래서 다른 쓰레드는 동시에 그 데이터를 수정하지 않는다는 것을 보증할 수 있다. 이것은 비관적으로 되는 경향이 있다: 락을 가진 쓰레드는 임의의 쓰레드들이 그 데이터를 판독하거나 그 데이터에 대해 비충돌 업데이트를 행하는 것만을 원하는 경우에도, 그 쓰레드들이 락을 가져가는 것을 방지한다.
도 4를 참조하면, 트랜잭션 지원을 이용하여, 쓰레드들은 데이터를 조작할 때 더 이상 락을 가져갈 필요가 없다. 이들은 트랜잭션을 시작하고(401), 그들의 변화를 행하고(402), 변화가 완료되면, 트랜잭션을 커밋하거나(403) 또는 트랜잭션이 커밋될 수 없다면 단계 402에서 행해진 변화들을 롤 백한다(404). 쓰레드는 트랜잭션 동안 그 변화를 행하지만(402), 도 5를 참조하면, 프로세서(510) 내의 특수 하드웨어(570)는 쓰레드가 판독하고 기입하는 임의의/모든 캐시(513) 및 니어 메모리(550B) 위치들에 주목한다.
통상적으로, 트랜잭션에 의해 이루어진 임의의/모든 데이터 기입들은 단순히 캐시가 시스템의 가장 최근 변화들을 보유하기 때문에 캐시 내에 존재한다. 즉, 트랜잭션이 데이터 항목을 변화시킬 필요가 있으면, 데이터 항목이 캐시에 이미 존재하지 않는다면, 데이터 항목은 더 깊은 저장소로부터 호출되고, 변화되고, 그 후 캐시에 기입된다. 따라서, 트랜잭션에 의해 이루어진 데이터 변화들의 양이 각 데이터 어드레스에 대해 이용가능한 캐시 크기보다 작도록 제한되면, 트랜잭션에 의해 이루어진 모든 변화들은 캐시 내에 존재할 것이다. 프로세서 내의 하드웨어는 트랜잭션이 커밋될 때까지 이러한 변화된 데이터 항목들의 영구 저장소로의 라이트백을 방지한다. 제1 실시예에서, 위에서 말한 캐시는 프로세서 캐시와 니어 메모리를 포함한다. 제2 실시예에서, 위에서 말한 캐시는 프로세서 캐시만을 포함한다(즉, 니어 메모리는 포함되지 않는다.) 단순성을 위해, 본 문서의 나머지에서는 주로 제1 실시예를 언급할 것이다.
실시예에서, 프로세서(510) 내의 각 CPU 코어 내의 각 명령어 실행 파이프라인 및/또는 프로세서(510) 내의 각 CPU 코어(501-504)에 대한 특수 하드웨어(570)의 인스턴스가 존재한다. 여기서, 트랜잭션 쓰레드를 실행하고 있는 코어/파이프라인의 특수 하드웨어(570) 인스턴스(예를 들면, 로직 회로로 구성된 바와 같음)는 트랜잭션의 캐시에 주목하고 니어 메모리는 전술한 바와 같이 판독 및 기입한다. 프로세서(510) 내의 일부 캐싱 레벨들은 다수의 코어들을 서비스할 수 있는 반면(예를 들어 최종 레벨 캐시), 프로세서(510) 내의 다른 캐싱 레벨들은 단일 코어만을 서비스할 수 있다(예를 들어 코어의 L1 캐시).
트랜잭션이 커밋될 준비가 되면, 특수 하드웨어(570)는 트랜잭션이 실행되는 동안 다른 어떤 쓰레드도 이들 동일 위치들에 변화를 행하거나 이들 동일 위치들을 판독하지 않았음을 검사한다. 이러한 조건이 만족되면, 트랜잭션은 커밋되고(403) 쓰레드는 계속된다. 여기서, 변화들을 커밋한다는 것은 변화들이 영구 저장소에 기입된다는 것을 의미한다. 이러한 조건이 만족되지 않으면, 트랜잭션은 취소되고, 모든 그의 변화는 무효가 된다(404). 일 실시예에서, 변경들을 "무효"로 만들기 위해, 임의의 변화들이 트랜잭션에 의해 이루어지기 전의 데이터의 상태를 표현하는 프레시(fresh) 데이터가 영구 저장소로부터 호출되어 캐시에 재기입되거나, 변경된 캐시 라인들이 무효화된다. 쓰레드는 그 후 동작을 재시도하거나, 상이한 계획을 시도하거나(예를 들어, 락을 사용하는 계획), 또는 완전히 포기한다.
구현에서, NVRAM 파 메모리(551B)는 트랜잭션의 커밋 시에 커밋된 데이터 변화들이 저장되는 "영구" 저장소에 대응하지만, 니어 메모리(550B) 및 니어 메모리 위의 임의의/모든 캐시들(513)은 쓰레드가 그 트랜잭션의 커밋 전에 변화들을 만들 수 있는 캐시 위치들에 대응한다.
그러나 다양한 경우들에서 영구 저장소의 개념은 위에서 논의한 트랜잭션의 정의를 기술적으로 만족하지 않는 소프트웨어 프로세스의 다른 종류들에 확장될 수 있다. 다양한 상이한 정보 처리 패러다임에 따르면, 영구 저장소는 그의 기입들이 일부 프로세스 또는 데이터 구조의 공식적으로 인식된 상태를 반영하고(따라서, 예를 들어 전역적으로 가시적이고), 및/또는 연장된 시간 구간(예를 들어, 컴퓨팅 시스템의 다수의 온/오프 사이클)에 걸쳐 필요해질 것이 기대되는 기입가능한 데이터 저장소일 수 있다. 특히, 많은 그러한 소프트웨어 프로세스들은 또한 NVRAM 파 메모리(551B)에서 영구 저장소를 구현하기를 선택할 수 있다.
영구 저장소의 존재를 인식하는 비 트랜잭션 소프트웨어 프로세스들에 대하여, 소프트웨어는 지속되어야 할 필요가 있는 수정된 데이터가 캐시로부터 플러시되고 후속하는 변화가 그에 대해 이루어지기 전에 영구 저장소에 저장되는 것을 보증하는 내장된 예방책을 가져야 한다. 여기서, 예를 들어, 데이터 항목에 변화가 행해지고 소프트웨어가 그 변화를 영구 저장소에 반영되어야 할 필요가 있는 것으로 간주하면, 소프트웨어는 캐시 라인 플러시 명령어(예를 들어, CLFLUSH)와 이어서 메모리 펜스 명령어(예를 들어, MFENCE)를 삽입할 것이다. 캐시 라인 플러시 명령어는 새롭게 변경된 데이터가 영구 저장소(551B)에 라이트백되도록 할 것이다. 메모리 펜스 명령어는 데이터가 영구 저장소(551B)에 기입될 때까지 동일한 쓰레드의 다른 동작들이 데이터에 액세스하는 것을 방지할 것이다.
보다 복잡한 접근법들에서, 쓰레드의 소프트웨어는 캐시의 어떤 데이터 항목들이 영구 저장소(551B)에 지속되어야 할지에 대해 트랙킹하는 복잡한 북 키핑 업무들을 포함한다. 여기서, 예를 들어, 어떤 데이터 항목들은 쓰레드의 소프트웨어에 의해 지속이 필요한 것으로서 인식될 수 있으며, 북 키핑 소프트웨어는 이러한 데이터 항목들을 트랙킹할 것이고, 코드의 실행에서 적절한 순간에, 적절한 캐시 라인 및 메모리 펜스 명령어들을 실행할 것이다.
도 6은, 도 4와 관련하여 위에서 논의된 트랜잭션의 롤 백을 지원하는 것뿐만 아니라 바로 위에서 설명된 소프트웨어 북 키핑 기능에 대한 필요를 제거하기 위해서도, 도 5의 특수 하드웨어(570)가 또한 사용되는 향상된 접근법을 도시한다.
도 6에서 볼 수 있는 바와 같이, 소프트웨어는 코드의 영구 영역만을 정의하도록 요청받는다. 이러한 정의는 PBEGIN 명령어로 영역의 시작에서 마킹되고(601), PEND 명령어로 영역의 끝에서 마킹된다(604). PBEGIN 명령어는 본질적으로, 특별 하드웨어(570)의 기능을 "턴 온"한다(602). PBEGIN 명령어 이후에 코드가 실행되는 동안, 특별 하드웨어(570)는 어떤 캐시 라인들이 변화되었는지 트래킹한다(603). PEND 명령어(604)가 실행되면, 그것은 특별 하드웨어(570)에 의해 식별된 캐시 라인들이 영구 저장소(551B)로 플러시되게 하고, 특별 하드웨어(570)를 턴 오프한다(605). PEND 명령어 이후에는, 모든 캐시 라인들이 플러시되어 메모리 펜스를 발효할 때까지 다른 명령어들의 실행이 허용되지 않는다.
따라서, 특별 하드웨어(570)는 트랜잭션 동작들 동안뿐만 아니라, 비 트랜잭션 동작들 동안에도 캐시 액세스들을 트래킹한다. 도 5는 특별 하드웨어(570)에 연결되는 코어 내부의 명령어 실행 파이프라인(580)을 도시한다. 여기서, 연결은 PBEGIN 명령어에 응답하여 특별 하드웨어(570)를 턴 온하고, PEND 명령어에 응답하여 특별 하드웨어를 턴 오프하도록 사용된다. 명령어 실행 파이프라인은 또한, 캐시 플러싱이 완료될 때까지 다음 명령어의 발행을 방지하는 로직을 갖도록 설계된다. 캐시 플러싱 로직이 또한 명령어 실행 파이프라인 및 특별 하드웨어에 연결되지만, 편의상 도시되지 않았다. 캐시 플러싱 로직은 PEND 명령어에 의해 활성으로 트리거되고, 어떤 캐시 라인들이 플러시되어야 하는지를 이해하기 위해 특별 하드웨어(570)를 참조한다. 도 5의 다른 특징들은 위에서 도 3과 관련하여 설명하였다.
도 7은 특별 하드웨어의 기능들 둘 다를 묘사하는 통합된 방법론이다. 트랜잭션 동작이 시작되거나 PBEGIN 명령어가 실행되지 않는 이상, 특별 하드웨어(551B)는 유휴 상태로 유지된다(701).
트랜잭션 동작이 시작되면, 특별 하드웨어(570)가 인에이블되고, 트랜잭션에 의해 어떤 캐시 라인들이 수정되는지 트래킹하기 시작한다(702). 트랜잭션이 완료되면, 프로세서 내의 트랜잭션 하드웨어(571)는 이러한 동일한 캐시 라인들에 어떤 다른 트랜잭션들이 기입되거나 이러한 동일한 캐시 라인들로부터 어떤 다른 트랜잭션들이 판독되었는지의 여부를 확인하기 위해 체크한다(703). 기입되거나 판독되지 않았다면, 변화들은 파 메모리 NVRAM(551B)으로 커밋되고(704), 다른 경우, 캐시 라인들은 영구 NVRAM(551B)으로부터의 콘텐츠로 대체되거나 또는 무효화된다(705).
PBEGIN 명령어가 실행되면, 특별 하드웨어(570)가 인에이블되고, 소프트웨어 프로세스에 의해 어떤 캐시 라인들이 수정되는지 트래킹하기 시작한다(706). PEND 명령어가 실행되면, 모든 수정된 캐시 데이터는 영구 NVRAM(551B)에 라이트백되고, 라이트백이 완료될 때까지 다른 명령어의 실행이 허용되지 않는다(707).
도 8은 컴파일러에 의해 수행될 컴파일 프로세스를 도시한다. 도 8에 도시된 바와 같이, 컴파일 프로세스는 801에서 코드에 의해 발생한 임의의 데이터 변화들이 영구 저장소에 지속되어야 하는 후의 코드의 영역의 시작을 식별한다. 식별(801)에 응답하여, 컴파일 코드는 802에서 PBEGIN 명령어를 프로그램 코드에 삽입하거나 또는 PBEGIN 명령어가 삽입될 코드의 위치를 마킹한다. 컴파일 프로세스는 또한 803에서 데이터 변화들이 지속될 필요가 없는 PBEGIN 명령어가 삽입된(또는 삽입될) 후의 코드의 영역의 시작을 식별한다. 코드의 제2 영역의 식별(803)에 응답하여, 컴파일 프로세서는 지속될 필요가 있는 최종 데이터 변화 후이지만 지속될 필요가 없는 첫번째 데이터 변화 전의 프로그램 코드에 PEND 명령어(또는 PEND 명령어가 삽입될 마크들)를 삽입한다.
상기 논의에 의해 개시된 프로세스들은, ("가상 머신", 반도체 칩 상에 배치된 프로세싱 코어 또는 범용 CPU 프로세서, 또는 반도체 칩 상에 배치된 특수 목적 프로세서 등의) 머신으로 하여금 특정한 기능들을 수행하게 하는 머신-실행가능한 명령어들 등의 프로그램 코드를 이용하여 수행될 수 있다. 대안으로, 이 기능들은, 기능들을 수행하기 위한 하드와이어 로직을 포함하는 특정한 하드웨어 컴포넌트들, 또는 프로그램된 컴퓨터 컴포넌트들 및 커스텀 하드웨어 컴포넌트들의 임의의 조합에 의해 수행될 수 있다.
저장 매체는 프로그램 코드를 저장하는데 사용될 수 있다. 프로그램 코드를 저장하는 저장 매체는, 하나 이상의 메모리(예를 들어, 하나 이상의 플래시 메모리, (정적, 동적 또는 그외의) 랜덤 액세스 메모리), 광학 디스크, CD-ROM, DVD ROM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는데 적합한 그외의 유형의 머신-판독가능한 매체로서 실시될 수 있지만, 이에 한정되는 것은 아니다. 프로그램 코드는 또한 전파 매체(propagation medium)에 내장된 데이터 신호들을 통해(예를 들어, 통신 링크(예를 들어, 네트워크 접속)를 통해) 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 다운로드될 수 있다.
상기 명세서에서, 본 발명은, 그 특정한 예시적인 실시예들을 참조하여 설명되었다. 그러나, 첨부된 청구범위에 기술된 바와 같이 본 발명의 광범위한 사상 및 범주로부터 벗어나지 않고 다양한 수정들 및 변경들이 행해질 수 있다는 것은 명확하다. 따라서, 본 명세서 및 도면들은 제한적이기 보다는 예시적으로 간주된다.

Claims (22)

  1. 프로세서로서,
    비휘발성 랜덤 액세스 메모리에 액세스하는 인터페이스; 및
    로직 회로
    를 포함하고, 상기 로직 회로는,
    상기 비휘발성 랜덤 액세스 메모리에 기입하는 비 트랜잭션 동작의 시작, 및 캐시 라인 변화를 트랙킹하는 하드웨어를 인에이블시키는 트랜잭션 동작의 시작 중 하나를 검출하고,
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 비 트랜잭션 동작에 의한 수정을 위해 상기 비휘발성 랜덤 액세스 메모리에 기입된 캐시 라인을 트랙킹하고, 상기 비 트랜잭션 동작의 끝이 검출되면 상기 비휘발성 랜덤 액세스 메모리에 수정된 캐시 라인을 라이트백하고,
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 트랜잭션 동작에서 기입된 캐시 라인을 트랙킹하고, 상기 트랜잭션 동작의 끝이 검출되면 커밋 및 롤 백 중 하나를 수행하는, 프로세서.
  2. 제1항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리인 프로세서.
  3. 제2항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리 및 스위치인 프로세서.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 시작을 식별하는 제1 명령어, 및 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝을 식별하는 제2 명령어를 실행하는 명령어 실행 파이프라인을 더 포함하는 프로세서.
  5. 제4항에 있어서,
    상기 명령어 실행 파이프라인 및 상기 로직 회로에 연결되는 캐시 플러싱(flushing) 회로를 더 포함하는 프로세서.
  6. 제5항에 있어서,
    상기 명령어 실행 파이프라인은 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝까지 임의의 추가적인 명령어들의 실행을 방지하는 프로세서.
  7. 프로세서에 의해, 비휘발성 랜덤 액세스 메모리에 기입하는 비 트랜잭션 동작의 시작, 및 캐시 라인 변화를 트랙킹하는 상기 프로세서의 하드웨어를 인에이블시키는 트랜잭션 동작의 시작 중 하나를 검출하는 단계;
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 비 트랜잭션 동작에 의한 수정을 위해 상기 비휘발성 랜덤 액세스 메모리에 기입된 캐시 라인을 트랙킹하고, 상기 비 트랜잭션 동작의 끝이 검출되면 상기 비휘발성 랜덤 액세스 메모리에 수정된 캐시 라인을 라이트백하는 단계; 및
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 트랜잭션 동작에서 기입된 캐시 라인을 트랙킹하고, 상기 트랜잭션 동작의 끝이 검출되면 커밋 및 롤 백 중 하나를 수행하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    제1 명령어의 실행이, 상기 프로세서로 하여금 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 시작을 식별하게 하고, 제2 명령어의 실행이, 상기 프로세서로 하여금 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝을 식별하게 하는, 방법.
  9. 제7항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리에 의해 구현되는 방법.
  10. 제9항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리 및 스위치에 의해 구현되는 방법.
  11. 제7항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝까지 다음 명령어를 실행하지 않는 단계를 더 포함하는 방법.
  12. 제7항에 있어서,
    상기 트랜잭션 동작의 끝 및 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝 중 하나에 응답하여 상기 하드웨어를 디스에이블하는 단계를 더 포함하는 방법.
  13. 프로그램 코드가 저장된 비일시적인 머신 판독가능한 저장 매체로서, 상기 프로그램 코드는 컴퓨팅 시스템에 의해 처리될 때,
    프로세서에 의해, 비휘발성 랜덤 액세스 메모리에 기입하는 비 트랜잭션 동작의 시작, 및 캐시 라인 변화를 트랙킹하는 상기 프로세서의 하드웨어를 인에이블시키는 트랜잭션 동작의 시작 중 하나를 검출하는 단계;
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 비 트랜잭션 동작에 의한 수정을 위해 상기 비휘발성 랜덤 액세스 메모리에 기입된 캐시 라인을 트랙킹하고, 상기 비 트랜잭션 동작의 끝이 검출되면 상기 비휘발성 랜덤 액세스 메모리에 수정된 캐시 라인을 라이트백하는 단계;
    상기 캐시 라인 변화를 트랙킹하는 상기 하드웨어에 의해, 상기 트랜잭션 동작에서 기입된 캐시 라인을 트랙킹하고, 상기 트랜잭션 동작의 끝이 검출되면 커밋 및 롤 백 중 하나를 수행하는 단계
    를 포함하는 방법이 수행되게 하는, 비일시적인 머신 판독가능한 저장 매체.
  14. 제13항에 있어서,
    제1 명령어의 실행이, 상기 프로세서로 하여금 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 시작을 식별하게 하는, 비일시적인 머신 판독가능한 저장 매체.
  15. 제14항에 있어서,
    제2 명령어의 실행이, 상기 프로세서로 하여금 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝을 식별하게 하는, 비일시적인 머신 판독가능한 저장 매체.
  16. 제15항에 있어서,
    상기 제2 명령어는 상기 수정된 캐시 라인이 하나 이상의 캐시 레벨들로부터 상기 비휘발성 랜덤 액세스 메모리로 플러싱되게 하는, 비일시적인 머신 판독가능한 저장 매체.
  17. 제13항에 있어서,
    상기 방법은, 상기 비휘발성 랜덤 액세스 메모리에 기입하는 상기 비 트랜잭션 동작의 끝까지 다음 명령어를 실행하지 않는 단계를 더 포함하는, 비일시적인 머신 판독가능한 저장 매체.
  18. 제13항에 있어서,
    상기 프로세서는 상기 캐시 라인 변경을 트랙킹하는 상기 하드웨어를 각각 갖는 복수의 코어를 포함하는, 비일시적인 머신 판독가능한 저장 매체.
  19. 제13항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리인, 비일시적인 머신 판독가능한 저장 매체.
  20. 제19항에 있어서,
    상기 비휘발성 랜덤 액세스 메모리는 상변화 메모리 및 스위치인, 비일시적인 머신 판독가능한 저장 매체.
  21. 삭제
  22. 삭제
KR1020140031292A 2013-03-15 2014-03-17 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들 KR101673280B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/843,760 US9547594B2 (en) 2013-03-15 2013-03-15 Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US13/843,760 2013-03-15

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020160144211A Division KR101779723B1 (ko) 2013-03-15 2016-11-01 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들

Publications (2)

Publication Number Publication Date
KR20140113605A KR20140113605A (ko) 2014-09-24
KR101673280B1 true KR101673280B1 (ko) 2016-11-07

Family

ID=50634767

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140031292A KR101673280B1 (ko) 2013-03-15 2014-03-17 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
KR1020160144211A KR101779723B1 (ko) 2013-03-15 2016-11-01 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020160144211A KR101779723B1 (ko) 2013-03-15 2016-11-01 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들

Country Status (7)

Country Link
US (2) US9547594B2 (ko)
JP (3) JP2014182836A (ko)
KR (2) KR101673280B1 (ko)
CN (2) CN104050112B (ko)
BR (1) BR102014006298A2 (ko)
DE (1) DE102014003668A1 (ko)
GB (1) GB2515146B (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
JP6166616B2 (ja) * 2013-08-07 2017-07-19 株式会社東芝 情報処理方法、情報処理装置及びプログラム
US20150095578A1 (en) * 2013-09-27 2015-04-02 Kshitij Doshi Instructions and logic to provide memory fence and store functionality
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
GB2529148B (en) * 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US10387259B2 (en) 2015-06-26 2019-08-20 Intel Corporation Instant restart in non volatile system memory computing systems with embedded programmable data checking
US10078448B2 (en) 2015-07-08 2018-09-18 Samsung Electronics Co., Ltd. Electronic devices and memory management methods thereof
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in 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
JP6740607B2 (ja) 2015-12-18 2020-08-19 富士通株式会社 シミュレーションプログラム、情報処理装置、シミュレーション方法
US10318295B2 (en) 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
KR102593362B1 (ko) * 2016-04-27 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN105912486B (zh) * 2016-04-27 2019-03-29 联想(北京)有限公司 信息处理方法及处理器
JP2018049385A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10691803B2 (en) * 2016-12-13 2020-06-23 Amazon Technologies, Inc. Secure execution environment on a server
CN108447903B (zh) 2017-02-16 2023-07-04 富士电机株式会社 半导体装置
US20180239725A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Persistent Remote Direct Memory Access
US10621103B2 (en) 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
US10481958B2 (en) 2017-12-29 2019-11-19 Intel IP Corporation Speculative execution tag for asynchronous DRAM refresh
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US10936492B2 (en) * 2018-06-18 2021-03-02 FLC Technology Group, Inc. Method and apparatus for using a storage system as main memory
US10915404B2 (en) 2018-11-02 2021-02-09 Arm Limited Persistent memory cleaning
US10909012B2 (en) * 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory
US11740928B2 (en) 2019-08-26 2023-08-29 International Business Machines Corporation Implementing crash consistency in persistent memory
US11928497B2 (en) 2020-01-27 2024-03-12 International Business Machines Corporation Implementing erasure coding with persistent memory
US20220197813A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
CN114356213B (zh) * 2021-11-29 2023-07-21 重庆邮电大学 一种numa架构下nvm磨损均衡的并行空间管理方法
CN116244216B (zh) * 2023-03-17 2024-03-01 摩尔线程智能科技(北京)有限责任公司 缓存控制方法、装置、缓存行结构、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009122694A1 (ja) 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP2009537053A (ja) 2006-06-30 2009-10-22 インテル・コーポレーション 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
EP0567355B1 (en) * 1992-04-24 2001-09-19 Compaq Computer Corporation A method and apparatus for operating a multiprocessor computer system having cache memories
JPH1196062A (ja) * 1997-09-19 1999-04-09 Hitachi Ltd ディレクトリ・アクセス方法
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure
US20070198979A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8219741B2 (en) * 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
DE112009005006T5 (de) * 2009-06-26 2013-01-10 Intel Corporation Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
CN101777154A (zh) * 2010-02-01 2010-07-14 浪潮集团山东通用软件有限公司 一种工作流管理系统中工作流数据的持久化方法
US20110208921A1 (en) * 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8402227B2 (en) * 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
US8352688B2 (en) * 2010-11-15 2013-01-08 Advanced Micro Devices, Inc. Preventing unintended loss of transactional data in hardware transactional memory systems
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US20130013899A1 (en) * 2011-07-06 2013-01-10 International Business Machines Corporation Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions
CN103946811B (zh) * 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US20140317337A1 (en) * 2011-12-30 2014-10-23 Leena K. Puthiyedath Metadata management and support for phase change memory with switch (pcms)
US9471622B2 (en) * 2012-04-30 2016-10-18 International Business Machines Corporation SCM-conscious transactional key-value store
US20140040588A1 (en) * 2012-08-01 2014-02-06 International Business Machines Corporation Non-transactional page in memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537053A (ja) 2006-06-30 2009-10-22 インテル・コーポレーション 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
WO2009122694A1 (ja) 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Also Published As

Publication number Publication date
KR20140113605A (ko) 2014-09-24
JP2014182836A (ja) 2014-09-29
US20140281240A1 (en) 2014-09-18
JP2016129041A (ja) 2016-07-14
US20170123980A1 (en) 2017-05-04
KR20160130199A (ko) 2016-11-10
BR102014006298A2 (pt) 2018-02-14
JP6121010B2 (ja) 2017-04-26
GB2515146A (en) 2014-12-17
JP6371431B2 (ja) 2018-08-08
US9817758B2 (en) 2017-11-14
CN104050112B (zh) 2017-06-20
KR101779723B1 (ko) 2017-09-18
CN107193756A (zh) 2017-09-22
GB201404562D0 (en) 2014-04-30
DE102014003668A1 (de) 2014-09-18
JP2017130229A (ja) 2017-07-27
US9547594B2 (en) 2017-01-17
CN107193756B (zh) 2020-12-01
GB2515146B (en) 2016-02-17
CN104050112A (zh) 2014-09-17

Similar Documents

Publication Publication Date Title
KR101779723B1 (ko) 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
US10719443B2 (en) Apparatus and method for implementing a multi-level memory hierarchy
US11132298B2 (en) Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9269438B2 (en) System and method for intelligently flushing data from a processor into a memory subsystem
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9286205B2 (en) Apparatus and method for phase change memory drift management

Legal Events

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