혼공 학습단/혼자 공부하는 컴퓨터구조+운영체제

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

uomnf97 2024. 1. 14. 23:51
안녕하세요! 제이덥입니다~ 저는 지난주부터 학부 때 공부했던 CS 기초 내용을 Wrap-Up 하기 위해 혼공학습단 11기 활동을 진행하고 있는데요. 이번주에 2주차에 접어들었습니다. 포스팅이 늘고, 정리하면서 공부하니 뿌듯함이 느껴지네요.
이번 포스팅에서는 Chapter 5 CPU의 성능 향상 기법에 대해서 다룹니다. 쓰레드, 멀티코어, 파이프라이닝을 통해 어떻게 CPU성능을 향상 시킬 수 있는지 확인하실 수 있습니다.
해당 도서는 제가 직접 구매하여 글을 작성한 것이며, 혼공단 11기 활동의 일환으로 학습 내용에 대한 공유 글을 작성하게되었음을 알려드립니다. 도서에 대한 자세한 내용과 활동에 대한 내용을 알고 싶은 분들은 아래 Reference에서 확인해주세요~

 

Chapter 5. CPU 성능 향상 기법

1️⃣ 빠른 CPU를 위한 설계 기법

  • 클럭
    • 컴퓨터는 클럭 신호에 맞춰서 작동한다.
    • 클럭 속도 : Hz라는 단위를 이용하여 측정을 하고, Hz는 1초에 클럭이 몇번 반복이 되는지 알려주는 단위 입니다.
    • 클럭 속도는 매번 일정하게 유지 되지 않으며, 고성능을 요할 때는 순간적으로 클럭 속도를 높이고, 그렇지 않을 때는 속도를 낮추는 등 Base, Max 속도가 따로 존재
    • 강제로 최대 클럭속도를 높일 수도 있는데 이를 오버 클럭킹(overclocking)이라고 부름.
    • ⇒ 다만, 이는 발열 문제로 이어지기 클럭 속도를 높이는 것만으로는 CPU 성능을 높이는 것은 한계가 존재
  • 코어와 멀티코어
    • 코어: 명령어를 실행하는 부품의 단위로 ALU, 제어 장치, 레지스터를 포함한다.
    • 멀티 코어 CPU(멀티코어 프로세서) : CPU내 코어를 2개 이상 두어 명령어를 처리하는 CPU코어 수프로세서 명칭 
      1 싱글 코어(single-core)
      2 듀얼 코어(dual-core)
      3 트리플 코어(triple-core)
      4 쿼드 코어(quad-core)
      6 헥사 코어(hexa-core)
      8 옥타 코어(octa-core)
      10 데카 코어(deca-core)
      16 도데카코어(dodeca-core)
    • 유의 사항
      • 작업량보다 코어수가 많으면 서능에 크게 영향이 없음
      • 코어마다 처리할 연산이 적절하게 분배되지 않는다면 코어 수에 비례하여 연산 속도가 증가지 않음. 따라서 얼마나 적절하게 분배하느냐가 성능향상의 키 포인트(Key-Point)
  • 스레드
    • 하드웨어적 스레드 :
      • 뜻: 하나의 코어가 동시에 처리하는 명령어 단위
      • 멀티스레드 프로세스(multithread processor)/멀티 스레드 CPU : 하나의 코어로 2개 이상의 명령어를 동시에 처리하는 CPU를 말함
      • Hyper-thread : 인텔의 멀티스레드 기술
      • 가능한 이유 : 코어에서 꼭 필요한 레지스터를 여러 개를 가짐으로서 구현함.
    • 소프트웨어적 스레드 :
      • 하나의 프로그램에서 독립적으로 실행하는 단위
      • 프로그램이 여러개의 스레드를 이용해 정의하면 여러부분이 동시에 실행될 수 있음

2️⃣ 명령어 병령 처리 기법

  • 명령어의 처리 과정
    • 명령어 인출(Instruction-Fetch) → 명령어 해석(Instruction Decode) → 명령어 실행(Instruction Execution) → 결과 저장(Write Back)
    • 따라서 같은 단계가 겸치지 않는 다면 CPU는 각 단계를 동시에 실행할 수 있음
    • 명령어 파이프라이닝(Instruction Pipelining): 명령어 파이프라인(Instruction Pipeline에 넣고 동시에 처리하는 기법을 명령어 파이프라이닝(Instruction Pipelining)이라고 부름
  • 파이프라인 위험(Pipeline hazard)
    • 특정 상황에서 성능 향상에 실패하는 경우도 존재
    • 데이터 위험(data hazard) : 명령어 간 '데이터 의존성' 때문에 발생하는 문제( 인접한 두 명령어가 같은 주소에 접근 하여 데이터의 값을 변화시키는 경우)
    • 제어 위험(control hazard) : 기본적으로 프로그램 카운터는 현재 실행 중인 명령어의 다음 주소로 갱신되지만 카운터 값에 갑작스러운 변화가 생기면 미리 가지고 와서 처리 중이었던 명령어들이 쓸모가 없어짐. 이를 제어 위험이라고 부름
    • 구조적 위험(structural hazard) : 서로 다른 명령어가 동시에 ALU, 레지스터 등 같은 CPU 부품을 사용하려고 할 때 발생
  • 슈퍼스칼라(superscalar)
    • CPU 내부에 여러개의 명령어 파이프라인을 포함한 구조(superscalar)
  • 비순차적 명령어 처리(OoOE: Out-of-order execution)
    • 순차적으로 명령어를 수행하지 않고 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인이 멈추는 것을 방지하는 기법

3️⃣ CISC와 RISC

  • 명령어 집합
    • 명령어 집합 구조(ISA: Instruction Set Architecture) : CPU가 이해할 수 있는 명령어들의 모음
    • CPU구조에 따라 ISA가 다름
    • ISA가 달라지면서 Assembly어도 달라짐
  • CISC vs RISC
    • CISC : Complex Instruction Set Computer
    • RISC : Reduced Instruction Set Computer
    CISCRISC
    형태 복잡하고 다양한 가변 길이 명령어 단순하고 적은 고정길이의 명령어
    주소 지정 방식 다양한 주소 지정 방식 적은 주소 지정방식
    프로그램을 이루는 명령어 수 적음 많음
    명령어 수행시 필요한 클럭 수 여러 클럭에 걸쳐 명령어 수행 1클럭 내외로 명령어 수행
    특징 파이프라이닝 하기 어려움 파이프라니잉 하기 쉬움

Reference :