[Study] 3주차(1)

hyo_d·2023년 4월 11일
0

Study

목록 보기
4/9

혼자 공부하는 컴퓨터 구조+운영체제

CPU 작동 원리

ALU

CPU 내부에서 레지스터와 제어장치로부터 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행하는 장치

  • 플래그 : 연산 결과에 대한 부가 정보
    • 이진수에서 양수와 음수를 구별할 때도 사용됨

제어장치

  • 제어 신호를 내보내고 명령어를 해석하는 부품
  • 제어장치가 받아들이는 정보: 클럭 신호, 명령어, 플래그 값, 제어 신호 등

👉 클럭: 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위

레지스터

  • 프로그램 속 명령어와 데이터가 실행 전후로 저장되는 CPU 내부의 작은 임시 저장 장치
  • 레지스터의 종류
  1. 프로그램 카운터: 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소)

  2. 명령어 레지스터: 해석할 명령어(방금 메모리에서 읽어 들인 명령어)

  3. 메모리 주소 레지스터: 메모리 주소를 저장

  4. 메모리 버퍼 레지스터: 메모리와 주고받을 값(데이터와 명령어)

  5. 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보

  6. 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용

  7. 스택 포인터: 스택의 꼭대기를 가리키는 레지스터(스택이 어디까지 차 있는지에 대한 표시)
    👉 스택 주소 지정 방식: 스택과 스택 포인터를 이용한 주소 지정 방식
    👉 스택: 한쪽 끝이 막혀 있는 통과 같은 저장 공간으로 나중에 저장한 데이터를 가장 먼저 빼내는 데이터관리 방식(후입선출, LIFO; Last In First Out)

  8. 베이스 레지스터
    변위 주소 지정 방식: 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소 얻는 방식


    변위 주소 지정 방식에는
    상대 주소 지정 방식(오퍼랜드+프로그램 카운터), 베이스 레지스터 주소 지정 방식(오퍼랜드+베이스 레지스터) 두가지가 있다.

명령어 사이클

  • 하나의 명령어가 처리되는 주기를 의미
    • 인출 사이클: 메모리의 값을 CPU로 가지고 온다.
    • 실행 사이클: 가져와서 실행
    • 간접 사이클: 메모리 접근이 더 필요한 경우
    • 인터럽트 사이클: 정해진 흐름을 방해하는 신호. CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생

인터럽트

  • 동기 인터럽트(예외): CPU가 예기치 못한 상황을 접했을 때 발생
    • 폴트, 트랩, 중단, 소프트웨어 인터럽트(추후 자세히 다룰 예정)
  • 비동기 인터럽트(하드웨어 인터럽트)
    • 주로 입출력장치에 의해 발생
    • 알림과 같은 역할
    • 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용
    • 입출력 장치는 CPU에 비해 느리며 인터럽트가 없다면 완료 여부를 확인 하기 위해 주기적으로 확인해야 한다.
  • 하드웨어 인터럽트 처리 순서
    • 인터럽트 요청 신호: CPU의 작업을 방해하는 인터럽트에 대한 요청
    • 인터럽트 플래그: 인터럽트 요청 신호를 받아들일지 무시할지를 결정하는 비트
    • 인터럽트 벡터: 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별 정보
    • 인터럽트 서비스 루틴: 인터럽트를 처리하는 프로그램
profile
햇병아리

0개의 댓글