본문 바로가기

CS/컴퓨터 구조

[ 컴퓨터 구조 ] 명령어

[ 출처 ]

혼자 공부하는 컴퓨터 구조 + 운영체제 05강

https://www.youtube.com/watch?v=kFWP6sFKyp0

[ CPU 설계 기법 ]

헤르츠(Hz)

= 1초에 클럭이 반복되는 횟수

= 클럭이 1초에 100번 반복되면 100Hz

 

코어

= CPU 내에서 명령어를 실행하는 부품

= 여러 개 있을 수 있음 (멀티 코어)

 

스레드

= 실행 흐름의 단위

= 하드웨어적 스레드 + 소프트웨어적 스레드

 

하드웨어적 스레드

= 하나의 코어가 동시에 처리하는 명령어 단위

= 여러 개 처리할 수 있음 (멀티 스레드)

= 멀티 스레드 프로세서의 핵심은 레지스터

= 하나의 명령어를 실행하기 위해 꼭 필요한 레지스터 세트들이 스레드 수만큼 있어야 함

 

2코어 4스레드 CPU

= 2개의 코어가 존재

= 각 코어가 동시에 2개의 명령어 처리

= CPU가 동시에 2 X 2 = 4 개의 명령어 처리

 

소프트웨어적 스레드

= 하나의 프로그램에서 독립적으로 실행되는 단위

= 하드웨어적 스레드와 무관

= 1코어 1스레드 CPU도 여러 소프트웨어적 스레드 만들 수 있음

[ 명령어 병렬 처리 기법 ]

명령어 처리 과정

1. 명령어 인출

2. 명령어 해석

3. 명령어 실행

4. 결과 저장

 

명령어 파이프라인

= 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있음

= 빠르게 명령어 실행 가능

 

파이프라인 위험

= 명령어 파이프라인 성능 향상에 실패하는 경우

= 데이터 위험 + 제어 위험 + 구조적 위험

 

데이터 위험

= 명령어 간의 의존성에 의해 발생

= 이전 명령어를 끝까지 실행해야만 실행 가능한 경우

 

제어 위험

= 프로그램 카운터의 갑작스러운 변화에 의해 발생

= jump, call, 인터럽트 등등

 

구조적 위험

= 서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터)를 쓰려고 할 때 발생

 

슈퍼스칼라

= CPU 내부에 여러 개의 명령어 파이프라인을 포함하는 구조

= 멀티 스레드 프로세서

= 파이프라인 개수에 비례하여 처리 속도 증가 + 파이프라인 위험도의 증가로 인해 처리 속도 감소

 

비순차적 명령어 처리

= 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법

[ ISA, CISC & RISC ]

명령어 집합 구조 (ISA)

= CPU가 이해할 수 있는 명령어 모음

= 인텔의 CPU는 일반적으로 x86, x86-64 명령어 집합을 따름

= 애플의 CPU는 일반적으로 ARM 명령어 집합을 따름

 

CISC (Complex Instruction Set Computer)

= 복잡하고 다양한 수의 가변 길이 명령어 집합을 활용

= 프로그램을 이루는 명령어의 수가 적음

= 명령어 파이프라이닝 어려움

= x86, x86-64

RISC (Reduced Instruction Set Computer)

= 단순하고 적은 수의 고정 길이 명령어 집합을 활용

= 프로그램을 이루는 명령어의 수가 많음

= 명령어 파이프라이닝 쉬움

= ARM