CS 105

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 그래픽처리유니트(GPU)]

GPU는 실시간 그래픽 처리용으로 개발되었으나, 계산 능력이 강화되어 일반적인 산술 연산 처리에도 쉽게 이용할 수 있도록 개선되면서 다양한 데이터 병렬 응용(data parallel application)들을 위한 가장 이상적인 보조 프로세서로서의 입지를 굳혀가고 있다.초기 GPU는 몇 가지 치명적인 결점들을 가지고 있었다. 프로그래밍을 위해서는 GPU 내부 구조와 그래픽 API(application program interface)에 대한 지식이 필요하다는 것과 그래픽 프로그래밍 자체가 너무 복잡하다는 것이다.기억장치에 대한 직접적인 읽기 및 쓰기와 같은 기본적인 연산은 과학 기술 응용들에 필수적인 부동소수점 연산이 지원되지 않았고, 그러한 문제점에도 불구하고 GPU가 널리 보급되기 시작한 것은 NVI..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 다중프로세서시스템 구조]

프로세서들이 기억장치 모듈을 사용하는(소유하는) 방식에 따라 크게 다음과 같이 분류공유-기억장치 시스템(shared-memory system)분산-기억장치 시스템(distributed-memory system)공유-기억장치 시스템 구조이 시스템 구조는 밀결합 형태로서, 주기억장치가 어느 한 프로세서에 속하지 않고 모든 프로세서들에 의해 공유된다.각 프로세서는 특수 프로그램(하드웨어 초기화와 진단 프로그램)을 저장하고 잇는 적은 용량의 지역 기억장치(local memory)를 별도로 가질 수는 있으나, 운영체제와 사용자 프로그램 및 데이터들은 모두 공유 기억장치에 저장된다.장점프로세서들이 공통으로 사용하는 데이터들이 공유 기억장치에 저장되므로, 별도의 프로세서 간 통신 메커니즘이 필요하지 않다.프로그램 실..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬컴퓨터의 분류]

Flynn의 분류컴퓨터 시스템을 분류하는 방법으로는 프로그램 처리의 동시성을 기준으로 하는 Flynn의 분류(Flynn's classification)가 널리 사용되고 있다.이 분류에서는 프로세서들이 처리하는 명령어와 데이터의 스트림의 수에 따라 디지털 컴퓨터를 네 가지로 분류하고 있다.여기서 스트림이란 하나의 프로세서에 의해 순서대로 처리되는 일련의 명령어들과 데이터들의 흐름을 말한다.명령어 스트림(instruction stream)실행되기 위하여 순서대로 프로세서로 들어오는 명령어 코드들의 흐름데이터 스트림(data stream)명령어 실행에 사용되기 위하여 순서대로 프로세서로 들어오는 데이터들의 흐름명령어 스트림과 데이터 스트림을 처리하기 위한 하드웨어 구조에 따른 Flynn의 분류단일 명령어 스트..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬처리의 개념 및 필요성, 병렬처리의 단위]

병렬처리의 개념 및 필요성반도체 소자의 물리적인 특성에 의한 프로세서 속도 상의 한계를 극복할 수 있게 해주는 기술이 병렬처리이다.병렬처리(parallel processing)다수의 프로세서들을 이용하여 여러 프로그램들을 분담하여 동시에 처리하는 기술실제로 대부분의 고성능 컴퓨터 시스템의 설계에서는 성능 향상을 위한 방법으로서 벼렬처리 기술이 널리 사용되고 있다.병렬 처리를 실제 구현하기 위해 만족해야 하는 조건많은 수의 프로세서들로 하나의 시스템을 구성할 수 있도록, 작고 저렴하며 고속인 프로세서들의 사용이 가능해야 한다.한 프로그램을 여러 개의 작은 부분들로 분할하는 것이 가능해야 하며, 분할된 부분들을 병렬로 처리한 결과가 전체 프로그램을 순차적으로 처리한 경우와 동일한 결과를 얻을 수 있어야 한다..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트/DMA를 이용한 I/O]

만약 큰 데이터 블록을 전송하는 경우 CPU가 그 동작들을 수행하는데 많은 시간을 소모해야 하며, 시스템 버스도 대부분의 시간 동안 그러한 I/O 동작들을 위해 사용될 수 밖에 없는데, 이 문제점을 해결하기 위하여 직접기억장치액세스(Direct Memory Access:DMA)가 널리 사용되고 있다.DMA란 CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터 전송을 수행하는 매커니즘을 말한다.DMA 방식을 사용하기 위해 시스템 버스에 DMA 제어기가 추가되어야 한다.DMA 제어기CPU 개입 없이 I/O 장치와 기억장치 간의 데이터 전송을 수행하는 DMA 동작을 지원하는 하드웨어 모듈이다.주기억장치의 데이터를 I/O 장치로 내보내거나 (I/O write), I/O 장치로부터 데이터를 주기억장치로 읽..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 /인터럽트를 이용한 I/O]

인터럽트-구동 I/O인터럽트 매커니즘을 이용하여 CPU와 I/O 장치간의 상호작용이 처리되는 방식동작 순서CPU가 I/O 제어기에게 명령을 보낸다. 그런 다음에 CPU는 다른 작업을 수행한다.제어기는 I/O 명령을 이용하여 I/O 장치를 제어한다.I/O 장치가 명령 수행을 완료하면, 제어기는 CPU로 인터럽트 신호를 보낸다.CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 다음 작업을 계속한다.앞의 과정에서 2, 3번이 진행되는 동안 CPU는 다른 프로그램을 수행할 수 있다.I/O 장치의 속도가 느린 경우에도 CPU 시간이 낭비되지 않는다.CPU가 프린터로 데이터를 출력하는 과정CPU가 데이터와 프린트 명령을 프린트 제어기로 보낸다.그 데이터의 프린트가 종료되면, 프린트 제어기는 .CPU로..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 / I/O 장치의 접속]

I/O 장치란 컴퓨터 시스템에서 사용자 혹은 외부와의 정보 교환을 위한 장치들을 말하며 주변장치 라고도 한다.디스크 드라이브, CD-ROM, DVD와 같은 보조 저장장치들과 디스플레이 모니터, 프린터 등이 모두 포함I/O 제어각종 I/O 장치들은 시스템 버스를 통하여 CPU 혹은 주기억장치와 정보를 교환하게 된다.I/O 장치들이 직접 시스템 버스에 접속되지 못하는 이유I/O 장치들은 종류가 매우 다양하며, 동작을 제어하는 방법이 서로 다르다. 그러한 제어를 위한 회롣르을 CPU 내부에 모두 포함시키는 것이 불가능하기 때문에, CPU가 그들을 직접 제어할 수 없다.I/O 장치들의 데이터 전송 속도가 CPU의 데이터 처리 속도에 비하여 훨씬 더 느리다. 따라서 고속의 시스템 버스를 통하여 I/O 장치들과 직..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 / 버스 중재]

한 개의 시스템 버스에 접속된 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 경우에는 경쟁이 발생하게 된다. 이러한 현상을 버스 경합(bus contention)이라고 한다.이 문제를 적절히 해결하지 못하면 시스템이 정상으로 동작하지 못할 수도 있고, 동작을 하더라도 성능이 떨어지게 된다.버스 경합이 발생한 경우에 버스 마스터들 중에서 한 개씩 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작을 버스 중재(bus arbitration)라 하며, 이러한 기능을 수행하는 하드웨어 모듈을 버스 중재기(bus arbiter)라 한다.버스 중재 방식은 시스템 성능에 많은 영향을 주기 때문에 시스템의 특성에 따라 적절히 설계되어야 한다. 특히 기능상 중요도가 높은 버스 마스터가 버스를 우선적으로 사용할..

컴퓨터 구조론 6장 [보조저장장치-플래시메모리와 SSD]

컴퓨터 시스템에서 주기억장치로 사용되고 있는 DRAM은 휘발성이며 용량에도 한계가 있다. CPU가 프로그램을 실행하는 중에 주기억장치와 영구저장 능력을 가진 보조저장장치 간에 빈번한 정보 전송이 발생하는 이유시스템 초기화 과정에서 운영체제(OS) 프로그램이 보조정장치로부터 주기억장치로 적재되어야 한다.응용 프로그램이 처음 수행될 때는 보조저장장치로부터 주기억장치로 적재되어야 한다.새로이 생성되거나 수정된 데이터는 보조저장장치에 영구 저장되어야 한다.주기억장치 공간이 부족한 경우에는 적재되어 있는 블록을 보조저장장치로 내보낸 다음에(Swap-Out), 새로운 블록을 읽어와서 그 공간에 적재한다(Swap-In)따라서 보조저장장치의 액세스 속도는 CPU의 프로그램 처리 시간에 직접적인 영향을 미친다. 그러나 ..

컴퓨터 구조론 6장 [보조저장장치-RAID]

RAID(Redundant Array of Independent Disks)다수의 작은 디스크들을 배열로 연결하여 용량을 늘리고 신뢰성도 향상시킨 대용량 디스크시스템RAID는 대규모 저장 용량을 필요로 하는 중대형 급 컴퓨터시스템에서 널리 사용되고 있다.RAID 출현의 배경디스크의 저장 밀도가 계속 높아짐에 따라 메가바이트 당 가격이 떨어지고 시스템이 보유할 수 있는 디스크 용량이 증가하는데, 이러한 추세는 전력 소모가 낮은 소형 디스크에서 특히 두드러지게 나타나고 있다. 이 같은 추세에 따라, 하나의 대형 디스크를 사용하는 것보다 크기가 작은 여러 개의 디스크들을 서로 연결하여 하나의 큰 용량을 가진 디스크 유니트로 사용하는 것이 보다 저렴한 가격으로 더 큰 용량을 가진 디스크 서브시스템을 구성할 수 ..