클럭, 코어, 스레드, 멀티코어, 멀티스레드가 CPU와 어떤 관련이 있는지 이해해보자!
[4장에서 배운 내용]
- 컴퓨터 부품들은 ‘클럭 신호’에 맞춰 일사불란하게 움직인다.
- CPU는 ‘명령어 사이클’이라는 정해진 흐름에 맞춰 명령어들을 실행한다.
CPU의 정의 : 명령어를 실행하는 부품 → 이제 코어라고 부름 → 명령어를 실행하는 부품을 여러 개 포함하는 부품 으로 명칭 범위 확장
멀티코어(multi-core) CPU / 멀티코어 프로세서 : 코어를 여러 개 포함하고 있는 CPU
코어 수 | 프로세서 명칭 |
---|---|
1 | 싱글코어(single-core) |
2 | 듀얼코어(dual-core) |
3 | 트리플코어(triple-core) |
4 | 쿼드코어(quad-core) |
6 | 헥사코어(hexa-core) |
8 | 옥타코어(octa-core) |
10 | 데카코어(deca-core) |
12 | 도데카코어(dodeca-core) |
[정리][⭐혼공머 선택미션 인증!⭐]
- 코어 : 명령어를 실행할 수 있는 '하드웨어 부품'
- 스레드 : '명령어를 실행하는 단위'
- 멀티코어 프로세서 : 명령어를 실행할 수 있는 하드웨어 부품이 CPU 안에 두 개 이상 있는 CPU
- 멀티스레드 프로세서 : 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU
p.155-4번
답 : 코어 [위에 코어와 멀티코어 - 'CPU의 정의' 부분 이미지 참고]
[대표적인 ILP]
- 명령어 파이프 라이닝
- 슈퍼스칼라
- 비순차적 명령어 처리
[명령어 처리 과정을 클럭 단위로 나눠 본 단계]
1. 명령어 인출(Instruction Fetch)
2. 명령어 해석(Instruction Decode)
3. 명령어 실행(Execute Instruction)
4. 결과 저장(Write Back)
→ 같은 단계가 겹치지 않으면 CPU는 각 단계를 동시에 실행할 수 있다.
[파이프라인 위험(pipeline hazard)]
- 데이터 위험 (data hazard) : 명령어 간 '데이터 의존성'에 의해 발생
- 예) 명령어1 : R1 ← R2 + R3 / 명령어2 : R4 ← R1 + R5
- 명령어1 을 끝까지 실행해야 명령어2 를 실행할 수 있음
- 제어 위험 (control hazard) 주로 분기 등으로 인한 '프로그램 카운터의 갑작스러운 변화'에 의해 발생
- 분기 예측 (branch prediction) : 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술로 확인
- 구조적 위험 (structural hazard) : 명령어들을 겹쳐 실행할 때, 서로 다른 명령어가 동시에 CPU 부품을 사용하려는 경우 발생
- 자원위험 (resource hazard) 라고도 부름
💡 오늘날 CPU 성능 향상에 크게 기여한 기법이자 대부분의 CPU가 차용하는 기법이기에 꼭 알아두자!
💡 파이프 라이닝 하기 쉬운 명령어!
명령어 집합 구조(ISA, Instruction Set Architecture) 라고도 함
CPU가 어떤 명령어를 이해하는지에 따라 컴퓨터 구조 및 설계 방식이 달라지기 때문에 '구조'라고 함
인텔의 노트북 속 CPU는 x86 혹은 x86-64 ISA를 이해
애플의 아이폰 속 CPU는 ARM ISA를 이해
인텔 노트북과 아이폰(맥북)은 서로의 명령어 이해불가
명령어가 달라지면 어셈블리어도 달라짐
특징 | CISC | RISC |
---|---|---|
명령어 복잡도 | 복잡하고 다양한 명령어 | 단순하고 적은 명령어 |
명령어 길이 | 가변 길이 명령어 | 고정 길이 명령어 |
주소 지정 방식 | 다양한 주소 지정 방식 | 적은 주소 지정 방식 |
프로그램을 이루는 명령어 수 | 명령어 수가 많음 | 명령어 수가 적음 |
명령어 수행 속도 | 여러 클럭에 걸쳐 수행 | 1클럭 내외로 수행 |
파이프라이닝 가능성 | 파이프라이닝하기 어려움 | 파이프라이닝하기 쉬움 |