KR20150136045A - 리플렉티브 메모리를 이용한 일관성 구현 - Google Patents

리플렉티브 메모리를 이용한 일관성 구현 Download PDF

Info

Publication number
KR20150136045A
KR20150136045A KR1020157020797A KR20157020797A KR20150136045A KR 20150136045 A KR20150136045 A KR 20150136045A KR 1020157020797 A KR1020157020797 A KR 1020157020797A KR 20157020797 A KR20157020797 A KR 20157020797A KR 20150136045 A KR20150136045 A KR 20150136045A
Authority
KR
South Korea
Prior art keywords
data
memory
memory device
cache
modified
Prior art date
Application number
KR1020157020797A
Other languages
English (en)
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 KR20150136045A publication Critical patent/KR20150136045A/ko

Links

Images

Classifications

    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache

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

제 1 메모리 장치의 리플렉티브 메모리 영역의 데이터를 업데이트하기 위한 기술이 설명된다. 일례에서, 제 1 메모리 장치의 리플렉티브 메모리 영역의 데이터를 업데이트하기 위한 방법은 데이터가 캐시 장치로부터 제 1 메모리 장치로 플러싱되어야 한다는 지시를 수신하는 단계를 포함한다. 방법은 또한 데이터에 대응하는 메모리 어드레스가 제 1 메모리 장치의 리플렉티브 메모리 영역 내에 있음을 검출하는 단계와, 플러쉬 동작에 의해 데이터를 캐시 장치로부터 제 1 메모리 장치로 전송하는 단계를 포함한다. 추가적으로, 방법은 제 1 메모리 장치에 의해 수신된 데이터가 수정된 데이터인 것으로 판정하는 단계를 포함한다. 더욱이, 방법은 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 전송하는 단계를 포함한다.

Description

리플렉티브 메모리를 이용한 일관성 구현{IMPLEMENTING COHERENCY WITH REFLECTIVE MEMORY}
본 출원은 전반적으로 리플렉티브 메모리를 이용한 일관성 구현에 관한 것이다.
현대의 컴퓨팅 장치는 점점 더 복잡한 소프트웨어 애플리케이션을 실행한다. 복잡한 소프트웨어 애플리케이션의 실행 시간을 감소시키기 위해, 일부 컴퓨팅 장치는 동작을 병렬로 실행할 수 있다. 예를 들면, 컴퓨팅 장치는 두 동작을 동시에 실행할 수 있다. 일부 실시예에서, 2개의 컴퓨팅 장치는 2개의 컴퓨팅 장치 사이에서 데이터를 송수신함으로써 동작을 병렬로 실행할 수 있다.
특정 예는 다음의 상세한 설명에서 도면을 참조하여 설명된다.
도 1은 리플렉티브 메모리(reflective memory)를 가진 컴퓨팅 장치에서 일관성을 구현할 수 있는 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현하기 위한 방법의 일례를 도시하는 프로세스 흐름도이다.
도 3은 캐시 미스(cache miss)에 응답하여 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현하기 위한 방법의 일례의 프로세스 흐름도이다.
도 4는 일관성이 리플렉티브 메모리를 가진 컴퓨팅 장치에서 구현될 수 있는 방법의 일례를 도시하는 블록도이다.
도 5는 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현할 수 있는 유형의 비일시적 컴퓨터 판독 가능 매체의 일례를 도시하는 블록도이다.
본 명세서에 기재된 발명 대상의 실시예에 따르면, 리플렉티브 메모리를 가진 컴퓨팅 장치는 일관성을 구현할 수 있다. 리플렉티브 메모리는 본 명세서에 언급된 바와 같이 다수의 분리된 메모리 제어기 또는 데이터 관리 모듈을 통해 데이터의 공통 세트를 유지하는 공유 메모리 시스템에서의 메모리 장치의 임의의 적절한 부분을 포함한다. 예를 들면, 리플렉티브 메모리는 또한 제 2 컴퓨팅 시스템의 메모리 장치에 데이터의 사본을 저장하면서 컴퓨팅 시스템의 비휘발성 메모리에 데이터를 저장할 수 있다. 본 명세서에 기재된 기술은 다수의 데이터의 사본이 하나의 컴퓨팅 시스템 또는 다수의 컴퓨팅 시스템 내의 다양한 메모리 장치에 저장될 때 일관성을 유지한다. 본 명세서에서 언급된 바와 같이, 일관성은 공유 메모리 시스템에서 데이터의 공통 세트에 대한 수정을 검출하고, 이러한 수정에 기초하여 데이터의 공통 세트의 사본을 업데이트하는 것을 포함한다. 예를 들면, 메모리 어드레스와 관련된 데이터는 메모리 장치로부터 캐시 장치로 복사될 수 있다. 프로세서가 캐시 장치의 데이터를 수정하는 경우, 메모리 장치의 데이터는 오래되거나 구식일 수 있다. 본 명세서에서 설명된 기술은 리플렉티브 메모리를 포함하는 컴퓨팅 장치에서 일관성을 가능하게 할 수 있다.
일부 실시예에서, 본 명세서에서 설명된 기술은 수정되지 않은 데이터를 캐시 장치로부터 메모리 장치로 전송하지 않고 일관성을 구현할 수 있다. 예를 들면, 프로세서는 데이터 값을 수정하지 않은 데이터 값을 판독하기 위해 캐시 장치의 일부 데이터 값에 액세스할 수 있다. 프로세서는 또한 데이터 값을 수정할 수 있는 기록 동작을 위한 데이터 값에 액세스할 수 있다. 일부 실시예에서, 수정되지 않은 데이터 값은 캐시 장치에 남아 있지만, 수정된 데이터 값은 메모리 장치로 복사된다.
도 1은 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현할 수 있는 컴퓨팅 시스템(100)의 일례의 블록도이다. 컴퓨팅 시스템(100)은 특히 예를 들어 컴퓨터 서버, 이동 전화, 랩톱 컴퓨터, 데스크탑 컴퓨터 또는 태블릿 컴퓨터를 포함할 수 있다. 컴퓨팅 시스템(100)은 저장된 명령어를 실행하도록 구성되는 프로세서(102)를 포함할 수 있다. 프로세서(102)는 단일 코어 프로세서, 다중 코어 프로세서, 컴퓨팅 클러스터 또는 많은 다른 적절한 구성일 수 있다.
프로세서(102)는 시스템 버스(104)(특히, 예를 들어, AMBA, PCI®, PCI Express®, HyperTransport®, Serial ATA)를 통해 컴퓨팅 시스템(100)을 하나 이상의 입력/출력(I/O) 장치(108)에 접속하도록 구성된 I/O 장치 인터페이스(106)에 접속될 수 있다. I/O 장치(108)는 예를 들어 키보드 및 포인팅 장치를 포함할 수 있으며, 포인팅 장치는 특히 터치 패드 또는 터치 스크린을 포함할 수 있다. I/O 장치(108)는 컴퓨팅 시스템(100)의 내장된 구성 요소이거나 외부에서 컴퓨팅 시스템(100)에 접속되는 장치일 수 있다.
프로세서(102)는 또한 시스템 버스(104)를 통해 컴퓨팅 시스템(100)을 디스플레이 장치(112)에 접속하도록 구성된 디스플레이 장치 인터페이스(110)에 링크될 수 있다. 디스플레이 장치(112)는 컴퓨팅 시스템(100)의 내장된 구성 요소인 디스플레이 스크린을 포함할 수 있다. 디스플레이 장치(112)는 또한 외부에서 컴퓨팅 시스템(100)에 접속되는 특히 컴퓨터 모니터, 텔레비전 또는 프로젝터를 포함할 수 있다. 추가적으로, 프로세서(102)는 또한 시스템 버스(104)를 통해 네트워크 인터페이스 카드(NIC)(114)에 링크될 수 있다. NIC(114)는 컴퓨팅 시스템(100)을 시스템 버스(104)를 통해 (도시되지 않은) 네트워크에 접속하도록 구성될 수 있다. (도시되지 않은) 네트워크는 특히 광역 네트워크(WAN), 근거리 통신망(LAN) 또는 인터넷일 수 있다.
프로세서(102)는 또한 시스템 버스(104)를 통해 메모리 장치(116)에 링크될 수 있다. 일부 실시예에서, 메모리 장치(116)는 랜덤 액세스 메모리(특히, 예를 들어, SRAM, DRAM, eDRAM, EDO RAM, DDR RAM, RRAM®, PRAM), 판독 전용 메모리(특히, 예를 들어, 마스크 ROM, EPROM, EEPROM), 비휘발성 메모리, 또는 임의의 다른 적절한 메모리 시스템을 포함할 수 있다. 일례에서, 메모리 장치(116)는 각각이 임의의 적절한 수의 데이터 값에 대응하는 임의의 적절한 수의 메모리 어드레스를 포함할 수 있다. 일부 실시예에서, 자주 액세스되는 데이터 값의 사본은 캐시(118)에 저장될 수 있다. 일부 실시예에서, 프로세서(102)는 메모리 장치(116)로부터 데이터를 요청하기 전에 동작을 위해 캐시(118)로부터 데이터를 요청할 수 있다. 일례에서, 캐시(118)는 메모리 장치(116)보다 더 적은 수의 데이터 값을 저장할 수 있지만, 캐시(118)는 메모리 장치(116)가 저장된 데이터를 프로세서(102)에 제공할 수 있는 것보다 더 빠르게 저장된 데이터를 프로세서(102)에 제공할 수 있다.
일부 실시예에서, 메모리 장치(116)로부터의 데이터는 제 2 컴퓨팅 시스템(122)의 제 2 메모리 장치(120)에 반영될 수 있다. 본 명세서에서 언급된 바와 같이 용어 "반영된(reflected)"는 데이터를 생성하거나 기록하고, 제 2 컴퓨팅 시스템 상의 별도의 메모리 장치에 상기 데이터의 로컬 일관성 사본을 유지하는 제 1 컴퓨팅 시스템을 포함한다. 예를 들면, 메모리 장치(116)내의 메모리 어드레스는 새로운 값으로 수정되는 데이터 값에 대응할 수 있다. 메모리 장치(116) 및 제 2 메모리 장치(120)에 일관성을 제공하기 위해, 데이터의 새로운 값은 메모리 장치(116)로부터 제 2 메모리 장치(118)로 전송되거나 "반영"된다. 제 2 메모리 장치(118)는 제 2 컴퓨터 시스템(122)의 동작에서 메모리 장치(116)로부터 새로운 데이터 값을 소비할 수 있는 제 2 컴퓨터 시스템(122)과 관련되어 있다. 본 명세서에서 언급된 바와 같이 데이터를 소비하는 것은 판독 동작에서 데이터를 사용하지만 기록 동작에서는 데이터를 사용하지 않는 것을 포함한다.
일부 실시예에서, 프로세서(102)는 시스템 버스(104)를 통해 데이터 관리 모듈(124)로 링크될 수 있다. 데이터 관리 모듈(124)은 메모리 장치(116), 캐시(118) 및 제 2 메모리 장치(120)에 저장된 데이터 사이에 일관성을 유지할 수 있다. 일 실시예에서, 데이터 관리 모듈(124)은 임의의 적합한 구조(126)(특히, 예를 들어, PCI®, PCI Express®, HyperTransport®, Serial ATA)를 통해 제 2 메모리 장치(120), 및 제 2 컴퓨팅 시스템(122)의 제 2 데이터 관리 모듈(128)로 데이터를 전송할 수 있다. 제 2 데이터 관리 모듈(128)은 제 2 컴퓨팅 시스템(122)의 제 2 메모리 장치(120)에 저장된 데이터의 일관성을 유지할 수 있다.
일 실시예에서, 데이터 관리 모듈(124)은 캐시(118) 내의 수정된 데이터를 메모리 장치(116)에 복사함으로써 저장된 데이터의 일관성을 유지할 수 있다. 캐시(118)로부터의 수정된 데이터를 메모리 장치(116)에 복사하는 것은 또한 본 명세서에서 "플러싱(flushing)" 데이터로 지칭된다. 일부 실시예에서, 데이터 관리 모듈(124)이 데이터를 캐시(118)로부터 메모리 장치(116)의 반영된 메모리 영역로 플러싱하는 경우, 데이터 관리 모듈(124)은 수정된 데이터를 제 2 메모리 장치(120)로 전송할 수 있다. 제 2 메모리 장치(120)에 저장된 데이터의 일관성을 유지함으로써, 제 2 데이터 관리 모듈(128)은 제 2 컴퓨팅 장치(122)에서 수행되는 동작이 메모리 장치(116)에서 구성된 리플렉티브 메모리 영역으로부터 전송되는 수정된 데이터를 사용하는 것을 보장할 수 있다. 일부 실시예에서, 제 2 데이터 관리 모듈(128)은 수정된 데이터를 수신하고, 수정된 데이터를 제 2 메모리 장치(120)의 어드레스 범위로 매핑할 수 있다.
도 1의 블록도는 컴퓨팅 시스템(100)이 도 1에 도시된 모든 구성 요소를 포함하는 것을 나타내도록 의도되지 않는다. 오히려, 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 보다 적은 추가적인 구성 요소(예를 들어, 추가적인 메모리 장치, 비디오 카드, 추가적인 네트워크 인터페이스 등)를 포함한다. 더욱이, 데이터 관리 모듈(124)의 기능 중 어떤 것은 부분적 또는 전체적으로 별도의 하드웨어에서 구현될 수 있다. 예를 들면, 이러한 기능은 특히 메모리 장치(116), 또는 주변 장치 상의 코프로세서에서 주문형 집적 회로로 구현될 수 있다.
도 2는 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현하기 위한 방법의 일례를 도시하는 프로세스 흐름도이다. 방법(200)은 도 1의 컴퓨팅 시스템(100)과 같은 컴퓨팅 장치로 구현될 수 있다.
블록(202)에서, 데이터 관리 모듈(124)은 캐시 라인이 캐시 장치에서 플러싱되어야 한다는 지시(indication)를 수신한다. 상술한 바와 같이, 캐시 장치는 데이터의 캐시 라인의 임의의 적절한 수를 저장하며, 각 캐시 라인은 데이터량, 예를 들어, 데이터의 16, 32, 64 또는 128 바이트를 포함한다. 본 명세서에 나타낸 바와 같이, 캐시 라인을 플러싱하는 것은 캐시 장치로부터 수정된 캐시 라인을 메모리 장치로 전송하는 것을 포함한다. 캐시 라인을 플러싱하는 것은 또한 캐시 장치로부터 수정되지 않은 캐시 라인을 삭제하는 것을 포함한다. 캐시 라인은 도 4와 관련하여 아래에서 더욱 상세히 논의된다. 일부 실시예에서, 데이터 관리 모듈(124)은 특히, 운영 체제 또는 애플리케이션으로부터 지시를 수신할 수 있다. 이러한 지시는 수정된 데이터를 메모리 장치로 전송하기 위해 캐시 장치에 지시하도록 데이터 관리 모듈(124)에 지시하는 임의의 적절한 동작 또는 데이터일 수 있다.
블록(204)에서, 데이터 관리 모듈(124)은 캐시 장치가 캐시 장치의 캐시 라인으로부터의 데이터를 메모리 장치로 전송하게 하는 플러싱 동작을 생성한다. 일부 실시예에서, 데이터 관리 모듈(124)은 소프트웨어, 운영 체제 또는 하드웨어 구성 요소로부터의 지시를 이용하여 플러싱 동작을 생성할 수 있다. 예를 들면, 데이터 관리 모듈(124)은 캐시 라인이 캐시 장치로부터 메모리 장치로 플러싱되어야 한다는 지시를 검출할 수 있다.
블록(206)에서, 데이터 관리 모듈(124)은 캐시 장치로부터 플러싱된 캐시 라인의 데이터가 메모리 장치의 리플렉티브 메모리 영역으로 플러싱된 것이고 데이터가 수정되었는지를 판단한다. 상술한 바와 같이, 리플렉티브 메모리 영역은 적어도 하나의 추가적인 메모리 장치와 일관성을 유지할 수 있는 메모리 장치의 임의의 적절한 부분을 포함할 수 있다. 예를 들면, 데이터가 제 1 메모리 장치의 지정된 리플렉티브 영역에서 수정되는 경우, 수정된 데이터의 사본은 제 1 리플렉티브 메모리 장치에 데이터의 사본을 저장하는 제 2 메모리 장치로 전송되거나 반영될 수 있다. 일부 실시예에서, 데이터 관리 모듈(124)은 메모리의 메모리 범위의 세트가 임의의 적절한 수의 추가적인 메모리 장치에 반영되어야 하는 것으로 판정할 수 있다.
블록(204)에서 설명된 바와 같이 데이터는 데이터 관리 모듈(124)에 의해 생성된 플러싱 동작에 응답하여 캐시 장치로부터 플러싱되거나, 캐시 장치는 캐시 라인을 플러싱하도록 독립적으로 선택할 수 있다. 일부 실시예에서, 데이터 관리 모듈(124)은 데이터에 대응하는 메모리 어드레스를 메모리 장치의 리플렉티브 메모리 영역의 메모리 어드레스 범위와 비교할 수 있다. 예를 들면, 프로세서가 캐시에 저장된 데이터를 포함하는 기록 동작을 수행하는 경우에 캐시의 메모리 어드레스는 수정된 데이터로 링크될 수 있다. 일부 실시예에서, 프로세서는 캐시에 저장된 데이터를 수정하고 데이터가 MESI 프로토콜을 사용하여 수정된 것을 추적할 수 있다. 예를 들면, 캐시는 캐시 라인이 수정되거나 배타적임을 나타내는 비트를 포함할 수 있다. 캐시 라인이 배타적인 경우, 캐시 라인에 저장된 데이터 값은 메모리에 저장된 데이터 값과 일치한다. 일부 실시예에서, 배타적 캐시 라인은 수정된 캐시 라인이 될 수 있다. 예를 들면, 프로세서가 배타적 캐시 라인에 저장된 데이터에 대한 기록 동작을 수행하는 경우, 데이터는 수정될 수 있고, 캐시 라인은 수정된 캐시 라인이 될 수 있다. 캐시에 저장된 수정된 데이터는 메모리에 저장된 데이터와 동일한 값을 갖지 않을 것이다.
데이터 관리 모듈(124)이 캐시 라인의 데이터가 캐시 장치로부터 메모리 장치의 리플렉티브 메모리 영역으로 플러싱되고 데이터가 수정된 것으로 판정하는 경우, 프로세스 흐름은 블록(208)에서 계속한다. 데이터 관리 모듈(124)이 캐시 라인의 데이터가 캐시 장치로부터 메모리 장치의 리플렉티브 메모리 영역으로 플러싱되지 않거나 데이터가 수정되지 않은 것으로 판정하는 경우, 프로세스 흐름은 블록(210)에서 종료한다.
블록(208)에서, 데이터 관리 모듈(124)은 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 전송한다. 예를 들면, 데이터 관리 모듈(124)은 (또한 본 명세서에서 리플렉티브 메모리 장치로 지칭되는) 리플렉티브 메모리를 포함하는 하나의 메모리 장치로부터 수정된 데이터를 제 2 리플렉티브 메모리 장치로 전송할 수 있다. 일부 실시예에서, 제 2 리플렉티브 메모리 장치는 제 2 컴퓨팅 장치에 상주할 수 있다. 일례에서, 제 2 컴퓨팅 장치는 특히 비휘발성 메모리, 휘발성 메모리 또는 캐시와 같은 제 2 컴퓨팅 장치의 여러 메모리 장치에 수정된 데이터 값을 복사할 수 있는 데이터 관리 모듈을 포함할 수 있다. 일 실시예에서, 데이터 관리 모듈(124)은 리플렉티브 메모리로부터의 데이터를 저장하는 임의의 적절한 수의 메모리 장치로 수정된 데이터를 전송할 수 있다. 데이터 관리 모듈(124)은 또한 다수의 수정된 데이터 값을 함께 리플렉티브 메모리와 관련된 추가적인 메모리 장치로 전송할 수 있다. 일부 실시예에서, 제 2 컴퓨팅 시스템은 수정된 데이터의 수신에 응답하여 제 2 컴퓨팅 시스템의 캐시 장치에서의 데이터를 제 2 컴퓨팅 장치의 제 2 메모리 장치로 플러싱할 수 있다. 프로세스 흐름은 블록(210)에서 종료한다.
도 2의 프로세스 흐름도는 방법(200)의 동작이 임의의 특정 순서로 실행되거나 방법(200)의 모든 동작은 모든 경우에 포함되어야 한다는 것을 나타내도록 의도되지 않는다. 예를 들면, 데이터 관리 모듈(124)은 캐시 라인이 수정된 데이터를 메모리 장치로 강제로 전송하도록 하는 플러싱 동작을 생성할 수 없다. 오히려, 데이터 관리 모듈(124)은 프로세서가 잠재적으로 수정된 데이터를 메모리 장치로 플러싱하는 플러싱 동작을 실행한 것을 검출할 수 있다. 더욱이, 많은 추가적인 단계는 특정 애플리케이션에 따라 방법(200) 내에 포함될 수 있다. 예를 들면, 데이터 관리 모듈(124)은 또한 캐시로부터 축출된 캐시 라인을 검출할 수 있다. 축출된 캐시 라인을 검출하는 것에 응답하여, 데이터 관리 모듈(124)은 축출된 캐시 라인의 데이터를 메모리 장치의 리플렉티브 메모리 영역과 비교하고 리플렉티브 영역으로부터 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 전송할 수 있다.
도 3은 캐시 미스에 응답하여 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현하기 위한 방법의 일례의 프로세스 흐름도이다. 본 명세서에 나타낸 바와 같이, 캐시 미스는 요청된 데이터가 캐시 장치에 저장되지 않은 것으로 프로세서가 판정한 후 메모리 장치로부터 데이터를 요청하는 프로세서를 포함한다. 방법(300)은 도 1의 컴퓨팅 시스템(100)과 같은 컴퓨팅 장치로 구현될 수 있다.
블록(302)에서, 데이터 관리 모듈(124)은 캐시 미스를 검출할 수 있다. 일부 실시예에서, 캐시 미스는 메모리 장치에 데이터를 액세스시키는 프로세서를 생성한다. 예를 들면, 프로세서는 공유 상태 또는 배타적 상태로 메모리 장치에 데이터를 액세스할 수 있다. 공유 상태에서, 프로세서는 판독 전용 모드에서와 같이 메모리 장치에서의 데이터를 수정할 수 없다. 배타적 상태에서, 프로세서는 기록 동작을 이용하여 메모리 장치에서의 데이터를 수정할 수 있다.
블록(304)에서, 데이터 관리 모듈(124)은 프로세서에 의해 액세스되는 데이터의 메모리 어드레스가 메모리 장치의 리플렉티브 메모리 영역에 대응하는지를 판정한다. 더욱이, 일부 실시예에서, 데이터 관리 모듈(124)은 액세스된 데이터가 배타적 또는 수정된 상태로 캐시 장치에 제공되는지를 판정한다. 상술한 바와 같이, 리플렉티브 메모리는 적어도 하나의 추가적인 메모리 장치와의 일관성을 유지할 수 있는 메모리 장치의 임의의 적절한 부분을 포함할 수 있다. 예를 들면, 데이터가 제 1 메모리 장치의 지정된 리플렉티브 영역에서 수정되는 경우, 수정된 데이터의 사본은 또한 데이터를 저장하는 제 2 메모리 장치로 전송되거나 반영될 수 있다. 일부 실시예에서, 데이터 관리 모듈(124)은 메모리의 메모리 범위의 세트가 임의의 적절한 수의 추가적인 메모리 장치에 반영되어야 하는 것으로 판정할 수 있다. 데이터 관리 모듈(124)이 프로세서에 의해 액세스되는 데이터의 메모리 어드레스가 메모리 장치의 리플렉티브 메모리 영역에 대응하고 액세스된 데이터가 배타적 또는 수정된 상태로 캐시 장치에 제공된 것으로 판정하면, 프로세스 흐름은 블록(306)에서 계속한다. 데이터 관리 모듈(124)이 프로세서에 의해 액세스되는 데이터의 메모리 어드레스가 메모리 장치의 리플렉티브 메모리 영역에 대응하지 않거나 액세스된 데이터가 배타적 또는 수정된 상태로 캐시에 제공되지 않은 것으로 판정하면, 프로세스 흐름은 블록(306)에서 종료한다.
블록(306)에서, 데이터 관리 모듈(124)은 지연 후에 액세스된 캐시 라인의 플러싱을 스케줄링한다. 액세스된 캐시 라인의 플러싱은 액세스된 캐시 라인으로부터의 데이터를 캐시 장치로부터 메모리 장치로 전송하는 것을 포함할 수 있다. 블록(310)에서, 데이터 관리 모듈(124)은 플러싱 동작을 캐시 장치로 전송한다. 플러싱 동작은 캐시 장치가 캐시 라인을 메모리 장치로 전송한다는 것을 나타낼 수 있다.
블록(312)에서, 데이터 관리 모듈(124)은 플러싱된 캐시 라인의 데이터가 메모리 장치에 기록되는지를 판정한다. 일부 실시예에서, 플러싱된 캐시 라인으로부터의 데이터가 수정된 경우, 플러싱된 캐시 라인으로부터의 데이터는 메모리 장치에 기록된다. 예를 들면, 프로세서는 캐시 장치의 임의의 캐시 라인의 데이터를 수정하는 기록 동작을 실행할 수 있다. 캐시 라인에 의해 수정된 데이터는 메모리 장치에 저장된 데이터에 따라 다를 수 있다. 따라서, 메모리 장치의 데이터를 캐시로부터의 수정된 데이터로 대체함으로써 메모리 장치의 데이터가 업데이트될 수 있다. 플러싱된 캐시 라인이 메모리 장치에 기록되면, 프로세스 흐름은 블록(314)에서 계속한다. 플러싱된 캐시 라인이 메모리 장치에 기록되지 않으면, 프로세스 흐름은 블록(308)에서 종료한다.
블록(314)에서, 데이터 관리 모듈(124)은 캐시 라인의 데이터가 캐시 장치로부터 메모리 장치의 리플렉티브 메모리 영역으로 플러싱되고, 데이터가 수정된 것으로 판정한다. 캐시 라인은 블록(306)에서 스케줄링되는 것으로 인해 플러싱되었을 수 있다. 일부 실시예에서, 캐시 라인은 또한 캐시 장치(118)에 의해 독립적으로 플러싱되었을 수 있다. 일부 실시예에서, 프로세서는 캐시에 저장된 데이터를 수정하고, 데이터가 MESI 프로토콜을 사용하여 수정된 것을 나타낼 수 있다. 예를 들면, 캐시는 캐시 라인이 수정되거나 배타적임을 나타내는 비트를 포함할 수 있다. 캐시에 저장되는 수정된 데이터는 메모리에 저장되는 데이터와 동일한 값을 갖지 않을 것이다.
블록(316)에서, 데이터 관리 모듈(124)은 수정된 데이터를 메모리 장치의 리플렉티브 영역으로부터 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 전송한다. 예를 들면, 데이터 관리 모듈(124)은 수정된 데이터를 (또한 본 명세서에서 리플렉티브 메모리 장치로 지칭되는) 리플렉티브 메모리를 포함하는 하나의 메모리 장치로부터 제 2 리플렉티브 메모리 장치로 전송할 수 있다. 일부 실시예에서, 제 2 리플렉티브 메모리 장치는 제 2 컴퓨팅 장치에 상주할 수 있다. 일례에서, 제 2 컴퓨팅 장치는 특히 비휘발성 메모리, 휘발성 메모리 또는 캐시와 같은 제 2 컴퓨팅 장치의 여러 메모리 장치에 수정된 데이터 값을 복사할 수 있는 데이터 관리 모듈을 포함할 수 있다. 일 실시예에서, 데이터 관리 모듈(124)은 리플렉티브 메모리로부터 데이터를 저장하는 임의의 적절한 수의 메모리 장치로 수정된 데이터를 전송할 수 있다. 데이터 관리 모듈(124)은 또한 다수의 수정된 데이터 값을 함께 리플렉티브 메모리와 관련된 추가적인 메모리 장치로 전송할 수 있다. 일부 실시예에서, 제 2 컴퓨팅 시스템은 수정된 데이터의 수신에 응답하여 제 2 컴퓨팅 시스템의 캐시 장치에서의 데이터를 제 2 컴퓨팅 장치의 제 2 메모리 장치로 플러싱할 수 있다. 프로세스 흐름은 블록(308)에서 종료한다.
도 3의 프로세스 흐름도는 방법(300)의 동작이 임의의 특정 순서로 실행되거나 방법(300)의 모든 동작은 모든 경우에 포함되어야 한다는 것을 나타내도록 의도되지 않는다. 예를 들면, 프로세서는 데이터 관리 모듈(124)이 플러싱 동작을 캐시 장치로 전송하기 전에 캐시 라인을 축출하는 경우, 데이터 관리 모듈(124)은 플러싱 동작을 캐시 장치로 전송할 수 없다. 더욱이, 많은 추가적인 단계는 특정 애플리케이션에 따라 방법(300) 내에 포함될 수 있다.
도 4는 일관성이 리플렉티브 메모리를 가진 컴퓨팅 장치에서 구현될 수 있는 방법의 일례를 도시하는 블록도이다. 일부 실시예에서, 컴퓨팅 장치(400)는 메모리 장치(402), 데이터 관리 모듈(124) 및 캐시(404)를 포함할 수 있다. 메모리 장치(402)는 임의의 적절한 수의 메모리 어드레스와 관련된 임의의 적절한 데이터(406)의 양을 저장할 수 있다. 일부 실시예에서, 메모리 장치(402)의 부분은 리플렉티브 메모리(408)로서 사용될 수 있다. 상술한 바와 같이, 리플렉티브 메모리(408)는 추가적인 메모리 장치에 반영되어야 하는 메모리 어드레스에 유지된 데이터를 포함할 수 있다. 예를 들면, 리플렉티브 메모리(408)에 저장된 데이터의 사본은 메모리 장치(402)와 동일한 컴퓨팅 장치 또는 별도의 컴퓨팅 장치 중 어느 하나에서 로컬적으로 위치된 추가적인 메모리 장치에 저장될 수 있다. 일부 실시예에서, 리플렉티브 메모리(408)에 사용되는 메모리 장치(402)의 부분은 반영될 상이한 데이터량을 저장하도록 주기적으로 수정될 수 있다.
일부 실시예에서, 캐시(404)는 데이터를 캐시 라인(410)에 저장할 수 있다. 각 캐시 라인(410)은 메모리 어드레스와 관련된 데이터를 유지할 수 있다. 일 실시예에서, 캐시 라인(410)은 캐시 라인(410)의 데이터가 수정되었는지를 나타내는 메모리 지시자 비트(412)를 포함할 수 있다. 예를 들면, 프로세서(414)는 캐시 라인(410)에 존재하는 데이터 값을 수정된 값으로 대체할 수 있는 캐시 라인(410)으로부터의 데이터를 사용하여 기록 동작을 수행할 수 있다. 프로세서(414)는 또한 캐시 라인(410)의 데이터가 수정되었음을 나타내도록 메모리 지시자 비트(412)를 배타적에서 수정되는 것으로 변경할 수 있다.
일부 실시예에서, 데이터 관리 모듈(124)은 메모리 어드레스의 범위가 캐시 장치(404)로부터 메모리 장치(402)로 플러싱되어야 하는 것을 나타내는 소프트웨어 애플리케이션으로부터 기록 동작을 검출할 수 있다. 예를 들면, 기록 동작은 데이터 관리 모듈(124)의 제어 레지스터로 전송될 수 있다. 일부 실시예에서, 제어 레지스터는 캐시 장치(404)로부터 메모리 장치(402)로 플러싱되어야 하는 임의의 적절한 수의 메모리 어드레스를 나타낼 수 있다. 데이터 관리 모듈(124)은 또한 임의의 적절한 수의 캐시 장치로부터 데이터를 제거하기 위한 동작을 생성할 수 있다. 예를 들면, 데이터 관리 모듈(124)은 캐시 장치(404)로부터 메모리 어드레스의 미리 정해진 범위의 메모리 어드레스를 메모리 장치(402)로 플러싱할 수 있다.
대안으로, 데이터 관리 모듈(124)은 캐시 라인(410)을 메모리 장치(402)로 플러싱하기 위해 메모리 제어기와 같이 메모리 인터페이스로부터의 미리 정해진 정보를 이용할 수 있다. 일부 실시예에서, 미리 정해진 정보는 (또한 본 명세서에서 RTAG로 지칭되는) 필터 캐시로부터의 정보, 또는 메모리 매핑된 저장 아키텍처와 함께 사용하기 위해 제안된 디스크립터 필드(descriptor field) 내의 정보를 포함할 수 있다. 일부 예에서, 데이터 관리 모듈(124)은 다수의 캐시 라인(410)이 메모리 장치(402)의 리플렉티브 메모리(408)로부터의 데이터를 포함하도록 판정하기 위해 미리 정해진 정보를 사용할 수 있다. 캐시 라인(410)로부터의 데이터를 리플렉티브 메모리(408)와 관련된 추가적인 메모리 장치로 전송하기 전에 데이터 관리 모듈(124)은 또한 캐시 라인(410)로부터의 데이터를 메모리 장치(402)의 리플렉티브 메모리(408)로 플러싱할 수 있다.
도 4의 블록도는 컴퓨팅 시스템(400)이 도 4에 도시된 모든 구성 요소를 포함하는 것을 나타내도록 의도되지 않는다. 오히려, 컴퓨팅 시스템(400)은 도 4에 도시되지 않은 보다 적은 추가적인 구성 요소(예를 들어, 추가적인 메모리 장치, 인터페이스 등)를 포함할 수 있다. 더욱이, 데이터 관리 모듈(124)의 기능 중 어떤 것은 부분적 또는 전체적으로 하드웨어 또는 프로세서(414)에서 구현될 수 있다. 예를 들면, 이러한 기능은 특히 프로세서(414)에서 구현되는 논리, 저장 장치에 상주하는 모듈 또는 주변 장치 상의 코프로세서에서 주문형 집적 회로로 구현될 수 있다.
도 5는 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현할 수 있는 유형의 비일시적 컴퓨터 판독 가능 매체의 일례를 도시하는 블록도이다. 유형의 비일시적 컴퓨터 판독 가능 매체(500)는 컴퓨터 버스(504)를 통해 프로세서(502)에 의해 액세스될 수 있다. 더욱이, 유형의 비일시적 컴퓨터 판독 가능 매체(500)는 현재의 방법의 단계를 수행하기 위해 프로세서(502)에 지시하기 위한 컴퓨터 실행 가능한 명령어를 포함할 수 있다.
본 명세서에서 논의된 여러 소프트웨어 구성 요소는 도 5에 도시된 바와 같이 유형의 비일시적 컴퓨터 판독 가능 매체(500) 상에 저장될 수 있다. 예를 들면, 데이터 관리 모듈(506)은 프로세서(502)가 리플렉티브 메모리를 가진 컴퓨팅 장치에서 일관성을 구현할 것을 지시하도록 구성될 수 있다. 일부 실시예에서, 데이터 관리 모듈(506)은 캐시의 데이터가 수정된 것으로 판정하고, 기존의 데이터 값을 수정된 데이터 값으로 대체함으로써 리플렉티브 메모리를 업데이트할 수 있다. 데이터 관리 모듈(506)은 또한 수정된 데이터 값을 추가적인 메모리 장치로 전송할 수 있다. 도 5에 도시되지 않은 다수의 추가적인 소프트웨어 구성 요소는 특정 애플리케이션에 따라 유형의 비일시적 컴퓨터 판독 가능 매체(500) 내에 포함될 수 있는 것으로 이해되어야 한다.
본 예는 다양한 수정 및 대안적 형태로 되기 용이하며, 단지 예시적인 목적을 위해 도시되었다. 더욱이, 본 기술은 본 명세서에 개시된 특정 예로 제한되도록 의도되지 않는 것으로 이해되어야 한다. 사실, 첨부된 청구범위는 개시된 발명 대상이 속하는 기술의 당업자에게 명백한 모든 대안, 수정 및 균등물을 포함하는 것으로 간주된다.

Claims (15)

  1. 제 1 메모리 장치의 리플렉티브 메모리 영역에서의 데이터를 업데이트하기 위한 방법으로서,
    데이터가 캐시 장치로부터 상기 제 1 메모리 장치로 플러싱되어야 한다는 지시를 수신하는 단계와,
    상기 데이터에 대응하는 메모리 어드레스가 상기 제 1 메모리 장치의 상기 리플렉티브 메모리 영역 내에 있음을 검출하는 단계와,
    플러싱 동작에 의해 데이터를 상기 캐시 장치로부터 상기 제 1 메모리 장치로 송신하는 단계와,
    상기 제 1 메모리 장치에 의해 수신된 데이터가 수정된 데이터인 것으로 판정하는 단계와,
    상기 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 송신하는 단계를 포함하는
    데이터 업데이트 방법.
  2. 제 1 항에 있어서,
    플러싱 동작에 의해 데이터를 상기 캐시 장치로부터 상기 제 1 메모리 장치로 송신하는 단계는 상기 캐시 장치로부터 상기 데이터를 제거하는 단계를 포함하는
    데이터 업데이트 방법.
  3. 제 1 항에 있어서,
    상기 플러싱 동작은 상기 캐시 장치가 데이터를 상기 캐시 장치의 캐시 라인으로부터 상기 제 1 메모리 장치로 송신하도록 하는
    데이터 업데이트 방법.
  4. 제 1 항에 있어서,
    상기 제 2 컴퓨팅 시스템은 상기 수정된 데이터를 수신하고, 상기 수정된 데이터를 상기 제 2 메모리 장치의 어드레스 범위로 매핑하는
    데이터 업데이트 방법.
  5. 제 1 항에 있어서,
    데이터 세트를 상기 캐시 장치로부터 상기 리플렉티브 메모리 영역으로 송신하는 단계를 포함하는
    데이터 업데이트 방법.
  6. 제 1 항에 있어서,
    복수의 수정된 데이터 블록을 제 2 컴퓨팅 시스템으로 송신하는 단계를 포함하는
    데이터 업데이트 방법.
  7. 제 1 항에 있어서,
    상기 제 2 컴퓨팅 시스템은 상기 수정된 데이터를 수신하는 것에 응답하여 데이터를 재 2 캐시 장치로부터 상기 제 2 메모리 장치로 송신하는
    데이터 업데이트 방법.
  8. 제 1 메모리 장치의 리플렉티브 메모리 영역에서의 데이터를 업데이트하기 위한 시스템으로서,
    데이터를 저장하기 위한 상기 제 1 메모리 장치의 리플렉티브 메모리 영역과,
    상기 리플렉티브 메모리 영역으로부터의 데이터의 사본을 저장하기 위한 캐시 장치와,
    프로세서를 포함하고,
    상기 프로세서는
    요청된 데이터의 캐시 미스를 검출하고,
    상기 요청된 데이터가 상기 제 1 메모리 장치의 상기 리플렉티브 메모리 영역에 저장되어 있는 것으로 판정하고,
    상기 요청된 데이터의 사본을 상기 리플렉티브 메모리 영역으로부터 상기 캐시 장치로 송신하고,
    플러싱 동작에 응답하여 상기 캐시 장치로부터 데이터를 수신하고,
    상기 캐시 장치로부터 수신된 데이터가 수정된 데이터인 것으로 판정하고,
    상기 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 송신하는
    데이터 업데이트 시스템.
  9. 제 8 항에 있어서,
    상기 프로세서는 실행될 상기 플러싱 동작을 스케줄링하는
    데이터 업데이트 시스템.
  10. 제 8 항에 있어서,
    상기 프로세서는 상기 수정된 데이터의 사본을 생성하고, 상기 수정된 데이터의 사본을 상기 제 1 메모리 장치의 상기 리플렉티브 메모리 영역으로 송신하는
    데이터 업데이트 시스템.
  11. 제 8 항에 있어서,
    상기 플러싱 동작은 상기 캐시 장치가 데이터를 상기 캐시 장치의 캐시 라인으로부터 상기 제 1 메모리 장치로 송신하도록 하는
    데이터 업데이트 시스템.
  12. 제 8 항에 있어서,
    상기 캐시 장치는 상기 캐시 장치의 데이터가 수정되었다는 것을 나타내는 메모리 지시자 비트를 포함하는
    데이터 업데이트 시스템.
  13. 복수의 명령어를 포함하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 복수의 명령어는 컴퓨팅 장치 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 장치로 하여금
    데이터가 캐시 장치로부터 제 1 메모리 장치로 플러싱되어야 한다는 지시를 수신하고,
    상기 데이터에 대응하는 메모리 어드레스가 상기 제 1 메모리 장치의 상기 리플렉티브 메모리 영역 내에 있음을 검출하고,
    플러싱 동작에 의해 데이터를 상기 캐시 장치로부터 상기 제 1 메모리 장치로 송신하고,
    상기 제 1 메모리 장치에 의해 수신된 데이터가 수정된 데이터인 것으로 판정하고,
    상기 수정된 데이터를 제 2 컴퓨팅 시스템의 제 2 메모리 장치로 송신하도록 하는
    컴퓨터 판독 가능 매체.
  14. 제 13 항에 있어서,
    상기 제 2 컴퓨팅 시스템은 상기 수정된 데이터를 수신하고, 상기 수정된 데이터를 상기 제 2 메모리 장치의 어드레스 범위로 매핑하는
    컴퓨터 판독 가능 매체.
  15. 제 13 항에 있어서,
    상기 명령어는 상기 컴퓨팅 장치로 하여금 복수의 수정된 데이터 블록을 제 2 컴퓨팅 시스템으로 송신하도록 하는
    컴퓨터 판독 가능 매체.
KR1020157020797A 2013-03-28 2013-03-28 리플렉티브 메모리를 이용한 일관성 구현 KR20150136045A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/034442 WO2014158173A1 (en) 2013-03-28 2013-03-28 Implementing coherency with reflective memory

Publications (1)

Publication Number Publication Date
KR20150136045A true KR20150136045A (ko) 2015-12-04

Family

ID=51624955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020797A KR20150136045A (ko) 2013-03-28 2013-03-28 리플렉티브 메모리를 이용한 일관성 구현

Country Status (7)

Country Link
US (1) US9575898B2 (ko)
EP (1) EP2979192B1 (ko)
JP (1) JP2016508650A (ko)
KR (1) KR20150136045A (ko)
CN (1) CN104969203B (ko)
TW (1) TWI506537B (ko)
WO (1) WO2014158173A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107340441B (zh) * 2017-06-07 2019-07-05 同济大学 一种燃料电池汽车动力总成集成测试系统
CN116846863B (zh) * 2023-08-30 2023-11-10 东方空间技术(山东)有限公司 一种光纤反射内存网内存映射方法、装置及计算设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US7000078B1 (en) * 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US20030110233A1 (en) 2001-12-10 2003-06-12 Vmic Reflective memory system and method capable of dynamically sizing data packets
JP2004038422A (ja) 2002-07-02 2004-02-05 Matsushita Electric Ind Co Ltd 半導体装置
US6795850B2 (en) * 2002-12-13 2004-09-21 Sun Microsystems, Inc. System and method for sharing memory among multiple storage device controllers
US6941396B1 (en) 2003-02-19 2005-09-06 Istor Networks, Inc. Storage controller redundancy using bi-directional reflective memory channel
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
EP1605360B1 (en) 2004-06-08 2010-02-17 Freescale Semiconductors, Inc. Cache coherency maintenance for DMA, task termination and synchronisation operations
US20080320253A1 (en) 2007-06-19 2008-12-25 Andrew Tomlin Memory device with circuitry for writing data of an atomic transaction
JP2009104300A (ja) 2007-10-22 2009-05-14 Denso Corp データ処理装置及びプログラム
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
JP2011008674A (ja) * 2009-06-29 2011-01-13 Nec Commun Syst Ltd 二重化情報処理システム及び同期化方法
JP2013519139A (ja) 2010-02-09 2013-05-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) データ記憶方法
US20110296095A1 (en) 2010-05-25 2011-12-01 Mediatek Inc. Data movement engine and memory control methods thereof
US8706983B2 (en) 2010-06-30 2014-04-22 Sandisk Technologies Inc. Garbage collection of memory blocks using volatile memory
KR101879442B1 (ko) 2011-05-25 2018-07-18 삼성전자주식회사 휘발성 메모리 장치의 리프레쉬 방법, 리프레쉬 어드레스 생성기 및 휘발성 메모리 장치
US8856456B2 (en) 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
KR101695845B1 (ko) * 2012-09-20 2017-01-12 한국전자통신연구원 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치

Also Published As

Publication number Publication date
EP2979192B1 (en) 2018-05-30
WO2014158173A1 (en) 2014-10-02
EP2979192A4 (en) 2016-11-16
EP2979192A1 (en) 2016-02-03
CN104969203B (zh) 2017-08-15
JP2016508650A (ja) 2016-03-22
US9575898B2 (en) 2017-02-21
TW201447749A (zh) 2014-12-16
US20160026576A1 (en) 2016-01-28
TWI506537B (zh) 2015-11-01
CN104969203A (zh) 2015-10-07

Similar Documents

Publication Publication Date Title
US10346302B2 (en) Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
TWI516933B (zh) 用於在本地代理者之記憶體鏡像及遷移之裝置及方法以及電腦可讀取媒體
US20170192886A1 (en) Cache management for nonvolatile main memory
US9208091B2 (en) Coherent attached processor proxy having hybrid directory
US20110173400A1 (en) Buffer memory device, memory system, and data transfer method
JP2019521409A (ja) 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用
CN103744799A (zh) 一种内存数据访问方法、装置和系统
US10169236B2 (en) Cache coherency
US20140006716A1 (en) Data control using last accessor information
US7779205B2 (en) Coherent caching of local memory data
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
EP2979192B1 (en) Implementing coherency with reflective memory
CN106406745B (zh) 根据目录信息维护Cache数据一致性的方法及装置
US9323671B1 (en) Managing enhanced write caching
US20160217076A1 (en) Speculative cache reading using shared buffer
US11126568B2 (en) Object coherence in distributed shared memory systems
JP2016057763A (ja) キャッシュ装置、及びプロセッサ
US20140029616A1 (en) Dynamic node configuration in directory-based symmetric multiprocessing systems
CN114787784A (zh) 扩展对某些请求的一致性保护的高速缓存窥探模式
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
CN116049031A (zh) 数据处理方法、装置、电子设备和存储介质
US8862826B2 (en) Method and apparatus for increasing capacity of cache directory in multi-processor systems

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination