Data Engineering/혼공컴운
혼자 공부하는 컴퓨터구조 + 운영체제 5장 정리
potatode
2025. 1. 20. 07:13
5장. CPU 성능 향상 기법
5.1 빠른 CPU를 위한 설계 기법
클럭
- 컴퓨버 부품들은 ‘클럭 신호’에 맞춰 일사불란하게 움직임💡클럭 속도가 높아짐 → CPU는 명령어 사이클 빠르게 반복 → 다른 부품들도 맞춰 빠르게 작동
- ⇒ 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직임
- 클럭 속도가 높은 CPU는 일반적으로 성능 좋음
- 클럭 속도는 헤르츠(Hz) 단위로 측정
- 1초에 클럭이 몇번 반복되는지 나타냄
- 하지만 무작정 높인다면 발열 문제가 생김
코어와 멀티코어
- CPU의 코어와 스레드 수를 늘리는 방법도 CPU의 성능을 높이는 방법
- 코어 : 명령어를 실행하는 부품
- ex) 8코어 = 명령어를 실행하는 부품이 8개 포함
- 코어를 여러개 포함하고 있는 CPU : 멀티코어 CPU
- 명령어 처리 일꾼이 여러명있는 것 ⇒ 단일코어보다 더 빠름!
- CPU의 연산속도가 꼭 코어 수에 비례 증가하지는 않음
- 중요한 것은 코어마다 처리할 명령어들을 얼마나 적절하게 분배하는지
스레드와 멀티스레드
- 스레드 - 하드웨어적/소프트웨어적
- 하드웨어적 스레드
- 여러 스레드 지원 CPU는 하나의 코어로도 여러 명령어 실행 가능
- ⇒ 멀티스레드 프로세서 : 하나의 코어로 여러 명령어 동시 처리
- : 하나의 코어가 동시에 처리하는 명령어 단위
- 소프트웨어적 스레드
- : 하나의 프로그램에서 독립적으로 실행되는 단위
- 멀티스레드 프로세서
- 하나의 코어로 여러 명령어를 동시 처리하는 방법은 ?
- ⇒ ‘레지스터’를 여러개 가지면 됨
5.2 명령어 병렬 처리 기법
- 빠른 CPU를 위해선 멀티 지원 CPU를 만드는 것도 중요하지만, 놀지 않고 알뜰하게 작동하도록 만드는 것도 중요하다.
- ⇒ 명령어 병렬 처리 기법
명령어 파이프라인
- 명령어 처리 과정
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
- = 명령어 파이프라이닝
- 파이프라인 위험
- 데이터 위험
- 명령어 간 데이터 의존성에 의해 발생
- 어떤 명령어는 이전 명령어를 끝까지 실행해야만 실행 가능한 경우 존재
- ⇒ 의존적인 명령어를 무작정 동시에 실행하는 경우
- 제어 위험
- 프로그램 카운터의 갑작스러운 변화에 의해 발생
- 프로그램 실행 흐름이 바뀌는 경우
- 분기 예측을 사용하기도 함
- 구조적 위험
- 명영어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 CPU 부품을 사용하는 경우
- 데이터 위험
슈퍼스칼라
: CPU 내부에 여러개의 명령어 파이프라인을 포함한 구조
- 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU : 슈퍼스칼라 프로세서
- 매 클럭 주기마다 동시에 여러 명령어 인출, 실행 필요
- 파이프라인 위험을 방지하기 위해 고도 설계 필요
비순차적 명령어 처리
: 명령어들을 순차적으로 실행하지 않는 기법
- 예상치 못한 문제들로 인해 바로 처리되지 못하는 경우
- 순차적으로만 실행하지 않고 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인을 멈추는 것을 방지하는 기법
- ⇒ 가능한 명령어 판단 필요
5.3 CISC와 RISC
명령어 집합 (ISA)
: CPU가 이해할 수 있는 명령어들의 모음
- 명령어의 세세한 생김새, 연산 등은 CPU마다 조금씩 차이가 있음 = ISA가 다를 수 있음
- ISA가 다르면 CPU가 이해할 수 있는 명령어도 어셈블리어도 달라짐
- 일종의 각 나라의 언어와 비슷한 느낌
- ISA가 다르면 CPU가 이해할 수 있는 명령어도 어셈블리어도 달라짐
- ISA가 달라지면 사용되는 레지스터 종류, 명령어 해석 방식 등 많은 것이 달라짐
CISC
- 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식⇒ 상대적으로 적은 수의 명령어로도 프로그램 실행 가능
- ⇒ 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용함
- 단점 : 복잡, 다양한 기능 제공으로 명령어의 크기와 실행되기까지 시간이 일정하지 않음
- 명령어 파이프라인 구현에 큰 걸림돌
- 복잡한 명령어는 보통 사용 빈도가 낮음 → 성장 한계
RISC
- CISC보다 명령어 종류는 적지만, 짧고 규격화된 명령어 지향
- ⇒ 고정 길이 명령어 활용
- 메모리 접근을 최소화하는 대신 레지스터를 적극적으로 활용
- 많은 명령으로 프로그램 작동 시킴
반응형