본문 바로가기
카테고리 없음

[CE] Hardware Threading, Scalar / Vector Processor

by ds31x 2024. 12. 8.

0. 스레딩(Threading)

  • 하나의 프로그램(=process)을 독립적인 실행 흐름(스레드, Thread)으로 분할하는 개념
  • 여러 스레드를 활용하면 시간적으로 겹쳐(concurrent) 실행하거나, 자원이 충분할 경우 실제 병렬(parallel) 실행 가능.
    • 1개의 core에서 동시에 복수의 명령어 수행하는 실행 단위: H/W Thread (Inter의 Hyperthreading)
    • S/W thread는 concurrency(동시성)과 관련되어 Context Switch가 일어나는 하나의 프로그램에서 독립적으로 실행되는 단위임.
  • 스레드를 통해 프로세서 활용도를 극대화하고 다양한 작업을 동시에 처리 가능

2023.12.27 - [개발환경] - [CE] Process versus Thread: OS의 Thread (S/W Thread)

 

[CE] Process versus Thread

Process versus Thread1. Process (프로세스)Process는 자신을 위한 독립된 메모리 공간 등의 리소스를 차지한 상태에서 실행 중인 프로그램의 instance라고 볼 수 있음. 독립된 execution unit (실행 단위)이며,

ds31x.tistory.com

 

2024.05.28 - [분류 전체보기] - [CE] Concurrency (동시성)과 Parallelism (병렬성)

 

[CE] Concurrency (동시성)과 Parallelism (병렬성)

Concurrency vs. Parallelism1. 정의Concurrency (동시성):여러 작업이 시간적 겹침을 가지고 순차적으로 진행되는 것단일 코어 CPU에서도 작업 간 빠른 전환으로 동시 처리되는 것처럼 보이는 것을 concurrency

ds31x.tistory.com


2. 하드웨어 스레딩(Hardware Threading)

Hardware Threading은 Context Switching이 없음

  • 단일 core(코어) 내에서 하드웨어적으로 복수의 스레드를 지원하는 기술: 
    • 프로그램 관점에서는 동시에 여러 명령어가 동시에 수행되는 것으로 느껴지므로 멀티프로세서와 구분되기 어려움.
    • 때문에 logcal processor라고도 불림: intel hyper threading의 경우 물리적 1개의 코어가 2개로 보임.
  • 스레드 간 context changing(문맥 전환) 없이 instruction issue slots(명령어 발행 슬롯)을 공유하며
  • 파이프라인 유휴 시간 최소화: 2개의 haredare thread가 하나의 실행 pipeline을 공유
    • 메모리 지연(latency) 또는 데이터 의존성으로 인해 한 스레드가 실행을 멈출 경우, 다른 스레드의 명령어가 파이프라인을 채워 병렬 처리 성능을 향상
    • 각 스레드가 독립적인 레지스터 집합 또는 상태 정보를 유지

2-1. SMT(Simultaneous Multithreading):

대표적인 하드웨어 스레딩 기술로, 단일 코어가 두 개 이상의 논리 스레드를 동일한 사이클 내에 처리하여 동시성(concurrency)을 극대화

  • 인텔(Intel): SMT 구현을 “하이퍼 스레딩(Hyper-Threading)”이라는 브랜드명으로 제공: Hyper-Threading은 1core당 2개의 hardware threads를 지원하며 이 때문에 OS 입장에서는 물리적인 1개의 Core를 2개의 Core로 인식하게 됨.
  • AMD: 별도 브랜드명 없이 SMT라는 용어를 그대로 사용

Note: IPC (Instructions Per Cycle)

  • 단일 코어 기준 한 클록 사이클(Clock Cycle) 동안 처리 가능한 명령어의 평균 개수
    • 1 IPC = 한 사이클에 1개 명령어 처리
    • 2 IPC = 한 사이클에 2개 명령어 처리
  • IPC는 주로 단일 코어 성능 지표이며,
    멀티코어 환경에서는 모든 코어의 IPC를 합산한 전체 처리량(total throughput)을 논할 수 있음

3. 스칼라(Scalar) 프로세서

  • 단일 코어 기준 한 사이클에 한 개 명령어(1 IPC)만 처리하는 구조
  • 직렬적 파이프라인 실행 기반으로, 멀티코어 구성을 통해 총 처리량은 늘릴 수 있으나 개별 코어는 여전히 1 IPC에 머무름

interleaved multithreading 이 이루어짐:

  • 하나의 core를 여러 threads가 공유하고 물리적으로는 한번에 하나씩 수행되며
  • context switching이 발생.

4. 슈퍼스칼라(Superscalar) 프로세서

  • 단일 코어 기준 한 사이클에 복수의 명령어(>1 IPC)를 병렬 처리하는 구조
    • 다중 실행 유닛을 갖추고 있기 때문에,
    • 단일 스레드에서도 병렬 처리가 가능하고,
    • 멀티스레드 환경에서도 자원을 최대한 활용.
  • 명령어 수준 병렬성(ILP) 활용으로 동시에 다수 명령어 발행 및 실행: 
  • 단일 코어 성능(IPC)과 처리량을 크게 향상.
ILP (Instruction-Level Parallelism)
• 정의: 프로세서가 프로그램 내 Instructions의 독립성을 활용하여
           여러 명령어를 동시에 실행(1개의 core에서)할 수 있는 능력
을 의미.
• 목적: 단일 스레드에서의 성능 향상으로, 실행 유닛의 활용도를 극대화하고 처리량(throughput)을 증가시키는 데 중점.

 

https://dsaint31.tistory.com/721

 

[CE] Pipelining (파이프라인 기법)

Pipelining (파이프라인 기법)컴퓨터 과학에서 프로세서의 성능을 향상시키기 위해 Instructions를 분할된 단계로 나누고, 여러 Instructions의 각 단계를 동시에 수행하는 기법. Pipelining을 통해 여러 명

dsaint31.tistory.com


5. 벡터프로세서(Vector Processor)

  • 단일 명령어로 벡터 형태(여러 데이터 요소로 구성된 집합)에 대해 동시 연산을 수행하는 구조
  • 전통적 벡터 프로세서는 대용량 벡터 레지스터를 활용해 단일 스레드 내 데이터 병렬성(DLP) 극대화
  • 현대 CPU는
    • 전통적 벡터 프로세서 대신
    • SSE, AVX 등의 SIMD(Single Instruction, Multiple Data) 명령어 확장을 통해 벡터 연산 가속
  • GPU는
    • SIMT(Single Instruction, Multiple Threads) 아키텍처를 사용해 유사한 대규모 데이터 병렬 처리 구현
ILP(Instruction-Level Parallelism): 여러 명령어를 병렬로 처리하는 능력; Super Scalar
DLP(Data-Level Parallelism): 동일한 명령어를 여러 데이터에 병렬로 적용하는 능력; GPGPU

 


참고: Scalar and Vector

  • “Scalar”라는 명칭은 수학에서 한 개의 크기(스칼라) 값만 가지는 양(예: 단일 숫자)에서 유래되었으며, 프로세서가 한 번에 하나의 연산 대상(스칼라 값)만 처리한다는 점을 반영한 명칭
  • “Vector”라는 명칭은 수학에서 여러 차원의 요소를 가진 벡터(순서 있는 수열) 개념에서 유래되었으며, 프로세서가 한 번에 다수의 데이터 요소(벡터) 연산을 처리하는 특성을 반영한 명칭

6. 현대 CPU와 GPGPU에서의 활용

6-1. 현대 CPU:

  • 슈퍼스칼라 아키텍처 및 SIMD 명령어를 통해 단일 코어 성능(IPC) 향상
  • 멀티코어 구성SMT(인텔 하이퍼 스레딩, AMD SMT)를 통해 전체 처리량 증대
  • 범용적 워크로드에 최적화된 균형 잡힌 성능 제공

6-2. 현대 GPGPU(General-Purpose GPU):

  • SIMT 기반 아키텍처를 통해 대규모 병렬 연산 수행
  • 다수의 경량 스레드를 동시에 처리하여 데이터 병렬성, 스레드 병렬성 극대화
  • 벡터 연산과 유사한 원리를 수많은 스레드로 확장,
    • HPC(High-Performance Computing), 머신러닝, 그래픽 연산에 특화된 성능 구현

같이보면 좋은 자료들

https://dsaint31.me/mkdocs_site/CE/ch04/ce04_50/

 

BME228

Parallel Computing 병렬 컴퓨팅은 여러 프로세서를 동시에 활용하여 컴퓨팅 성능을 크게 향상시키는 기술입니다. 단일 프로세서 시스템보다 훨씬 빠른 속도로 복잡한 문제를 해결할 수 있도록 합니

dsaint31.me

https://product.kyobobook.co.kr/detail/S000211776141: 5장 컴퓨터아키텍처

 

컴퓨터 시스템 딥 다이브: C 언어부터 어셈블리, 아키텍처, OS까지 한 꺼풀씩 벗겨보는 컴퓨터 시

컴퓨터 시스템 딥 다이브: C 언어부터 어셈블리, 아키텍처, OS까지 한 꺼풀씩 벗겨보는 컴퓨터 시스템 | 코드 아래 숨겨진 아름답고 놀라운 컴퓨터 아키텍처 대탐험컴퓨터 시스템은 바다와 비슷

product.kyobobook.co.kr

https://blog.skby.net/%EB%8F%99%EC%8B%9C-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9simultaneous-multithreading/

 

동시 멀티스레딩(Simultaneous Multithreading) < 도리의 디지털라이프

I. 스레드의 병렬 실행, 동시 멀티스레딩 가. 동시 멀티스레딩(Simultaneous Multithreading)의 개념 하드웨어 자원 사용률 극대화를 위해 스레드(Thread) 우선순위 선정하여 실행 효율을 개선한 병렬 실행

blog.skby.net