컴퓨터구조론#17
LeeMir, 07 June 2021
제8장 고성능 컴퓨터시스템 구조
병렬처리의 개념과 필요성
- 병렬처리
- 다수의 프로세서들이 여러 개의 프로그램들 혹은 한 프로그램의 분할된 부분들을 분담하여 동시에 처리하는 기술
- 병렬처리를 위한 선결 조건
- 많은 수의 프로세서들로 하나의 시스템을 구성할 수 있도록 작고 저렴하며 고속인 프로세서들의 사용이 가능해야 함
- 반도체 기술의 발전과 VLSI 집적도 향상으로 가능해짐
- 한 프로그램을 여러 개의 작은 부분들로 분할하는 것이 가능해야하며, 분할된 부분들을 병렬로 처리한 결과가 전체 프로그램을 순차적으로 처리한 경우와 동일한 결과를 얻을 수 있어야 함
- 많은 수의 프로세서들로 하나의 시스템을 구성할 수 있도록 작고 저렴하며 고속인 프로세서들의 사용이 가능해야 함
- 야기되는 새로운 문제들
- 문제 분할
- 병렬처리를 위하여 문제를 여러 개로 나누는 것
- 프로세서간 통신
- 분할된 부분을 나누어 처리하는 프로세서간의 데이터 교환을 위해 메커니즘 필요
- 문제 분할
- 필요한 관련 기술들
- 병렬 프로그램 언어와 컴파일러의 개발
- 상호 배타 매커니즘(mutual exclusion mechanism) 지원
- 공유자원들에 대한 경합을 줄이고 이용률을 극대화할 수 있는 운영체제의 개발
병렬컴퓨터의 분류
- Flynn의 분류
- 구조적 특징에 따른 컴퓨터 분류 방식
- 명령어 스트림
- 프로세서에 의해 실행되기 위하여 순서대로 나열된 명령어 코드들의 집합
- 데이터 스트림
- 그 명령어들을 실행하는 데 필요한 순서대로 나열된 데이터들의 집합
- 프로세서들이 처리하는 명령어와 데이터의 스트림의 수에 따라 분류
- 단일 명령어 스트림 - 단일 데이터 스트림 (SISD)
- 단일 명령어 스트림 - 복수 데이터 스트림 (SIMD)
- 복수 명령어 스트림 - 단일 데이터 스트림 (MISD)
- 복수 명령어 스트림 - 복수 데이터 스트림 (MIMD)
- SISD
- 한번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서 시스템
- 파이프라이닝, 슈퍼스칼라 구조를 이용
- SIMD
- 배열 프로세서
- 여러 개의 프로세싱 유니트(PU)로 구성되고, PU들의 동작은 모두 하나의 제어 유니트에 의해 통제
- 모든 PU들은 하나의 명령어 스트림을 실행
- 데이터 스트림은 여러 개를 동시에 처리
- 멀티미디어 시스템에 적합
- MISD
- N개의 프로세서들이 서로 다른 명령어들을 실행하지만, 처리하는 데이터 스트림은 한 개
- 비현실적이므로 실제 구현된 경우는 없음
- N개의 프로세서들이 서로 다른 명령어들을 실행하지만, 처리하는 데이터 스트림은 한 개
- MIMD
- N개의 프로세서들이 서로 다른 명령어들과 데이터들을 처리
- 프로세서들간의 상호작용 정도에 따라 두 가지로 분류
- 밀결합 시스템
- 공유-기억장치 구조
- 다중프로세서 시스템
- 소결합 시스템
- 각자 지역 기억장치를 가진 독립적인 컴퓨터 모듈로 구성
- 프로세서간 통신은 메시지 전송 방식 이용
- 다중컴퓨터 시스템
- 밀결합 시스템
- 기억장치 액세스 모델에 따른 분류
- UMA 모델
- Uniform Memory Access
- 모든 프로세서들이 상호연결망에 의해 접속된 주기억장치를 공유
- 프로세서들은 주기억장치의 어느 영역이든 액세스할 수 있으며, 그에 걸리는 시간이 동일
- 하드웨어가 간단하고, 프로그래밍이 용이
- 공유 자원에 대한 경합이 높아지기 때문에 지연 시간이 커져 시스템 크기에 한계가 존재
- 공유 버스를 사용하는 시스템에서는 30개 이하의 프로세서로 구성해야 함
- 크로스바, MIN 등이 사용되는 경우 더 많은 프로세서들로 구성될 수 있음
- NUMA 모델
- Non-Uniform Memory Access
- UMA 모델의 한계를 극복하고 더 큰 규모의 시스템을 구성하기 위한 모델
- 다수의 UMA 모델들이 상호 연결망에 의해 접속된 형태
- 분산 공유-기억장치 구조
- 기억장치 액세스 시간은 기억장치의 위치에 따라 달라짐
- 지역 / 전역 / 원격 기억장치 액세스
- NORMA 모델
- No-Remote Memory Access
- 프로세서가 원격 기억장치는 직접 액세스할 수 없는 시스템 구조
- 프로세서들과 기억장치들은 메시지 전송을 지원하는 상호연결망으로 접속
- 분산-기억장치 시스템으로도 부름
- 주요 상호연결망: 매쉬, 하이퍼큐브, 토러스 등
- UMA 모델
다중프로세서시스템 구조
- MIMD 조직으로서, 여러 개의 프로세서들이 비동기적으로 프로그램을 실행하는 시스템
- 다중 프로세서와 다중 컴퓨터에서 사용되는 상호 연결망에 따른 분류
- 정적 상호 연결망
- 동적 상호 연결망
- 정적 상호 연결망
- 선형 배열 구조
- 네트워크 지름이 N-1로서, 다른 구조들에 비하여 가장 길음
- 버스 구조보다 동시성이 더 높음
- 통신 시간이 노드들 간의 거리에 따라 서로 다르며, 노드 수가 많아지면 통신 시간이 매우 길어짐
- 링 구조
- 네트워크 지름
- 각 링크가 양방향성이면
N/2
(버림) - 단방향성이면
N-1
- 각 링크가 양방향성이면
- 변형 구조 : 코달 링
- 원에서 각 노드에 링크가 하나씩 추가된 구조
- 링크의 수가 증가될수록 네트워크 지름은 감소
- d(degree) : 각 노드가 가지는 링크의 수
- 네트워크 지름
- 트리 구조
- 층(level)의 수를 k라고 할 때,
N = (2^k - 1)
개의 노드들 접속 - 네트워크 지름 =
2(k - 1)
- 시스템 요소들의 수가 증가함에 따라 성능이 선형적으로 향상
- 팻 트리 구조
- 상위 층으로 올라갈수록 노드간의 통신 채널 수 증가
- 트리 구조에서 상위 층으로 올라갈수록 통신량이 많아져서 채널이 병목이 되는 문제점을 해결
- 층(level)의 수를 k라고 할 때,
- 매시 구조
- Illiac IV 등에서 사용
- 토러스 네트워크
- 원형 구조와 매쉬 구조가 혼합된 구조로 확장이 용이
- 네트워크 지름이 짧아짐
- n x n 토러스의 경우
2*(k/2의 버림)
임
- 하이퍼큐브 네티워크
- 상호연결 함수에 의해 서로 연결
- 2 x 2 노드 구조들을 3차원 혹은 그 이상으로 접속해 구성
- 선형 배열 구조
- 동적 상호 연결망
- 공유-버스 구조
- 하드웨어가 매우 간단
- 모든 시스템 요소들이 하나의 시스템 버스에 접속
- 버스 경합으로 인한 지연 시간 증가
- 버스의 전송 속도를 높이거나 캐시를 사용하여 성능 저하를 보완
- 하드웨어가 매우 간단
- 다중-버스 구조
- 버스 경합을 줄이기 위하여 버스의 수를 증가
- 각 프로세서가 자신의 지역 기억장치 및 I/O 프로세서와 연결되는 지역 버스를 가짐
- 계층버스 구조 : 용도가 다른 여러 계층의 버스들을 사용
- 버스 경합을 줄이기 위하여 버스의 수를 증가
- 크로스바 스위치
- 프로세서들과 기억장치들 사이의 완전 연결성
- 비용이 많이 들고 하드웨어가 복잡
- 다단계 상호연결망(Multistage Interconnection Network: MIN)
- 크로스바 스위치와 버스 중간 정도의 하드웨어 복잡성을 가진 상호연결망
- 오메가 네트워크가 한 예임
- 입력단과 출력단이 각각 N개인 경우
- 필요한 단계(stage)의 수 :
log N
- 각 단계의 스위칭 소자(switching element)들의 수 :
m = N/2
- 필요한 단계(stage)의 수 :
- 스위칭 소자의 접속 방식
- 직진 / 교차 / 하위 방송 / 상위 방송
- 입력단과 출력단이 각각 N개인 경우
- 공유-버스 구조