동작

동작과정

컴퓨터는 디지털 형태의 정보를 입력받아, 메모리(기억장치)에 저장된 명령어 목록(프로그램)에 따라 처리하고 결과를 출력하는 일종의 고속 전자계산기다. 흐름은 이렇다. 입력 장치로 정보를 받아 메모리에 저장하고, 저장한 정보를 프로그램의 제어에 따라 인출해 산술장치나 논리장치에서 처리한 다음, 처리한 정보를 출력장치에 표시하거나 디스크(보조기억장치)에 저장한다.

이 과정에서 다루는 정보는 명령어와 데이터로 나뉜다. 명령어는 실행할 산술·논리 연산 동작을 명시하는 문장이고, 프로그램은 작업 하나를 수행하기 위한 명령어의 집합이다.

명령어 구성

명령어는 연산코드와 오퍼랜드로 구성되며, 0과 1의 이진코드로 표현되고 프로세서에 따라 길이가 달라진다. 실행되기 전에는 메인 메모리에 저장되어 있다가, 한 번에 하나씩 프로세서로 전송되어 해석되고 실행된다.

  • 연산코드: 명령어의 가장 기본이 되는 부분으로, 프로세서가 실행할 연산을 지정한다.
  • 오퍼랜드: 명령어가 처리할 데이터나, 그 데이터가 저장된 주소에 관한 정보(레지스터, 메모리)를 나타낸다.
  • 누산기: 메모리에서 읽은 오퍼랜드를 레지스터에 저장된 데이터와 연산할 때 쓰는 프로세서 레지스터로, 명령어 수행 중 산술·논리 연산의 결과를 일시적으로 저장한다.

실행 과정

명령어 하나가 처리되는 과정은 다음 여섯 단계로 이루어진다.

  1. 메모리에서 명령어 레지스터로 다음 명령어를 인출한다.
  2. 인출한 명령어를 해석하고, 다음 명령어를 지정하기 위해 프로그램 카운터를 변경한다.
  3. 명령어가 메모리의 워드 하나를 사용해야 한다면, 사용할 위치를 결정해 오퍼랜드를 인출하고 필요하면 프로세서 레지스터로 보낸다.
  4. 명령어를 실행한다.
  5. 실행 결과를 저장한다.
  6. 다음 명령어를 처리하기 위해 1번으로 돌아간다.

사이클

이 실행 과정은 인출 사이클, 간접 사이클, 실행 사이클, 인터럽트 사이클 순으로 진행된다.

  • 인출 사이클: 메인 메모리에서 명령어를 읽어 명령어 레지스터에 저장하기까지의 단계.
  • 실행 사이클: 명령어 레지스터의 명령어를 해석하고 필요한 신호를 발생시켜 실제로 처리하는 단계.
  • 인터럽트 사이클: 프로세스가 정상적인 순차 제어에서 벗어날 때 발생하는 단계.

인터럽트

인터럽트는 컴퓨터에 연결된 장치가 프로세서로 보내는 하드웨어 신호로, 현재 실행 중인 프로그램의 수행을 미루고 다른 프로그램의 수행을 요구하는 명령이다. 외부 장치의 동작과 자신의 동작을 조정하는 수단으로 쓰이며, 크게 인터럽트 요청과 인터럽트 서브루틴으로 구성된다.

인터럽트 요청은 연결 방식에 따라 두 가지로 나뉜다. 단일 회선은 인터럽트 요청이 가능한 모든 장치를 공통으로 프로세서에 연결하는 방식이고, 다중 회선은 모든 장치가 서로 다른 고유 회선으로 프로세서와 연결되어 요청 시 어느 장치에서 왔는지 바로 판별할 수 있는 방식이다.

인터럽트 처리 과정

인터럽트 요청 신호가 발생하면 실행 중이던 프로그램을 메모리에 저장하고 인터럽트 서비스 프로그램으로 분기한다. 인터럽트 루틴의 수행이 끝나면, 다시 인터럽트를 발생시켰던 프로그램으로 제어를 돌려준다.