KR20110134855A - 영구 메모리들을 위한 캐시 일관성 프로토콜 - Google Patents

영구 메모리들을 위한 캐시 일관성 프로토콜 Download PDF

Info

Publication number
KR20110134855A
KR20110134855A KR1020110055706A KR20110055706A KR20110134855A KR 20110134855 A KR20110134855 A KR 20110134855A KR 1020110055706 A KR1020110055706 A KR 1020110055706A KR 20110055706 A KR20110055706 A KR 20110055706A KR 20110134855 A KR20110134855 A KR 20110134855A
Authority
KR
South Korea
Prior art keywords
memory
main memory
cache
permanent
processing entities
Prior art date
Application number
KR1020110055706A
Other languages
English (en)
Other versions
KR101385430B1 (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 KR20110134855A publication Critical patent/KR20110134855A/ko
Application granted granted Critical
Publication of KR101385430B1 publication Critical patent/KR101385430B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 명세서에 개시된 청구 대상은 영구 메모리를 포함하는 캐시 일관성 프로세서 시스템에 관한 것이다.

Description

영구 메모리들을 위한 캐시 일관성 프로토콜{CACHE COHERENCE PROTOCOL FOR PERSISTENT MEMORIES}
본 명세서에 개시된 청구 대상은 영구 메모리(persistent memory)를 포함하는 프로세서 시스템의 캐시 일관성(cache coherence)에 관한 것이다.
컴퓨터 시스템들은 공유 메모리 멀티프로세서(shared memory multiprocessor: SMP) 구성을 이용할 수 있다. 동일한 메인 메모리를 공유하는 이러한 컴퓨터 시스템에서 프로세서들의 수를 증가시키는 것은 시스템의 성능을 향상시킬 수 있다. 컴퓨터 시스템은 캐시 메모리로부터 판독한 정보와 메인 메모리로부터 판독한 정보 사이에서의 일관성을 보장하기 위한 일관성 프로토콜을 포함할 수 있다. 예를 들어, 하나의 프로세서가 메인 메모리에 저장된 정보를 업데이트하는 경우, 정보의 변화는 다른 프로세서들의 메모리 캐시들에 저장된 복사본들(copies)에 반영될 수 있다.
컴퓨터 시스템들은 일관성 관리를 수행하기 위해, 예를 들어, MESI 프로토콜과 같은 임의의 수의 일관성 프로토콜들을 이용할 수 있다. MESI 프로토콜은 캐시 라인들이 4가지 상태들, 즉, "M"(변경)(Modified), "E"(배타적)(Exclusive), "S"(공유)(Shared), 및 "I"(무효)(Invalid) 상태들 중 하나의 상태라고 가정함으로써 캐시 메모리 내의 캐시 라인들을 관리할 수 있다. MESI 프로토콜을 이용하는 컴퓨터 시스템에서, 개별 프로세서들은 적어도 부분적으로 그의 MESI 상태에 기초하여 특정 캐시 라인에 대한 캐시 일관성 관리 요청을 발행할지를 판정할 수 있다.
비제한적이고 비망라적인 실시예들이 다음의 도면들을 참조하여 기술될 것이며, 여기에서 유사한 참조 번호들은, 달리 명시하지 않는 한, 여러 도면들에 걸쳐 유사한 부분들을 지칭한다.
도 1은 실시예에 따른 프로세싱 시스템 구성의 개략적 블록도.
도 2는 실시예에 따른 메인 메모리의 개략도.
도 3은 실시예에 따른 캐시 일관성 프로토콜의 타이밍도.
도 4는 실시예에 따른 멀티프로세서 시스템 구성의 개략도.
도 5는 또 다른 실시예에 따른 멀티프로세서 시스템 구성의 개략도.
도 6은 실시예에 따른 컴퓨팅 시스템 및 메모리 디바이스의 개략도.
본 명세서를 통해서 "일 실시예" 또는 "실시예"에 대한 언급은 그 실시예에 관하여 기술된 특정 특징, 구조 또는 특성이 청구 대상의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서를 통해 여러 장소에서 "일 실시예에서" 또는 "실시예"라는 문구의 출현이 반드시 모두 동일한 실시예를 참조하는 것은 아니다. 또한, 특정 특징들, 구조들 또는 특성들은 하나 이상의 실시예들에서 결합될 수 있다.
실시예에서, 둘 이상의 프로세싱 엔티티들의 시스템, 예컨대 중앙 처리 유닛(CPU)들은 영구 메모리를 포함할 수 있다. 이러한 시스템을 위한 캐시 일관성 프로토콜은 영구적인, 비휘발성 메모리의 특정 양태들을 수용하기 위한 하나 이상의 특징들을 포함할 수 있다. 이하 상세히 기술되는 바와 같이, 이러한 특징들은 영구 메모리를 업데이트하기 위한 프로세스가 보류중인지 및/또는 이러한 프로세스가 완료되었는지를 나타내는 하나 이상의 캐시 일관성 프로토콜 상태를 포함할 수 있다. 또 다른 특징은 영구 메모리를 포함하는 메모리의 범위를 나타내는 영구 메모리 디스크립터(descriptor)를 포함할 수 있다. 따라서, 둘 이상의 프로세싱 엔티티들의 이러한 시스템은, 이하 상세히 기술되는 바와 같이, 캐시 일관성 프로토콜의 적어도 일부분을 제공하기 위한 회로를 또한 포함할 수 있다.
둘 이상의 프로세싱 엔티티들의 이러한 시스템은, 예를 들어, 많은 환경들 중 임의의 환경, 예를 들면, 단지 일부 예들을 말한 것인, 컴퓨터들, 휴대폰들, PDA들, 데이터 로거(data logger)들, 및 항법 장비(navigational equipment)에서 애플리케이션들을 실행하기 위한 컴퓨팅 시스템을 포함할 수 있다. 특히, 다수의 애플리케이션들은 다수의 CPU들에 의해 동시에 실행될 수 있다. 일 구현에서, 하나 이상의 이러한 CPU는 개별적으로 메인 메모리 및/또는 캐시 메모리와 연관될 수 있고, 이들 중 어느 하나의 적어도 일부분은 영구 메모리를 포함할 수 있다. 예를 들어, 메인 메모리 및/또는 캐시 메모리는 영구 메모리의 일부분 및 다양한 RAM(random access memory) 중 임의의 것을 포함할 수 있다. 특정 예에서, 메인 메모리는 상 변화 메모리(phase change memory: PCM) 및 DRAM(dynamic random access memory) 중 적어도 일부분을 포함할 수 있다. 또 다른 특정 예에서, 캐시 메모리는 PCM 및/또는 DRAM을 포함할 수 있다. 이러한 메모리 구성들은, 예를 들어, 비휘발성, 상대적으로 높은 프로그램/판독 속도들과 같은 이득들을 제공할 수 있다. 물론, 이러한 메모리의 설명들은 단지 예들이며, 청구 대상은 이에 한정되지 않는다.
본 명세서에서, 영구 메모리는 약간의 변경가능한 용량을 가질 수 있는 PCM과 같은 비휘발성 메모리를 말한다. 영구 메모리의 또 다른 특징은 비대칭 판독/기입 속도들을 포함하며, 여기서 프로그램 속도는 주어진 메모리 셀에 대한 판독 속도보다 느릴 수 있다. 이러한 특징을 갖는 영구 메모리가 존재하는 멀티 프로세서 시스템에서는, 예를 들어, 하나 이상의 프로세싱 엔티티들이 메인 메모리를 공유하게 하도록 특정 캐시 일관성 프로토콜들을 이용할 수 있다. 본 명세서에서, 메인 메모리는 프로세싱 엔티티에 의해 실행될 수 있는 하나 이상의 애플리케이션을 유지하기 위해 프로세싱 엔티티에 의해 이용되는 메모리를 말한다. 또한, 메인 메모리는 메인 메모리를 액세스하기 위해 메모리 명령들을 이용하는 프로세싱 엔티티에 직접 또는 간접적으로 연결될 수 있다. 메인 메모리는, 예를 들어, 이러한 메모리를 액세스하기 위해 I/O 동작들을 이용하는 I/O 인터페이스를 통해 액세스가능한 메모리와는 다르다. 메인 메모리의 또 다른 예에서, CPU는 메인 메모리 내에 상주하는 데이터를 조작(예를 들어, 소거, 기입)하는 능력에 제한을 받을 것이다. 여기서, 단어 "메인"은, 예를 들어, 디스크 드라이브와 같은 외부 대용량 저장 디바이스들과 구별하는 데 이용될 수 있다. 물론, 메인 메모리에 대한 이러한 설명들은 단지 예이며, 청구 대상은 이에 한정되지 않는다.
본 명세서에 기술된 실시예들은, 예를 들어, MESI, MOSI, 및 MOESI 프로토콜들과 같은 다수의 공지된 멀티 프로세서 캐시 일관성 프로토콜들 중 임의의 프로토콜의 확대를 포함한다. 특히, 이러한 실시예들은 앞서 열거한 프로토콜들의 상태들 및 하나 이상의 추가 상태들을 포함할 수 있으며, 이하 상세히 기술된다. 이러한 실시예들은, 예를 들어, 영구 메모리들에 대한 지원을 포함하도록 캐시 일관성 시맨틱(semantics)을 확장할 수 있다. 캐시 일관성 프로토콜은, 예를 들어, 통합된 메모리에서 동작하는 다수의 프로세서들 사이에서 캐시 일관성을 보장하는 시맨틱을 구축할 수 있다. 캐시 일관성 시맨틱은 동일한 메모리에서 동작하는 둘 이상의 프로세서들이 동기화되지 않게 되는 경쟁 상태(race condition)들을 방지할 수 있다. 캐시 일관성 프로토콜들은 메인 메모리와 로컬 캐시들이 동기화하도록 프로세서에 명령들을 제공할 수 있다. 캐시 일관성 프로토콜들은, 예를 들면, 프로세서들의 캐시의 콘텐츠가 메인 메모리의 콘텐츠에 대해 최신임을 보장하도록 도울 수 있다.
일 실시예에서, PCM은 컴퓨팅 플랫폼을 위한 메인 메모리로서 이용될 수 있다. PCM은, DRAM이 휘발성이라고 해도, DRAM과 유사한 약간의 변경가능한 특성을 갖는 영구 메모리를 포함한다. PCM이 컴퓨팅 플랫폼 상에서 메인 메모리로 이용된다면, PCM은 DRAM에 적용되는 동일한 캐시 일관성 문제들의 적어도 일부를 포함할 수 있다. 따라서, PCM이 애플리케이션에서 DRAM을 대체하는 데 사용된다면, 단지 일부 예들을 말한 것인, MESI, MOSI, 및 MOESI 프로토콜들은 PCM을 위한 캐시 일관성을 충분히 커버할 수 있다. PCM이 약간의 변경가능한 방식에 있어서 DRAM과 비슷하다고 해도, PCM은 영구 메모리를 포함한다는 점에서 DRAM과 다를 수 있다. DRAM은 전원이 제거된다면 저장된 콘텐츠를 잃어버릴 수 있지만, PCM은 전원이 제거되더라도 저장된 콘텐츠를 유지할 수 있다. 따라서, 일 구현에서, PCM이 메인 메모리의 적어도 일부분을 포함한다면, PCM의 이러한 비휘발적 특성을 지원하기 위해 캐시 일관성 시맨틱이 추가될 수 있다. 물론, PCM을 메인 메모리로서 포함하는 실시예의 이러한 특징들 및 세부 사항은 단지 예들이며, 청구 대상은 이에 한정되지 않는다.
일 실시예에서, 캐시 일관성 시맨틱을 확대시키는 추가 상태들은, 예를 들어, 인 메모리 데이터베이스(in-memory database)들과 같은 메모리 계층 내의 상대적으로 높은 레벨에서의 메모리 일관성에 대한 지원을 제공할 수 있다. 상대적으로 빠르지만 휘발성인 메모리, 예를 들면, DRAM을 포함하는 메인 메모리의 경우에, 저장된 정보는 상대적으로 느린 디스크, 테이프 또는 다른 느린 영구 메모리에 결국에 복사될 수 있다. 그러나, PCM이 메인 메모리로서 이용된다면, PCM의 영구적인 능력 때문에, 애플리케이션은 저장된 정보를 또 다른 저장 매체로 플러시(flush)하거나 또는 체크포인트(checkpoint)할 필요가 없다. 그러나, PCM의 콘텐츠가 업데이트 프로세스 중에 있는지, 그리고 이러한 업데이트가 완료되었는지를 다양한 애플리케이션 프로세스들에게 전달하는 프로세스가 있을 수 있다. 따라서, 캐시 일관성 시맨틱을 확대시키는 추가 상태들은 애플리케이션 레벨에서 보다 높은 레벨의 일관성 시맨틱을 지원할 수 있다. 특정 구현에서, 소위 영구 메모리 디스크립터는, 이하 상세히 설명되는 바와 같이, 영구성을 지원하는 메인 메모리의 범위를 나타내는데 이용될 수 있다.
도 1은 실시예에 따른 프로세싱 시스템(100)의 개략 블록도이다. 프로세싱 시스템(100)은 프로세싱 엔티티(110), 메인 메모리(120), 및/또는 캐시(130)를 포함할 수 있다. 특히, 프로세싱 엔티티(110)는 메인 메모리(120) 내에서 유지되는 하나 이상의 애플리케이션들을 호스트하는 CPU를 포함할 수 있다. 도 1에는 도시되지 않았지만, 프로세싱 시스템(100)은 추가 프로세싱 엔티티들, 추가 메인 메모리들, 및/또는 추가 캐시들을 포함할 수 있다. 예를 들어, 프로세싱 엔티티(110), 메인 메모리(120), 및/또는 캐시(130)는 더 큰 멀티 프로세서 시스템들을 위한 빌딩 블록들을 집합적으로 포함할 수 있다. 일 구현에서, 프로세싱 시스템(100)은 상기 하나 이상의 프로세싱 엔티티들 사이에서 공유된 하나 이상의 레벨들의 캐시 메모리를 포함하는 메모리 계층을 이용하여 동작할 수 있다. 예를 들어, 캐시 메모리는 제1 레벨 캐시 및 제2 레벨 캐시를 포함할 수 있고, 이들 중 적어도 일부는 영구 메모리를 포함할 수 있다. 캐시 일관성 프로토콜은 일관성 관리를 위해 프로세싱 시스템(100)에 적용될 수 있다. 예를 들어, 이러한 프로토콜은 둘 이상의 메인 메모리들(120) 및/또는 하나 이상의 캐시들(130) 사이에서 핀독/기입 프로세스 충돌들을 회피하게 할 수 있다. 하드웨어 블록(150) 및/또는 코드 블록(160)은 함께 또는 별개로 캐시 일관성 프로토콜을 제공할 수 있다. 특정 구현에서, 이러한 캐시 일관성 프로토콜은, 일부 예들만을 말한 것인, 변경, 배타적, 공유, 무효 상태들(예를 들어, MESI)과 같은 다수의 상태들을 포함할 수 있는 프로토콜(140)을 포함할 수 있다. 프로세스 중 상태(in-process state)(142)는, 이하 상세히 설명되는 바와 같이, 프로세싱 시스템(100) 내에 영구 메모리를 수용하기 위해 프로토콜(140) 내에 포함될 수 있다. 프로토콜(140) 내에 포함된 또 다른 상태는 커미트(committed) 상태(144)를 포함할 수 있으며, 이는 또한 이하에 상세히 기술된다. 이러한 상태들은 설정 또는 재설정 비트들, 특정 상태 정보를 저장하는 하나 이상의 메모리 셀들, 전선들 상에서 전송되는 하나 이상의 신호들, 및/또는 특정 상태를 전달하는 그외의 유형의 정보와 같은 선택가능한 플래그(flag)들에 의해 반영될 수 있다. 물론, 임의의 수의 상태들이 프로토콜(140) 내에 포함될 수 있으며, 청구 대상은 본 명세서에 기술된 것들에 한정되지 않는다. 일 구현에서, 하드웨어 블록(150)은 캐시 일관성 프로토콜(140)의 적어도 일부분을 제공하기 위해 전자 회로를 포함할 수 있다. 이러한 전자 회로는, 예를 들어, 로직 게이트들의 다양한 구성들을 포함할 수 있다. 코드 블록(160)은 캐시 일관성 프로토콜(140)의 적어도 일부분을 제공하기 위해 하나 이상의 애플리케이션들을 포함할 수 있다. 코드 블록(160)의 일부분들은 프로세싱 엔티티(110)에 의해 실행될 수 있다.
일 실시예에서, 프로세스 중 상태(142)는 메인 메모리(120) 내의 메모리 위치가 업데이트 프로세스 중에 있다는 것을 프로세싱 시스템(100) 내의 하나 이상의 메모리 컨트롤러들(115)에게 나타내는 데 이용될 수 있다. 따라서, 캐시(130)에 맵핑된 이러한 특정 메모리 위치를 갖는 애플리케이션은 이러한 업데이트 동작의 완료를 기다리는 것을 선택할 수 있다. 대안으로, 애플리케이션은 업데이트를 무시하고 현재 이용가능한 구식의(out-of-date) 캐시 콘텐츠(예를 들어, 콘텐츠의 업데이트 완료 이전)를 이용할 수 있다. 특정 구현에서, 커미트 상태(144)는 메모리 업데이트가 완료되어 캐시(130)가 정보를 다시 로드할 수 있다는 것을 프로세싱 시스템(100) 내의 메모리 컨트롤러들(115)에게 나타내는 데 이용될 수 있다. 프로세스 중 상태를 무시하도록 선택할 수 있는 애플리케이션의 일 예는 검색 엔진인데, 그 이유는 약간 오래된 정보가 검색 결과들에 불리하게 영향을 미칠 필요가 없기 때문이다. 반대로, 프로세스 중 상태를 무시하도록 선택할 수 없는 애플리케이션의 일 예는, 업데이트 프로세스의 완료시에 이용가능한 가장 최신 정보에 의존하는 뱅크(bank) 애플리케이션이다. 따라서, 이러한 애플리케이션은 임의의 업데이트 동작의 완료를 기다릴 수 있고, 이 애플리케이션이 가장 최신의 메모리 값들을 계속 가지고 있다는 것을 보장하기 위해 관련된 캐시 정보를 무효화할 수 있다. 물론, 프로세싱 시스템과 캐시 일관성 프로토콜의 이러한 세부 사항은 단지 예일 뿐이며, 청구 대상은 이에 제한되지 않는다.
도 2는 일 실시예에 따른 메인 메모리(210)의 개략도이다. 메인 메모리(210)의 적어도 일부분은 영구 메모리(220)를 포함할 수 있다. 특정 구현에서, 메인 메모리(210)의 또 다른 부분은 휘발성 DRAM과 같은 다양한 유형의 메모리를 포함할 수 있다. 영구 메모리(220)의 부분들은, 예를 들어, 하나 이상의 다이(die) 구조들을 포함할 수 있는 메인 메모리(210)에 인접하여 배열될 필요는 없다. 캐시 일관성 프로토콜 블록(255)은 메인 메모리(210)를 포함하는 프로세싱 시스템(예를 들어, 도 1에 도시한 시스템(100))에 캐시 일관성 프로토콜을 제공하기 위해 하드웨어 및/또는 구현되는 코드를 포함할 수 있다. 특정 구현에서, 이러한 캐시 일관성 프로토콜은 상술한 바와 같이, 영구 메모리(220)를 수용하기 위해 프로세스 중 상태(142) 및/또는 커미트 상태(144)를 포함할 수 있다. 예를 들어, 프로세스 중 상태(142)는 판독 동작에 비해 프로그램 동작의 추가된 레이턴시(latency)를 수용할 수 있다. 따라서, 프로세스 중 상태(142)는 애플리케이션이 상대적으로 긴 캐시 프로그램 프로세스를 기다릴지를 애플리케이션에 나타낼 수 있다. 또 다른 특정 구현에서, 캐시 일관성 프로토콜 블록(255)은 메인 메모리(210)의 어느 부분들이 영구 메모리를 포함하는지를 컴퓨팅 플랫폼이 식별하게 하도록 영구 메모리 디스크립터를 제공할 수 있다. 예를 들어, 이러한 식별은 메인 메모리(210) 내의 메모리 위치들의 하나 이상의 주소들 또는 주소들의 범위들을 포함할 수 있다. 물론, 청구 대상은 이러한 프로토콜 상태들에 한정되지 않으며, 캐시 일관성 프로토콜 블록(255)은 임의의 수의 프로토콜 상태들을 시스템에 제공할 수 있다.
도 3은 일 실시예에 따른 캐시 일관성 프로토콜의 타이밍도이다. 시간 T1에서, 프로세스 중 상태는 하나 이상의 메인 메모리들 내의 적어도 하나의 메모리 위치가 업데이트 프로세스 중에 있다는 것을 메모리 컨트롤러에게 나타내도록 천이될 수 있다. 시간 간격 T2 동안, 업데이트 중인 메모리 위치(들)와 연관된 하나 이상의 애플리케이션들은 이러한 업데이트 동작의 완료를 기다리는 것을 선택할 수 있다. 또 다른 구현에서, 상기한 바와 같이, 애플리케이션은 이러한 업데이트 동작을 무시하고 단지 현재 이용가능한 구식의 캐시 콘텐츠를 이용할 수 있다. 시간 T3에서, 업데이트 동작이 완료될 수 있으며, 이는, 예를 들어, 하나의 상태에서 또 다른 상태로, 이를테면 하이에서 로우로 또는 로우에서 하이로 천이된 하드웨어 신호에 의해 나타내질 수 있다. 완료된 업데이트 동작 다음으로, 시간 T4에서, 커미트 상태는, 메모리 업데이트가 완료되어, 정보를 다시 로드하도록 캐시 메모리가 이용가능할 수 있다는 것을 메모리 컨트롤러에게 나타내도록 천이될 수 있다. 물론, 캐시 일관성 프로토콜의 이러한 타이밍 세부 사항은 단지 예들이며, 청구 대상은 이에 제한되지 않는다.
도 4는 일 실시예에 따른 멀티 프로세서 시스템 구성(400)의 개략도이다. 멀티 프로세서 시스템은 임의의 수의 프로세싱 엔티티들을 포함할 수 있지만, 도 4에는 두 개의 이러한 엔티티들이 도시되어 있다. 특히, 이러한 프로세싱 엔티티들은 캐시(430)와 연관된 CPU(410) 및 캐시(435)와 연관된 CPU(415)를 포함할 수 있다. 일 예에서, CPU(410)는 메인 메모리(420) 내의 위치를 가리키는 캐시 라인을 가질 수 있다. CPU(415)는 메인 메모리(420) 내의 동일한 위치를 가리키는 캐시 라인을 가질 수 있다. CPU(410) 및 CPU(415) 모두는 메인 메모리 위치로/로부터 기입하거나 또는 판독할 수 있다. CPU(410)가 메인 메모리 위치에 기입하고 있는 동안 CPU(415)가 캐시 라인으로부터 판독하려 하는 경우 충돌이 발생할 수 있다. 일 구현에서, CPU(415)는 이러한 잠재적 충돌에 대해 고려하지 않을 수 있다. 또 다른 구현에서, 이러한 충돌을 방지하기 위해, CPU(415)는 CPU(410)로부터의 프로세스 중 기입(in-process write)이 완료되는 것을 보장하기 위해 프로세스 중 상태들 및/또는 커미트 상태들을 모니터할 수 있다. 일 구현에서, 프로세스 중 상태는 본 명세서에서 I-비트라 불리는 특정 비트, 플래그, 또는 신호에 대응할 수 있으며, 커미트 상태는 본 명세서에서 C-비트라 불리는 특정 비트, 플래그, 또는 신호에 대응할 수 있다. 이러한 비트들은, 상술한 바와 같이, 메인 메모리를 업데이트 하는 프로세스의 상태를 나타내도록 설정 상태 및 재설정 상태 사이에서 천이할 수 있다. 특정 구현에서, C 비트 또는 I 비트 중 어느 것도 설정되지 않은 경우에, CPU(415)는 캐시 라인으로부터 판독할 수 있다. 예를 들어, I-비트가 설정되면, CPU(410)가 메인 메모리를 업데이트하는 중일 수 있고, CPU(415)는 업데이트 완료를 기다릴 수 있다. CPU(410)의 업데이트의 완료시에, 이러한 완료를 나타내기 위해 C-비트가 천이될 수 있다. 따라서, CPU(415)는 C-비트를 천이시키는 CPU(410)에 응답하여 캐시 라인을 다시 로드할 수 있다. 그 후, CPU(415)는 메모리 위치에 대한 최근의 최신 값을 포함할 수 있다.
일 실시예에서, 적어도 일부분이 영구 메모리를 포함하는 메인 메모리의 일관성은 운영 시스템 가상 메모리에 의해 및/또는 기본 페이지 핸들러(default page handler)에 의해 유지될 수 있다. 이러한 운영 시스템은 일관성 관리를 포함하는 벌크(bulk) 기입 동작을 식별하는 방법을 지원할 수 있다. 이러한 벌크 기입 동작은, 예를 들어, 데이터베이스 기입 동작을 포함할 수 있다. 애플리케이션들은 서로간에 조정될 수 있어 벌크 기입 동작이 자동 기입 동작으로서 관리될 수 있으며, 여기에서 데이터베이스에 걸친 다중 필드들은 이러한 업데이트 프로세스가 완료되었다고 간주될 수 있기 전에 업데이트될 수 있다. 애플리케이션 레벨 시맨틱은, 벌크 동작들이 더 많은 양의 정보를 포함함에도 불구하고, 하나 이상의 애플리케이션들이 개별 캐시 라인들과 유사한 방식으로 무효 데이터를 사용하는 것을 막을 수 있다. 일 구현에서, 벌크 기입 동작의 크기를 전달하는 것은 영구성 DMA(direct memory access) 명령을 포함할 수 있다. 또 다른 구현에서, 벌크 기입 동작의 크기를 전달하는 것은 메모리 풀(pool)의 정의를 전달하는 메커니즘을 포함할 수 있다. 또 다른 구현에서, 벌크 기입 동작의 크기를 전달하는 것은 동적 메모리 할당 시간에 사용되는 플래그를 포함할 수 있다. 또 다른 구현에서, 벌크 기입 동작의 크기를 전달하는 것은 애플리케이션에 의한 시그널링(signaling)을 포함할 수 있다. 영구 메모리에 대한 애플리케이션 레벨 일관성 관리는, 예를 들어, 애플리케이션 레벨 메모리 일관성을 구축하기 위해 초기 명령들로서 상술한 프로세스 중 상태 및/또는 커미트 상태를 이용할 수 있다.
도 5는 일 실시예에 따른 멀티-코어(multi-core) 시스템(500)의 개략도이다. 이러한 시스템은, 예를 들어, 하나 이상의 버스들을 통해 서로 접속된 프로세서 노드들(502, 504, 506 및 508)을 포함할 수 있다. 일 구현에서, 멀티-코어 시스템(500)은 공유 메모리 멀티프로세서를 포함할 수 있다. 개별 프로세서 노드들(502, 504, 506, 및 508)은 프로세서들(510, 512, 514, 및 516), 캐시 메모리들(530, 532, 534, 및 536), 및/또는 로컬 메모리들(520, 522, 524, 및 526)을 각각 포함할 수 있다. 특정 프로세서 노드들 내에서, 이러한 로컬 메모리들은 특정 프로세서 노드들의 프로세서들과 연관된 메인 메모리들을 포함할 수 있다. 예를 들어, 로컬 메모리(520)는 프로세서 노드(502) 내의 프로세서(510)와 연관된 메인 메모리를 포함할 수 있다. 일 구현에서, 로컬 메모리들은 다른 프로세서 노드들의 프로세서들에 의해 공유되거나 또는 액세스될 수 있다. 하나 이상의 로컬 메모리들(520, 522, 524, 및 526)은 모든 영구 메모리 또는 그 중 적어도 일부분을 포함할 수 있다. 특정 구현에서, 로컬 메모리의 일부분은 다양한 유형의 메모리, 이를테면 휘발성 DRAM을 포함할 수 있다. 영구 메모리의 일부분들은 로컬 메모리에 인접하게 배치될 필요가 없으며, 로컬 메모리는, 예를 들어, 하나 이상의 다이 구조를 포함할 수 있다. 도시되지는 않았지만, 프로세서 유닛들은, 예를 들면, 프로세서들로서 동일한 다이 상에 또는 별개의 다이들 상에 집적된 메모리 컨트롤러들을 포함할 수 있다. 또한, 도 5가 4개의 노드들을 갖는 시스템을 도시하였지만, 임의의 수의 노드들이 포함될 수 있으며 청구 대상은 이러한 특정 배열에 제한되지 않는다.
캐시 메모리들(530, 532, 534, 및 536)은 임의의 로컬 메모리들(520, 522, 524 및 526)로부터 획득한 정보의 복사본을 저장하는 고속 메모리를 포함할 수 있다. 이러한 캐시 메모리는, 예를 들어, 개별 로컬 메모리들의 주소의 적어도 일부분을 이용하여 검색될 수 있다. 캐시 메모리를 검색하기 위해 이용된 메모리 어드레스의 이러한 부분을 캐시 인덱스(index) 부분이라고 한다. 예를 들어, 캐시 메모리(530)는 캐시 인덱스 부분 및 캐시 데이터 부분을 포함할 수 있다. 캐시 인덱스 부분은, 예를 들어, 상술한 바와 같이, 캐시 메모리(530)에 저장된 정보, MESI 상태 정보와 같은 상태 정보, 프로세스 중 및/또는 커미트 상태 정보의 라인 어드레스들을 포함할 수 있다. 물론, 멀티-코어 시스템의 이러한 세부 사항은 예들일 뿐이며, 청구 대상은 이에 한정되지 않는다.
도 6은 메모리 디바이스(610)를 포함하는 컴퓨팅 시스템(600)의 예시적인 실시예를 나타내는 개략도이다. 컴퓨팅 디바이스(604)는 메모리 디바이스(610)를 관리하도록 구성될 수 있는 임의의 디바이스, 기기, 또는 머신을 대표할 수 있다. 메모리 디바이스(610)는 메모리 컨트롤러(615) 및 메모리(622)를 포함할 수 있다. 제한되지 않는 예로서, 컴퓨팅 디바이스(604)는; 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 워크스테이션, 서버 디바이스, 등과 같은 하나 이상의 컴퓨팅 디바이스들 및/또는 플랫폼들; 예를 들어, 개인 휴대 정보 단말기, 이동 통신 디바이스, 등과 같은 하나 이상의 개인용 컴퓨팅 또는 통신 디바이스들 또는 기기들; 예를 들어, 데이터베이스 또는 데이터 저장 서비스 제공자/시스템과 같은 컴퓨팅 시스템 및/또는 연관된 서비스 제공자 능력; 및/또는 이들의 결합을 포함할 수 있다.
일 실시예에서, 컴퓨팅 디바이스(604)는 블록(620)으로 표현된 멀티 프로세싱 유닛들을 포함할 수 있다. 이러한 멀티 프로세싱 유닛들은 버스(640) 및 호스트 또는 메모리 컨트롤러(615)를 통해 메모리(622)에 유효하게 연결될 수 있다. 예를 들어 버스(640)를 통해, 멀티 프로세싱 유닛들(620)은 메인 메모리를 포함할 수 있는, 메모리(622)를 공유할 수 있다. 프로세싱 유닛(620)은 데이터 컴퓨팅 절차 또는 프로세스의 적어도 일부분을 실행하도록 구성가능한 하나 이상의 회로들을 나타낸다. 제한되지 않는 예로서, 프로세싱 유닛(620)은 멀티 프로세서들, 컨트롤러들, 마이크로 프로세서들, 마이크로 컨트롤러들, 애플리케이션 특정 집적 회로들, 디지털 신호 프로세서들, 프로그램가능한 로직 디바이스들, 필드 프로그램가능한 게이트 어레이들, 등 또는 이들의 임의의 결합을 포함할 수 있다. 프로세싱 유닛(620)은 이를테면, 판독, 기입 및/또는 소거와 같은 메모리 관련 동작들을 물론, 예를 들어 앞서 논의한 메모리 분할(partition) 프로세스들을 처리하도록 메모리 컨트롤러(615)와 통신할 수 있다. 프로세싱 유닛(620)은 메모리 컨트롤러(615)와 통신하도록 구성된 운영 시스템을 포함할 수 있다. 이러한 운영 시스템은, 예를 들어, 버스(640)를 통해 메모리 컨트롤러(615)에 발송될 명령어들을 생성할 수 있다. 이러한 명령어들은, 예를 들어, 판독/기입 명령들을 포함할 수 있다.
메모리(622)는 임의의 데이터 저장 메커니즘을 나타낸다. 메모리(622)는, 예를 들어, DRAM(624) 및/또는 영구 메모리(626)를 포함할 수 있다. 특정 실시예에서, 메모리(622)는, 전술한 바와 같이, 영구 메모리의 적어도 일부분을 포함하는 메인 메모리를 포함할 수 있다. 메모리(622)는 또한 영구 메모리의 적어도 일부분을 똑같이 포함할 수 있는 캐시 메모리를 포함할 수 있다. 본 예에서는 프로세싱 유닛(620)으로부터 분리되는 것으로 예시되었지만, 모든 DRAM(624) 또는 그의 일부가 프로세싱 유닛(620) 내에 구비되거나 또는 그렇지 않은 경우 프로세싱 유닛(620)과 같은 장소에 배치되고/연결될 수 있다는 것은 자명하다.
일 실시예에 따르면, 메모리(622)의 하나 이상의 부분들은 메모리(622)의 특정 상태로 표현되는 정보 및/또는 데이터를 나타내는 신호들을 저장할 수 있다. 예를 들어, 데이터 및/또는 정보를 나타내는 전자 신호는 데이터 및/또는 정보를 이진 정보(예를 들어, 1 및 0)로 나타내기 위해 메모리(622)의 이러한 부분들의 상태에 영향을 미치거나 또는 변경함으로써 메모리(622)의 일부에 "저장"될 수 있다. 이와 같이, 특정 구현에서, 데이터 및/또는 정보를 나타내는 신호를 저장하기 위해 메모리의 일부분의 상태를 그렇게 변경하는 것은 다른 상태 또는 다른 것으로 메모리(622)를 변형하게 한다.
영구 메모리(626)는, 예를 들어, 주 메모리로서 동일한 또는 유사한 유형의 메모리 및/또는 하나 이상의 데이터 저장 디바이스들 또는 시스템들, 이를테면, 예를 들어, PCM, 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 고체 상태 메모리 드라이브 등을 포함할 수 있다. 특정 구현에서, 영구 메모리(626)는 컴퓨터 판독가능한 매체(628)를 동작가능하게 수용할 수 있거나, 또는 그렇지 않은 경우 컴퓨터 판독가능한 매체(628)에 연결되도록 구성될 수 있다. 컴퓨터 판독가능한 매체(628)는, 예를 들어, 시스템(600) 내의 하나 이상의 디바이스들에 대한 액세스 가능한 데이터, 코드 및/또는 명령들을 운반할 수 있고/있거나 만들 수 있는 임의의 매체를 포함할 수 있다.
일 실시예에서, 시스템(600)은 메인 메모리에 대한 적어도 제1 인터페이스와 프로세싱 엔티티에 대한 (예를 들어 버스(640)를 통해 프로세서(620)까지의) 적어도 제2 인터페이스를 갖는 메모리 컨트롤러(615)를 포함할 수 있으며, 여기서 메모리 컨트롤러는 캐시 일관성 프로토콜에 따라 프로세싱 엔티티가 메인 메모리를 액세스하는 것을 가능하게 할 수 있고, 상기 메인 메모리의 적어도 일부분은 영구 메모리를 포함한다. 이러한 영구 메모리는, 예를 들어, PCM을 포함할 수 있다. 컴퓨팅 디바이스(604)는, 예를 들어, 입/출력(632)을 포함할 수 있다. 입/출력(632)은 사람 및/또는 머신 입력들을 수용하거나 또는 그렇지 않은 경우 도입하도록 구성가능할 수 있는 하나 이상의 디바이스들 또는 특징들, 및/또는 사람 및/또는 머신 출력들을 전달하거나 또는 그렇지 않은 경우 제공하도록 구성가능할 수 있는 하나 이상의 디바이스들 또는 특징들을 나타낸다. 제한되지 않는 예로서, 입/출력 디바이스(632)는 동작가능하게 구성된 디스플레이, 스피커, 키보드, 마우스, 트랙볼, 터치 스크린, 데이터 포트 등을 포함할 수 있다.
예시적인 실시예들로 현재 간주되는 실시예들이 예시되고 설명되었지만, 청구 대상을 벗어나지 않고, 다양한 다른 변형들이 행해질 수 있으며, 등가물들이 대체될 수 있다는 것은 당업자들에게 자명할 것이다. 부가적으로, 본 명세서에 기술된 중심 개념을 벗어나지 않고 청구 대상의 교시에 특정한 상황을 맞추도록 많은 변형들이 이뤄질 수 있다. 그러므로, 청구 대상은 개시된 특정 실시예들에 한정되지 않도록 의도되지만, 이러한 청구 대상도 첨부한 특허청구범위의 범주 내에 있는 모든 실시예들과 그들의 등가물을 포함할 수 있다.

Claims (22)

  1. 메인 메모리에 대한 적어도 제1 인터페이스 및 두 개 이상의 프로세싱 엔티티들에 대한 적어도 제2 인터페이스를 갖는 메모리 컨트롤러
    를 포함하고,
    상기 메모리 컨트롤러는 캐시 일관성 프로토콜(cache coherency protocol)에 따라 상기 프로세싱 엔티티들이 상기 메인 메모리를 액세스하는 것을 가능하게 할 수 있고, 상기 메인 메모리의 적어도 일부분은 영구 메모리(persistent memory)를 포함하는 메모리 디바이스.
  2. 제1항에 있어서,
    상기 캐시 일관성 프로토콜은 상기 메인 메모리가 현재 업데이트 프로세스 중에 있는지를 나타내는 제1 상태, 및 상기 업데이트 프로세스가 완료되었는지를 나타내는 제2 상태를 포함하는 메모리 디바이스.
  3. 제2항에 있어서,
    상기 메모리 컨트롤러는 또한 상기 업데이트 프로세스 동안 상기 메인 메모리를 액세스하는 것을 기다리도록 상기 두 개 이상의 프로세싱 엔티티들 중 적어도 하나에게 신호할 수 있는 메모리 디바이스.
  4. 제1항에 있어서,
    상기 메모리 컨트롤러는 또한 메모리 디스크립터(descriptor)가 영구 메모리를 포함하는 상기 메인 메모리의 상기 적어도 일부분을 식별하는 것을 가능하게 할 수 있는 메모리 디바이스.
  5. 제1항에 있어서,
    상기 영구 메모리는 상 변화 메모리(phase change memory; PCM)를 포함하는 메모리 디바이스.
  6. 제1항에 있어서,
    상기 영구 메모리는 비대칭적(asymmetrical) 판독/기입 속도들을 갖는 메모리를 포함하는 메모리 디바이스.
  7. 제1항에 있어서,
    상기 두 개 이상의 프로세싱 엔티티들은 복수의 중앙 처리 장치(CPU)들을 포함하는 메모리 디바이스.
  8. 제1항에 있어서,
    상기 메모리 컨트롤러는 또한 메모리 계층(hierarchy)이 상기 두 개 이상의 프로세싱 엔티티들 사이에서 공유되는 하나 이상의 레벨의 캐시 메모리를 포함하는 것을 가능하게 할 수 있는 메모리 디바이스.
  9. 제8항에 있어서,
    상기 하나 이상의 레벨의 캐시 메모리의 적어도 일부분은 영구 메모리를 포함하는 메모리 디바이스.
  10. 복수의 프로세싱 엔티티들이 메인 메모리를 공유하게 하도록 캐시 일관성 프로토콜을 관리하는 단계
    를 포함하고,
    상기 메인 메모리의 적어도 일부분은 영구 메모리를 포함하는 방법.
  11. 제10항에 있어서,
    상기 캐시 일관성 프로토콜을 제1 상태로 천이시켜, 상기 메인 메모리의 업데이트 프로세스 동안 상기 메인 메모리를 액세스하는 것을 기다리도록 상기 복수의 프로세싱 엔티티들에게 명령하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 캐시 일관성 프로토콜을 제2 상태로 천이시켜, 상기 복수의 프로세싱 엔티티들에게 상기 업데이트 프로세스가 완료된 것을 알리는 단계를 더 포함하는 방법.
  13. 제10항에 있어서,
    상기 영구 메모리는 상 변화 메모리(PCM)를 포함하는 방법.
  14. 제10항에 있어서,
    상기 영구 메모리는 비대칭적 판독/기입 속도들을 갖는 메모리를 포함하는 방법.
  15. 제10항에 있어서,
    상기 캐시 일관성 프로토콜은, 적어도 부분적으로, 상기 영구 메모리의 하나 이상의 레이턴시 특성에 기초하는 방법.
  16. 제10항에 있어서,
    상기 복수의 프로세싱 엔티티들은 하나 이상의 중앙 처리 장치(CPU)를 포함하는 방법.
  17. 복수의 프로세싱 엔티티들; 및
    메모리 디바이스
    를 포함하고,
    상기 메모리 디바이스는,
    메인 메모리에 대한 적어도 제1 인터페이스 및 상기 복수의 프로세싱 엔티티들에 대한 적어도 제2 인터페이스를 갖는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 캐시 일관성 프로토콜에 따라 상기 복수의 프로세싱 엔티티들이 상기 메인 메모리를 액세스하는 것을 가능하게 할 수 있고, 상기 메인 메모리의 적어도 일부분은 영구 메모리를 포함하는 시스템.
  18. 제17항에 있어서,
    상기 캐시 일관성 프로토콜은 상기 메인 메모리가 현재 업데이트 프로세스 중에 있는지를 나타내는 제1 상태, 및 상기 업데이트 프로세스가 완료되었는지를 나타내는 제2 상태를 포함하는 시스템.
  19. 제18항에 있어서,
    상기 메모리 컨트롤러는 또한 상기 업데이트 프로세스 동안 상기 메인 메모리를 액세스하는 것을 기다리도록 상기 두 개 이상의 프로세싱 엔티티들 중 적어도 하나에게 신호할 수 있는 시스템.
  20. 제18항에 있어서,
    상기 프로세싱 엔티티는 상기 업데이트 프로세스 동안 상기 메인 메모리를 액세스하는 것을 기다릴 수 있는 시스템.
  21. DRAM(dynamic random access memory) 부분 및 영구 메모리 부분; 및
    상기 DRAM 부분과 상기 영구 메모리 부분 사이의 레이턴시 차이들을 수용하기 위한 코드를 실행하는 캐시 일관성 프로토콜 블록
    을 포함하는 메인 메모리.
  22. 제21항에 있어서,
    상기 영구 메모리 부분들 내의 메모리 위치들의 주소들 또는 주소들의 범위들을 식별하는 영구 메모리 디스크립터를 더 포함하는 메인 메모리.
KR1020110055706A 2010-06-09 2011-06-09 영구 메모리들을 위한 캐시 일관성 프로토콜 KR101385430B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/797,522 US9448938B2 (en) 2010-06-09 2010-06-09 Cache coherence protocol for persistent memories
US12/797,522 2010-06-09

Publications (2)

Publication Number Publication Date
KR20110134855A true KR20110134855A (ko) 2011-12-15
KR101385430B1 KR101385430B1 (ko) 2014-04-29

Family

ID=45020214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110055706A KR101385430B1 (ko) 2010-06-09 2011-06-09 영구 메모리들을 위한 캐시 일관성 프로토콜

Country Status (6)

Country Link
US (1) US9448938B2 (ko)
JP (1) JP5348429B2 (ko)
KR (1) KR101385430B1 (ko)
CN (1) CN102279817B (ko)
DE (1) DE102011076895B4 (ko)
TW (1) TWI530786B (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012111042A1 (de) 2011-12-14 2013-06-20 Electronics And Telecommunications Research Institute Mobilkommunikationsendgerät und -verfahren
WO2014065880A1 (en) * 2012-10-22 2014-05-01 Robert Beers Coherence protocol tables
US10120774B2 (en) 2012-10-22 2018-11-06 Intel Corporation Coherence protocol tables
KR20200056430A (ko) * 2017-09-18 2020-05-22 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 캐시 코히어런스 프로토콜 데이터를 사용한 캐시 기반 트레이스 기록
KR20210089932A (ko) * 2020-01-09 2021-07-19 성균관대학교산학협력단 비휘발성 메모리 장치, 이것을 포함하는 컴퓨팅 시스템 및 이것의 동작 방법
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US12007873B2 (en) 2021-09-13 2024-06-11 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US9037788B2 (en) 2010-09-30 2015-05-19 Micron Technology, Inc. Validating persistent memory content for processor main memory
US9841920B2 (en) 2011-12-29 2017-12-12 Intel Corporation Heterogeneous memory die stacking for energy efficient computing
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
WO2015030819A1 (en) 2013-08-30 2015-03-05 Hewlett-Packard Development Company, L.P. Completion packet return
CN105094686B (zh) * 2014-05-09 2018-04-10 华为技术有限公司 数据缓存方法、缓存和计算机系统
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US20170192886A1 (en) * 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp Cache management for nonvolatile main memory
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US10152435B2 (en) 2016-06-20 2018-12-11 Western Digital Technologies, Inc. Coherent controller
CN108959133B (zh) * 2017-05-22 2021-12-10 扬智科技股份有限公司 可共用存储器的电路结构与数字视频转换装置

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0358163A (ja) 1989-07-26 1991-03-13 Nec Corp 疎結合型マルチプロセッサシステム
JPH06150031A (ja) 1992-10-30 1994-05-31 Nec Corp Cpuモジュール
US5442704A (en) 1994-01-14 1995-08-15 Bull Nh Information Systems Inc. Secure memory card with programmed controlled security access control
JPH0816470A (ja) 1994-07-04 1996-01-19 Hitachi Ltd 並列計算機
JP3320562B2 (ja) 1994-09-22 2002-09-03 株式会社東芝 キャッシュメモリを有する電子計算機
JP3210590B2 (ja) 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
JPH10171676A (ja) 1996-12-10 1998-06-26 Toshiba Corp マイクロプロセッサのテスト容易化回路
US6516384B1 (en) 1999-12-30 2003-02-04 Intel Corporation Method and apparatus to perform a round robin and locking cache replacement scheme
US6760819B2 (en) 2001-06-29 2004-07-06 International Business Machines Corporation Symmetric multiprocessor coherence mechanism
MXPA04000534A (es) 2001-07-18 2004-05-04 Matsushita Electric Ind Co Ltd Aparato de escritura, tarjeta de memoria de semiconductor, programa de escritura y metodo de escritura.
US6658539B2 (en) * 2001-10-16 2003-12-02 International Business Machines Corporation Super-coherent data mechanisms for shared caches in a multiprocessing system
US6983348B2 (en) 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US6892283B2 (en) 2002-12-05 2005-05-10 International Business Machines Corporation High speed memory cloner with extended cache coherency protocols and responses
US7322042B2 (en) 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
JP4241175B2 (ja) 2003-05-09 2009-03-18 株式会社日立製作所 半導体装置
US20050080999A1 (en) 2003-10-08 2005-04-14 Fredrik Angsmark Memory interface for systems with multiple processors and one memory system
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20050160229A1 (en) 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7644287B2 (en) 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US7451166B2 (en) 2005-01-13 2008-11-11 International Business Machines Corporation System and method for maintaining checkpoints of a keyed data structure using a sequential log
WO2006107095A1 (ja) 2005-03-31 2006-10-12 Nec Corporation 計算機システム、メモリ管理方法、およびそのプログラム
US7130960B1 (en) * 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US20060265544A1 (en) 2005-05-17 2006-11-23 John Rudelic Internally authenticated flash remediation
JP2006323739A (ja) 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7389402B2 (en) 2005-06-07 2008-06-17 Advanced Micro Devices, Inc. Microprocessor including a configurable translation lookaside buffer
US20070226795A1 (en) 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
JP4335300B2 (ja) 2006-02-24 2009-09-30 富士通株式会社 マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
US8051253B2 (en) * 2006-09-28 2011-11-01 Virident Systems, Inc. Systems and apparatus with programmable memory control for heterogeneous main memory
US7827360B2 (en) 2007-08-02 2010-11-02 Freescale Semiconductor, Inc. Cache locking device and methods thereof
CN100492274C (zh) 2007-08-17 2009-05-27 杭州华三通信技术有限公司 存储控制系统及其处理节点
US8015365B2 (en) 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8055847B2 (en) 2008-07-07 2011-11-08 International Business Machines Corporation Efficient processing of data requests with the aid of a region cache
US8250350B2 (en) 2008-08-26 2012-08-21 Texas Digital And Multimedia Systems Computer system with non-volatile write-protected memory based operating system and secure system architecture
CN101673245B (zh) 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
TW201017421A (en) 2008-09-24 2010-05-01 Panasonic Corp Cache memory, memory system and control method therefor
US8261019B2 (en) 2009-02-13 2012-09-04 Oracle America, Inc. Conveying critical data in a multiprocessor system
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8291175B2 (en) * 2009-10-16 2012-10-16 Oracle America, Inc. Processor-bus attached flash main-memory module
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012111042A1 (de) 2011-12-14 2013-06-20 Electronics And Telecommunications Research Institute Mobilkommunikationsendgerät und -verfahren
WO2014065880A1 (en) * 2012-10-22 2014-05-01 Robert Beers Coherence protocol tables
US10120774B2 (en) 2012-10-22 2018-11-06 Intel Corporation Coherence protocol tables
KR20200056430A (ko) * 2017-09-18 2020-05-22 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 캐시 코히어런스 프로토콜 데이터를 사용한 캐시 기반 트레이스 기록
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
KR20210089932A (ko) * 2020-01-09 2021-07-19 성균관대학교산학협력단 비휘발성 메모리 장치, 이것을 포함하는 컴퓨팅 시스템 및 이것의 동작 방법
US12007873B2 (en) 2021-09-13 2024-06-11 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis

Also Published As

Publication number Publication date
JP2011258193A (ja) 2011-12-22
CN102279817B (zh) 2015-11-25
US20110307653A1 (en) 2011-12-15
DE102011076895B4 (de) 2014-12-24
TW201222252A (en) 2012-06-01
US9448938B2 (en) 2016-09-20
KR101385430B1 (ko) 2014-04-29
TWI530786B (zh) 2016-04-21
DE102011076895A1 (de) 2011-12-15
CN102279817A (zh) 2011-12-14
JP5348429B2 (ja) 2013-11-20

Similar Documents

Publication Publication Date Title
KR101385430B1 (ko) 영구 메모리들을 위한 캐시 일관성 프로토콜
US9384134B2 (en) Persistent memory for processor main memory
US9727471B2 (en) Method and apparatus for stream buffer management instructions
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
TWI638311B (zh) Data processing method and processor
US10019377B2 (en) Managing cache coherence using information in a page table
KR20070069053A (ko) 멀티-상태 캐시 코히어런스 방식의 장치, 시스템 및 방법
US20180032429A1 (en) Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators
US10635614B2 (en) Cooperative overlay
US11526449B2 (en) Limited propagation of unnecessary memory updates
US9037804B2 (en) Efficient support of sparse data structure access
US10565111B2 (en) Processor
US11687392B2 (en) Method and system for constructing persistent memory index in non-uniform memory access architecture
CN105700953A (zh) 一种多处理器缓存一致性处理方法及装置
US8862826B2 (en) Method and apparatus for increasing capacity of cache directory in multi-processor systems
CN116049031A (zh) 数据处理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170322

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180316

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190408

Year of fee payment: 6