KR101419379B1 - 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조 - Google Patents
분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조 Download PDFInfo
- Publication number
- KR101419379B1 KR101419379B1 KR1020100113400A KR20100113400A KR101419379B1 KR 101419379 B1 KR101419379 B1 KR 101419379B1 KR 1020100113400 A KR1020100113400 A KR 1020100113400A KR 20100113400 A KR20100113400 A KR 20100113400A KR 101419379 B1 KR101419379 B1 KR 101419379B1
- Authority
- KR
- South Korea
- Prior art keywords
- sharer
- shared data
- node
- history table
- information
- Prior art date
Links
Images
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/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조에 관한 것으로서, 구체적으로는 본 발명의 네트워크 부하 감소 방법은 분산 메모리 및 공유자 이력 테이블을 저장하는 보조 메모리를 가지는 노드들로 구성된 다중 프로세서 시스템을 이용하며, 공유자 노드의 이력을 상기 보조 메모리의 공유자 이력 테이블에 기록하는 이력 기록 과정, 상기 보조 메모리의 공유자 이력 테이블을 참조하여 공유 데이터를 요청하는 공유 데이터 요청 과정 및 상기 분산 메모리의 공유 데이터를 삭제하고 상기 보조 메모리에 저장된 공유자 이력 테이블을 갱신하는 공유 데이터 삭제 과정을 포함한다.
Description
본 발명은 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조에 관한 것으로서, 분산 메모리를 가지는 다중 프로세서 시스템에서의 데이터 접근 시간을 줄이기 위한 방법 및 이를 지원하는 노드의 구조에 관한 것이다.
근래에는 반도체 칩 제조 공정의 발달로 적은 면적에 많은 양의 로직을 집적할 수 있게 되었지만 많은 양의 로직으로 인해서 단일 칩에서 소모되는 전력이 높아지게 되었다. 그런데 현재의 반도체 시스템 칩의 주된 응용분야로 대두되는 것이 모바일 기기이기 때문에 많은 양의 전력소모는 시장의 요구에 맞지 않는다.
따라서 기존에 공정의 발달에 의존하던 대형 단일 프로세서 기반의 시스템에서 저전력 소형 프로세서를 다수 사용하는 멀티프로세서 시스템으로의 진화가 이루어지고 있다.
도 1은 2차원 메쉬 기반의 분산 메모리를 가지는 다중 프로세서 시스템의 일 구현예이다.
도 1을 참조하면, 분산 메모리를 가지는 다중 프로세서 시스템은 다수의 프로세서, 스위치 및 메모리 제어 장치로 구성된다.
그런데 상기의 시스템을 구현함에 있어서 가장 큰 해결과제는 각 프로세서가 필요로 하는 데이터에 대해 접근할 수 있는 접근성의 확보이다. 이를 위해 다수의 프로세서들이 동시에 데이터 저장장소에 접근할 수 있도록 높은 대역폭을 확보하는 것뿐만 아니라 동일한 주소 영역에 둘 이상의 프로세서가 접근할 때 이들이 동일한 데이터를 사용할 수 있도록 하는 것이 필수적이다.
후자의 경우 대부분의 프로세서가 계층적 메모리 구조를 사용하기 때문에 캐시 단계에서 문제를 해결하는 경우가 많고 이러한 해결 방법을 캐시 코히런스 방법이라 한다. 캐시 코히런스 방법에는 일반적으로 스누핑 방식과 디렉토리 방식이 있다.
스누핑 방식은 버스 기반의 멀티프로세서 시스템에서 사용하는 방법으로서, 버스의 특성에 따라 소수 프로세서들을 사용하는 시스템에 적합하다. 반면 디렉토리 방식은 네트웍 기반으로 프로세서들이 통신하는 시스템에 사용하는 방법으로서, 확장성이 커 다수의 프로세서 시스템에 적용 가능하다.
디렉토리 방식은 캐시에 저장된 데이터를 해당 노드에서 읽어오지 못하는 경우에는 디렉토리 방식의 특성 상 많은 트래픽이 발생하여 데이터에 접근하는데 많은 시간이 드는 문제가 발생했다.
이에 상기의 문제를 해결하기 위해 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조는 데이터 요청 실패 시 발생하는 트래픽을 감소시켜 데이터 접근 지연 시간을 감소시킬 수 있는 네트워크 부하 감소 방법 및 노드의 구조를 제안한다.
상기 과제를 해결하기 위한 본 발명의 네트워크 부하 감소 방법은 분산 메모리 및 공유자 이력 테이블을 저장하는 보조 메모리를 가지는 노드들로 구성된 다중 프로세서 시스템을 이용하며, 공유자 노드의 이력을 상기 보조 메모리의 공유자 이력 테이블에 기록하는 이력 기록 과정, 상기 보조 메모리의 공유자 이력 테이블을 참조하여 공유 데이터를 요청하는 공유 데이터 요청 과정 및 상기 분산 메모리의 공유 데이터를 삭제하고 상기 보조 메모리에 저장된 공유자 이력 테이블을 갱신하는 공유 데이터 삭제 과정을 포함한다.
수신한 공유 데이터의 제공 노드가 홈 노드가 아닌 경우 상기 제공 노드를 상기 공유자 노드로 판정하는 오류 발생 판정 단계 및 상기 공유자 노드의 정보 및 상기 공유 데이터에 대한 정보를 보조 메모리의 상기 공유자 이력 테이블에 저장하는 이력 저장 단계를 포함한다.
상기 이력 저장 단계는 상기 보조 메모리에 여유 저장 공간이 있는지 확인하는 단계, 여유 저장 공간이 없는 것으로 확인된 경우 기설정된 관리 기준에 따라 이력을 삭제하는 단계 및 여유 공간 있는 것을 확인된 경우 또는 상기 이력을 삭제하는 단계를 수행한 경우 상기 공유자 노드의 정보 및 상기 공유 데이터에 대한 정보를 상기 공유자 이력 테이블에 저장하는 단계를 포함한다.
상기 관리 기준은 FIFO(first in first out) 방식, 최종 검색 시각이 가장 오래된 공유 데이터에 대한 정보부터 삭제하는 방식 또는 검색 빈도가 가장 낮은 공유 데이터에 대한 정보부터 삭제하는 방식이다.
상기 공유 데이터 공유 과정은 상기 공유자 이력 테이블에서 홈 노드로 요청하고자 하는 공유 데이터에 대한 정보가 있는지 검색하는 단계, 상기 검색이 실패할 경우 상기 홈 노드로 상기 공유 데이터를 요청하는 제1 요청 단계 및 상기 검색이 검색 성공할 경우 상기 공유 데이터를 저장한 공유자 노드로 상기 공유 데이터를 요청하는 제2 요청 단계를 포함한다.
상기 보조 메모리에 저장된 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함한다.
상기 다중 프로세서 시스템의 노드는 상기 홈 노드에 대한 정보가 저장된 디렉토리를 더 포함하고, 상기 제1 요청 단계는 상기 디렉토리에서 상기 공유 데이터를 저장한 상기 홈 노드에 대한 주소를 읽는 단계 및 상기 홈 노드로 상기 공유 데이터의 전송을 요청하는 단계를 포함한다.
상기 공유 데이터 삭제 과정은 상기 공유 데이터의 사용이 완료된 경우 상기 공유 데이터에 대한 정보가 상기 보조 메모리의 공유자 이력 테이블에 있는지 검색하는 단계, 상기 검색 단계에서 검색 실패할 경우 상기 분산 메모리에서 상기 공유 데이터를 삭제하는 제1 삭제 단계 및 상기 검색 단계에서 검색 성공한 경우 상기 보조 메모리의 상기 공유자 이력 테이블에서 상기 삭제할 공유 데이터에 대한 정보를 삭제하고 상기 분산 메모리에서 상기 공유 데이터를 삭제하는 제2 삭제 단계를 포함한다.
상기 보조 메모리에 저장된 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함하며, 상기 제2 삭제 단계에서 상기 보조 메모리의 상기 공유자 이력 테이블에서 상기 삭제할 공유 데이터에 대한 정보는 상기 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함한다.
상기 보조 메모리의 공유자 이력 테이블에 저장된 공유자 노드 정보의 변경이 있는 경우 상기 공유자 이력 테이블을 갱신하는 이력 갱신 과정을 더 포함한다.
상기 이력 갱신 과정은 공유 데이터를 저장한 신공유자 노드로부터 상기 상기 공유자 이력 테이블의 갱신 요청을 수신하는 갱신 요청 단계, 상기 공유자 이력 테이블에 상기 공유 데이터를 저장한 노드 정보를 상기 신공유자 노드에 대한 정보로 변경하는 이력 갱신 단계 및 상기 분산 메모리에 저장된 상기 공유 데이터를 삭제하는 데이터 삭제 단계를 포함한다.
상기 보조 메모리에 저장된 상기 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함하며, 상기 이력 갱신 단계는 상기 공유자 이력 테이블에 상기 공유 데이터에 대한 정보 존재 여부를 검색하는 검색 단계 및 상기 검색이 성공할 경우, 상기 공유자 이력 테이블에 상기 공유 데이터에 대응되는 공유자 노드 정보를 상기 신공유자 노드 정보로 변경하는 신공유자 정보 갱신 단계를 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드 구조는 노드(N1)를 제어하고 데이터를 처리하는 프로세서, 상기 프로세서가 처리하는 데이터를 저장하는 분산 메모리 및 공유자 이력 테이블을 저장하는 보조 메모리를 포함하며, 상기 공유자 이력 테이블은 상기 노드(N1)가 제1 외부 노드(N2)에 요청한 공유 데이터를 상기 노드(N1)가 제2 외부 노드(N3)에서 수신하는 경우 상기 제2 외부 노드(N3)의 정보 및 상기 공유 데이터에 대한 정보를 저장한다.
상기 노드(N1)는 상기 프로세서가 상기 분산 메모리 및 상기 제1 외부 노드(N2)에서 읽어온 데이터를 저장하는 캐시를 더 포함한다.
상기 노드(N1)는 상기 제1 외부 노드(N2)로부터 데이터를 읽어온 경우 상기 제1 외부 노드(N2)에 대한 정보를 저장하는 디렉토리를 더 포함한다.
상기 노드는 제1 외부 노드와 데이터 송수신을 위한 통신을 지원하는 통신부를 더 포함할 수 있다.
상기 해결 수단에 따른 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드 구조는 데이터 요청 실패 시 발생하는 트래픽을 감소시켜 데이터 접근 지연 시간을 감소시키고 네트워크의 부하를 감소시킬 수 있다.
도 1은 2차원 메쉬 기반의 멀티미디어 프로세서 시스템의 일 구현예이다.
도 2는 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템을 도시한 도면이다.
도 3은 기존의 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템에서 캐시 읽기 오류(cache read miss)가 발생한 경우 네트워크 트래픽 발생 과정을 도시한 도면이다.
도 4는 종래의 디렉토리 기반의 캐시 코히런스 방법에서 캐시 읽기 오류 발생 시 발생하는 트래픽의 이동 경로의 일 예를 도시한 도면이다.
도 5는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드의 구조도이다.
도 6은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 캐시 읽기 오류가 발생했을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
도 7은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 새로운 공유자가 생겼을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
도 8a 내지 8d는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법에 대한 흐름도이다.
도 9a 내지 9c는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템의 네트워크 부하 감소 방법을 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우의 보조 메모리에 저장된 공유자 이력 테이블의 이용 및 관리를 수행하는 방법을 도시한 흐름도이다.
도 2는 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템을 도시한 도면이다.
도 3은 기존의 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템에서 캐시 읽기 오류(cache read miss)가 발생한 경우 네트워크 트래픽 발생 과정을 도시한 도면이다.
도 4는 종래의 디렉토리 기반의 캐시 코히런스 방법에서 캐시 읽기 오류 발생 시 발생하는 트래픽의 이동 경로의 일 예를 도시한 도면이다.
도 5는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드의 구조도이다.
도 6은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 캐시 읽기 오류가 발생했을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
도 7은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 새로운 공유자가 생겼을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
도 8a 내지 8d는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법에 대한 흐름도이다.
도 9a 내지 9c는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템의 네트워크 부하 감소 방법을 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우의 보조 메모리에 저장된 공유자 이력 테이블의 이용 및 관리를 수행하는 방법을 도시한 흐름도이다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 발명의 이해를 돕기 위해서 종래의 디렉토리 기반의 캐시 코히런스 시스템에 대해서 먼저 살펴보겠다.
도 2는 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템을 도시한 도면이다.
도 2를 참조하면, 종래의 분산 메모리를 가지는 다중 프로세서 시스템은 프로세서(110), 분산 메모리(120), 통신부(150), 디렉토리(130) 및 캐시(140)로 구성되는 분산 프로세서 장치(100)들이 내부 통신망(200)에 연결되어 서로 통신할 수 있도록 설계된다.
디렉토리(130)란 분산 메모리를 가지는 다중 프로세서 시스템에서 각 노드에 위치한 일종의 테이블이다. 이 테이블에는 해당 분산 메모리 영역의 데이터를 공유하고 있는 원거리 프로세서 노드에 속한 캐시들의 정보가 담겨 있다. 따라서 어떠한 데이터에 접근하기 위해서는 먼저 디렉토리(130)에 접근하여 유효한 데이터가 위치한 캐시(140)를 찾고, 해당 캐시(140)에 접근하여 데이터를 읽어 온다.
그런데 유효한 데이터가 위치한 캐시를 찾았을 때, 해당 캐시에 유효한 데이터가 없는 경우를 캐시 읽기 오류가 발생한 경우라 한다. 이 경우에는 다시 해당 캐시 데이터를 가지고 있는 다른 프로세서 노드를 찾고, 데이터 요청을 전송하는 등의 과정을 거쳐야하기 때문에 많은 트래픽을 발생시키고, 프로세서의 동작도 지연되는 문제가 있다.
도 3은 기존의 디렉토리 방식의 캐시 코히런스 시스템을 적용한 분산 메모리를 가지는 다중 프로세서 시스템에서 캐시 읽기 오류(cache read miss)가 발생한 경우 네트워크 트래픽 발생 과정을 도시한 도면이다.
도 3을 참조하면, 캐시 읽기 오류가 발생시 트래픽을 발생시키는 노드는 요청자 노드(N1), 홈 노드(N2) 및 공유자 노드(N3)이다. 각 노드(N1 내지 N3)는 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드(100)를 포함하여 구성된다.
구체적인 트래픽 발생 과정을 살펴보면, 먼저 요청자 노드(N1)는 필요한 데이터가 속한 분산 메모리를 가진 홈 노드(N2)의 디렉토리에 디렉토리 읽기 요청(10)을 한다.
디렉토리 읽기 요청(10)을 받은 홈 노드(N2)는 해당 데이터의 유효한 값을 가지고 있는 공유자 노드(N3)에 요청자 노드(N1)를 대신하여 데이터 요청(20)을 한다.
데이터 요청(20)을 받은 공유자 노드(N3)는 해당 데이터를 요청자 노드(N1)에 데이터 회신(30)하고 요청자 노드(N1)에 데이터를 회신했음을 홈 노드(N2)에 알려주는 데이터 회신 통지(40)을 수행한다.
도 4는 종래의 디렉토리 기반의 캐시 코히런스 방법에서 캐시 읽기 오류 발생 시 발생하는 트래픽의 이동 경로의 일 예를 도시한 도면이다.
도 4를 참조하면, 디렉토리 읽기 요청(10), 데이터 요청(20) 및 데이터 회신(30)의 트래픽이 일어나 모두 2개의 프로세서 노드와 18개의 스위치를 거치게 된다.
이와 같이 홈 노드(N2)가 해당 데이터의 유효한 값을 가지지 못한 경우 요청자 노드(N1)가 데이터를 얻기 위해서는 여러 차례의 트래픽을 발생시켜야 한다. 만약, 요청자 노드(N1), 홈 노드(N2), 공유자 노드(N3)들이 네트워크 상에서 멀리 떨어져 있다면 이는 아주 긴 지연시간을 유발하여 요청자 노드(N1) 프로세서의 처리 속도를 저하시키는 요인이 되며, 내부 통신망의 부하 또한 크게 가중시키게 된다.
그런데, 분산 메모리를 가지는 다중 프로세서 시스템상에서 응용 프로그램을 수행할 때, 대부분의 경우 일부 주소 영역에 대해서 집중적인 데이터 공유가 발생하게 된다. 즉 캐시 읽기 오류가 발생한 많은 경우에 유효한 데이터는 홈 노드(N2)보다는 공유자 노드(N3)에 있다.
따라서 종래의 캐시 코히런스 방법과 같이 홈 노드(N2)를 거쳐 공유자 노드(N3)에 접근을 하게 되면 트래픽 발생이 많아져서 시간을 지연하게 된다.
상기와 같은 다수의 트래픽 발생을 방지하기 위해서 캐시 읽기 오류가 일어나 공유자 노드에서 데이터를 읽어 온 경우, 그 이력을 요청자 노드(N1)의 내부의 테이블에 기록해 두고, 이후 같은 데이터에 대해서 캐시 읽기 오류가 일어나면 홈 노드(N2)를 거치지 않고 직접 공유자 노드(N3)로 데이터를 요청하면 트래픽 발생을 크게 줄이고 지연 시간을 단축할 수 있다.
즉, 기존의 프로세서 노드 간의 통신은 우회로를 지속적으로 사용하는 것이었다면, 본 발명의 프로세서 노드 간의 통신은 이력 관리를 통해서 직접 경로를 사용하여 이루어지는 것이다. 따라서 시스템 전체에서 발생하는 트래픽의 감소 및 대역폭 사용량의 감소라는 효과가 발생한다. 또한 캐시 읽기 오류 시 동작을 수행해야 하는 프로세서 노드 및 통신망을 줄일 수 있어 시스템의 전력 소모 감소까지도 도모하는 효과가 발생한다.
또한, 상기와 같은 네트워크 부하 감소 방법은 일반적인 분산 메모리를 가지는 다중 프로세서 시스템에도 적용될 수 있다.
상기의 해결 방법을 구현하기 위한 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템의 노드 구조는 적은 용량의 보조 메모리를 추가할 수 있다.
도 5는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드의 구조도이다.
도 5를 참조하면, 본 발명의 노드(100)는 분산 메모리(120) 및 공유자 이력 테이블을 저장하는 보조 메모리 (160)를 포함할 수 있고, 통신 지원부(150) 및 프로세서(110)을 더 포함할 수 있다. 또한, 노드(100)는 디렉토리 기반의 캐시 코히런스 시스템에 적용되기 위해 디렉토리(130) 및 캐시(140)를 더 포함할 수 있다.
프로세서(110), 분산 메모리(120), 디렉토리(130), 캐시(140) 및 통신 지원부(150)는 종래에 사용되던 기술인 바 설명은 생략한다.
공유자 이력 테이블을 저장하는 보조 메모리(160)는 분산 메모리(120)에 비해서 작은 용량의 메모리다.
특히, 공유자 이력 테이블은 캐시 코히런스 시스템에서는 캐시 읽기 오류가 생긴 데이터 블록의 주소 및 해당 데이터를 공급받은 공유자 노드(N3)의 주소로 구성될 수 있다.
보조 메모리(160)의 공유자 이력 테이블은 수 개 정도의 기록만 저장하면 되므로 본 발명으로 인해 기존의 분산 프로세서 장치에 추가되는 하드웨어 자원은 아주 적다.
이하, 본 발명의 일 적용예로서 디렉토리 기반의 캐시 코히런스 시스템에 상기 노드를 적용하여 네트워크 부하를 감소시키는 방법을 설명한다.
먼저, 노드(100)가 공유자 이력 테이블에 저장된 캐시 읽기 오류가 발생한 데이터의 주소 및 공유자 노드(N3)의 주소를 관리하는 방법에 대해서 살펴본다.
보조 메모리(160)의 공유자 이력 테이블에 저장되지 않은 데이터에 대해서 캐시 읽기 오류가 발생한 경우에는 해당 데이터의 주소 및 데이터를 공급받은 공유자 노드(N3)의 주소를 보조 메모리(160)의 공유자 이력 테이블에 저장하여 이력을 기록한다.
요청자 노드(N1)가 공유 데이터를 분산 메모리에서 삭제하는 경우 해당 공유 데이터가 보조 메모리(160)의 공유자 이력 테이블에 주소가 저장된 데이터인 경우에는 보조 메모리(160)의 공유자 이력 테이블에서도 해당 데이터의 주소 및 데이터를 공급받은 공유자 노드(N3)에 대한 이력을 삭제한다.
요청자 노드(N1)가 아직 캐시에서 해당 데이터를 사용하는 도중에 제3의 공유자가 생긴 경우에는 보조 메모리(160)의 공유자 이력 테이블을 갱신한다. 제3의 공유자로부터 무효화(50) 신호를 수신 받는다면, 캐시에서 해당 데이터를 삭제하고 보조 메모리(160)의 공유자 이력 테이블은 새로운 공유자 노드의 주소로 갱신한다. 보조 메모리(160)의 공유자 이력 테이블에 항상 유효한 데이터를 저장하고 있는 공유자 노드(N3)의 정보를 저장하기 위함이다.
캐시 읽기 오류가 발생하였는데 보조 메모리(160)의 공유자 이력 테이블이 모두 차있는 경우에는 가장 오래된 이력을 삭제하는 등의 방법으로 여유공간을 확보하고 가장 최근의 이력을 저장한다.
도 6은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 캐시 읽기 오류가 발생했을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
도 6을 참조하면, 캐시 읽기 오류가 발생한 데이터가 보조 메모리(160)의 공유자 이력 테이블에 이력이 저장된 데이터인 경우에 트래픽 흐름을 확인할 수 있다.
요청자 노드(N1)은 공유자 노드(N3)로 직접 데이터를 요청(10)한다. 그러면 공유자 노드(N3)는 요청자 노드(N1)으로 데이터를 회신(20)한다. 이 경우에는 1개의 프로세서 노드 및 10개의 스위치를 거치게 되므로 도 4의 트래픽 흐름과 비교해 볼 때 사용되는 프로세서 노드 및 스위치의 수가 감소한 것을 확인할 수 있다.
따라서 트래픽, 데이터 접근 지연 시간 및 전력 소모가 감소되는 효과가 발생한다.
도 7은 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 노드를 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우 새로운 공유자가 생겼을 때의 트래픽 흐름의 일 예를 도시한 도면이다.
새로운 공유자(N4)는 디렉토리 프로토콜에 따라 해당 데이터를 사용하는 모든 노드에 무효화(50) 신호를 전송한다. 무효화(50) 신호를 수신한 요청자 노드(N1)은 사용하던 데이터를 캐시에서 지우고, 보조 메모리(160)의 공유자 이력 테이블에 새로운 공유자 주소로 갱신(60)한다.
도 8a 내지 8d는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법에 대한 흐름도이다.
본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법은 분산 메모리(120) 및 공유자 이력 테이블을 저장하는 보조 메모리(160)를 포함하는 노드(100)로 구성된 다중 프로세서 시스템을 이용하는 네트워크 부하 감소 방법이다.
상기 다중 프로세서 시스템에는 크게 4개의 노드가 있을 수 있다. 공유 데이터의 전송을 요청하는 요청자 노드(N1), 상기 요청 받은 공유 데이터를 전송하는 홈 노드(N2) 및 공유자 노드(N3), 상기 공유자 노드(N3) 대신 공유 데이터를 공유하는 신공유자 노드(N4)가 있을 수 있다. 공유자 노드(N3)는 공유 데이터를 요청 받은 홈 노드(N2)에 상기 공유 데이터가 존재하지 않은 경우 요청자 노드(N1)로 공유 데이터를 전송하는 노드이다.
각 상기 노드(N1 내지 N4)는 그 역할을 지칭하는 것으로서, 물리적인 노드(100)는 동작 상태에 따라서 상기 노드(N1 내지 N4)들 중 하나가 될 수 있다.
보조 메모리(160)에 저장된 공유자 이력 테이블에는 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드()에 대한 정보 포함된 정보가 기록되어 있다.
본 발명의 네트워크 부하 감소 방법은 공유 데이터 공유 과정(S100), 공유 데이터 삭제 과정(S200), 이력 기록 과정(S300)를 포함하여 구성될 수 있고 이력 갱신 방법(S400)을 더 포함하여 구성될 수 있다.
요청자 노드(N1)는 이력 기록 과정(S100)을 통해서 보조 메모리(160)에 공유자 이력 테이블을 기록하며, 요청자 노드(N1)는 기록된 공유자 이력을 이용해서 차회에 공유 데이터를 요청 시 홈 노드(N2)로 공유 데이터를 요청하지 않고 직접 공유자 노드(N3)로 공유 데이터를 요청할 수 있다. 이를 통해서 분산 메모리를 가지는 다중 프로세서 시스템은 트래픽을 감소시킬 수 있어 분산 메모리를 가지는 다중 프로세서 시스템의 네트워크 부하가 감소된다.
도 8a는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 보조 메모리에 저장된 공유자 이력 테이블을 이용한 이력 저장 과정에 대한 흐름도이다.
도 8a를 참조하면, 본 발명의 네트워크 부하 감소 방법의 공유 데이터 공유 과정(S100)은 공유 데이터 요청 단계(S110), 공유자 이력 테이블 검색 단계(S120), 공유 데이터 정보 존재 여부 판정 단계(S130), 공유자 노드에 요청 단계(S140) 및 홈 노드에 요청 단계(S150)를 포함하여 수행된다.
공유 데이터 요청 단계(S110)에서는 요청자 노드(N1)가 사용할 데이터가 다른 노드(N2, N3)에서 공유하고 있는 공유 데이터인지 또는 요청자 노드(N1)의 분산 메모리에 저장된 데이터인지를 확인한다. 요청자 노드(N1)는 다른 노드(N2, N3)에서 공유하고 있는 공유 데이터인 경우에는 공유 데이터를 요청할 것을 결정한다.
공유자 이력 테이블 검색 단계(S120)에서는 보조 메모리(160)에 저장되어 있는 공유자 이력 테이블에서 상기 공유 데이터에 대한 정보가 있는지 검색하는 단계이다.
공유자 노드에 요청 단계(S140)에서는 공유 데이터에 대한 정보가 존재하는 경우(S130) 홈 노드(N2) 대신 상기 테이블을 참조하여 공유자 노드(N3)로 공유 데이터 전송을 요청한다.
홈 노드(N2)에 요청 단계(S150)에서는 공유자 이력 테이블에 공유 데이터에 대한 정보가 없는 경우(S130) 홈 노드(N2)의 주소를 검색하는 단계(S151) 및 홈 노드(N2)에 공유 데이터 전송을 요청하는 단계(S152)을 통해 홈 노드(N2)로 공유 데이터 전송을 요청한다. 도시하지는 않았으나, 홈 노드(N2)의 주소를 포함하는 테이블을 저장하는 저장부, 예를 들어 디렉토리가 요청자 노드(N1)에 더 포함될 수 있다.
상기와 같은 네트워크 부하 감소 방법의 공유 데이터 공유 과정(S100)을 통해서, 요청자 노드(N1)는 홈 노드(N2)에 공유 데이터가 존재하지 않는 것을 홈 노드(N2)로 요청을 전송하기 전에 파악할 수 있고, 공유 데이터를 저장하고 있는 공유자 노드(N3)로 직접 공유 데이터 전송을 요청할 수 있다. 따라서 공유 데이터 요청을 위한 트래픽을 줄일 수 있어 네트워크의 부하를 감소시킬 수 있다.
도 8b는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 보조 메모리에 저장된 공유자 이력 테이블을 이용한 공유 데이터 삭제 과정에 대한 흐름도이다.
도 8b를 참조하면, 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 공유 데이터 삭제 과정(S200)은 공유 데이터 삭제 요청 단계(S210), 공유자 이력 테이블 검색 단계(S220), 공유 데이터 정보 존재 여부 판정 단계(S230), 제1 삭제 단계(S250) 및 제2 삭제 단계(S240)를 포함할 수 있다.
공유 데이터 삭제 요청 단계(S210)에서는 분산 메모리(120)에 저장된 데이터의 삭제를 준비할 수 있다. 공유 데이터 삭제 요청 단계(S210)에서는 삭제될 데이터가 다른 노드들과 공유되는 공유 데이터인 경우에는 공유 데이터 삭제를 위한 이후 단계들이 수행되도록 할 수 있다.
공유자 이력 테이블 검색 단계(S220)에서는 보조 메모리(160)에 저장되어 있는 공유자 이력 테이블에서 상기 삭제될 공유 데이터와 일치하는 공유 데이터에 대한 정보가 있는지 검색하는 단계이다.
제1 삭제 단계(S250)에서는 일치하는 공유 데이터에 대한 정보가 없는 경우(S230) 분산 메모리(120)에서 삭제 요청된 공유 데이터를 삭제한다.
제2 삭제 단계(S240)에서는 일치하는 공유 데이터에 대한 정보가 존재하는 경우(S230) 공유자 이력 테이블에서 상기 공유 데이터에 대한 정보를 삭제(S241)하고, 분산 메모리(120)에서 삭제 요청된 공유 데이터를 삭제(S242)한다.
상기와 같은 네트워크 부하 감소 방법의 공유 데이터 삭제 요청 과정(S200)을 통해서, 요청자 노드(N1)는 사용이 종료된 공유 데이터를 삭제할 때 공유 데이터에 대한 이력을 삭제하여 보조 메모리(160)에 여유 공간을 확보할 수 있다. 또한, 보조 메모리(160)에 저장된 데이터의 크기를 줄일 수 있어 보조 메모리(160)에 저장된 공유자 이력 테이블 검색 속도를 향상시킬 수 있다.
도 8c는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 보조 메모리에 저장된 공유자 이력 테이블을 이용한 이력 기록 과정에 대한 흐름도이다.
도 8c를 참조하면, 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 이력 기록 과정(S300)은 오류 발생 판정 단계(S310) 및 이력 저장 단계(S320)를 포함하여 수행될 수 있다.
오류 발생 판정 단계(S310)에서는 요청자 노드(N1)가 홈 노드(N2)에 요청한 공유 데이터를 요청자 노드(N1)가 공유자 노드(N3)에서 수신하였는지 확인하여 읽기 오류가 발생했는지를 판정할 수 있다. 특히, 공유 데이터를 전송한 노드(N3)가 홈 노드(N2)와 일치하지 않는 경우에는 읽기 오류가 발생하여 홈 노드(N2)가 공유자 노드(N3)로 데이터 전송을 요청하여 요청자 노드(1)로 공유 데이터가 전송된 것이다. 홈 노드(N2)로 상기 공유 데이터의 전송을 요청하면 계속적으로 공유자 노드(N3)에서 상기 공유 데이터를 전송 받게 되므로 많은 트래픽을 발생시킬 수 있는 상황임을 오류 발생 판정 단계(S310)를 통해 판정할 수 있다.
이력 저장 단계(S320)에서는 공유자 노드(N3)의 정보 및 상기 공유 데이터에 대한 정보를 상기 요청자 노드(N3)의 보조 메모리(160)의 상기 공유자 이력 테이블에 저장한다. 또한, 이력 저장 단계(S320)는 여유 공간 확인 단계(S321), 이력 삭제 단계(S322) 및 이력 저장 단계(S323)을 포함하여 구성될 수 있다.
여유 공간 확인 단계(S321)에서는 보조 메모리(160)에 공유자 이력을 저장한 여유 저장 공간이 있는지 확인한다.
이력 삭제 단계(S322)에서는 여유 저장 공간이 없는 것으로 확인된 경우 기설정된 관리 기준에 따라 이력을 삭제한다.
이력 저장 단계(S323)에서는 여유 공간 있는 것을 확인된 경우 또는 이력 삭제 단계를 수행한 경우 상기 공유자 노드(N3)의 정보 및 상기 공유 데이터에 대한 정보를 보조 메모리(160)의 공유자 이력 테이블에 저장한다.
상기 관리 기준은 FIFO(first in first out) 방식 또는 검색 빈도가 가장 낮은 공유 데이터에 대한 정보부터 삭제하는 방식 등이 적용될 수 있다.
상기와 같은 네트워크 부하 감소 방법의 이력 기록 과정(S300)을 통해서, 요청자 노드(N1)는 홈 노드(N2)에 공유 데이터가 존재하지 않는 것을 보조 메모리(160)의 공유자 이력 테이블을 참조하여 파악하고 할 수 있고, 공유 데이터를 저장하고 있는 공유자 노드(N3)로 직접 공유 데이터 전송을 요청할 수 있다. 따라서 공유 데이터 요청을 위한 트래픽을 줄일 수 있어 네트워크의 부하를 감소시킬 수 있다.
도 8d는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 보조 메모리에 저장된 공유자 이력 테이블을 이용한 이력 갱신 과정에 대한 흐름도이다.
도 8d를 참조하면, 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법의 이력 갱신 과정(S400)은 이력 갱신 요청 단계(S410), 이력 갱신 단계(S420) 및 공유 데이터 삭제 단계(S430)를 포함할 수 있으며, 상기 이력 갱신 단계(S420)는 공유자 이력 테이블 검색 단계(S421), 공유 데이터 정보 존재 여부 판정 단계(S422) 및 신공유자 정보 갱신 단계(S423)을 포함하여 수행될 수 있다.
보조 메모리(160)에 저장된 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드(N3)에 대한 정보를 포함할 수 있다.
이력 갱신 요청 단계(S410)에서는 신공유자 노드(N4)로부터 무효화 요청을 받으면 보조 메모리(160)에 저장된 공유자 이력 테이블의 갱신을 요청할 수 있다. 즉, 기존의 공유자 노드(N3)가 더 이상 데이터 공유를 하지 않으며, 데이터 공유를 수행하는 것이 신공유자 노드(N4)이므로, 공유자 노드에 대한 정보를 갱신토록 하는 것이다.
이력 갱신 단계(S420)에서는 요청자 노드(N3)가 공유자 이력 테이블에 공유 데이터를 저장한 노드 정보를 신공유자 노드(N4)에 대한 정보로 변경한다.
공유자 이력 테이블 검색 단계(S421)에서는 공유자 이력 테이블에 상기 공유 데이터에 대한 정보가 저장되어 있는지 검색을 통해서 확인할 수 있다.
신공유자 정보 갱신 단계(S423)에서는 검색이 성공할 경우(S422) 상기 공유자 이력 테이블에 상기 공유 데이터에 대응되는 공유자 노드(N3) 정보를 상기 신공유자 노드(N4) 정보로 변경할 수 있다.
공유 데이터 삭제 단계(S430)에서는 기존에 저장된 공유 데이터는 더 이상 유효한 데이터가 아니므로 삭제하고, 차후 공유 데이터의 사용이 필요한 경우 신공유자 노드(N4)로부터 공유 데이터를 전송 받을 수 있다.
도 9a 내지 9c는 본 발명의 분산 메모리를 가지는 다중 프로세서 시스템의 네트워크 부하 감소 방법을 디렉토리 기반의 캐시 코히런스 시스템에 적용한 경우의 보조 메모리에 저장된 공유자 이력 테이블의 이용 및 관리를 수행하는 방법을 도시한 흐름도이다.
도 9a를 참조하면, 본 발명의 공유 데이터 공유 방법(S10)에서 공유 데이터를 요청하는 단계(S10)는 데이터 요청 여부 판정 단계(S11), 공유자 이력 테이블 검색 단계(S13), 공유자 노드에 요청 단계(S15), 디렉토리 검색 단계(S17) 및 홈 노드에 요청 단계(S19)을 포함하여 구성될 수 있다.
요청자 노드(N1) 및 홈 노드(N2) 또는 요청자 노드(N1) 및 공유자 노드(N3)는 공유 데이터를 공유하는 노드이다.
데이터 요청 여부 판정 단계(S11)에서는 사용할 데이터가 요청자 노드(N1)의 분산 메모리(120)에 저장되어 있는지 확인하여, 분산 메모리(120)에 없는 경우 외부 노드(N2 또는 N3)로 공유 데이터의 전송을 요청할 수 있다.
공유자 이력 테이블 검색 단계(S13)에서는 공유 데이터가 보조 메모리(160)의 공유자 이력 테이블에 저장된 데이터인지 확인하고 저장된 경우에는 공유자 노드(N3)의 주소 정보를 보조 메모리(160)의 공유자 이력 테이블에서 읽어온다.
공유자 노드에 요청 단계(S15)에서는 보조 메모리(160)의 공유자 이력 테이블에서 읽어온 공유자 노드(N3) 주소로 공유 데이터의 전송을 요청(10)한다.
디렉토리 검색 단계(S17)에서는 보조 메모리(160)의 공유자 이력 테이블에 이력이 저장되지 않은 경우 디렉토리에서 공유 데이터를 저장하고 있는 홈 노드(N2)의 캐시 정보를 읽어온다.
홈 노드에 요청 단계(S19)에서는 홈 노드(N2)로 디렉토리 읽기 요청(10)을 전송한다.
바람직하게는 본 발명의 네트워크 부하 감소 방법은 분산 메모리를 가지는 다중 프로세서 시스템의 설계 구조에 따라서 변형하여 적용할 수 있다.
도 9b를 참조하면, 본 발명의 캐시 코히런스 방법에서 공유자 이력 테이블의 이력 삭제 과정(S20)은 데이터 삭제 단계(S21), 공유자 이력 테이블 검색 단계(S23) 및 공유자 이력 테이블에서 삭제 단계(S25)을 포함하여 구성될 수 있다.
데이터 삭제 단계(S21)에서는 데이터 사용이 종료되어 캐시 또는 메모리에 저장된 해당 데이터를 삭제하며, 공유자 이력 테이블에서도 해당 공유 데이터에 대한 정보를 삭제토록 할 수 있다.
공유자 이력 테이블 검색 단계(S23)에서는 상기 삭제된 데이터가 공유자 이력 테이블에 이력이 저장된 데이터인지 확인한다.
공유자 이력 테이블에서 삭제 단계(S25)에서는 상기 공유자 이력 테이블 검색 단계(S23) 단계에서 저장된 데이터로 확인된 경우 공유자 이력 테이블에 저장된 해당 데이터에 대한 이력을 삭제한다.
또한, 도 8b에 도시된 바와 같이 공유자 이력 테이블 검색 단계(S23)를 먼저 수행하고 캐시에서 데이터 삭제 단계(S21)을 공유자 이력 테이블에서 삭제 단계(S25) 이후에 수행할 수도 있다.
도 9c를 참조하면, 본 발명의 캐시 코히런스 방법에서 공유자 이력 테이블의 이력 기록 과정(S30)는 여유 공간 확인 단계(S31), 관리 기준에 따라 이력 삭제 단계(S33) 및 이력 저장 단계(S35)을 포함하여 구성될 수 있다.
캐시 읽기 오류 발생을 인해서 공유자 노드(N3)에서 데이터를 회신 받은 경우에 해당 데이터 및 공유자 노드(N3)의 주소를 공유자 이력 테이블에 저장하는 단계의 구체적인 단계다.
여유 공간 확인 단계(S31)에서는 공유자 이력 테이블에 새로운 이력을 추가할 공간이 있는지 확인한다. 공유자 이력 테이블은 작은 용량의 메모리로 구성되기 때문에 많은 이력을 저장하기 힘들기 때문이다. 새로운 이력을 추가할 여유 공간이 없는 경우에는 관리 기준에 따라 이력 삭제 단계(S33)을 수행하고, 여유 공간이 있는 경우에는 이력 저장 단계(S35)를 수행한다.
관리 기준에 따라 이력 삭제 단계(S33)에서는 기설정된 관리 기준에 따라서 이력을 삭제하여 새로운 이력을 저장할 공간을 확보한다. 관리 기준의 예로는 저장된 지 가장 오래된 데이터 이력부터 삭제, 검색된 지 가장 오래된 데이터 이력부터 삭제 또는 검색 횟수가 가장 적은 데이터 이력부터 삭제 등이 있을 수 있다.
이력 저장 단계(S35)에서는 여유 공간에 캐시 읽기 오류가 발생하여 데이터를 수신 받은 해당 데이터 주소 및 해당 공유자 노드(N3)에 대한 주소를 저장한다.
도 9d를 참조하면, 본 발명의 캐시 코히런스 방법에서 공유자 이력 테이블의 이력 갱신 과정(S40)은 이력 갱신 요청 단계(S41), 공유자 이력 테이블 검색 단계, 공유자 이력 테이블 갱신 단계 및 공유 데이터 삭제 단계를 포함하여 구성될 수 다.
이력 갱신 요청 단계(S41)에서는 신공유자 노드(N4)로부터 무효화 요청을 받으면 공유자 이력 테이블을 갱신하기 위한 이력 갱신 요청을 할 수 있다.
공유자 이력 테이블 검색 단계(S43)에서는 이력 갱신 요청에 대응하여 공유자 이력 테이블에 상기 무효화 요청 받은 공유 데이터에 대한 정보가 있는지를 확인할 수 있다.
공유자 이력 테이블 갱신 단계(S45)에서는 공유자 이력 테이블에 상기 무효화 요청 받은 공유 데이터에 대한 정보가 있는 경우에는 해당 공유 데이터에 대한 정보를 삭제할 수 있다. 삭제될 공유 데이터에 대한 정보에는 공유 데이터를 저장하고 있는 공유자 노드(N3)의 주소에 대한 정보를 포함할 수 있다.
공유 데이터 삭제 단계(S47)에서는 상기 무효화 요청 받은 공유 데이터를 캐시 또는 분산 메모리에서 삭제할 수 있다.
공유자 이력 테이블의 이력 갱신 과정(S40)에서는 유효한 데이터를 저장한 노드(N4)를 지속적으로 업데이트할 수 있다.
상기와 같은 공유자 이력 테이블의 이용 및 관리 방법을 통해서 적은 추가적 메모리만을 이용하여 트래픽 발생을 감소시켜 데이터 접근 지연 시간을 감소시킬 수 있다. 또한 지속적인 보조 메모리(160)의 공유자 이력 테이블의 관리가 가능하여 프로세서의 동작 변화에도 대응 가능하다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
100: 노드
110: 프로세서 120: 메모리 130: 디렉토리
140: 캐시 150: 통신부 160: 보조메모리
200: 내부 통신망
10: 디렉토리 읽기 요청 20: 데이터 요청 30: 데이터 회신
40: 데이터 회신 통지 50: 무효화 요청
60: 캐시 무효화/ 테이블 갱신
N1: 요청자 노드 N2: 홈 노드 N3: 공유자 노드
N4: 신공유자 노드
110: 프로세서 120: 메모리 130: 디렉토리
140: 캐시 150: 통신부 160: 보조메모리
200: 내부 통신망
10: 디렉토리 읽기 요청 20: 데이터 요청 30: 데이터 회신
40: 데이터 회신 통지 50: 무효화 요청
60: 캐시 무효화/ 테이블 갱신
N1: 요청자 노드 N2: 홈 노드 N3: 공유자 노드
N4: 신공유자 노드
Claims (16)
- 분산 메모리 및 공유자 이력 테이블을 저장하는 보조 메모리를 가지는 노드로 구성된 다중 프로세서 시스템을 이용하는 네트워크 부하 감소 방법에 있어서,
공유자 노드의 이력을 상기 보조 메모리의 공유자 이력 테이블에 기록하는 이력 기록 과정;
상기 보조 메모리의 공유자 이력 테이블을 참조하여 공유 데이터를 요청하는 공유 데이터 요청 과정;
상기 분산 메모리에 저장된 공유 데이터를 삭제하고 상기 보조 메모리의 공유자 이력 테이블을 갱신하는 공유 데이터 삭제 과정; 및
상기 보조 메모리의 공유자 이력 테이블에 저장된 공유자 노드 정보의 변경이 있는 경우 상기 공유자 이력 테이블을 갱신하는 이력 갱신 과정을 포함하고,
상기 이력 갱신 과정은
공유 데이터를 저장한 신공유자 노드로부터 상기 공유자 이력 테이블의 갱신 요청을 수신하는 갱신 요청 단계;
상기 공유자 이력 테이블에 상기 공유 데이터를 저장한 노드 정보를 상기 신공유자 노드에 대한 정보로 변경하는 이력 갱신 단계; 및
상기 분산 메모리에 저장된 상기 공유 데이터를 삭제하는 데이터 삭제 단계를 포함하는 네트워크 부하 감소 방법.
- 제1항에 있어서, 상기 이력 기록 과정은
수신한 공유 데이터의 제공 노드가 홈 노드가 아닌 경우 상기 제공 노드를 상기 공유자 노드로 판정하는 오류 발생 판정 단계; 및
상기 공유자 노드의 정보 및 상기 공유 데이터에 대한 정보를 상기 보조 메모리의 상기 공유자 이력 테이블에 저장하는 이력 저장 단계를 포함하는 네트워크 부하 감소 방법.
- 제2항에 있어서, 상기 이력 저장 단계는
상기 보조 메모리에 여유 저장 공간이 있는지 확인하는 단계;
여유 저장 공간이 없는 것으로 확인된 경우 기설정된 관리 기준에 따라 이력을 삭제하는 단계; 및
여유 공간 있는 것을 확인된 경우 또는 상기 이력을 삭제하는 단계를 수행한 경우 상기 공유자 노드의 정보 및 상기 공유 데이터에 대한 정보를 상기 공유자 이력 테이블에 저장하는 단계를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제3항에 있어서, 상기 관리 기준은 FIFO(first in first out) 방식, 최종 검색 시각이 가장 오래된 공유 데이터에 대한 정보부터 삭제하는 방식 또는 검색 빈도가 가장 낮은 공유 데이터에 대한 정보부터 삭제하는 방식인 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제1항에 있어서, 상기 공유 데이터 요청 과정은
상기 공유자 이력 테이블에 홈 노드로 요청할 공유 데이터에 대한 정보가 있는지 검색하는 단계;
상기 검색이 실패할 경우 상기 홈 노드로 상기 공유 데이터를 요청하는 제1 요청 단계; 및
상기 검색이 검색 성공할 경우 상기 공유 데이터를 저장한 상기 공유자 노드로 상기 공유 데이터를 요청하는 제2 요청 단계를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제5항에 있어서, 상기 보조 메모리에 저장된 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제5항에 있어서, 상기 다중 프로세서 시스템의 노드는 상기 홈 노드에 대한 정보가 저장된 디렉토리를 더 포함하며, 상기 제1 요청 단계는
상기 디렉토리에서 상기 공유 데이터를 저장한 상기 홈 노드에 대한 주소를 읽는 단계; 및
상기 홈 노드로 상기 공유 데이터의 전송을 요청하는 단계를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제1항에 있어서, 상기 공유 데이터 삭제 과정은
상기 공유 데이터의 사용이 완료된 경우 상기 공유 데이터에 대한 정보가 상기 보조 메모리의 공유자 이력 테이블에 있는지 검색하는 단계;
상기 검색 단계에서 검색 실패할 경우 상기 분산 메모리에서 상기 공유 데이터를 삭제하는 제1 삭제 단계; 및
상기 검색 단계에서 검색 성공한 경우 상기 보조 메모리의 상기 공유자 이력 테이블에서 상기 삭제할 공유 데이터에 대한 정보를 삭제하고 상기 분산 메모리에서 상기 공유 데이터를 삭제하는 제2 삭제 단계를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 제8항에 있어서, 상기 보조 메모리에 저장된 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함하며,
상기 제2 삭제 단계에서 상기 보조 메모리의 상기 공유자 이력 테이블에서 상기 삭제할 공유 데이터에 대한 정보는 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 더 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 삭제
- 삭제
- 제1항에 있어서, 상기 보조 메모리에 저장된 상기 공유자 이력 테이블은 공유 데이터 및 상기 공유 데이터를 저장한 공유자 노드에 대한 정보를 포함하며,
상기 이력 갱신 단계는
상기 공유자 이력 테이블에 상기 공유 데이터에 대한 정보 존재 여부를 검색하는 검색 단계; 및
상기 검색이 성공할 경우, 상기 공유자 이력 테이블에 상기 공유 데이터에 대응되는 공유자 노드 정보를 상기 신공유자 노드 정보로 변경하는 신공유자 정보 갱신 단계를 포함하는 것을 특징으로 하는 네트워크 부하 감소 방법.
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/970,909 US8510513B2 (en) | 2009-12-18 | 2010-12-16 | Network load reducing method and node structure for multiprocessor system with distributed memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20090127484 | 2009-12-18 | ||
KR1020090127484 | 2009-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110070772A KR20110070772A (ko) | 2011-06-24 |
KR101419379B1 true KR101419379B1 (ko) | 2014-07-15 |
Family
ID=44402234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100113400A KR101419379B1 (ko) | 2009-12-18 | 2010-11-15 | 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101419379B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102091152B1 (ko) | 2017-03-22 | 2020-03-19 | 정기웅 | 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154351A1 (en) * | 2001-11-16 | 2003-08-14 | Jim Nilsson | Coherence message prediction mechanism and multiprocessing computer system employing the same |
-
2010
- 2010-11-15 KR KR1020100113400A patent/KR101419379B1/ko not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154351A1 (en) * | 2001-11-16 | 2003-08-14 | Jim Nilsson | Coherence message prediction mechanism and multiprocessing computer system employing the same |
Also Published As
Publication number | Publication date |
---|---|
KR20110070772A (ko) | 2011-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9235519B2 (en) | Method for peer to peer cache forwarding | |
US7747825B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks | |
US7360032B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks | |
US8818942B2 (en) | Database system with multiple layer distribution | |
JP4848771B2 (ja) | キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム | |
US20150058570A1 (en) | Method of constructing share-f state in local domain of multi-level cache coherency domain system | |
US7386680B2 (en) | Apparatus and method of controlling data sharing on a shared memory computer system | |
CN100592269C (zh) | 用于预测性选择预取操作的范围的数据处理系统和方法 | |
US20060248287A1 (en) | Methods and arrangements for reducing latency and snooping cost in non-uniform cache memory architectures | |
JP5445581B2 (ja) | コンピュータシステム、制御方法、記録媒体及び制御プログラム | |
JP2000227909A (ja) | 混成不均等メモリ・ア―キテクチャ/単純キャッシュ専用メモリ・ア―キテクチャ・システム及び方法 | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和系统 | |
US6973547B2 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
US9465743B2 (en) | Method for accessing cache and pseudo cache agent | |
US11669453B2 (en) | Data prefetching method and apparatus | |
US8285942B2 (en) | Region coherence array having hint bits for a clustered shared-memory multiprocessor system | |
US8510513B2 (en) | Network load reducing method and node structure for multiprocessor system with distributed memory | |
US8397029B2 (en) | System and method for cache coherency in a multiprocessor system | |
KR20180092276A (ko) | 캐시 콘텐트 관리 | |
KR101419379B1 (ko) | 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조 | |
CN108415873B (zh) | 转发对监听请求的响应 | |
CN116303128A (zh) | 内存缓存池维护方法、设备、系统及存储介质 | |
US11947418B2 (en) | Remote access array | |
JP7328742B2 (ja) | スヌープ要求への対応 | |
EP3835959B1 (en) | Data pre-fetching method and device |
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 | ||
LAPS | Lapse due to unpaid annual fee |