CPU

2025. 10. 20. 16:43·CS/컴퓨터구조

CPU 구성 요소

  • ALU (산술논리연산장치): 연산을 수행하는 장치 (계산을 담당하는 회로)
  • 제어 장치: 명령어를 해석하고 제어 신호를 내보내는 장치
  • 레지스터(들): 명령어 처리 전후로 값을 임시 저장하는 장치
    → CPU마다 레지스터의 이름, 개수 달라질 수 있음.

플래그 레지스터

부호 플래그 연산한 결과의 부호를 나타낸다.  
제로 플래그 연산 결과가 0인지 여부를 나타낸다.
캐리 플래그 연산 결과 올림수나 빌림수가 발생했는지 여부를 나타낸다.
오버플로우 플래그 오버플로우가 발생했는지 여부를 나타낸다.
인터럽트 플래그 인터럽트가 가능한지 여부를 나타낸다.
슈퍼바이저 플래그 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지를 나타냄.

 

제어 장치

 

레지스터

# 대부분의 CPU가 기본적으로 갖고 있는 레지스터

프로그램 카운터 메모리에서 가져올 명령어 주소 (다음으로 가져올 명령어 주소)
*JUMP, 인터럽트 경우를 제외하고, 프로그램 카운터 1씩 증가시키면서 순차적으로 실행함.
명령어레지스터  해석할 명령어 (메모리에서 읽어들인 주소)
메모리 주소 레지스터 메모리의 주소 (읽어들일 주소 값)
메모리 버퍼 레지스터 메모리와 주고받을 명령어와 데이터
플래그 레지스터 연산 결과에 대한 부가 정보 저장
범용 레지스터 범용적으로 사용 가능한 레지스터 (여러개 있음) 
스택 포인터 스택 주소 지정 방식에서 사용되는, '스택의 꼭대기'를 가리키는 레지스터
베이스 레지스터 변위 주소 지정 방식에서 사용되는, '떨어진 거리'를 가리키는 레지스터.

 

 

명령어 사이클과 인터럽트

  • 메모리에서 명령어를 가져오고(=인출하고), 실행하고. 이 사이클을 반복함.
    *인출 사이클 *실행 사이클 을 반복함

인터럽트

*Interrupt - Exception / Fault

  • 동기 인터럽트 (예외, Exception)
    - 주로 CPU에 의해 발생
    - 명령어 처리 도중 비정상적인 상황에 마주했을 경우 발생
  • 비동기 인터럽트 (하드웨어 인터럽트)
    - 주로 입출력장치에 의해 발생
    - 세탁기 완료 알림, 전자레인지 조리 완료 알림과 같은 '알림' 역할 수행
하드웨어 인터럽트 처리 순서
1. 입출력장치는 CPU에게 인터럽트 요청 신호를 보냄
2. CPU는 실행 사이클 이후 인출 전 인터럽트 여부 확인
3. CPU는 인터럽트 요청 확인 후, 인터럽트 플래그를 통해 인터럽트 수용 여부 확인
4. 인터럽트가 가능하다면 지금까지의 작업 백업
5. 인터럽트 벡터를 참고하여 인터럽트 서비스 루틴(인터럽트 핸들러 실행)
6. 인터럽트 서비스 루틴 실행 후 백업한 작업 복구, 실행 재개

 

 

멀티 코어와 멀티 프로세서

  • 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다.
  • 최신 CPU는 GHz 단위 
  • 오버클럭킹(BIOS에서 설정가능)

코어와 멀티 코어

코어: 명령어를 인출하고, 해석하고, 실행하는 CPU 내 부품

멀티 코어 CPU

스레드와 멀티스레드

하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위 

소프트웨어 스레드: 하나의 프로그램을 독립적으로 실행하는 단위

 

*1스레드 CPU 안에서도 여러 소프트웨어 스레드를 실행할 수 있음 - 이부분은 시스템 프로그래밍에서.

 

CPU 스레드

* 1코어 1스레드: 테란

* 1코어 3스레드: 저그

 

 

명령어 병렬 처리 - 파이프라이닝

* 명령어 파이프라이닝

하나의 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 명령어 저장

*이 각각의 단계들은 서로 겹치지만 않으면 한꺼번에 실행할 수 있다.

명령어 파이프라이닝 적용 예시

 

* 명령어 파이프라이닝에 실패하는 시나리오: 파이프라인 위험(pipeline hazard)

 

1. 데이터 위험(data hazard) - 명령어 간 의존성에 의해 발생

    ① 데이터가 쓰여진 직후 그 데이터를 읽어들이는 경우 (RAW)

    ② 데이터를 쓴 직후 그 데이터에 새 내용을 쓰는 경우(WAW)

    ③ 데이터를 읽어들인 직후 그 데이터에 새 내용을 쓰는 경우(WAR)

 

2. 제어 위험(control hazard) - 프로그램 카운터의 갑작스러운 변화에 의해 발생

    

3. 구조적 위험(structural hazard) - 서로 다른 명령어가 같은 자원을 사용하려 할 경우 발생

 

파이프라이닝을 십분 활용하기 위한 CPU 구조

*CISC: Complex Instuction Set Computer (Intel x86 CPU)

    - 엄청 다양한 명령어 지원함.

    - 일정하지 않은 명령어 클록수 때문에 명령어 파이프라이닝에 불리하다

CISC 명령어 파이프라인

 

*RISC: Reduced Instruction Set Computer (ARM CPU)

    - 짧고 규격화된 명령어 → 명령어 파이프라이닝에 유리

    - 명령어 개수가 적어서 CISC에 비해 컴파일했을때 명령어가 엄청 길어짐.

    - 메모리 접근을 최소화 하면서 엄청 빨라짐 (레지스터 활용, load-store 구조)

    - 컴파일러의 역할이 중요함.

RISC 명령어 파이프라인

 

CISC RISC
복잡하고 다양한 명령어 단순하고 적은 명령어
형태와 크기가 다양한 명령어 짧고 규격화된 명령어
다양한 주소 지정 방식 메모리 접근을 단순화, 최소화
프로그램을 이루는 명령어의 수 적음 프로그램을 이루는 명령어의 수 많음
여러 클록에 걸쳐 명령어 수행 한 클록 내외로 명령어 수행
파이프라이닝하기 어려움 파이프라이닝하기 용이함

 

비순차적 명령어 처리

명령어 파이프라인의 성능을 더 더 높일 수 있는 방법

 

*의존 관계가 없는 명령어를 순차적으로 처리하지 않는 방법

    → 파이프라인 위험 우회

 

1→2 →3 →4 →5 →6 실행 (파이프라이닝 실패)

순차적 명령어 처리

 

1 →2 →4 →5 →6 →3 실행 (파이프라이닝 성공)

비순차적 명령어 처리

 

CPU 자체에 의존관계가 있는 지 없는 지 판단하는 기능이 필요함 (애플이 이걸 잘해서 성능이 좋음)

'CS > 컴퓨터구조' 카테고리의 다른 글

GPU  (0) 2025.10.21
보조기억장치와 입출력장치  (0) 2025.10.21
메인 메모리와 캐시 메모리  (0) 2025.10.21
데이터  (0) 2025.10.20
명령어  (0) 2025.10.20
'CS/컴퓨터구조' 카테고리의 다른 글
  • 보조기억장치와 입출력장치
  • 메인 메모리와 캐시 메모리
  • 데이터
  • 명령어
Yun Lab.
Yun Lab.
Yun Lab.
  • Yun Lab.
    윤랩
    Yun Lab.
  • 글쓰기 방명록 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • CS (13)
        • 컴퓨터구조 (6)
        • 운영체제 (7)
        • 네트워크 (0)
        • 시스템 프로그래밍 (0)
        • 데이터베이스 (0)
      • Git (0)
      • AI Study (6)
        • LLM (0)
        • Machine Learning (6)
      • 자격증 (2)
        • AICE (1)
        • 리눅스마스터 (1)
      • 논문리뷰 (4)
        • NeurIPS (0)
        • ICLR (1)
        • ICML (1)
        • 기타 (2)
      • 코딩테스트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서포트벡터머신
    도커
    쿠버네티스
    LLM
    운영체제
    리눅스마스터
    프로세스와 스레드
    머신러닝
    2025ICML
    교착상태
    Machine Learning
    ICML
    의사결정나무
    디시전트리
    ICLR2025
    multi-agent
    K-최근접이웃
    ML
    SVM
    명렁어
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Yun Lab.
CPU
상단으로

티스토리툴바