Hi there!

I am a student studying computer science.

컴퓨터 구조

컴퓨터 구조 13장 - Parallel Processor

만능성구 2020. 6. 17. 20:32
728x90

Multi Processor

두 개 이상의 processor들로 연결된 컴퓨터 system

 

이유:

고성능, 확장가능성 scalability , availability 서비스를 제공해줄 수 있는지, 전력의 효율성

 

Task-level(process level) 병렬성

 - 나누어서 처리해서 고성능을 낼 수 있다.

 - cluster : multi processor 시스템이  LAN기술??을 이용해서 구성되어 있는 것

 

Parallel processing program

 - 여러 프로세서로 돌아가는 단일 프로그램 

 

Multicore microprocessors

 - 반도체 기술이 발달해서 칩 하나에  프로세서 코어들을 여러개 가질 수 있다.

 - SMP(Shared Memory Processor)

 

processor들이 버스 같은 걸로 연결되어있어서 memory를 같이 사용하는 구조,

가장 어려운 것 : 병렬하드웨어를 효과적으로 사용할 수 있느냐.

 

분류 방법

1. 하드 웨어가 serial / parallel

2. software 가 sequential연속적 / concurrent동시에

         serial - sequential : 하드웨어 하나에 소프트웨어 여러개 동시에

         hard parallel - soft concurrent


Parallel Programming

하드웨어는 paralle쉽다

software는 어렵다

기본적으로 어떤 task를 더 빠른 프로그램을 만드는건이 쉽지 않하

또 processor수 가 많아질수록 활용하는 방법이 쉽지않다

간단한 일이 아님

 

어쨌뜬 성능을 향상시키기 위해서 parallel하게 만들었으면

소프트웨어도 parralel하게 동작하게 만들어야함

partitioning이 어려다 

왜? task를 어려개의 나눌지 나눈 일이 독립적이 아닌 coordination 하게 해야한다.

이렇게 하기 위해선 통신을 해야하는데 이에 대한 overhead를 주의해야한다.

amdahl의 법칙에 의하면

sequential파트가 speed up을 제안한다.

아무리 hardware를 많이 써도 달성하기 어렵다

100개의 porcessor가 있고 speed up을 90배 올리고 싶으면

병렬가능한 부분이 얼마나 되나 계산해야한다.

speedup = 1- F

전체중 seqential한 파트가 0.1%이어야한다. 어렵다

 

instruction stream에 대해서 

Instruction stream이 single Multiple

data stream이 single multiple

instructino 하나에 data한게 sisd

명령어 하나에 데이터 여러개  simd 벡터 연산에 유용, multimedia연산할때쓰는것 sse가 intel의 simd명령어

명령어 여러개의 data하나다 misd이제 거의 볼수 없음

mimd 둘다 여러개 실은 sisd자체를 여러개 병렬연결하는 것이다.

 

SPMD : Single Program Multiple Data를 의미한다.

하나의 프로그램이 MIMD 컴퓨터의 각 프로세서에서 동시에 동작하고 coordination 코드를 이용해서 협력해서 만들어지는 것

즉 모든 컴퓨터가 같은 것을 돌리고 하드웨어의 id에 따라서 다른 행동을 하게 한다.


vector processor

슈퍼컴퓨터 만든는데 사요ㅕㅇ

function unit자체를 가져다 pipeline을 잘 시키는 형태로 동작시키는 것

data들이 vector register에 저장되어 있고 stream 형태로 alu, function unit에 pipeline되면서 흘러가면서 연산이 처리되는 것 

instrcution fetch bench수를 줄일 수 있다.

하나의 명령어를 가지고 여러 vector data에 동일하게 적용시키는 형태로 구성하고 있는 것

data parallel프로그ㅐㄻ 자체에 대해서 간단하게 동작할 수 잇는 형태

loop같은 것이 없는 형태로 progrma이 만들어져야한다.

이런한 것들이 interleved bust memory에서 쉽게 규칙적으로 가져올 수 있도록 동작할 수 있다.

loop를 통해서 control hazard를 피하는게 좋다고 말한다.

alu를 여러개 두어 flexible하게 동작 시킬 수 있다.

simd명령어 자체는 지금도  실제로 많이 구현되고 있는다.

z.B) mmx sse, s86명령어 이다. 

data자체가 128bit 큰 register들로 구성되어 있고

더하라 하면 128bit 내에 있는 각각 예 32bit씩 독립적으로 더하거나 곱해지도록 만든느것

모든 function element 자체가 한번에  operation을 취하는 구조

 


process내부에서 multi threading을 지원하는 형태로 하드웨어가 구성된다

process는 하나 또는 그 이상의 threa로 구성되어 있고 독자적인 address space를 가지고 있고, os의 상태를 가지고 os에 의해 context switching 한다. 교대로 cpu를 사용한다.

반면에 thread는 어떤이릉 ㄹ수행하기 위한 순차적인 명령어의 흘므

process를 구성하는 요소가 된다.

기본적으로 program counter, thread regijster값 stack, shared memeory를 access하고 있는 단위

process하나가 만들어지면 여러개의 thread를 만들수 있고 하나 만들 수 있고 한다.

최신의 processor들을 하드웨어적으로 threa를 처리할 수 있게끔 말들어져 있다.

multi thread는 이 thread들을 parallel 하게 실행하는 것이다.

이런 것을 support하는것이 sw hw multitthreading

sw는 os자체가 cpu 코어하나에서 Thread를 번걸아가 면서  swithch하면서 동작하는 것 자체를 

hw는 process자체에 멀티 쓰레딩을 지원하ㅣ 위한 reasoruce를 가지고 처리하는것

control과 datapath파트에 processor가 register와 pc가 두set가 있다

두개의 thread를 번걸아 가면서 실행 시킬 수 있다.

이걸 이ㅇ용해서 thread하나늘 ㄹ

만약 한군데에서 cache miss가 낫다

그럼 main memory에 access해야해서 그사이에 다른게 alu를 이용하게 하는 거시 hw multithread이다.


thread가 a,b,c,d가 있다.

각 thread가 동작할 때 multiple issue 가 가능하면 이런식으로 명령어들이 한번에 실행될 수 있으면

coarse mt는 thread가 동작하다가 다른 thread가 동작하고

fine mt 는 명령어 단계별로 번갈아가면서 실행

smt는 하드웨어 자체에 빈곳이 없게끔 채워서 동작하는거 , 훨씬 효율적으로 하드웨어 사용

shared memory

smp

processor가 있고 메모리가 달랑하나이고 모든 processor가 이 메메로리를 사용

multicoresystem에서 이런것ㅇㄹ 많이 가져가는것 

interconnect network

cache가 없으면burtlack이 발생

무조건cache가 있어야한다.

각자 자기 것을 두고 사용한다.

프로그램 짜기 편한 구조이다.

이런 구조에서 uma(unifrom memory access) numa(not uniform memory access )

동이한 symetical 아키텍쳐라면 메모리 access가 속도가 똑같아야 겠지만

interconnectino network에선 연결을 어떻게 하냐에 따라 numa가 되어야한다ㅣ


또 하나 많이 지금 새롭게 계산에 쓰인느게  gpu(Graph processing unit)

원래 그래픽처리에 의해 만들었지만

기본적으로 vertex pixel processing ..

대규모 병렬 계산 자체가datat pareaaleㄱ 하게 작동하고

highlyu mulithrea형식으로 작동

이것을 이용해서 계산을 해보자!

이것을 이용해 계산을 하ㅗ 있다.

그래서 gpu자체가 general purpose로 나아가고 잇다.

cpu와 gpu가 연동되어석 계산한느 system이 만들어지고있고

이런 것들을 이용해서  program language가 많이 개발 되었다.

direct X openGL cuda

ex ) nvidia Tesla 아키텍쳐

하나를 분해해보면

shared memory streaming multiproicessor라는 것인데

명령어 cache가 있고 c stream prcoessor가 8개 , dram

굉장히 많은 것들이 연결됭 었다.

이게 gpu다

계산에 많이 사용되고 있다.

 

smp라는 것은 shared memory multi processor

반면에 messageing 형 mulit proecessor

구조를 보면

각 프로세서가 memory를 독립적으로 가지고 있다. 그냥 컴퓨터이다

어떤 interconnectino network로  연결됭 었다.

서로 message를 주고 으면서 동작한다.

independent한 컴퓨터를 network로 연결하면

loose coupled cluster

이런것들로 대규모 서버를 만들고 있다.

이런것을 이용해서 simulation 을 진행한다.

창고 크기의 컴퓨터를 볼까요 ?

con

 

 

bus

ring 바로 옆에 있는 애들끼리 데이터 전달

2d mesh 구조 이런것 

network이 많아지면 서로 통신이 편하다

모든 컴퓨터를 모두 연결 fullt connected

mulistage network가 ormega

mesh 

 

cross bar : swithch허브에서 많이 ㅆㄴ다

 

 

728x90