개발세발
07. 병렬 처리 본문
📍병렬 처리 parallel processing
: 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식
➡️ CPU의 성능을 향상하기 위해 CPU의 핵심 기능을 가진 코어를 여러개 만들거나, 동시에 실행 가능한 명령의 개수를 늘리는 방법을 사용하는데 그 일환.
- 여러 개의 명령을 동시에 처리하는 병렬 처리는 코어가 여러 개인 CPU는 물론이고 코어가 하나인 CPU에서도 작동 가능함
* 스레드 thread
: CPU가 처리할 수 있는 작업의 단위
- 명령어를 가져와 해석한 후 실행하고 결과를 저장하는 과정
- 스레드를 이루는 각 단계는 CPU의 클록과 연동되어 한 클록에 한 번씩 이루어진다
- CPU 멀티 스레드 multi-thread : 여러 개의 스레드를 동시에 처리하는 방법
📍CPU에서 명령어가 실행되는 과정
1. 명령어 패치 Instruction Fetch, IF : 다음에 실행할 명령어를 명령어 레지스터에 저장
2. 명령어 해석 Instruction Decode, ID : 명령어를 해석
3. 실행 Execution EX : 해석한 결과를 토대로 명령어를 실행
4. 쓰기 Write Back, WB : 실행된 결과를 메모리에 저장
◼️ 파이프라인 pipeline 기법
: CPU의 사용을 극대화하기 위해 명령을 겹쳐서 실행하는 방식으로 하나의 코어에 여러 개의 스레드 thread를 이용
- 명령어를 여러 개의 단계로 분할한 후, 각 단계를 동시에 처리하는 하드웨어를 독립적으로 구성함
= 하이퍼스레드 (인텔 계열의 CPU에서 부르는 명칭)
: CPU에 여러 개의 작업을 동시에 진행할 수 있는 부가 장치를 만들어 하나의 코어에서도 여러 개의 작업(스레드)이 동시에 이루어지게 하는 기법
• 파이프 라인의 위험
1) 데이터 위험 data hazard : 데이터의 의존성 때문에 발생하는 문제
➡️ 데이터의 위험은 파이프라인의 명령어 단계를 지연하여 해결
2) 제어 위험 control hazard : 프로그램 카운터 값을 갑자기 변화시켜 발생하는 위험 (if문 goto문 등 에서 발생)
- 분기예측이나 분기 지연 방법으로 해결
3) 구조 위험 structural hazard : 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생하는 문제
: 구조위험은 해결하기 어렵다고 알려져 있음
◼️ 슈퍼스칼라 super-scalar 기법
: 파이프라인을 처리할 수 있는 여러 개의 코어를 사용하여 복수의 명령어가 동시에 실행되도록하는 기법
- 듀얼 CPU는 한 CPU에 작업을 처리하는 코어가 2개가 있고, 슈퍼스칼라 기법을 이용하여 2개의 작업을 동시에 처리할 수 있음
- 파이프라인 기법과 거의 동일하지만 코어를 2개 구성하여 각 단계에서 동시에 실행되는 명령어가 2개라는 점이 다름
- 처리되는 명렁어가 상호 의존성 없이 독립적이어야 하며, 이를 위한 처리도 컴파일러에서 이루어지도록 조정해야 함
◼️ 슈퍼파이프라인 super-pipeline 기법
: 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리 ( 파이프라인 기법을 강화한 것)
- 한 클록 내에 여러 명령어를 실해암면 다음 명령어가 빠른 시간 안에 시작될 수 있어 병렬 처리 능력이 높아짐
- 크레이 슈퍼컴퓨터 cray super computer의 CPU에서 사용됨
◼️ 슈퍼파이프라인 슈퍼스칼라 기법 super-popelined super-scalar
: 앞의 병렬 처리 기법을 모두 합한것
- 슈퍼 파이프라인 기법을 여러 개의 코어에서 동시에 수행
◼️ VLIW very long instruction word
: CPU가 병렬 처리를 지원하지 않을 경우 소프트웨어적으로 병렬 처리를 하는 방법
- 동시에 수행할 수 있는 명령어들을 컴파일러가 추출하고, 하나의 명령어로 압축하여 실행함
- CPU가 병렬 처리를 지원하지 않을 때 사용하는 방법이므로 앞의 병렬 처리 기법들에 비해 동시에 처리하는 명령어의 개수가 적다 -
- 병렬 처리가 컴파일 시 이루어짐 ( 앞의 다른 병렬처리는 명령어 실행시 병렬 처리가 이루어짐 )
📍병렬 처리 시 고려 사항
- 상호 의존성이 없어야 병렬처리가 가능함
- 각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만하게 이루어짐
- 적절한 병렬처리의 깊이 depth of parallel processing
: 병렬 처리에서 작업을 N개로 쪼갰을 때 N을 병렬처리의 깊이라고 함
'코딩공부 > OS' 카테고리의 다른 글
09. 프로세스 제어 블록과 문맥 교환 (0) | 2023.01.02 |
---|---|
08. 프로세스의 개요 (1) | 2022.12.30 |
06. 컴퓨터 성능 향상 기술 (0) | 2022.12.28 |
05. CPU와 메모리 (0) | 2022.12.27 |
04. 컴퓨터의 기본 구성 (0) | 2022.12.26 |