[컴퓨터 구조] CPU
이 글은 패스트캠퍼스의 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online.를 보고 공부한 내용을 정리한 글입니다.
CPU
CPU는 컴퓨터 부품에 있어서 핵심적인 요소이다.
이러한 CPU내부는 복잡하게 이루어져 있지만 핵심 구성요소를 세 가지 말할 수 있다.
ALU (산술 논리 연산장치)
: 연산을 수행하는 장치(계산을 담당하는 회로)제어 장치
:명령어를 해석
하고제어신호를 내보
내는 장치레지스터
: 명령어 처리 전후로값을 임시 저장
하는 장치
ALU
ALU는 연산을 수행하는데 그 과정은 다음과 같다.
- 레지스터로부터
피연산자(연산의 대상)
을 받아들이고
제어장치로부터제어신호(연산할 작업)
를 받아들인다 - 연산의
결과
를 레지스터, 플래그 레지스터(결과의 부가정보를 저장)에저장
한다
플래그 레지스터
플레그 레지스터에 담기는 대표적인 부가 정보들은 다음과 같다.
- 부호 플래그 : 연산의 결과의 부호를 나타냄
- 제로 플래그 : 연산 결과가 0인지 아닌지 나타냄
- 캐리 플래그 : 올림수나 빌림수가 발생했는지 여부를 나타냄
- 오버플로우 플래그 : 오버플로우가 발생했는지 여부를 나타냄
- 인터럽트 플래그 : 인터럽트가 가능한지 여부를 나타냄
- 슈퍼바이저 플래그 : 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지 나타냄
제어장치
플래그 레지스터를 참고하며 명령어를 해석하고 제어신호를 여러 장치에 보냄
클럭 신호
부품을 일사분란하게 움직일 수 있게 하는 시간 단위
CPU는 클럭 신호에 따라 명령어 사이클에 맞춰 명령어들을 실행함.
레지스터
프로그램의 실행 전후로 값을 임시 저장하는 작은 저장장치
대표적인 8가지 레지스터 종류
- 프로그램 카운터 : 메모리에서
다음으로 가져올 명령어 주소
를 저장( 메모리에서 읽어들일 주소) - 명령어 레지스터 : 해석할 명령어를 저장 (메모리에서 읽어들인 주소)
- 메모리 주소 레지스터 :
메모리의 주소
를 저장 (읽어들일 주소 값) - 메모리 버퍼 레지스터 : 메모리와 주고 받을
명령어와 데이터
- 플래그 레지스터 : 연산 결과에 대한 부가 정보 저장
- 범용 레지스터 : 범용적으로 사용 가능한 레지스터(다양한 용도로 쓰임)
- 스택 포인터 : 스택 주조 지정 방식에서 사용되는,
스택의 꼭대기
를 가리키는 레지스터
즉 스택에서가장 먼저 쓰일 값(맨 꼭대기)
을 저장함 - 베이스 레지스터 : 변위 주소 지정 방식에서 사용되는,
떨어진 거리
를 가리키는 레지스터
프로그램 카운터
특별한 경우를 제외하고 1씩 증가되며 메모리의 프로그램이 순차적으로 실행
됨.
특별한 경우는 점프 또는 인터럽트 등이 있음
CPU가 명령어를 순차적으로 처리하는 양상
가장 기본적인 단계로 CPU는 메모리에서 명령어를 가져오는
인출
과 명령어를 실행
하는 실행
이 두가지 사이클이 반복된다.
하지만 이 두 사이클 외에도 간접 주소 지정
과 같은 방식처럼 메모리 접근이 추가로 필요
한 경우도 있으므로 간접 사이클
이
또는 CPU가 도중에 다른 일을 처리
하고자 할 때 사용하는 인터럽트
사이클이 있다.
인터럽트
동기 인터럽트(예외)
주로 CPU에 의해 발생
명령어 처리 도중 비정상적인 상황에 마주했을 경우 발생
비동기 인터럽트(하드웨어 인터럽트)
주로 입출력장치에 의해 발생
세탁기 완료 알림, 전자레인지 조리 완료 알림과 같은 알림
역할 수행
인터럽트 처리 순서
- 입출력 장치는 CPU에게
인터럽트 요청 신호를 보냄
- CPU는 실행 사이클 이후
다음 명령어 인출 전에 인터럽트 여부 확인
- CPU는 인터럽트 요청을 확인 후,
인터럽트 플래그
를 통해인터럽트 수용 여부 확인
- 인터럽트가 가능하다면 지금까지
작업을 잠시 저장
함(스택에 저장, 프로그램 카운터 등이 저장됨)
인터럽트 벡터
를 참고하여인터럽트 서비스 루틴(인터럽트 핸들러 실행) (인터럽트 발생시 어떻게 처리해야할지 명시되어있는 메뉴얼)
- 인터럽트 서비스 루틴 실행 후
백업한 작업 복구, 실행 재개
인터럽트 벡터 : 인터럽트가 발생했을 때, 그에 맞는 인터럽트 서비스 루틴의 시작주소를 포함한 식별 정보
댓글남기기