분산 공유 메모리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
분산 공유 메모리(DSM)는 네트워크로 연결된 여러 독립적인 처리 노드와 로컬 메모리 모듈로 구성된 멀티컴퓨터 시스템이다. 소프트웨어 또는 하드웨어 방식으로 구현될 수 있으며, 운영 체제나 프로그래밍 라이브러리, 캐시 일관성 회로, 네트워크 인터페이스 컨트롤러 등을 통해 구현된다. DSM은 페이지 기반, 공유 변수, 객체 기반 방식을 통해 구현될 수 있으며, 메시지 전달 방식보다 프로그래밍이 용이하고 큰 가상 메모리 공간을 제공하는 장점이 있다. 하지만 접근 속도가 느리고, 일관성 모델을 이해해야 하는 단점이 있다. DSM은 디렉터리 기반 메모리 일관성을 통해 데이터 블록의 상태를 추적하며, 요청-응답 또는 요청자 중심 방식을 사용하여 메모리 일관성을 유지한다. DSM은 일관성 모델에 따라 읽기 복제 또는 쓰기 복제 방식을 사용하여 공유 데이터의 일관성을 유지한다. 관련 기술로는 분산 메모리, 가상 메모리, 단일 시스템 이미지가 있으며, 케리게드, 오픈SSI, 모식스, 트레드마크스 등이 DSM 시스템의 예시로 사용된다.
분산 공유 메모리(DSM)는 확장성, 투명성, 성능, 비용 효율성, 프로그래밍 편의성 등 다양한 장점을 제공하지만, 접근 속도, 동시 접근 제어, 성능 저하 가능성, 프로그래머 제어 제한, 일관성 모델 이해 필요성 등 몇 가지 단점도 가진다.
2. 기본 개념 및 구조
분산 공유 메모리(DSM, Distributed Shared Memory)는 멀티컴퓨터라고도 불리며, 네트워크로 연결된 여러 독립적인 처리 노드와 로컬 메모리 모듈로 구성된다. 소프트웨어 DSM은 운영 체제나 프로그래밍 라이브러리 형태로 구현될 수 있으며, 가상 메모리 아키텍처의 확장으로 볼 수 있다. 하드웨어 DSM은 캐시 일관성 회로 및 네트워크 인터페이스 컨트롤러 등을 통해 구현될 수 있다.
2. 1. 구현 방식
분산 메모리 시스템은 멀티컴퓨터라고도 불리며, 네트워크로 연결된 여러 개의 독립적인 처리 노드로 구성된다. 각 노드는 자체 메모리 모듈을 가지고 있다. 소프트웨어 분산 공유 메모리(DSM) 시스템은 운영 체제나 프로그래밍 라이브러리로 구현될 수 있으며, 가상 메모리 아키텍처의 확장으로 볼 수 있다. 운영 체제에서 구현될 때는 개발자에게 투명하게 작동하여 기본 분산 메모리가 사용자에게 보이지 않는다. 반면, 라이브러리나 언어 수준에서 구현된 소프트웨어 DSM 시스템은 투명하지 않아 개발자가 다르게 프로그래밍해야 한다. 그러나 이러한 시스템은 DSM 시스템 구현에 더 이식성이 좋은 방식을 제공한다. DSM 시스템은 물리적으로 분산된 메모리 시스템에서 공유 메모리 모델을 구현한다.
DSM은 소프트웨어뿐만 아니라 하드웨어로도 구현할 수 있다. 하드웨어 예로는 캐시 일관성 회로 및 네트워크 인터페이스 컨트롤러가 있다. DSM을 구현하는 세 가지 방법은 다음과 같다.3. 장점 및 단점
3. 1. 장점
분산 공유 메모리는 다음과 같은 장점을 가진다.3. 2. 단점
4. 메시지 전달 방식과의 비교
메시지 전달 | 분산 공유 메모리 |
---|---|
변수는 마샬링되어야 한다. | 변수는 직접 공유된다. |
통신 비용이 명확하다. | 통신 비용이 보이지 않는다. |
프로세스는 개인 주소 공간을 가져 보호된다. | 프로세스는 데이터를 변경하여 오류를 발생시킬 수 있다. |
프로세스는 동시에 실행되어야 한다. | 프로세스 실행은 겹치지 않는 수명으로 발생할 수 있다. |
5. 디렉터리 기반 메모리 일관성
메모리 일관성은 DSM 시스템이 메모리 전체 노드에서 데이터 블록의 상태를 추적하고 유지하는 데 필수적이다. 디렉터리는 시스템 전체에서 이동하는 캐시 블록의 상태를 유지하는 메커니즘 중 하나이다.
5. 1. 상태
DSM에서 메모리 블록은 일반적으로 다음 세 가지 상태를 가진다.- Uncached (U): 캐시되지 않은 상태.
- Exclusive Modified (EM): 블록을 독점적으로 소유하거나 수정된 상태.
- Shared (S): 공유 상태.
블록이 디렉터리 조직으로 들어오면 초기 노드에서 U에서 EM (소유 상태)으로 전환된다. 다른 노드가 블록을 읽기 시작하면 상태가 S로 전환될 수 있다.[2] 블록은 노드 중 하나가 EM 상태에 있는 경우 "소유"된다.

시스템이 각 노드에서 블록이 캐시된 위치와 조건을 추적하는 두 가지 주요 방법은 다음과 같다.
- 홈 중심 요청-응답: 홈을 사용하여 요청을 처리하고 상태를 구동한다.
- 요청자 중심 방식: 각 노드가 홈을 통해 자체 요청을 구동하고 관리한다.
5. 2. 요청-응답 방식
홈 중심 시스템에서 분산 공유 메모리(DSM)는 홈 노드가 트랜잭션이 완료되었다고 결정할 때까지 한 번에 하나의 트랜잭션만 허용함으로써 노드 간의 요청-응답 경쟁을 피한다. 일반적으로 홈 노드는 요청에 대한 모든 응답 프로세서의 응답을 수신했을 때 트랜잭션이 완료되었다고 결정한다. 이러한 예로는 인텔의 QPI 홈 소스 모드가 있다.[3] 이 방식은 구현이 간단하지만, 홈 노드의 제한으로 인해 요청-응답 전략이 느리고 버퍼링된다는 단점이 있어 성능 병목이 발생할 수 있다.요청자 중심 시스템에서, 분산 공유 메모리(DSM)는 노드들이 홈을 통해 서로 자유롭게 통신하도록 허용한다. 이는 여러 노드가 트랜잭션을 시작하려고 시도할 수 있음을 의미하지만, 일관성을 보장하기 위한 추가 고려 사항이 필요하다. 예를 들어, 한 노드가 블록을 처리하는 동안 다른 노드로부터 해당 블록에 대한 요청을 받으면, 처리 중인 노드가 즉시 해당 요청을 처리할 수 없음을 초기 노드에게 알리기 위해 NAck(부정 응답)을 보낸다. 이러한 예시로 인텔의 QPI 스누프-소스 모드[3]가 있다. 이 방식은 빠르지만, 자연스럽게 경합 상태를 방지하지 못하며 더 많은 버스 트래픽을 생성한다.
6. 일관성 모델
분산 공유 메모리(DSM) 시스템은 노드 간의 읽기 및 쓰기 순서에 대한 일관성을 유지하기 위해 특정 규칙을 따르며, 이를 일관성 모델이라고 한다.
만약 ''n''개의 프로세스가 있고, 각 프로세스 ''i''에 대해 ''Mi''개의 메모리 연산이 있으며, 모든 연산이 순차적으로 실행된다고 가정해 보자. 그러면 (''M1'' + ''M2'' + … + ''Mn'')!/(''M1''! ''M2''!… ''Mn''!) 개의 연산 인터리빙이 가능하다는 결론을 내릴 수 있다. 이 결론의 문제는 인터리빙된 연산의 정확성을 결정하는 것이다. DSM의 메모리 일관성은 어떤 인터리빙이 허용되는지 정의한다.
6. 1. 복제
읽기 복제에서는 여러 노드가 동시에 읽을 수 있지만, 하나의 노드만 쓸 수 있다. 쓰기 복제에서는 여러 노드가 동시에 읽고 쓸 수 있으며, 쓰기 요청은 시퀀서에 의해 처리된다.[1]일반적으로 공유 데이터 복제는 네트워크 트래픽 감소, 병렬 처리 증가 촉진, 페이지 폴트 감소 등의 효과를 가져온다. 그러나 [무결성/일관성](https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B4%80%EC%84%B1_(%EC%BB%B4%ED%93%A8%ED%84%B0)) 유지는 더욱 어려워질 수 있다.[1]
7. 관련 기술 및 개념
분산 메모리 시스템은 흔히 멀티컴퓨터라고 불리며, 일반적인 상호 연결 네트워크로 연결된 로컬 메모리 모듈을 가진 여러 개의 독립적인 처리 노드로 구성된다. 소프트웨어 분산 공유 메모리(DSM) 시스템은 운영 체제에서 구현되거나 프로그래밍 라이브러리로 구현될 수 있으며, 기본적인 가상 메모리 아키텍처의 확장으로 간주될 수 있다. 운영 체제에서 구현될 때, 이러한 시스템은 개발자에게 투명하며, 이는 기본 분산 메모리가 사용자로부터 완전히 숨겨진다는 것을 의미한다. 반대로, 라이브러리 또는 언어 수준에서 구현된 소프트웨어 DSM 시스템은 투명하지 않으며 개발자는 일반적으로 이를 다르게 프로그래밍해야 한다. 그러나 이러한 시스템은 DSM 시스템 구현에 더 이식 가능한 접근 방식을 제공한다. DSM 시스템은 물리적으로 분산된 메모리 시스템에서 공유 메모리 모델을 구현한다.
DSM은 소프트웨어뿐만 아니라 하드웨어를 통해서도 구현할 수 있다. 하드웨어 예로는 캐시 일관성 회로 및 네트워크 인터페이스 컨트롤러가 있다. DSM을 구현하는 세 가지 방법이 있다.
- 페이지 기반 접근 방식 (가상 메모리 사용)
- 공유 변수 접근 방식 (공유 변수에 접근하기 위한 루틴 사용)
- 객체 기반 접근 방식 (객체 지향적 규율을 통해 공유 데이터에 접근하는 것이 이상적임)
관련 기술 및 개념은 다음과 같다.
- 결과적 일관성
- Distributed memory|분산 메모리영어
- Consistency model|일관성 모델영어 - (병렬 컴퓨팅#일관성 모델)
- Memory virtualization|가상 메모리영어
- Single system image|단일 시스템 이미지영어 (단일 시스템 이미지)
8. 예시
- 케리게드
- 오픈SSI
- 모식스
- 트레드마크스
- http://vodca.otago.ac.nz VODCA
- http://dipc-2.sourceforge.net/ DIPC
참조
[1]
서적
Computer Architecture: A Quantitative Approach
Morgan Kaufmann
[2]
서적
Fundamentals of Parallel Multicore Architecture
Chapman and Hall/CRC
[3]
서적
A Primer on Memory Consistency and Cache Coherence
Morgan & Claypool
[4]
서적
Computer Architecture: A Quantitative Approach
Morgan Kaufmann
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com