본문 바로가기

전공/컴퓨터 구조

CPU) ALU와 제어장치, 레지스터, 명령어 사이클과 인터럽트

728x90
반응형

 

ALU: 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아드림 

제어장치

 

레지스터: CPU 내부의 작은 임시저장장치

  • 프로그램 카운터: 메모리에서 가져올 명령어의 주소 (메모리에서 읽어 들일 명령어의 주소)
  • 명령어 레지스터: 해석할 명령어 (방금 메모리에서 읽어 들인 명령어)
  • 메모리 주소 레지스터: 메모리의 주소 (CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터)
  • 메모리 버퍼 레지스터: 메모리와 주고받을 값 (데이터와 명령어)
  • 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보
  • 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용
  • 스택 포인터: 스택과 스택 포인터를 이용한 주소 지정 방식
  • 베이스 레지스터: 기준 주소 저장
  • 주소 지정 방식
    • 스택 주소 지정 방식
    • 변위 주소 지정 방식: 오퍼랜드 필드의 값과 특정 레지스터의 값을 더해서 유호 주소를 얻음
    • 상대 주소 지정 방식: 오퍼랜드 필드의 값과 프로그램 카운터의 값을 더하여 유효 주소 얻음
    • 베이스 레지스터 주소 지정 방식: 오퍼랜드 필드의 값과 베이스 레지스터의 값을 더하여 유효 주소를 얻음

명령어 사이클: 프로그램 속 명령어들은 일정한 주기가 반복되며 실행

  • 인출: 메모리에서 CPU로 가져온다
  • 실행 사이클: CPU에서 실행
  • 간접 사이클: 명령어를 가져와도 좀 더 탐색이 필요한 경우 (오퍼랜드에 주소가 있는 경우)

 

인터럽트(interrupt): CPU가 더 우선해야 할 다른 작업이 생겼을 때

  • 동기 인터럽트 (예외): CPU가 예기치 못한 상황을 접했을 때
    • 폴트
    • 트랩
    • 중단
    • 소프트웨이 인터럽트
  • 비동기 인터럽트 (하드웨어 인터럽트): 주로 입출력장치
    • 프린터가 작업 하는 동안 CPU는 다른 작업을 함. 프린터가 작업을 다 하면 인터럽트 함.
    • 인터럽트 처리 순서
      1. 입력장치가 CPU에게 인터럽트 요청 신호를 보냄
      2. 실행 사이클이 끝난 CPU는 인터럽트 확인
      3. CPU가 확인하고 인터럽트 플래그를 통해 현재 받아드릴 수 있는지 확인
      4. 받아들일 수 있으면 CPU는 현재까지 작업을 백업
      5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴 실행
      6. 이 서비스 루틴이 끝나면 백업 데이터르 가져와서 이어서 실행

 

동시다발적인 인터럽트: 우선순위를 반영한 인터럽트

  • PIC (Programmable Interrupt Controller
    1. 여러 장치 컨트롤러에 연결되어
    2. 장치 컨트롤러의 하드웨어 인터럽트의 우선순위를 판단한 뒤
    3. CPU에게 지금 처리해야 하는 인터럽트가 무엇인지 판단하는 하드웨어

MDA (Direct Memory Accesss): CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 기능

  1. CPU는 DMA 컨트롤러에 입출력 작업을 명령
  2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행
  3. 입출력 작업이 끝나면 DMA 컨트롤러는 인터럽트를 통해 CPU에 작업이 끝났음을 알림
728x90
반응형