코딩자율학습단/컴퓨터구조와 운영체제

[컴구&OS] 3장. CPU

binary는 호남선 2025. 7. 6. 14:00

Preview

  • CPU 역할
  • ALU
  • CU
  • Register
  • 캐시 메모리
  • CPU 성능
  • 명령어 사이클
  • 명령어 처리 방식
  • 인터럽트
  • 병렬 처리 기법

 

본 게시물은 기술노트알렉, 「코딩 자율학습 컴퓨터 구조와 운영체제」, 길벗출판사, 2025 를 학습하고 작성되었습니다.


CPU 역할

- 명령어 실행, 연산 처리, 제어 신호 처리, 데이터 이동 및 저장, 프로세스 관리 및 멀티태스킹

ALU

- CPU의 핵심 구성 요소로 연산을 수행

ALU 구성 요소

  • 연산 선택기: 어떤 연산 수행할지 결정
  • 산술 연산 회로: 사칙 연산 처리
  • 논리 연산 회로: 논리 연산 처리
  • 비교 회로: 데이터 크기 비교
  • 시프트 회로: 비트 연산, 데이터 압축이나 암호화에 활용
  • 상태 플래그: 연산 결과에 대한 추가 정보 제공
    제로 플래그(zero flag): 연산 결과가 0일 때 설정
    부호 플래그(sign flag): 연산 결과가 음수일 때 설정
    캐리 플래그(carry flag): 덧셈 연산에서 자리 올림 발생하면 설정
    오버플로 플래그(overflow flag): 부호 있는 연산에서 오버플로 발생하면 설정

CU

- 명령어 해석하고 컴퓨터 구성 요소가 올바르게 작동하도록 조정

CU 구성 요소

  • 명렁어 해독기(instruction decorder): IR에 저장된 명령어 해석해 어떤 작업 수행할지 결정
  • 제어 신호 생성기(control signal generator): CPU 내부 구성 요소와 메모리, 입출력 장치로 보낼 제어 신호 생성
  • 명령어 사이클 제어기(instruction cycle control): 명령어 올바른 순서로 처리하도록 조정

Register

- CPU 내부에 있는 작은 크기의 초고속 기억 장치

Register 구조

  • 입력 회로: 데이터를 레지스터에 저장
  • 출력 회로: 레지스터에 저장된 데이터 읽어 CPU 다른 구성 요소로 전달
  • 제어 회로: 레지스터의 데이터 읽기, 쓰기 동작 조정

Register 종류

  • 일반 목적 레지스터: 연산 수행에 필요한 데이터 임시로 저장
    • 명령어 레지스터(IR, Instruction Register): 메모리에서 가져온 명령어 임시 저장
    • 프로그램 카운터(PC, Program Counter): 다음에 실행할 명령어의 메모리 주소 저장
    • 누산기(AC, Accumulator): 산술 연산 및 논리 연산의 결과를 임시로 저장
    • 메모리 주소 레지스터(MAR, Memory Address Register): 메모리에서 데이터 참조할 때 사용할 메모리 주소 저장
    • 메모리 데이터 레지스터(MDR, Memory Data Register): 메모리에서 읽어온 데이터 또는 저장할 데이터 임시 저장
    • 스택 포인터(SP, Stack Pointer): 스택 최상단 위치 가리키며, 함수 호출 및 반환 시 사용
    • 상태 레지스터(status register): ALU에서 수행한 연산 결과에 따른 상태 정보 저장특수 목적 레지스터: CPU 제어나 시스템 운영 등 특정 기능 수행하는데 사용

캐시 메모리

  • CPU 내부 또는 가까이 있는 매우 빠른 속도의 기억 장치
  • CPU와 RAM 사이 중간 역할, 자주 사용하는 데이터 임시 저장해 처리 속도 높임
  • L1, L2, L3 계층 구조로 숫자가 작을수록 CPU에 가깝고(빠르고) 용량이 작음

CPU 성능

  • 클럭 사이클(clock cycle): 클럭 신호의 한 주기, CPU가 명령어 처리하는 데 걸리는 최소 시간 단위
  • 클럭 속도(clock speed): CPU가 초당 수행할 수 있는 클럭 사이클 수, 보통 기가헤르츠(GHz) 단위로 표현, 높을수록 CPU가 단시간에 많은 연산 수행, 클럭 사이클과 반비례 관계
  • IPC(Instructions Per Cycle): CPU가 클럭 사이클당 처리 가능한 명령어 개수, 높을수록 같은 클럭 속도에서도 더 많은 명령어 처리
  • 명령어 처리량: CPU가 단위 시간(1초) 동안 처리할 수 있는 명령어 개수
  • 클럭 사이클 = 1 /  클럭 속도(GHz)
  • CPU 처리 속도 = 클럭 속도 x 명령어 처리량
  • 명령어 처리량 = 클럭 속도 x IPC

명령어 사이클

  1. 명령어 인출: 메모리에서 명령어 로드
  2. 명령어 해석: 연산 코드와 오퍼랜드 분석해 실행할 작업 결정
  3. 오퍼랜드 인출: 작업에 필요한 데이터를 메모리나 레지스터에서 로드
  4. 명령어 실행: ALU 등 하드웨어 사용해 작업 수행
  5. 결과 저장: 연산 결과를 메모리 또는 레지스터에 저장

명령어 처리 방식

  • CPU 아키텍처: 컴퓨터 시스템이 명령어 처리하고 실행하는 방식 정의하는 설계 개념
CISC RISC
Complex Instruction Set Computer Reduced Instruction Set Computer
복합 명령어, 가변 길이 명령어 사용 단순 명령어, 고정 길이 명령어 사용
소프트웨어에 부담 적고 높은 생산성 소프트웨어 부담 크고 호환성 낮음
설계 어렵고 속도 느림 구조 단순하고 속도 빠름

인터럽트

- CPU가 현재 작업 중단하고 하드웨어 또는 소프트웨어 요청 우선 처리하는 메커니즘

인터럽트 종류

  • 소프트웨어 인터럽트: 프로그램 코드나 시스템 요청에서 발생
  • 하드웨어 인터럽트: 키보드, 마우스 등 외부 장치에서 발생

인터럽트 처리 과정

  1. 인터럽트 발생: 하드웨어 또는 소프트웨어가 CPU에 인터럽트 요청
  2. 인터럽트 요청 확인: CPU가 인터럽트 플래그 주기적으로 확인
  3. 컨텍스트 저장: 인터럽트 처리 완료하고 원래 작업 다시 실행하기 위해 컨텍스트(프로그램 실행 상태, PC, SP, Register 값 등의 정보) 저장
  4. 인터럽트 우선순위 확인: 긴급 시스템 오류 같은 중요한 인터럽트 우선 처리, 덜 중요한 인터럽트 대기
  5. 인터럽트 서비스 루틴 실행: 인터럽트 벡터 테이블(각 인터럽트 요청과 인터럽트 서비스 루틴 주소 매핑한 테이블) 참조해 적절한 인터럽트 서비스 루틴 실행
  6. 인터럽트 처리 완료: 인터럽트 플래그 초기화하여 새로운 인터럽트 요청 받을 준비
  7. 컨텍스트 복원 및 작업 재개: 컨텍스트 복원해 원래 작업으로 돌아감

병렬 처리 기법

  • 여러 명령어를 동시 또는 겹쳐 실행해 처리 속도 높이는 기술
  • 파이프라이닝: 명령어 처리 과정을 여러 단계로 나눠 병렬로 처리해 CPU 처리량 증가
  • 슈퍼스칼라: CPU에 실행 유닛(ALU, FPU, load/store Unit) 추가해 명령어 병렬로 처리
  • 슈퍼 파이프라이닝: 기존 파이프라이닝 단계 더 세분화해 더 많은 명령어 동시 처리
  • VLIW: 긴 명령어 워드에 여러 독립적인 명령어 포함해 병렬 처리 효율 극대화