MIMD의 소결합 방식이란?
프로세서들이 기억장치를 공유하지 않고, 각 프로세서가 자신의 기억장치를 별도로 가지고 있는 방식이다.
소결합 방식을 사용하는 다중 프로세서 시스템을 분산-기억장치 시스템 구조라고 부르겠다.
분산-기억장치 시스템
분산-기억장치 시스템의 특징은 다음과 같다.
각 프로세서가 자신의 기억장치를 별도로 가지고 있기 때문에, 프로세서가 실행할 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 프로세서의 기억장치로 적재된다.
그래서 프로세서들에 의해 공유되는 데이터들만 서로 교환된다.
이러한 특징 때문에 프로세서간 통신량은 공유-기억장치 시스템에 비해 크게 줄어든다.
하지만 프로세서간 통신은 일반적으로 메시지-패싱 방식으로 이루어지기 때문에
통신 횟수가 줄어든 반면, 하나의 통신 자체에 걸리는 시간이 증가한다.
이때 통신 채널은 캐비닛 내의 백 플레인(backplane)을 통하여 구성되기도 하고, 이더넷(Ethernet)과 같은 통신 네트워크를 이용하여 독립적인 컴퓨터 시스템을 접속한 분산 시스템으로 구성하는 경우도 있다.
백 플레인이란?
스위치, 라우터 등 다중 보드 형태의 장비에서 : 데이터 버스 구조를 형성하는 중심적인 전자회로 보드
컴퓨터(PC) 등 단일 보드 형태의 장치에서 : 메인보드/시스템 보드/주회로 기판 그 자체
이 시스템에서 사용하는 상호연결 구조를 알아보자
목차
- 선형 배열 구조
- 링 구조
- 트리 구조
- 매시 구조(Mesh)
- 하이퍼큐브 구조
선형 배열 구조
N개의 노드들이 N-1개의 링크들에 의해 차례대로 연결되며, 선형 배열이라고 부른다.
이 구조의 네트워크 지름(노드 간의 거리 중 최대 거리)은 N-1로서 다른 구조들에 비하여 평균 통신 시간이 매우 길다.
각 링크에서 동시에 전송 동작이 일어날 수 있기 때문에 버스 구조보다 동시성은 높다.
하지만 통신에 소요되는 시간이 노드간의 거리에 따라 서로 다르고, 노드의 수가 많아지면 통신 시간은 그에 비례하여 길어진다.
링 구조
선형 구조에서 0번 노드와 N번 노드를 이어주면 위와 같은 링 구조가 된다.
이 구조의 네트워크 지름은 각 링크가 양방향성이면 N/2이 되고, 단 방향성이라면 선형과 똑같이 N-1이 된다.
링 구조에서 링크의 수를 추가시키면 위와 같은 새로운 구조를 구성할 수 있다.
변형된 구조를 코달 링 구조라고 하며, 링크의 수가 증가될수록 네트워크 지름은 감소한다.
트리 구조
위 그림은 5층짜리 2진 트리 구조이다. 2^5-1개의 노드를 가질 수 있다.
노드의 수가 증가함에 따라 성능이 선형적으로 향상되는 구조이다.
하지만 네트워크 지름은 비교적 큰 편이다.
2진 트리 구조가 위와 같은 팻 트리 구조로 변형될 수 있다.
이 구조는 상위 계층으로 올라갈수록 연결된 통신 채널이 많아진다는 특징을 가진다.
따라서 트리의 상위 계층일수록 통신의 병목이 발생할 가능성이 높은데 이를 해결할 수 있다.
이 구조는 1995년 '씽킹 머신' 사 에서 개발한 CM-5 슈퍼컴퓨터의 구조로 사용되었다.
매시 구조
매시 네트워크
노드들을 2차원 배열로 연결하여 각 노드가 4개의 주변 노드들과 직접 연결되는 구조이다.
위 그림은 4 X 4 매시 네트워크의 기본 구조이다.
실제로 사용할 때는 주로 위 구조에서 약간의 링크를 추가해서 쓰인다.
토러스 네트워크
매시 구조와 링 구조가 결합된 구조이다.
시스템 확장이 용이하다.
네트워크 지름은 k X k 구조인 경우 2(k/2)로 비교적 짧은 편이다.
매시 및 토러스 구조는 3차원 이상의 입체형 네트워크로 확장될 수 있다.
그 경우에 전체 노드의 수는 K^n으로 표현할 수 있다.
-> K는 프로세서의 수, n은 차원의 수
하이퍼큐브
k=2인 n차원 네트워크를 의미한다.
이 네트워크는 2 X 2 노드 구조들을 3차원 혹은 그 이상으로 접속하여 구성할 수 있다.
4차원 하이퍼큐브 구조는 어떻게 만들까?
4차원을 우리가 상상할 수는 없다. 1차원인 점을 늘려서 2차원, 2차원인 선을 늘려서 3차원, 3차원인 공간(육면체)을 늘려서 3차원의 공간을 수학적으로 그려볼 수 있다.
위 그림을 보면 바로 이해가 될 것이다.
3차원 하이퍼큐브에 있던 총 8개의 노드가 그대로 이동하여 반대편으로 복사됨을 볼 수 있다.
따라서 4차원 하이퍼 큐브는 위 그림처럼 생기게 됨을 이해할 수 있다.
이제 4차원에서 각 노드가 상대 노드를 찾는 과정을 알아보자.
시작노드
a3 | a2 | a1 | a0 |
0 | 1 | 1 | 0 |
도착노드
b3 | b2 | b1 | b0 |
1 | 1 | 0 | 1 |
0110 -> 1101 노드로 가는 과정은 다음과 같다.
- 0110과 1101을 XOR연산을 수행한다.
수행을 하면 아래와 같은 새로운 비트를 얻을 수 있다.
c3 c2 c1 c0 1 0 1 1 - c0부터 c3비트 순으로 확인한다.
- c0 == 1이면 x방향으로 이동한다.
- c1 == 1이면 y방향으로 이동한다.
- c2 == 1이면 z방향으로 이동한다.
하지만 c2 == 0이므로 z 방향으로의 이동은 없다. - c4 == 1이면 4차원 방향으로 이동한다.
'CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터 구조] 다중 프로세서 시스템 #1 (0) | 2022.01.21 |
---|---|
[컴퓨터 구조] 인터럽트와 DMA를 이용한 I/O (0) | 2022.01.13 |
[컴퓨터 구조] 캐시 메모리 (0) | 2022.01.06 |
[컴퓨터 구조] 기억장치 모듈 설계 (0) | 2022.01.05 |
[컴퓨터 구조] RAM & ROM (0) | 2021.12.30 |