KR20010083446A - 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 - Google Patents
다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 Download PDFInfo
- Publication number
- KR20010083446A KR20010083446A KR1020000006953A KR20000006953A KR20010083446A KR 20010083446 A KR20010083446 A KR 20010083446A KR 1020000006953 A KR1020000006953 A KR 1020000006953A KR 20000006953 A KR20000006953 A KR 20000006953A KR 20010083446 A KR20010083446 A KR 20010083446A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- block
- caches
- shared memory
- processor
- Prior art date
Links
Classifications
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 스누핑(snooping) 방식의 상호 연결망을 이용하는 공유 메모리(shared memory) 구조의 다중 프로세서(multiprocessor) 장치에 관한 것으로, 성능을 높이기 위하여 프로세서와 공유 메모리간에 다단계의 캐시(cache)를 구성하며, 캐시의 큰 단계가 작은 단계의 유효한 내용을 포함하는 포함 관계(multi-level cache inclusion property)가 유발하는 성능 저하를 제거하기 위한 구조로서 접근 목록(access-list)이 구성됨을 특징으로 한다. 본 발명의 접근 목록은 하위 단계의 캐시내에 저장되어 있는 블록을 표시하므로써 상위 단계의 캐시는 하위 단계의 캐시의 블록을 중복하여 저장할 필요가 없다.
Description
본 발명은 공유 메모리 구조의 다중 프로세서 장치에 관한 것으로, 특히 스누핑(snooping) 방식의 상호 연결망을 포함하는 공유 메모리 구조의 다중 프로세서 장치에서 프로세서간 연결 경로상의 수 개의 캐시간을 단계적으로 관리할 수 있는 장치에 관한 것이다.
일반적으로, 단일 주소 공간(single address space)과 일관성(coherence)이 유지되는 캐시(cache)를 가지는 대규모 공유 메모리 다중 프로세서 시스템(shared memory multiprocessor system)은 유동적이고도 강력한 연산 환경을 제공한다. 즉, 단일 주소 공간과 일관성이 유지되는 캐시는 데이터 분할(data partitioning) 및 동적 부하 균형(dynamic load balancing) 문제를 쉽게 하고, 병렬 컴파일러 및 표준 운영 체제, 멀티프로그래밍(multiprogramming)을 위한 더 나은 환경을 제공하여, 보다 유동적이고 효과적으로 기계를 사용할 수 있게 한다.
도 1에는 이러한 공유 메모리 다중 프로세서 시스템의 한 예로서, 균등 메모리 접근 시간(Uniform Memory Access, UMA) 방식이 도시되어 있다. 도시된 바와 같이 UMA 방식에서는 단일 공유 메모리(30)를 구비하며, 단일 공유 메모리(30)는 전역 버스(21)를 통하여 다수개의 프로세서 노드(100A 내지 100C)에 연결되어 있다. 프로세서 노드(100A 내지 100C)내에는 2차 캐시(13A 내지 13C)들이 구성되며, 2차 캐시(13A 내지 13C)들은 지역 버스(20A 내지 20C)를 통하여 프로세서 모듈(10A 내지 10F)에 연결되어 있다. 프로세서 모듈(10A 내지 10F)들은 도시된 바와 같이 1 차 캐시(12A내지 12F)와 프로세서(11A내지 11F)를 구비한다.
상술한 구성을 갖는 UMA 방식에서는 공유 메모리(30)보다 용량은 작으나 훨씬 빠른 접근 시간(access time)을 제공하는 1차 및 2차 캐시(12A 내지 12F, 13A 내지 13F)들을 채용함으로써 프로세서간의 상호 연결망(지역 버스(20A 내지 20C) 및 전역 버스(21))에 발생하는 요청 및 응답 횟수를 줄이고 프로세서(11A 내지 11F)로부터의 메모리 접근 요청에 대한 작은 지연 시간(latency)을 제공한다.
하지만, 캐시(12A 내지 12F, 13A 내지 13F)의 사용은 하나의 프로세서(11A 내지 11F)가 자체의 1차 캐시(12A 내지 12F)에 대한 쓰기 작업을 수행하면, 그 쓰기 작업의 결과가 시스템 내의 모든 캐시(12A 내지 12F, 13A 내지 13F)의 해당 데이터 블록에 반영되어야 하는 소위 캐시 일관성 유지(cache coherence) 문제가 발생한다. 공유 메모리 다중 프로세서에서 캐시의 일관성 유지를 위하여 일반적으로스누핑 방식(snooping scheme)과 디렉토리 방식(directory scheme)이 널리 사용되고 있다.
스누핑 방식의 일관성 유지 방법은 어떤 프로세서(11A 내지 11F)로부터 메모리 접근 요청이 발생되면, 전달 경로(지역 버스(20A 내지 20C) 및 전역 버스(21))상에 직접 연결되어 있는 캐시(12A 내지 12F, 13A 내지 13C)들이 요청된 주소에 대하여 자신의 블록 상태를 확인하고 이에 따라 응답 등의 필요한 과정을 수행하는 방식을 의미한다 여기서, 캐시(12A 내지 12F, 13A 내지 13C)들은 내부에 저장된 블록의 상태 정보가 저장되며, 블록의 상태 정보로는 공유됨, 수정됨, 무효화됨으로 구분할 수 있다. 공유됨이라함은 캐시(12A 내지 12F, 13A 내지 13C)내의 블록이 또 다른 캐시(12A 내지 12F, 13A 내지 13C)내에 저장되어 있음을 의미하며, 수정됨은 캐시(12A 내지 12F, 13A 내지 13C)내의 블록이 수정되었음을 의미하고, 무효화됨은 캐시(12A 내지 12F, 13A 내지 13C)내의 블록이 무효화되어있음 즉, 유의미한 블록 내용이 저장되어있지 않음을 의미한다.
상술한 구성에서 특정한 프로세서(예컨데, 11A)에 의하여 메모리 접근 요청이 발생하였을 경우, 이 요청은 우선 1차 캐시(12A)에 제공되며, 1차 캐시(12A)에 요구된 메모리 블록이 유효한 상태로 존재하지 않을 경우(즉, 블록의 상태가 무효화 상태이거나 존재하지 않는 경우일 때에)에 지역 버스(20A)에 메모리 접근 요청이 제공된다. 지역 버스(20A)에 제공된 요청에 따라 2차 캐시(13A)와 연결되어 있는 지역 버스(20A)내의 다른 1차 캐시(12B)의 내용이 검색되며, 2차 캐시(13A)와 다른 1차 캐시(12B)에 그 블록이 유효한 상태로 존재하지 않으면, 전역 버스(21)를통하여 공유 메모리(30) 및 전역 버스(21)에 직접 연결된 다른 2 차 캐시(13B와 13C)에 메모리 접근 요청이 전달된다.
이와 같이 프로세서(11A)로부터 발생한 메모리 접근 요청은 계층적인 단계를 거치며 상호 연결망(20A 내지 20C, 21)을 통하여 점차적으로 시스템 전역에 전달되어 전달 경로에 위치하는 캐시(12A 내지 12F, 13A 내지 13C)들내에 요청된 주소에 해당되는 블록이 존재하는지 검색된다. 이와 같이 공유 메모리 다중 프로세서 구조에서 모든 캐시(12A 내지 12F, 13A 내지 13C)는 상호 연결망으로 접속되어 있으므로, 메모리 접근 요청에 따라 모든 캐시(12A 내지 12F, 13A 내지 13C)들의 상태(해당 블록의 저장 여부)가 검색되고 그에 따른 동작이 수반되어야 한다.
캐시(12A 내지 12F, 13A 내지 13C)는 공유 메모리(30)내에 저장되는 일정 크기의 블록들을 저장하고, 프로세서(11A 내지 11F)로부터 발생하는 메모리 접근 주소가 캐시(12A 내지 12F, 13A 내지 13C)에 저장되어 있는 블록 주소와 일치할 경우 그 내용을 제공하도록 구성된다. 따라서, 캐시(12A 내지 12F, 13A 내지 13C)의 용량이 커질수록 프로세서(11A 내지 11F)는 공유 메모리(30)에 접근하지 않고 블록 정보를 입수할 수 있다.
시스템의 성능을 높이기 위한 일차적인 방법은, 우선 시스템 내에 수용할 수 있는 프로세서의 수를 늘리는 것이다. 그러나 하나의 연결망이 제공할 수 있는 대역폭(bandwidth)은 제한적이며, 따라서 다수의 프로세서를 한 시스템에 구성하기 위해서는 도 1과 같이 다단계 상호 연결망(버스)과 다단계로 캐시를 구성할 필요가 있다.
1 차 캐시(12A 내지 12F)는 각 캐시(12A 내지 12F)에 직접 연결되어 있는 프로세서(11A 내지 11F)로부터 발생하는 메모리 접근 요구를 가능한 상위의 버스(20A 내지 20C)에 요청하지 않고 메모리 블록을 제공할 수 있도록 구성함으로써, 일차적으로 프로세서(11A내지 11F)로부터 발생한 메모리 접근 요구가 신속히 완료되도록 하며, 이차적으로 지역 버스(20A 내지 20C)에 제공되는 메모리 접근 요청의 수를 줄이므로써 지역 버스(20A 내지 20C)에 유발되는 요구에 의한 병목 현상을 줄여줄 수 있다. 마찬가지로 2차 캐시(13A 내지 13C)는 1차 캐시(12A 내지 12F)에 유효한 상태로 존재하지 않는 메모리 블록에 대한 요청을 수용함으로써, 메모리 블록의 신속한 제공과 전역 버스(21)의 병목을 줄인다. 따라서 고성능 구조의 경우, 다단계의 캐시(12A 내지 12F, 13A 내지 13C)를 구성하고 있으며, 프로세서(11A 내지 11F)로부터 공유 메모리(30)까지의 접근 경로상에서 프로세서(11A내지 11F)에 가까운 쪽의 캐시(12A 내지 12F)는 보다 고속이며, 작은 용량을 사용하고, 공유 메모리(30) 쪽에 가까운 캐시(13A 내지 13C)측 용량을 점차 크게 구성한다. 이러한 이유로 프로세서(11A 내지 11F) 쪽에 가까이 놓여진 캐시(12A 내지 12F)를 보다 작은 단계의 캐시(1 차 캐시)로 명기하며, 공유 메모리(30)에 점차 가까운 캐시(113A 내지 13C)를 큰 단계의 캐시(2 차 캐시)로 명기한다.
그러나, 단위 메모리 접근 요청에 대하여 일관성을 제공하기 위해서는 시스템내의 모든 캐시(12A 내지 12F, 13A 내지 13C)에 대한 검색을 하여야 하므로 일관성을 유지하기 위한 시간 지연이 길어지는 문제가 발생한다. 이러한 문제를 해결하기 위하여 각 단계의 캐시(12A 내지 12F, 13A 내지 13C)간에서, 작은 단계의 1 차캐시(12A 내지 12F)내에 저장된 유효한 상태의 메모리 블록 내용을 보다 큰 상태의 2 차 캐시(13A 내지 13C)가 유지하도록 하는 내포성(inclusion property)을 강제하여, 검색하여야 할 캐시의 범위를 축소시킴으로써 스누핑으로 인한 처리 지연 시간을 단축하는 방법이 기본적으로 사용되고 있다.
내포성은 큰 단계의 캐시(13A 내지 13C)가 자신과 상호 연결망 즉, 지역 버스(20A 내지 20C)를 통하여 직접 연결되어 있는 작은 단계의 캐시(12A 내지 12F)에 존재하는 모든 유효한 상태의 블록을 반드시 포함하고 있도록 제한하는 것을 의미한다. 도 1의 경우 캐시(13A)가 캐시(12A와 12B)내의 모든 유효한 상태의 블록을 포함하고, 캐시(13B)가 캐시(12C와 12D)내의 모든 유효한 상태의 블록을 포함하며, 캐시(13C)가 캐시(12E와 12F)내의 모든 유효한 상태의 블록을 포함하고 있을 경우 다단계 캐시 내포성(multi-level cache inclusion property)이 유지된다고 한다.
이러한 다단계 캐시 내포성은 캐시 프로토콜의 단순화를 위한 것으로서, 캐시(13A)에 유효한 상태로 존재하지 않는 블록은 캐시(12A 및 12B)에 유효한 상태로 존재하지 않음이 보장되고, 캐시(13B)에 유효한 상태로 존재하지 않는 블록은 캐시(12C 및 12D)에 유효한 상태로 존재하지 않음이 보장되며, 캐시(13C)에 유효한 상태로 존재하지 않는 블록은 캐시(12E 및 12F)에 유효한 상태로 존재하지 않음이 보장된다. 따라서 큰 단계의 캐시(13A 내지 13C)에 대한 검색에서 어떤 주소의 블록이 발견되지 않았을 경우에는 캐시(13A 내지 13C)에 직접 연결된 작은 단계의 캐시(12A 내지 12F)에 대한 검색을 수반하지 않고도 작은 단계의 캐시(12A 내지 12F)에 그 주소의 블록이 존재하지 않음을 알 수 있다. 따라서, 이러한 내포성을 이용하여 지역 버스(20A 내지 20C)나 전역 버스(21)에 발생된 요구가 모든 캐시(12A 내지 12F, 13A 내지 13C)에 전달되지 않고도 캐시 일관성을 유지할 수 있다.
예를 들면, 도 1의 프로세서(11A)로부터 메모리 읽기 요청이 발생되고, 1 차 캐시(12A)에는 요청된 메모리 블록이 유효한 상태로 존재하지 않는 경우, 지역 버스(20A)를 통하여 캐시(12B) 및 캐시(13A)에 읽기 요청을 제공한다. 이러한 읽기 요청에 부응하여 캐시(12B) 및 캐시(13A)는 각각 요청된 블록이 자신의 내부에 유효한 상태로 존재하는지를 확인하고, 존재할 경우 그의 상태에 따라서 응답의 책임이 있는 캐시(12B) 또는 캐시(13A)는 프로세서(11A)의 요청 블록을 제공한다. 여기서, 응답 책임이 있는 캐시(12B) 또는 캐시(13A)는 요청 블록을 프로세서(11A)에 제공하며, 응답 책임은 해당 요청 블록에 대한 소유권에 의하여 결정된다. 즉, 캐시(13A)는 내포성을 유지하기 위하여 캐시(12B)내의 내용을 모두 저장하고 있어야 하나, 나중 쓰기 방식(Write-back 방식이라 함)의 경우에 캐시(13A)가 캐시(12B)의 올바른 내용을 저장하지 못하는 경우가 발생한다. 나중 쓰기 방식이라 함은 프로세서(예컨데 11B)로부터 발생한 쓰기 요구에 대하여, 기록된 내용을 캐시(12B)에 저장하고, 공유 메모리(30)에 대한 갱신은 캐시(12B)로부터 블록이 축출되는 차후의 시기로 미루는 방식을 말한다. 나중 쓰기 방식에서는 작은 단계의 캐시(12B)에 저장한 최신의 블록 내용이 큰 단계의 캐시(13A)에는 알려지지 않는다. 그러나, 내포성을 유지하기 위하여 큰 단계의 캐시(13A)는 해당되는 주소의 블록을 반드시 유지하여야 하므로, 큰 단계의 캐시 블록(13A)에는 해당 주소(쓰기가 발생된 블록의 주소)가 할당되나 가장 마지막으로 프로세서(11B)로부터 기록된 블록의 내용은 담고있지 않다. 따라서, 이 경우에 캐시(13A)는 캐시(12B)에 대한 내포성을 갖는다 할 것이나, 캐시(13A)내에는 올바른 블록이 저장되어 있지 않은 상태인 바, 이 경우, 블록에 대한 응답 책임은 캐시(12B)에 있다.
요청 블록에 대하여 캐시(13A)가 응답 책임을 갖는 경우를 보면, 이 경우는 과거에 프로세서(11B)로부터 쓰기가 발생하여 캐시(12B)가 응답 책임을 갖던 블록이 프로세서(11B)로부터의 새로운 블록 요청에 의하여, 캐시(12B)에 저장되어 있던 블록이 축출될 블록으로 선택되어, 캐시(12B)로부터 블록 대체가 발생한 경우이다. 블록 대체라 함은, 새로운 블록을 캐시(예컨데 12B)에 할당하는 과정에서 기존에 캐시(12B)내에 있던 블록을 없애는 과정을 말한다. 즉, 캐시(12B)가 총 10개의 블록(B1-B10)만을 저장할 수 있으나, 새로운 블록(B11)이 필요한 경우에 이들 블록(B1-B10)들중 가장 쓰이지 않는 블록(예컨데, B2)을 없애고, 블록(B11)을 새로이 저장하는 과정을 말한다.
이러한 블록 대체 과정이 수행되면, 캐시(12B)는 블록(B2)을 저장하지 않는 상태가 되나, 캐시(13A)는 블록(B2)을 저장하고 있는 상태이므로, 블록(B2)에 대한 요청에 대하여는 캐시(13A)가 응답 책임이 있다.
그러나, 캐시(13A)에 요청한 주소의 블록이 유효한 상태로 존재하지 않을 경우, 다단계 캐시 내포성에 의하여 그 블록은 캐시(12B)에도 유효한 상태로 존재하지 않음이 보장되므로, 캐시(13A)는 캐시(12A)가 요청한 블록을 즉시 전역 버스(21)로 요청하며, 전역 버스로 요청된 블록은 캐시(13B, 13C)와 공유 메모리(30)에서 그 내용이 검색된다. 이때, 캐시(13B와 13C)에 그 블록이 유효한상태로 존재하지 않는 경우, 캐시(13B)의 하부에 해당되는 캐시(12C, 12D)와, 캐시(13C)의 하부에 해당되는 캐시(12E, 12F)에 그 블록이 유효한 상태로 존재하지 않음이 보장되므로, 공유 메모리(30)로부터 응답이 이루어진다. 만일, 캐시(13B)에 그 블록이 유효한 상태로 존재하며 수정된 상태(이 경우는 캐시(12C 또는 12D)에 최신의 블록내용이 저장되며, 캐시(13B)에는 블록 내용은 올바르지 않으나, 해당 주소 블록을 유효하고 수정됨 상태 즉, 캐시(12C 또는 12D)에 해당 블록이 유효하게 저장되어 있음을 알리는 상태가 된다.)이고, 캐시(13C)에 그 블록이 유효한 상태로 존재하지 않는 경우, 캐시(13B)는 지역 버스(20B)를 통하여 블록에 대한 요청을 하여 캐시(12C, 12D)에 대한 검색을 하여 캐시(12C나 12D)들중 수정된 상태의 캐시가 응답을 하도록 한다. 이때, 캐시(13C)에 직접 연결된 캐시(12E, 12F)에는 블록이 유효한 상태로 존재하지 않음이 보장되므로, 검색이 필요하지 않다.
이와 같이, 다단계 캐시 내포성(multi-level cache inclusion property)은 프로세서(11A 내지 11F)로부터 공유 메모리(30)까지의 접근 경로상에 수 단계의 캐시(12A 내지 12F, 13A 내지 13C)가 유효한 상태로 존재할 경우 큰 단계의 캐시(13A 내지 13C)가 작은 단계 캐시의 캐시(12A 내지 12F)가 가지고 있는 블록을 모두 유효한 상태로 포함하고 있음을 의미한다. 다단계 캐시 내포성에 의하여, 전역 버스(21)에 특정 주소에 해당되는 블록에 대한 검색이 요구되고, 큰 단계의 캐시(13A 내지 13C)에서 상기 주소에 해당되는 블록이 존재하지 않을 경우, 캐시(13A 내지 13C)와 내포성 관계를 갖는 작은 단계의 캐시(12A 내지 12F)에 대한 검색을 수반하지 않고도, 작은 단계의 캐시(12A 내지 12F)에 요구된 주소에 해당되는 블록이 존재하지 않음을 보장받을 수 있다.
다단계 캐시 내포성에 의하여 프로세서(11A 내지 11F)로부터의 메모리 접근 요구는 모든 캐시(12A 내지 12F, 13A 내지 13C)에 대한 검색을 필요로 하지 않음으로 검색에 소요되는 시간 지연이 축소된다는 장점이 있다.
한편, 종래의 방식으로 프로세서 노드(100A, 100B, 100C) 내의 2차 캐시(13A, 13B, 13C)와 1차 캐시(12A, 12B, 12C)간에 내포성을 유지하는 경우, 프로세서(11A)로부터 메모리 요구가 발생하고, 그 요구가 프로세서 노드 내의 1차 캐시(12A)에 적중하지 않으면, 2차 캐시(13A)로 메모리 요구가 전달된다. 2차 캐시(13A)는 발생된 메모리 요구에 대하여 2차 캐시(13A)내에 해당 블록이 유효하게 저장되어 있으면 그 블록을 제공하며, 유효한 블록이 저장되어 있지 않을 경우 해당 블록을 전역 버스(21)로 요구하고 그 응답을 받아 다시 지역 버스(20A)를 통하여 블록의 내용을 상기 메모리 요구를 발생시킨 프로세서 모듈(10A)에 제공한다. 이 때, 상기 블록을 1 차 캐시(12A) 및 2차 캐시(13A)에 할당하여야 내포성을 유지할 수 있으므로 이 블록은 1차 캐시(12A)와 2차 캐시(13A)에 중복된다. 이때, 지역 버스(21)를 통하여 제공된 상기 블록을 2차 캐시(13A)에 할당하기 위하여 2차 캐시(13A)에 존재하는 블록의 축출이 일어날 경우(즉, 블록 대체가 발생되어야 할 경우에), 축출되는 블록을 동일 프로세서 노드의 모든 1차 캐시(12A, 12B)에서 우선 축출해야만 한다. 따라서, 이러하게 축출되는 블록은 1차 캐시의 관리 정책상의 축출 대상과는 무관하게 이루어지므로, 차후 프로세서(11A, 11B)로부터 상기 축출요구를 받은 블록 접근이 발생하였을 경우에, 그 접근은 동일 프로세서 노드 내의모든 1차 캐시(12A, 12B) 및 2차 캐시(13A)에 접근 실패가 발생하여 전역 버스(21)를 통한 블록의 요구를 발생시키게 된다.
그러나, 이러한 종래의 다단계 캐시 내포성은 프로세서(11A 내지 11F)로부터의 메모리 접근 시에 작은 단계의 캐시(12A 내지 12F)에 유효한 상태로 존재하지 않아 큰 단계의 캐시(13A 내지 13C)로 메모리 블록이 요청되었을 때, 이에 대한 적중률을 저하시킬 수 있다. 이유는 큰 단계의 캐시(13A 내지 13C)가 보다 작은 단계 캐시(12A 내지 12F)에 대하여 상위 내포성을 유지하여야 하고, 작은 단계의 캐시(12A 내지 12F)에서 블록의 요청이 일어난 주소는 작은 단계의 캐시(12A)에 존재하지 않는 것이므로, 큰 단계의 캐시(13A 내지 13C)에 그 블록이 존재할 수 있는 공간이 작은 단계의 캐시(12A 내지 12F)에 유효한 상태로 존재하는 블록이 차지하는 공간을 제외한 나머지 공간에만 할당되어 있을 수 있기 때문이다.
또한, 다단계 캐시 내포성에 의하여 프로세서(11A 내지 11F)로부터의 메모리 블록 접근이 작은 단계의 캐시(12A 내지 12F)에 존재할 확률이 저하된다. 그 이유는 내포성을 유지하기 위하여 큰 단계의 캐시(13A 내지 13C)에서 블록 대체가 일어날 경우에, 대체되는 블록 주소에 대하여 작은 단계의 캐시(12A내지 12F)에 대한 동일 블록의 축출을 강제하여야 내포성의 성질을 유지할 수 있기 때문이다.
또한, 프로세서(11A 내지 11F)로부터 발생한 쓰기 요구에 대하여, 기록된 내용을 캐시에 저장하고, 공유 메모리(30)에 대한 갱신을 캐시로부터 블록이 축출되는 차후의 시기로 미룰 수 있는, 나중 쓰기(write-back) 방식의 캐시에서는 작은 단계의 캐시(12A 내지 12F)에 저장한 최신의 블록 내용이 큰 단계의 캐시(13A 내지13C)에 알려지지 않는다. 그러나 내포성을 유지하기 위하여 큰 단계의 캐시(13A 내지 13C)는 해당되는 주소의 블록을 반드시 유지하여야 하므로, 큰 단계의 캐시(13A 내지 13C) 블록은 해당되는 주소가 할당되어 있으나 가장 마지막으로 프로세서(11A 내지 11F)로부터 기록된 내용을 담고 있지 못하는 경우가 발생하게 된다. 이러한 경우에, 큰 단계의 캐시(13A 내지 13C)는 최신의 내용이 아니므로, 블록의 내용이 유효하지 않은 경우이나, 내포성을 위하여 블록의 상태를 유효하게 유지하여, 차후 전역 버스(21)로부터 블록에 대한 요청이 발생할 경우, 하위의 캐시(12A 내지 12F)에 대한 검색을 할 수 있도록 하여야 한다. 따라서, 큰 단계의 캐시(13A 내지 13C)는 유효한 내용을 가지지 못하나, 블록을 할당하는 낭비가 발생한다.
따라서, 본 발명의 목적은 접근 목록(access-list)을 구성하고, 접근 목록에 작은 단계의 캐시에 유효한 상태로 존재하는 블록의 정보를 저장하므로써 다단계 캐시 내포성을 제거한 장치를 제공하는데 있다.
이러한 목적을 달성하기 위하여 본 발명은, 프로세서 노드들내에 상위 계층 및 하위 계층의 캐시가 구성되는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치에 있어서, 각 프로세서 노드내에는 접근 목록이 구성되며, 상기 접근 목록은 상기 하위 계층의 캐시내에 저장되는 블록들을 가르키는 상태 정보가 저장되는 것을 특징으로 한다.
본 발명은 공유 메모리 다중 프로세서 구조에서, 프로세서와 공유 메모리 사이에 복수 단계의 캐시가 구성되고, 큰 단계의 캐시와 접근 목록이 구성되며, 프로세서로부터 발생한 메모리 접근 요구에 대하여, 작은 단계의 캐시 및 상위의 상호 연결망을 거쳐 전달되는 모든 요청과 응답에 대하여, 요청과 응답이 이루어지는 메모리 블록의 주소와 명령을 감시하여, 요청 및 응답이 이루어지는 블록이 작은 단계의 캐시에 존재하는가를 판단하고, 작은 단계의 캐시에 블록이 존재하는가의 여부에 따라서 접근 목록의 상태를 설정한다.
접근 목록은, 큰 단계의 캐시와 직접 연결되어 있는 보다 작은 단계의 캐시에 존재하는 모든 블록 주소의 존재 여부를 저장하여, 접근 목록의 정보에 따라 직접 연결된 작은 단계의 캐시 내용을 검색하지 않고도 존재의 가능성을 확인할 수 있도록 한다.
따라서, 큰 단계의 캐시와, 이와 직접 연결된 작은 단계의 캐시간에는 다단계 캐시 내포성을 유지하지 않고서도 접근 목록에 의하여 작은 단계의 캐시에 대하여 스누핑을 수행하여야 할 것인지를 판단할 수 있으며, 내포성의 제거에 의하여 상기 언급된 큰 단계 캐시의 적중률 저하, 상기 언급된 작은 단계 캐시의 적중률 저하, 상기 언급된 큰 단계의 올바르지 않은 내용을 가지는 블록의 유지의 문제점들이 제거된다.
결국, 본 발명은 스누핑 방식으로 큰 단계의 캐시가 작은 단계의 캐시에 존재하는 모든 유효한 상태의 블록을 포함하여야 하는 다단계 캐시 내포성을 제거함으로써, 내포성을 유지하기 위하여 큰 단계의 캐시에서 발생하는 블록 축출에 대하여 작은 단계의 캐시에 대한 동일 주소 블록의 축출을 하여야 하는 문제점을 제거하고, 큰 단계의 캐시에 존재하는 블록과 작은 단계의 캐시에 존재하는 블록간의중복을 감소시켜, 두 캐시 모두의 적중률 향상을 얻으며, 동시에 작은 단계의 캐시에 존재하는 블록의 정보를 접근 목록에 유지시킴으로서, 작은 단계의 캐시 내용에 대한 불필요한 검색을 최소화시키는 효과를 얻는다.
도 1은 일반적인 2 단계 버스 구조의 균등 메모리 접근 공유 메모리 다중 프로세서 장치의 블록도,
도 2는 본 발명에 따른 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치의 블록도,
도 3은 도 2의 구성에서 2 차 캐시 및 접근 목록의 구성 상태를 도시하는 도면,
도 4는 접근 목록의 다른 실시예를 도시한 도면,
도 5는 일반적인 2 단계 버스 구조의 비균등 메모리 접근 공유 메모리 다중 프로세서에 대한 개략 구성도이다.
도 6은 본 발명에 따른 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치의 다른 실시예를 도시한 도면,
도 7, 8은 본 발명에 따른 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치의 또 다른 실시예를 도시한 도면,
도 9는 접근 목록의 다른 실시예를 도시한 도면,
도 10은 본 발명에 따른 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치의 또 다른 실시예를 도시한 도면.
<도면의 주요부분에 대한 부호의 설명>
10A-10F : 프로세서 모듈 11A-11F : 프로세서
12A-12F : 1 차 캐시 13A-13C : 2 차 캐시
20A-20C : 지역 버스 21 : 전역 버스
30 : 공유 메모리 40A-40C 노드 제어기
50A-50C : 접근 목록
100A-100C : 프로세서 노드
이하, 본 발명에 대해 첨부 도면을 참조하여 상세히 설명한다.
도 2 에는 본 발명의 일실시예에 따른 2 단계 캐시를 가지는 스누핑 버스에 기반한 다중 프로세서 시스템이 도시된다.
도 2에서, 각 프로세서 노드(100A 내지 100C)는 스누핑을 사용하는 전역 버스(21)를 통하여 공유 메모리(30)와 연결되어 있다. 또한 프로세서 노드(100A 내지 100C)내에는 프로세서(11A 내지 11F)와 1차 캐시(12A 내지 12F)로 이루어진 다수개의 프로세서 모듈(10A 내지 10F)이 구성되어 있으며, 이 프로세서 모듈(10A 내지 11F)들은 지역 버스(20A 내지 20C)를 통하여 2차 캐시(13A 내지 13C), 노드 제어기(40A 내지 40C) 그리고 접근 목록(50A 내지 50C)과 연결되어 있다.
노드 제어기(40A 내지 40C 예컨데, 40A)는 프로세서 노드(100A)의 프로세서 모듈(10A, 10B)로부터의 메모리 접근 요청에 대응하는 데이터 블록이 2차 캐시(13A)에 유효한 상태로 저장되어 있는지를 검색하여, 유효한 상태로 저장되어 있을 경우, 해당 데이터 블록을 프로세서 모듈(10A, 10B)에 제공하나, 2차 캐시(13A)에 유효한 상태로 저장되어 있지 않을 경우, 전역 버스(21)를 통해 다른 프로세서 노드(100B, 100C)와 공유 메모리(30)로 요청 신호를 전송하는 역할을 한다. 또한 노드 제어기(40A)는 전역 버스(21)를 통해 다른 프로세서 노드(100B,100C)들로부터 메모리 블록 요청이 입력되면, 요청에 대응하는 데이터 블록이 자신의 2차 캐시(13A)에 유효한 상태로 저장되어 있는지를 검색하며, 동시에 접근 목록(50A)에 해당되는 블록의 상태를 검색하여 2차 캐시(13A)와 접근 목록(50A)의 상태에 따라 응답과 1차 캐시(12A, 12B)에 스누핑을 요청할 것인지를 결정한다.
접근 목록(50A 내지 50C 예컨데, 50A)의 상태는, 접근 목록이 존재하는 프로세서 노드(100A) 내의 1차 캐시(프로세서 캐시)(12A, 12B)에 공유 메모리(30) 주소의 블록이 유효한 상태로 존재할 수 있음을 나타내는 '포함됨'(Included)과, 프로세서 캐시(12A, 12B)에 공유 메모리(30) 주소의 블록이 유효한 상태로 존재하지 않음을 보장하는 '포함되지않음'(Excluded)상태를 가진다. 도 3은 접근 목록(50A)의 일실시예로 공유 메모리(30) 전역(전체 번지)에 대하여 블록 크기 단위로 일대일 대응되는 고유 공간을 갖는 메모리로 구성되어, 메모리 블록 주소당 한 비트의 공간이 고정적으로 할당되며, 한 비트를 이용하여 해당 블록 주소에 해당 블록이 프로세서 캐시(12A, 12B)에 '포함되지않음'과 '포함됨' 상태를 나타낼 수 있도록 구성되어 있다.
2차 캐시(13A)의 경우에는 정적인 주소가 아닌 동적인 주소와 블록의 내용 및 상태를 저장하여야 하므로 도 3에 도시된 바와 같이 주소를 저장하기 위한 태그(131A), 블록의 내용을 저장하기 위한 공간(132A), 블록의 상태를 저장하기 위한 공간(133A)이 필요하다. 블록의 상태는 종래와 같이 공유됨, 수정됨, 무효화됨(또는 필요에 따라서는(버클리 방식의 경우에는) 수정되고 공유됨) 등으로 구분할 수 있다.
접근 목록(50A 내지 50C)의 초기 상태는 '포함되지않음'이며 1차 캐시(12A 내지 12F)에 유효한 메모리 블록이 할당됨에 따라서 그 메모리 블록에 해당되는 주소의 상태를 '포함됨'으로 전환한다. 프로세서(11A 내지 11F)로부터의 메모리 블록 요청에 따라서 새로운 블록이 1차 캐시(12A내지 12F)에 할당되어야 할 경우, 새로운 블록의 할당을 위하여 1차 캐시(12A 내지 12F)에 유효한 상태로 존재하는 블록이 축출될 수 있다. 이러한 경우를 상술한 바와 같이 블록 대체라 하며, 블록 대체의 경우에 만일 축출될 블록이 이미 프로세서(11A 내지 11F)로부터 쓰기 접근이 일어났었고(즉, 수정 상태일 때에), 공유 메모리(30)로의 되쓰기의 책임을 가지는 상태의 블록일 경우, 1 차 캐시(12A 내지 12F)로부터 축출과 동시에 축출되는 블록이 2 차 캐시(13A 내지 13C) 또는 공유 메모리(30)에 저장되어야 한다. 이러한 동작을 되쓰기(write-back)라 하며, 되쓰기가 일어날 경우, 해당되는 블록의 접근 목록(50A 내지 50C)의 상태 비트(예를 들면 블록 주소 3번지가 되쓰기 되었을 경우 3번지의 상태 )는 '포함되지않음'으로 전환되어야 한다.
전역 버스로(21)에 어떤 프로세서 노드(예컨데, 100B, 100C들 중의 하나)가 블록을 요청할 경우 프로세서 노드(100A)는 스누핑을 하여야 하고, 해당되는 블록이 접근 목록(50A) 상태(예를 들면 블록 주소 2 번지에 대해 요청되었을 경우 접근 목록(50)내의 2번지의 상태)가 '포함됨'일 경우, 이러한 요청은 지역 버스(20A)를 통하여 1차 캐시(12A, 12B)로 요청되어야 한다.
그러나, 접근 목록(50A)의 2번지의 상태가 '포함됨'임에도 불구하고 해당 블록이 1차 캐시(12A, 12B)에 존재하지 않는 경우에는 차후에 반복되는 블록 주소에해당되는 요청을 1차 캐시(12A, 12B)에 요구하지 않도록 하기 위하여 해당되는 블록의 접근 목록 상태(예를 들면 블록 주소 2 번지에 대해 요청되었을 경우 주소 2번지의 상태)를 '포함되지않음'으로 전환시킨다.
2차 캐시(13A 내지 13C)와 접근 목록(50A 내지 50C)의 동작을 보다 자세히 기술하면, 2차 캐시(13A 내지 13C)와 접근 목록(50A 내지 50C)으로 접근이 발생하는 경로는 두 가지이다. 첫째는 프로세서 노드(예컨데, 100A) 내의 프로세서 모듈(10A, 10B)로부터의 메모리 접근이고, 둘째는 전역 버스(21)를 통해 다른 프로세서 노드(100B, 100C)로부터 발생하는 접근이다.
프로세서 노드(100A)내에서 2차 캐시(13A)나 접근 목록(50A)으로 발생되는 접근은 노드 내의 프로세서(11A, 11B)로부터 발생된 메모리 접근 유형에 따라 읽기, 쓰기, 되쓰기로 분리된다.
읽기 요구의 경우 어떤 프로세서(11A)로부터 프로세서 모듈(10A)내의 1차 캐시(12A)에 요청된 주소의 블록이 실패할 경우(즉 1 차 캐시(12A)에 해당 블록이 존재하지 않거나 무효화된 상태일 경우)에 발생하는 경우로, 2차 캐시(13A)에 요청된 블록이 유효한 상태로 존재할 경우 접근 목록(50A)의 해당 블록 주소의 상태(예를 들면 블록 주소가 2 번지일 경우 2번지)를 '포함됨'으로 전환하고 2차 캐시(13A)가 해당 블록을 프로세서(11A) 및 1차 캐시(12A)에 제공함으로써 응답이 이루어진다.
2차 캐시(13A)에 블록이 유효한 상태로 존재하지 않는 경우에, 노드 제어기(40A)는 전역 버스(21)에 블록의 읽기 요청을 발생시킨다. 전역 버스에 발생된 읽기 요청은 공유 메모리(30) 및 다른 프로세서 노드(100B, 100C)에 방송되고,다른 프로세서 노드(100B, 100C) 내부의 노드 제어기(40B, 40C)에 의해 각각의 2차 캐시(13B, 13C)에 요청된 블록이 유효한 상태로 존재하지 않으며, 각각의 접근 목록(50B, 50C)에 요청된 블록이 '포함되지않음' 상태일 경우에 공유 메모리(30)가 블록을 제공함으로서 응답이 처리된다.
다른 프로세서 노드(100B또는 100C)에 블록이 유효하고 수정된 상태로 존재하는 경우는 그 노드의 2차 캐시(13B 또는 13C)가 유효하고 수정된 상태로 블록을 가지고 있는 경우이거나, 그 노드의 1차 캐시들(12C, 12D, 12E, 12F중의 하나)중의 하나가 유효하고 수정된 상태의 블록을 가지고 있는 경우이므로, 유효하고 수정된 상태의 캐시가 블록을 제공하고 응답을 처리한다. 이와 같이 응답이 이루어지고 요청된 블록이 전역 버스(21)를 경유하여 노드 제어기(40A)의 제어하에 2차 캐시(13A)에 제공되면, 2차 캐시(13A)는 제공된 블록을 할당(131A, 132A, 133A)하고 블록을 요청한 1차 캐시(12A)에 블록을 다시 제공한다. 또한 1차 캐시(12A)에 블록을 제공함과 동시에 해당되는 접근 목록(50A)의 블록 주소 상태를 '포함됨'으로 전환시킨다.
읽기 요구가 전역 버스(21)로 요청될 경우, 읽기 요구를 발생시킨 프로세서 노드(100A)를 제외한 다른 프로세서 노드(100B, 100C)는 전역 버스(21)로부터 읽기 요청을 받는다. 노드 제어기(40B, 40C)는 요청된 블록 주소를 2차 캐시(13B, 13C)와 접근 목록(50B, 50C)에서 검색하며, 2차 캐시(13B, 13C)의 상태와 접근 목록(50B, 50C)의 상태에 따라 요청을 처리한다. 2차 캐시(12B, 12C)에 유효한 블록이 존재하고 응답의 책임이 있을 경우, 접근 목록(50B, 50C)의 상태와 무관하게지역 버스(20B, 20C)를 통한 1차 캐시(12C, 12D, 12E, 12F)의 검색을 수행하지 않으며, 2차 캐시(13B 또는 13C 중 수정된 상태의 캐시)가 요청의 응답을 노드 제어기(40B, 40C)의 제어하에 수행한다. 2차 캐시(13B, 13C)에 유효한 블록이 존재하지 않고 접근 목록(50B, 50C)의 상태가 '포함되지않음'일 경우 노드 제어기(100B, 100C)는 요청의 응답 과정에 참여하지 않으며, 접근 목록(50B, 50C)의 상태가 '포함됨'일 경우 지역 버스(20B, 20C)를 통하여 1차 캐시(12C, 12D, 12E, 12F)에 요청을 전달하고, 1차 캐시(12C, 12D, 12E, 12F)의 블록을 검색한다. 검색 결과, 1차 캐시(12C, 12D, 12E, 12F들중의 하나)의 블록 상태가 응답의 책임이 있을 경우 1차 캐시(12C, 12D, 12E, 12F들중의 하나)에서 요구된 블록을 읽고 지역 버스(20B, 20C)를 통하여 노드 제어기(40B, 40C)의 제어에 따라 전역 버스(21)로 응답을 전송한다. 그러나, 1차 캐시(12C, 12D, 12E, 12F)에 응답의 책임이 있는 블록이 없는 경우에는 응답 과정을 수행하지 않게 된다.
한편, 이 과정에서 1차 캐시(12C, 12D, 12E, 12F)에 요청된 블록이 존재하지 않을 경우, 접근 목록(50B, 50C)의 상태를 '포함되지않음'으로 전환하여 동일한 주소 블록에 해당되는 요청을 더 이상 받아들이지 않도록 한다.
쓰기 요구의 경우, 프로세서 모듈(10A) 내의 1차 캐시(12A)에 쓰기 요청이 발생된 주소의 블록이 유효한 상태로 있을 경우와 있지 않을 경우로 다시 세분화된다.
블록이 1차 캐시(12A)에 유효한 상태로 있을 경우는 다시 여러 캐시에 의해 공유되어 있을 수 있는 경우와 1 차 캐시(12A)에만 유일하게 유효한 블록이 저장되어 있는 경우로 세분되며, 유일한 블록으로 보장될 경우, 2차 캐시(13A)에 대해 요청을 발생시키지 않고 쓰기 요청이 처리 완료된다. 그러나, 공유되어 있을 가능성이 있는 상태로 존재할 경우, 공유된 블록에 대한 시스템 전역적인 무효화를 수행하여야만 쓰기 요구가 완료된다. 따라서, 이 경우에는 지역 버스(20A)에 무효화 요청을 하며, 2차 캐시(13A)는 무효화 요청에 따라서 2차 캐시(13A)의 블록을 무효화하고, 접근 목록(50A)의 상태는 포함됨으로 유지시키고, 노드 제어기(40A)에 의해 전역 버스(21)로 무효화 요청을 요구한다. 전역 버스(21)를 통하여 제공되는 무효화 요청이 제공되면, 공유 메모리(30)와 무효화 요청을 한 프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C)는 무효화 요청에 의해 각각의 2차 캐시(13B, 13C)와 1차 캐시(12C, 12D, 12E, 12F)상의 블록을 무효화시키고, 무효화 요청을 한 프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C)상의 접근 목록(50B, 50C)의 상태를 '포함되지않음'으로 전환시킨다.
쓰기 요구에서 프로세서 모듈(10A) 내의 1차 캐시(12A)에 쓰기 요청이 발생된 주소의 블록이 유효한 상태로 있지 않을 경우, 우선 유효한 블록이 1차 캐시(12A)에 할당되어야 하므로, 지역 버스(20A)를 통하여 쓰기할당(write allocation) 요청을 발생시키고, 이 요청은 다시 2차 캐시(13A)에 제공된다. 이 경우 2 차 캐시(13A)에 해당되는 주소 블록이 존재할 경우와 존재하지 않을 경우로 나뉘어진다. 2차 캐시(13A)에 해당되는 주소 블록이 존재할 경우는 다시 여러 캐시에 블록이 공유되어 있을 수 있는 경우와 2 차 캐시(13A)에만 유일한 블록으로 보장될 경우로 세분된다. 후자의 경우, 2 차 캐시(13A)는 지역 버스(20A)를 통하여블록을 1차 캐시(12A)에 제공하고 2차 캐시(13A)의 블록을 무효화하며, 접근 목록(50A)의 상태를 포함됨으로 설정하는 것으로 쓰기 요구가 종료된다. 2차 캐시(13A)에 해당되는 블록이 존재하며 여러 캐시에 블록에 공유되어 있을 수 있는 전자의 경우는, 노드 제어기(40A)에 의해 전역 버스(21)로 무효화 요청이 요구된다. 전역 버스(21)로 무효화 요청이 제공되면, 공유 메모리(30)와 무효화 요청을 한 프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C)는 무효화 요청에 의해 각각의 2차 캐시(13B, 13C)와 1 차 캐시(12C, 12D, 12E, 12F)상의 블록을 무효화시키고, 무효화 요청을 한 프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C)상의 접근 목록(50B, 50C)의 상태를 '포함되지않음'으로 전환하며, 쓰기 요구를 발생시킨 프로세서 노드(100A)의 2차 캐시(13A)가 지역 버스(20A)를 통하여 블록을 1차 캐시(12A)에 제공하고 2차 캐시(13A)의 블록을 무효화하며, 접근 목록(50A)의 상태를 포함됨으로 설정하는 것으로 쓰기 요구가 종료된다.
쓰기 요구에서 요청을 발생시킨 프로세서 모듈(10A) 내의 1차 캐시(12A)에 해당되는 주소의 블록이 존재하지 않고, 지역 버스(20A)를 통하여 요청된 쓰기할당 요구가 2차 캐시(13A)에도 해당되는 주소 블록이 존재하지 않을 경우, 노드 제어기(40A)는 쓰기할당 요구를 전역 버스(21)로 요구한다. 전역 버스(21)를 통하여 쓰기할당 요구를 전달받은 공유 메모리(30) 및 요청을 발생시킨 프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C)는 공유 메모리(30) 또는 2차 캐시(13B, 13C) 또는 1차 캐시(12C, 12D, 12E, 12F) 중 응답의 책임을 지는 유일한 장치에 의하여 응답이 처리되어 해당 블록을 전송한다. 동시에, 요청을 발생시킨프로세서 노드(100A)를 제외한 모든 프로세서 노드(100B, 100C), 2차 캐시(13B, 13C)와 1차 캐시(12C, 12D, 12E, 12F)는 해당되는 블록을 무효화하고, 접근 목록(50B, 50C)을 '포함되지않음'으로 설정한다. 쓰기할당 요구를 발생시킨 노드(100A)가 전역 버스(21)를 통하여 블록을 전송받게 되면 노드 제어기(40A)는 전송받은 블록을 지역 버스(21A)를 통하여 1차 캐시(12A)에 할당하고, 접근 목록(50A)의 상태를 '포함됨'으로 설정한다.
쓰기 요구에 의하여 전역 버스(21)로부터 프로세서 노드(100A, 100B, 100C)로 요구되는 명령은 상기 기술한 바와 같이 무효화 요구와 쓰기할당 요구가 있다. 무효화 요구일 경우 노드 제어기(40A, 40B, 40C)는 해당되는 블록 주소를 2차 캐시(13A, 13B, 13C)에서 무효화시키며, 접근 목록(50A, 50B, 50C)의 상태를 검색한다. 접근 목록(50A, 50B, 50C)의 상태가 포함됨일 경우, 노드 제어기(40A, 40B, 40C)는 지역 버스(20A, 20B, 20C)를 통하여 무효화 요구를 발생시켜 1차 캐시(12A 내지 12F)의 해당되는 블록을 무효화시키며, 접근 목록(50A, 50B, 50C)의 상태를 '포함되지않음'으로 전환한다.
쓰기 요구에 의하여 전역 버스로(21)부터 프로세서 노드(100A, 100B, 100C)로 요구되는 명령이 쓰기할당 요구일 경우 노드 제어기(40A, 40B, 40C)는 해당되는 블록을 2차 캐시(13A, 13B, 13C)에서 검색하고 그 상태가 응답의 책임이 있을 경우, 블록을 전역 버스(21)로 전송하며, 동시에 접근 목록(50A, 50B, 50C)의 상태를 검색하여 '포함됨'일 경우, 지역 버스(20A, 20B, 20C)를 통하여 무효화 요구를 발생시키고, 접근 목록(50A, 50B, 50C)의 상태를 포함되지 않음으로 전환시킨다.
쓰기 요구에 의하여 전역 버스(21)로부터 프로세서 노드(100A, 100B, 100C)로 요구되는 명령이 쓰기할당 요구일 경우 노드 제어기(40A, 40B, 40C)는 해당되는 블록을 2차 캐시(13A, 13B, 13C)에서 검색하고 그 상태가 응답의 책임이 있지 않을 경우 2차 캐시의 블록을 무효화시키고, 동시에 접근 목록(50A, 50B, 50C)의 상태를 검색하여 '포함됨'일 경우, 지역 버스(20A, 20B, 20C)를 통하여 쓰기할당 요구를 발생시킨다. 지역 버스(20A, 20B, 20C)에 요구된 쓰기할당 요구에 의하여 1차 캐시(12A 내지 12F) 블록이 검색되고, 그 상태가 응답의 책임을 지는 경우, 지역 버스(20A, 20B, 20C)를 통하여 응답이 이루어지고, 1차 캐시(12A 내지 12F) 상태를 무효화하게 되며, 다시 노드 제어기(40A, 40B, 40C)에 의해 접근 목록(50A, 50B, 50C)의 상태를 '포함되지않음'으로 전환하며 노드 제어기(40A, 40B, 40C)에 의해 전역 버스(21)로 블록을 전송한다. 만일, 지역 버스(20A, 20B, 20C)에 발생된 쓰기할당 요구에 의해 검색된 1차 캐시(12A 내지 12F) 블록이 응답 책임이 없는 상태일 경우 1차 캐시(12A 내지 12F) 블록을 무효화하고 접근 목록(50A, 50B, 50C)의 상태를 '포함되지않음'으로 전환한다.
쓰기 요구에 의하여 전역 버스(21)로부터 프로세서 노드(100A, 100B, 100C)로 요구되는 명령이 쓰기할당 요구일 경우 노드 제어기(40A, 40B, 40C)는 해당되는 블록을 2차 캐시(13A, 13B, 13C)에서 검색하고 블록이 존재하지 않을 경우, 동시에, 접근 목록(50A, 50B, 50C)의 상태를 검색하여 '포함됨'일 경우, 지역 버스(20A, 20B, 20C)를 통하여 쓰기할당 요구를 발생시킨다. 지역 버스에 요구된 쓰기할당 요구에 의하여 1차 캐시(12A 내지 12F)에서 블록이 검색되고, 그 상태가응답의 책임을 지는 경우, 지역 버스(20A, 20B, 20C)를 통하여 응답이 이루어지고, 1차 캐시(12A 내지 12F) 상태를 무효화하게 되며, 다시 노드 제어기(40A, 40B, 40C)에 의해 접근 목록의 상태를 '포함되지않음'으로 전환하며 노드 제어기에 의해 전역 버스(21)로 블록을 전송한다. 만일, 지역 버스(20A, 20B, 20C)에 발생된 쓰기할당 요구에 의해 검색된 1차 캐시 블록이 응답 책임이 없는 상태일 경우 1차 캐시 블록을 무효화하고 접근 목록(50A, 50B, 50C)의 상태를 '포함되지않음'으로 전환한다.
쓰기 요구에 의하여 전역 버스(21)로부터 프로세서 노드(100A, 100B, 100C)로 요구되는 명령이 무효화 요구일 경우 2차 캐시(13A, 13B, 13C)에 블록이 존재하면 무효화하고, 동시에, 접근 목록(50A, 50B, 50C)의 상태를 검색하여 '포함됨'일 경우 지역 버스(20A, 20B, 20C)에 무효화 요구를 하여 1차 캐시(12A 내지 12F)의 블록을 무효화시키며 접근 목록(50A, 50B, 50C)의 상태를 '포함되지않음'으로 전환한다.
되쓰기(write-back) 요구가 1차 캐시(12A)로부터 발생할 경우 발생한 되쓰기는 2차 캐시(13A)에 할당하고 되쓰기에 대한 책임을 가지도록 하고 접근 목록(50A)의 상태를 포함되지 않음으로 변경한다. 즉, 일반적인 블록 대체가 발생할 경우에는 1차 캐시(12A)에서 가장 오래 쓰지 않았던 블록을 삭제하나, 삭제할 블록의 상태가 수정됨인 경우에 이 블록(수정된 블럭)을 삭제할 수 없는 바, 2 차 캐시(13A)에 기록하고, 1차 캐시(12A)내에서는 삭제한 후에 접근 목록(50A)의 상태를 포함되지 않음으로 변경하는 것이다. 한편, 버클리 방식의 경우에는 캐시가 수정되고 공유된 상태를 가질 수 있으며, 되쓰기할 블록이 수정되며 공유됨이라는 상태를 가지고 있는 경우에는 이 블록에 대하여 다른 캐시가 공유하고 있음을 의미하므로, 이 경우에는 1차 캐시(12A)내에서 해당 블록을 삭제하고, 접근 목록(50A)의 상태를 '포함됨'으로 유지한다. 이는 버클리 방식에서 수정되고 공유된 상태의 경우 동일 프로세서 노드(100A)내의 다른 1차 캐시(12B)에 해당 블록이 공유됨 상태로 있을 수 있으므로, 이 경우 접근 목록이 '포함되지않음' 상태로 전이되면 접근 목록의 상태 의미와 달리 1차 캐시(12B)에 해당되는 블록이 있을 수 있기 때문이다. 한편, 동일 프로세서 노드(100A) 내의 다른 1차 캐시(12B)에 해당 블록이 유효한 상태로 존재하지 않는 경우, 프로세서 노드 내의 모든 1차 캐시(12A, 12B)에 해당되는 블록이 유효한 상태로 있지 않음에도 불구하고 접근 목록(50A)의 상태가 '포함됨'으로 유지되는데, 이 경우에 접근 목록의 '포함됨' 상태의 의미(블록이 유효한 상태로 존재할 수 있음)에 어긋나지 않는다. 한편, 버클리 방식의 경우에 해당 블록이 수정 상태인 경우에는 일반적인 경우와 마찬가지로 2차 캐시(13A)에 해당 블록을 기록하고, 접근 목록(50A)의 상태를 '포함되지않음'으로 전환한다. 이는 수정 상태의 경우, 유일하고 유효한 블록임이 보장되기 때문이다.
전역 버스(30)에 되쓰기 요청이 발생될 경우, 프로세서 노드(100A, 100B 100C)는 스누핑에 참가하지 않으며 공유 메모리(30)로 블록을 전송하므로써 명령이 완료된다.
전역 버스(21)에 발생하는 메모리 접근 요청은 읽기와 쓰기로 나누어 볼 수 있다. 쓰기의 경우, 시스템 내의 모든 캐시에 대하여 일관성 유지를 위하여 쓰기가알려져야만 함에 반하여, 읽기의 경우 응답의 책임을 가지는 유효하고 수정된 상태의 캐시에 읽기 요청이 전달되면 일관성을 유지할 수 있다. 앞서 서술한 바와 같이, 접근 목록(50A 내지 50C)의 상태를 '포함됨'과 '포함하지않음' 두 가지로 유지할 경우, 1차 캐시(12A 내지 12F)에 유효한 상태의 블록이 존재하는가의 여부는 알 수 있으나, 1차 캐시(12A 내지 12F)에 존재하는 블록이 유효하고 수정된 상태의 블록이 존재하는가의 여부는 제공하지 않는다. 따라서 전역 버스(21)에 발생한 모든 읽기 요구는 접근 목록(50A 내지 50C)의 상태가 '포함됨'인 모든 프로세서 노드(100A 내지 100C)의 1차 캐시(12A 내지 12F)에서 검색되어야 하고, 그 중에 유효하고 수정된 상태의 캐시가 읽기 요청에 대한 응답을 하게 된다.
접근 목록(50A 내지 50C)의 상태를 앞서 서술한 바와 같이 포함 여부에 따르는 상태와 별도로, 유효하고 수정된 상태가 1차 캐시(12A 내지 12F)에 존재함을 알 수 있도록, 도 4와 같이 '수정됨' 상태를 추가할 수 있으며, 이 경우, 전역 버스(21)에 발생한 읽기 요청은 접근 목록의 상태가 '포함됨'인 모든 프로세서 노드(100A 내지 100C)의 1차 캐시(12A 내지 12F)에서 검색되지 않을 수 있으며, 접근 목록(50A 내지 50C)의 상태가 '수정됨'인 프로세서 노드의 1차 캐시(12A 내지 12F)에서만 검색되고, 이 캐시가 읽기 요청에 대한 응답을 하게 된다. 이와 같이 접근 목록(50A 내지 50C)의 상태에 '수정됨'을 부가할 경우, 상태가 늘어남에 따라 상태의 저장을 위한 공간 확장이 필요하나, 읽기 요청에 따른 검색 대상이 되는 1차 캐시(12A 내지 12F)의 수를 줄일 수 있으며, 따라서 지역 버스(20A 내지 20C)의 부하를 경감시킬 수 있다.
캐시 일관성 유지를 위한 프로토콜은 바로쓰기(write-through) 방식의 프로토콜과 나중쓰기(write-back)방식의 프로토콜로 크게 나누어 볼 수 있다. 바로쓰기 방식의 프로토콜은 프로세서(11A 내지 11F)로부터의 모든 메모리 접근에 대한 응답 책임을 공유 메모리(30)가 지는 형태로서, 프로세서(11A 내지 11F)로부터 쓰기가 발생하였을 경우, 공유 메모리(30) 및 동일 주소 블록을 가진 모든 캐시에 쓰기가 일어난 내용으로 블록 내용들을 즉시 갱신한다. 따라서, 바로쓰기 방법의 프로토콜은 나중쓰기 방법의 프로토콜에 비하여 비교적 낮은 성능을 보이는 것이 일반적이다.
나중쓰기 방법의 프로토콜은 write-once, Synapse, Berkeley, Illinois, read-broadcast 프로토콜과 그 수정된 형태가 일반적으로 쓰인다. 이들 프로토콜과 그 변형된 형태들은 상태의 차이와 각 상태에 따른 캐시 블록의 상태를 쓰기가 발생하였을 때와 읽기가 발생하였을 때의 동작의 차이가 발생하기는 하나 공통적으로 쓰기에 대한 권한 및 응답의 책임에 대한 관계를 나타내는 것으로, 다단계 캐시 내포성을 유지하는 경우에 본 발명에서 제안한 접근 목록을 적용할 수 있다. .
또한 메모리 접근 시간이 일정한 균등 메모리 접근 공유 메모리 다중 프로세서 구조 뿐 아니라 비균등 메모리 공유 메모리 다중 프로세서 구조(Non-Uniform Memory Access, NUMA)의 경우도 프로세서와 메모리 사이에 동일한 캐시 계층이 형성되므로 본 발명이 동일하게 적용될 수 있음은 자명하다.
도 5 는 비균등 메모리 접근 공유 메모리 다중 프로세서로서, 각 프로세서 노드(100A, 100B, 100C)에 지역 메모리(30A, 30B, 30C)로 공유 메모리가 분할되어있는 구조이다. 이 경우에, 어떤 프로세서(11A)로부터의 메모리 접근이 발생하게 되면, 발생된 메모리 접근은 그 주소 영역에 따라서 지역 메모리(30A) 영역과 원격 메모리(30B, 30C) 영역으로 구별된다. 발생된 메모리 접근 주소가 지역 메모리(30A) 영역일 경우, 이러한 접근은 원격 메모리(30B, 30C) 영역에 비하여 짧은 메모리 접근 시간을 가지게 되고, 상대적으로 원격 메모리 접근 시간이 길어지는 효과가 나타나게 되므로, 이러한 경우에 노드 내의 가장 큰 단계의 캐시는 원격 캐시(13A) 형태로 유지된다. 지역 메모리 접근 시간에 비하여 상당히 긴 지연시간을 유발하는 원격 메모리 접근을 최소한 줄이기 위하여, 원격 캐시(13A 내지 12C)는 지역 메모리(30A 내지 30C) 주소를 담지 않도록 유도되며, 따라서 원격 캐시(13A)와 프로세서 모듈(10A) 내의 프로세서 캐시(12A, 12B) 사이에 발생하는 다단계 캐시 내포성은 원격 메모리 주소 영역에 대해서만 유지된다.
도 6은 도 5의 비균등 메모리 접근 공유 메모리 다중 프로세서 구조에 본 발명에서 제시한 접근 목록(50A 내지 50C)이 적용된 경우로서, 각 프로세서 노드(100A, 100B, 100C)에 접근 목록(50A, 50B, 50C)이 추가되고, 접근 목록(50A, 50B, 50C들중 예컨데 50A)의 상태는 지역 메모리(30A)를 제외한 원격 메모리(30B, 30C) 블록 주소에 대해서만 유지한다. 즉, 접근 목록(50A)은 1 차 캐시(12A,12B)내에 저장된 블록들 중에서 원격 메모리(30B, 30C)에 저장되는 블록들의 상태에 대해서만 1 차 캐시(12A,12B)내에 유효하게 저장되어 있는지를 나타내는 것이다. 따라서 전역 버스(21)에 스누핑 요구가 발생하였고, 그 주소 영역이 특정 노드(100A)의 지역 메모리(30A)에 해당될 경우, 그 노드(100A)의 노드 제어기(40A)는 발생된 요청의 주소를 판별하고, 그 주소 영역이 해당 노드(100A)의 지역 메모리(30A)에 해당되면, 접근 목록(50A)에 대한 검색을 수행하지 않고, 지역 버스(20A)에 대한 요청을 발생시키며, 프로세서 캐시(12A, 12B)에 대한 검색을 수행하고, 그 결과에 따른 동작한다. 즉, 특정 노드(100A)의 지역 메모리(30A) 주소 영역에 대한 전역 버스(21)로부터의 요청에 대하여서는, 해당 노드(100A)는 원격 캐시(13A)와 접근 목록(50A)이 존재하지 않는 경우와 동일하게 작동한다.
도 7 은 비균등 메모리 접근 공유 메모리 다중 프로세서 구조에서 노드(100A 내지 100F)간 연결 구조로써, 버스가 아닌 점 대 점 연결 구조를 이용한 고리 형태로 이루어진 경우이다. 본 발명은 상호 연결망 구조에 의해 제한 받는 것이 아니므로, 프로세서(10A,10B)와 공유 메모리(30A)간의 접근 경로에 다단계의 캐시가 구성되며 앞서 언급한 바와 같이, 프로세서(11A,11B)에 가까운 작은 단계의 캐시(12A,12B)의 내용이 보다 큰 단계의 캐시(13A, 13B)에 포함되어야 하는 다단계 캐시 내포성을 유지하여야 경우에 상술한 바와 같이 동일하게 적용될 수 있다.
도 8 은 비균등 메모리 접근 공유 메모리 다중 프로세서 구조에서 노드간 연결 구조로써, 버스가 아닌 이중 점 대 점 연결 구조를 이용한 이중 고리 형태로 이루어진 경우로서, 본 발명은 상호 연결망 구조에 의해 제한 받지 않으며, 프로세서(11A, 11B)와 공유 메모리(30A)간의 접근 경로에 다단계의 캐시가 구성되며 앞서 언급한 바, 프로세서(11A, 11B)에 가까운 작은 단계의 캐시(12A, 12B)의 내용이 보다 큰 단계의 캐시(13A)에 포함되어야 하는 다단계 캐시 내포성을 유지하여야 할 때에 접근 목록(50A)을 이용하는 본 발명을 상술한 바와 같이 동일하게 적용될 수 있다.
도 9는 접근 목록의 저장 구조를 도 3 과 같은 고정된 블록 주소를 할당한 것이 아닌, 가변적인 블록 주소를 할당할 수 있는 형태로 확장한 것으로, 블록 주소의 저장을 위한 공간 확보가 필요하나, 공유 메모리 전역에 대한 상태를 유지하지 않을 수 있으므로, 접근 목록의 크기를 축소시킬 수 있다. 접근 목록에 저장되지 않는 주소의 상태는 '포함되지않음'으로 간주된다.
도 9에서는 접근 목록의 저장 구조를 가변적인 블록 주소를 할당할 수 있는 형태로 확장하고, 하나의 접근 목록 단위 저장 공간(150A, 151A, 152A, ...)이 가변적인 크기의 메모리 블록의 포함 상태를 나타낼 수 있도록 주소 공간과, 블록 크기를 나타낼 수 있는 공간을 추가한 것이다. 이 경우에, 접근 목록의 상태는 대응되는 메모리 블록들 중 하나 이상을 1차 캐시가 저장하고 있을 경우, '포함됨'으로 유지하게 된다.
또한, 접근 목록은 작은 단계 캐시에 대한 큰 단계의 내포성을 제거할 수 있으므로, 이러한 작은 단계에 보다 작은 단계의 캐시가 구성되거나, 큰 단계의 캐시에 보다 큰 단계의 캐시가 구성될 경우에도 동일하게 적용할 수 있음은 자명하다. 도 10은 프로세서 노드(100A, 내지 100E)내부의 프로세서 모듈(10A 내지 10D)에 캐시의 단계를 한층 늘리고, 프로세서 노드 외부에도 4차 캐시(15A)와 3 단계 버스(22)를 부가하여 구성한 실시예이다. 이 경우에 2차 캐시(13A)와 3차 캐시(14A) 사이에는 다단계 캐시 내포성이 유지되지 않으며 2차 캐시(13A)에 존재하는 모든 메모리 블록은 접근 목록(50A)에 '포함됨'상태로 유지된다.
이상 설명한 바와 같이 본 발명은 특정 캐시 일관성 프로토콜에 직접 관련되어 있지 않고, 모든 스누핑 기반의 프로토콜에 적용시킬 수 있으며, 모든 스누핑 기반의 프로토콜에서 스누핑 하여야 할 캐시의 갯수를 줄이기 위하여 사용되는 다단계 캐시 내포성을 유지하지 않으면서도 스누핑 하여야 할 캐시의 갯수를 접근 목록의 정보에 의하여 줄일 수 있다.
또한, 본 발명은 다단계 캐시 내포성에 의하여 큰 단계의 캐시가 작은 단계의 캐시에 존재하는 블록을 모두 포함하여야 함에 따른 큰 단계와 작은 단계의 캐시에 존재하는 블록 중복에 의한 큰 단계의 캐시 적중률 저하를 감소시키는 효과가 있다.
또한, 본 발명은 큰 단계의 블록 축출이 발생될 때 작은 단계의 캐시에 존재하는 동일 주소 블록에 대한 블록 축출이 발생하고, 이러한 작은 단계의 캐시에 요구된 블록 축출에 의하여 작은 단계의 캐시 적중률을 하락되는 문제점을 제거할 수 있는 효과가 있다.
Claims (11)
- 프로세서 노드들내에 상위 계층 및 하위 계층의 캐시가 구성되는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치에 있어서,각 프로세서 노드내에는 접근 목록이 구성되며, 상기 접근 목록은 상기 하위 계층의 캐시내에 저장되는 블록들을 가르키는 상태 정보가 저장되는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 1 항에 있어서,상기 접근 목록은 상기 공유 메모리내 블록 번지와 동일한 개수의 주소를 구비하며, 상기 하위 계층의 캐시내에 저장되어 있는 블록의 공유 메모리 주소에 대응하는 접근 목록의 주소에 해당 블록이 저장되어 있음을 알리는 정보를 저장하도록 구성된 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 2 항에 있어서,상기 접근 목록은 상기 공유 메모리내 블록 번지와 동일한 개수의 주소를 구비하며, 상기 하위 계층의 캐시내에 저장되어 있는 블록의 공유 메모리 주소에 대응하는 접근 목록의 주소에 해당 블록이 저장되어 있음을 알리는 정보 및 해당 블록의 수정 여부를 알리는 정보를 더 저장함을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 1 항에 있어서,상기 접근 목록은 상기 하위 계층의 캐시내에 저장되어 있는 블록의 공유 메모리내 주소 정보를 저장하도록 구성된 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 4 항에 있어서,상기 접근 목록은 상기 하위 계층의 캐시내에 저장되어 있는 블록의 공유 메모리내 주소 정보, 블록의 크기 정보 및 블록의 수정 여부 정보를 저장하도록 구성되는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 1 항 내지 제 5 항중 어느 한 항에 있어서,상기 공유 메모리 다중 프로세서 장치는, 균등 메모리 접근 시간(Uniform Memory Access, UMA) 방식임을 특징으로 하는 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 1항 내지 제 5 항중 어느 한 항에 있어서,상기 공유 메모리 다중 프로세서 장치는 비균등 메모리 공유 메모리 다중 프로세서 구조(Non-Uniform Memory Access, NUMA) 방식임을 특징으로하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 6 항에 있어서,상기 프로세서 노드간의 연결은 버스로 이루어지는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 7 항에 있어서,상기 프로세서 노드간의 연결은 버스로 이루어지는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 6 항에 있어서,상기 프로세서 노드간의 연결은 점 대 점 연결 구조를 이용하는 고리형으로 이루어 지는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
- 제 7 항에 있어서,상기 프로세서 노드간의 연결은 점 대 점 연결 구조를 이용하는 고리형으로 이루어 지는 것을 특징으로 하는 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000006953A KR100344065B1 (ko) | 2000-02-15 | 2000-02-15 | 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000006953A KR100344065B1 (ko) | 2000-02-15 | 2000-02-15 | 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010083446A true KR20010083446A (ko) | 2001-09-01 |
KR100344065B1 KR100344065B1 (ko) | 2002-07-24 |
Family
ID=19646431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000006953A KR100344065B1 (ko) | 2000-02-15 | 2000-02-15 | 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100344065B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100354467B1 (ko) * | 1999-10-19 | 2002-09-30 | 가부시끼가이샤 도시바 | 계층 구조를 갖는 공유 버스형 병렬 계산기 |
US9323717B2 (en) | 2011-09-19 | 2016-04-26 | Samsung Electronics Co., Ltd. | Processor and system for processing stream data at high speed |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5136700A (en) * | 1989-12-22 | 1992-08-04 | Digital Equipment Corporation | Apparatus and method for reducing interference in two-level cache memories |
-
2000
- 2000-02-15 KR KR1020000006953A patent/KR100344065B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100354467B1 (ko) * | 1999-10-19 | 2002-09-30 | 가부시끼가이샤 도시바 | 계층 구조를 갖는 공유 버스형 병렬 계산기 |
US9323717B2 (en) | 2011-09-19 | 2016-04-26 | Samsung Electronics Co., Ltd. | Processor and system for processing stream data at high speed |
Also Published As
Publication number | Publication date |
---|---|
KR100344065B1 (ko) | 2002-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100491435B1 (ko) | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 | |
US6289420B1 (en) | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem | |
US7814286B2 (en) | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer | |
US5394555A (en) | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory | |
US6088769A (en) | Multiprocessor cache coherence directed by combined local and global tables | |
JP4966205B2 (ja) | 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測 | |
US20070079072A1 (en) | Preemptive eviction of cache lines from a directory | |
US5809536A (en) | Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache | |
US8806147B2 (en) | System and method for creating ordering points | |
US6560681B1 (en) | Split sparse directory for a distributed shared memory multiprocessor system | |
US11556471B2 (en) | Cache coherency management for multi-category memories | |
US6625694B2 (en) | System and method for allocating a directory entry for use in multiprocessor-node data processing systems | |
US7308538B2 (en) | Scope-based cache coherence | |
US7143245B2 (en) | System and method for read migratory optimization in a cache coherency protocol | |
CN115203071A (zh) | 默认共享状态缓存一致性协议的应用 | |
US7725660B2 (en) | Directory for multi-node coherent bus | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
KR100344065B1 (ko) | 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치 | |
US6961827B2 (en) | Victim invalidation | |
US20050160235A1 (en) | System and method for non-migratory requests in a cache coherency protocol | |
KR100281465B1 (ko) | 분산된공유메모리구조의다중프로세서장치 | |
US12093177B2 (en) | Multi-level partitioned snoop filter | |
JP2003316756A (ja) | 分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法 | |
JP2001034597A (ja) | キャッシュメモリ装置 |
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: 20120622 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |