컴퓨터 구조 + 운영체제 #05

박영무·2024년 11월 3일
post-thumbnail

참고 서적: 혼자 공부하는 컴퓨터 구조 + 운영체제 (강민철, 한빛미디어)


I. 고속의 CPU 설계 기법

1. 클럭

1) 클럭 신호

  • 컴퓨터의 부품은 클럭 신호에 맞춰 움직이기 때문에 클럭 신호의 주기를 줄이는 방법을 고려해 볼 수 있다.

2) 클럭 속도

  • 클럭 속도: 1초 당 클럭 신호가 반복되는 횟수 [단위: Hz]
  • 일반적으로 클럭 속도를 높일수록 CPU의 속도가 향상된다.
  • 하지만 필요 이상으로 클럭 속도를 높이면 발열 문제가 심각해진다.
  • 이에 따라 클럭 속도를 높이는 방법 대신에 코어 수를 늘리는 방법과 스레드 수를 늘리는 방법을 고려해 볼 수 있다.

2. 코어와 멀티 코어

1) 코어

  • 전통적인 CPU에는 명령어를 실행하는 부품이 한 개만 존재하였다.
  • 현대적인 CPU에는 명령어를 실행하는 부품이 여러 개 존재한다.
  • 명령어를 실행하는 부품코어라고 한다.

2) 멀티 코어

  • 여러 개의 코어를 가지고 있는 CPU, 또는 프로세서를 칭한다.
  • 다만, CPU의 연산 속도가 코어의 수에 비례하여 증가하지는 않는다.

3. 스레드와 멀티 스레드

1) 스레드

  • 실행 흐름의 단위이다.

2) 하드웨어적 스레드

  • 한 개의 코어가 동시에 처리하는 명령어 단위이다.

3) 소프트웨어적 스레드

  • 한 개의 프로세스에서 독립적으로 실행되는 단위이다.

4) 멀티 스레드

  • 한 개의 코어로 여러 명령어를 동시에 처리하는 CPU이다.
  • 예: CPU 내부에 2개의 코어가 있고, 각 코어마다 4개의 명령어를 동시에 실행할 수 있는 경우를 2코어 8스레드 CPU라고 한다.

II. 명령어 병렬 처리 기법

1. 명령어 파이프라인

  • 명령어 처리 단계는 명령어 인출, 명령어 해석, 명령어 실행, 결과 저장 순으로 분류할 수 있다.
  • 아래의 [테이블 1]처럼 명령어 파이프라인이 존재할 경우 각 시점마다 동일한 단계만 겹치지 않는다면 CPU는 각각의 단계를 동시에 실행할 수 있다.
  • 아래의 [테이블 1]에서 t8초 동안 5개의 명령어를 실행할 수 있다.

[테이블 1]

t1t2t3t4t5t6t7t8
명령어 1인출해석실행저장
명령어 2인출해석실행저장
명령어 3인출해석실행저장
명령어 4인출해석실행저장
명령어 5인출해석실행저장
  • 만약 명령어 파이프라인이 없다면 아래의 [테이블 2]처럼 t8초 동안 단 2개의 명령어만 실행할 수 있다.

[테이블 2]

t1t2t3t4t5t6t7t8
명령어 1인출해석실행저장
명령어 2인출해석실행저장

1) 명령어 인출 (Instruction Fetch)

  • Memory에서 CPU로 명령어를 가져오는 단계이다.

2) 명령어 해석 (Instruction Decode)

  • CPU에서 명령어 해독기를 이용하여 명령어를 분석하고 어떤 작업을 수행해야 하는지 결정하는 단계이다.

3) 명령어 실행 (Execute Instruction)

  • 해석된 명령어를 실행하는 단계이다.

4) 결과 저장 (Write Back)

  • 명령어 실행 후 결과를 저장해야 하는 경우 이를 Memory에 저장한다.

2. 수퍼 스칼라

  • CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조이다.

[테이블 3]

t1t2t3t4t5t6t7t8
명령어 1인출해석실행저장
명령어 2인출해석실행저장
명령어 3인출해석실행저장
명령어 4인출해석실행저장
명령어 5인출해석실행저장
명령어 6인출해석실행저장
명령어 7인출해석실행저장
  • 이론적으로는 명령어 파이프라인의 개수에 비례하여 명령어 처리 속도가 증가하지만,
    명령어 파이프라인 위험도의 증가로 인해 명령어 파이프라인의 개수와 명령어 처리 속도가 비례하진 않는다.

3. 파이프라인 위험

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

1) 데이터 위험

  • 명령어 간의 의존성에 의해 생기는 위험이다.
  • 이전 명령어를 끝까지 실행해야만 그 다음 명령어가 비로소 실행될 수 있는 경우이다.
  • 모든 명령어를 동시에 처리할 수 없는 상황이다.

2) 제어 위험

  • PC (Program Counter)의 갑작스러운 변화에 의해 생기는 위험이다.
  • 명령어는 기본적으로 메모리에 순차적으로 적재되는데, JUMP 등의 명령어로 인하여 다른 주소로 이동해야 하는 경우 발생한다.

3) 구조적 위험

  • 서로 다른 명령어가 같은 CPU 부품 (ALU, Register)을 사용하려고 할 때 생기는 위험이다.

III. 명령어 집합 구조, CISC, RISC

1. 명령어 집합 (IS, Instruction Set)

  • CPU마다 명령어의 생김새, 연산, 주소 지정 방식 등의 차이가 있다.
  • IS의 대표적인 예로는 CISC와 RISC가 있다.

1) 명령어 집합

  • CPU가 이해할 수 있는 명령어들의 모임이다.

2) 명령어 집합 구조 (ISA, Instruction Set Architecture)

  • CPU의 언어이자 HW가 SW를 어떻게 이해할지에 대한 약속이다.

2. CISC (Complex Instruction Set Computer)

1) 정의

  • 복잡한 명령어 집합을 사용하는 컴퓨터 (CPU)이다.

2) 특징

  • 명령어의 형태와 크기가 다양한 가변 길이 명령어 집합을 사용한다.
  • 상대적으로 적은 수의 명령어로도 복잡한 프로그램을 실행할 수 있다.
  • x86, x86-64는 CISC 기반 ISA이다.

3) 단점

  • 명령어의 크기와 실행되기까지의 시간이 일정하지 않다.
  • 복잡한 명령어 때문에 하나의 명령어를 실행하는 데 여러 클럭 주기가 필요하다.
  • 이에 따라 명령어 파이프라이닝에 불리하다는 치명적인 단점이 존재했다.
  • 또한 일부의 명령어만 자주 사용되면서 대다수의 복잡한 명령어의 사용 빈도가 현저히 낮아졌다.

3. RISC (Reduced Instruction Set Computer)

1) 정의

  • 명령어의 종류가 적고, 짧고 규격화된 명령어를 사용하는 컴퓨터이다.

2) 특징

  • 명령어의 크기가 고정된 고정 길이 명령어 집합을 사용한다.
  • 메모리에 접근하는 명령어를 loadstore로 제한하여 Memory 접근을 최소화하면서도, Register 사용 빈도를 높여 GPR (범용 레지스터) 종류가 다양하다.

3) 장점

  • 짧고 규격화된 명령어를 사용하기 때문에 명령어 파이프라이닝에 유리하다.

4) 단점

  • 명령어의 종류가 CISC보다 적기 때문에 동일한 프로그램을 동작시키기 위해서는 CISC보다 더 많은 명령어가 필요하다.
profile
시행착오는 성장의 밑거름입니다.

0개의 댓글