KR20070084441A - 로컬 메모리 데이터의 가간섭성 캐싱 - Google Patents
로컬 메모리 데이터의 가간섭성 캐싱 Download PDFInfo
- Publication number
- KR20070084441A KR20070084441A KR1020077011549A KR20077011549A KR20070084441A KR 20070084441 A KR20070084441 A KR 20070084441A KR 1020077011549 A KR1020077011549 A KR 1020077011549A KR 20077011549 A KR20077011549 A KR 20077011549A KR 20070084441 A KR20070084441 A KR 20070084441A
- Authority
- KR
- South Korea
- Prior art keywords
- local memory
- processors
- processor
- memory
- data block
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0826—Limited pointers directories; State-only directories without pointers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
멀티프로세서 시스템(1)은 복수의 프로세서(21 내지 25), 시스템 버스(30) 및 주요 시스템 메모리(40)를 포함한다. 각 프로세서(21 내지 25)는 순서대로 시스템 버스(30)에 연결되어 있는 각각의 캐시 메모리(41 내지 45)에 연결된다. 상기 캐시 메모리(41 내지 45)는 각각의 프로세서(21 내지 25)에 의해 종종 사용되는 날짜와 명령어의 복사본을 저장하며, 이에 의해 각각의 판독 또는 기록 동작 동안 주요 시스템 메모리(40)를 액세스를 하기 위해 프로세서(21 내지 25)에 대한 필요를 제거한다. 프로세서(25)는 복수의 데이터 블록(미 도시)을 갖는 로컬 메모리(50)에 연결된다. 본 발명에 따라, 상기 로컬 메모리(50)는 관련된 프로세서(25)로의 연결을 위해 제1 포트(51)를 갖는다. 게다가, 로컬 메모리(50)는 시스템 버스(30)로 연결된 제2 포트(52)를 갖고, 이에 의해 하나 이상의 그 외의 프로세서(21 내지 24)가 상기 로컬 메모리(50)를 액세스하도록 허용한다. 본 발명은, 비용이 덜 비싸고 속도가 더 빠른 로컬 메모리 디바이스를 사용하고 캐시 메모리보다 더 예측 가능한 타이밍을 가지므로, 로컬 메모리 데이터의 가간섭성 캐싱을 가능하게 한다.
Description
본 발명은 로컬 메모리를 갖는 프로세서 시스템에 관한 것이며, 특히 멀티프로세서 시스템에서 로컬 메모리 데이터의 가간섭성 캐싱에 관한 것이다.
프로세서 시스템의 속도와 더 많은 양의 데이터를 취급할 수 있는 상기 시스템의 능력을 증가시키려는 계속적인 요구가 존재한다. 병렬 계산 처리(parallelism)는, 속도를 증가시키려는 요구를 추구하여, 점점 더 많이 사용되며, 이에 따라 복잡한 프로그램은, 성능을 향상시키기 위해 동시에 복수의 덜 복잡한 루틴이 실행될 됨에 따라 정상적으로 실행된다. 속도를 증가시키기 위해 사용되는 또 다른 도구는 캐시 메모리를 제공하는 것이다.
캐시 메모리는, 자주 사용되는 데이터의 일 부분을 복사한 것과 가까이 연결된 적은 회전 지연 캐시 메모리에 있는 주요 시스템 메모리로부터의 명령을 저장함으로써 동작한다. 이는, 빈번한 간격으로 액세스되는 데이터 또는 명령이 상기 캐시 메모리로부터 얻을 수 있으며, 이에 의해 주요 시스템 메모리를 액세스하는 필요성을 피하게 된다는 것을 의미한다. 그러므로, 각각의 새로운 판독 및 기록 명령이 발행될 때, 상기 시스템은, 캐시 내에 정보가 저장되어 있는지에 대한 여부를 결정하기 위해 먼저 캐시 메모리 조사한다. 상기 정보가 캐시 메모리 내에서 이용 가능하다면, 주요 시스템 메모리에 대한 액세스는 필요하지 않고 상기 명령어는 처리될 수 있거나 데이터는 훨씬 더 쉽게 액세스된다.
하나 이상의 프로세서 캐시 및 주요 시스템 메모리 그 자체의 데이터 사본간의 가간섭성을 보장하려는 필요는 캐시 메모리 시스템 내에서 본질적이다. 가간섭성을 보장하려는 하나의 방법은, 모든 캐시 블록마다 상태 정보를 포함하는 "MESI" 프로토콜이다. 상기 상태 정보는 캐시 라인(cache line)이 수정되고(Modified), 공유되며(Shared) 독점적이고(Exclusive) 무효한(Invalid)(즉, MESI) 지에 대한 여부의 표시를 포함한다.
MESI 시스템에서, 공유되지 않는 캐시 라인이 액세스될 때, 독점적(Exclusive)이라고 표시(E)된다. 다음의 판독은 상태를 변화시키지 못하지만, 상기 캐시 라인에 대한 다음의 기록은 상기 상태를 수정됨(M)으로 변화시킨다. 멀티프로세서 시스템에서 또 다른 프로세서가 캐시 데이터를 그 자신의 캐시에 로딩한다면, 상기 캐시 라인은 공유됨(S)으로 표시된다. 프로세서가 데이터를 공유되는 캐시에 쓰려고 한다면, 무효한 명령어는 모든 다른 프로세서 또는 공유되는 데이터의 복사본을 갖는 적어도 모든 다른 프로세서에 전달되어야한다. 프로세서가 수정된 캐시 라인으로부터 데이터를 로딩할 수 있기 전, 상기 수정된 캐시 라인을 갖는 프로세서는 메모리에 데이터를 라이트백(write back)해서 공유됨(S)과 같이 데이터를 표시한다. 무효함(I)으로 표시된 캐시 라인에 대한 임의의 판독 또는 기록은 캐시 놓침(cache miss)을 초래한다.
상술한 MESI 프로토콜과 같은 프로토콜은, 캐시 메모리가 가간섭성으로 유지된다는 사실을 보장하며, 이는 멀티프로세서 시스템에서 상기 메모리가 소프트웨어에 대해 투명하도록 만든다. 캐시 메모리에 대해 추가적인 세부사항 및 캐시 메모리 가간섭성은 2003년, John L. Hennessy 및 David A. Patterson의 3판, Computer Architecture a Quantitative Approach 저서에서 발견될 수 있다.
캐시 메모리가 상술된 이점을 제공할지라도, 이는 설계하기에 복잡해지는 단점이 있으며, 다른 유형의 메모리 디바이스와 비교하면 상대적으로 비싼 경향이 있다. 예컨대, 캐시 메모리는 비교기가 제시된 주소에 대하여 태그를 확인하도록 하고, 선택기가 매칭되는 방법을 선택하도록 한다. 캐시 메모리는 또한 데이터의 대체를 관리하기 위해 LRU(Least Recently Used) 비트를 가지고, 수정된 데이터의 라이트백(writeback)을 처리하는 카피백 기능(copyback funtionality)을 요구한다. 비트가 캐시 메모리에서 액세스되는 방법으로 인해, 캐시 메모리는 또한 다른 유형의 메모리보다 더 많은 전력을 소비하는 경향이 있다. 더욱이, 데이터가 캐시에서 순간차단 또는 없어지는 방법은 대체 정책(전형적으로, LRU)에 의존하며, 이는 소프트웨어에 있어서 예상하기 어렵다.
예컨대, 디지털 신호 처리용으로 사용되는 프로세서와 같은 프로세서 시스템은 또한 처리 속도를 증가시키는 수단으로서 로컬 메모리를 사용한다. 로컬 메모리는, 판독 및/또는 기록 조작이 RAM과 같이, 분리된 주요 메모리를 사용하는 것보다 오히려 직접적으로 프로세서와 로컬 메모리 사이에서 행해지도록 허용한다. 로컬 메모리가 로컬 메모리로의 액세스를 갖는 특정 프로세서에 관해 처리 속도를 증가 시키도록 허용하는 반면, 멀티프로세서 시스템에 있어서 임의의 추가적인 이점을 제공하지 않는다.
본 발명의 목적은 로컬 메모리 데이터의 가간섭성 캐싱이 제공되는 멀티프로세서 시스템을 제공하는 것이다. 본 발명의 제1 측면에 따르면, 복수의 프로세서, 관련된 캐시 메모리를 갖는 하나 이상의 프로세서, 상기 복수의 프로세서를 연결하기 위한 시스템 버스 및 복수의 프로세서 중 하나와 연관된 로컬 메모리를 포함하는 멀티프로세서 시스템이 제공되며, 여기서 상기 로컬 메모리는 관련된 프로세서에 의해 액세스되도록 적응되고, 멀티프로세서 시스템에서 프로세서 중 또 다른 하나에 의해 액세스되도록 더 적응된다.
본 발명은 빠르고, 저 전력이며 고비용이 아닌 예측 가능한 타이밍 작동을 갖는 로컬 메모리를 제공하는 이점을 갖고, 동시에 멀티프로세서 시스템에서 다른 프로세서가 상기 로컬 메모리를 액세스하도록 가능케 하는 이점을 또한 갖는다.
본 발명의 또 다른 측면에 따르면, 시스템 버스에 연결된 복수의 프로세서(상기 프로세서들 중 적어도 하나의 프로세서는 캐시 메모리를 가짐)를 포함하는 멀티프로세서 시스템에서 데이터를 처리하는 방법이 제공되며, 상기 방법은, 관련된 프로세서에 연결된 로컬 메모리를 제공하는 단계 및, 관련 프로세서에 의해 직접적으로 액세스되고 시스템 버스를 통해 하나 이상의 다른 프로세서에 의해 액세스될 수 있도록 하기 위해 상기 로컬 메모리를 제공하는 단계 및 로컬 메모리를 구성하는 단계를 포함한다.
본 발명의 더 나은 이해와 어떻게 발효할지 더 분명히 나타내 보이기 위해, 오로지 예시의 방법으로서 다음의 도면에 대한 참고가 지금부터 이루어 질 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 멀티프로세서 시스템의 하이 레벨 뷰(high level view)를 도시한 도면.
도 2는 본 발명에 따른 판독(Read) 동작을 설명하는 흐름도.
도 3은 본 발명에 따른 기록(Write) 동작을 설명하는 흐름도.
도 1은 본 발명에 따른 멀티프로세서 시스템(1)을 도시한다. 멀티프로세서 시스템(1)은 복수의 프로세서(21 내지 25), 시스템 버스(30) 및 주요 시스템 메모리(40)를 포함한다. 각 프로세서(21 내지 25)는 순서대로 시스템 버스(30)에 연결되어 있는 각각의 캐시 메모리(41 내지 45)에 연결된다. 상술한 바와 같이, 상기 캐시 메모리(41 내지 45)는 각각의 프로세서(21 내지 25)에 의해 종종 사용되는 데이터와 명령어의 복사본을 저장하며, 이에 의해 각각의 판독 또는 기록 동작 동안 각 프로세서(21 내지 25)가 주요 시스템 메모리(40)를 액세스하는 필요를 제거한다.
프로세서(25)는 복수의 데이터 블록(미 도시)을 갖는 로컬 메모리(50)에 연결된다. 본 발명에 따라, 상기 로컬 메모리(50)는 관련된 프로세서(25)로의 연결을 위해 제1 포트(51)를 갖는다. 게다가, 로컬 메모리(50)는 시스템 버스(30)로 연결된 제2 포트(52)를 갖고, 이에 의해 하나 이상의 그 외의 프로세서(21 내지 24)가 상기 로컬 메모리(50)를 액세스하도록 허용한다.
비록 바람직한 실시예가 로컬 메모리(50) 뿐만 아니라 캐시 메모리(45)에 연결되어 있는 프로세서(25)를 도시하더라도, 캐시 메모리(45)는 선택적이며, 프로세서(25)는 단지 로컬 메모리(50)에 간단히 연결될 수 있다는 것이 주지된다. 더욱이, 바람직한 실시예의 멀티프로세서 시스템이 로컬 메모리(50)를 갖는 오직 하나의 프로세서(25)를 갖는 것으로 도시될지라도, 하나 이상의 그 외의 프로세서(21 내지 24)가 또한 각각의 로컬 메모리에 연결될 수 있다는 것이 또한 이해될 것이다.
그러므로, 상기 로컬 메모리(50)의 제2 포트(52)는 그 외의 프로세서(21 내지 24)가 로컬 메모리(50) 및 이와 관련된 프로세서(25)를 액세스하도록 허용한다(비록 프로세서(25)와 로컬 메모리(50) 간의 액세스만큼 빠르지 않더라도).
본 발명은 소프트웨어에 투명한 방법으로 그 외의 프로세서(21 내지 24)에 의해 로컬 메모리(50)에 있는 데이터의 캐싱을 허용한다. 이는 로컬 메모리 및 캐시 가간섭성을 갖는 시스템이 프로그램하기 더 쉽게 만든다.
로컬 메모리(50)의 가간섭성은 제 1 및 2 상태 비트를 로컬 메모리(50)에 있는 모든 블록에 연관시킴으로써 가능하게 이루어진다.
제1 상태 비트는 공유된 비트(Shared bit)로 명명되고, 시스템에 있는 또 다른 프로세서가 판독-공유된 명령어를 이용하여 블록을 판독할 때, 상기 비트는 설정된다.
제2 상태 비트는 무효한 비트(Invalid bit)로 명명되고, 시스템에 있는 또 다른 프로세서가 판독-독점적 명령어를 이용하여 데이터 블록을 판독하여 상기 데이터 블록 상에 향상된 명령어를 발행할 때, 상기 비트는 설정된다.
로컬 메모리(50)와 연관되는 프로세서(25) 즉, 로컬 메모리(50)를 소유하는 프로세서(25)는, 상기 프로세서(25)가 로컬 메모리(50)를 액세스할 때마다 공유된(Shared) 그리고 무효한(Invalid) 비트를 체크한다.
도 2는 로컬 메모리(50) 상에 프로세서(25)에 의해 실행되는 판독 동작을 설명하는 흐름도를 도시한다. 단계(201)에서, 상기 프로세서(25)는 로컬 메모리(50)에서 액세스되는 데이터 블록의 무효한 비트를 확인하다. 만일 상기 무효한 비트가 설정되어 있지 않다면, 프로세서(25)는 단지 판독 동작을 지속한다{단계(207)}. 그러나, 무효한 비트가 설정될 경우, 프로세서(25)는 시스템 버스(30) 상에 룩업-캐시 및 격하되는 명령어(lookup-cache-and-downgrade command)를 발행한다{단계(203)}. 상기 룩업-캐시 및 격하되는 명령어는 수정된 상태에서 데이터 블록을 보유하는 임의의 프로세서(21 내지 25)가 상기 수정된 데이터 블록을 로컬 메모리(50)로 돌려보내도록 요청한다. 수정된 데이터 블록이 수신된 이후{단계(204)}, 무효한 비트는 지워지고(cleared){단계(205)}, 공유된 비트는 설정된다{단계(206)}. 이후 판독 동작은 정상적으로 완료된다{단계(207)}. 공유된 비트가 설정되는데, 이는 데이터 블록을 제공했던 프로세서(21 내지 25)가 공유된 상태로 데이터 블록의 복사본을 각각의 캐시 메모리(41 내지 45)에 유지하기 때문이라는 점이 주지된다. 프로세서(25)가 또한 로컬 메모리에 저장된 데이터를 캐싱할 수 있다는 점은 위에서 주지되었다. 이것은 메모리 주소에 기초하지만 그러나 명령어의 연산 부호(op-code)에 기초하는 메모리와 로컬과 시스템 메모리 중에서 선택하지 않는 프로세서에서 일어날 수 있다.
도 3은 로컬 메모리(50)에 대한 기록 동작을 설명하는 흐름도를 도시한다. 단계(301)에서, 기록 동작을 실시하는 프로세서(25)는 데이터 블록의 무효한 비트 그리고 공유된 비트 둘 다 기록되는지를 확인한다. 단계(302)에서, 프로세서(25)는 상기 비트 중 하나의 비트가 설정되는지에 대한 여부를 결정한다. 비트 중 하나의 비트가 설정되었다면, 프로세서(25)는 시스템 버스 상에 룩업-캐시 및 무효한 명령어(lookup-cache-and-invalidate command)를 발행한다{단계(303)}. 상기 룩업-캐시 및 무효한 명령어는 각각의 캐시 메모리(41 내지 45)에 캐싱된 데이터 블록을 갖는 프로세서(21)가 상기 데이터 블록을 무효화하도록 요청한다.
프로세서(21 내지 25) 중 하나의 프로세서가 수정된 상태의 데이터 블록을 가진다면, 각각의 프로세서는 무효화 이전에, 수정된 데이터 블록을 로컬 메모리(50)에 라이트백한다. 수정된 데이터 블록이 로컬 메모리(50)에서 수신되어 돌려보내진 이후, 무효한 비트는 지워지고{단계(307)}, 기록 동작은 완료된다{단계(308)}.
단계(304 내지 306)는 수정된 상태의 데이터 블록을 갖는 각각의 프로세서에 의해 실행된다는 것을 이해할 것이다.
무효한 또는 공유된 비트 어느 것도 설정되지 않는다는 점이 단계(302)에서 결정된다면, 기록 동작은 정상적으로 지속된다{단계(308)}.
데이터의 카피백(copyback)(데이터가 희생되므로)은 로컬 메모리에 있는 데 이터 블록의 무효한 비트에 대한 재설정(reset)을 야기한다. 이는, 데이터의 새로운 블록이 데이터 캐시로 로딩될 때마다, 오래된 데이터는 새로운 데이터를 위한 공간을 만들기 위해 데이터 캐시로부터 제거되어야만 하기 때문이다. 상기 오래된 데이터가 새로운 데이터를 위해 희생되는 것이다. 오래된 데이터가 프로세서에 의해 수정되었다면, 상기 데이터는 그 데이터가 유래한 메모리에 라이트백(writeback)(즉, 카피백)되어야 한다. 제1 및 2의 상태 비트 즉, 공유된 비트 및 무효한 비트는 데이터가 최초로 저장되는 위치에 저장되고, 캐싱된 곳엔 저장되지 않는다. 달리 말하면, 제1 및 2 상태 비트는 로컬 메모리에 저장되고, 캐시 메모리에는 저장되지 않는다. 특히,
“판독-공유(Read-shared)”, “판독-독점(Read-exclusive)”, “룩업-캐시 및 격하(lookup-cache-and-downgrade)” 및 “룩업-캐시 및 무효(lookup-cache-and-invalidate)” 동작은 캐시 가간섭성을 지지하는 전형적인 버스 프로토콜에서 발견되는 모든 명령어이다.
- 판독-공유(Read-shared)는 데이터를 판독하려는 의도를 가지며, 데이터 판독용으로 사용된다.
- 판독-독점(Read-exclusive)은 데이터를 수정하려는 의도를 가지며, 데이터 판독용으로 사용된다.
- 룩업-캐시 및 격하(lookup-cache-and-downgrade)는 공유 상태로 데이터를 회복하기 위해 수정된 상태에서 데이터를 갖는 프로세서를 요청한다.
- 룩업-캐시 및 무효(lookup-cache-and-invalidate)는 캐시로부터 데이터를 제거하기를 캐시에서 데이터를 갖는 프로세서에게 요청한다.
상술한 본 발명은 로컬 메모리를 가진 프로세서가 캐시 가간섭성을 갖는 시스템에서 어떻게 병합되는지를 설명한다. 그 외의 프로세서는, 소프트웨어가 이러한 것을 인지하도록 요구하는 것 없이, 로컬 메모리에 있는 데이터를 캐싱할 수 있다.
더욱이, 본 발명은 로컬 메모리 데이터의 가간섭성 캐싱을 제공하는 이점을 가지며, 상기 로컬 메모리는, 전형적으로 캐시보다 설계하기가 더 용이하며, 예측 가능한 타이밍 동작을 갖고 속도가 더 빠르다. 게다가, 로컬 메모리는 더 적은 전력을 사용하며 비용이 덜 든다.
상술한 실시예가 본 발명을 제한하기보다는 오히려 설명하고, 당업자가 첨부된 청구범위의 범위를 벗어나지 않고 많은 대안적인 실시예를 설계할 수 있을 것이라는 점을 주의해야 한다. "포함하는" 이라는 상기 용어는 청구항에 기재된 것 이외에 구성 요소의 존재 또는 단계를 배제하지 않고, 단수 요소는 복수 요소를 배제하지 않으며 단수의 프로세서 및 다른 유닛은 청구 범위에 언급된 여러 유닛의 기능을 실행할 수 있다. 청구 범위에서 임의의 참고 기호는 이들의 범위를 제한하도록 해석되어서는 안 된다.
상술한 바와 같이, 본 발명은 로컬 메모리를 갖는 프로세서 시스템에 관한 것이며, 특히 멀티프로세서 시스템에서 로컬 메모리 데이터의 가간섭성 캐싱에 이용된다.
Claims (14)
- 멀티프로세서 시스템으로서,복수의 프로세서로서, 하나 이상의 프로세서가 관련 캐시 메모리를 갖는 복수의 프로세서와;복수의 프로세서를 연결하기 위한 시스템 버스와;복수의 프로세서 중 하나의 프로세서와 관련된 로컬 메모리를 포함하며,상기 로컬 메모리는 관련 프로세서에 의해 액세스되도록 적응되고, 멀티프로세서 시스템에서 프로세서 중 또 다른 프로세서에 의해 액세스되도록 더 적응되는, 멀티프로세서 시스템.
- 제 1항에 있어서,로컬 메모리는 관련 프로세서와 직접적으로 통신하기 위한 제1 포트와 시스템 버스를 통해 하나 이상의 그 외의 프로세서와 통신하기 위한 제2 포트를 포함하는, 멀티프로세서 시스템.
- 제 1항 또는 제 2항에 있어서,로컬 메모리는 가간섭성 캐시 메모리로서 동작하도록 구성되는, 멀티프로세서 시스템.
- 제 3항에 있어서,로컬 메모리는 데이터 블록에 정보를 저장하도록 적응되며, 각각의 데이터 블록은 제1 상태 비트와 제2 상태 비트로 할당되고, 이 제1 상태 비트와 제2 상태 비트는 로컬 메모리와 하나 이상의 캐시 메모리 사이의 가간섭성을 유지하도록 제공되는, 멀티프로세서 시스템.
- 제 4항에 있어서,제1 상태 비트는, 특정 데이터 블록이 공유되고 있는지에 대한 여부를 표시하도록 적응되며, 제2 상태 비트는 특정 데이터 블록이 무효한지에 대한 여부를 표시하도록 적응되는, 멀티프로세서 시스템.
- 제 4항 또는 제 5항에 있어서,시스템은, 데이터 블록이 원래 저장되는 로컬 메모리에 제1 및 제2 상태 비트를 저장하도록 적응되는, 멀티프로세서 시스템.
- 제 4항에 있어서,로컬 메모리는 시스템의 캐시 가간섭성 입도(granularity)에 대응하는 블록 크기로 데이터를 저장하도록 적응하는, 멀티프로세서 시스템.
- 시스템 버스에 연결된 복수의 프로세서를 포함하는 멀티프로세서 시스템에서 데이터를 처리하는 방법으로서,상기 프로세서 중 적어도 하나의 프로세서는 캐시 메모리를 가지고, 상기 방법은,관련 프로세서에 연결된 로컬 메모리를 제공하는 단계와;로컬 메모리가 관련 프로세서에 의해 직접적으로 액세스되고, 시스템 버스를 통해 하나 이상의 그 외의 프로세서에 의해 액세스될 수 있도록 로컬 메모리를 구성하는 단계를 포함하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 8항에 있어서,제1 및 2 상태 비트를 로컬 메모리에 저장된 각각의 데이터 블록에 할당하는 단계를 포함하며, 상기 제1 및 2 상태 비트는 로컬 메모리와 하나 이상의 캐시 메모리 사이의 가간섭성을 유지하도록 동작하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 9항에 있어서,제1 상태 비트는, 특정 데이터 블록이 공유되고 있는지에 대한 여부를 표시하고, 제2 상태 비트는, 특정 데이터 블록이 무효한지에 대한 여부를 표시하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 10항에 있어서,데이터 블록이 본래 저장되는 로컬 메모리에 제1 및 2 상태 비트를 저장하는 단계를 더 포함하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 10항 또는 제 11항에 있어서,프로세서와 이와 관련되는 로컬 메모리 사이의 판독 동작은 액세스되고 있는 데이터 블록의 상태를 결정하는 단계를 포함하고,만일 상기 데이터 블록이 무효한 것으로 결정된다면,관련 캐시 메모리에 저장된 수정된 데이터 블록을 갖는 하나 이상의 다른 프로세서 각각으로부터 수정된 데이터 블록을 시스템 버스를 통해 검색하는 단계와;무효한 상태 비트를 지우는 단계와;공유된 상태 비트를 설정하는 단계와;판독 동작을 종결하는 단계를 실시하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 10항 및 제 11항에 있어서,프로세서와 이와 관련된 로컬 메모리 사이의 기록 동작은,기록되는 데이터 블록의 상태를 결정하는 단계를 포함하고,만일 상기 데이터 블록이 무효이거나 공유되는 것으로 결정된다면,임의의 다른 프로세서가 수정된 데이터 블록을 갖는지에 대한 여부를 결정하는 단계와; 만약 그 블록을 갖고 있다면,이러한 프로세서가 수정된 데이터 블록을 로컬 메모리에 라이트백(write back)하도록 요청하는 단계와;그 외의 프로세서 각각에 대한 각각의 메모리에서 데이터 블록을 무효화하는 단계와;무효한 상태 비트를 지우는 단계와,기록 동작을 종결하는 단계를 실시하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
- 제 8항에 있어서,로컬 메모리는 시스템의 캐시 가간섭성 입도(granularity)에 대응하는 블록 크기로 데이터를 저장하는, 멀티프로세서 시스템에서 데이터를 처리하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04106032 | 2004-11-24 | ||
EP04106032.8 | 2004-11-24 | ||
PCT/IB2005/053662 WO2006056900A1 (en) | 2004-11-24 | 2005-11-08 | Coherent caching of local memory data |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070084441A true KR20070084441A (ko) | 2007-08-24 |
KR101168364B1 KR101168364B1 (ko) | 2012-07-25 |
Family
ID=35744855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077011549A KR101168364B1 (ko) | 2004-11-24 | 2005-11-08 | 로컬 메모리 데이터의 가간섭성 캐싱 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7779205B2 (ko) |
EP (1) | EP1828907A1 (ko) |
JP (1) | JP5587539B2 (ko) |
KR (1) | KR101168364B1 (ko) |
CN (1) | CN101065735A (ko) |
WO (1) | WO2006056900A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8291175B2 (en) * | 2009-10-16 | 2012-10-16 | Oracle America, Inc. | Processor-bus attached flash main-memory module |
JP5404433B2 (ja) | 2010-01-08 | 2014-01-29 | 株式会社東芝 | マルチコアシステム |
TWI478055B (zh) * | 2012-12-11 | 2015-03-21 | Gemtek Technology Co Ltd | 非對稱式處理之多核心系統與其網路設備 |
CN104407989B (zh) * | 2014-11-25 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有统一标签和片化数据的高速缓冲存储器 |
CN105095145B (zh) * | 2015-09-17 | 2018-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种自适应嵌入式处理器 |
CN107688545B (zh) * | 2016-12-23 | 2021-01-19 | 北京国睿中数科技股份有限公司 | 高速缓存的一致性状态预置方法及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6073766A (ja) * | 1983-09-29 | 1985-04-25 | Meidensha Electric Mfg Co Ltd | Cpu間の情報交換装置 |
JPS61211759A (ja) * | 1985-03-16 | 1986-09-19 | Meidensha Electric Mfg Co Ltd | マルチcpuシステムにおける2ポ−トメモリ制御回路 |
US5291442A (en) | 1990-10-31 | 1994-03-01 | International Business Machines Corporation | Method and apparatus for dynamic cache line sectoring in multiprocessor systems |
JPH05225147A (ja) * | 1992-02-17 | 1993-09-03 | Toshiba Corp | マルチプロセッサ型データ処理システム |
US5513335A (en) * | 1992-11-02 | 1996-04-30 | Sgs-Thomson Microelectronics, Inc. | Cache tag memory having first and second single-port arrays and a dual-port array |
US5590308A (en) * | 1993-09-01 | 1996-12-31 | International Business Machines Corporation | Method and apparatus for reducing false invalidations in distributed systems |
US5832534A (en) | 1994-01-04 | 1998-11-03 | Intel Corporation | Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories |
EP0815513B1 (en) | 1995-03-17 | 2006-08-16 | Intel Corporation | Multi-processing cache coherency protocol on a local bus |
US5943500A (en) * | 1996-07-19 | 1999-08-24 | Compaq Computer Corporation | Long latency interrupt handling and input/output write posting |
DE69715203T2 (de) * | 1997-10-10 | 2003-07-31 | Bull Sa | Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff |
JP2002024198A (ja) * | 2000-07-06 | 2002-01-25 | Fujitsu Ltd | 分散共有メモリ型並列計算機 |
US6356983B1 (en) | 2000-07-25 | 2002-03-12 | Src Computers, Inc. | System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture |
US6862640B2 (en) | 2001-04-10 | 2005-03-01 | Texas Instruments Incorporated | Arbitration in local system for access to memory in a distant subsystem |
EP1483672A4 (en) * | 2002-02-28 | 2008-03-26 | Silicon Graphics Inc | METHOD AND SYSTEM FOR CACHED MEMORY COHERENCE IN A MULTIPROCESSOR SYSTEM WITHOUT INCREASING THE SHARING VECTOR |
US7133977B2 (en) * | 2003-06-13 | 2006-11-07 | Microsoft Corporation | Scalable rundown protection for object lifetime management |
-
2005
- 2005-11-08 KR KR1020077011549A patent/KR101168364B1/ko active IP Right Grant
- 2005-11-08 CN CNA2005800401769A patent/CN101065735A/zh active Pending
- 2005-11-08 WO PCT/IB2005/053662 patent/WO2006056900A1/en not_active Application Discontinuation
- 2005-11-08 EP EP05802168A patent/EP1828907A1/en not_active Withdrawn
- 2005-11-08 US US11/719,780 patent/US7779205B2/en active Active
- 2005-11-08 JP JP2007542381A patent/JP5587539B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CN101065735A (zh) | 2007-10-31 |
JP2008521114A (ja) | 2008-06-19 |
EP1828907A1 (en) | 2007-09-05 |
US7779205B2 (en) | 2010-08-17 |
KR101168364B1 (ko) | 2012-07-25 |
JP5587539B2 (ja) | 2014-09-10 |
WO2006056900A1 (en) | 2006-06-01 |
US20090150619A1 (en) | 2009-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8688951B2 (en) | Operating system virtual memory management for hardware transactional memory | |
US7539823B2 (en) | Multiprocessing apparatus having reduced cache miss occurrences | |
US9251095B2 (en) | Providing metadata in a translation lookaside buffer (TLB) | |
US6725337B1 (en) | Method and system for speculatively invalidating lines in a cache | |
US7657710B2 (en) | Cache coherence protocol with write-only permission | |
US20080005504A1 (en) | Global overflow method for virtualized transactional memory | |
US5787478A (en) | Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy | |
US20070136535A1 (en) | System and Method for Reducing Unnecessary Cache Operations | |
US20100064107A1 (en) | Microprocessor cache line evict array | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
US20070239940A1 (en) | Adaptive prefetching | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
ZA200205198B (en) | A cache line flush instruction and method, apparatus, and system for implementing the same. | |
JP2007011580A (ja) | 情報処理装置 | |
US6748496B1 (en) | Method and apparatus for providing cacheable data to a peripheral device | |
US20200104259A1 (en) | System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations | |
JP2004326758A (ja) | 局所的なキャッシュ・ブロック・フラッシュ命令 | |
KR101168364B1 (ko) | 로컬 메모리 데이터의 가간섭성 캐싱 | |
US8788761B2 (en) | System and method for explicitly managing cache coherence | |
JP4577729B2 (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
JP2020003959A (ja) | 情報処理装置、演算処理装置及び情報処理装置の制御方法 | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US9639467B2 (en) | Environment-aware cache flushing mechanism | |
JP2007207224A (ja) | データ・ラインをキャッシュに書き込む方法 | |
US20230099256A1 (en) | Storing an indication of a specific data pattern in spare directory entries |
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 | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150714 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160707 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170711 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180705 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190710 Year of fee payment: 8 |