학습 내용
- 컴퓨터 시스템의 기본 구성과 동작
- 컴퓨터 연산 단위
→ 비트, 음수의 표현, 바이트, 단어(Word)의 개념
→ 2진수 연산과 16진수 표현
- 컴퓨터 조직
→ 8086 프로세서, 시스템버스, 기억장치, I/O장치
- 명령어의 실행 개념
→ 판독과 기록사이클
- 기억장치의 주소관리 방법과 형태
컴퓨터 연산 단위
- 비트(bit) : 0과 1로 표현되는 가장 작은 기억 단위
- 니블(nibble) : 4bit가 있을 때, 그 4bit를 부르는 단위
- 바이트(byte) : 우리에게 의미를 줄 수 있는 기본 기억 단위, 8bit로 구성
- Word(단어) : 컴퓨터가 자료를 처리하는 기본 단위(컴퓨터마다 각기 다르게 정의됨)
- item(항목) : 필드, 레코드 구성의 논리적 자료 단위
- 필드 : 바이트가 모여 구성되는 (학번, 이름, 주소 등의) 논리적 최소 단위
- 레코드 : 필드가 모여 구성되는 자료 처리의 단위
- 파일 : 레코드가 모여 구성되는 자료의 집합.
- 블록(block) : 보조기억장치와 컴퓨터 내부 사이 전송되는 다수의 레코드 묶음
컴퓨터의 조직
1. 프로세서(Processor)
마이크로 프로세서는 크게 나누어 그림과 같이 명령어 실행 장치(EU : Execution Unit)와 버스 인터페이스 장치(BIU : Bus Interface Unit)로 구성되어 있다.
- EU에서는 명령이 실행되고, 산술
논리 연산 장치, 범용 레지스터(general purpose register)등이 있다.
- BIU에서는
명령어 페치, 기억
장치나 입출력 장치로부터 데이타를 읽어 오거나 출력등을
행하며, 내부 통신을 위한 세그먼트 레지스터, 유효
주소 계산을 위한 가산기(adder),
실행할
명령어를 기억장치로부터 가져와 임시로 보관하는 버퍼인 명령어 큐(instruction
queue)등으로
구성된다. 또한 프로세서 내부에는 각 부분 사이의 자료를 전달해 주는 내부 버스(internal bus)가 있다.
- 레지스터 : 자료를 잠시 저장하고 신속히 이용하기 위한 일종의 기억장소
→ 범용 레지스터(generala register), 세그먼트 레지스터(segment register), 명령어 포인터(IP: Instruction pointer), 인덱스(index)
레지스터
등이 있다. Intel 8086/88 프로세서는 16비트 레지스터 14개를
가지고 있다.
2. 시스템 버스
시스템 버스는 그림과 같이 프로세서, 기억장치, 입출력 장치 사이를 연결하는 신호선으로 되어있다. 일반적으로 주소 버스, 데이터 버스, 제어 버스라는 3개의 시스템 버스가 있다.
레지스터 크기와 연산 장치의 크기는 한 사이클 시간에 CPU에 자료를 저장하고 연산할 수 있는 정보의 양을 결정한다. 마찬가지로
- 주소 버스 크기 → 기억 장치(메모리)의 크기를 결정
- 데이터 버스의 크기 → 기억장치에서 한 사이클 시간에 읽어올 수 있는 데이터양을 결정
예를 들면, 주소 버스의 크기가 16비트면, 2^16가지 주소를 전달할 수 있고, 따라서 이 컴퓨터가 가리킬 수 있는 기억 장소 최대 주소는 2^16 - 1 = 65,535(약 64KB)가 된다. 때문에 이 컴퓨터는 원칙적으로 64KB의 기억 용량을 가질수 있다.
기억장치
명령어 실행 개념
컴퓨터의 가장 기본적인 동작은 프로세서가 데이터를 기억장치에서 read(판독)하는것과 기억장치에 write(기록)하는 것이 있다. 이것들의 동작 단계를 자세히 알아보자.
* read 사이클 *
* write 사이클 *
앞에서는 프로세서가 외부와 어떻게 동작하는가를 보았다. 이번에는 프로세서가 읽어온 명령어(instruction)를 어떻게 실행하는지 알아보자.
명령어 실행 과정은 크게 4단계로 구분된다.
1. 명령어 인출
2. 명령어 해독
3. 데이터 인출
4. 실행 사이클
프로세서 내의 명령어 포인터(IP : Instruction Pointer)는 다음에 실행할 명령어가 저장된 기억 장치의 주소를 기억하는 특수한 레지스터이다. 앞에서 살펴본 판독(read)과정에 따라 IP가 기억하고 있는 주소를 주소 버퍼를 통하여 주소 버스에 주면, 데이터 버스를 통해 기억 장치에서 명령어를 읽어올 수 있다. 이 읽어온 명령어는 내부 버스를 통하여 버스 인터페이스 장치(BIU)안에 있는 명령어 큐에 저장된다. 명령어를 읽어 오면 IP의 주소를 증가시키는데, 이것은 다음 명령어가 기억된 곳을 가리키게 된다. 일반적으로 이 주소는 Word단위로 증가한다.
다음으로 큐에 저장된 명령어를 해독하기 위해 해당 명령어를 EU(명령어 실행 장치)로 보낸다. 자세한 설명은 생략하지만 ADD나 MOV처럼 부호화된 명령어를 해독하여 실제 회로상에서 필요한 동작이 무엇인지 알아낸다.
해독된 명령어(예를 들면 덧셈연산)를 실행하기 위해서는 피연산자의 데이터를 읽어와야한다. 때문에 해당되는 피연산자의 데이터를 읽어온다.
이제야 프로세서가 명령어를 실행할 준비가 되었다. 이 마지막 단계에서 프로세서는 연산을 실행(명령어 실행)하며, 연산결과가 내부 버스를 통해 레지스터에 저장되던지 또는 기억 장치에 보내기 위해서 버퍼에 잠시 보관되기도한다.
* 명령어 실행 속도 : 한 명령어가 실행되는 시간은 명령어 호출, 명령어 해독, 데이터 호출, 실행 사이클(즉 앞의 4단계)의 경과 시간을 모두 합해야 한다.
fetch time(I-time) : 명령어 호출 시간
execution time(E-time) : 명령어 해석, 데이터 인출, 연산을 수행 하는시간
instruction cycle : I-time + E-time
특히 명령어의 실행 속도를 나타내는 단위는 MIPS(Million Instruction Per Second)가 많이 사용된다.
→ MIPS 결정 요소 : 사이클 시간, 데이터 버스 크기, 논리 연산 장치 크기, 명령어 크기 등이 있다.
기억 장치 관리
- 선형 기억장치 관리
→ 주소를 선형으로 배열
→ 논리주소 = 물리주소
- 세그먼트 기억장치 관리
→ 기억장소를 세그먼트로 구분
→ 논리주소 /= 물리주소
→ 물리주소 = 논리주소 + 세그먼트 번호
<선형 기억장치 관리형태> <세그먼트 기억장치 관리형태>