패스트캠퍼스

[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 18회차 미션

돌맹이시터 2020. 11. 5. 19:38

 

환급미션 18일째..

 

 

 

컴퓨터 구조 - 파이프라인과 벡터처리 - 데이터의 종속성 - 병렬처리 그리고 파이프라인 -1

컴퓨터 구조 - 파이프라인과 벡터처리 - 데이터의 종속성 - 병렬처리 그리고 파이프라인 -2

 

 

 

지금까지 

순차적으로 처리해오는 것을 다뤄왔다면

여러 가지를 한 번에 처리할 수 있도록 병렬식으로 구성하여

병렬처리를 하는 것과 파이프라인에 대해 다루었다.

 

이 강의에서 늘 그래왔듯(....) 자세히 다루진 않고

대략적인 컨셉만 짚고 넘어간다.

 

 

 

병렬 처리 ( parallel processing )란 컴퓨터 시스템의 계산 속도 향상을 목적으로, 데이터를 동시에 처리하는 개념의 기술을 의미한다.

 

 

복잡도에 따라 병렬처리방식은 다양한데,

사용 레지스터의 형태에 따라 다르게 병렬성을 구현하거나 (시프트 레지스터와 워드 당 동시에 전송이 가능한 병렬성을 갖는 레지스터를 비교해 볼 수 있다)

동일하거나 서로 다른 동작을 동시에 수행하는 여러 개의 기능 장치 (functional unit)로 데이터를 각각 분산시켜 작업을 수행하는 경우 (산술,논리,시프트 동작을 세 개의 장치로 분류하고, 제어장치의 관리에 따라 피연산자를 각 장치들 사이에서 전환시키는 경우) 등이 있다.

 

 

 

 

위의 표는 한 개의 프로세서를 가지고 

동시에 9개의 기능 장치로 나누어 동작하게 하는 하나의 방법을 나타낸다.

 

 

 

 

 

 

- M.J Flynn의 분류방법

 

병렬처리를 분류하는 방법 중 하나이다.

동시에 처리되는 명령어와 데이터 항목 수에 의해 컴퓨터 시스템의 구조를 파악하는 분류 방법이다.

명령어 흐름 (instruction stream) : 메모리로부터 읽어온 명령어의 순서

데이터 흐름 (data stream) : 데이터에 대해 수행되는 동작

 

*SISD ( single instruction single data )

단일 명령어 흐름, 단일 데이터 흐름

제어장치, 처리장치, 메모리 장치를 갖는 단일 컴퓨터 구조

명령어들을 순차적으로 실행하고, 

다중 기능장치나 파이프라인 처리에 의해 병렬처리가 구현된다.

 

*SIMD ( single instruction multi data )

단일 명령어 흐름, 다중 데이터 흐름

공통의 제어장치 아래에 여러 개의 처리 장치를 둔다.

동일한 명령어를 서로 다른 데이터 항목에 대하여 실행시킬 수 있다.

모든 프로세서가 동시에 메모리에 접근하기 위해 다중 모듈을 가진 공유 메모리장치가 필요하다.

이 방법은 아직 발전이 필요하다.

 

*MISD ( multi instruction single data )

다중 명령어 흐름, 단일 데이터 흐름

이론적으로만 연구되고 있고, 양자 컴퓨터가 나온다면 실현될 가능성이 있다고 한다.

 

*MIMD ( multi instruction multi data )

다중 명령어 흐름, 다중 데이터 흐름

요즘 여러 개의 코어를 가진 cpu를 이용해 구현된다고 한다.

여러 프로그램을 동시에 수행할 수 있다.

 

 

이러한 M.J Flynn의 분류방법에 포함되지 않는 개념이 파이프라인 이다.

 

 

 

 

 

 

 

- 파이프라인

 

 

파이프라인의 동작은 공간, 시간 표에 의해 설명할 수 있고

시간에 대한 함수로서 세그먼트의 사용상황을 보여준다.

 

 

 

 

segment는 반복 횟수 ( 반복 회차?)를 나타내고

각각 T값은 task를 의미한다. 

위의 예제에서는 1번째 task의 결과가 나오는 시점부터 1 clock cycle 이 지날 때마다 

순서대로 task들의 결과가 나오게 되는 것을 알 수 있다.

 

 

 

 

 

위와 같은 가정을 하고 ( 데스크 -> 태스크 오타인듯 )

 

첫 번째 task가 완료되는 데 걸리는 시간과

나머지 (n-1)개의 task가 완료되는 데 걸리는 시간을 더하면 

다음과 같다.

 

 

 

 

결론은

클럭 사이클 시간과

파이프라인의 segment 수, task의 수를 이용해 

모든 task가 완료되는 데 걸리는 시간을 알 수 있다.

 

 

 

 

 

* 비 파이프라인 ( non-pipeline ) 의 경우

 

위와 같을 때,

 

파이프라인 처리에 따른 속도 증가율은 다음과 같다.

 

 

 

task의 수 (n)가 무한대로 늘어난다고 가정했을 때

결국 이론적 최대속도 증가율은 segment의 수와 같게 된다.

 

 

 

 

 

 

올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE