✓ 클럭, 코어, 스레드
참고: 맥북의 작업관리자 열기: search에서 Activity monitor
✓ 명령어 병렬 처리 기법
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클럭 내외로 명령어 수행 |
파이프라이닝 하기 어려움 | 파이프라이닝 하기 쉬움 |
'컴퓨터 & 코딩 > CS' 카테고리의 다른 글
[혼공학습단 10기][혼공컴운] 메모리와 캐시 메모리 (0) | 2023.07.05 |
---|---|
[혼공학습단 10기][혼공컴운] 2주차 미션 (0) | 2023.07.04 |
[혼공학습단 10기][혼공컴운] CPU의 작동 원리 (0) | 2023.07.03 |
[혼공학습단 10기][혼공컴운] 명령어와 주소 지정 방식 (0) | 2023.07.03 |
[혼공학습단 10기][혼공컴운] 컴퓨터 구조의 큰 그림 / 0과 1로 숫자 및 문자 표현하는 방법 (0) | 2023.07.03 |