" 클럭 "
- 조금이라도 빠른 CPU를 설계하려면? => 클럭 속도를 빠르게 높이면 된다.
- 클럭속도만 올리면 빠른 CPU가 되는가? => X. 발열문제가 더 심각해질 뿐
- Hz 단위로 측정, 1초에 클럭이 몇 번 반복되는지 체크
- 클럭 속도를 높이는 데에는 클럭 말고 코어와 스레드 수를 늘리는 방법이 있다.
" 코어 "
명령어를 처리하는 일꾼이 여러 명 있는 것
- 명령어를 실행하는 부품으로 CPU 안에 여러 개 포함되어 있다.
- 코어를 여러 개 가지고 있으면 멀티코어 CPU / 멀티코어 프로세서라 부른다.
- 코어 개수만 올리면 빠른 CPU가 되는가? => X. 코어마다 연산이 분배가 되지 않으면 연산 속도는 증가하지 않는다.
" 스레드 "
실행 흐름의 단위
- CPU에서 사용되는 하드웨어적 스레드 / 프로그램에서 사용되는 소프트웨어적 스레드로 분류
하드웨어적 스레드 (=논리 프로세서)
- 하나의 코어가 동시에 처리하는 명령어의 단위
- 하나의 코어로 여러 명령어를 처리하기 위해서는 필요한 레지스터를 여러 개 가지고 있으면 된다.
소프트웨어적 스레드
- 하나의 프로그램에서 독립적으로 실행되는 단위
155p 4번 코어 |
" 명령어 병렬 처리 기법 "
명령어를 동시에 처리해 CPU를 쉬지 않고 작동시키는 기법
1. 명령어 파이프 라이닝
명령어 처리 과정 : 명령어 인출 => 명령어 해석 => 명령어 실행 => 결과 저장
- 같은 단계가 겹치지 않는다면 각 단계를 동시에 실행할 수 있다. (EX. 뭐는 인출, 뭐는 해석, 뭐는 실행....)
- 공장처럼 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
높은 성능을 가져오나, 성능 향상에 실패하는 경우도 있다.
1. 데이터 위험
명령어 간 데이터 의존성에 의해 발생
2. 제어 위험
프로그램 카운터의 갑작스러운 변화에 의해 발생
3. 구조적 위험(=지원 위험)
명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, CPU 부품을 사용하려고 할 때 발생
2. 슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
- 공장 생산 라인을 여러 개 두는 것
- 매 클럭 주기마다 동시에 여러 명령어를 인출할 수도, 실행할 수도 있어야 한다.
3. 비순차적 명령어 처리(=OoOE)
- 명령어들을 순차적으로 실행하지 않는 기법
- 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인이 멈추는 것을 방지하는 기법
명령어 집합 구조 (=ISA)
CPU가 이해할 수 있는 명령어들의 모음, 일종의 CPU의 언어
ISA가 다르다면 CPU가 이해할 수 있는 명령어가 다르다는 뜻이고, 명령어가 달라지면 어셈블리어도 달라진다.
CISC (=Computer Instruction Set Computer)
- 복잡한 명령어 집합을 활용하는 컴퓨터(CPU)
- x-86, x86-64는 대표적은 CISC 기반 ISA
- 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용
- 상대적으로 적은 수의 명령어로 프로그램의 실행할 수 있어, 메모리를 최대한 아끼면 개발할 수 있음 ( 메모리 공간 절약 )
- 활용하는 명령어가 워낙 복잡하고 다양해 명령어의 크기와 실행되기까지의 시간이 일정하지 않다.
- 명령어가 복잡해 명령어 하나를 실행하는 데에 여러 클럭 주기를 필요로 한다.
- 다양하고 복잡한 기능을 제공하나, 자주 사용하는 명령어만 쓴다.
한 줄 요약 : 적은 수의 명령으로 프로그램을 동작시키고 메모리를 절약시킬 수 있지만, 명령어의 규격화가 어려워 파이프라이닝이 어렵다.
RISC (=Reduced Instruction Set Computer)
- 종류가 적고, 짧고 규격화된 명령어(되도록 1 클럭 내외)를 지향
- 고정 길이 명령어를 활용
- 메모리에 직접 접근하는 명령어를 두 개로 제한(load,store)할 만큼 메모리 접근을 단순화하고 최소화한다.
- 레지스터를 적극 활용해 레지스터를 활용한 연산이 많고, 범용 레지스터 개수도 더 많다.
한 줄 요약 : 적은 수의 명령으로 프로그램을 동작시키고 메모리를 절약시킬 수 있지만, 명령어의 규격화가 어려워 파이프라이닝이 어렵다.
'👩💻 알고리즘 > 🎛️ 컴퓨터 구조 & OS' 카테고리의 다른 글
[혼공학습단 12기] 8장, 입출력장치 (0) | 2024.07.22 |
---|---|
[혼공학습단 12기] 7장, 보조기억장치 (0) | 2024.07.22 |
[혼공학습단 12기] 6장, 메모리 (0) | 2024.07.21 |
[혼공학습단 12기] 4장, CPU 원리 (0) | 2024.07.20 |
[혼공학습단 12기] 1장 ~ 3장, 데이터와 명령어 (0) | 2024.07.07 |