컴퓨터 기능
컴퓨터 구성 요소
컴퓨터 구성 요소와 상호 작용
- Register
- PC
- Program Counter
- 다음에 실행할 명령어의 주소를 저장하는 공간이다.
- IR
- Instruction Register
- 현재 실행 중인 명령어 자체를 저장하는 공간이다.
- MAR
- Memory Address Register
- PC를 통해, 가져와야할 명령어의 주소나 단어(word)의 주소를 저장하는 공간이다.
- MBR
- Memory Buffer Register
- MAR로 가져온 명령어 자체나 단어(word)를 저장하는 공간이다.
- I/O AR
- Input/Output Address Register
- 입출력 주소를 저장하는 공간이다.
- I/O BR
- Input/Output Buffer Register
- 입출력 버퍼이다.
- PC
-
명령어 가져오는 과정
시스템 버스 구분: ‘주소버스’, ‘데이터버스’, ‘제어버스’
자세한 것은 나중에 설명한다.
컴퓨터의 기능
컴퓨터의 기본 기능
- 프로그램 실행 기능
- 프로그램은 기억장치에 저장된 기계명령어들로 구성되어 있다.
명령어 처리
- 명령어 사이클
- 인출 (Fetch): 명령어 가져오기
- 실행 (Execute): 명령어 실행하기
명령어 인출과 실행 과정
- 프로세서가 기억장치로부터 명령어를 인출한다.
- PC(프로그램 카운터)가 다음에 인출할 명령어의 주소를 가지고 있다.
- 프로세서가 명령어를 인출한 뒤에, PC의 내용을 증가시켜 다음 명령어를 인출할 준비를 한다.
- 인출된 명령어를 프로세서 내부 레지스터에 적재한다.
- 내부 레지스터 == 명령어 레지스터 (IR: Instruction Register)
- 프로세서는 명령어를 해석하고, 그 결과에 따라 필요한 동작을 수행한다.
프로그램 실행 예시
-
명령어 형식
- opcode : 명령어
- address : 연산될 데이터 주소
- operand : 연산될 데이터
- 프로그램 실행 예시
- 주어진 연산 코드
- 아래와 같이 연산 코드에 대한 명령어가 주어졌다고 가정하자.
- ‘0001’ or ‘1’
- 메모리에서 데이터를 가져와 AC(누산기)에 로드한다.
- ‘0101’ or ‘5’
- 메모리에서 데이터를 가져와 AC(누산기)와 더하기 연산을 한다.
- 실행 순서
-
Step 1
AC : Accumulator (임시저장공간, 누산기)
-
Step 2
-
Step 3
-
Step 4
- Step 5
- 생략..
- Step 6
- 생략..
-
- 주어진 연산 코드
명령어 상태도
- Multiple Operands
- 명령어에 여러 operand의 주소가 있을 수 있다.
- 이것을 처리하는 것을 의미한다.
인터럽트
인터럽트란?
- 프로세서를 일시적으로 방해하는 것이다.
- 인터럽트를 통해 프로세서의 처리 효율을 향상시킬 수 있다.
인터럽트의 효용성
-
인터럽트가 없는 경우
-
인터럽트가 있는 경우
인터럽트에 의한 제어권 이동 순서
- 현재 수행 중인 프로그램 실행을 중단하고, 그 문맥(context) 를 저장한다.
- 다음 명령어의 주소(Program Counter의 현재 내용) 와 현재 동작과 관련된 데이터를 저장한다.
- 프로그램 카운터(PC)에 인터럽트 처리기 루틴(ISR)의 시작주소를 세팅한다.
- PC에는 항상 다음 명령어의 주소가 저장된다.
- 인터럽트 처리 명령어가 다음에 수행되어야한다.
- 따라서, PC에 인터럽트 처리 명령어의 주소(ISR의 시작주소)를 세팅한다.
- 인터럽트를 처리한다.
- 문맥을 복원하고 인터럽트된 기존 프로그램을 다시 수행한다.
인터럽트가 포함된 명령어 사이클 상태도
다중 인터럽트
- 인터럽트 처리 중 다른 인터럽트가 발생하면 어떻게 처리할까?
- 순차적 인터럽트 처리
- 인터럽트를 처리하고 있는 중에는 추가적인 인터럽트가 불가능하다.
- 나중에 발생한 인터럽트는 대기하다가, 프로세서가 인터럽트 가능 상태로 변경되면 처리된다.
- 장점
- 간단 명료하다
- 인터럽트들이 순차적으로 처리된다.
- 단점
- 상대적 우선순위 또는 시간적 위급성을 고려하지 않는다.
- 우선 순위에 따른 인터럽트 처리
- 인터럽트의 우선 순위를 정하고, 그 순위가 높은 인터럽트를 먼저 처리한다.
-
예시
- 성결대학교 컴퓨터 공학과 최정열 교수님 (2021)
- William Stalling, 『컴퓨터시스템구조론(10판)』