[TIL] 24.10.07 MON

GDORI·2024년 10월 7일
0

TIL

목록 보기
64/79
post-thumbnail

CPU 당신은 누구죠?

Central Processing Unit - 중앙 처리 장치
컴퓨터 성능을 따지는 큰 요소 중 하나인 CPU는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인
제어장치입니다. 사람으로 치면 "두뇌" 라고 할 수 있죠.

CPU의 기능

명령어 처리

CPU는 컴퓨터 프로그램에서 오는 명령어를 읽고 이해합니다. 주로 산술연산, 논리연산 등이 있습니다. 연산은 5단계로 이루어지고 마지막 단계에서 명령어가 실행되고 나면 다시 명령 주기가 반복되며 프로그램 카운터의 변화된 위치에서 실행될 명령어를 불러옵니다.

  1. 인출
    첫번째 단계인 인출은 메모리에서 명령어를 불러옵니다.

  2. 해독
    해독은 인출단계에서 가져온 명령어를 해독하여 데이터 정보와 연산정보를 추출하고 CPU 내 장치에 적절한 제어신호를 보내 연산, 처리 준비하는 단계입니다.

  3. 실행
    실행은 추출한 데이터와 연산정보를 이용하여 실제로 연산하는 단계로 연산 단계가 끝난 결과는 다음 명령어에서 쓸지, 메모리에서 쓸지, 라이트백에서 쓸지 결정됩니다.

  4. 메모리
    메모리는 연산 결과가 다음 명령어에서 바로 사용되지 않으면 저장하는 단계입니다.

  5. 라이트백
    라이트백은 다음 명령어의 입력데이터로 쓰일 경우 레지스터에 쓰는 것을 말합니다.

CPU 구조

기본 구성으로는 독립적으로 명령어를 실행할 수 있는 코어, 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있습니다.

코어

CPU는 여러 코어로 구성되어 있고 각 코어는 독립적으로 명령어를 실행할 수 있는 처리 단위입니다.

  • 싱글코어 : 한 개의 코어로 단일 작업을 처리합니다.
  • 멀티코어 : 여러 개의 코어를 가지고 있어 멀티태스킹 작업이 가능합니다.

예전 게임의 경우 단일코어 성능이 좋아야 체감을 느낄 수 있었고, 그로 인해 인텔이 게임용이라는 인식이 강했으나 최근에는 판도가 바뀌고 있습니다.

최근에는 코어도 용도가 나뉘어 P-Core ( perfomance Core ) / E-Core ( Efficiency core ) 두가지 유형의 프로세서 코어가 있습니다.

  • P-Core 는 경주용 자동차와 같이 높은 성능을 요구하는 작업을 처리하는데 최적화 된 코어로 게임, 비디오 편집, 복잡한 계산 등 CPU에 큰 부하를 주는 작업을 빠르고 효율적으로 처리합니다.

  • E-Core 는 하이브리드 자동차와 같이 에너지 효율성을 높이기 위해 설계된 코어로 낮은 전력 소비로 기본적인 작업이나 백그라운드 작업을 수행하며, 필요할 때 P-Core로 전환하여 성능을 높일 수 있습니다.

스레드

CPU는 멀티스레딩을 지원하여 각 코어에서 동시에 여러 스레드를 실행할 수 있습니다. 인텔의 경우 하이퍼 스레딩 기술을 통해, 하나의 코어가 두 개의 스레드를 동시에 처리할 수 있습니다. 이로 인해 CPU는 작업을 더 빠르고 효율적으로 수행할 수 있습니다. 코어가 광산이라면 스레드는 광부라고 할 수 있습니다.

레지스터

레지스터는 CPU 내부에 위치한 매우 빠른 메모리로써 CPU가 즉시 접근할 데이터와 명령어를 임시로 저장합니다.

  • 일반 목적 레지스터 : 디양한 데이터와 주소를 저장하는 용도로 사용합니다.
  • 특수 목적 레지스터 :
  1. 프로그램 카운터(PC) : 현재 실행중인 명령어의 주소를 저장합니다.
  2. 명령어 레지스터(IR) : 현재 실행중인 명령어를 저장합니다.
  3. 스택 포인터(SP) : 스택 메모리의 최상단 주소를 가리킵니다.
  4. 베이스 레지스터 : 메모리 주소 계산에 사용됩ㄴ디ㅏ.
  • 플래그 레지스터 : CPU 상태나 연산 결과를 나타내는 비트 플래그를 저장하며 연산결과가 0인지 음수인지 등을 나타냅니다.

레지스터는 수공예를 할 때 필요한 도구와 재료를 놓는 작업대같은 역할이라고 볼 수 있습니다.

캐시메모리

캐시는 CPU 내부에 위치한 고속 메모리로, 자주 사용하는 데이터와 명령어를 임시로 저장하여 처리 속도를 높입니다. 레지스터 다음으로 빠릅니다.

  • L1, L2, L3 캐시:
  1. L1 캐시: CPU 코어와 가장 가까운 메모리로, 가장 빠르지만 용량이 작습니다.
  2. L2 캐시: L1보다 느리지만 용량이 더 큽니다.
  3. L3 캐시: 여러 코어가 공유하는 캐시로, 용량은 크지만 속도는 L1과 L2보다 느립니다.

캐시 메모리는 작업대 옆에 있는 보관함이라고 할 수 있겠습니다.

버스

CPU와 다른 부품(메모리, 그래픽 카드 등) 간의 데이터 전송을 위한 통로입니다.

  • 주소 버스: 메모리 주소를 전송합니다.
  • 데이터 버스: 실제 데이터를 전송합니다.
  • 제어 버스: 명령어의 실행 상태를 조정합니다.

버스는 작업한 공예물을 다른 곳에서 처리하기 위해 가지고 움직이는 통로라고 볼 수 있습니다.

제어 유닛 (Control Unit)

제어 유닛이란 CPU 내부에서 명령어의 흐름을 조정하고, 어떤 연산을 수행해야 하는지를 결정하는 역할을 합니다. 명령어를 해석하여 필요한 데이터와 리소스를 할당합니다.

갑자기 광산, 공예 예시를 들다가 뜬금없지만 제어 유닛은 신호등과 같은 역할을 수행합니다. 신호등이 도로에서 차량의 흐름을 조절하듯이 제어 유닛은 올바른 순서로 명령어를 실행할 수 있도록 돕는거죠.

산술 논리 장치 (ALU)

ALU는 기본적인 산술 연산(더하기, 빼기 등)과 논리 연산(AND, OR 등)을 수행하는 장치입니다. ALU는 CPU의 두뇌에서 실제 계산을 담당합니다.

CPU의 성능

CPU의 성능을 나타내는 것에는 클럭 속도, 코어 수, 캐시 크키, 전력소비 등이 있습니다.

클럭속도

CPU 작동 속도를 나타내는 지표로 기가헤르츠(GHz) 단위로 측정됩니다. 높은 클럭 속도는 더 많은 명령어를 더 빠르게 처리할 수 있음을 의미합니다.

코어 수

CPU의 코어 수가 많을수록 동시에 처리할 수 있는 작업의 수가 증가합니다. 멀티태스킹을 지원하는 애플리케이션에서 성능 향상이 두드러지며 예시로 동영상 렌더링 프로그램 등이 있겠습니다.

캐시 크기

CPU의 캐시 메모리 크기는 성능에 큰 영향을 미치며 데이터를 더 빠르게 접근할 수 있도록 도와줍니다.

전력 소비

일반적으로 전력 소비가 높을수록 더 높은 성능을 제공하지만, 전력 효율성이 중요한 모바일 기기나 서버와 같이 24시간 구동이 되어야 하는 제온의 경우 아이들 시 낮은 전력 소비가 중요합니다.

메모리~ 다다익램~

대부분이 메모리 하면 RAM을 떠올릴 것이다. 메모리를 번역하면 기억 이라는 뜻을 가지고 있다. 전 게시글에서 쓴 CPU 내 레지스터나 캐시도 메모리이고, 보조기억장치인 SSD, HDD, SD 등도 메모리라고 볼 수 있다.

메모리 너는 무엇인가

메모리는 컴퓨터의 중요한 구성 요소로, 데이터를 저장하고 필요할 때 빠르게 불러올 수 있도록 하는 장치입니다. 메모리는 주로 주 기억장치인 RAM과 보조 기억장치인 SSD, HDD 등으로 구분되며 더 나아가 CPU의 레지스터와 캐시도 메모리로 볼 수 있습니다.

RAM ( Random Access Memory )

RAM 특징

RAM은 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이며, 캐시 다음으로 빠른 속도를 자랑합니다. 용도는 실행중인 프로그램이나 데이터를 일시적으로 저장하기 위하여 사용하며, 간혹가다가 조금의 성능 향상을 위하여 램디스크로 활용하는 경우도 있습니다.

RAM 역할

게임이나 웹 브라우저, 문서 편집기 등 실행중인 프로그램이 RAM에 저장됩니다. CPU는 필요한 데이터를 RAM에서 빠르게 불러와 처리할 수 있습니다.
여러 프로그램을 동시에 실행할 때, 각 프로그램의 데이터가 RAM에 저장되어 CPU가 빠르게 전환하며 작업할 수 있습니다. 게임하면서 유튜브 보고 다른작업 하면 메모리가 높아야 하는 이유도 위와 같습니다.

캐시 메모리 ( Cache Memory )

전 게시글에서 다루었으니 간략하게만 적자면, CPU 내부에 있는 초고속 메모리로 RAM보다 더 빠르게 접근할 수 있습니다. CPU가 자주 사용하는 데이터나 명령어를 캐시에 저장합니다.

보조기억장치, 저장장치 ( Storage )

저장장치는 데이터를 영구적으로 저장하는 공간으로 컴퓨터가 꺼지더라도 데이터를 보존할 수 있으며, SSD와 HDD가 가장 많이 사용됩니다. 구형 핸드폰에서는 Micro SD 메모리 카드를 많이 이용했지만 지금은 기본으로 달려 나오는 메모리의 크기가 커서 잘 사용하지 않는 추세입니다.

저장장치의 특징

전원이 꺼져도 데이터가 유지되는 비휘발성 메모리입니다.

SSD

SSD는 M.2 SATA / M SATA / SATA3 SSD 등이 있으며 HDD에 비해 월등히 빠른 읽기/쓰기 속도를 제공합니다. 데이터를 메모리칩에 저장하며, 기계적 움직임이 없어 소음이 없고 빠르고 안정적입니다. 외부적 충격을 가했을 경우 하드는 배드섹터나 헤드 이탈 등의 고장 위험성이 높지만 SSD는 그럴 걱정이 적습니다.(배드셀 제외😰)

HDD

HDD는 SSD에 비해 느리지만 최근에는 많이 빨라졌습니다. SSD보다 느린데도 사용하는 이유는 같은 용량대비 가격이 훨씬 저렴하며 큰 용량을 제공합니다. 다만, 전기적 신호로 메모리에 접근하는 SSD와 달리 디스크가 회전하며 헤드가 움직여 엑세스 하는 방식이기 때문에 느리고 고장 위험성이 SSD에 비해 높습니다.

본론으로 들어가... 메모리 주소 공간에 대해서...

메모리 주소 공간은 컴퓨터에서 데이터를 저장하고 접근할 때 사용하는 메모리 위치들의 범위를 의미합니다. 이론적으로, 프로그램은 가상 메모리 공간을 사용하며, 운영체제와 하드웨어의 메모리 관리 장치인 MMU를 통하여 실제 물리적 메모리에 매핑됩니다.

메모리 주소 공간의 기본 구조

컴퓨터에서 각 데이터는 고유한 메모리 주소를 가지고 있으며, CPU는 해당 주소를 참조하여 데이터를 읽거나 쓰거나 합니다. 주소 공간은 크게 두가지로 나뉩니다.

  • 가상 주소 공간 : 운영 체제와 각 프로그램이 사용하는 주소 공간입니다. 실제 물리적 메모리가 아닌 추상적인 공간입니다.
  • 물리적 주소 공간 : 실제 RAM에 할당된 물리적 메모리 주소입니다.

사진 출처 - https://ddongwon.tistory.com/49

가상 메모리와 페이징

현대 운영체제는 가상 메모리를 사용하여 물리적 메모리보다 더 큰 메모리 공간을 제공할 수 있습니다. 이를 위해 페이징 기법을 사용하며, 가상 메모리 주소를 페이지 단위로 물리적 메모리와 매핑합니다.

페이지와 페이지 테이블

  • 페이지 : 메모리를 일정 크기로 나눈 작은 블록
  • 페이지 테이블 : 각 페이지를 물리적 주소 공간에 매핑하는 테이블로 각 프로그램마다 고유 페이지 테이블이 있습니다.

가상 주소에서 물리적 주소로의 변환 과정

프로그램이 가상 주소를 사용할 때 운영체제와 MMU는 그 주소를 물리적 주소로 변환합니다. 이 과정을 주소 변환이라고 합니다.

  1. 가상 주소 사용
  2. 페이지 테이블 조회
  3. 물리적 주소 생성


사진 출처 - https://ddongwon.tistory.com/49

TLB ( Translation Lookaside Buffer )

주소 변환을 빠르게 처리하기 위하여 CPU 는 TLB 라는 캐시 메모리를 사용합니다. 최근 변환된 가상 주소와 물리적 주소의 매핑 정보를 저장하여 동일한 주소에 대한 요청이 있을 때 페이지 테이블을 다시 조회할 필요 없이 빠르게 변환할 수 있습니다.

  • TLB 미스(TLB Miss): TLB에 변환 정보가 없을 때는 페이지 테이블을 다시 조회하여 주소 변환을 수행해야 합니다.
  • TLB 히트(TLB Hit): TLB에 정보가 있을 경우, 즉시 변환된 물리적 주소를 얻어 처리 속도를 높일 수 있습니다.

페이지 폴트

페이지 폴트는 CPU가 요청한 가상 주소가 물리적 메모리에 존재하지 않을 때 발생하는 현상입니다. 이는 주로 페이지가 디스크에 저장되어 있거나, 아직 할당되지 않았을 때 발생합니다.

  • 소프트 페이지 폴트: 요청한 페이지가 물리적 메모리 외부(예: 디스크)에서 찾을 수 있을 때 발생하며, 해당 페이지를 물리적 메모리에 다시 로드합니다.
  • 하드 페이지 폴트: 메모리 부족으로 인한 페이징 실패나 잘못된 메모리 접근으로 인해 발생하는 오류입니다.

운영 체제는 페이지 폴트가 발생하면 해당 페이지를 물리적 메모리로 가져오고, 다시 프로그램 실행을 이어갈 수 있도록 처리합니다.

정리하자면

메모리 주소 공간은 가상 주소와 물리적 주소 간의 매핑을 통하여 데이터가 저장되고 접근이 가능합니다. 이를 위하여 페이지와 페이지 테이블, TLB, 페이징 기법을 사용하며 운영체제는 이 과정에서 효율적으로 메모리를 관리합니다. 프로그램이 사용하는 가상 주소는 실제 물리적 메모리 주소와 다를 수 있지만, CPU와 MMU를 통하여 이를 빠르게 변환하여 데이터를 처리합니다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글