내 잡다한 노트

챕터2 병렬 처리 본문

운영체제

챕터2 병렬 처리

peanutwalnut 2022. 7. 8. 16:20

운영체제에서 명령어를 처리할 때 하나씩만 하면 효율이 떨어지므로 여러개를 동시에 처리함으로써 빠르게 데이터를

처리할 수 있는 방식.

여러개의 명령을 동시에 처리하는 병렬 처리는 코어가 여러개인 cpu는 물론이고 코어가 하나인 CPU에서도 가능하다.

 

한 주방에서 여러 개의 볶음밥을 동시에 조리하는 것을 CPU의 사양에 비유하면 하나의 코어에

여러 개의 스레드를 이용하는 방식과 같다. 이러한 방식을 파이프라인 기법이라고 부른다.

스레드는 CPU가 처리할 수 있는 작업의 단위이다.

여러 개의 스레드를 동시에 처리하는 방법을 멀티스레드라고 한다.

 

병렬처리 시 주의 사항

A작업에 B를 먼저 해야한다면 B가 끝날때까지 A는 할 수 없기 때문.

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

시간을 거의 일정하게 맞추어야 한다. 효과가 떨어지기 때문. 

 

CPU에서 명령어가 처리되는 과정

CPU 내에서 명령어는 제어장치가 처리한다. 제어장치는 명령어를 가져와 해석하고 실행하고 결과를 저장하는 과정을 반복한다. 이 과정 자체를 하나의 스레드라고 하고, 스레드를 이루는 각 단계는 CPU의 클록과 연동되어

한 클록에 한 번씩 이루어지게 된다.

 

1. 명령어 패치 : 명령어를 명령어 레지스터에 저장한다.

2. 명령어 해석 : 명령어를 해석한다.

3. 실행 : 해석한 결과를 토대로 실행

4. 쓰기 : 결과를 메모리에 저장.

 

파이프 라인 기법

CPU의 사용을 극대화하기 위해 명령을 겹쳐서 실행하는 방법이다. 하나의 코어에 여러개의 스레드를 실행하는 것이다.

명령어 처리의 단계마다 독립적으로 구성하여 각 단계가 쉬지 않고 명령어를 처리할 수 있게 한다.

그런데 여러가지 위험요소가 있다.

1. 데이터 위험

데이터가 의존성을 가질 때 생긴다. 데이터 A를 필요로 하는 두 번째 명령어는 앞의 A를 사용하는 명령어가 끝날때까지동시에 실행되면 안된다.

2. 제어 위험

프로그램 카운터 값을 갑자기 변화시켜 발생하는 위험이다. 분기같은 명령어에서 생김.

3. 구조 위험

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

 

슈퍼스칼라 기법

여러개의 CPU를 사용해 여러개의 스레드를 실행하는 것이다. 파이프라인 기법과 대부분은 비슷하다.

이 또한 파이프라인 주의사항과 똑같이 주의해야 한다.