일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드잇앰배서더
- 오블완
- 내일배움캠프사전캠프
- 코드잇강의추천
- 앱개발강의
- 환경교육봉사
- DB김준기문화재단
- 자바스크립트
- 코딩공부
- 알고리즘
- bottom tab navigation
- c++헤더
- js
- 코드잇TIL
- 오늘도코드잇
- 혼공컴운
- GIT
- DB드림리더장학생
- 혼공단JS
- ReactNative
- 스파르타코딩클럽
- 독서활동
- 앱개발부트캠프
- 내일배움캠프
- DB마이저널
- 코드잇
- 르탄즈
- 혼공단
- 티스토리챌린지
- 르탄즈5기
- Today
- Total
axnuo
[CA/혼공단] CPU 성능 향상 기법 본문
Chapter 5. CPU 성능 향상 기법
05-1. 빠른 CPU를 위한 설계 기법
클럭
컴퓨터 부품은 클럭 신호에 맞춰 일사불란하게 움직이므로 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들이 더 빠르게 작동함.
- 클럭 속도 : Hz 단위로 측정
하지만 클럭 속도가 빨라지면 == CPU에 무리가 많이 가면 발열 문제가 발생함
코어와 멀티코어
- 코어 : CPU 내에서 명령어를 실행하는 부품
- ⇒ CPU는 코어를 여러 개 포함하는 부품으로 명칭의 범위가 확장 됨
- 멀티코어 CPU (멀티코어 프로세서): 코어를 여러 개 포함하고 있는 CPU
코어가 많다고 비례하여 CPU의 성능이 좋아지는 것은 아님.
코어마다 처리할 연산이 적절히 분배되지 않거나 코어 수가 지나치게 많을 경우 성능에 큰 영향이 없음
스레드와 멀티스레드
- 스레드 : 실행 흐름의 단위
- 하드웨어적 스레드
- 하나의 코어가 동시에 처리하는 명령어 단위
- 소프트웨어적 스레드
- 하나의 프로그램에서 독립적으로 실행되는 단위
- 멀티스레드 프로세서하이퍼 스레딩 : 인텔의 멀티스레드 기술
- ⇒ 설계 시 가장 핵심이 되는 것 = 레지스터
- 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
- 하드웨어스레드는
- 2코어 4스레드 cpu는 한 번에 내 게의 명령어를 처리할 수 있는데 프로그램 입장에서는 cpu가 4개 있는 것처럼 보임… 그래서 논리 스레드라고 부르기도 한다.
05-2. 명령어 병렬 처리 기법
CPU가 시간을 알뜰하게 쓰며 작동하게 만드는 것도 중요한 요소 중 하나
명령어 파이프라인
명령어 처리 과정을 클럭 단위로 나눈 것
1 명령어 인출→ 2 명령어 해석 → 3 명령어 실행 → 4 결과 저장
- 명령어 파이프라이닝 : 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
- ⇒ 명령어 하나를 실행하고 다음 명령어를 실행 < 각각의 단계로 나눠서 실행
- 파이프라인 해저드 : 성능 향상에 실패하는 경우
- 데이터 해저드 이 경우 r1에 r2+r3 값이 저장되지 않았는데 sub에서 r1 값을 읽어들임… sub는 add에 의존적인 것이고 이를 동시에 실행하려고 하면 파이프라인이 제대로 작동하지 않는다!
add r1 r2 r3 sub r4 r1 r5
- 데이터 의존성에 의해 발생
- 컨트롤 해저드→ branch prediction으로 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출
- branch 명령어에서 발생하는 해저드!!
- 프로그램 카운터의 갑작스러운 변화에 의해 발생
- 구조적 해저드
- 서로 다른 명령어가 동시에 ALU, 레지스터 등 같은 CPU 부품을 사용하려고 할 때 발생
슈퍼스칼라
CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
- 매 클럭 주기마다 동시에 여러 명령어를 인출 / 실핼할 수 있음
- 멀티스레드 프로세서는 한 번에 여러 명령어를 인출 / 해석 / 실행할 수 있기 때문에 슈퍼스칼라 구조를 사용할 수 있음
⇒ 파이프라인 위험 등 예상치 못한 문제가 발생할 수 있기 때문에 고도로 설계되어야 함
비순차적 명령어 정리(OoOE)
명령어를 비순차적으로 실행함
해저드가 발생할 수 있는 상황이면 이후 의존하는 명령어의 값이 나온 후 실행하는 방식
05-3. CISC와 RISC
명령어 집합
CPU마다 ISA(명령어 집합 구조)가 다를 수 있음
→ ISA는 일정의 CPU 언어
ISA의 양대산맥 CISC와 RISC
CISC
복잡한 명령어 집합을 활용하는 컴퓨터
다양하고 강력한 기능의 명령어 집합을 활용하여 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용함
- 장점 : 적은 수의 명령어로도 프로그램을 실행할 수 있음 ⇒메모리 절약!
- 단점 : 활용하는 명령어가 다양한 기능을 제공하기 때문에 명령어의 크기와 실행되기까지의 시간이 일정하지 않음, 클럭 주기를 필요로 함⇒ 복잡한 명령어는 사용 빈도가 낮음
- 따라서 CISC 기반 CPU는 성장에 한계가 있음
- ⇒ 파이프라인을 구현하는데 큰 걸림돌이 됨
RISC
원활한 파이프라이닝을 위해 명령어 길이와 수행 시간이 짧고 규격화되어 있어야 함
자주 쓰이는 기본적인 명령어를 작고 빠르게 만드는 것이 중요하다
⇒ 명령어 종류가 적고 짧고 규격화된 명령어, 1 클럭 내외로 실행되는 명령어 즉 고정 길이 명령어를 활용함
- 규격화 되어있고 한 명령어가 1클럭 내외로 실행되기 때문에 파이프라이닝에 최적화
- 메모리 접근 단순화, 최소화 추구⇒ 레지스터 적극 활용
- ⇒ 주소 지정 방식의 종류가 적은 경우가 많음
- 명령어 개수가 적기 때문에 많은 명령으로 프로그램을 작동 시킴
필수 과제
p. 155의 확인 문제 4번 풀고 인증하기
코어!
선택 과제
Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기
⇒ 위의 내용 정리에 포함되어있음!
'CS > CA' 카테고리의 다른 글
[CA /혼공단] 메모리와 보조기억장치 (0) | 2024.01.20 |
---|---|
[CA/혼공단] CPU의 작동 원리 (0) | 2024.01.09 |
[CA/혼공단] 컴퓨터 구조 시작과 명령어 (1) | 2024.01.06 |