KR100576099B1 - 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 - Google Patents
적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 Download PDFInfo
- Publication number
- KR100576099B1 KR100576099B1 KR1020030053839A KR20030053839A KR100576099B1 KR 100576099 B1 KR100576099 B1 KR 100576099B1 KR 1020030053839 A KR1020030053839 A KR 1020030053839A KR 20030053839 A KR20030053839 A KR 20030053839A KR 100576099 B1 KR100576099 B1 KR 100576099B1
- Authority
- KR
- South Korea
- Prior art keywords
- state
- cache
- line size
- split
- shared memory
- Prior art date
Links
Images
Classifications
-
- 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/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
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)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치에 관한 것으로, 분산된 공유 메모리 구조의 다중 프로세서 방식에서 각 응용 프로그램별 메모리 접근에서 나타난 패턴의 변화를 추적하여 다음에 재차 참조 될 경우 읽어 들이는 데이터의 양을 동적으로 변화시킴으로써, 각각의 서로 다른 응용 프로그램의 상이한 메모리 접근 패턴과 시스템 원격 캐쉬의 특정 구조와의 상호 관계에 대한 제약을 받지 않으면서 최적의 상호 관계 하에서의 수행된 결과와 유사한 성능을 제공하는 효과가 있다.
Description
도 1은 종래 기술의 일반적인 균등 메모리 접근 시간을 가지는 공유 메모리 다중 프로세서 장치의 구성도,
도 2는 종래 기술의 일반적인 원격 캐쉬 구조를 포함하는 분산된 공유 메모리 구조 다중 프로세서 장치의 구성도,
도 3은 본 발명에 따른 적응형 원격 캐쉬 구조를 포함한 분산된 공유 메모리 구조의 다중 프로세서 장치의 구성도,
도 4는 메모리와 원격 캐쉬간의 데이터 전송량에 따른 원격 캐쉬 라인 사이즈의 변화를 도시한 도면,
도 5는 본 발명에 따른 원격 캐쉬의 참조 패턴과 원격 캐쉬의 라인 사이즈의 상태 변환을 도시한 도면,
도 6은 본 발명에 따른 다중 그레인 원격 캐쉬의 구성도,
도 7은 본 발명에 따른 다중 그레인 원격 캐쉬 내의 라인 사이즈 결정자의 구성도,
도 8은 본 발명에 따른 라인 사이즈 결정자 내의 참조 패턴 테이블의 실시예를 도시한 도면,
도 9는 본 발명에 따른 라인 사이즈 결정자 내의 스프리트/머지 카운터의 상태 변환 실시예를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
100A 내지 100E : 노드 110A, 110B : 프로세서 노드
140 : 지역 공유 메모리 141, 142, 143 : 원격 메모리
160 : 노드 제어기 170 : 링크 제어기
180 : 디렉토리 190 : 태그
200 : 원격 캐쉬 210A 내지 210D : 캐쉬 모듈
220 : 다중화기 300 : 라인 사이즈 결정자
310 : 참조 패턴 테이블 320 : 라인 사이즈 지정자
330 : 스프리트/머지 카운터
본 발명은 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치에 관한 것으로, 더욱 상세하게는 원격 캐쉬 상에서 응용 프로그램의 메모리 참조 패턴의 특성을 실행 시간 중에 동적으로 추적하여 원격 캐쉬의 라인 사이즈를 가상적으로 변화시킬 수 있는 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치에 관한 것이다.
일반적으로, 단일 주소 공간(single address space)과 일관성(coherence)이 유지되는 캐쉬(cache)를 가지는 대규모 공유 메모리 다중 프로세서 시스템(shared memory multiprocessor system)은 유동적이고도 강력한 연산 환경을 제공한다. 즉, 단일 주소 공간과 일관성이 유지되는 캐쉬는 데이터 분할(data partitioning) 및 동적 부하 균형(dynamic load balancing) 문제를 쉽게 하고, 병렬 컴파일러 및 표준 운영 체제, 멀티프로그래밍(multiprogramming)을 위한 더 나은 환경을 제공하여, 보다 유동적이고 효과적으로 기계를 사용할 수 있게 한다.
도 1은 이러한 공유 메모리 다중 프로세서 시스템의 한 예로서, 균등 메모리 접근 시간(Uniform Memory Access, UMA) 방식이 도시되어 있다.
도시된 바와 같이 UMA 구조의 다중 프로세서 시스템은, 단일 공유 메모리(120)를 구비하며, 단일 공유 메모리(120)는 전역 버스(130)를 통하여 다수개의 프로세서 노드(110A,…,110B)에 연결되어 있다. 프로세서 노드(110A,…,110B) 내에는 프로세서(111)와 1차 캐쉬(112) 및 2차 캐쉬(113)들이 구성되며, 2차 캐쉬(113)들은 지역 버스(135)를 통하여 전역 버스(130)에 연결되어 있다. 도면 중 미설명 부호 125는 I/O 브리지이다.
상술한 구성을 갖는 UMA 방식에서는 공유 메모리(120)보다 용량은 작으나 훨씬 빠른 접근 시간(access time)을 제공하는 1차 및 2차 캐쉬(112,113)들을 채용함으로써 프로세서간의 상호 연결망, 즉 전역 버스(130)에 발생하는 요청 및 응답 횟수를 줄이고 프로세서(111)로부터의 메모리 접근 요청에 대한 작은 지연 시간(Latency)을 제공한다.
하지만, 단일 공유 메모리(120)로의 접근이 항상 동일한 일정 지연 시간이 소요된다는 점과 특정 순간에 메모리 접근이 집중되면 메모리 병목현상(Bottleneck)으로 인해 시스템의 전체 성능이 급격하게 떨어지는 문제를 가지게 되는 등 시스템의 확장성과 성능 면에서의 한계를 보이게 된다.
이러한 UMA 시스템의 병목현상과 확장성의 문제를 해결한 것으로, 비 균등 메모리 접근 시간(Non Uniform Memory Access, NUMA) 방식이 도 2에 도시되어 있다.
도 2에 도시된 NUMA 구조의 다중 프로세서 시스템은, UMA 방식에서 나타났던 단일 공유 메모리(도 1의 120)의 병목현상으로 인한 단점을 극복하고자 메모리를 지역적으로 분산시킨 지역 공유 메모리(140)를 구비한다. 이는 프로세서 노드(110A,…,110B)를 포함하는 각각의 노드(100A 내지 100E)들을 기준으로 볼 때 각각의 지역 공유 메모리(140)들이 네트워크(101)를 통해 상이한 거리로 연결됨에 따라 가깝게 할당된 지역 메모리로의 접근시간은 상대적으로 먼 거리에 할당된 지역 메모리로의 접근시간에 비해 짧은 지연 시간을 갖게 된다.
하지만, UMA 방식에 비해 NUMA 방식에서는 외부 노드의 지역 공유 메모리(원격 메모리)를 참조하는 경우, 원격 메모리에 대한 응답 지연을 줄이고 네트워크(101)의 트래픽을 감소시키는 것이 시스템의 성능 향상을 위한 필수 조건이다. 가령 도 2의 프로세서 노드(110A,…,110B)가 외부 노드(100E)의 원격 메모리(141)를 참조하는 경우, 원격 메모리(141)에 대한 접근으로 인해 응답 시간이 증가한다. 이는 NUMA 방식의 중요한 특징으로서, 원격 캐쉬(Remote Access Cache, RAC)의 필요성을 제기한 동기 부여이기도 하다. 이로서 원격 메모리(141,142,143)의 접근을 최소화하기 위해 지역 공유 메모리(140)의 영역이 아닌 원격 메모리(141,142,143)의 영역만을 캐싱하는 원격 캐쉬(150)가 도입되었다. 그 결과 원격 캐쉬(150)를 가지는 NUMA 구조 다중 프로세서 시스템 방식은 여타의 다중 프로세서 시스템 방식에 비하여 높은 성능과 구현상의 용이성을 가지게 되었다.
한편, 노드 제어기(160)는 각각의 프로세서 노드(110A,…,110B)로부터의 데이터 요청 신호에 대응하는 명령어나 데이터를 포함하는 블록(이하, "데이터 블록"이라 명명함)이 원격 캐쉬(150)나 지역 공유 메모리(140)에 유효한 상태로 저장되어 있는지를 검색하여, 원격 캐쉬(150)에 유효한 상태로 저장되어 있을 경우, 원격 캐쉬(150)에 저장된 해당 데이터 블록을 프로세서 노드(110A,…,110B)에 제공하지만 그 데이터 블록이 지역 공유 메모리(140)에 유효한 상태로 저장되어 있을 경우에는 지역 공유 메모리(140)가 그 블록을 제공하게 한다. 만일, 원격 캐쉬(150)나 지역 공유 메모리(140)에 그 데이터 블록이 유효한 상태로 저장되어 있지 않을 경우, 노드 제어기(160)는 링크 제어기(170)를 통해 다른 외부 노드들(100B 내지 100E)로 그 블록에 대한 요청 신호를 전송하는 작용을 한다. 또한 노드 제어기(160)는 링크 버스(175)를 경유하여 링크 제어기(170)를 통해 외부 노드들(100B 내지 100E)로부터 요청 신호가 입력되면, 요청 신호에 대응하는 데이터 블록이 자신의 원격 캐쉬(150)나 지역 공유 메모리(140)에 유효한 상태로 저장되어 있는지를 검색하여, 원격 캐쉬(150)나 지역 공유 메모리(140)에 유효한 상태로 저장되어 있을 경우, 링크 제어기(170)를 통해 요청 신호를 발생한 다른 외부 노드들(100B 내지 100E)로 해당 데이터 블록이 전송되도록 한다.
링크 제어기(170)는 프로세서 노드(110A,…,110B)를 링크 버스(175)에 연결하는 데이터 패스(path)로 작용하여 노드 제어기(160)로부터의 요청 신호나 데이터 블록을 패킷으로 구성하여 링크 버스(175)를 통해 다른 외부 노드들(100B 내지 100E)로 전송하고, 링크 버스(175)를 통해 다른 외부 노드들(100B 내지 100E)에서 전송되어 오는 요청 신호나 데이터 블록을 선별하여 노드 제어기(160)에게 전달한다.
디렉토리(180)에는 지역 공유 메모리(140)에 저장된 데이터 블록에 대한 상태정보가 저장된다. 디렉토리(180)는 노드 제어기(160)가 프로세서 노드(110A,…,110B)로부터 요청된 데이터 블록이 지역 공유 메모리(140)에 어떠한 상태로 저장되어 있는지를 효과적으로 검색하고 다른 외부 노드들(100B 내지 100E)로부터 요청된 데이터 블록이 자신의 지역 공유 메모리(140)에 어떠한 상태로 저장되어 있는지를 효과적으로 검색하게 한다.
태그(190)에는 원격 캐쉬(150)에 저장된 데이터 블록에 대한 주소의 일부분과 이러한 상태정보가 저장된다. 태그(190)는 원격 캐쉬(150)에 저장된 데이터 블록의 상태를 갱신하거나 필요한 경우 해당 데이터 블록을 제공하기 용이하게 한다.
도면 중 미설명 부호 110은 외부 노드들(100B 내지 100E)에 포함된 프로세서 노드로서, 기준 노드(100A)에 포함된 프로세서 노드(110A,…,110B)와 비교할 때에 동일한 구성 요소라고 할 수 있다.
한편, 전술한 바와 같이 원격 캐쉬(150)를 가진 NUMA 방식이 구조적으로 우 수한 시스템이라 하더라도, 시스템의 성능은 주어진 응용 프로그램의 메모리 접근 패턴과 공유의 단위(Granularity of Sharing), 그리고 지역성(Locality Model)과 같은 요소들에게서 많은 영향을 받는다. 지역성이란 프로그램의 실행 중에 나타나는 실제 프로그램 수행 상의 실행 부분을 의미하는 말로써, 하나의 실행 지역에서 다른 지역으로 서서히 변해 나가는 프로그램 수행 지역의 영역을 의미한다. 운영체제적 관점에서 하나의 지역성은 다수개의 페이지(Page)들의 집합으로 구성되며, 일반적으로 하나의 프로그램은 프로그램 실행 중 서로 중첩 가능한 다수개의 지역성을 포함한다.
또한 메모리 접근 패턴, 공유의 단위, 지역성 등은 각 응용 프로그램 별로 상이한 특징을 나타낸다. 이러한 응용 프로그램은 그 특징에 따라서 지역성과 공유 패턴이 비교적 큰 프로그램도 있을 수 있으며, 비교적 큰 크기의 워킹 세트(Working Set)를 위한 공간을 필요로 할 수도 있다. 이때의 워킹 세트란 임의의 순간에 프로그램 수행 시, 실행되는 해당 작업의 논리적 크기를 의미한다. 또한 그 반대의 응용 프로그램도 존재 할 수 있다. 그리고 이것은 캐쉬 라인 사이즈와 밀접한 관계를 가진다. 캐쉬의 라인 사이즈란 메모리로부터 캐쉬로 한번에 읽어 들이는 메모리 블록의 크기를 의미하는 것이다. 가령 프로세서가 캐쉬의 특정 워드(Word)를 참조할 경우, 해당 워드가 포함되어 있는 메모리 블록이 현재 캐쉬 상에서 존재하지 않을 경우 미리 정해진 캐쉬의 라인 사이즈 만큼의 블록을 메모리로부터 캐쉬로 읽어 오게 된다. 이때 워드란 프로세서에서 참조 가능한 최소의 단위를 의미한다.
즉, 캐쉬의 라인 사이즈가 큰 경우(Coarse Grain)는 공간 지역성(Spatial Locality)적인 측면에서 유리하다고 할 수 있고, 또한 비교적 순차적으로 메모리에 접근하는 응용 프로그램에 있어서 프리페칭(Prefetching)의 효과까지 볼 수 있어 우수한 성능을 보인다. 이때의 공간 지역성이란 전술한 지역성의 한 종류로서, 공간적으로 서로 인접된 지역의 메모리가 연속해서 참조될 확률이 높다는 것을 의미한다. 즉 하나의 메모리 부분이 참조되면 공간적으로 그 주변의 메모리가 계속 참조될 가능성이 높음을 의미한다.
하지만 만약 그 크기가 지나칠 경우 불필요한 데이터까지 캐쉬에 불러들임으로 인해 거짓 공유(False Sharing)를 유발시킬 수 있으며, 이는 불필요한 캐쉬 라인의 무효화(Invalidation) 트랜잭션을 과도하게 발생시켜 오히려 시스템의 성능을 저하시킬 수 있다. 이때의 거짓 공유라는 현상은 프로세서에서 실제 참조가 일어나는 메모리상의 워드에 해당하는 부분과 메모리로부터 한번에 읽어 들이는 캐쉬의 라인 사이즈간의 불일치로 인하여 발생하는 현상으로, 가령 두개의 서로 무관한 변수가 같은 캐쉬 블록 상에 할당됨으로 인해 발생할 수 있는 현상이다. 즉 두 개의 프로세서가 같은 캐쉬 블록 상의 서로 다른 워드에 할당 된 상호 무관한 변수를 접근하고자 할 경우, 실제 프로세서들은 캐쉬 블록의 서로 다른 부분을 참조하고 있으나 메모리의 일관성 유지의 차원에서는 각각의 두 프로세서들은 일단 이전의 캐쉬 블록을 무효화시킨 후 재차 참조토록 구현하여야 한다. 이는 시스템 성능상의 불필요한 손실이라 할 수 있으며, 일반적으로 캐쉬의 라인 사이즈가 클수록 거짓 공유로 인한 성능상의 손실은 더욱 증가한다고 할 수 있다.
이와는 반대로 작은 크기의 캐쉬 라인 사이즈를 사용 할 경우(Fine Grain)는 위에서 나타난 거짓 공유에 의한 과도한 무효화 신호를 줄이고 또한 불필요한 데이터의 전송을 막을 수 있다는 장점을 가진다. 그 외에도 인접 노드와 통신이 발생할 경우, 패킷 자체의 오버헤드는 라인 사이즈가 큰 경우에 비해 상대적으로 크지만 동기화(Synchronization)가 빈번히 이루어 질 경우는 오히려 유리하다고 할 수 있다. 하지만 응용 프로그램에 따라 다분히 순차적인 메모리 접근을 나타내는 경우에는 프리페칭의 효과를 볼 수 없어 이 방법이 합리적이지 않을 수 있으며, 주어진 응용 프로그램을 캐쉬에 불러들이기 위한 과도한 버스 혹은 네트워크 상의 트랜잭션을 발생시킬 수 있다는 단점이 있다
즉, 주어진 시스템의 성능 향상을 위해서는 원격 메모리에 대한 접근 지연 시간이 시스템 성능 저하의 주된 요소라는 시스템 구조에 대한 관점뿐만이 아니라, 실제 시스템 상에서 수행되는 응용 프로그램별 서로 상이한 메모리 접근 패턴에 대한 분석 역시 중요한 성능 향상의 요소라는 점을 상호 고려하여야 한다. 이러한 원격 메모리의 접근 시간을 감소시키기 위한 원격 캐쉬의 사용과 더불어 응용 프로그램별 메모리 접근 패턴과의 관계를 고려해 볼 때, 원격 캐쉬의 라인 사이즈는 캐쉬의 미스률(Miss Rate)과 메모리 트래픽의 조절에 중대한 영향을 미친다. 따라서 각 응용 프로그램별 특성을 반영할 수 있는 보다 효율적인 원격 캐쉬 설계의 필요성이 제기되었다.
이에 따라 본 발명은 분산된 공유 메모리 구조의 다중 프로세서 방식에서 각 응용 프로그램별 메모리 접근에서 나타난 패턴의 변화를 추적하여 가상적으로 실행 시간에 원격 캐쉬의 라인 사이즈를 변화시킬 수 있는 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치를 제공하는 데 그 목적이 있다.
이러한 본 발명은 다수개의 프로세서들과, 다수개의 지역 공유 메모리들이 서로 지역적으로 분산되어 있는 NUMA 시스템 방식과 여기에 각각의 지역 노드들이 타 지역 공유 메모리의 데이터를 캐슁하는 원격 캐쉬를 포함하는 장치에 범용적으로 적용할 수 있다.
상기와 같은 목적을 달성하기 위해서 본 발명은, 분산된 지역 공유 메모리 구조를 갖는 다수의 노드가 서로 연결된 다중 프로세서 장치로서, 데이터 블록을 요청하는 요청 신호를 발생하고, 외부의 상기 요청 신호에 따라 내부를 스누핑하여 상기 요청 신호에 대응하는 데이터 블록을 출력하는 다수의 프로세서 노드와, 상기 요청 신호에 따라 외부 노드에 포함된 원격 메모리의 주소 영역에 대해 캐싱하는 원격 캐쉬와, 각 응용 프로그램별 상기 원격 메모리 참조 패턴에 따라 상기 원격 메모리와 상기 원격 캐쉬간의 데이터 전송을 위한 캐쉬 라인 사이즈를 결정하는 라인 사이즈 결정자를 포함한다.
본 발명의 실시예로는 다수개가 존재할 수 있으며, 이하에서는 첨부한 도면을 참조하여 바람직한 실시예에 대하여 상세히 설명하기로 한다. 이 실시예를 통해 본 발명의 목적, 특징 및 이점들을 보다 잘 이해할 수 있게 된다.
도 3은 본 발명에 따른 적응형 원격 캐쉬를 가지는 분산 공유 메모리 구조의 다중 프로세서 시스템의 구성도로서, 도 2의 다중 프로세서 시스템과 동일한 구성요소에 대해서는 동일한 참조부호를 명기하였다. 아울러 프로세서 노드들(110A,…,110B)의 상세 구성은 도 1을 참조하기로 하며, 네트워크(101) 구성은 도 2를 참조하기로 한다.
도시된 바와 같이 본 발명의 다중 프로세서 시스템은, 다수의 노드(100A 내지 100E)를 포함하며, 다수의 노드(100A 내지 100E)는 네트워크(101)를 통하여 연결된다.
각각의 노드들(100A 내지 100E)은 메모리를 지역적으로 분산시킨 지역 공유 메모리(140)를 구비하며, 지역 공유 메모리(140)는 전역 버스(130)를 통하여 다수개의 프로세서 노드(110A,…,110B)에 연결되어 있다. 프로세서 노드(110A,…,110B) 내에는 프로세서(111)와 1차 캐쉬(112) 및 2차 캐쉬(113)들이 구성되며, 2차 캐쉬(113)들은 지역 버스(135)를 통하여 전역 버스(130)에 연결되어 있다.
이와 같이 상위 계층 및 하위 계층의 캐쉬가 구성되는 다단계 캐쉬 구조의 공유 메모리 다중 프로세서 장치 방식에서, 노드(100A 내지 100E) 외부로 나가는 트랜잭션의 수를 줄이기 위해 원격 메모리("110A,…,110B"를 기준으로의 "141,142,143")에 대해 캐슁을 하는 원격 캐쉬(200)를 포함한다. 여기서 참조부호 140,141,142,143은 메모리를 각 노드(100A 내지 100E)별로 분산시킨 지역 공유 메모리이나 이하에서는 설명의 편의 및 이해를 돕기 위하여 노드(100A)를 기준으로 하여 참조부호 140은 "지역 공유 메모리"라 칭하고, 참조부호 141,142,143은 "원격 메모리"로 칭하기로 한다.
본 발명의 구성 요소 중에서 아직 언급하지 않은 노드 제어기(160), 링크 제어기(170), 링크 버스(175), 디렉토리(180), 태그(190) 등은 도 2에 도시된 다중 프로세서 장치와 동일한 구성 요소로서 그 설명을 생략하겠으나 이하의 동작 설명으로부터 충분히 이해될 것이다. 아울러 본 발명의 주요 구성 요소 중의 하나인 라인 사이즈 결정자(300)는 도 7을 참조하여 아래에서 상세히 설명하기로 한다.
상기의 구성과 같이 지역적으로 메모리가 각 노드(100A 내지 100E)별로 분산되어 지역 공유 메모리(140)와 원격 메모리(141,142,143)를 갖는 NUMA 시스템에서, 원격 캐쉬(200)와 원격 메모리(141,142,143) 사이에 데이터를 교환할 수 있는 상황은 도 4와 같다.
도 4는 메모리와 원격 캐쉬간의 데이터 전송량에 따른 원격 캐쉬 라인 사이즈의 변화를 도시한 도면으로서, 원격 캐쉬(200)와 원격 메모리(141,142,143) 사이의 데이터 전송에 있어서 최소 크기의 캐쉬 라인 사이즈로 데이터를 전송하는 단위(410A)와 초기 크기로의 캐쉬 라인 사이즈로 데이터를 전송하는 단위(410B)와 최대 크기로의 캐쉬 라인 사이즈로 데이터를 전송하는 단위(410C)를 나타내고 있다. 여기서 캐쉬 라인의 최소 크기는 시스템에 따라 16Byte일 수도 있고, 32Byte 또는 64Byte일 수 있으나, 도 4에서는 캐쉬 라인의 최소 크기가 32Byte인 경우를 실시예로서 나타내었다.
도 4에서 최소 단위의 블록(400A 내지 400D)을 시스템 상에서의 캐쉬의 라인 사이즈라고 하자. 가령 인텔(Intel)사의 펜티엄(Pentium) 프로세서에서 사용되는 P6 버스를 예로 들 경우, P6 버스 프로토콜의 규약에 의해 최소 32Byte(400A) 단위 로 일관성을 유지한다. 다중 입자도를 반영하기 위한 확장 형태인 64Byte(401A)와 128Byte(402A) 크기로의 데이터 전송은 참조부호 410B와 410C와 같이 묘사할 수 있다. 이상의 실시예와 같이 일반적으로 각각의 경우는 원격 메모리(141,142,143)와 원격 캐쉬(200) 사이에 데이터를 전송함에 있어서 그 순서대로 도 5의 최소라인(501B), 초기라인(501A), 최대라인(501C) 크기의 캐쉬 라인 사이즈를 나타낸다.
도 4를 바탕으로 주어진 응용 프로그램의 메모리 참조 패턴을 실행 시간에 동적으로 분석하여(Dynamic Determination) 원격 캐쉬(200)와 원격 메모리(141,142,143) 사이에 실제 전송되는 데이터의 양, 즉 캐쉬의 라인 사이즈를 결정하기 위한 기본적 모델은 도 5와 같이 묘사 될 수 있다.
도 5는 본 발명에 따른 원격 캐쉬의 참조 패턴과 원격 캐쉬의 라인 사이즈의 상태 변환을 도시한 도면이다.
도 5에서 음영으로 표시된 최소 크기의 블록이 현재 참조되고 있는 캐쉬 라인(Referenced Cache Line)을 나타낸다. 그리고 도 5에서처럼 4개의 연속된 캐쉬 모듈(Consecutive Cache Module)이 논리적으로 존재하게 되며, 이와 같은 4개의 연속된 캐쉬 모듈이 하나의 세트(Set)를 형성하게 된다. 이러한 4개의 참조 라인을 기준으로 초기 크기(501A)로 주어진 응용 프로그램의 실행 패턴을 분석한다. 그리고 이는 다음 원격 메모리에 대한 참조 실패(Miss) 발생 시, 그 요구에 대해 해당 크기의 라인 사이즈에 부합되는 양만큼의 데이터를 원격 메모리에 요구하게 된다. 도 5에서 보는 바와 같이 음영으로 표시된 각각의 최소 블록 참조 패턴이 순차적 접근, 혹은 인접 라인과의 동시 접근이 빈번하게 발생하는 경우는 그 상태가 점차 최대 라인 쪽으로 옮겨가게 되고(520, 521), 그 접근이 단편적이거나 무작위적인 패턴을 나타내는 경우는 점차 최소 라인 쪽으로 옮겨가게 된다(530, 531).
이와 같은 상태 변환을 수행하기 위해 지원되어야 하는 원격 캐쉬(200)의 상세 구성은 도 6과 같다.
본 발명에서는 다중 그레인 원격 캐쉬 기능을 위해 최소 크기의 라인 사이즈를 가지는 4개의 캐쉬 모듈(210A 내지 210D)이 포함된다. 또한 원격 캐쉬는 연합도(Associativity)를 가지지 않는다. 이 때의 연합도는 메모리로부터 데이터를 읽어 올 경우 캐쉬에 놓여 질 수 있는 위치가 다수개의 장소임을 의미한다. 일반적으로 메모리로부터의 데이터가 캐쉬상의 N개의 서로 다른 위치에 놓여 질 수 있을 경우, 이를 N-웨이 세트 연합도(N-way Set Associativity) 캐쉬 시스템이라고 한다. 만약 이러한 연합도가 있을 경우는, 캐쉬 상에서 연속된 인접 라인이라 하더라도 실제 주소 공간상에서의 연속성을 보장하지 못하기 때문에 원격 캐쉬는 다이렉트-맵(Direct-Map) 형식으로 되어 있으며 가로 방향으로의 인접한 4개의 모듈들이 연속된 주소 공간을 가진다. 이때의 다이렉트-맵은 N-웨이 세트 연합도 캐쉬 시스템의 하나로서, N이 1인 경우의 장치 형식을 의미한다.
도 6에서 보는 바와 같이, 각각의 캐쉬 모듈(210A 내지 210D)에는 유효 여부를 나타내는 V bit(211), 수정 여부를 나타내는 D bit(212), 태그(213), 데이터 bit(214), 참조 여부를 나타내는 R bit(215)가 존재하며, 각 캐쉬 모듈(210A 내지 210D)의 태그(213)와 R bit(215)는 라인 사이즈 결정자(300)의 입력으로 대입된다. 이러한 라인 사이즈 결정자(300)가 실제 원격 캐쉬(200)와 노드 제어기(160) 사이의 전송 단위(410A 내지 410C)를 결정하는 역할을 하게 된다.
이와 같이 구성된 원격 캐쉬(200)는 노드 제어기(160)와 인터페이스가 이루어지기 때문에 노드 제어기(160)로부터 해당 메모리 영역에 대한 어드레스 비트(610)가 전달된다. 이를 바탕으로 원격 캐쉬(200)는 실제 참조가 발생한 라인에 대해서 데이터를 다중화기(220)를 통해 노드 제어기(160)에게 넘겨줌과 동시에 R bit(215)를 1로 설정하게 된다. 이러한 R bit(215)는 필요에 따라 라인 사이즈 결정자(300)에 의해 사용된다.
도 7은 본 발명에 따른 라인 사이즈 결정자(300)의 상세 구성을 나타내고 있다. 라인 사이즈 결정자(300)는 라인 사이즈 지정자(310), 참조 패턴 테이블(320), 스프리트/머지 카운터(Split & Merge Counter)(330)로 구성되어 있다.
원격 캐쉬(200)에서 해당 캐쉬 라인에 대한 참조가 일어나는 시점에 해당 캐쉬 모듈의 참조된 엔트리의 R bit가 1로 세팅이 되고, 그 후 캐쉬 라인의 교체(Replace)가 발생할 때, 이전까지 인접 라인의 참조 여부를 나타낸 해당 캐쉬 모듈 내의 연속된 4개의 R bit의 값을 참조 패턴 테이블(320)의 값과 비교하게 된다.
이러한 참조 패턴 테이블(320)의 실시예가 도 8에 나타나 있다. 참조 패턴 테이블(320)은 각각의 인접한 4개의 캐쉬 모듈(210A 내지 210D)에 대한 R bit(215)들의 조합 필드(321)와 그에 따른 적절한 동작 필드(322)로 구성되어 있다. 이때의 동작은 크게 디바이드(Divide), 컨바인(Combine), 디바이드/컨바인(Divide or Combine), 무동작(No Action)으로 구분될 수 있다. 참조 패턴 테이블(320)은 해당 R bit 조합에 대한 동작을 출력으로 내어 보내고, 이러한 참조 패턴 테이블(320)의 출력은 스프리트/머지 카운터(330)의 입력으로 대입된다. 이러한 참조 패턴 테이블(320)은 도 8에 나타난 R bit 조합의 실시예에서 같이 일종의 패턴 매칭을 위한 도구로써 사용된다. 이는 실제 구현상에 있어서 별도의 ROM과 같은 하드웨어 공간에 기록되어져 저장되어 질 수도 있으며, 혹은 각각의 캐쉬 모듈 R bit 값의 조합 및 이에 대한 선택적 출력(Multiplexing)등의 방법으로 컨바인과 디바이드의 해당 동작을 결정하는 방법으로도 구현될 수 있다. 또한 실시예에서는 설명의 편의를 위해서 동작 필드(322)를 두었으나, 선택적 출력 등의 구현 방법이 사용될 경우 실제 동작 필드(322)는 생략되어 구현되어 질 수도 있다.
이러한 참조 패턴 테이블(320)의 출력은 기본적으로 디바이드 상태, 컨바인 상태, 디바이드/컨바인 상태와 같은 3가지 주요 상태를 나타내기 위해서 2 bit의 기억 장소가 필요하다. 특정 실시예에서는 하드웨어적으로 구현되어 질 수도 있지만, 이는 실제적인 하드웨어라기보다는 일종의 메카니즘으로서, 상태 전이를 위한 플로 차트(Flow-Chart)와 같은 성질의 것이다.
이와 같이 스프리트/머지 카운터(330)는 참조 패턴 테이블(320)로부터 R bit 패턴의 조합(321)에 따른 해당 동작(322)을 입력으로 받음과 동시에 라인 사이즈 지정자(310)의 해당 주소영역에 대한 상태 필드(313)의 값을 입력으로 받는다. 이를 이용하여 지정한 상태 변환 알고리즘에 따라 상태 전이를 수행한 후 다음 상태를 결정한다.
이러한 상태 전이 수행 과정을 보다 상세히 살펴보면, 초기 상태(330A)에서 캐쉬 라인의 교체가 발생할 경우, 해당 라인이 포함된 연속된 인접한 4개의 R bit(215)를 입력으로 받는다. 이를 도 8의 참조 패턴 테이블(320)에서 R bit 패턴의 조합(321)에 따른 해당 동작(322)이 출력되고, 이는 스프리트 혹은 머지 상태로의 상태 변환을 수행하는데 이용된다.
최종적으로 스프리트 상태(330B)로의 상태 변환을 수행한 경우는 기존의 라인 사이즈가 초기 상태(410B,501A)인 경우는 최소 상태(410A,501B)로 변환되며, 최대 상태(410C,501C)인 경우는 초기 상태(410B,501A)로의 변환이 이루어진다. 또한 기존의 라인 사이즈가 이미 최소(410A,501B)인 경우는 더 이상의 변환을 수행하지 않는다. 이와 같이 상태 변환을 수행한 이후에는 해당 캐쉬 라인의 R bit(215)를 다시 초기화시킨다.
이와 반대로 머지 상태(330C)로 최종적 상태 변환을 수행 한 경우는 최소상태(410A,501B)인 경우는 초기 상태(410B,501A)로 변환되며, 초기 상태(410B,501A)인 경우는 최대 상태(410C,501C)로의 변환이 이루어진다. 또한 기존의 라인 사이즈가 이미 최대(410C,501C)인 경우는 더 이상의 변환을 수행하지 않는다. 이 경우도 해당 캐쉬 라인의 R bit(215)를 초기화시킨다.
그 후 라인 사이즈 지정자(310) 내부의 상태 필드(313)에 새로운 상태를 입력하고 해당 상태가 반영된 새로운 입자도를 그레인 필드(312)에 저장한다. 그리고 그레인 필드(312)에 저장된 값은 다음 번 해당 라인의 요구가 발생할 경우 라인의 사이즈, 즉 전송 단위(410A 내지 410C)를 지정하는 역할을 한다. 이러한 라인 사이 즈 지정자(310)는 일반적으로 N 개의 캐쉬 주소 엔트리를 가지는 하드웨어 모듈로서의 구현이 가능하다.
이와 같이 새로운 입자도 값이 결정되면, 라인 사이즈 지정자(310)는 해당 라인에 대해서 읽기 실패 혹은 쓰기 실패가 발생했을 때, 요청된 라인의 주소, 즉 캐쉬 모듈로부터 입력되는 태그(213)를 이용하여 그 값이 라인 사이즈 지정자(310) 내부의 어드레스 필드(311)에 저장되어 있는지 여부를 확인한 후, 만약 저장되어진 라인이라면 해당 라인의 그레인 필드(312) 값만큼의 데이터를 읽어오도록 노드 제어기(160)에게 지시한다. 이때 구현에 따라 입력된 주소값에 대한 노드 제어기(160)에게 넘겨주는 라인 사이즈에 대하여, 해당 요구 영역의 중복에 대한 요청통합 문제도 구현에 따라 필요 할 수 있다.
도 8에 연속된 4개의 R bit 입력에 대한 참조 패턴 테이블(320)의 값과 동작에 대한 실시예가 나타나 있다. 각각의 조합에 따라서 디바이드 혹은 컨바인의 동작을 수행하게 된다. 특히 디바이드/컨바인 동작의 경우는 현재 라인이 설정된 최대의 라인(410C, 501C)인 경우는 다바이드 동작을 수행하며, 설정된 최소의 라인(410A, 501B)인 경우는 컨바인 동작을 수행한다. 그리고 초기 설정 라인(410B, 501A)인 경우는 이전 패턴(Other Pattern)(540)으로 간주하여 무동작을 취한다.
이상에서의 설명을 다음과 같은 동작 실시예를 통해 알아 볼 수 있다. 특정 노드(100A 내지 100E)내의 프로세서 노드(110A,…,110B)에서 지역 공유 메모리(140) 영역이 아닌 비 지역 메모리에 영역, 즉 원격 메모리(141,142,143)에 대한 데이터 요구가 발생 할 경우, 해당 프로세서(111)를 기준으로 1차 캐쉬(112) 와 2차 캐쉬(113)내에 데이터가 존재하는지 여부를 먼저 파악한다. 만약 존재하지 않는다면 이에 대한 요구가 노드 제어기(160)를 통해 라인 사이즈 결정자(300)와 원격 캐쉬(200)로 전달된다. 이때 원격 캐쉬(200) 내에도 요청된 데이터가 존재하지 않을 경우, 라인 사이즈 결정자(300)는 먼저 해당 주소 영역을 노드 제어기(160)로부터 입력을 받아, 해당 주소 영역에 대한 그레인 필드(312)의 값을 노드 제어기(160)에게 넘겨준다. 그리고 이는 노드 제어기(160)에 의해 원격 메모리(141,142,143)에 대한 입자도 크기만큼의 데이터를 요청해 오게 된다. 그리고 이 데이터는 원격 캐쉬(200)상에 놓여지며, 추후 2차 캐쉬(113)와 1차 캐쉬(112)에 차례대로 놓여지게 된다. 한편 이때 요청되어 원격 캐쉬(200) 상에 놓여진 데이터는 프로세서 노드(110A,…,110B)에 의해 사용되어 지며, 이때 참조가 발생할 경우 R bit(215)를 1로 세팅한다. 이와 같은 상황 하에서 원격 캐쉬(200) 상에 놓여진 이전의 요청된 데이터는 캐쉬 작동 메카니즘에 의해 교체(Replace)가 발생 할 수 있다. 이 경우 교체가 발생된 라인이 포함된 캐쉬 모듈(210A 내지 210D)의 R bit(215) 값이 라인 사이즈 결정자(300)내의 참조 패턴 테이블(320)의 값과 비교되어 진다. 이때 참조 패턴 테이블(320) 내부의 일치하는 패턴이 있을 경우, 그에 대한 적절한 동작을 동작 필드(322)의 값을 통해 스프리트/머지 카운터(330)의 입력값으로 내어 보낸다. 스프리트/머지 카운터(330)는 이 값과 더불어 라인 사이즈 지정자(310) 내부의 상태 필드(313) 값을 이용하여 적절한 상태 변환을 수행한다. 상태 변환 후 결정된 새로운 상태는 다시 라인 사이즈 지정자(310)의 상태 필드(313)의 값을 갱신하게 되며, 해당 값에 따라 새로운 입자도 값을 결정한다. 그리고 이 때 결정된 입자도 값은 그레인 필드(312)에 저장된다. 가령 현재 교체가 발생된 주소 영역에 대한 그레인 필드(312)의 값이 초기 전송 단위(410B)이고, 입력된 R bit의 조합이 디바이드 동작을 수행하였으며, 이로 인해 상태 변환 결과 스프리트 상태(330B)로의 상태 전환이 이루어져, 이에 대한 값이 라인 사이즈 지정자(310)에게 새로운 상태값으로 입력되었다면, 해당 주소 영역(311)에 대한 새로운 입자도인 최소 전송 단위(410A)가 그레인 필드(312)에 새롭게 저장되어 진다. 그리고 이 값은 전술한 바와 같이 원격 캐쉬(200) 상에서 특정 주소 영역의 데이터가 존재하지 않을 경우, 다음 번 참조 실패 발생시 읽어 들이는 데이터의 양을 결정하는 역할을 하게 된다.
도 9는 참조 패턴 테이블(320)의 출력을 받아들이는 스프리트/머지 카운터(330)의 상태 변환에 대한 다른 실시예를 나타내고 있다. 도 9의 실시예에서는 5상태로 이루어진 경우를 나타내고 있으며, 이와 같은 경우는 3bit 카운터로의 구현이 가능하다. 초기 상태(330A)에서 캐쉬 라인의 교체가 발생할 경우, 해당 라인이 포함된 연속된 인접한 4개의 R bit(215)를 입력으로 받는다. 이를 도 8의 참조 패턴 테이블(320)에서 R bit 패턴의 조합(321)에 따른 해당 동작(322)이 출력되고, 이는 스프리트 혹은 머지 상태로의 상태 변환을 수행하는데 이용된다.
최종적으로 스프리트 상태(330B)로의 상태 변환을 수행한 경우는 기존의 라인 사이즈가 초기 상태(410B,501A)인 경우는 최소 상태(410A,501B)로 변환되며, 최대 상태(410C,501C)인 경우는 초기 상태(410B,501A)로의 변환이 이루어진다. 또한 기존의 라인 사이즈가 이미 최소(410A,501B)인 경우는 더 이상의 변환을 수행하지 않는다. 이와 같이 상태 변환을 수행한 이후에는 해당 캐쉬 라인의 R bit(215)를 다시 초기화시킨다.
이와 반대로 머지 상태(330C)로 최종적 상태 변환을 수행 한 경우는 최소상태(410A,501B)인 경우는 초기 상태(410B,501A)로 변환되며, 초기 상태(410B,501A)인 경우는 최대 상태(410C,501C)로의 변환이 이루어진다. 또한 기존의 라인 사이즈가 이미 최대(410C,501C)인 경우는 더 이상의 변환을 수행하지 않는다. 이 경우도 해당 캐쉬 라인의 R bit(215)를 초기화시킨다.
그런데, 도 9에 나타낸 실시예에 의하면 스프리트 상태(330B)와 머지 상태(330C)로의 상태 변환을 수행하기에 앞서 중간 상태로 스프리트 트랜지언트(Split_Transient)(330D)와 머지 트랜지언트(Merge_Transient)(330E) 상태를 거친다. 이는 전체 응용 프로그램의 메모리 참조 패턴 분석 도중에 국부적으로 혹은 임시적으로 나타나는 그레인 크기의 변화를 무시하기 위한 수단이다. 이는 과도한 캐쉬 라인 사이즈의 변화를 막기 위함이며, 캐쉬 라인 사이즈의 변경이 시스템 성능에 악영향을 미치지 않게 하기 위해서이다.
이와 같은 상태 전이를 통한 상태 변환을 수행한 후 R bit(215)의 값이 현재 1로 설정이 되어 있다는 것은 스프리트 혹은 컨바인의 작업을 수행한 이후 다시 재차 참조가 이루어졌다는 것을 의미하며, 0은 그렇지 않는 경우를 나타낸다.
상기와 같은 동작을 노드 제어기(160)에서 생성되는 어드레스 비트(610)의 구성 관점에서 살펴보면 다음과 같다. 예를 들어 256Kbit의 원격 캐쉬(200)를 사용하고 현재 라인 사이즈를 32byte로 가정 할 경우, 태그(Tag)(611) 17bit, 인덱스(Index)(612) 10bit, 바이트 오프셋(Byte_Offset)(613) 5bit로 32 bit의 어드레스 비트(610)를 구성하게 된다. 이와 같은 상황에서 라인 사이즈가 스프리트/머지 카운터(330) 알고리즘에 의해서 64byte로 변경 될 경우, 태그(611) 17bit, 인덱스(612) 9bit, 바이트 오프셋(613) 6bit로 어드레스 비트(610)의 구성 변경을 하게 된다. 마찬가지로 128byte로의 변경이 이루어 질 경우, 태그(611) 17bit, 인덱스(612) 8bit, 바이트 오프셋(613) 7bit로 다시 재구성 되게 된다.
이와 같이 본 발명에서는 고정된 각각의 기본 원격 캐쉬 라인에 대해서 이를 최대 4개의 캐쉬 모듈(210A 내지 210D)로 구성하고, 이와 같이 해당 모듈이 미리 정의된 상태에서 초기 상태(401B,501A), 최소 상태(410A,501B), 최대 상태(410C,501C)로의 확장을 어드레스 비트(610) 구성 변경과 라인 사이즈 결정자(300)의 제어를 통해서 읽어 들이는 데이터의 양에 변화를 추구하였다. 그리고 이때 변경된 값은 추후 다시 재 변경되기 전까지 모든 주소 영역에 대해 같은 라인 크기 값을 유지하게 된다.
이상 설명한 바와 같이 본 발명은 일종의 동적인 기법으로서 주어진 시스템의 초기 원격 캐쉬의 라인 사이즈의 설정 상태와 해당 시스템에서 수행되는 각각의 응용 프로그램간의 상호 관계 하에서, 항상 최악의 경우를 피하면서 최적의 성능을 제공하는 효과가 있다. 즉 기존의 시스템이 어떤 크기의 캐쉬 라인 사이즈를 가지던 혹은 어떤 메모리 참조 특성을 지닌 응용 프로그램을 수행시키던 상관없이 항상 최악의 경우를 피하면서 최적의 경우에 근접해 가는 수행 결과를 보인다.
또한, 본 발명은 응용 프로그램의 실제 수행 중에 발생하는 각 프로세서별로의 작업 분배(Job Distribution)나 동기화(Synchronization)와 같은 일시적 워킹 세트(Working Set) 혹은 지역성의 변화에 대한 추적이 가능하며, 이를 수행 결과에 반영 할 수 있는 능력이 있다. 이때의 작업 분배는 하나의 작업을 다수개의 프로세서가 공동으로 수행하기 위한 프로그램 수행 부분의 분배를 의미하며, 동기화란 각각의 프로세서들이 하나의 프로그램상의 서로 다른 부분을 작업 분배를 통해 수행하던 중 필요에 따라서 다른 프로세서와 정보 교환을 위해 통신을 발생시킬 수 있는데, 그와 같은 상황을 의미한다.
때문에 본 발명은, 특정 응용 프로그램에 맞게 최적화 되도록 설계된 시스템이라 하더라도 작업 분배나 동기화가 빈번히 발생하는 형태의 응용 프로그램의 수행 시 기존의 최적화 시스템에서 보다 더 좋은 성능을 제공하는 효과가 있다.
Claims (20)
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 분산된 지역 공유 메모리 구조를 갖는 다수의 노드가 서로 연결된 다중 프로세서 장치로서,데이터 블록을 요청하는 요청 신호를 발생하고, 외부의 상기 요청 신호에 따라 내부를 스누핑하여 상기 요청 신호에 대응하는 데이터 블록을 출력하는 다수의 프로세서 노드와,상기 요청 신호에 따라 외부 노드에 포함된 원격 메모리의 주소 영역에 대해 캐싱하는 원격 캐쉬와,각 응용 프로그램별 상기 원격 메모리 참조 패턴에 따라 상기 원격 메모리와 상기 원격 캐쉬간의 데이터 전송을 위한 캐쉬 라인 사이즈를 결정하는 라인 사이즈 결정자를 포함하며,상기 라인 사이즈 결정자는,상기 원격 캐쉬에 의한 인접 주소와의 참조 패턴의 종류를 정의하는 참조 패턴 테이블과,내부적으로 참조된 메모리 주소와 참조 크기에 대한 정보를 저장하는 라인 사이즈 지정자와,상기 참조 패턴 테이블 및 라인 사이즈 지정자에 의한 참조 정보를 바탕으로 라인 사이즈 변경 여부를 결정하여 상기 라인 사이즈 지정자에 의해 상기 캐쉬 라인 사이즈가 지정되게 하는 스프리트/머지 카운터를 포함하는 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 12 항에 있어서,상기 참조 패턴 테이블은, 상기 캐쉬 모듈에 대한 R 비트들의 조합 필드와, 상기 R 비트 조합에 따라 디바이드 또는 컨바인 동작이 지정된 동작 필드를 포함하며,상기 캐쉬 모듈로부터 제공되는 상기 R 비트 조합에 대응하는 상기 동작 필드에 저장된 정보를 상기 스프리트/머지 카운터로 제공하는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 13 항에 있어서,상기 참조 패턴 테이블은, 기억매체 하드웨어 공간에 기록되어져 저장된 것 을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 12 항에 있어서,상기 참조 패턴 테이블은, 상기 캐쉬 모듈에 대한 R 비트들의 조합 및 이에 대한 선택적 출력으로 디바이드 또는 컨바인 중에서 어느 하나의 해당 동작을 상기 스프리트/머지 카운터로 제공하는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 12 항에 있어서,상기 라인 사이즈 지정자는, 해당 라인에 대해서 읽기 실패 혹은 쓰기 실패가 발생했을 때 상기 캐쉬 모듈로부터 입력되는 태그를 이용하여 그 값이 저장되어 있는지 여부를 확인하기 위한 어드레스 필드와,해당 라인에 대하여 저장된 상태를 상기 스프리트/머지 카운터로 제공하고, 상기 스프리트/머지 카운터에서 결정된 새로운 상태를 입력하는 상태 필드와,상기 상태 필드에 입력된 상기 새로운 상태가 반영된 새로운 입자도를 저장하여 다음 번 해당 라인의 요구가 발생할 경우 라인의 사이즈를 지정하기 위한 그레인 필드를 포함하는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 12 항에 있어서,상기 스프리트/머지 카운터는, 상기 참조 패턴 테이블로부터 R 비트 패턴의 조합에 따른 해당 동작을 입력으로 받고, 상기 라인 사이즈 지정자로부터 해당 주소영역에 대한 상태 값을 입력으로 받아서 상태 전이를 수행한 후 다음 상태를 결정하는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 17 항에 있어서,상기 스프리트/머지 카운터는, 최종적으로 스프리트 상태로의 상태 변환을 수행한 경우는 기존의 라인 사이즈가 초기 상태인 경우는 최소 상태로 변환되며, 최대 상태인 경우는 초기 상태로의 변환이 이루어지고, 기존의 라인 사이즈가 이미 최소인 경우는 더 이상의 변환을 수행하지 않는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 17 항에 있어서,상기 스프리트/머지 카운터는, 머지 상태로 최종적 상태 변환을 수행 한 경우는 기존의 라인 사이즈가 최소상태인 경우는 초기 상태로 변환되며, 초기 상태인 경우는 최대 상태로의 변환이 이루어지고, 기존의 라인 사이즈가 이미 최대인 경우는 더 이상의 변환을 수행하지 않는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
- 제 18 항 또는 제 19 항에 있어서,상기 스프리트/머지 카운터는, 상기 스프리트 상태와 머지 상태로의 상태 변환을 수행하기에 앞서 중간 상태로 스프리트 트랜지언트와 머지 트랜지언트 상태를 거치는 것을 특징으로 한 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030053839A KR100576099B1 (ko) | 2003-08-04 | 2003-08-04 | 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030053839A KR100576099B1 (ko) | 2003-08-04 | 2003-08-04 | 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050015155A KR20050015155A (ko) | 2005-02-21 |
KR100576099B1 true KR100576099B1 (ko) | 2006-05-03 |
Family
ID=37225981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030053839A KR100576099B1 (ko) | 2003-08-04 | 2003-08-04 | 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100576099B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100813662B1 (ko) | 2006-11-17 | 2008-03-14 | 삼성전자주식회사 | 프로세서 구조 및 응용의 최적화를 위한 프로파일러 |
-
2003
- 2003-08-04 KR KR1020030053839A patent/KR100576099B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20050015155A (ko) | 2005-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7814285B2 (en) | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer | |
US6868485B1 (en) | Computer system with integrated directory and processor cache | |
US5325504A (en) | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system | |
US6141692A (en) | Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol | |
US6253292B1 (en) | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme | |
US5228136A (en) | Method and apparatus to maintain cache coherency in a multiprocessor system with each processor's private cache updating or invalidating its contents based upon set activity | |
US6704845B2 (en) | Snoop filter line replacement for reduction of back invalidates in multi-node architectures | |
US5987571A (en) | Cache coherency control method and multi-processor system using the same | |
KR100970229B1 (ko) | 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 | |
US5434993A (en) | Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories | |
US7076609B2 (en) | Cache sharing for a chip multiprocessor or multiprocessing system | |
US6877067B2 (en) | Shared cache memory replacement control method and apparatus | |
US20010013089A1 (en) | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol | |
US20030005236A1 (en) | Imprecise snooping based invalidation mechanism | |
JPH0776942B2 (ja) | マルチプロセッサ・システムおよびそのデータ伝送装置 | |
JP2002304328A (ja) | マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム | |
JPH05128071A (ja) | 多重プロセツサ・システムの性能の最適化装置及び方法 | |
KR19980079433A (ko) | 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템 | |
US7222220B2 (en) | Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices | |
US20100217939A1 (en) | Data processing system | |
US6636944B1 (en) | Associative cache and method for replacing data entries having an IO state | |
KR100257993B1 (ko) | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 | |
US8464004B2 (en) | Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency | |
KR100576099B1 (ko) | 적응형 원격 캐쉬 구조의 공유 메모리 다중 프로세서 장치 | |
KR100281465B1 (ko) | 분산된공유메모리구조의다중프로세서장치 |
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: 20130429 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140416 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |