241010 CS세션 - CPU와 아이들 (개념 및 세부 장치)

LIHA·2024년 10월 9일
0

내일배움캠프

목록 보기
78/117
post-thumbnail

CPU

컴퓨터 내부의 전반적인 풍경. CPU는 크게 제어장치(CU), 연산장치(ALU), 레지스터 세 파트로 구분할 수 있다.
ALU가 뭐지? 🤔
-> Arithmetic Logic Unit. 산술 연산 장치.

CPU는 대강 이런 구조로 되어있다. 칩 하나 딸랑 있는 게 아니구나.

코어가 많으면 좋다고는 들었는데, 그래서 CPU가 정확히 뭔가요

Central Processing Unit의 약자.
CPU는 컴퓨터의 명령을 해석하고 실행하는 핵심적 물리 구성요소.

-> 흔히 '두뇌'에 비유되며, 기억, 해석, 연산, 제어라는 4대 기능을 관할하는 장치이다.
-> 크게 제어 유닛, 연산 유닛, 레지스터로 구분.
-> 프로세서의 일부이다. 장치 관리자를 보면 알 수 있음!

의문 - 코어 = CPU가 아닌가요? 다른것도 있어요? 🤔

위 구조를 참고하자.

CPU는 프로세서와 메모리 유닛으로 구분된다.
-> 이중 제어장치(CU)와 연산장치(ALU)가 프로세서에 해당하고,
-> 주기억장치(ROM, RAM) + 캐시메모리가 메모리 유닛에 해당한다.

코어? 🤔

  • 물리적 계산을 담당하는 '코어'라는 연산회로 유닛을 가지고 있다. 조립컴퓨터를 구매할 때 4코어 8코어 하는 게 바로 이것.

-> CPU가 사장이라면 코어는 고용한 직원 수.
-> 요새는 1 CPU당 여러 코어를 가질 수 있어 코어가 3개 이상인 경우 멀티코어 프로세스 라고 한다. (2개까지는 듀얼코어)
-> i3까지는 듀얼코어고 i5부터 쿼드코어라고 하니까 난 코어가 네개구나.

스레드? 🤔

  • 하드웨어에서 스레드는 코어가 할 수 있는 최소단위의 일, 혹은 그 일을 수행하는 도구를 의미한다.

-> 코어는 기본적으로 스레드 1개를 가지고 있다.
-> 하이퍼스레딩 기술의 도입으로 2개 이상의 스레드를 지원할 수 있다. 천수관음처럼 한 코어가 여러 일을 할 수 있는 것.

세부장치

캐시메모리? 캐시 + 메모리 인가요?

(진짜로 CPU 옆에 있구나)

  • CPU 캐시는 프로세서 상에 존재하는 고속 메모리. 용도는?🤔

-> CPU가 자주 사용할만한 데이터를 메인 메모리에서 꺼내와 복사, 저장해놓는 임시 저장소.
-> CPU 내부나 바로 옆에 존재하는 작은 메모리 칩.
(L1이 CPU 내부에, L2는 내부 혹은 외부, L3는 외부)
-> 고속 처리장치인 CPU와 주기억장치(ROM, RAM) 사이의 속도 차이를 완화시키기 위한 고속 버퍼(임시) 메모리이다.

잠깐, 속도 차이? 무슨 속도 차이? RAM도 빠르지 않나? 🤔

-> CPU 돌아가는 속도에 비하면 RAM은 수뇌부 안에서는 제일 느리다.

의문 - 그렇다면 캐시는 뭔가요?

꼭 CPU 캐시가 아니더라도 캐시는 클립보드 같은 느낌으로 자주 사용하는 데이터를 미리 복사해놓는 임시 저장소이다.
-> DNS 캐시에서도 공부했던것처럼, 원본에 접근하는 시간을 절약하기 위해 사용한다.
-> 즉, 데이터 검색 속도를 높이기 위한 것!

CPU캐시 동작과정

  1. CPU가 메모리에 데이터를 요청한다.
  2. CPU가 메인 메모리에 접근하기 전에, 필요로 하는 데이터가 CPU 캐시에 존재하는지 확인한다.
  3. 있으면(Cache Hit) 캐시에 접근해 데이터를 가져오고,
  4. 없으면(Cache miss) 메인 메모리에 접근해 데이터를 가져온다.

-> 이와 관련한 CPU캐시(캐시메모리)의 작동원리가, CPU가 자주 쓸법한 데이터를 기도메타로 뽑아 메모리 영역에 올려놓는 것 이기 때문에 CPU캐시에 원하는 데이터가 없을 수도 있다.
-> 그래서 이와 관련해서 캐시메모리의 적중률 을 보는 개념이 있다.
-> 원하는 데이터가 캐시에 있으면 이걸 맞추네 하고 Cache hit, 없으면 까비요 하고 Cache miss가 되는 것.


241017 수업 내용 보충

인터럽트

CPU는 자기 일 하기도 바쁜데 훼꾸가 들어와 - 인터럽트

동기 인터럽트는 일반적으로 예외 라고 불린다. NPE 같은 익셉션들이 동기 인터럽트

입출력 장치에 의한 비동기 인터럽트는 일종의 알림 역할을 한다.

인터럽트가 들어와도 대응할 수 있게 - ISR 이라는 게 있다

CPU가 인터럽트 요청을 받아들였을 때 실행하는 프로그램이다. 그래서 인터럽트 핸들러 라고도 한다.
인터럽트 서비스 루틴은 다양한유형의 인터럽트 유형에 대응하는 방법을 정의한다. 마우스가 부르면 이렇게, 키보드가 부르면 저렇게... 라는 것이 명시되어 있다.

이런걸 구분하고 올바르게 처리하기 위해 인터럽트 벡터 라는 걸 사용한다. 요건 아직은 몰라도 된다.
인출 - 간접 - 실행 사이클을 도는 와중에, 실행이 끝나고 나면 인터럽트를 확인하는 인터럽트 사이클을 돈다. (홀 주문 다 쳐내고 나면 배민 들어왔는지 보는 느낌. 물론 요새는 배달이 메인이긴 하지만)

스레드도 하드웨어 스레드와 소프트웨어 스레드가 있어용

하드웨어적 스레드는 하나의 코어가 동시에 처리할 수 있는 명령어의 수

소프트웨어적 스레드는 하나의 프로그램에서 독립적으로 실행되는 단위
프로그래밍 언어나 운영체제 학습 시 접하는 스레드는 보통 소프트웨어적으로 정의되는 스레드

스레드는 매우 빠르게 전환하면서 여러 일을 좌라라락 처리한다. 이걸 컨텍스트 스위칭 이라고 한다. 이거 아마 IOCP 공부하면서 배웠을 것.

위 내용을 기반으로 내 컴퓨터의 스펙을 알아보자

언제적 4690인지. 우리 영감님 이제 보내줄 때가 되었는데. (??)

내 컴퓨터는 4코어에 총 스레드 수도 4니, 1코어 1스레드인 셈. 쿼드코어이긴 한데 하이퍼 스레드는 아니었다.

격하지만 찰진 비유

아무리 봐도 이 짤을 이길 설명이 떠오르지 않는다.

출처

참고 블로그1
참고 블로그2
참고 블로그3
참고 블로그4
f-Lab

profile
갑자기 왜 춤춰?

0개의 댓글