1. Why Parallelism?

hunnxx·2021년 2월 9일
0

Parallel Computer Architecture and Programming: Lecture 1 - 1-17-18 - Carnegie Mellon University

Single Processor Performance


![https://velog.velcdn.com/images%2Fhunnxx%2Fpost%2Fe7b64f6d-8461-49ff-8ae0-9a116f38d67f%2F_2021-01-21__5.59.17.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fhunnxx%2Fpost%2Fe7b64f6d-8461-49ff-8ae0-9a116f38d67f%2F_2021-01-21__5.59.17.png)
Multi Processor에 대해 알아보기 전, Single Processor의 성능에 대해 먼저 알아보려고 한다. Single Processor의 성능은 시간이 흐르면서 아래와 같은 이유로 급격하게 성장하기 시작했다.

  1. Wider Data Paths
    e.g. 4bit → 8bit → 16bit → 32bit → 64bit

  2. More Efficient Pipelining
    e.g. 3.5Cycles Per Instruction(CPI) → 1.1CPI

  3. Exploting Instruction-Level Parallelism(ILP)
    e.g. SuperScalar Processing(issue up to 4 instruction / cycle)

  4. Faster Clock Rates
    e.g. 10MHz → 200MHz → 3GHz

1980년에서 1990년까지는 Single Processor의 성능이 급격하게 성장할 수 있었다. 하지만, 당시 최고의 반도체 제조 회사였던 Intel은 지속적으로 Single Processor의 성능을 높이기 위해 노력했으나 오히려 발열이 심해지고 성능이 저하되는 현상을 확인하게 된다. 따라서 Intel은 이러한 기술적인 벽을 깨기 위해 Multi Processor와 Parallelism을 사용하는 방향으로 나아가기 시작했다.

![https://velog.velcdn.com/images%2Fhunnxx%2Fpost%2F8abe4626-2e35-4248-b1a6-0e28615f742f%2F_2021-01-21__6.09.58.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fhunnxx%2Fpost%2F8abe4626-2e35-4248-b1a6-0e28615f742f%2F_2021-01-21__6.09.58.png)

Parallel Computer


그렇다면, Parallel Computer라는 것은 무엇일까? Parallel Computer의 일반적인 정의는 다음과 같다.

"A parallel computer is a collection of processing elements that cooperate to solove problems quickly."

즉, 성능과 효율성을 고려하여 문제를 빠르게 해결하기 위해 Multi Processor를 사용한다는 것이다.

Speedup

Parallel Processing을 사용하는 핵심적인 이유 중 하나는 처리 속도를 증가시키는 것이다. 처리해야 하는 Task를 여러 Processor가 할당받아 동시에 처리한다는 것이다.

Speedup(P processors)=exec time(1 processor)exec time(P processors)Speedup(P\ processors) = \frac{exec\ time(1\ processor)}{exec\ time(P\ processors)}

예를 들면, 사람(Processor)과 숫자카드(Task)가 있는 상황이 있다. 숫자카드의 값은 0~9 사이의 값 하나로 정해져 있고, 총 40장으로 구성되어 있다. 우리는 이 숫자카드의 총합을 구할려고 한다. 한 명의 사람이 순차적으로 카드 한 장을 처리하는데 1초가 걸린다고 가정하면, 총합을 계산하는데 약 40초가 소요된다. 하지만, 만약 4명의 사람이 각각 10장씩 분담하여 동시에 처리한다면 약 10초가 소요된다. 즉, 약 4배의 속도 증가를 얻을 수 있는 것이다.

만약, 4명의 사람 간의 거리가 멀어지거나 각자 할당되는 카드의 수가 다르면 어떻게 될까? 이전의 결과와는 다르게 약 4배의 속도 향상을 유지하지 못한다. 그 이유에는 Communication과 Work Balance 문제가 있다. 모든 사람이 약 10초 안에 각자 할당받은 문제를 해결했어도 서로의 결과를 합산을 해야만 총합을 구할 수 있다. 하지만 거리가 멀면 결과를 공유하여 합산하는데 시간이 생겨 Communication Overhead가 발생한다. 또한, 4명 중 한 사람이 30장의 카드를 할당받으면 나머지 3명이 빠르게 처리했다고 하더라도 총합을 구하기 위해서 아직 카드를 처리하지 못 한 사람을 기다려야 한다. 이러한 상황에서 카드의 수가 40장보다 많아지면 속도 향상은 이전의 상황보다 제한되어진다.

따라서 처리 속도를 증가시키기 위해 Multi Processor를 사용하여 Parallel Processing을 적절하게 수행하기 위해서는 Problem Partitioning/Communication/Synchronization의 효율적인 방법이 필요하고, Machine에 대한 이해가 필요하다.

0개의 댓글