컴퓨터 시스템의 작업 처리 순서
- 입력장치로 정보를 입력받아 메모리에 저장
- 메모리에 저장한 정보를 프로그램 제어에 따라 인출하여 연산장치에서 처리
- 처리한 정보를 출력장치에 표시하거나 보조기억장치에 저장
명령어와 데이터
- 입력장치로 컴퓨터에 유입되는 정보
- 명령어는 실행할 산술, 논리 연산의 동작을 명시하는 문장으로, 어떤 작업을 수행하는 명령어 집합이 프로그램
- 프로그램은 컴파일러 등을 이용하여 0과 1로 이진화된 기계 명령어로 변환해야 컴퓨터가 이해할 수 있음
명령어의 기본 구조
- 연산 부호(Operation code)
- 프로세서가 실행할 동작인 연산 지정
- 산술 연산(+, -, *, /), 논리 연산(AND, OR, NOT), 시프트, 보수 등 연산 정의
- 연산 부호가 n비트이면 최대 2n개 연산이 가능
- 피연산자(Operand)
직접 주소와 간접 주소
- 직접 주소 : 주소필드에 오퍼랜드의 주소를 직접 저장
- 간접 주소 : 주소필드에 유효주소가 저장되어 있는 기억장치 주소를 저장
명령어의 실행 과정
- 명령어 인출
- 명령어 해석, 프로그램 카운터 변경
- 피연산자 인출
- 명령어 실행
- 결과 저장
- 다음 명령어로 이동
명령어 사이클
- 인출 사이클(Fetch cycle)
- 메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어를 실행하려고 프로그램 카운터를 증가시킴
- 인출 사이클에 소요되는 시간을 명령어 인출 시간이라고 함
- 실행 사이클(Excutre cycle)
- 인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어 실행
- 시행 사이클에서 소비되는 시간을 실행 시간이라고 함
- 간접 사이클(Indirect cycle)
- 간접 주소 지정 방법을 사용하는 실행 사이클은 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한 번 더 읽어 옴
- 인터럽트 사이클(Interrupt cycle)
- 인터럽트는 프로세서가 프로그램을 수행하는 동안 컴퓨터 시스템의 내부나 외부에서 발생하는 예기치 못한 사건
- 프로세서는 실행 사이클을 완료한 후 인터럽트 요구가 있는지 검사
- 인터럽트 요구가 없으면 다음 명령어를 인출하고, 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 주소(프로그램 카운터) 값을 스택이나 메모리의 0번지와 같은 특정 장소에 저장
- 프로그램 카운터에는 인터럽트 처리 루틴의 시작 주소를 저장해 두었다가 인터럽트 처리를 완료하면 중단된 프로그램으로 복귀하여 계속 수행
명령어의 실행
인출 사이클 과정
- PC -> MAR
- PC에 저장된 주소를 프로세서 내부 버스를 이용하여 MAR에 전달
- Memory(MAR) -> MBR / PC+1 -> PC
- MAR에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출한 후 이 명령어를 MBR에 저장
- 이때 제어장치는 메모리에 저장된 내용을 읽도록 제어 신호를 발생
- MBR -> IR
간접 사이클 과정
- IR -> MAR
- IR에 저장된 명령어의 피연산자(주소부)를 MAR에 전달
- MAR -> MBR
- MAR에 저장된 주소에 해당하는 메모리 위치에서 데이터를 인출한 후 이 데이터를 MBR에 저장
- 이때 제어장치는 메모리에 저장된 내용을 읽도록 제어 신호를 발생
- MBR -> IR
인터럽트 사이클 과정
- PC -> MBR
- 인터럽트 루틴 주소 -> PC -> MAR
- 인터럽트 루틴 주소를 PC에 저장
- PC에 저장된 인터럽트 루틴 주소를 MAR에 저장
- MBR -> MAR
- MBR의 주소에 있는 내용을 지시된 메모리 셀로 이동