산업기사- 전자계산기 구조(1)
2과목 : 전자계산기 구조
1. 불 대수의 기본 공식
-교환법칙 : A+B=B+A, A․ B=B․ A
-결합법칙 : A+(B+C)=(A+B)+C, A․ (B․ C)=(A․ B)․ C
-분배법칙 : A․ (B+C)=A․ B+A․ C, A+B․ C=(A+B)(A+C)
-멱등법칙 : A+A=A, A․ A=A
-보수법칙 : A+A‘=1, A․ A’=0
-항등법칙 : A+0=A, A+1=1, A․ 0=0, A․ 1=A
-콘센서스 : AB+BC+CA‘=AB+CA’, (A+B)(B+C)(C+A‘)=(A+B)(C+A’)
-드모르강 : A‘+B’=(A․ B)‘, A’․ B‘=(A+B)’
-복원법칙 : A‘’=A
2. 자료 구성의 단위
비트(Bit, Binary Digit)
- 자료(정보) 표현의 최소 단위이다.
- 두 가지 상태(0과 1)를 표시하는 2진수 1자리
니블(Nibble)
- 4개의 비트(Bit)가 모여 1개의 Nibble을 구성한다.
- 4비트로 구성되며 16진수 1자리를 표현하기에 적합하다.
바이트(Byte)
- 문자를 표현하는 최소 단위로, 8개의 비트(Bit)가 모여 1Byte를 구성한다.
- 1Byte는 256(28)가지의 정보를 표현할 수 있다.
- 주소 지정의 단위로 사용된다.
워드(Word)
- CPU가 한 번에 처리할 수 있는 명령 단위이다.
- 반워드(Half Word) : 2Byte
- 풀워드(Full Word) : 4Byte
- 더블워드(Double Word) : 8Byte
필드(Field)
- 파일 구성의 최소 단위이다.
- 의미 있는 정보를 표현하는 최소 단위이다.
레코드(Record)
- 하나 이상의 관련된 필드가 모여서 구성된다.
- 컴퓨터 내부의 자료 처리 단위로서, 일반적으로 레코드는 논리 레코드(Logical Record)를 의미한다.
블록(Block)물리 레코드(Physical Record)
- 하나 이상의 논리 레코드가 모여서 구성된다.
- 각종 저장매체와의 입/출력 단위를 의미하며, 일반적으로 물리 레코드(Physical Record)라고 한다.
파일(File)
- 프로그램 구성의 기본 단위로, 여러 레코드가 모여서 구성된다.
데이터베이스(Database)
- 여러 개의 관련된 파일(File)의 집합이다.
3. 기타 자료의 표현 방식
BCD 코드
- 10진수 1자리의 수를 2진수 4Bit로 표현한다.
- 4Bit의 2진수 각 Bit가 8(23), 4(22), 2(21), 1(20)의 자리 값을 가지므로 8421코드라고도 한다.
- 대표적인 가중치 코드이고 문자코드인 BCD에서 Zone 부분을 생략한 형태이다.
- 10진수 입.출력이 간편하다.
Excess-3 코드(3초과 코드)
- BCD + 3, 즉BCD 코드에 310(00112)을 더하여 만든 코드이다.
- 대표적인 자보수 코드이며, 비가중치 코드이다.
Gray 코드
- BCD 코드의 인접하는 비트를 X-OR 연산하여 만든 코드이고, 입출력장치, D/A변환기, 주변장치 등에서 숫자를 표현할 때 사용한다.
․ 1Bit만 변화시켜 다음 수치로 증가시키기 때문에 하드웨어 적인 오류가 적다.
패리티 검사 코드
- 코드의 오류를 검사하기 위해서 데이터비트 외에 1Bit의 패리티 체크 비트를 추가하는 것으로 1Bit의 오류만 검출할 수 있다.
- Odd Parity : Odd 패리티는 코드에서 1인 Bit의 수가 홀수가 되도록 0이나 1을 추가한다.
․ Even Parity : Even 패리티는 코드에서 1인 Bit의 수가 짝수가 되도록 0이나 1을 추가한다.
해밍 코드
- 오류를 스스로 검출하여 교정이 가능한 코드이고, 1Bit의 오류만 교정할 수 있다.
- 데이터 비트 외에 에러 검출 및 교정을 위한 잉여 비트가 많이 필요하다.
- 해밍코드 중 1, 2, 4, 8, 16 …… 2n 번째 비트는 오류 검출을 위한 패리티 비트이다.
4. 중앙처리장치의 구성요소
제어장치
-컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치이다.
- 주기억장치에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시한다.
- 프로그램 카운터(PC), 명령어레지스터(IR), 부호기(제어신호 발생기), 명령어 해독기, 번지 해독기 등으로 구성되어 있다.
연산장치
- 제어장치의 명령에 따라 실제로 연산을 수행하는 장치이고 , 연산장치가 수행하는 연산에는 산술연산, 논리연산, 관계연산, 이동(Shift) 등이 있다.
- 가산기, 누산기(AC ; Accumulator), 보수기, 데이터 레지스터, 오버플로우 검출기, Shift Register 등으로 구성되어 있다.
레지스터
- CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억 장소이다.
- 플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성하고 메모리 중에서 가장 속도가 빠르다.
5. 레지스터
- 프로그램 카운터, 프로그램 계수기(PC, Program Counter) : 다음 번에 실행할 명령어의 번지를 기억하는 레지스터이다.
- 명령 레지스터(IR, Instruction Register) : 현재 실행 중인 명령의 내용을 기억하는 레지스터이다.
- 누산기(AC, Accumulator) : 연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심이다.
- 상태 레지스터(Status Register) PSWR(Program Status Word Register) : 시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 하고, 오버플로, 언더플로, 자리올림, 인터럽트 등의 PSW를 저장하고 있는 레지스터이다.
- 메모리 주소 레지스터(MAR, Memory Address Register) : 기억장치를 출입하는 데이터의 번지를 기억하는 레지스터이다.
- 메모리 버퍼 레지스터(MBR, Memory Buffer Register) : 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터이다.
- 인덱스 레지스터(Index Register) : 주소의 변경이나 프로그램에서의 반복연산의 횟수를 계수하는 레지스터이다.
- 데이터 레지스터(Data Register) : 연산에 사용될 데이터를 기억하는 레지스터이다.
- Shift Register : 저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리 이동시키는 레지스터이고, 2배 길이 레지스터라고도 한다.
- Major Status Register CPU의 메이저 상태를 저장하고 있는 레지스터이다.
6. 버스(BUS)
CPU, 메모리, I/O장치 등과 상호 필요한 정보를 교환하기 위해 연결하는 공동의 전송선이다.
전송하는 정보에 따른 분류
- 번지 버스(Address Bus) : CPU가 메모리나 입출력 기기의 번지를 지정할 때 사용하는 단방향 전송선이다.
- 자료 버스(Data Bus) : CPU와 메모리 또는 입출력 기기 사이에서 데이터를 전송하는 양방향 버스이다.
- 제어 버스(Control Bus) : CPU의 현재 상태나 상태 변경을 메모리 또는 입출력에 알리는 제어신호를 전송하는선이다.
버스 위치에 따른 분류
- 내부 버스 : CPU 및 메모리 내에 구성된 Bus
- 외부 버스 : 주변 입출력장치에 구성된 Bus
7. 명령어 구성
연산자 부(Operation Code부)
- 수행해야할 동작에 맞는 연산자를 표시함, 흔히 OP-Code부라고 한다.
- 연산자부의 크기(비트수)는 표현할 수 있는 명령의 종류를 나타내는 것으로, nBit면 최대 2n개의 명령어를 사용할 수 있다.
주소부(Operand부)
- 실제 데이터에 대한 정보를 표시하는 부분이다.
- 기억장소의 주소, 레지스터 번호, 사용할 데이터 등을 표시한다.
- 주소부의 크기는 메모리의 용량과 관계가 있다.
8. 연산자(Operation Code)의 기능
함수 연산 기능
산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등이 있다.
논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rotate,Complement, Clear 등이 있다.
자료전달기능
- CPU와 기억장치 사이에서 정보를 교환하는 기능이다.
- Load : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령이다.
- Store : CPU에 있는 정보를 기억장치에 기억시키는 명령이다.
- Move : 레지스터간에 자료를 전달하는 명령이다.
- Push : 스택에 자료를 저장하는 명령이다.
- Pop : 스택에서 자료를 꺼내오는 명령이다.
제어 기능
- 프로그래머가 명령어 실행 순서를 변경시키는 기능 이다.
- 무조건 분기 명령 : GOTO, Jump(JMP) 등이 있다.
- 조건 분기 명령 : IF 조건, SPA, SNA, SZA 등이 있다.
- Call : 부프로그램 호출
- Return : 부프로그램에서 메인 프로그램으로 복귀
입 /출력기능
- CPU와 I/O장치, 또는 메모리와 I/O장치 사이에서 자료를 전달하는 기능이다.
- INPUT : 입출력 장치의 자료를 주기억장치로 입력하는 명령이다.
- OUTPUT : 주기억 장치의 자료를 입출력 장치로 출력하는 명령이다.
9. 연산
AND(Masking Operation)
- 특정 문자 또는 특정 Bit를 삭제(Clear)시키는 명령으로 Masking 명령이라고도 한다.
- 삭제할 부분의 Bit를 0과 AND시켜서 삭제하는데, 대응시키는 0인 Bit를 Mask Bit라고 한다.
OR(SelectiveSet)
- 특정 문자를 삽입하거나 특정 Bit에 1을 세트시키는 명령으로 Selective Set 연산이라고도 한다.
- 삽입하거나 세트 시킬 Bit에 삽입할 문자코드 또는 1을 OR 연산시킨다.
XOR : 비교(Compare)명령
- 2개의 데이터를 비교하거나, 특정 비트를 반전시킬 때 사용한다.
- 2개의 데이터를 XOR 연산하여 결과에 1Bit라도 1이 있으면 서로 다른 데이터이다.
- 반전시킬 때는 반전시킬 비트와 1을 XOR 시킨다.
NOT(Complement, 보수)
- 각 비트의 값을 반전시키는 연산으로 보수를 구할 때 사용한다.
논리 Shift
- 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산으로 데이터의 직렬전송(Serial Transfer)에 사용하고 삽입되는 자리는 무조건 0이다.
Rotate
- Shift에서 밀려 나가는 비트의 값을 반대편 값으로 입력하는 연산이다.
- 문자 위치를 변환할 때 이용한다.
산술 Shift
- 부호(Sign)를 고려하여 자리를 이동시키는 연산으로, 2n으로 곱하거나 나눌 때 사용한다.
- 왼쪽으로 n Bit Shift하면 원래 자료에 2n을 곱한 값과 같다.
- 오른쪽으로 n Bit Shift 하면 원래 자료를 2n으로 나눈 값과 같다.
- 홀수를 오른쪽으로 한 번 Shift하면 0.5의 오차가 발생한다.
10. 명령어 형식
3번지 명령어
- Operand부가 3개로 구성되는 명령어형식으로 여러 개의 범용레지스터(GPR)를 가진 컴퓨터에서 사용한다.
- 연산의 결과는 Operand3에 기록된다.
- 연산시 원시 자료를 파괴하지 않는다.
- 다른 형식의 명령어를 이용하는 것보다 프로그램 전체의 길이를 짧게 할 수 있다.
- 전체 프로그램 실행시 명령 인출을 위하여 주기억장치를 접근하는 횟수가 줄어들어 프로그램 실행속도를 단축시킨다.
- 명령어 한 개의 길이가 너무 길어진다.
2 번지 명령어
- Operand부가 2개로 구성되는 명령어 형식으로 가장 일반적으로 사용되는 명령어 형식이다.
- 여러 개의 범용레지스터를 가진 컴퓨터에서 사용한다.
- 3 주소 명령에 비해 명령어의 길이가 짧다.
- 연산의 결과는 주로 Operand1에 저장되므로 Operand1에 있던 원시자료가 파괴된다.
- 전체 프로그램의 길이가 길어진다.
1 번지 명령어
- Operand부가 1개로 구성되어 있다.
- AC(Accumulator ; 누산기)를 이용하여 명령어를 처리한다.
0 번지 명령어
- Operand부 없이 OP Code부만으로 구성된다.
- 모든 연산은 STACK 메모리의 Stack Pointer가 가리키는 Operand를 이용하여 수행한다.
- 모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 스택머신(Stack Machine)이라고도 한다.
- 원래의 자료가 남지 않는다.
11. 주소지정방식(Addressing Mode)의 종류
- 암시적 주소 지정 방식 (Implied Mode) :주소를 지정하는 필드가 없는 0 번지 명령어에서 Stack의 SP가 가리키는 Operand를 암시하여 이용한다.
- 즉치(즉시)적 주소지정방식(Immediate Mode) : 명령어자체에오퍼랜드(실제데이터)를내포하고있는방식이고, 별도의 기억장소를 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어서 실행속도가 빠르다는 장점이 있다. 그리고 명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적이다.
- 직접 주소 지정방식 (Direct Mode) : 명령의 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식이고, 명령의 Operand부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에 직접 사상시킬 수 있다. 그리고 기억용량이 2n개의 Word인 메모리 시스템에서 주소를 표현하려면 n 비트의 Operand부가 필요한다.
- 간접 주소 지정방식(Indirect Mode) : 명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand 부의 비트) 수로 나타낼 수 없을 때 사용하는 방식이다. 명령의 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능하고, 명령어 내의 주소부에 실제 데이터가 저장된 장소의 번지를 가진 기억장소의 번지를 표현함으로써, 최소한 주기억장치를 두 번 이상 접근하여 데이터가 있는 기억장소에 도달한다.
- 계산에 의한 주소지정방식: - 상대 주소 지정방식 : 명령어의 주소부분 + PC - Base Register Mode : 명령어의 주소부분 + Base Register - Index Register Mode : 명령어의 주소부분 + Index Register