명령어-수준 병렬성 (Instruction - level prallelism) 명령어들이 서로 독립적이어서 동시에 실행될 수 있는 상태 하드웨어 병렬성 (H/W parallelism, machine parallelism) 실제 명령어들을 병렬로 실행하는 데 사용될 수 있는 하드웨어 능력 하드웨어 자원의 이용률 저하 원인 1. 데이터 의존성 (1) 흐름 의존성 (flow dependence) 어떤 명령어를 실행하기 위해서는 앞의 다른 명령어의 실행 결과를 이용해야 하는 상황 -> 두 명령어는 반드시 순차적으로 실행되어야 함. 동적 실행 (dynamic execution) 프로그램에서 흐름 의존성이 존재하는 경우에, 뒤에 위치한 명령어들 중에서 현재 실행하려는 명령어와 의존성이 존재하지 않는 것이 있으면 순..
여러 개의 컴퓨터들을 상호 연결하여 구성되는 컴퓨터 클러스터가 하나의 통합된 자원(unified resource)으로서 사용될 수 있다면, 그 시스템은 "단일 시스템 이미지(single system image : SSI)를 가지고 있다."라고 말한다. SSI는 OS와 프로그래밍 환경(도구) / 응용프로그램 사이에 위치하는 미들웨어 계층(middleware layer)에 의해 지원된다. 미들웨어 S/W 하부 구조 1. SSI 인프라 (single system image infra) OS와 접착되어(glue) 있으며, 모든 노드들로 하여금 시스템 자원들을 통합적으로 액세스 할 수 있게 해준다. 2. SA 인프라 (system availability infa) 클러스터 내의 모든 노드들에게 체크 포인팅 (ch..
컴퓨터 클러스터링 (Computer Clustering) 개념 네트워크에 접속된 다수의 컴퓨터들 (PC, 워크스테이션, 혹은 다중 프로세서 시스템)을 통합하여 하나의 거대한 병렬 컴퓨팅 환경을 구축하는 기법 출현 배경 대부분의 컴퓨터에서 프로세서들이 연산을 수행하지 않는 유휴 사이클(idle cycle)들이 상당히 많다 고속의 네트워크가 개발됨으로써 컴퓨터들 간의 통신 시간이 현저히 줄어들게 되었다. 컴퓨터의 주요 부품들(프로세서, 기억장치 등)의 고속화 및 고집적화로 인하여 PC 및 워크스테이션들의 성능이 크게 높아졌다. 슈퍼컴퓨터 혹은 고성능 서버의 가격이 여전히 매우 높다. 클러스터 설계의 핵심 목표 단일 시스템 이미지 (Single System Image : SSI) 높은 가용성 (High Ava..
고성능 입출력 시스템 등장 배경 프로세서 성능과 I/O 서브시스템의 성능 간에 매우 큰 불균형이 존재 컴퓨터 응용 분야의 확대 : 온라인 트랜잭션, 웹 I/O, 멀티미디어 데이터 처리, 빅데이터 및 분산 처리 등 -> I/O 통신량 증가 => 대규모 병렬컴퓨터에서 I/O 서브시스템이 성능 병목 입출력 서브 시스템 설계의 주요 사항들 1. I/O 네트워크의 구성 I/O 네트워크 : I/O 장치와 프로세서 및 주기억장치 사이의 데이터 이동을 위한 상호 연결망 분산-기억장치 다중 프로세서 시스템의 구성 요소들 계산 노드 (compute node) : 프로세서와 기억장치로 구성되며 일반적인 프로그램 처리 I/O 노드 (I/O 노드) : 프로세서와 기억장치 및 I/O 장치 인터페이스로 구성되며, 계산 노드들로부터..
상호연결망(Interconnection Network)의 분류 1. 정적 상호 연결망 (Static interconnection network) 시스템 요소들 간에 직접 연결된 경로를 가지며, 연결 구조가 고정된 연결망 [예] ring, tree, mesh, torus 등 2. 동적 상호 연결망 (Dynamic interconnection network) 시스템 요소들 간의 연결 경로가 실행 시간 (run-time) 동안에 다양하게 변경될 수 있으며, 프로그램 실행중의 통신 패턴과 상황에 따라 필요한 경로를 설정하여 사용할 수 있는 연결망 [예] Omega network, Delta network 등 네트워크 성능 파라미터들 대역폭 (Bandwidth) : 네트워크를 통하여 전송될 수 있는 최대 데이터 ..
원래 GPU는 실시간 그래픽 처리용으로 개발되었으나, 계산 능력이 강화되어 일반적인 산술 연산 처리에도 쉽게 이용할 수 있도록 개선되면서 다양한 데이터 병렬 응용(data parallel application)들을 위한 가장 이상적인 보조 프로세서로서의 입지를 굳혀가고 있다. 초기 GPU는 몇 가지 치명적인 결점들을 가지고 있었는데 다양한 데이터 병렬 응용을 위한 범용 GPU로 발전하게 된 계기가 있는데, 이는 아래와 같다. 통합된 그래픽 및 계산 구조 (unified graphic and compute architecture) : 그래픽 응용뿐 아니라 일반적인 계산에도 적합한 하드웨어 구조 CUDA (Compute Unified Device Arcitecture) 프로그래밍 모델 : 일반적인 프로그래밍..
단일-버스 다중프로세서 시스템(2) - 캐쉬 일관성 유지를 위한 버스 감시 매커니즘 (MESI protocol), 디렉토리 기반 캐쉬 프로토콜
2019.06.18
캐시 일관성 유지 방법 중 가장 많이 사용하는 버스 감시 메커니즘에 대한 소개이다. 버스 감시 매커니즘을 이용하는 방법 데이터 일관성 유지를 위하여 버스 감시 기능을 가진 H/W 모듈인 스누프 제어기(snoop controller : 버스 감시기 (bus watcher))를 추가하는 방법 스누프 제어기(Snoop controller) 다른 프로세서에 의한 버스 상의 주기억장치 액세스의 주소를 감시하여, 그 결과에 따라 자신의 캐시 블록 상태를 조정하는 HW 모듈 각 캐쉬 블록들은 상태 비트들을 가지며, 상태의 수와 종류는 쓰기 방식 및 일관성 유지 프로토콜에 따라 달라짐. - Write-through coherence protocol - Write-back coherence protocol 1. Writ..
버스의 조직 데이터 버스(data bus) 시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합 양방향 전송 선의 수 = 한 번에 전송되는 데이터 비트의 수 주소 버스 (address bus) 프로세서가 기억장치와 읽기/쓰기 동작을 할 때, 해당 기억장치를 지정하기 위한 주소를 전송하는 선들의 집합 단방향 전송 (프로세서 -> 기억장치) 선의 수 = 주소 지정할 수 있는 기억장치의 최대 용량 제어 버스 (control bus) 기억 장치, 입출력 장치, 버스 등을 제어하기 위한 선들의 집합 제어 버스의 주요 기능 기억장치 및 입출력 장치와의 데이터 교환 기억장치 쓰기 (memory write), 기억장치 읽기(memory read) 입출력 쓰기 (I/O write), 입출력 읽기(I/O read..
다중-버스 다중 프로세서 시스템 단일 공유-버스 시스템의 버스 경합에 의한 지연을 줄이기 위하여 연결 통로를 제공하기 위한 시스템 구조이다. 종류는 아래와 같다. 크로스바 네트워크 (crossbar network) : 프로세서와 기억장치 모듈들 간에 완전 연결 (full connection)을 제공 다중-버스 구조(multiple-bus structure) : 공유 버스의 수가 두 개 혹은 그 이상이지만, 프로세서 수보다는 더 적은 구조 계층 버스 (hierarchical bus) 구조 : 버스의 역할(용도)이 서로 다른 계층적 구조의 다중-버스 구조 1. 크로스바 네트워크 Carnegi-Mellon(멜론..!) 대학에서 연구용으로 개발한 C.mmp 시스템에서 처음 사용되었다. 시스템 요소들(프로세서, ..