KR100257993B1 - 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 - Google Patents
분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 Download PDFInfo
- Publication number
- KR100257993B1 KR100257993B1 KR1019980017927A KR19980017927A KR100257993B1 KR 100257993 B1 KR100257993 B1 KR 100257993B1 KR 1019980017927 A KR1019980017927 A KR 1019980017927A KR 19980017927 A KR19980017927 A KR 19980017927A KR 100257993 B1 KR100257993 B1 KR 100257993B1
- Authority
- KR
- South Korea
- Prior art keywords
- node
- data
- state
- read
- request
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 분산 공유 메모리에서 각 노드간의 통신 데이터의 량에 따라 능동적으로 대처할 수 있도록, 미세입자 데이터에 대해서는 캐쉬라인 전송방식을 사용함으로써 표준 로드-저장 통신의 성능을 얻고, 대단위 입자 공유에 대해서는 스펙트럼의 입도를 지원함으로써 다량전송의 성능을 얻을 수 있도록 하는 미세 통신과 대단위 통신의 병합 적응형 입도 방식의 통신 프로토콜이다. 스펙트럼의 입도를 지원함에 있어 노드 콜트롤러가 로칼 노드의 캐쉬로부터 명령을 받았을 때 데이터 타입에 따라 미세입자인지 대단위 입자인지 종류만을 결정하고 홈노드가 대단위 입자 요구를 받았을 때 공유 패턴에 따라 입도를 결정하고 다량 데이터를 요구한 노드에 전송함으로써 다양한 실행 패턴에 능동적으로 대처할수 있다. 효율적인 입도 결정을 위해서, 공유 패턴에 따라 서로 다른 노드가 인접 블록을 요구하면 두 개의 버디 블록으로 나누어 공급하고, 두 개의 인접 블록을 같은 노드가 사용할 경우 두 블록을 하나의 버디로 형성하여 공급하다. 또 데이터가 도착하였을 때 노드 콘트롤러는 오직 요구한 라인만 캐쉬에 놓고 나머지는 미래의 캐쉬 실패를 대비하도록 로칼 메모리에 설정하도록 운영된다. 이로 인해 분산 공유 메모리 모델에 투명적인 상태로 다량 데이터 통신의 지원이 가능해져서 기존의 방법에서 발생되었던 프로그램 수정에 관련한 문제를 해소할 수 있다는 효과가 있다.
Description
본 발명은 분산 공유 메모리(Distributed Shared Memory) 시스템에 관한 것으로 특히, 각 노드간의 데이터 송수신을 위한 통신 규약에 관한 것이다.
더욱이, 본 발명은 분산 공유 메모리에서 각 노드간의 통신 프로토콜의 설정시 데이터의 량에 따라 능동적으로 대처할 수 있도록, 미세입자 데이터에 대해서는 캐쉬라인 전송방식을 사용함으로써 표준 로드-저장 통신의 성능을 얻고, 대단위 입자 공유에 대해서는 스펙트럼의 입도를 지원함으로써 다량전송의 성능을 얻을 수 있도록 하는 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법에 관한 것이다.
일반적으로, 분산 공유 메모리 시스템은 높은 확장성과 프로그래밍 용이성 때문에 최근의 다중 프로세서에서 주목을 받고 있다. 또한, 대부분의 하드웨어 분산 공유 메모리 시스템은 공유 메모리의 읽기 데이터 뿐만 아니라 쓰기 데이터의 캐싱을 허용함으로써, 고성능을 달성하고 있다.
상술한 분산 공유 메모리 시스템의 일반적인 개념을 첨부한 도 1을 참조하여 살펴보기로 한다.
먼저, 분산 공유 메모리 시스템은 각 노드가 다른 노드의 메모리(일명 분산 메모리)를 자신의 메모리인 것처럼 참조가 가능하게 한 다중 프로세서 컴퓨터 시스템이다. 이 구조는 캐쉬 일관성 유지(cache coherency) 바탕의 분산 공유 메모리 시스템이다. 그리고, 캐쉬 일관성 유지 바탕의 분산 공유 메모리 시스템상에서 다른 노드의 메모리를 참조할 수 있다는 것은 리모트 노드의 메모리에서 참조해온 특정 블록을 자신의 캐쉬(cache)로 저장하여 그 특정 블록에 대해서 다음 참조부터는 필요할 때마다 리모트 노드의 메모리를 직접 참조하지 않고도 자신의 노드의 캐쉬에 있는 데이터를 참조하여 좋은 성능을 얻을 수 있다는 것을 의미한다.
하지만, 이 캐쉬를 각 노드에 둠으로써 발생할 수 있는 문제점으로는 각각의 노드에 홈 노드의 메모리 블록을 공유하는 상태에서 특정 노드에 의해서 해당 캐쉬 라인에 변경(modification)이 일어나면 이전의 데이터를 가지는 노드들은 오래된 이전의 값을 참조하기 때문에 문제가 발생한다.
이러한 문제점을 해결하기 위해서 많은 캐쉬 코히어런스 프로토콜(coherency protocol)이 구현되고 있다. 각 노드(NA, NB, NC,...,NK)는 첨부한 도 1에서와 같이 인터-콘넥션 네트워크(Interconnection network: IC Net)(이것은 메시지의 전송을 매우 빠르게 하기 위해서 개발된 네트워크임)로 서로 타이트(tight)하게 연결되어 있다. 이때, 상기 인터-콘넥션 네트워크의 대표적인 예는 k-array n-cube network, wormhole route network등이 있다.
각 노드(NA, NB, NC,...,NK)의 내부구조는 첨부한 도 1에서 참조번호 NK로 지지되고 있는 바와 같이, 기존의 단일프로세서(uniprocessor: 예를들어, personal computer, Sparc20 등)의 구조와 거의 비숫하지만 단지 차이점은 분산 공유 메모리를 지원하기 위해서 노드 콘트롤러와 디렉토리(Directory)가 존재한다.
상기 노드 콘트롤러는 캐쉬 일관성 유지를 위해서 한 노드에서 캐쉬에 대해 리드/라이트 실폐(read/write miss)가 발생했을 때 홈 노드로 요청를 보내고 홈 노드에서 요청에 대한 대답(reply)이 전송되면 이에 대한 프로토콜(protocol)을 처리하는 역할을 한다.
또한, 디렉토리는 캐쉬 일관성 유지를 위해서 자신이 관리하는 메모리의 공유상태에 대한 정보를 가지고 있어야 한다. 물론 디렉토리 엔트리(entry) 수는 각 메모리 블록과 일대일 대응할만큼의 엔트리수를 가지고 있으며, 상기 엔트리에는 현재 이 메모리 블록을 공유하는 노드의 노드 번호를 저장하고 있다. 만일 다른 노드에서 현재 홈 노드의 메모리 블록을 변경하려면 일단 홈 노드에 의해서 쓰기허가(write permission)를 얻어야 하며 쓰기허가를 얻기 전에 이 해당 블록을 공유하는 모든 노드들에게 무효(invalidate) 요청를 전송한다. 이 요청에 대해 모든 인정(acknowledge) 메시지를 받으면 홈 노드는 쓰기를 요청한 노드에게 쓰기허가를 제공한다.
상술한 프로토콜이 하드웨어 데이터 프로토콜(Hardware Data Protocol:HDP)이며, 미세 입자에 대한 송수신 프로토콜에 대해 간단히 설명한 것이다.
따라서, 캐쉬 일관성을 지원하는 이러한 분산 공유 메모리의 특징은 데이터 통신 방법으로서 고정크기의 블록(즉, 캐쉬 라인)을 사용한다는 점인데, 이러한 특징이 미세입자의 데이터 송수신시에는 장점으로 작용하지만 반면에, 다량 데이터 전송시에는 단점으로 작용한다. 즉, 다량의 데이터 전송시에는 캐싱을 허용하는 것 보다는 병렬성을 특징으로 하는 통신 프로그램을 사용하는 것이 더 효과적일 수 있다.
따라서, 상술한 문제점을 해결하기 위해서 이들 형태를 동시에 지원하는 방법 즉, 미세 입자 통신(fine-grain communication)과 대단위 입자 통신(coarse-grain communication)의 장점을 모두 이용하기 위한 방법들이 근래 들어 제시되었는데, 근래 제시된 통합방식을 간략히 살펴보면 다음과 같다.
최근의 공유 메모리 다중 프로세서는 하나의 구조에 두가지 모델을 통합하고 있으며, 캐쉬 일관성 프로토콜을 하드웨어 대신에 소프트웨어로 이용하고 있다. 다량 전송기능을 통합한 다중 프로세서에서 이용하기 위하여 여러 가지 방법들이 제안되고 있는데, 대표적인 기법은 명시적 메시지(explicit mess적응형 입도e)를 이용하는 것이다. 명시적 메시지 방법에서는 미세입자 데이터를 위하여는 표준 로드-스토어 통신이 이용되는 반면에, 대단위 입자를 통신하기 위하여는 send-receive나 메모리 복사같은 메시지-전달통신 명령들이 선택적으로 사용된다. 다시말해서, 두가지 통신 모델이 하나의 프로그램에 함께 존재하며, 전송데이터의 종류에 따른 적절한 통신 모델을 선택하는 것은 프로그램머의 책임이다.
그러므로, 상술한 방식에서는 임의의 가변 입도를 지원할 수 있기 때문에 통신 성능의 향상을 기대할 수 있다.
그러나, 상술한 바와 같은 방식은 두가지의 중요한 단점들 즉, 프로그래밍이 어렵다는 것과 하드웨어의 복잡도가 증가한다는 것 등의 단점을 가지고 있다. 다시말해서, 임의의 크기의 입도를 지원하는 것과 프로그래밍의 용이성에는 상충되는 기술적 한계성이 문제점으로 대두되었다.
상술한 바와같은 종래기술의 문제점을 해소하기 위한 본 발명의 목적은 분산 공유 메모리에서 각 노드간의 통신 프로토콜의 설정시 데이터의 량에 따라 능동적으로 대처할 수 있도록, 미세입자 데이터에 대해서는 캐쉬라인 전송방식을 사용함으로써 표준 로드-저장 통신의 잇점을 이용하며, 대단위 입자 공유에 대해서는 스펙트럼의 입도를 지원함으로써 다량전송의 잇점을 이용할 수 있도록 하는 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법을 제공하는 것이다. 또 이를 투명하게 제공함으로써 다양한 입도를 사용하는데 있어 프로그래머에게 전혀 부담을 주지 않는다.
도 1은 일반적인 분산 공유 메모리 시스템의 개념을 설명하기 위한 블록 구성 예시도
도 2a는 로칼/리모트 노드를 위한 프로토콜 통합에 관련한 다이어그램
도 2b는 홈 노드를 위한 프로토콜 통합에 관련한 다이어그램
도 3는 적응형 입도를 위한 상태 변환 테이블
도 4은 디폴트 머신 파라메타를 위한 실험 결과 그래프
도 5는 도 4에서와 동일한 조건속에서 구조상의 파라메타 변화의 효과를 나타내는 실험 결과 그래프
도 6는 도 4에서와 동일한 조건속에서 적응형 입도 기초에 최적화시킨 효과를 나타내는 실험 결과 그래프
상기 목적을 달성하기 위한 본 발명의 특징은, 분산 공유 메모리 시스템에서 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법에 있어서, 송수신 데이터의 형태가 대단위 입자를 공유하는 경우에는 스펙트럼 입도 방식을 지원하고, 미세 입자를 공유하는 경우에는 캐쉬라인 전송 방식을 사용함으로써 다량 전송과 표준 로드-스토어 전송을 선택적으로 수행하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 다른 특징은, 분산 공유 메모리 시스템에서 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법중 다량 데이터 통신 방법에 있어서, 노드 콜트롤러가 로칼 노드의 캐쉬로부터 명령을 받았을 때 데이터 타입에 따라 요구하는 데이터의 크기는 지정하지 않고, 미세 입자인지 대단위 입자인지 종류만을 결정하고 그 요구를 홈노드로 전송하는 제 1 과정과, 홈노드가 대단위 입자 요구를 받았을 때 공유 패턴에 따라 입도를 결정하고 다량 데이터를 요구한 노드에 전송하는 제 2 과정과, 인접한 블록을 한 노드가 소유하고 있을 경우 두 블록을 하나의 버디로 형성하는 제 3 과정, 및 데이터가 도착하였을 때 노드 콘트롤러는 오직 요구한 라인만 캐쉬에 놓고 나머지는 미래의 캐쉬 실패에 대비하기 위하여 로칼 메모리에 설정하는 제 4 과정을 포함하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 부가적인 특징으로 상기 제 2 과정에서 공유 성능을 높이기 위하여 홈 노드는 블록의 소유권이 변할때에는 그 블록을 두 개의 버디블록으로 분할하여 각각의 소유권을 따로 가지는 과정을 더 포함하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 또 다른 특징은, 인터 콘넥션 네트워크상에 복수개의 노드들이 연결되어 있으며, 각각의 노드는 임의의 기능을 수행하는 프로세서와 메모리 및 캐쉬를 구비하고 각 노드에는 해당 노드와 다른 노드들간의 데이터 통신을 위한 노드 콘트롤러를 구비하고 있는 분산 공유 메모리 시스템의 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법에서
로칼 또 리모트 노드로부터 홈노드로의 데이터 통신방법에 있어서 :
무효(INVALID)상태와, 리드변경(READ TRANSIT)상태와, 라이트변경(WRITE TRANSIT)상태와, 리드온리(READ ONLY)상태, 및 리드라이트(READ WRITE)상태로 구성되는데, 상기 무효(INVALID)상태는 해당 노드의 프로세서가 특정 캐쉬를 참조(read/write)하려할 때 그 캐쉬에 참조하고자하는 데이터가 없을 경우에 캐쉬 라인 실패 처리 수단을 통하여 다른 노드(리모트 컴퓨터 또는 노드)로 다량 데이터 전송 또는 미세 데이터 전송을 요구하며, 상기 리드변경(READ TRANSIT)상태는 해당 노드의 프로세서가 특정 메모리 블록을 리드하려할 때 해당 블록이 캐쉬에 없을 경우에 노드 캐쉬 콘트롤러는 홈 노드로 리드요청(RREQ)를 전송하고 자신의 상태로 천위하되, 해당하는 블록에 대한 데이터가 전송될때까지 자신의 상태에서 블록킹되어 있으며, 홈 노드에서 요구한 데이터가 완전히 전송되어 실폐가 발생한 캐쉬 라인에 데이터가 로드되면 그 캐쉬 라인의 상태는 리드온리상태로 전위하고, 상기 라이트변경(WRITE TRANSIT)상태는 해당 노드의 프로세서가 특정 메모리 블록을 라이트하려할 때 해당 블록이 캐쉬에 없을 경우에 노드 캐쉬 콘트롤러는 홈 노드로 라이트요청(WREQ)를 전송하고 자신의 상태로 천위하되, 해당하는 블록에 대한 데이터가 전송될때까지 자신의 상태에서 블록킹되어 있으며, 홈 노드에서 요구한 데이터가 완전히 전송되어 실폐가 발생한 캐쉬 라인에 데이터가 로드되면 그 캐쉬 라인의 상태는 라이트온리상태로 전위하고, 상기 리드온리(READ ONLY)상태는 상기 리드변경상태에서 홈 노드에서 해당 블록이 완전히 전송되었을 때 자신의 상태로 천위하며, 해당 캐쉬 라인의 상태가 자신의 상태이며 홈 노드의 메모리 데이터를 공유한다는 의미이고, 만일 다른 노드에서 상기 홈 노드의 동일한 메모리 데이터를 라이트할 경우에 홈 노드로부터 무효화(invalidate) 요청를 받게 되면 이 캐쉬 라인에 대해서는 상기 무효상태로 회귀하며, 상기 리드라이트(READ WRITE) 상태는 상기 라이트 변경상태에서 홈 노드에서 해당 블록과 라이트허가을 받아 실폐가 발생한 캐쉬 라인에 저장을 완성 후 자신의 상태로 천이하되, 한 캐쉬 라인의 상태가 자신의 상태이면 홈 노드의 메모리 데이터에 대해서 이 노드가 소유권을 가지게 되며 만일 다른 노드에 대해서 이 홈 노드의 이 메모리 데이터를 라이트를 요구하게 되면 홈 노드는 현재 소유권을 가지고 자신의 상태를 가지는 해당 노드로 무효화 요청를 전송하게 됨에 따라 상기 무효화 요청를 받은 해당 노드가 해당 캐쉬 라인을 상기 무효로 회귀하는 데 있다.
홈 노드로부터 로칼 또는 리모트 노드로의 데이터 통신방법에 있어서:
엠피티(EMPTY)상태와, 리드온리(READ ONLY)상태와, 리드라이트(READ WRITE)상태와, 리드변경(READ TRANSIT) 상태, 및 라이트변경(WRITE TRANSIT)를 구비하되, 상기 엠피티(EMPTY)상태는 임의의 홈 노드에서 자신의 노드로 리드/라이트 요청이 전송되면, 해당 홈 노드는 이 해당 데이터가 저장된 메모리의 정보를 저장한 디렉토리를 참조하여 해당 데이터가 다량 전송 데이터인가 미세 전송 데이터인가를 상기 디렉토리내 있는 정보에 의해서 결정하는 과정에서 상기 홈 노드에서 요구된 데이터에 대한 페이지가 처음 참조될 때 디렉토리의 프로토콜 상태를 의미하며, 요청된 캐쉬 라인을 먼저 요구한 노드로 먼저 전송하고 페이지의 나머지를 연속적으로 전송하는 상태이고, 해당 요청에 대한 데이터를 전송후 리드온리상태로 천위되며; 상기 리드온리(READ ONLY)상태는 현재 홈 노드의 특정 데이터를 요구한 노드에 요구된 특정 캐쉬 라인 크기의 데이터를 먼저 요청기에 전달하고 그 요구된 특정 데이터를 포함하는 페이지의 나머지 내용을 캐쉬 라인의 연속으로 요청기에 전송한 뒤 동일한 이 블록에 대해서 리드요청(RREQ)이 홈 노드로 들어오게 되면 요구된 데이터를 위해 디렉토리를 참조하여 이 해당되는 캐쉬 라인 크기의 블록을 요청기로 전송하되 상기 요청이 벌크 데이터 전송을 위한 것이면 앞에서와 같이 이 블록이 포함되는 전체 페이지를 요청기로 전송하고; 상기 리드라이트(READ WRITE)상태는 만일 상기 리드온리상태에서 라이트요청(WREQ)를 다른 노드에서 받게 되며, 벌크 데이터 요청시 홈 노드로 전송된 요청된 라이트요청(WREQ)이 요구된 데이터의 소유권을 변화시켜 해당 홈 노드는 이 데이터가 포함된 페이지의 반을 요청기에 전송하며 물론 이 전송된 페이지 반의 소유권도 요청기가 가지게 됨은 물론 요구된 캐쉬 라인을 제외한 데이터는 전송 받은 노드의 미래를 위해서 사용되고 이 전송되는 블록의 반을 가지는 다른 노드에게 캐쉬 일관성을 유지하기 위해서 무효화 요청를 전송하면, 자신의 상태에서 엠피티 상태로 천위하며; 상기 리드변경(READ TRANSIT)상태는 인정신호를 기다리는 홈 노드가 동일한 블록에 대해서 다른 노드에서 리드 요청(RREQ)를 받았을 경우에 일단 자신의 상태로 천위 후 인정신호를 모두 받을 때까지 대기하되, 무효화 요청에 대한 인정신호들을 모두 받았을 경우에 상기 리드라이트(READ WRITE) 상태로 천위하여 자신의 상태를 유지하는 동안 받았던 리드요청과 라이트요청을 처리하고; 상기 라이트변경(WRITE TRANSIT) 상태는 무효화 시킴에 대한 인정신호를 기다리는 동안 라이트요청(WREQ)이 해당 홈노드에 들어오면 자신의 상태로 천위하게 됨과 동시에 인정신호를 기다리는 동안 전송된 리드요청과 라이트요청을 다시 처리하게 되는 데 있다.
이하, 첨부한 도면을 참조하여 본 발명에 따른 바람직한 실시예를 설명한다.
우선, 본 발명에서 사용하고하 하는 적응적 입도에 대한 개념과 그 특징에 대하여 간략히 언급하기에 앞서 공유 데이터의 입도에 대하여 살펴보면, 공유 데이터 입도는 워드와 캐쉬라인과 페이지 및 복잡한 데이터 구조등을 편의에 따라 조작할 수 있다. 가상 공유와 공간의 지역성이라는 두 개의 주요 요인은 옵티말 입자에 영향을 준다. 데이터의 동일 블록안에 다른 장소 다른 프로세서로부터 가상 공유가 이루어진다. 데이터 증가의 미소의 크기로서, 공간 지역성이 개발되는 때라도 가상공간의 가능성이 증가한다.
따라서, 적응형 입도 뒤의 주 아이디어는 각 노드의 억세스 패턴을 기초로 공유 데이터의 미세 크기를 세팅하는 동적이고 명백한 허가 프로그램인 코히어런스 프로토콜의 사용에 있다. 큰 어레이(벌크 데이터)와 작은 어레이와 스칼라 데이터(노말 데이터)의 두 그룹간의 특색에 의하여 시작된다. 벌크 데이터에 접합한 최선의 조직크기를 결정하기 위한 적합한 계획을 세운 동안 노말 데이터의 입도는 항상 캐쉬라인에 존재하는 것이다.
또한, 본 발명에 따른 적응형 입도는 데이터 다량전송을 분산 공유 메모리 모델에서 투명적으로- 즉, 프로그래머는 데이터 다량전송을 위하여 어떠한 특별한 조치도 취하지 않음-통합한다. 상기 적응형 입도의 가장큰 특징은 가변크기의 입도와 메모리 복제를 지원하지만 공유메모리의 특징인 프로그래밍의 용이성을 희생하지 않는다는 점이다. 가변크기의 입도를 위하여 적응형 입도는 제한된 그러나 유연한 조합의 입도를 즉, 캐쉬라인 크기부터 페이지크기까지 지원한다. 이기법은 부가적인 하드웨어를 요구하지 않으면서 데이터 다량 전송 기능의 효율적인 지원을 가능하게 해준다.
이때, 입도(granuality)란 용어를 공유단위(sharing unit)로 정의 즉, 다중 컴퓨터 시스템에서 서로 다른 컴퓨터 또는 노드들끼리 데이터를 공유하게 되는데 이 공유 데이터의 단위를 의미한다. 이를 예로들면, 캐쉬 라인 또는 페이지가 공유단위에 해당한다.
따라서, 본 발명에 따른 적응형 입도 프로토콜은 두가지 프로토콜로 구성되어 있는데, 하나는 미세입자 데이터를 위한 것이고 다른 하나는 다량 데이터를 위한 것이다. 즉, 적응형 입도 프로토콜은 하드웨어 DSM 프로토콜과 벌크 데이터 프로토콜로 구성된다.
작은 크기의 데이터를 위해서는 역시 미세입자를 억세스하며 캐쉬라인인 입도와 하드웨어 DSM 프로토콜을 사용한다. 큰 크기의 데이터를 위한 액세스 패턴을 예견하는 것은 어렵기 때문에, BDP프로토콜을 사용하고, 입도는 공유 패턴에 따라 변경된다. BDP와 HDP프로토콜은 상태의 수와 변환점 상태에서 완전히 유사하지만, 변화가능한 입도 크기를 능률적으로 제공한다.
따라서, 스칼라 데이터와 작은 크기의 배열 데이터에는 표준 하드웨어 프로토콜이 사용되며 입도는 캐쉬라인으로 고정되어 있다. 큰 크기의 배열 데이터에는 다량 데이터 프로토콜이 사용되며, 입도는 실행중에 공유 패턴에 따라 변화한다. 다량 데이터 프로토콜의 대략적인 개요는 다음과 같다.
첨부한 도 2a와 도 2b는 적응형 입도를 위한 상태 통합에 관련한 다이어그램을 도시한 것으로, 도 2a는 로칼/리모트 노드를 위한 프로토콜 통합에 관련한 다이어그램이며, 도 2b는 홈 노드를 위한 프로토콜 통합에 관련한 다이어그램이다.
이때, 상기 도 2a와 도 2b에 도시되어 있는 신호 타입 즉, 로칼과 리모트 및 홈 노드들간의 메시지 타입은 아래의 표 1과 같다.
신호전달방향 | 신호명 | 신호특성 |
로칼, 리모트 노드⇒ 홈 노드 | RREQ | 리드 데이터 요청 |
WREQ | 쓰기 데이터 요청 | |
ACK | 응답 무효 | |
WACK | Ack. write imv. and returns data | |
로칼 캐쉬 ⇒로칼 노드 콘트롤러 | REPR | 읽기 데이터 복귀 |
REPW | 쓰기 데이터 복귀 | |
홈 노드 ⇒로칼, 리모트 노드 | RDATA | 읽기 데이터 응답 |
WDATA | 쓰기 데이터 응답 | |
RDATAM | 벌크 읽기 데이터의 전송 정지 | |
WDATAM | 벌크 쓰기 데이터의 전송 정지 | |
WSHIP | 소유권 변경 | |
BUSY | 통합 상태 | |
INV | 무효 데이터 요청 |
상기 표 1과 도 2a 및 도 2b를 참조하여 로칼/리모트 노드와 홈노드의 동작을 구분하여 살펴 보기로 한다.
이때, 상기 도 2a와 도 2b에 도시되어 있는 상태 다이어그램은 모두 기존의 분산 공유 메모리 다중 프로세서 컴퓨터 시스템의 경우에서의 캐쉬 일관성 유지 프로토콜, 즉, 미세 통신의 경우 앞에서 기존의 분산 공유 메모리 시스템의 프로토콜(HDP)를 그래로 사용하며, 벌크 데이터 전송을 위한 프로토콜을 위해서 새로운 프로토콜을 추가한 것이다.
그리고, 좀더 언급하면 다음 상태 다이아그램에서 벌크 데이터 전송에 대해 언급한 부분외의 부분은 미세입자에 대한 송수신 프로토콜과 거의 동일하다. 하지만, 이러한 벌크 데이터 전송에 대한 기능 지원을 위한 추과기능으로 벌크 요청에 대해 추과적인 기능을 넣었다.
도 2a는 로칼/리모트 노드의 각각의 캐쉬내에 있는 캐쉬 라인의 상태를 를 나타내며, 도 2b는 도 2a의 local/리모트 노드의 프로토콜 동작에 대한 홈 노드 디렉토리 상태를 나타낸다.
우선, 로칼/리모트 노드에서의 동작을 살펴보면, 로칼과 리모트 노드는 첨부한 도 2a에 도시되어 있는 바와 같은 통합 다이어그램의 수행에 의한 일관된 NCPT(Node Controller Page Table)를 사용한다.
각 상태에서의 동작특성을 살펴보면, "INVALID" 상태는 프로세서가 특정 캐쉬를 참조(read/write)하려할 때 그 캐쉬에 참조하고자하는 데이터가 없을 경우에(참조하고자하는 캐쉬 라인이 무효상태) 현재 이 상태가 된다. 이때, 캐쉬 라인 실패 처리기(cache line fault handler)가 수행하여 다른 노드(리모트 컴퓨터 또는 리모트 노드)로 다량 데이터 전송 또는 미세 데이터 전송을 요구한다. 단, 도 2a에서 프로세서가 단지 load/store의 명령을 캐쉬가 받으면 캐쉬 실폐시에 RREQ or WREQ를 홈 노드로 전송되며 이러한 전송은 노드 콘트롤러에 의해서 홈 노드로 전송된다. 이때, 다음에 설명되겠지만 홈 노드에서는 이 캐쉬 라인에 대한 요청를 처음 받았을 경우에 "EMPTY 상태"에서부터 시작한다.
또한, "READ TRANSIT 상태"는 프로세서가 특정 메모리 블록을 리드하려할 때 해당 블록이 캐쉬에 없을 경우에 노드 캐쉬 콘트롤러는 홈 노드로 리드요청(RREQ)를 전송하고 "READ TRANSIT상태"로 천위한다. 이때, 해당하는 블록에 대한 데이터가 전송될때까지 "READ TRANSIT상태"에서 블록킹(blocking: 해당 블록을 참조하려는 요구에 대해서 아무런 동작도 하지 않고 기다리고 있는 상황)되어 있다. 홈 노드에서 요구한 데이터가 완전히 전송(도 2a에서 RDATA/RDATAM)되어 실폐가 발생한 캐쉬 라인에 데이터가 로드되면 그 캐쉬 라인의 상태는 "READ ONLY 상태"로 천위된다. 만일 다량 데이터 전송(Bulk Data transfer)시 홈 노드에서 실폐가 발생한 캐쉬 라인이 먼저 발생하고 그 데이터가 포함된 블록의 반도 동시에 전송되는데 이를 위해서 블록의 반이 완전히 전송될 때까지 "READ TRANSIT 상태"에 있어야 한다. 그래서, 완전히 벌크 데이터가 전송이 끝나면 "READ ONLY 상태"로 천위하게 된다.
또한, "WRITE TRANSIT 상태"는 상술한 "READ TRANSIT 상황"과 같은데, 차이점은 리드 할때가 아닌 라이트할 때 천위하는 상태이다. 물론, 홈 노드에서 해당 블록과 라이트 허가가 전송되어 캐쉬 실폐가 발생한 캐쉬 라인에 라이트가 완성되면 캐쉬 라인의 상태는 "WRITE ONLY 상태"로 천위된다. 만일 다량 데이터 전송(Bulk Data transfer)시 홈 노드에서 실폐가 발생한 캐쉬 라인이 먼저 발생하고, 그 데이터가 포함된 블록의 반도 동시에 전송되는데 이를 위해서 블록의 반이 완전히 전송될 때까지 "READ TRANSIT 상태"에 있어야 한다. 그래서, 완전히 벌크 데이터가 전송이 끝나면 "READ ONLY 상태"로 천위한다.
또한, "READ ONLY 상태"는 상기 "READ TRANSIT 상태"에서 홈 노드에서 해당 블록이 완전히 전송되었을 때 "READ ONLY 상태"로 천위한다. 해당 캐쉬 라인의 상태가 "READ ONLY 상태"이면 홈 노드의 메모리 데이터를 공유한다는 의미이고, 만일 다른 노드이 이 홈 노드의 동일한 메모리 데이터를 라이트할 경우에 홈 노드로부터 INV(invalidate 요청)를 받게 되면 이 캐쉬 라인에 대해서는 상기 "INVALID 상태"로 돌아간다.
또한, "READ WRITE 상태"는 상기 "WRITE TRANSIT 상태"에서 홈 노드에서 해당 블록과 라이트 허가을 받아 실폐가 발생한 캐쉬 라인에 저장을 완성 후 "READ WRITE 상태"로 천위한다. 만일, 한 캐쉬 라인의 상태가 "READ WRITE 상태"이면 홈 노드의 메모리 데이터에 대해서 이 노드가 소유권(ownership)을 가지게 되며 만일 다른 노드에 대해서 이 홈 노드의 이 메모리 데이터를 라이트를 요구하게 되면 홈 노드는 현재 소유권을 가지고 "READ WRITE 상태"를 가지는 현재 이 노드로 INV(invalidate 요청)를 전송하게 된다. 이 요청를 받은 이 노드(이 블록에 대해 현재까지 소유권을 가지고 있었음)는 해당 캐쉬 라인을 "INVALID 상태"로 보내게 된다. 그럼으로서 이 노드는 뮤효(invalid)된 캐쉬 블록에 대해서는 더 이상 소유권을 가지지 않는다.
따라서, 실제 페이지의 하나는 로칼 물리적 메모리에 매핑되어 있으며, 캐쉬 라인에 대한 첫 번째 억세스는 라인 억세스 결함 핸들러의 실행에 따른 인벨리드 결과에 붙인다. 상기 핸들러는 홈 노드의 ID를 회복하고 벌크 또는 노말 요청을 착수한다. 이러한 상태는 첨부한 도 2a에서 1과 2로 표시되어 있다. 홈 노드에서 메시지는 리턴 데이터와 코히어런스 동작을 적당히 수행하는 핸들러를 발동한다. 이는 캐쉬 라인의 순서와 같이 블록의 잔여분과 벌크 전송을 위함 및 첫 번째 캐쉬 라인 요청에 의해 이루어진다.
능률적으로 메모리와 네트워크 밴드폭을 이용한다. 캐쉬라인 요청이 도착하면, 코러스판딩(corresponding) 메시지 핸들러는 READ-ONLY 모듈(상태)이든가 또는 READ-WRITE 모듈(상태)이든가에 라인의 억세스 상태를 변화시키며 캐쉬 속으로 데이터를 쓴다. 더욱이, 벌크 전송을 위해, 핸들러 역시 TRANSIT 모듈(상태)에서 기다린 데이터의 상태를 변화하며, 벌크내 데이터의 억세스는 질의 도착시 라인에서 정지된다.
홈 노드로 불필요한 요청들을 전송하는 것을 피한다. 이러한 상태는 첨부한 도 2a에서 10, 11, 13, 및 14로 표시되어 있다. 첨부한 도 2a에서 12와 15로 표시된 시간에 라인에 도착한 벌크데이터의 정지시, 메시지 핸들러는 로칼 메모리 속으로 쓰며 그들의 상태를 변화시킨다.
이상으로 로칼/리모트 노드에서의 동작 상태를 살펴보았으므로, 첨부한 도 2b를 참조하여 홈 노드에서의 동작 상태를 살펴보기로 한다. 이때, 로칼/리모트 노드와 홈 노드에서의 동작중 적응형 입도를 위한 상태 변환 테이블을 나타내고 있는 도 3에 도시되어 있는 데이터 테이블이 기준이된다.
우선, 도 2b에 도시되어 있는 각 모듈(상태)에 대하여 살펴보면, "EMPTY 상태"는 이 홈 노드로 리드/라이트 요청이 전송되면, 이 홈 노드는 이 해당 데이터가 저장된 메모리의 정보를 저장한 디렉토리(directory)를 참조한다. 이때, 해당하는 데이터가 다량 전송 데이터인지 아니면 미세 전송 데이터인지 디렉토리내 있는 정보에 의해서 결정된다. 이 홈 노드에서 요구된 데이터에 대한 페이지가 처음 참조될 때 디렉토리의 프로토콜 상태가 "EMPTY 상태"이다. 이 상태가 의미하는 것은 요청된 캐쉬 라인을 먼저 요구한 노드로 먼저 전송하고 페이지의 나머지를 연속적으로 전송하는 상태임을 의미. 이때, 해당하는 요청에 대한 데이터를 전송후 홈 노드의 상태는 "READ ONLY 상태"로 천위된다.
또한, "READ ONLY 상태"는 현재 홈 노드의 특정 데이터를 요구한 노드에 요구된 특정 캐쉬 라인 크기의 데이터를 먼저 요청기에 전달하고 그 요구된 특정 데이터를 포함하는 페이지의 나머지 내용을 캐쉬 라인의 연속으로 요청기에 전송한다. 그 뒤 동일한 이 블록에 대해서 RREQ가 홈 노드로 들어오게 되면 요구된 데이터를 위해디렉토리를 참조하여 이 해당되는 캐쉬 라인 크기의 블록을 요청기로 전송한다. 이때, 상기 요청이 벌크 데이터 전송을 위한 것이면 앞에서와 같이 이 블록이 포함되는 전체 페이지를 요청기로 전송한다.
또한, "READ WRITE 상태"는 만일 "READ ONLY 상태"에서 WREQ의 요청를 다른 노드에서 받게 된다. 벌크 데이터 요청시 홈 노드로 전송된 요청, WREQ가 요구된 데이터의 소유권을 변화, 즉, 요청기가 이 데이터의 소유권을 요구하는 경우이며, 이 홈 노드는 이 데이터가 포함된 페이지의 반을 요청기에 전송하며 물론 이 전송된 페이지 반의 소유권도 요청기가 가지게 된다. 물론 요구된 캐쉬 라인을 제외한 데이터는 전송 받은 노드는 미래를 위해서 사용된다. 그리고, 중요한 것은 미리 전송된 페이지의 반중에서 요청기가 요구한 캐쉬 라인은 전송 즉시 요청기 자신의 캐쉬에 저장하며 나머지는 자신의 국부 메모리(local memory)에 저장후 필요할 때마다 다른 노드의 메모리에서 데이터를 읽어오는 것이 아니라 미리 읽어와서 국부 메모리에 저장된 데이터를 참조하게 된다. 이때, 전체 성능의 큰 개선이 읽어난다. 이 전송되는 블록의 반을 가지는 다른 노드에게 캐쉬 일관성(cache coherency)을 유지를 위해서 INV(invalidate 요청)를 전송한다. 그리고, 홈 노드는 "READ WRITE 상태"에서 "EMPTY 상태"로 천위하게 된다. 이때, 홈 노드에서 캐쉬 일관성 유지를 위해서 다른 노드로 INV 요청를 전송을 하면 반드시 무효로 만들었음을 확인하기 위해서 인정신호(acknowledge: ACK)를 받게 된다. 해당 블록의 데이터를 가지는 노드들에서 인정신호를 기다리는 동안 INV가 전송되진 않은 다른 노드에서 이 블록에 대해 RREQ/WREQ가 홈 노드로 전송되어 들어오게 되면 RREQ인 경우에는 도 2b의 "READ TRANSIT 상태"로 천위하고 WREQ인 경우에 "WRITE TRANSIT 상태"로 천위하여 일단 모든 인정신호를 홈 노드가 받을때까지 요구된 RREQ/WREQ에 대한 프로토콜 처리를 중단한다. 단, 다른 노드로 전송되고 남은 블록의 반은 다시 다른 리모트 노드의 요청에 의해서 참조가 가능하다. 물론, 앞에서처럼 WREQ가 전송되어 원하는 데이터의 소유권을 원하는 다량 전송 요청에 대해 "READ WRITE 상태"의 동작 과정을 계속 반복하게 된다.
또한, "READ TRANSIT 상태"는 앞서 언급한 "READ WRITE 상태"와 같이 인정신호를 기다리는 홈 노드가 동일한 블록에 대해서 다른 노드에서 리드 요청(RREQ)를 받았을 경우에 일단 "READ TRANSIT 상태"로 천위 후 인정신호를 모두 받을 때까지 기다리게 한다. 물론, 무효화 요청(invalidate reqeust)에 대한 인정신호들을 모두 받았을 경우에 "READ WRITE 상태"로 천위하여 "READ TRANSIT 상태"동안 받았던 RREQ/WREQ 요청를 처리한다.
또한, "WRITE TRANSIT 상태는 앞서 언급한 "READ TRANSIT 상태"와 같지만, 무효화 시킴에 대한 인정신호를 기다리는 동안 라이트요청(WREQ)이 홈노드에 들어오면 "WRITE TRANSIT 상태"로 천위하게 된다. 물론, 인정신호를 기다리는 동안 전송된 RREQ/WREQ를 다시 처리하게 된다.
따라서, 홈 노드에 벌크 요청이 도착하면, 첨부한 도 2b에 도시되어 있는 바와같이 표준 하드웨어 분산 공유 메모리 프로토콜에 따른 동작을 취한다. HDP와 BDP사이의 유일한 차이점은 디렉토리 사용 방식에 있다. 상기 BDP는 가변 입도를 제공함에 디렉토리 필드(그레인 사이즈: grain size)를 부가하여 사용한다.
초기에, 메모리 블록의 그레인 사이즈는 페이지(그림내 IN)내 캐쉬라인의 수로 세팅되며, 같은 페이지에 속하는 데이터 모두를 위해 대표하는 디렉토리 엔트리는 D[(p,0)]이다.
첨부한 도 2b에 도시되어 있는 바와같이, 어드레스(p,i)를 갖는 RREQ 또는 WREQ 벌크 메시지를 홈 노드가 리시브하는 경우 홈 노드 디렉토리 핸들러는 첫 번째로 대표적인 D[(p,0)]를 검색한다. 이러한 계획을 가지고, 페이지가 개개의 캐쉬라인 속에 존재하는 드문 경우에 검색은 대부분의 log2N에 코스트가 발생하는 반면에, 디렉토리 운영 예를들어 합병하고 분리하는 데에는 능률적이다. 더욱이, RREQ 와 WREQ 메시지는 오직 디렉토리 검색이 필요하다. 또 다른 승인같은 메시지들은 연합한 어드레스와 크기를 나른다. 이것은 대표자에게 직접의 액세스를 핸들러가 만들는 것을 허락합니다.
디렉토리내 대표적인 엔트리를 고친 이후, 그들이 벌크 데이터를 뒤로 보내기 이전에 핸들러는 동일한 동작을 취한다. 특히, 페이지의 첫 번째 타임은 EMPTY인 D[(p,0)]와 로칼노드의 전체 페이지를 전송하는 그러한 핸들러를 위한 상태를 억세스한다. 그레이 크기가 페이지당 캐쉬라인의 수에 대응하는 변수 N이 세팅되고, 대표적인 상태는 변화된다. 이러한 상태는 첨부한 도 2b에 도시되어 있는 31과 32에 의해 대표된다. 벌크 요청이 예를들어 READ-ONLY 모듈에서 READ-WRITE 모듈로 천이되는 바와같은 소유전의 이전를 요청하면, 메모리 블록은 동일한 크기의 두 서브 블록으로 분리된다. 오직 캐쉬라인 요청을 포함하는 서브 블록의 소유권이 변화된다. 핸들러는 서브 블록 대표 엔트리들을 업 데이터하고 서브 블록을 감춘 모든 리모트 노드에 INV메시지를 전송한다. 오리지널 블록의 다른 반을 노트하는 것은 손대지 않는데, 리모트 노드들은 그것의 지속적인 억세스를 할 수 있다. 이러한 상태는 첨부한 도 2b에 도시되어 있는 상태 다이어그램에서 34, 35, 및 36으로 표시되는 것에 의해 설명된다.
첨부한 도 2b에 40과 41로 표시되는 바와같이 홈 노드에 모든 승인들이 최종적으로 도착하면, 핸들러는 로칼 노드에 서브 블록을 전송한다. 이때에, 블록 그레이 크기가 최소 입도인 1이면 핸들러는 이웃한 버디들이 동일상태를 갖고 동일 노드에 의한 소유되며 다른 노드들에 데이터 캐싱이 있는 통합이 가능하며 이러한 공정 지속이 가능하도록 하기 위하여 두 버디들의 디렉토리를 체크한다.
상기 도 2a와 도 2b에 도시되어 있는 프로토콜 통합에 관련한 다이어그램을 테이블로 형성한 것이 도 3인데, 첨부한 도 3에 도시되어 있는 데이터 테이블의 의미를 몇가지 예를들어 살펴보기로 하면, 로칼 캐쉬에서 노드 콘트롤러측으로 전달되는 상태 테이블중 인밸리드 모듈(상태)에서 리드 트랜시트 모듈(상태)로 천이시 즉, 메시지 타입이 LOAD(1)인 경우 NCPT[(p,i)].S가 인밸리드 모듈(상태)에 있는 경우이므로 디터마인 타입의 동작을 취하여 홈 노드측으로 리드 데이터 요청신호(RREQ)를 전송한다는 의미가 나타나 있다.
또 다른 예로서, 인밸리드 모듈(상태)에서 라이트 트랜시트 모듈(상태)로 천이시 즉, 메시지 타입이 STORE(2)인 경우 NCPT[(p,i)].S가 인밸리드 모듈(상태)에 있는 경우이므로 디터마인 타입의 동작을 취하여 홈 노드측으로 쓰기 데이터 요청신호(WREQ)를 전송한다.
이와 같은 방식에 의해 각 메시지 타입에 따른 각 노드들간의 데이터 통신이 이루어지며, 상태 천이가 이루어진다.
이때, 도 3에서 사용된 변수중 NCPT[].S는 상태를 나타내며, NCPT[].f는 캐쉬 존재 비트를 나타내고, N은 페이지당 캐쉬라인을 나타내며, D[].S는 상태를 나타내고, D[].g는 그레인 크기를 나타내며, D[].c는 노드 카운터를 나타내고, D[].m은 맨버쉽 세트를 나타내며, D[].a는 ACK 카운터를 나타낸다.
이와 같은 프로토콜 즉, AG프로토콜은 두가지 프로토콜로 구성되어 있는데, 하나는 미세입자 데이터를 위한 것이고 다른 하나는 다량 데이터를 위한 것이다. 스칼라 데이터와 작은 크기의 배열 데이터에는 표준 하드웨어 프로토콜이 사용되며 입도는 캐쉬라인으로 고정되어 있다. 큰 크기의 배열 데이터에는 다량 데이터 프로토콜이 사용되며, 입도는 실행중에 공유행동에 따라 변화한다. 다량 데이터 프로토콜의 대략적인 개요는 다음과 같다.
노드 콜트롤러가 로칼 캐쉬로부터 명령을 받았을 때 데이터 타입에 따라 요구하는 데이터의 크기는 지정하지 않고, 통신의 종류만을 결정하고 그 욕구를 홈노드에 보낸다. 홈노드가 다량 요구를 받았을 때 공유 패턴에 따라 입도를 결정하고 다량 데이터를 요구한 노드에 전송한다. 가상공유를 줄이기 위하여 홈 노드는 블록의 소유권이 변할때에는 그 블록을 둘로 분활한다.
더많은 로칼 공간을 이용하기 위하여 두 개의 입접 블록이 같은 노드가 소유하고 있을때에는 두 블록을 하나의 블록으로 합한다. 데이터가 도착하였을 때 노드 콘트롤러는 오직 요구한 라인만 캐쉬에 놓고 나머지는 미래의 캐쉬 실패를 만족하기 위하여 로칼 메모리에 놓는다.
상술한 내용을 간추리면, 본 발명에 따른 적응형 입도는 가변크기의 입도와 메모리 응답을 제공하는 것에 의하여 분산 메모리 모델로 명확하게 인티그레이트 벌크를 전송하는 것을 가능하게 한다. 적응형 입도는 두 개의 프로토콜로 구성하며, 하나는 작은 데이터를 위하여 다른 하나는 큰 데이터를 위한 것이다. 작은 크기의 데이터를 위하여 표준 하드웨어 분산 공유 메모리 프로토콜이 사용되고 그 입도는 캐쉬 라인의 사이즈에 고정된다. 큰 크기의 어레이 데이터를 위하여 벌크 데이터를 위한 프로토콜이 대신 사용된다. 그리고 그 입도는 실행시 어플리케이션의 분산 행동에 의존해서 바뀐다.
또한, 본 발명에서는 벌크 데이터 프로토콜(Bulk Data Protocol:BDP)에서도 이와 유사한 프로토콜을 사용하며 이러한 디렉토리를 사용한다. 하지만, HDP와 BDP의 디렉토리의 차이점은 BDP에서는 미세 통신과 대단위 통신을 효율적으로 동시에 지원하기 위해 디렉토리의 엔트리에 한 개의 요소를 추과로 포함시켰다. 그 요소는 그레인 크기(grain size)를 저장하는 요소이다.
따라서, 본 발명에 따른 분산 공유 메모리에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법을 종래 기술과 비교한 시뮬레이션 결과를 첨부한 도 4 내지 도 6를 참조하여 살펴보면, 도 4은 디폴트 머신 파라메타를 위한 실험 결과 그래프이며, 도 5는 도 4에서와 동일한 조건속에서 구조상의 파라메타 변화의 효과를 나타내는 실험 결과 그래프이고, 도 6는 도 4에서와 동일한 조건속에서 적응형 입도 기초에 최적화시킨 효과를 나타내는 실험 결과 그래프이다.
이때, 상기 각 실험 결과를 얻기 위한 파라메타는 표 2와 같다.
공통 파라메타 | Memory consistency | sequential |
Memory access latency | 35 cycles | |
CPU cache | direct-map | |
Cache line size | 16 bytes | |
Cache size | 4 Kbytes | |
Page size | 4 Kbytes | |
TLB miss | 25 cycles | |
Switch delay | 2 cycles | |
Wire delay | 2 cycles | |
Channel width | 2 bytes | |
FG 핸들러 오버헤드 | Memory request | 14 cycles |
Memory reply | 30 cycles | |
Data arrival | 20 cycles | |
AG 핸들러 오버헤드 | Memory request | 14 cycles |
Memory reply | 40 cycles | |
Data arrival | 20 cycles |
또한, 각 비교 프로그램의 구성 특징은 아래의 표 3에 나타나 있다.
프로그램 | 설명 | 입력 데이터 세트 |
Cholesky | Sparse Cholesky factorization | bcsstk 14 |
FFT | 고속 퓨리에 변환 | 64K complex points |
LU | 블록 LU 인수분해 | 260×260 |
Radix | inter radix sort | 256K Keys, radix=1024 |
또한, 캐쉬 실폐의 시뮬레이션 결과 분해 테이블은 아래의 표 4와 같다.
프로그램 | 시스템 | 실폐율 | 실폐분담율 | ||||
로칼 | 리모트 | private | |||||
reading | writing | reading | writing | R+W | |||
Cholesky | HW | 9.6 | 3.3 | 0.9 | 71.1 | 13.9 | 10.8 |
FG | 9.6 | 73.1 | 1.7 | 7.9 | 7.3 | 10.0 | |
AG | 9.6 | 73.3 | 3.0 | 8.2 | 8.0 | 7.5 | |
FFT | HW | 18.6 | 3.1 | 2.0 | 49.3 | 32.9 | 12.7 |
FG | 18.6 | 28.7 | 23.1 | 23.6 | 11.9 | 12.7 | |
AG | 18.6 | 51.2 | 24.3 | 1.2 | 0.6 | 12.7 | |
LU | HW | 11.6 | 1.1 | 0.0 | 63.8 | 32.9 | 2.2 |
FG | 11.6 | 58.9 | 31.9 | 6.0 | 1.0 | 2.2 | |
AG | 11.6 | 64.7 | 32.9 | 0.2 | 0.0 | 2.2 | |
Radix | HW | 8.8 | 1.4 | 2.1 | 41.5 | 51.4 | 3.6 |
FG | 8.8 | 35.4 | 42.0 | 7.4 | 11.2 | 4.0 | |
AG | 8.8 | 38.9 | 49.2 | 3.9 | 4.0 | 4.0 |
따라서, 첨부한 도면중 도 4에서 도 6까지의 도면과 표 2내지 표 4를 참조하여 살펴보면, 본 발명에 따른 적응형 입도는 분산 공유 메모리의 하드웨어 실행에 관하여 43%의 성능 증가를 보였다. 캐쉬라인의 고정된 입도에서 FINE-MEMORY 응답을 지원하는 등가의 구조와 비교해서 적응형 입도는 실행시간이 35% 감소를 보였다.
상술한 바와 같이 동작하는 본 발명에 따른 분산 공유 메모리에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법을 이용하면, 대단위 입자 공유에 대해서는 스펙트럼의 입도를 지원함으로써 다량 전송의 잇점들을 이용할 수 있으며, 미세 입자공유에 대해서는 캐쉬라인 전송을 사용함으로써 표준 로드-스토어 통신의 잇점을 이용할 수 있다는 효과가 있다.
또한, 분산 공유 메모리 모델에 투명적으로 다량 데이터 통신을 효율적으로 지원함으로 기존의 방법이 이를 위해서 프로그램을 수정해야하는 큰 문제점을 해소할 수 있으며 프로그램 수정등의 과정 없이도 미세 입자 데이터와 다량 데이터 통신을 동시에 효과적으로 지원한다.
Claims (5)
- 인터 콘넥션 네트워크상에 복수개의 노드들이 연결되어 있으며, 각각의 노드는 임의의 기능을 수행하는 프로세서와 메모리 및 캐쉬를 구비하고 각 노드에는 해당 노드와 다른 노드들간의 데이터 통신을 위한 노드 콘트롤러를 구비하고 있는 분산 공유 메모리 시스템의 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법에 있어서, 송수신 데이터의 형태가 대단위 입자를 공유하는 경우에는 스펙트럼 입도 방식을 지원하고, 미세 입자를 공유하는 경우에는 캐쉬라인 전송 방식을 사용함으로써 다량 전송과 표준 로드-스토어 전송을 선택적으로 수행하는 것을 특징으로 하는 분산 공유 메모리 시스템의 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법.
- 인터 콘넥션 네트워크상에 복수개의 노드들이 연결되어 있으며, 각각의 노드는 임의의 기능을 수행하는 프로세서와 메모리 및 캐쉬를 구비하고 각 노드에는 해당 노드와 다른 노드들간의 데이터 통신을 위한 노드 콘트롤러를 구비하고 있는 분산 공유 메모리 시스템의 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법중 다량 데이터 통신 방법에 있어서,노드 콜트롤러가 로칼 노드의 캐쉬로부터 명령을 받았을 때 데이터 타입에 따라 요구하는 데이터의 크기는 지정하지 않고, 통신의 종류만을 결정하고 그 욕구를 홈노드로 전송하는 제 1 과정과;홈노드가 다량 요구를 받았을 때 공유 패턴에 따라 입도를 결정하고 다량 데이터를 요구한 노드에 전송하는 제 2 과정과;두 개의 인접 블록을 같은 노드가 소유하고 있을 경우 두 블록을 하나의 버디로 형성하는 제 3 과정; 및데이터가 도착하였을 때 노드 콘트롤러는 오직 요구한 라인만 캐쉬에 놓고 나머지는 미래의 캐쉬 실패를 만족하기 위하여 로칼 메모리에 설정하는 제 4 과정을 포함하는 것을 특징으로 하는 분산 공유 메모리 시스템의 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법.
- 제 2 항에 있어서,상기 제 2 과정 이후 가상공유를 줄이기 위하여 홈 노드는 블록의 소유권이 변할때에는 그 블록을 둘로 분할하여 분할 과정을 더 포함하는 것을 특징으로 하는 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법.
- 인터 콘넥션 네트워크상에 복수개의 노드들이 연결되어 있으며, 각각의 노드는 임의의 기능을 수행하는 프로세서와 메모리 및 캐쉬를 구비하고 각 노드에는 해당 노드와 다른 노드들간의 데이터 통신을 위한 노드 콘트롤러를 구비하고 있는 분산 공유 메모리 시스템의 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법중 다량 데이터 통신 방법중 로칼 또는 리모트 노드에서 홈노드로의 데이터 통신방법에 있어서:무효(INVALID)상태와, 리드변경(READ TRANSIT)상태와, 라이트변경(WRITE TRANSIT)상태와, 리드온리(READ ONLY)상태, 및 리드라이트(READ WRITE)상태로 구성되는데,상기 무효(INVALID)상태는 해당 노드의 프로세서가 특정 캐쉬를 참조(read/write)하려할 때 그 캐쉬에 참조하고자하는 데이터가 없을 경우에 캐쉬 라인 실패 처리 수단을 통하여 다른 노드(리모트 컴퓨터 또는 노드)로 다량 데이터 전송 또는 미세 데이터 전송을 요구하며;상기 리드변경(READ TRANSIT)상태는 해당 노드의 프로세서가 특정 메모리 블록을 리드하려할 때 해당 블록이 캐쉬에 없을 경우에 노드 캐쉬 콘트롤러는 홈 노드로 리드요청(RREQ)를 전송하고 자신의 상태로 천위하되, 해당하는 블록에 대한 데이터가 전송될때까지 자신의 상태에서 블록킹되어 있으며, 홈 노드에서 요구한 데이터가 완전히 전송되어 실폐가 발생한 캐쉬 라인에 데이터가 로드되면 그 캐쉬 라인의 상태는 리드온리상태로 전위하고;상기 라이트변경(WRITE TRANSIT)상태는 해당 노드의 프로세서가 특정 메모리 블록을 라이트하려할 때 해당 블록이 캐쉬에 없을 경우에 노드 캐쉬 콘트롤러는 홈 노드로 라이트요청(WREQ)를 전송하고 자신의 상태로 천위하되, 해당하는 블록에 대한 데이터가 전송될때까지 자신의 상태에서 블록킹되어 있으며, 홈 노드에서 요구한 데이터가 완전히 전송되어 실폐가 발생한 캐쉬 라인에 데이터가 로드되면 그 캐쉬 라인의 상태는 라이트온리상태로 전위하고;상기 리드온리(READ ONLY)상태는 상기 리드변경상태에서 홈 노드에서 해당 블록이 완전히 전송되었을 때 자신의 상태로 천위하며, 해당 캐쉬 라인의 상태가 자신의 상태이며 홈 노드의 메모리 데이터를 공유한다는 의미이고, 만일 다른 노드에서 상기 홈 노드의 동일한 메모리 데이터를 라이트할 경우에 홈 노드로부터 무효화(invalidate) 요청를 받게 되면 이 캐쉬 라인에 대해서는 상기 무효상태로 회귀하며;상기 리드라이트(READ WRITE) 상태는 상기 라이트 변경상태에서 홈 노드에서 해당 블록과 라이트허가을 받아 실폐가 발생한 캐쉬 라인에 저장을 완성 후 자신의 상태로 천이하되, 한 캐쉬 라인의 상태가 자신의 상태이면 홈 노드의 메모리 데이터에 대해서 이 노드가 소유권을 가지게 되며 만일 다른 노드에 대해서 이 홈 노드의 이 메모리 데이터를 라이트를 요구하게 되면 홈 노드는 현재 소유권을 가지고 자신의 상태를 가지는 해당 노드로 무효화 요청를 전송하게 됨에 따라 상기 무효화 요청를 받은 해당 노드가 해당 캐쉬 라인을 상기 무효로 회귀하는 것을 특징으로 하는 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법중 로칼/리모트 노드에서의 홈노드간 통신 방법.
- 인터 콘넥션 네트워크상에 복수개의 노드들이 연결되어 있으며, 각각의 노드는 임의의 기능을 수행하는 프로세서와 메모리 및 캐쉬를 구비하고 각 노드에는 해당 노드와 다른 노드들간의 데이터 통신을 위한 노드 콘트롤러를 구비하고 있는 분산 공유 메모리 시스템의 데이터 읽기 쓰기를 위한 각 메모리들 간의 데이터 통신 방법중 다량 데이터 통신 방법중 홈 노드에서 로칼 또는 리모트 노드로의 데이터 통신방법에 있어서:엠피티(EMPTY)상태와, 리드온리(READ ONLY)상태와, 리드라이트(READ WRITE)상태와, 리드변경(READ TRANSIT) 상태, 및 라이트변경(WRITE TRANSIT)를 구비하되,상기 엠피티(EMPTY)상태는 임의의 홈 노드에서 자신의 노드로 리드/라이트 요청이 전송되면, 해당 홈 노드는 이 해당 데이터가 저장된 메모리의 정보를 저장한 디렉토리를 참조하여 해당 데이터가 다량 전송 데이터인가 미세 전송 데이터인가를 상기 디렉토리내 있는 정보에 의해서 결정하는 과정에서 상기 홈 노드에서 요구된 데이터에 대한 페이지가 처음 참조될 때 디렉토리의 프로토콜 상태를 의미하며, 요청된 캐쉬 라인을 먼저 요구한 노드로 먼저 전송하고 페이지의 나머지를 연속적으로 전송하는 상태이고, 해당 요청에 대한 데이터를 전송후 리드온리상태로 천위되며;상기 리드온리(READ ONLY)상태는 현재 홈 노드의 특정 데이터를 요구한 노드에 요구된 특정 캐쉬 라인 크기의 데이터를 먼저 요청기에 전달하고 그 요구된 특정 데이터를 포함하는 페이지의 나머지 내용을 캐쉬 라인의 연속으로 요청기에 전송한 뒤 동일한 이 블록에 대해서 리드요청(RREQ)이 홈 노드로 들어오게 되면 요구된 데이터를 위해 디렉토리를 참조하여 이 해당되는 캐쉬 라인 크기의 블록을 요청기로 전송하되 상기 요청이 벌크 데이터 전송을 위한 것이면 앞에서와 같이 이 블록이 포함되는 전체 페이지를 요청기로 전송하고;상기 리드라이트(READ WRITE)상태는 만일 상기 리드온리상태에서 라이트요청(WREQ)를 다른 노드에서 받게 되며, 벌크 데이터 요청시 홈 노드로 전송된 요청된 라이트요청(WREQ)이 요구된 데이터의 소유권을 변화시켜 해당 홈 노드는 이 데이터가 포함된 페이지의 반을 요청기에 전송하며 물론 이 전송된 페이지 반의 소유권도 요청기가 가지게 됨은 물론 요구된 캐쉬 라인을 제외한 데이터는 전송 받은 노드의 미래를 위해서 사용되고 이 전송되는 블록의 반을 가지는 다른 노드에게 캐쉬 일관성을 유지하기 위해서 무효화 요청를 전송하면, 자신의 상태에서 엠피티 상태로 천위하며;상기 리드변경(READ TRANSIT)상태는 인정신호를 기다리는 홈 노드가 동일한 블록에 대해서 다른 노드에서 리드 요청(RREQ)를 받았을 경우에 일단 자신의 상태로 천위 후 인정신호를 모두 받을 때까지 대기하되, 무효화 요청에 대한 인정신호들을 모두 받았을 경우에 상기 리드라이트(READ WRITE) 상태로 천위하여 자신의 상태를 유지하는 동안 받았던 리드요청과 라이트요청을 처리하고;상기 라이트변경(WRITE TRANSIT) 상태는 무효화 시킴에 대한 인정신호를 기다리는 동안 라이트요청(WREQ)이 해당 홈노드에 들어오면 자신의 상태로 천위하게 됨과 동시에 인정신호를 기다리는 동안 전송된 리드요청과 라이트요청을 다시 처리하게 되는 것을 특징으로 하는 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법중 홈노드에서의 로칼/리모트 노드간 통신 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980017927A KR100257993B1 (ko) | 1998-05-19 | 1998-05-19 | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 |
US09/257,892 US6363458B1 (en) | 1998-05-19 | 1999-02-25 | Adaptive granularity method for integration of fine and coarse communication in the distributed shared memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980017927A KR100257993B1 (ko) | 1998-05-19 | 1998-05-19 | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990085485A KR19990085485A (ko) | 1999-12-06 |
KR100257993B1 true KR100257993B1 (ko) | 2000-06-01 |
Family
ID=19537473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980017927A KR100257993B1 (ko) | 1998-05-19 | 1998-05-19 | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6363458B1 (ko) |
KR (1) | KR100257993B1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591355B2 (en) * | 1998-09-28 | 2003-07-08 | Technion Research And Development Foundation Ltd. | Distributed shared memory system with variable granularity |
AU2001286410A1 (en) * | 2000-07-31 | 2002-02-13 | Morphics Technology, Inc. | Method and apparatus for time-sliced and multi-threaded data processing in a communication system |
WO2002030052A1 (en) * | 2000-09-28 | 2002-04-11 | Symantec Corporation | System and method for analyzing protocol streams for a security-related event |
US7376435B2 (en) * | 2002-04-01 | 2008-05-20 | Intel Corporation | Transferring multiple data units over a wireless communication link |
WO2004094912A1 (en) * | 2003-04-22 | 2004-11-04 | Alto-Shaam, Inc. | Oven with grease collection system |
IL159001A0 (en) * | 2003-11-20 | 2004-05-12 | Qlusters Software Israel Ltd | A page splitting mechanism for transparent distributed shared memory implementations in process migration cluster environments |
US7350032B2 (en) * | 2004-03-22 | 2008-03-25 | Sun Microsystems, Inc. | Cache coherency protocol including generic transient states |
US7756943B1 (en) | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
US7702743B1 (en) * | 2006-01-26 | 2010-04-20 | Symantec Operating Corporation | Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes |
US8464009B2 (en) * | 2008-06-04 | 2013-06-11 | Oracle America, Inc. | Method for memory interleave support with a ceiling mask |
KR101748441B1 (ko) * | 2010-10-08 | 2017-06-19 | 삼성전자주식회사 | 거짓 공유 검출 장치 및 방법 |
CN105027211B (zh) | 2013-01-31 | 2018-09-21 | 慧与发展有限责任合伙企业 | 自适应粒度行缓冲器高速缓存 |
US9208091B2 (en) | 2013-06-19 | 2015-12-08 | Globalfoundries Inc. | Coherent attached processor proxy having hybrid directory |
US10331560B2 (en) * | 2014-01-31 | 2019-06-25 | Hewlett Packard Enterprise Development Lp | Cache coherence in multi-compute-engine systems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617537A (en) | 1993-10-05 | 1997-04-01 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
-
1998
- 1998-05-19 KR KR1019980017927A patent/KR100257993B1/ko not_active IP Right Cessation
-
1999
- 1999-02-25 US US09/257,892 patent/US6363458B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR19990085485A (ko) | 1999-12-06 |
US6363458B1 (en) | 2002-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6141692A (en) | Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol | |
US8103835B2 (en) | Low-cost cache coherency for accelerators | |
KR101887797B1 (ko) | 메모리 내 가벼운 일관성 | |
JP2501375B2 (ja) | マルチプロセッサシステム | |
US6253292B1 (en) | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme | |
US20010013089A1 (en) | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol | |
US5802578A (en) | Multinode computer system with cache for combined tags | |
US6457100B1 (en) | Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls | |
US5900020A (en) | Method and apparatus for maintaining an order of write operations by processors in a multiprocessor computer to maintain memory consistency | |
US7032078B2 (en) | Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols | |
US20020009095A1 (en) | Multicast decomposition mechanism in a hierarchically order distributed shared memory multiprocessor computer system | |
US6654858B1 (en) | Method for reducing directory writes and latency in a high performance, directory-based, coherency protocol | |
KR100257993B1 (ko) | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 | |
JPH0776942B2 (ja) | マルチプロセッサ・システムおよびそのデータ伝送装置 | |
JP2002304328A (ja) | マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム | |
WO2006072058A1 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
US6922755B1 (en) | Directory tree multinode computer system | |
US6226714B1 (en) | Method for invalidating cache lines on a sharing list | |
JP2006505868A (ja) | マルチクラスタのロックのための方法および装置 | |
US5701422A (en) | Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses | |
CN117827706A (zh) | 数据处理方法、数据处理装置、电子设备和存储介质 | |
CN115114188B (zh) | 一种嵌入式处理器高速缓存器结构及控制方法 | |
US6636948B2 (en) | Method and system for a processor to gain assured ownership of an up-to-date copy of data | |
KR100281465B1 (ko) | 분산된공유메모리구조의다중프로세서장치 | |
Oi et al. | A cache coherence protocol for the bidirectional ring based multiprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20060228 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |