컴퓨터 & 코딩/CS

[혼공학습단 10기][혼공컴운] 빠른 CPU를 위한 설계 기법

구로그 2023. 7. 4. 18:31
728x90

 

✓ 클럭, 코어, 스레드

참고: 맥북의 작업관리자 열기: search에서 Activity monitor 

 

[혼공학습단 10기][혼공컴운] 2주차 미션

✏️ 진도: Chapter 04 ~ 05 (CPU의 작동원리 / CPU 성능 향상 기법) 📖 기본 미션: p. 125의 확인 문제 2번, p. 155의 확인 문제 4번 풀고 인증하기 📚 선택 미션: Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티

hianzhi.tistory.com

 

 

 

 

✓ 명령어 병렬 처리 기법

1) 명령어 파이프라이닝

✏️ 명령어 처리 과정
명령어 인출(Fetch) → 명령어 해석(Decode) →  명령어 실행(Execute) → 결과 저장(Write back) =

CPU는 같은 단계가 겹치지 않게 각 단계를 동시에 실행 가능

그러나 파이프라이닝은 다음과 같은 위험이 있다. 

- 데이터 위험: 명령어 간 '데이터 의존성'에 의해 발생. 

- 제어 위험: 주로 분기 등으로 인한 '프로그램 카운터의 갑작스러운 변화'로 인해 발생. (이를 위해 분기 예측이라는 기술 사용) 

- 구조적 위험(자원 위험): 명령어들을 겹쳐 실행할 때 서로 다른 명령어라 동시에 같은 부품을 사용하려고 할 때 발생 

 

 

2) 슈퍼스칼라 

CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조 

 

 

3) 비순차적 명령어 처리 (OoOE: Out-of-Order Execution) 

순서를 바꿔 실행해도 무방한 명령어를 먼저 실행(데이터 의존성이 전혀 없는 명령어)하여 명령어 파이프라인이 멈추는 것을 방지하는 기법 

 

 

 

 

 

✓ CISC와 RISC

ISA: Instruction Set Architecture 명령어 집합 구조

CPU가 이해할 수 있는 명령어들의 모음 , CPU의 언어 (예: 인텔의 x86 or x86064 ISA, 애플의 ARM ISA)

ISA가 다름 →  CPU가 이해할 수 있는 명령어가 다름 → 어셈블리어가 다름 

 

 

1) CISC Complex Instruction Set Computer

- 복잡한 명령어 집합을 활용하는 컴퓨터(CPU) (예: x86, x86-64)

- 가변 길이 명령어를 활용(명령어의 형태와 크기가 다양) 

- 다양하고 강력한 명령어를 활용하여 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다.

- 프로그램을 실행하는 명령어가 적어서 컴파일된 프로그램의 크기가 작다 

- 메모리 공간을 절약할 수 있음 

- 명령어의 크기와 실행되기 까지의 시간이 일정하지 않음: 명령어 하나를 실행하는 데에 여러 클럭 주기를 필요로 함 (명령어 파이프라인을 구현하는 데 큰 걸림돌)

- 대다수의 복잡한 명령어는 그 사용 빈도가 낮고 실제로는 자주 사용되는 명령어만 쓰임 

 

2) RISC Reduced  Instruction Set Computer

- 명령어의 종류가 적음: 짧고 규격된 명령어(고정 길이 명령어)

- 되도록 1클럭 내외로 실행되는 명령어를 지향함 (예: ARM)

- 메모리 접근을 단순화, 최소화 

- 레지스터 적극 활용, 범용 레지스터의 개수가 더 많음 

- 사용 가능한 명령어 개수가 낮기 때문에 더 많은 명령으로 프로그램을 동작 시킴 

 

CISC RISC
복잡하고 다양한 명령어 단순하고 적은 명령어
가변 길이 명령어 고정 길이 명령어
다양한 주소 지정 방식 적은 주소 지정 방식
프로그램을 이루는 명령어 수가 적음 프로그램을 이루는 명령어 수가 많음
여러 클럭에 걸쳐 명령어 수행 1클럭 내외로 명령어 수행
파이프라이닝 하기 어려움 파이프라이닝 하기 쉬움 

 

반응형