Post

[Computer Architecture] CPU

3줄 요약
CPU는 연산, 제어, 저장 기능을 맡는 컴퓨터의 핵심 부품
CPU는 ALU, 레지스터, 제어장치로 구성
인터럽트는 외부 요청을 우선 처리하기 위한 CPU의 반응 메커니즘

💻 컴퓨터 구조 & 운영체제 시리즈

이 시리즈는 『혼자 공부하는 컴퓨터 구조+운영체제』 (강민철 저)
+ 인프런 강의를 기반으로 개인적으로 복습 및 정리한 기록입니다.


🧠 CPU의 구성

🔸 ALU (Arithmetic Logic Unit, 산술 논리 연산 장치)

  • 입력(받아들이는 정보)
    • 제어장치 → 제어 신호 (수행할 연산)
    • 레지스터 → 피연산자
  • 출력(내보내는 정보)
    • 연산 결과 (숫자, 문자, 주소 등)
    • 플래그 → 플래그 레지스터에 저장 (연산 부가 정보)

💡 플래그 종류

플래그설명
부호 플래그연산 결과의 부호
제로 플래그결과가 0인지 여부
캐리 플래그올림수/빌림수 발생 여부
오버플로우 플래그오버플로우 발생 여부
인터럽트 플래그인터럽트 허용 여부
슈퍼바이저 플래그커널/사용자 모드 구분

🔸 제어장치 (Control Unit)

  • 입력
    • 클럭(clock) 신호 (시간 단위)
    • 명령어 레지스터 → 실행할 명령어
    • 플래그 레지스터 -> 플래그
    • 제어 신호
  • 출력
    • 제어 신호 → CPU 내부(ALU, 레지스터)
    • 제어 신호 → CPU 외부(메모리, I/O 장치)

🔸 레지스터

CPU 내부에 있는 초고속 임시 저장 장치
명령어와 데이터를 실행 전후로 저장
종류에 따라 역할이 다름

  1. 프로그램 카운터 (Program Counter)
    • 다음에 가져올 명령어의 메모리 주소 저장
    • 명령어 실행 순서 제어
  2. 명령어 레지스터 (Instruction Register)
    • 메모리에서 읽어온 명령어 저장
    • 제어장치에서 명령어 해석에 사용
  3. 메모리 주소 레지스터 (Memory Address Register)
    • 접근할 메모리 주소 저장
    • 명령어 실행 시 참조 위치 지정
  4. 메모리 버퍼 레지스터 (Memory Buffer Register)
    • 메모리와 주고받을 값 임시 저장
    • 데이터 또는 명령어 전달에 사용
  5. 플래그 레지스터 (Flag Register)
    • 연산 결과나 CPU 상태에 대한 정보 저장
    • 부호, 제로, 캐리, 오버플로우 등 플래그 포함
  6. 범용 레지스터 (General-purpose Register)
    • 다양한 상황에서 자유롭게 사용
    • 연산 중간 결과나 임시 데이터 저장
  7. 스택 포인터 (Stack Pointer)
    • 스택의 꼭대기 주소 저장
    • 스택 주소 지정 방식에서 사용
    • 함수 호출 시 지역 변수, 반환 주소 저장
  8. 베이스 레지스터 (Base Register)
    • 주소 지정에 사용
    • 변위 주소 지정 방식에 사용: 오퍼랜드 필드 값과 특정 레지스터 값을 더하여 유효한 주소 얻기
    • 프로그램의 시작 주소 등 저장ㄴ

🔁 명령어 사이클

  • 인출(Fetch) → 가장 먼저 명령어를 메모리에서 CPU로 가져옴
  • 실행(Execute) → 명령어를 해석 및 실행
  • 반복적으로 인출 → 실행 사이클을 수행
  • 경우에 따라 ‘간접’, ‘인터럽트’ 사이클 포함 가능
  • 인출 - 실행 - 인출 - 실행 … (명령어 사이클의 일부)
  • 또는 인출 - 간접 - 실행 - 인출 - 간접 - 실행 …
  • 또는 인출 - 간접 -실행 - 인터럽트 - 인출 - ….

⚡ 인터럽트 (Interrupt)

CPU가 현재 작업을 잠시 멈추고 더 중요한 요청을 처리하는 메커니즘

🔹 인터럽트 종류

구분설명
동기 인터럽트소프트웨어나 CPU 내부 예외 (ex. 0으로 나누기, 시스템 콜)
비동기 인터럽트하드웨어로부터 발생 (ex. 입출력 완료, 타이머)

🔸 하드웨어 인터럽트 처리 흐름

  1. I/O 장치 → CPU에 인터럽트 요청 신호 전송
  2. CPU는 명령어 인출 전 인터럽트 여부 확인
  3. 인터럽트 플래그를 확인하여 허용 여부 결정
  4. 수락 시, 현재 작업 상태를 저장 (백업)
  5. 인터럽트 벡터를 참조해 ISR 실행
  6. ISR 종료 후 백업한 작업 복구, 원래 작업 재개

🧩 인터럽트 서비스 루틴 (ISR): 인터럽트 발생 시 실행되는 프로그램
🧭 인터럽트 벡터: ISR 주소를 저장한 테이블


✅ 마무리 정리

CPU는 ALU, 제어장치, 다양한 레지스터로 구성되어 있으며,
명령어 사이클과 인터럽트를 통해 복잡한 연산과 외부 요청까지 유기적으로 처리합니다.
이해해두면 운영체제, 컴파일러, 시스템 설계에서도 강력한 기반이 돼요.

✨ 다음 편에서는 CPU 심화 개념을 정리할 예정이에요!


📚 참고 자료


읽어주셔서 감사합니다 🙌
내용이 도움이 되었거나, 틀린 부분이 있다면 댓글이나 GitHub Issue로 알려주세요 😊

This post is licensed under CC BY 4.0 by the author.