ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5장. CPU 성능 향상 기법
    CS/컴퓨터구조 2023. 8. 26. 21:53

    5-1. 빠른 CPU를 위한 설계 기법

    클럭

    컴퓨터의 부품들의 동작하는데 기준이 되는 박자?

    클럭 속도: 1 초에 클럭이 반복되는 횟수(Mhz). 빠를수록 CPU 성능 향상. 그러나 클럭 속도가 빠를수록 CPU 발열도 심해짐.

     

    코어 Core

    CPU 내에서 명령어를 실행하는 부품. 1Core =(CPU + ALU + 레지스터) 라고 이해하면 됨.

    멀티코어 프로세서 Multi-core Processor: Core를 여러 개 갖는 CPU. 멀티코어 CPU 라고도 함.

    클럭 속도가 빠른 것보다는 코어 수가 많은 것이 CPU 성능 향상에 더 효과적.

    코어가 많다고 무조건 CPU 성능이 코어 수에 비례하여 향상되는 것은 아님 → 각 코어 당 처리해야 할 명령어 분배를 얼마나 잘 하느냐도 중요

     

    스레드

    하드웨어적 스레드(하드웨어 스레드): 하나의 Core가 한 번에 처리할 수 있는 명령어 단위

    → 하드웨어 스레드가 여러 개이면 Core가 한 번에 처리 할 수 있는 명령어가 여러 개가 된다.

    논리 프로세서 라고 부르기도 함.

    멀티스레드multithread 프로세서: 하나의 Core로 여러 개의 명령어를 동시에 처리하는 CPU. 멀티스레드 CPU라고도 함.

    설계 방법은 한 Core 당 2개의 레지스터(여기서는 프로그램 카운터, 명령어 레지스터, 플래그 등등의 묶음을 의미)를 두는 것. (왜 두 개인지는 모름. 그냥 현대의 기술로 2개까지만 가능한가보다 추측할 뿐…)

    소프트웨어적 스레드(스레드): 한 프로그램 내에서 독립적으로 실행되는 흐름의 단위(← 말 어려움…)

    → 어떤 프로그램이 여러 개의 스레드를 사용하도록 되어 있고 한 스레드 당 한 개의 기능이 구현되어 있다면 그 프로그램은 한 번에 여러 개의 기능을 수행할 수 있다.

     

     

    5-2. 명령어 병렬 처리 기법

    ★ 명령어 파이프라이닝 Instruction Pipelining

    명령어 파이프라인: 명령어 인출~명령어 실행 결과 저장 까지의 과정

    파이프라인을 구성하는 각 단계는 동일한 단계만 아니면 동시 수행이 가능

    ex) 명령어 파이프라인이 ‘인출 - 해석 - 실행 - 저장’ 으로 정의되어 있을 때 다음의 방법으로 동시에 여러 개의 명령어 처리가 가능함.

      t1 t2 t3 t4 t5 t6 t7
    명령어1 인출 해석 실행 저장      
    명령어2   인출 해석 실행 저장    
    명령어3     인출 해석 실행 저장  
    명령어4       인출 해석 실행 저장

     

    파이프라인 위험 Pipeline hazard

    구조 위험 structural hazard: 자원 위험resource hazard 이라고도 함. 서로 다른 명령어가 동시에 같은 CPU 부품(ex. ALU)을 사용하려고 할 때.

    제어 위험 control hazard: 분기 등의 이유로 프로그램 카운터의 값이 비순차적으로 변할 때 → 기 예측 branch prediction (프로그램이 다음 순서에 어디로 분기 될지 예측하는 기술)으로 예방

    데이터 위험 data hazard: 원인 - 명령어 간 데이터 의존성.

     

    슈퍼스칼라 superscalar

    명령어 파이프라인을 여러 개 두어 한 번에 실행할 명령어 수를 늘리는 기법. 파이프라인이 늘어난 만큼 파이프라인 위험도 늘어나기 때문에 절대적으로 파이프라인 수에 비례하여 CPU 성능이 향상되는 것은 아님.

     

    비순차적 명령어 처리 기법 Out-of-Order Execution → OoOE

    전체 명령어 실행 시간 단축을 위하여 원래의 명령어 순서가 아닌 재구성된 순서로 명령어를 처리하는 기법.

    순차적 명령어 처리 기법에서는 실행하려는 명령어가 앞 순서에서 실행 중인 명령어의 결과를 사용해야 할 때(데이터 의존성) 해당 결과가 나올 때까지 처리를 멈추고 대기하게 된다. 만약 그 다음 명령어도 현재 명령어의 처리 결과를 기다려야 한다면 전체 명령어 실행 시간이 늘어지게 됨.

    이 때 한 참 뒤 차례에 있는 명령어들 중 데이터 의존성이 없는 명령어들만 모아 먼저 실행하면 앞 순서 명령어의 종료를 기다리지 않고도 동시에 다른 명령어를 실행 할 수 있게 됨. → 명령어 전체 실행 시간 단축 효과

    책 曰 ‘명령어의 합법적인 새치기’

     

     

    5-3. CISC와 RISC

    명령어 파이프라이닝이나 슈퍼스칼라 기법을 사용하려면 명령어가 파이프라이닝하기 좋게 생겨야 한다.

    ISA Instruction Set Architecture

    CPU가 이해할 수 있는 명령어들의 집합 or 집합 구조

    CPU 마다 이해하고 사용하는 명령어 집합이 다름. 즉, ISA는 일종의 CPU 언어인 셈.

    ISA는 하드웨어 설계에 영향을 미치기도 함.(자신의 ISA를 더 잘 이해하고 실행할 수 있는 방향으로 설계가 될 테니…) → 그래서 ‘집합 구조’ 라고 부르는 것… 결국 CPU 구조를 결정하기도 하니까.

    ISA가 다르면 어셈블리어도 달라지게 됨.

    대표적으로 CISCRISC 방식이 존재.

    cf) 대표적인 ISA 2가지 (출처: 나무위키, https://velog.io/@480/이제는-개발자도-CPU-아키텍처를-구분해야-합니다)

    • x86: 인텔에서 개발한 CPU 아키텍처
    • ARM: Arm Limited사에서 설계하는 명령어 집합을 총칭. 주로 모바일 기기에 많이 사용됨. 스마트폰 보급 이후부터 급부상. 애플의 M1 칩이 ARM 호환 CPU임.

     

    CISC Complex Instruction Set Computer

    x86, x86-64 CPU가 선택한 ISA.

    다양하고 강력한 명령어 집합 사용 = 명령어 하나에 다양한 기능/의미가 담김 = 소스코드를 컴파일한 결과물(어셈블리어)의 길이가 짧음 = 프로그램 실행에 필요한 명령어 수가 적음.(명령어 하나로 여러 동작을 수행할 수 있어서) → 메모리를 적게 사용함.

    가변 길이 명령어 사용 = 명령어마다 형태나 길이가 다름. 주소 지정 방식도 다양함.

    명령어가 여러 클럭에 거쳐 수행 됨. → 명령어 파이프라이닝에 적합하지 않음 → 최대 약점.

     

    RISC Reduced Instruction Set Computer

    ARM 에서 채택한 ISA

    비교적 적은 수의 명령어(그러나 반드시 필요하고 기본 적인)를 작게, 규격화하여 제공.

    각 명령어가 작고 단순하므로 소스코드를 컴파일한 결과물(어셈블리어)의 길이가 김. = 프로그램 실행을 위해 필요한 명령어 수가 많음. → 원래는 메모리 접근이 잦아야 하지만 메모리 접근은 최소화( → 주소 지정 방식 종류가 적은 경우 多)하고 대신 레지스터를 적극 활용함. → 일반적인 경우보다 범용 레지스터 수가 많음. (→ 비용 증가…?)

    고정 길이 명령어 사용.

    대부분의 명령어가 1 클럭 내로 실행 됨. → 명령어 파이프라이닝에 적합함.

     

     

    * 본 글의 일부 설명과 그림의 출처는 '혼자-공부하는-컴퓨터구조-운영체제' 입니다.

    https://www.yes24.com/Product/Goods/111378840

     

    혼자 공부하는 컴퓨터 구조+운영체제 - 예스24

    혼자 해도 충분합니다! 1:1 과외하듯 배우는 IT 지식 입문서이 책은 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지

    www.yes24.com

     

    'CS > 컴퓨터구조' 카테고리의 다른 글

    7장. 보조기억장치  (1) 2023.09.03
    6장. 메모리와 캐시메모리  (0) 2023.08.31
    4장. CPU  (0) 2023.08.26
    3장. 명령어  (0) 2023.08.24
    [컴퓨터구조] 2장. 데이터  (0) 2023.08.23

    댓글

Designed by Tistory.