※혼자 공부하는 컴퓨터구조 +운영체제 개인 공부 정리 내용입니다.
※진도는 하단의 혼공단 13기 커리큘럼을 참고해 주세요.
복습
CPU 내부 구성 요소
- 산술논리연산장치 - ALU : Arithmetic Logic Unit
- 레지스터 - Register (CPU내부의 작은 임시 저장 장치)
- 제어장치 - CU : Control Unit
진도
ALU

ALU는 레지스터를 통해 피연산자를 받아들이고,
제어장치에서 수행할 연산을 알려주는 제어 신호를 받아들입니다.
그리고 결괏값과 플래그를 각각의 레지스터에 다시 보냅니다.
플래그
연산 결과에 대한 추가적인 상태 정보
- 부호 플래그 - 플래그가 1 이면 음수, 0 이면 양수
- 제로 플래그 - 플래그가 1 이면 연산 결과가 0임을 의미
- 캐리 플래그 - 플래그가 1 이면 올림수나 빌림수가 발생
- 오버플로우 플래그 - 플래그가 1이면 오버플로우가 발생
- 인터럽트 플래그 - 플래그가 1이면 인터럽트가 가능함을 의미
- 슈퍼바이저 플래그 - 플래그가 1이면 커널 모드로 실행 중임을 의미, 0이면 사용자 모드로 실행 중임
*오버플로우는 연산 결과 값이 레지스터보다 큰 상황 (ex : 3.3333...)
제어장치

제어장치는 클럭 신호에 맞춰 다른 장치에 제어 신호를 보냅니다.
플래그 레지스터 속 플래그 값을 참고하여 제어 신호를 발생하며,
주로 명령어 레지스터에서 받은 명령어를 해석하여 실행하는 제어 신호를 보내거나 데이터 흐름을 제어합니다.
그래서 CPU 내/외부에 제어신호를 보내거나 때론 CPU 내부에서 제어신호를 받기도 합니다.
*클럭은 일정한 주기로 생성되며, CPU의 성능은 클럭 속도에 영향을 받습니다. 속도가 빠를수록 좋음!
레지스터
상용화된 CPU 속 레지스터들은 CPU마다 이름, 크기, 종류가 다양하다.
때문에 많은 CPU가 공통으로 포함하고 있는 8개의 레지스터이고, 역할에 집중할 것.
- 프로그램 카운터 : 명령어 포인터 (명령어 주소)
- 메모리 주소 레지스터 : 메모리 주소
- 메모리 버퍼 레지스터 : 메모리와 주고받을 값(데이터와 명령어)
- 명령어 레지스터 : 해석할 명령어, 메모리에서 읽어 들인 명령어
- 플래그 레지스터 : CPU상태에 대한 부가적인 정보 (플래그)
- 범용 레지스터 : 다양하고 일반적인 상황에서 자유롭게 사용 가능
- 스택 포인터 : 스택 주소 지정 방식에 사용 (스택 위치 = 포인터)
- 베이스 레지스터 : 변위 주소 지정 방식에 사용 (오퍼랜드 필드 값 등)
명령어 사이클
프로그램 카운터 → 메모리 주소 레지스터 → 메모리 주소 →
메모리 주소에 있는 값을 메모리 버퍼 레지스터에 저장 → 프로그램 카운터 증가 →
메모리 버퍼 레지스터에 저장된 값이 명령어 레지스터로 이동
인터럽트

CPU가 수행 중인 작업을 방해하는 신호를 인터럽트 라고 합니다.
인터럽트의 종류는 크게 동기/비동기가 있으며
동기는 예외(exception)라고해서
예외적인 상황이 발생함에 따라 실행 중단 됩니다.
비동기는 하드웨어 인터럽트라도 하며
입출력장치에 의해 발생합니다. (ex: 프린트)
스레드 (실행 흐름의 단위)
소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위 (메모리 연관)
하드웨어적 스레드 : CPU에서 정의된 스레드 (12 논리 프로세서 = 12 스레드)

명령어 파이프라인 (명령어 처리 과정)
인출 (fetch) → 해석 (decode) → 실행 (execute) → 저장 (write back)
파이프라인의 위험
- 데이터 위험 - 데이터 의존성
- 제어 위험 - 분기 등 프로그램 카운터의 갑작스런 변화
- 구조적 위험(자원 위험) - 명령어들이 겹쳐 실행하는 과정에서 발생
비순차적 명령어 처리 (OoOE : out-of-order execution)
일명 합법적 새치기, 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 위험을 예방하는 처리 기법
ISA - Instruction Set Architecture
명령어 집합 또는 명령어 집합 구조는 일종의 CPU 언어로 하드웨어가 소프트웨어를 이해할지에 대한 약속입니다.
현대 ISA는 크게 2가지로 CISC와 RISC가 있습니다.
CISC - Complex Instruction Set Computer
명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용합니다.
적은 수의 명령어으로도 프로그램을 실행시킬 수 있어서 메모리 공간을 절약 가능
복잡/다양성 때문에 실행 시간이 일정하지 않아 파이프라인 구현에 어려움,
대다수의 복잡한 명령어는 빈도수가 낮음.
RISC - Reduced Instruction Set Computer
CISC 개선판.
고정 길이 명령어를 활용.
명령어 파이프라인을 활용, 즉 명령어 길이와 수행 시간이 짧고 규격화
자주 쓰이는 기본적인 명령어를 작고 빠르게 만듬에 집중
기본 숙제
p.125 확인 문제 2번
플래그 레지스터 : 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터
프로그램 카운터 : 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
범용 레지스터 : 데이터와 주소를 모두 저장할 수 있는 레지스터
명령어 레지스터 : 해석할 명령어를 저장하는 레지스터
p.155의 확인 문제 4번
코어(core)
추가 숙제
코어 : 작업을 처리할 수 있는 단위 또는 한 번에 한 작업만 가능 (=싱글 코어)
멀티 코어 : CPU내에 여러 개 코어가 있음, 동시에 여러 작업이 가능
스레드 : 실행 흐름의 단위 또는 하나의 프로세스의 하나의 작업만 순차적으로 처리(=싱글 스레드)
멀티 스레드 : 하나의 프로세스의 여러 개 작업을 병렬처
공부 후기
동영상 강의를 들으면서 겨우겨우 한 느낌입니다. 양이 많네요.🫠 그리고 1주차에 메모리 다루는 것에 대해 어렵다고 느꼈는데 역시나 이번에도 만만치 않았습니다. CPU와 직/간접적으로 일해야 하는 모든 개발자분들께 박수드립니다.👏전 그냥 돈 주고 비싼 CPU 사서 쓸래요.
'Study > 혼공단' 카테고리의 다른 글
| [혼공컴운] 6주차 - 메모리 관리와 파일 시스템 (0) | 2025.02.23 |
|---|---|
| [혼공컴운] 5주차 - 동기화와 교착 상태 (0) | 2025.02.18 |
| [혼공컴운] 4주차 - 운영체제와 프로세스 (0) | 2025.02.18 |
| [혼공컴운] 3주차 - 메모리와 보조기억장치 (0) | 2025.02.02 |
| [혼공컴운] 1주차 - 컴퓨터 구조 (0) | 2025.01.13 |