티스토리 뷰
728x90
CPU
Central Processing Unit
- 명령어의 실행 주체
- 정보를 읽어들이고 해석하고 실행하는 부품
구성요소
- 산술논리연산장치 ALU: 사칙연산, 논리연산 등의 연산 수행. 일종의 계산기.
- 제어장치 CU: 명령어를 해속해 제어 신호라는 전기 신호를 내보내는 장치
- 레지스터: CPU 내부의 작은 임시 저장장치. 여러개 존재. 각기 다른 이름과 역할 가지고있음.

레지스터
CPU 안에 있는 작은 임시 저장장치
대표적인 레지스터 종류
- 프로그램 카운터 : 메모리에서 다음으로 읽어들일 명령어의 주소를 저장 (= 명령어 포인터)
- 명령어 레지스터: 메모리에서 방금 읽어 들인 명령어를 저장
- 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용
- 플래그 레지스터: 연산의 결과 혹은 CPU 상태에 대한 부가정보인 플래그 값을 저장
- 스택 포인터: 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가리키는 특별한 레지스터. 마지막으로 스택에 저장된 데이터의 위치를 가리킴
인터럽트
CPU의 작업을 방해하는 신호
💡 interrupt: 방해하다, 중단시키다
동기 인터럽트: CPU에 의해 발생. 프로그래밍 오류 등 예외적인 상황 (=예외)
- 폴트 fault: 예외 처리 직후 예외가 발생한 명령어부터 실행을 재개하는 예외
- 트랩 trap: 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외
- 중단 abort: CPU가 실행 중인 프로그램을 강제로 중단시킬 수 밖에 없는 심각한 오류 발견 시 발생하는 예외
- 소프트웨어 인터럽트: 시스템 콜이 발생했을 때 발생하는 예외
비동기 인터럽트: 주로 입출력장치에 의해 발생. ‘알림’의 역할

주요 용어
- 인터럽트 요청 신호: 인터럽트 하기 전 CPU에게 인터럽트 가능 여부를 확인하기 위해 입출력장치에서 보내는 신호
- 인터럽트 플래그
- 비동기 인터럽트를 받을지 무시할지 결정하는 플래그
- CPU의 플래그 레지스터에 있음. false인 경우 CPU는 인터럽트 요청이 와도 무시
- 막을 수 없는 인터럽트: 정전, 하드웨어 고장으로 인한 인터럽트 등
- 인터럽트 서비스 루틴
- 인터럽트를 처리하기 위한 프로그램 (=인터럽트 핸들러)
- 어떤 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보로 이루어진 프로그램
- 인터럽트 벡터
- 인터럽트 서비스 루틴을 식별하기 위한 정보
- 인터럽트 서비스 루틴의 시작 주소를 포함하고 있어 CPU가 해당 위치에서 인터럽트 처리 가능
- 백업: CPU가 인터럽트 서비스 루틴을 실행하기 전 현재 프로그램을 재개하기 위해 필요한 모든 내용을 메모리 내 스택에 저장하는 것
CPU 성능 향상을 위한 설계
CPU 클럭(clock)
- 컴퓨터의 부품을 일사분란하게 움직일 수 있게 하는 시간의 단위
- 클럭 속도: 클록이 1초에 몇번 반복되는지 나타냄. 헤르츠(Hz) 단위
- 클럭 속도를 필요 이상으로 높이면 컴퓨터 발열이 심해질 수 있음
멀티코어 멀티스레드
- 코어: CPU 내에서 명령어를 읽어들이고, 해석하고, 실행하는 부품
- 멀티 코어 CPU: 여러 개의 코어를 포함하고 있는 CPU (=멀티코어 프로세서)
- 스레드: 실행 흐름의 단위
- 하드웨어 스레드
- 하나의 코어가 동시에 처리하는 명령어의 단위
- 멀티 스레드 CPU: 하나의 코어로 여러 명령어를 동시에 처리하는 CPU (=멀티 스레드 프로세서)
- 소프트웨어 스레드
- 하나의 프로그램에서 독립적으로 실행되는 단위
- 운영체제에서 관리
- 1코어 1 하드웨어 스레드 환경에서도 소프트웨어 스레드는 N개 스레드로 실행 가능
- ‘동시성’ 구현을 위한 논리적인 실행 단위에 가까움
- 하드웨어 스레드와 소프트웨어 스레드의 차이: 동시성과 병렬성
- 병렬성 parallelism: 물리적으로 동시에 처리하는 성질
- 동시성 concurrency: 동시에 작업을 처리하는 것처럼 보이는 성질
- 하드웨어 스레드


명령어 파이프라이닝
- 명령어 병렬 처리 기법 중 하나
- 명령어는 명령어 인출, 해석, 실행, 결과 저장의 단계가 있음. 여러 명령어를 단계별로 동시에 처리할 수 있음
- 공장의 생산 파이프라인처럼 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
- CPU마다 명령어 집합 유형이 달라짐. CISC (인텔칩), RISC (애플 실리콘칩)
- 파이프라인 위험 pipeline hazard: 파이프라이닝에 실패하여 성능이 향상되지 않는 상황
- 데이터 위험: 명령어 간의 데이터 의존성에 의해 발생
- 제어 위험: 프로그램 카운터의 갑작스러운 변화에 의해 발생
- 구조적 위험: 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등 같은 CPU 부품을 사용하려고 할 때 발생 (= 자원 위험)

GPU
- 최근 GPU는 그래픽 연산 외에도 딥러닝 연산, 가상화폐 채굴 등 다양한 분야의 연산이 가능해짐
- 개별 코어의 성능은 CPU보다 떨어지지만, 수백~수천 개의 코어가 포함되어있어 병렬 처리에 용이함
- 개별 코어 성능은 낮기 때문에 CPU를 GPU로 완전 대체는 불가
- 병렬 처리: 문제를 여러 문제로 쪼개서 각 코어에서 처리하는 방식
- GPU 자체적으로 캐시 메모리와 메모리도 가지고 있음
참고: 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 (https://product.kyobobook.co.kr/detail/S000214014967)
728x90
'CS' 카테고리의 다른 글
| [CS] 보조기억장치, 입출력장치 (0) | 2025.11.26 |
|---|---|
| [CS] 메모리 - RAM, 엔디안, 캐시 (0) | 2025.11.19 |
| [컴퓨터 구조] 문자 인코딩 - ASCII, EUR-KR, 유니코드, Base64 (0) | 2025.11.05 |
| [컴퓨터 구조] 데이터, 명령어, 부동 소수점, 핵심 부품 (0) | 2025.11.02 |
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- kubernetes
- kafka
- devops
- k8s
- phpUnit
- java
- AOP
- JUnit
- springboot
- Infra
- 분산처리
- docker
- Container
- index
- 캐시
- database
- NoSQL
- 몽고디비
- mongoDB
- 샤딩
- MySQL
- 대규모 데이터 처리
- 쿠버네티스
- Spring
- php
- laravel
- 라라벨
- CS
- 카프카
- 스프링
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함