CPU의 작동원리와 성능 향상

enjoy301·2023년 4월 7일
0

[책] 혼공컴운

목록 보기
2/3
post-thumbnail

CPU의 작동원리 😎


CPU를 구성하는 부품들의 역할, 명령어를 실행하는 방식을 알아본다.

ALU

  • ALU는 레지스터를 통해 피연산자를 받고 제어장치로 부터 수행할 연산을 받아들여 연산을 수행함
  • 결과값은 메모리에 저장되지 않고 일시적으로 레지스터에 저장
  • 연산 결과에 대한 추가적인 상태정보(플래그)가 플레그 레지스터에 저장됨

CU

CU가 받는 정보

  1. 클럭 신호
    컴퓨터의 모든 부품은 클럭 신호에 맞춰 동작함
  2. 명령어
    명령어 레지스터로부터 명령어를 받아 다른 부품들에게 제어 신호 보냄
  3. 플래그
    플래그를 참고해 제어 신호 보냄
  4. 제어 신호
    외부장치에서 발생한 제어 신호를 받음

CU가 내보내는 정보

  1. CPU 외부
    메모리에 데이터 이동을, 입출력장치에 입출력을 지시
  2. CPU 내부
    ALU에게 수행할 연산을, 레지스터에 데이터 이동을 지시

Register

레지스터는 역할에 따라 크게 8가지로 나뉨

1. 프로그램 카운터
메모리에서 읽어 들일 명령어의 주소 저장
2. 명령어 Reg
메모리에서 읽어 들인 명령어 저장
3. 메모리 주소 Reg
읽을 메모리의 주소를 저장하고 주소 버스로 전송됨
4. 메모리 버퍼 Reg
메모리와 주고 받은 값을 저장함
5. 플래그 Reg
ALU의 연산 상태 플래그를 저장함
6. 범용 Reg
데이터와 주소 모두 저장함. 일반적인 상황에서 자유롭게 사용함
7. 스택 포인터
스택의 top 주소를 저장함
8. 베이스 Reg
베이스 레지스터 주소 지정 방식에서 기준 주소가 저장됨

명령어 사이클

메모리의 데이터를 CPU로 가져오는 인출 사이클, 명령어를 실행하는 실행 사이클, 메모리 접근이 더 필요한 경우(간접 주소 지정 방식) 간접 사이클로 구성됨.

Interrupt

  • 명령어 사이클 중 중단이 발생하는 상황을 인터럽트라고 함
  • 인터럽트는 동기(예외 상황), 비동기(HW 인터럽트)로 나뉨

하드웨어 인터럽트

  • 입출력장치는 CPU보다 현저히 느리기 때문에 완료를 마냥 기다릴 수 없음.
  • 입출력장치로부터 완료 인터럽트를 받을 때까지 CPU는 다른 작업을 처리함으로써 효율적으로 작동함

하드웨어 인터럽트 처리 순서

  1. 입출력장치가 CPU에 인터럽트 요청 신호 전송
  2. CPU가 실행 사이클 끝나고 인터럽트 여부 확인
  3. CPU가 인터럽트 플래그를 통해 인터럽트 처리 가능 여부 확인
  4. 현재 상태 백업
  5. 인터럽트 벡터를 참고하여 인터럽트 핸들러 실행
  6. 인터럽트 핸들러 종료 후 4번 상태 복구, 실행

CPU 성능 향상 😚


더 빠른 CPU를 만들기 위한 CPU 설계, 명령어 처리 기법을 알아본다.

CPU 설계 기법

1. 클럭 속도 Up
컴퓨터 부품들은 클럭 속도에 맞춰 움직임 → 클럭 속도를 올리면 CPU가 빨라짐

2. 멀티코어
명령어를 실행하는 부품을 여러개 두어 각자 처리함

3. 멀티스레드

  • 하드웨어적 멀티스레드: 하나의 코어가 여러 명령어를 동시에 처리함
  • 소프트웨어적 멀티스레드: 하나의 프로그램에서 독립적으로 실행됨

명령어 병렬 처리

명령어를 병렬 처리하여 CPU가 놀지 않고 시간을 알뜰히 쓰며 작동하게 함.

1. 명령어 파이프라인

  • 명령어 처리 과정은 명령어 인출, 명령어 해석, 명령어 실행, 결과 저장으로 나눌 수 있음
  • 서로 다른 단계를 동시에 실행

2. 슈퍼스칼라

  • 여러개의 파이프라인을 이용함

3. 비순차적 명령어 처리(OoOE)

  • 1, 2번의 방법은 여러 명령어들을 순차적으로 처리하는 방법임
  • OoOE: 데이터의 의존성이 전혀 없는 명령어들을 먼저 실행하는 방법

CISC, RISC

명령어 파이프라이닝, 슈퍼스칼라를 적용하려면 명령어가 파이프라이닝하기 쉽게 생겨야 한다.

ISA

  • 명령어의 구조와 작동 원리는 거의 비슷하지만, CPU마다 약간씩 다름.
  • ISA란 CPU가 이해할 수 있는 명령어의 모음
  • 서로 다른 CPU는 ISA가 다르므로 실행 파일의 명령어를 이해할 수 없음

CISC

  • Complex Instruction Set Computer의 약자
  • 명령어의 크기와 형태가 다양한 가변 길이 명령어 사용
  • 적은 수의 명령어만 사용 → 실행파일 크기가 작음
  • 명령어들의 수행시간이 제각각이라 파이프라이닝이 쉽지 않음

RISC

  • Reduced Instruction Set Computer의 약자
  • 명령어가 짧고 규격화되고 1클럭 내외로 실행됨 → 파이프라이닝 최적화
  • 고정 길이 명령어를 활용함
profile
싫지만 해야 하는데 어떡해

0개의 댓글