728x90

1. 병렬 처리의 개념

병렬 처리는 동시에 여러개의 명령을 처리해 작업의 능률을 올리는 방식이다.

하나의 코어에 여러개의 스레드를 이용하는 방식을 파이프라인 기법이라 한다. 스레드는 CPU가 처리할 수 있는 작업의 단위이고 여러개의 스레드를 동시에 처리하는 방법을 CPU 멀티 스레드라고 한다.

 

2 병렬 처리 시 고려 사항

1) 상호 의존성이 없어야 병렬 처리가 가능하다.

각 명령이 서로 독립적이고 앞의 결과가 뒤의 명령에 영향을 미치지 않아야 한다.

 

2) 각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만하게 이루어진다.

각 단계가 10분내외로 일정해야 원만하며, 들쑥날쑥하면 병목 현상이 발생한다.

 

3) 전체 작업 시간을 몇 단계로 나눌 지 잘 따져보아야 한다.

작업을 N개로 쪼갤 때 N을 병렬 처리의 깊이라고 한다. N이 너무 커지면 각 단계마다 작업을 이동하고 불러오는 데 시간이 많이 걸려 오히려 성능이 떨어진다. 10~20이 적당하다.

 

3 병렬 처리 기법

CPU에서 명령어가 실행되는 과정은 보통 4단계로 나뉜다.

1) 명령어 패치(INstruction Fetch, IF) : 다음에 실행할 명령어를 명령어 레지스터에 저장한다.

2) 명령어 해석(Instruction Decode, ID) : 명령어를 해석한다.

3) 실행(Execution, EX) : 해석한 결과를 토대로 명령어를 실행한다.

4) 쓰기(Write Back, WB) : 실행된 결과를 메모리에 ㅓㅈ장한다.

 

3.1 파이프라인 기법

명령을 겹쳐서 실행하는 방법으로 하나의 코어에 여러 개의 스레드를 사용하는 것이다.

명령어를 여러 개의 단계로 분할한 후 각 단계를 동시에 처리하는 하드웨어를 독립적으로 구성한다.

파이프 라인 기법에는 여러 위험이 있는데 데이터 위험, 제어 위험, 구조적 위험으로 구분된다.

 

데이터 위험(data hazard)
데이터 의존성 떄문에 앞의 명령어가 끝날 때까지 뒤의 명령어가 동시에 실행되면 안되는 문제이다.

명령어 단계를 지연해서 해결한다.

 

제어 위험(Control hazard)
분기를 하는 if 또는 goto문으로 인해 다른 문장으로 이동하게 되면 현재 동시에 처리되고 있는 명령어들이 쓸모없어진다. 분기 예측이나 분기 지연으로 해결한다.

 

구조 위험(Structural harazd) 

서로 다른 명령어가 같은 자원에 접근하려 할 때 발생하는 문제이다. 해결하기가 어렵다.

 

3.2 슈퍼스칼라 기법

파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식이다.

 

3.3 슈퍼파이프라인 기법

파이프라인 기법을 강화해 한 클록 내에 여러 명령어를 처리한다.

 

3.4 슈퍼파이프라인 슈퍼스칼라 기법

모든 기법을 합쳐서 여러개의 코어에서 동시에 수행한다.

 

 

무어의 법칙 : CPU의 속도가 24개월마다 2배 빨라진다는 법칙, 그러나 지금은 그렇지 않다.

 

암달의 법칙 : 주변장치의 향상 없이 CPU의 속도를 2배로 늘려도 컴퓨터의 성능이 2배 빨라지지 않는다는 법칙. 주변장치가 CPU의 발전 속도를 따라가야한다.

 

 

 

728x90

+ Recent posts