정처기: 전자계산기 구조

Starman·2021년 7월 29일
0

[ 전자계산기 구조 ] (from 정보처리기사 2012)


논리회로

불 대수

  • 불 대수: 하나의 명제가 참 또는 거짓인가를 판단하는 데 이용되는 수학적인 방법

기본적인 논리함수

  • AND : A·B 또는 AB
  • OR : A+B
  • NOT : NOT A 또는 Ā

불 대수의 기본 공식

  • 교환법칙 : 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+Ā=1, A·Ā=0
  • 항등법칙 : A+0=A, A+1=1, A·0=0, A·1=A
  • 콘센서스
  • 드모르강*
  • 복원법칙

논리식의 간소화

불 대수의 기본 공식 이용하기
  1. 합의 곱 표현을 곱의 합 표현으로 변환한다.
  2. 공통 인수를 뽑아 묶는다.
  3. 멱등법칙, 보수법칙, 항등법칙 등의 기본 공식 형태로 유도하여 줄여 나간다.
카르노 맵 (카르노 도, Karnaugh Map) 이용하기

논리 게이트

  • 논리 게이트: 논리회로를 구성하는 기본적인 전자소자. 0 또는 1을 입력과 출력으로 사용.
  • AND : 입력 신호가 모두 1일 때 1 출력
  • OR : 입력 신호 중 1개만 1이어도 1 출력
  • NOT : 입력된 정보를 반대로 변환하여 출력
  • BUFFER : 입력된 정보를 그대로 출력
  • NAND : NOT + AND, 즉 AND의 부정
  • NOR : NOT + OR, 즉 OR의 부정
  • XOR : 입력되는 것이 모두 같으면 0, 한 개라도 다르면 1 출력
  • XNOR : NOT + XOR, 즉 XOR의 부정

조합논리회로 - 반가산기, 전가산기

  • 조합논리회로: 임의의 시간에서의 출력이 이전의 입력에는 관계없이 현재의 입력조합(0 또는 1)으로부터 직접 결정되는 논리회로.
    • 이에 반해 순서논리회로는 외부로부터의 입력과 현재 상태에 따라 출력이 결정됨.
  • AND, OR, NOT 등의 기본적인 논리소자의 조합으로만 만들어짐.
  • 플립플롭과 같은 기억소자는 포함하지 않음.

조합논리회로의 종류

  • 반가산기, 전가산기, 병렬가산기, 반감산기, 전감산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서, 다수결회로, 비교기 등

반가산기(HA, Half Adder)*

  • 1Bit짜리 2진수 두 개를 덧셈한 합(S)과 자리올림수(C)를 구하는 조합논리회로.
  • 논리식
    • C = AB
    • S = A xor B

전가산기(FA, Full Adder)*

  • 뒷자리에서 올라온 자리올림수(Ci)를 포함하여 1Bit 크기의 2진수 3자리를 더하여 합(Si)과 자리올림수(Ci+1)를 구하는 회로.

기타 조합논리회로

병렬가산기(PA, Parallel Adder)

  • n Bit로 된 2진수 A, B에 대한 덧셈을 n개의 전가산기(FA)를 이용하여 구현한 실질적인 가산기.

반감산기(HS, Half Subtract)

  • 1Bit짜리 2진수 2자리에 대한 감산을 하는 회로.

디코더(Decoder)*

  • n Bit의 Code화된 정보(n개 입력선)를 그 Code의 각 Bit 조합에 따라 2^n개의 출력으로 번역하는 회로.
  • 명령어의 명령부나 번지를 해독할 때 사용하는 회로로 주로 AND 게이트로 구성되어 있음.

인코더(Encoder)

  • 2^n개의 입력선으로 입력된 값을 n개의 출력선으로 코드화해서 출력하는 회로.
  • 인코더는 디코더의 반대 기능

멀티플렉서(MUX, Multiplexer)

  • 2^n의 입력선 중 1개를 선택하여 그 선으로부터 입력되는 값을 1개의 출력선으로 출력시키는 회로.
  • 2^n개의 입력선 중 1개의 선을 선택하기 위해 n개의 선택선(Select Line)을 이용함.

디멀티플렉서(DeMUX, DeMultiplexer)

  • 1개의 입력선으로 들어오는 정보를 2^n개의 출력선 중 1개를 선택하여 출력하는 회로.
  • 2^n개의 출력선 중 1개의 선을 선택하기 위해 n개의 선택선(Select Line)을 이용함.

순서논리회로

  • 순서논리회로: 외부로부터의 입력과 현재 상태에 따라 출력이 결정되는 회로.

  • 기억 기능이 있음.

  • 플립플롭과 논리 게이트로 구성됨.

  • 신호의 타이밍에 따라 동기식과 비동기식으로 나누어짐.

  • 플립플롭, 카운터, 레지스터, RAM, CPU 등.

  • 동기식과 비동기식 동작 : '비동기식 동작'이란 논리회로가 규칙적인 시간에 관계없이 입력 신호가 입력되면 곧바로 동작하는 것을 말하며, '동기식 동작'이란 컴퓨터의 모든 구성 요소들이 서로 타이밍을 맞추어 정보를 주고받기 위하여, 일정한 시간 간격을 두고 클럭 펄스(CP; Clock Pulse)를 발생시켜서, 클럭 펄스에 동기화되어 동작하는 것을 말함. 동기식 동작을 하는 시스템에서는 클럭 펄스가 발생하기 전에 어떤 값이 입력되어도 동작하지 않음.

플립플롭(FF, Flip-Flop)의 특징

  • 플립플롭은 전원이 공급되고 있는 한, 상태의 변화를 위한 외부 신호가 발생할 때까지 현재의 상태를 그대로 유지하는 논리회로.
  • 플립플롭 한 개가 1Bit를 구성하는 2진 셀(Binary Cell)임.
  • 반도체 기억장치에서 2진수 1자리값을 기억하는 메모리 소자.
  • 플립플롭은 레지스터, RAM, 카운터 등을 구성하는 기본 소자.
  • 기본적인 플립플롭은 두 개의 NAND 또는 NOR 게이트를 이용하여 구성함.
  • 플립플롭의 종류: RS-FF, D-FF, JK-FF, T-FF, RST-FF, 마스터-슬레이브 FF

RS 플립플롭(Reset-Set FF)

  • 모든 플립플롭의 기본으로, S와 R의 입력을 조절하여 임의의 Bit값을 그대로 유지시키거나 무조건 0 또는 1의 값을 기억시키기 위해서 사용되는 플립플롭.

D 플립플롭

  • RS FF의 R선에 인버터(Inverter)를 추가하여 S선과 하나로 묶어서 입력선을 하나만 구성한 플립플롭.
  • 입력하는 값을 그대로 저장하는 기능을 수행함.
  • 입력 단자 R과 S에 동시에 1이 입력되는 것을 회로적으로 차단함.

JK 플립플롭

  • RS FF에서 S=R=1일 때 동작되지 않는 결점을 보완한 플립플롭.
  • RS FF의 입력선 S와 R을 JK FF의 입력선 J와 K로 사용함.
  • 모든 플립플롭의 기능을 포함함.

T 플립플롭

  • JK FF의 두 입력선을 묶어서 한 개의 입력선으로 구성한 플립플롭.
  • T=0인 경우는 변화가 없고, T=1인 경우에 현재의 상태를 토글시킴. 즉, 원 상태와 보수 상태의 두 가지 상태로만 서로 전환됨.

마스터-슬레이브 플립플롭(주종 플립플롭)

  • 출력 측의 일부가 입력 측에 궤환(Feedback)되어 유발되는 레이스 현상을 없애기 위해 고안된 플립플롭.
  • 두 개의 플립플롭으로 구성되는 데 한쪽 회로가 마스터이고 다른 한쪽이 슬레이브의 위치에 있어 마스터-슬레이브이라 함.

자료의 표현

자료 구성의 단위

비트(Bit, Binary Digit)
니블(Nibble)
  • 네 개의 비트(Bit)가 모여 한 개의 니블(Nibble)을 구성.
  • 4비트로 구성되며 16진수 1자리를 표현하기에 적합.
바이트(Byte)
  • 문자를 표현하는 최소 단위로, 8개의 비트가 모여 1Byte를 구성.
  • 1Byte는 256(2^8)가지의 정보를 표현할 수 있음.
  • 주소 지정의 단위로 사용됨.
  • 일반적으로 영문자나 숫자는 1Byte로 1자를 표현하고 한글, 한자는 2Byte로 1자를 표현함.
워드(Word)
  • 컴퓨터가 한 번에 처리할 수 있는 명령 단위.
  • 반워드(Half-Word): 2Byte
  • 전워드(Full-Word): 4Byte
  • 더블워드(Double-Word): 8Byte
필드(Field)
  • 파일 구성의 최소 단위
  • 의미 있는 정보를 표현하는 최소 단위.
레코드(Record)
  • 하나 이상의 관련된 필드가 모여서 구성됨.
  • 컴퓨터 내부의 자료 처리 단위로서, 일반적으로 레코드는 논리 레코드(Logical Record)를 의미함.
블록(Block), 물리 레코드(Physical Record)
  • 하나 이상의 논리 레코드가 모여서 구성됨.
  • 각종 저장 매체와의 입출력 단위를 의미하며, 일반적으로 물리 레코드(Physical Record)라고 함.
파일(File)
데이터베이스(Database)

수의 표현 및 진법 변환

진법

  • 2진법(Binary)
  • 8진법(Octal): 0~7까지의 숫자로 표현하며, 2진수 3자리를 묶어서 하나의 수로 표현.
  • 10진법(Decimal)
  • 16진법(Hexadecimal): 0~9까지의 숫자와 10~15까지를 의미하는 A~F까지의 문자로 표현함.

진법 변환

보수

  • 보수 : 컴퓨터가 기본적으로 수행하는 덧셈 회로를 이용하여 뺄셈을 수행하기 위해 사용함.

  • r진법에는 r의 보수와 r-1의 보수가 존재함.

  • 보수는 보정해 주는 수, 즉 같은 자릿수에서 가장 큰 값이 되기 위해 필요한 수(R-1의 보수), 혹은 자릿수를 한 자리 늘리기 위해 필요한 수(R의 보수)를 말함.

  • 10진법에는 10의 보수와 9의 보수가 있고, 2진법에는 2의 보수와 1의 보수가 있음.

  • '1의 보수'는 주어진 각 자리값을 0일 때는 1로, 1일 때는 0으로 변환함.

  • '2의 보수'는 1의 보수를 구한 뒤 결과값에 1을 더함.

    • 2의 보수를 구하는 좀더 쉬운 방법은, 소수점의 위치에서 왼쪽 방향으로 첫 번째 1이 나올 때까지는 그냥 쓰고 나머지는 반대로 쓰면 됨.
  • 33의 '10의 보수'는?

    • 33 + X = 100
  • 33의 '9의 보수'는?

    • 33 + X = 99

보수를 이용한 뺄셈

  • 1의 보수 이용 : 1의 보수를 이용할 때는 자리올림이 발생하면 결과에 자리올림수를 더함.
  • 2의 보수 이용 : 2의 보수를 이용할 때는 자리올림이 발생하면 자리올림수를 버림.

자료의 내부적 표현 - 고정 소수점 표현

  • 고정 소수점 표현 방식 : 정수 데이터의 표현 및 연산에 사용하는 방법으로, 2진 연산과 10진 연산이 있음.

2진 연산

  • 2진 연산은 정수값을 2진수로 변환하여 표현하는 방식.
  • 표현할 수 있는 범위가 작지만 연산 속도가 빠름.

10진 연산

  • 10진 연산은 10진수 1자리를 2진수 4자리로 표현하는 방식으로, 언팩(Unpack) 연산과 팩(Pack) 연산이 있음.
언팩(Unpack) 연산
팩(Pack) 연산

자료의 내부적 표현 - 부동 소수점 표현

  • 부동 소수점 방식 : 소수점이 포함된 실수 데이터의 표현과 연산에 사용되는 방식.

부동 소수점 방식의 특징

  • 고정 소수점 방식으로 표현하는 것보다 매우 큰수나 작은 수, 매우 정밀한 수를 적은 비트로 표현할 수 있음.
  • 과학이나 공학 또는 수학적인 응용에 주로 사용됨.
  • 고정 소수점 방식에 비해 연산 시간이 많이 걸림.
  • 지수부와 가수부를 분리하는 정규화 과정이 필요함.
    • 정규화는 유효 자릿수를 최대로 하기 위해 가수(소수) 부분이 "1>|가수부|>=0.1"을 만족하도록 하는 것.
  • 4Byte를 사용하는 단정도와 가수부를 4Byte 추가하여 좀더 정밀하게 표현할 수 있는 8Byte 배정도 표현법이 있음.

부동 소수점 수의 연산 방법

자료의 외부적 표현

  • 자료의 외부적 표현은 처리된 결과를 사람이 확인할 수 있도록 출력할 때의 문자를 표현하는 방식.

BCD(Binary Coded Decimal, 2진화 10진 코드)

  • 6Bit 코드로 IBM에서 개발하였음.
  • 1개의 문자를 2개의 Zone 비트4개의 Digit 비트로 표현함.
  • 6Bit는 2^6개를 표현할 수 있으므로 64개의 문자를 표현할 수 있음.
  • 1Bit의 Parity Bit를 추가하여 7Bit로 사용함.
  • 영문 소문자를 표현하지 못함.

ASCII 코드(American Standard Code for Information Interchange)

  • 7Bit 코드로 미국 표준협회에서 개발하였음.
  • 1개의 문자를 3개의 Zone 비트4개의 Digit 비트로 표현함.
  • 2^7=128가지의 문자를 표현할 수 있음.
  • 1Bit의 Parity Bit를 추가하여 8Bit로 사용함.
  • 통신 제어용 및 마이크로컴퓨터의 기본 코드로 사용함.
  • 영문 대소문자, 아라비아 숫자, 제어문자, 특수문자 등을 표현할 수 있음.

EBCDIC(Extended BCD Interchange Code, 확장 2진화 10진 코드)

  • 8Bit 코드로 IBM에서 개발하였음.
  • 1개의 문자를 4개의 Zone 비트4개의 Digit 비트로 표현함.
  • 2^8=256가지의 문자를 표현할 수 있음.
  • 1Bit의 Parity Bit를 추가하여 9Bit로 사용함.
  • 대형 기종의 컴퓨터에서 사용함.

기타 자료의 표현 방식

BCD 코드

  • 10진수의 1자리의 수를 2진수의 4Bit로 표현함.
  • 4Bit의 2진수 각 Bit가 8, 4, 2, 1의 자리값을 가지므로 8421 코드라고도 함.
  • 대표적인 가중치 코드
  • 문자 코드인 BCD에서 Zone 부분을 생략한 형태
  • 10진수의 입출력이 간편함.

Excess-3 코드(3 초과 코드)

  • BCD + 3, 즉 BCD 코드에 3을 더하여 만든 코드이기 때문에 모든 비트가 동시에 0이 되는 경우는 없음.
  • 대표적인 자기 보수 코드이며, 비가중치 코드
    • 가중치 코드란 2진수 각 자리가 고유한 값을 갖는 코드. 비가중치 코드는 이에 반해 각 자리가 고유한 값을 갖지 않는 코드
    • 자기 보수 코드란 2진수로 된 코드의 1을 0으로, 0을 1로 모두 바꿈으로써 해당 코드의 10진수 값에 대해 9의 보수를 얻는 코드

Gray 코드

  • BCD 코드의 인접하는 비트를 X-OR 연산하여 만든 코드
  • 이웃하는 코드가 한 비트만 다르기 때문에 코드 변환이 용이함.
  • 입출력 장치, A/D 변환기(아날로그/디지털), 주변장치 등에서 숫자를 표현할 때 사용함.
  • 1Bit만 변화시켜 다음 수치로 증가시키기 때문에 하드웨어적인 오류가 적음.

패리티 검사 코드

  • 전송된 코드의 오류를 검사하기 위해서 데이터 비트 외에 1Bit의 패리티 체크 비트를 추가하는 것으로 1Bit의 오류만 검출활 수 있음.
  • 1의 개수에 따라 짝수(Even, 우수) 패리티와 홀수(Odd, 기수) 패리티 방법이 있음.

해밍 코드

  • 오류를 스스로 검출하여 교정이 가능한 코드
  • 2Bit의 오류를 검출할 수 있고, 1Bit의 오류를 교정할 수 있음.
  • 데이터 비트 외에 오류 검출 및 교정을 위한 잉여 비트가 많이 필요함.
  • 해킹 코드 중 1,2,4,8,16..2^n번째는 오류 검출을 위한 패리티 비트
  • 전진 오류 검출 방식

코드의 분류

  • 가중치 코드(Weight Code): BCD(8421), 2421, 84-2-1, Biquinary(5043210), 5111, Ring-Counter(9876543210)

  • 비가중치 코드(Non-Weight Code): 3 초과(Excess-3), Gray, Jonson, 2 out of 5, 3 out of 5

  • 가중치 코드란 2진수 각 자리가 고유한 값을 갖는 코드. 이에 반해 비가중치 코드는 각 자리가 고유한 값을 갖지 않는 코드.

  • 자기 보수 코드(Self-Complement Code): 3 초과(Excess-3), 2421, 5111, 84-2-1

  • 오류 검출용 코드: 해밍 코드, 패리티 검사 코드, Biquinary, Ring-Counter, 2 out of 5, 3 out of 5


프로세서

중앙처리장치

  • 중앙처리장치(CPU; Central Processing Unit)는 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치.
  • 중앙처리장치에는 제어장치, 연산장치, 레지스터 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있음.

제어장치

  • 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치.
  • 제어장치는 주기억장치에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어신호를 보내 정확하게 수행하도록 지시함.
  • 제어장치는 프로그램 카운터(PC), 명령어 레지스터(IR), 부호기(제어 신호 발생기), 명령어 해독기, 번지 해독기, 제어 기억장치, 순서제어 모듈 등으로 구성됨.

연산장치

  • 연산장치(ALU, Arithmetic & Logic Unit)는 제어장치의 명령에 따라 실제로 연산을 수행하는 장치.
  • 연산장치가 수행하는 연산에는 산술 연산, 논리 연산, 관계 연산, 이동(Shift) 등이 있음.
  • 연산장치는 가산기, 누산기(AC, Accumulator), 보수기, 데이터 레지스터, 오버플로 검출기, 시프트 레지스터(Shift Register)등으로 구성됨.

레지스터

  • 레지스터(Register)는 CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억장소.
  • 레지스터는 플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성함.
  • 레지스터는 메모리 중에서 속도가 가장 빠름.
주요 레지스터의 종류 및 기능
  • 프로그램 카운터, 프로그램 계수기(PC; Program Counter): 다음 번에 실행할 명령어의 번지를 기억하는 레지스터. 분기 명령이 실행되는 경우 그 목적지 주소로 갱신됨.
  • 명령 레지스터(IR; Instruction Register): 현재 실행중인 명령의 내용을 기억하는 레지스터
  • 누산기(AC, Accumulator): 연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심임.
  • 상태 레지스터(Status Register) / PSWR(Program Status Word Register) / 플래그 레지스터 : 시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 함. 오버플로, 언더플로, 자리올림, 계산상태(0,-,+), 인터럽트 등의 PSW를 저장하고 있는 레지스터
  • 메모리 주소 레지스터(MAR; Memory Address Register): 기억장치를 출입하는 데이터의 번지를 기억하는 레지스터
  • 메모리 버퍼 레지스터(MBR; Memory Buffer Register): 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터
  • 베이스 레지스터(Base Register): 명령이 시작되는 시작 번지를 기억하고 있는 레지스터
  • 인덱스 레지스터(Index Register): 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터. 사용자가 내용을 변경할 수 있음.
  • 데이터 레지스터(Data Register): 연산에 사용될 데이터를 기억하는 레지스터
  • 시프트 레지스터(Shift Register): 저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 레지스터. 2배 길이 레지스터라고도 함.
  • 메이저 스테이터스 레지스터(Major Status Register): CPU의 메이저 상태를 저장하고 있는 레지스터

버스

  • 버스는 CPU, 메모리, I/O 장치 등과 상호 필요한 정보를 교환하기 위해 연결하는 공동의 전송선.
  • 컴퓨터 내부 회로에서 버스 선(Bus Lines)을 사용하는 목적은 결선의 수를 줄이기 위한 것으로 다음과 같이 분류됨.
전송하는 정보에 따른 분류
  • 번지 버스(Address Bus): CPU가 메모리나 입·출력기기의 번지를 지정할 때 사용하는 단방향 전송선
  • 자료 버스(Data Bus): CPU와 메모리 또는 입·출력기기 사이에서 데이터를 전송하는 양방향 전송선
  • 제어 버스(Control Bus): CPU의 현재 상태나 상태 변경을 메모리 또는 입·출력장치에 알리는 제어신호를 전송하는 데 사용하는 양방향 전송선
버스 위치에 따른 분류
  • 내부 버스: CPU 및 메모리 내에 구성된 Bus
  • 외부 버스: 주변 입·출력장치에 구성된 Bus

명령어(Instruction)

명령어의 구성

  • 컴퓨터에서 실행되는 명령어는 크게 연산자가 표시되는 연산자부(Operation Code)와 연산의 수행에 필요한 자료의 정보가 표시되는 자료부(Operand)로 구성됨.
연산자부(Operation Code)
  • 수행해야 할 동작에 맞는 연산자를 표시. 흔히 OP-Code부라고 함.
  • 연산자부의 크기(비트 수)는 표현할 수 있는 명령의 종류를 나타내는 것. nBit일 때 최대 2^n개의 명령어를 사용할 수 있음.
자료부(Operand)
  • 실제 데이터에 대한 정보를 표시하는 부분. 주소 필드(Address field)라고도 함.
  • 기억장소의 주소, 레지스터 번호, 사용할 데이터 등을 표시.
  • 자료부의 크기는 메모리의 용량과 관계 있음.

명령어 설계 시 고려사항

  • 연산자의 종류: 해당 컴퓨터 시스템에서 처리할 기능에 맞게 연산자의 종류를 결정함.
  • 주소지정방식: 명령어가 사용할 자료의 위치를 표현하기 위한 방법을 결정함.
  • 데이터 구조: 해당 컴퓨터 시스템의 워드 크기 등 데이터 구조에 맞게 명령어를 설계함.

연산자 (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(Skip if AC is Positive), SNA(Skip if AC is Negative), SZA(Skip if AC is Zero) 등
  • Call: 부 프로그램 호출
  • Return: 부 프로그램에서 주 프로그램으로 복귀
입·출력 기능
  • CPU와 I/O 장치, 또는 메모리와 I/O 장치 사이에서 자료를 전달하는 기능.
  • INPUT: 입·출력장치의 자료를 주기억장치로 입력하는 명령
  • OUTPUT: 주기억장치의 자료를 입·출력장치로 출력하는 명령

연산(Operation)

AND(Masking Operation)

  • 특정 문자 또는 특정 비트를 삭제(Clear)시키는 연산. Masking 연산이라고도 함.
  • AND 연산은 삭제할 부분의 비트를 0과 AND시켜서 삭제하는데, 대응시키는 0인 비트를 Mask Bit라 함.

OR(Selective-Set)

  • 특정 문자를 삽입하거나 특정 비트에 1을 세트시키는 연산. Selective Set 연산이라고도 함.
  • 삽입하거나 세트시킬 비트에 삽입할 문자 코드 또는 1을 OR 연산시킴.

XOR(Compare, 비교)

  • 두 개의 데이터를 비교하거나 특정 비트를 반전시킬 때 사용함.
  • 두 개의 데이터를 XOR 연산하여 결과에 1Bit라도 1이 있으면 서로 다른 데이터임.
  • 반전시킬 때는 반전시킬 비트와 1을 XOR시킴.

NOT(Complement, 보수)

  • 각 비트의 값을 반전시키는 연산. 보수를 구할 때 사용함.

논리 Shift

  • 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산. 데이터의 직렬 전송(Serial Transfer)에 사용함.
  • 삽입되는 자리는 무조건 0임.

Rotate

  • Shift에서 밀려 나가는 비트의 값을 반대편 값으로 입력하는 연산
  • 문자 위치를 변환할 때 사용함.

산술 Shift

  • 부호(Sign)를 고려하여 자리를 이동시키는 연산. 2^n으로 곱하거나 나눌 때 사용함.
    • 왼쪽으로 n Bit Shift하면 원래 자료에 2^n을 곱한 값과 같음.
    • 오른쪽으로 n Bit Shift하면 원래 자료를 2^n으로 나눈 값과 같음.
    • 홀수를 오른쪽으로 한 번 Shift하면 0.5의 오차가 발생함.
    • 산술 Shift는 정수 표현 방식에서만 가능한 방법으로, 정수의 수치 표현 방법에 따라서 표현이 조금씩 다름.

명령어 형식

  • 명령어는 크게 OP-Code부(명령부)와 Operand부(자료부)로 구성되는데, Operand부의 개수에 따라 3주소 명령어, 2주소 명령어, 1주소 명령어, 0주소 명령어의 네 가지 명령어 형식이 있음.

3주소 명령어(3 Address Instruction)

  • Operand부가 세 개로 구성되는 명령어 형식. 여러 개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용함.
  • 연산의 결과는 주로 Operand 1에 기록됨.
  • 장점
    • 연산 시 원래의 자료를 파괴하지 않음.
    • 다른 형식의 명령어를 이용하는 것보다 프로그램 전체의 길이를 짧게 할 수 있음. --?
    • 전체 프로그램 실행 시 명령 인출을 위하여 주기억장치를 접근하는 횟수가 줄어듬.
  • 단점
    • 명령어 한 개의 길이가 너무 길어짐.
    • 하나의 명령을 수행하기 위해서 최소한 4번 기억장소에 접근해야 하므로 수행시간이 길어짐.

2주소 명령어(2 Address Instruction)

  • Operand부가 두 개로 구성되는, 가장 일반적으로 사용되는 명령어 형식.
  • 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용함.
  • 장점
    • 3주소 명령에 비해 명령어의 길이가 짦음.
    • 계산 결과가 기억장치에 기억되고 중앙처리장치에도 남아 있어서 계산 결과를 시험할 필요가 있을 때 시간이 절약됨.
  • 단점
    • 연산의 결과는 주로 Operand 1에 저장되므로 Operand 1에 있던 원래의 자료가 파괴됨.
    • 전체 프로그램의 길이가 길어짐.

1주소 명령어(1 Address Instruction)

  • Operand부가 한 개로 구성되어 있음.
  • 1주소 명령어 형식의 컴퓨터는 누산기(AC, Accumulator)를 이용하여 명령어를 처리함.

0주소 명령어(0 Address Instruction)

  • 자료의 주소를 지정하는 Operand부 없이 OP-Code부만으로 구성되어 있음.
  • 모든 연산은 Stack 메모리의 Stack Pointer가 가리키는 Operand를 이용하여 수행함.
  • 0주소 명령어의 모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 스택 머신(Stack Machine)이라고도 함.
  • 스택에 기억된 데이터만을 이용하여 연산하므로 인스트럭션 수행시간이 짧음.
  • 피연산자를 나타내지 않기 때문에 인스트럭션의 길이가 짧아서 기억공간의 이용이 효율적임.
  • 스택을 사용한 컴퓨터에서 수식을 계산하기 위해서는 우선 수식을 Postfix(역 polish) 형태로 변경하여야 함.
  • 0주소 명령어는 주소의 사용 없이 스택에 연산자와 피연산자를 넣었다 꺼내어 연산한 후 결과를 다시 스택에 넣으면서 연산하기 때문에 원래의 자료가 남지 않음.

주소지정방식(Addressing Mode)

  • 주소지정방식 : 프로그램이 수행되는 동안 사용될 데이터의 위치를 지정하는 방법.

주소 설계 시 고려 사항

  • 표현의 효율성 : 빠르게 접근하고 주소 지정에 적은 비트 수를 사용할 수 있도록 다양한 어드레스 모드를 사용할 수 있어야 함.
  • 사용의 편리성 : 다양하고 융통성 있는 프로그램 작업을 위해 포인터, 프로그램 리로케이션 등의 편의를 제공하여야 함.
  • 주소공간과 기억공간의 독립성 : 프로그램 상에서 사용한 주소를 변경 없이 실제 기억공간 내의 주소로 재배치할 수 있도록 서로 독립적이어야 함.
절대주소와 상대주소
  • 주소를 실제 기억공간과 연관시키는 방법에 따라 절대주소와 상대주소로 구분할 수 있음.
  • 절대주소: 임의의 기억장소에 대한 실제 주소(유효주소)로 0,1,2,3.. 의 순서로 처음부터 차례대로 지정됨.
  • 상대주소: 기준주소를 기준으로 상대적으로 얼마만큼 떨어져 있는지 변위(Displacement ; Offset)로 표현하는 주소로서, 상대주소는 절대주소로 변환해야만 실제 데이터에 접근할 수 있음.

주소지정방식(Addressing Mode)의 종류

암시적 주소지정방식(Implied Mode)
  • 주소를 지정하는 필드가 없는 0번지 명령어에서 Stack의 Top 포인터가 가리키는 Operand를 암시하여 이용함.
즉치(즉시)적 주소지정방식(Immediate Mode)
  • 명령어 자체에 오퍼랜드(실제 데이터)를 가지고 있는 방식.
    • 별도의 기억장소를 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어서 실행 속도가 빠르다는 장점이 있음.
    • 명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적임.
직접 주소지정방식(Direct Mode)
  • 명령의 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식.
    • 명령의 Operand부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에 직접 사상시킬 수 있음.
    • 기억 용량이 2^n개의 Word인 메모리 시스템에서 주소를 표현하려면 n Bit의 Operand부가 필요함.
    • 직접 주소지정방식에서 명령의 Operand부에 데이터를 가지고 있는 레지스터의 번호를 지정하면 레지스터 모드라고 함.
간접 주소지정방식(Indirect Mode)
  • 명령어 내의 Operand부에 실제 데이터의 주소가 아니고, 실제 데이터의 주소가 저장된 곳의 주소를 표현. 최소한 주기억장치를 두 번 이상 접근하여 데이터가 있는 기억장소에 도달함.
  • 명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand부의 비트)수로 나타낼 수 없을 때 사용하는 방식.
  • 명령의 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능한 방식.
  • 간접 주소지정방식에서 명령의 Operand부에 데이터의 주소를 가지고 있는 레지스터의 번호를 지정하면 레지스터 간접 모드라고 함.
계산에 의한 주소지정방식
  • Operand부와 CPU의 특정 레지스터의 값이 더해져서 유효주소를 계산하는 방식.
  • 사용하는 레지스터의 종류에 따라 상대, 베이스, 인덱스 주소지정방식으로 구분함.
    • 상대주소(Relative Mode)
      • 유효주소: 명령어의 주소 부분 + PC
      • 명령어 자신의 기억장소를 기준으로 하여 데이터의 위치를 지정하는 방식
    • 베이스 레지스터(Base Register Mode)
      • 유효주소: 명령어의 주소 부분 + Base Register
      • 프로그램을 재배치(Relocation)할 때 이용함.
    • 인덱스 레지스터(Index Register Mode)
      • 명령어의 주소 부분 + Index Register
베이스 레지스터(Base Register Mode)
  • 프로그램의 실행을 위하여 보조기억장치에 보관중이던 프로그램이 주기억장치로 Load될 때는 주 기억장치 내의 적절한 빈 영역을 선택하여 Load하므로 Load될 때마다 할당되는 영역이 달라질 수 있음. 따라서 프로그램상에서 명령어의 주소를 표현할 때는 절대주소로 나타내지 않고, Load될 때 할당되는 영역의 시작주소를 기준으로 재조정하여 실제 기억장소의 주소를 사용할 수 있도록 변위값으로 표현함. 이때 명령의 시작주소를 가지고 있는 레지스터가 베이스 레지스터이며, 베이스 레지스터의 값과 명령어에 포함된 변위값을 더해 접근하고자 하는 기억장소의 유효주소를 얻는 것을 재배치라고 함. 또한 이러한 재배치 기법에 의해 Operand가 있는 기억장소를 지정하는 방법을 Base Register Addressing Mode라고 함.

명령 실행과 제어

마이크로 오퍼레이션(Micro Operation)

  • 명령(Instruction) 한 개를 실행하기 위해서는 그 명령이 기억된 위치를 파악하고 그 곳을 찾아가서 명령을 꺼내온 후 무슨 명령인지 번역하고 그 명령을 처리할 장치를 동작시키는 등의 여러 동작 과정을 거치게 된다. 이때의 작은 동작 하나하나를 마이크로 오퍼레이션(Micro Operation)이라고 함.

  • 마이크로 오퍼레이션은 Instruction을 수행하기 위해 CPU 내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작.

  • 마이크로 오퍼레이션은 레지스터에 저장된 데이터에 의해 이루어지는 동작.

  • 마이크로 오퍼레이션은 한 개의 Clock 펄스 동안 실행되는 기본 동작. 모든 마이크로 오퍼레이션은 CPU의 Clock 펄스에 맞춰 실행됨.

  • 마이크로 오퍼레이션은 컴퓨터의 모든 명령을 구성하고 있는 몇 가지 종류의 기본 동작으로, 컴퓨터 프로그램에 의한 명령의 수행은 마이크로 오퍼레이션의 수행으로 이루어짐.

  • 마이크로 오퍼레이션의 순서를 결정하기 위해 제어장치가 발생하는 신호를 제어신호라고 함.

  • 마이크로 오퍼레이션은 Instruction 실행 과정에서 한 단계씩 이루어지는 동작으로, 한 개의 Instruction은 여러 개의 마이크로 오퍼레이션이 동작되어 실행됨.

  • 제어 워드: 레지스터의 선택과 산술 논리 연산장치의 역할을 결정하고, 어떤 마이크로 연산을 할 것인가를 결정하는 비트의 모임을 제어 워드라고 함. 제어 워드는 마이크로 명령어라고도 함.

  • 마이크로 프로그램: 어떤 명령을 수행할 수 있도록 구성된 일련의 제어 워드가 특수한 기억장치 속에 저장될 때 이를 마이크로 프로그램이라고 함.

마이크로 사이클 타임(Micro Cycle Time)

  • Micro Cycle Time: 한 개의 Micro Operation을 수행하는 데 걸리는 시간.
  • 모든 순서논리회로는 Clock Pulse의 동기화에 의해 동작되는데, CPU도 하나의 거대한 순서논리회로이므로 CPU 역시 이 Clock Pulse에 동기화되어 동작됨. 이 때의 Pulse를 CPU Clock이라 하며, 한 개의 Micro Operation은 이 CPU Clock의 발생 주기의 간격 시간 내에 실행됨.
  • CPU Cycle Time 또는 CPU Clock Time 이라고도 하며, CPU 속도를 나타내는 척도로 이용함.

Micro Cycle Time 부여 방식

  • Micro Cycle Time은 CPU 클럭 주기와 Micro Cycle Time의 관계에 따라 다음과 같이 동기 고정식, 동기 가변식, 비동기식으로 구분됨.
동기 고정식(Synchronous Fixed)
  • 모든 마이크로 오퍼레이션의 동작시간이 같다고 가정하여 CPU Clock의 주기를 Micro Cycle Time과 같도록 정의하는 방식
  • 모든 마이크로 오퍼레이션 중에서 동작시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time으로 정함.
  • 모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식
  • 장점: 제어기의 구현이 단순함.
  • 단점: CPU의 시간 낭비가 심함.
동기 가변식(Synchronous Variable)
  • 수행시간이 유사한 Micro Operation 끼리 그룹을 만들어, 각 그룹별로 서로 다른 Micro Cycle Time을 정의하는 방식
  • 마이크로 오퍼레이션 수행시간이 현저한 차이를 나타낼 때 사용함.
  • 동기 가변식은 동기 고정식에 비해 CPU 시간 낭비를 줄일 수 있는 반면, 제어기의 구현은 조금 복잡함.
  • 각 그룹 간 서로 다른 사이클 타임의 동기를 맞추기 위해 각 그룹 간의 Micro Cycle Time을 정수배가 되게 함.
비동기식(Asynchronous)
  • 모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time을 정의하는 방식
  • CPU의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않음.

메이저 스테이트(Major State)

  • 메이저 스테이트: 현재 CPU가 무엇을 하고 있는가를 나타내는 상태.
  • CPU가 무엇을 위해 주기억장치에 접근하느냐에 따라 Fetch, Indirect, Execute, Interrupt 이렇게 네 개의 상태가 있음.
    • CPU는 메이저 스테이트의 네 가지 단계를 반복적으로 거치면서 동작을 수행함.
    • 메이저 스테이트는 메이저 스테이트 레지스터를 통해서 알 수 있음.
    • Major Cycle 또는 Machine Cycle 이라고도 함.

메이터 스테이트 변천 과정

(그림)

인출 단계(Fetch Cycle)

  • 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 가져와 해독하는 단계
  • 읽어와 해석된 명령어가 1Cycle 명령이면 이를 수행한 후 다시 Fetch Cycle로 변천함.
  • 1Cycle 명령이 아니면, 해석된 명령어의 모든 비트에 따라 직접주소와 간접주소를 판단함.
    • 모든 비트가 0이면 직접주소이므로 Execute 단계로 변천함.
    • 모든 비트가 1이면 간접주소이므로 Indirect 단계로 변천함.
  • 다음은 Fetch Cycle의 동작 순서
    (표)

간접 단계(Indirect Cycle)

  • Fetch 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행됨.
  • 이 사이클에서는 Fetch 단계에서 해석한 주소를 읽어온 후 그 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계를 수행함.
  • 간접주소가 아닌 경우에는 명령어에 따라서 Execute 단계 또는 Fetch 단계로 이동할지를 판단함.
    • 분기 같은 1Cycle 명령이면 Fetch Cycle로 변천함.
    • 실행 명령이면 Execute Cycle로 변천함.
  • 다음은 Indirect Cycle의 동작 순서
    (표)

실행 단계(Execute Cycle)

  • Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계
  • Execute 단계에서는 플래그 레지스터의 상태 변화를 검사하여 Interrupt 단계로 변천할 것인지를 판단
  • Execute 단계에서는 Interrupt 요청 신호를 나타내는 플래그 레지스터의 변화가 없으면 Fetch 단계로 변천함.
  • 다음은 ADD 연산을 수행하는 Execute 단계
    (표)

인터럽트 단계(Interrupt Cycle)

  • 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어 순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계
  • 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천함.
  • 다음은 Interrupt Cycle의 동작 순서
    (표)

주요 명령의 마이크로 오퍼레이션

AND

  • AND는 AC(누산기)와 메모리의 내용을 AND(논리곱)하여 결과를 AC에 저장하는 연산 명령

ADD

  • ADD는 AC(누산기)와 메모리의 내용을 더하여 결과를 AC에 저장하는 연산 명령

LDA(Load to AC)

  • LDA는 메모리의 내용을 AC로 가져오는(Load) 명령

STA(Store AC)

  • STA는 AC의 내용을 메모리에 저장(Store)하는 명령

BUN(Branch UNconditionally)

  • BUN은 PC에 특정한 주소를 전송하여 실행 명령의 위치를 변경하는 무조건 분기 명령

BSA(Branch and Save Return Address)

  • BSA는 복귀주소를 저장하고 부 프로그램을 호출(Call)하는 명령

ISZ(Increment and Skip if Zero)

  • ISZ는 메모리의 값을 읽어 그 값을 1 증가시킨 후 음수에서 시작한 그 값이 0이면 현재 명령을 건너뛰어 다음 명령으로 이동함.

제어기의 구현

제어 데이터

  • 제어 데이터: 제어장치가 제어 신호를 발생하기 위한 자료. 쉽게 말해, 정해진 제어의 흐름에 변화를 줄 수 있는 데이터.
  • CPU가 특정한 메이저 상태와 타이밍 상태에 있을 때 제어 자료에 따른 제어 규칙에 의해 제어 신호가 발생함.
  • 제어 데이터는 다음 세 가지가 있음.
    • 메이저 스테이트 사이의 변천을 제어하는 데이터
    • 중앙처리장치의 제어점을 제어하는 데이터
    • 인스트럭션의 수행 순서를 결정하는 데 필요한 제어 데이터
  • 각 단계의 제어 데이터는 다음과 같음.
구분FetchIndrectExecuteInterrupt
State 간 변이용명령어 종류 주소지정방식주소지정방식인터럽트 요청 신청없음
제어점 제어용명령어유효주소명령어의 연산자Interrupt 체제에 따라 달라짐
수행 순서 제어용PC없음PCInterrupt 체제에 따라 달리짐

제어기의 구현

  • 제어기(제어장치): 필요한 마이크로 연산들이 연속적으로 수행할 수 있도록 제어 신호를 보내는 역할을 하는 장치
  • 제어장치는 하드웨어적으로 구현하는 고정배선 제어장치소프트웨어적으로 구현하는 마이크로 프로그래밍 기법이 있음.
고정배선 제어장치(Hard-wired Control Unit)
  • 각 독립 제어점에 제어신호를 가해야 할 조건들을 제어 데이터와 제어기의 상태로 표현한 후 이를 만족하는 조합논리회로를 설계하여 해당 제어점에 연결하는 방식
    • Hardware적인 구성 방법
    • 속도가 빠름.
    • 마이크로 프로그래밍 방식에 비해 비쌈.
    • RISC 구조를 기본으로 하는 컴퓨터에서 주로 사용됨.
    • 한 번 만들어진 명령어 세트를 변경할 수 없음.
    • 회로 구성이 복잡함.
마이크로 프로그래밍 기법(Micro Programmed Control Unit)
  • 내부 제어 신호를 지정하는 여러 가지 마이크로 인스트럭션으로 작성하는 것
    • Software적인 구성 방법. 정확히 말하면, 펌웨어(Firmware)를 이용하는 방식.
    • 마이크로 프로그램된 제어장치를 사용하는 컴퓨터는 주 메모리 외에 마이크로 프로그램이 저장되는 제어 메모리가 필요함.
    • 마이크로 프로그램을 이용하여 명령어 세트를 쉽게 변경할 수 있음.
    • 다양한 어드레스 모드를 갖음.
    • 하드웨어 방식에 비해 속도가 느림.
    • 유지보수 및 수정이 용이함.
    • 비교적 복잡한 명령 세트를 가진 시스템에 적합함.

마이크로 프로그램에서 제어 메모리의 번지 결정

  • 제어 메모리에서는 계속적인 마이크로 명령어를 수행하기 위하여 다음과 같은 방법으로 다음에 실행할 제어 메모리의 번지를 결정함.
    • 제어 주소 레지스터를 하나 증가시킴
    • 마이크로 명령에서 지정하는 번지로 무조건 분기
    • 상태 비트에 따른 조건부 분기
    • 명령어의 비트들을 제어 메모리의 주소로 매핑
    • 서브루틴의 Call과 Return

마이크로 명령의 형식

수평 마이크로 명령(Horizontal Micro Instruction)
  • 마이크로 명령의 한 비트가 한 개의 마이크로 동작을 관할하는 명령
  • Micro Operation부가 m Bit일 때 m개의 마이크로 동작을 표현할 수 있음.
  • Address부의 주소에 의해 다음 마이크로 명령의 주소를 결정함.
  • 장점: 각 비트가 하나의 마이크로 동작을 제어하기 때문에 제어 비트를 디코딩할 필요가 없고, 마이크로 명령 한 개로 여러 개의 하드웨어 구성 요소를 동시에 동작시킬 수 있음.
  • 단점: 제어 워드의 비트들이 충분히 활용되지 못하며, 제어 워드의 길이가 길어지기 때문에 비용이 많이 듬.
수직 마이크로 명령(Vertical Micro Instruction)
  • 제어 메모리 외부에서 디코딩 회로를 필요로 하는 마이크로 명령
  • 한 개의 마이크로 명령으로 한 개의 마이크로 동작만 제어할 수 있음.
나노 명령(Nano Instruction)
  • 나노 메모리(Nano Memory)라는 낮은 레벨의 메모리에 저장된 마이크로 명령을 나노 명령이라 함.
  • 나노 명령은 수직 마이크로 명령을 수행하는 제어기에서 디코더를 ROM(나노 메모리)으로 대치하여 두 메모리 레벨로 구성함.
  • 제어 메모리의 각 Word에는 나노 명령이 저장되어 있는 나노 메모리의 번지들을 저장하고 있음.
  • 제어 메모리에서 인출한 번지에 해당하는 나노 메모리 내의 기억장소를 지정하여 그 곳의 나노 명령을 인출해서 마이크로 동작을 제어함.

입력 및 출력

입·출력의 기본

입·출력장치의 구성

(그림)

입·출력 제어장치
입·출력 인터페이스
입·출력 버스
입·출력장치의 종류

기억장치와 입·출력장치의 동작 차이

비동기 데이터 전송

  • 스트로브 펄스(Strobe Pulse) 방식
  • 핸드셰이킹(Handshaking) 방식

스풀링

  • 스풀링(Spooling, Simultaneous Peripheral Operation On-Line)은 다중 프로그래밍 환경하에서 용량이 크고 신속한 액세스가 가능한 디스크를 이용하여 각 사용자 프로그램이 입출력할 데이터를 직접 I/O 장치로 보내지 않고 디스크에 모았다가 나중에 한꺼번에 입출력함으로써 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하는 기법
  • 스풀링은 고속의 CPU와 저속의 입출력장치가 동시에 독립적으로 동작하게 하여 높은 효율로 여러 작업을 병행 수행할 수 있도록 해줌으로써 다중 프로그래밍 시스템의 성능 향상을 가져올 수 있다.
  • 스풀링은 디스크 일부를 매우 큰 버퍼처럼 사용하며, 큐 방식의 입출력을 수행한다.
  • 소프트웨어적인 구현 방식

066 입·출력 제어방식

  • 컴퓨터와 입·출력장치 사이의 데이터 전송은 여러 가지 모드로 나누어지는데, CPU를 중간 경로로 이용하여 데이터를 입·출력하는 것과 CPU를 거치지 않고 메모리와 직접 입·출력하는 것들로 구분된다.

Programmed I/O

  • Programmed I/O 방식은 원하는 I/O가 완료되었는지의 여부를 검사하기 위해서 CPU가 상태 Flag를 계속 조사하여 I/O가 완료되었으면 MDR(MBR)과 AC 사이의 자료전송도 CPU가 직접 처리하는 I/O 방식이다.

Interrupt I/O

  • Interrupt I/O 방식은 입·출력을 하기 위해 CPU가 계속 Flag를 검사하지 않고, 데이터를 전송할 준비가 되면 입·출력 인터페이스 컴퓨터에게 알려 입·출력이 이루어지는 방식이다.

DMA(Direct Memory Access)에 의한 I/O

  • DMA는 입·출력장치가 직접 주기억장치를 접근(Access)하여 Data Balck을 입·출력하는 방식으로, 입·출력 전송이 CPU의 레지스터를 경유하지 않고 수행된다.

Channel에 의한 I/O

  • Channel은 CPU를 대신하여 주기억장치와 입·출력장치 사이에서 입·출력을 제어하는 입·출력 전용 프로세서(IOP)이다.

067 인터럽트의 개념

인터럽트의 정의

  • 인터럽트(Interrupt)는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우, 현재 실행중인 작업을 즉시 중단하고 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것을 말한다. 일명 '끼어들기'라고도 한다.
  • 인터럽트는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류하는데, 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생한다.

인터럽트의 종류 및 발생 원인

  • 외부 인터럽트
    • 전원 이상 인터럽트(Power Fail Interrupt)
    • 기계 착오 인터럽트(Machine Check Interrupt)
    • 외부 신호 인터럽트(External Interrupt)
    • 입·출력 인터럽트(Input-Output Interrupt)
  • 내부 인터럽트: 잘못된 명령이나 데이터를 사용할 때 발생하며, 트랩(Trap)이라고도 부른다.
    • 프로그램 검사 인터럽트(Program Check Interrupt)
      • 0으로 나누기가 발생한 경우
      • Overflow 또는 Underflow가 발생한 경우
      • 프로그램에서 명령어를 잘못 사용한 경우
      • 부당한 기억장소의 참조와 같은 프로그램 상의 오류
  • 소프트웨어 인터럽트: 프로그램 처리 중 명령의 요청에 의해 발생하는 것
    • SVC(SuperVisor Call) 인터럽트
      • 사용자가 SVC 명령을 써서 의도적으로 호출한 경우
      • 복잡한 입·출력 처리를 해야 하는 경우
      • 기억장치 할당 및 오퍼레이터와 대화를 해야 하는 경우

인터럽트 발생 시 CPU가 확인할 사항 *

  • 프로그램 카운터의 내용
  • 사용한 모든 레지스터의 내용
  • 상태 조건의 내용(PSW)

인터럽트의 동작 원리 *

068 인터럽트 우선순위(Priority) 체제

인터럽트 우선순위

  • (위로 갈수록 높고, 아래로 갈수록 낮음)

  • 전원 이상(Power Fail)

  • 기계 착오(Machine Check)

  • 외부 신호(External)

  • 입·출력(I/O)

  • 명령어 잘못

  • 프로그램(Program Check)

  • SVC(Supervisor Call)

인터럽트 우선순위 체제의 목적

  • CPU에 연결되어 있는 여러 장치에서 동시에 하나 이상의 인터럽트가 발생하였을 때 먼저 서비스할 장치를 결정하기 위해서

소프트웨어적인 인터럽트 우선순위 판별 방법 : Polling

  • 소프트웨어적인 방법은 Interrupt 발생 시 우선순위가 가장 높은 인터럽트 자원(Source)부터 인터럽트 요청 플래그를 차례로 검사하여 찾고 이에 해당하는 인터럽트 서비스 루틴을 수행하는 방식

하드웨어적인 인터럽트 우선순위 판별 방법 : Vectored Interrupt

  • 하드웨어 우선순위 인터럽트는 CPU와 Interrupt를 요청할 수 있는 장치 사이에 장치 번호에 해당하는 버스를 병렬이나 직렬로 연결하여 요청 장치의 번호를 CPU에 알리는 방식
직렬(Serial) 우선순위 부여 방식 : 데이지 체인(Daisy-Chain) 방식
병렬(Parallel) 우선순위 부여 방식

기억장치

069 기억장치의 개요

기억장치의 분류

기억장치의 계층 구조

기억장치의 특성을 결정하는 요소

  • 기억장치에서 가장 중요한 요소는 용량과 성능.
  • Access Time
  • Cycle Time
  • Bandwidth(대역폭, 전송률)

기억장치의 구분

주기억장치

ROM(Read Only Memory)

  • ROM은 기억된 내용을 읽을 수만 있는 기억장치. 일반적으로 쓰기는 불가능함.
  • 전원이 꺼져도 기억된 내용이 지워지지 않는 비휘발성 메모리
  • 실제로 ROM은 주기억장치로 사용하기보다는 주로 기본 입출력 시스템(BIOS), 자가 진단 프로그램(POST) 같이 변경 가능성이 희박한 시스템 소프트웨어를 기억시키는 데 이용함.
  • 종류
    • Mask ROM: 제조공장에서 프로그램화하여 생산한 ROM으로, 사용자가 내용을 변경시킬 수 없음.
    • PROM(Programmable ROM): PROM 프로그램 장치라는 특수 장비를 이용하여 비어 있는 ROM에 사용자가 한 번만 내용을 기입할 수 있으며, 이후엔 읽기만 가능함.
    • EPROM(Erasable PROM): 자외선을 쏘여서 기입한 내용을 지울 수도 있고, PROM 프로그램 장치로 내용을 기록할 수도 있음. 사용자가 여러 번 반복해서 지우거나 기록할 수 있음.
    • EAROM(Erasable Alterable ROM): 전기적 특성을 이용하여 기록된 정보의 일부를 바꿀 수 있는 ROM
    • EEPROM(Electronic EPROM): 전기적인 방법을 이용하여 기록된 내용을 여러 번 수정하거나 새로운 내용을 기록할 수 있는 ROM

RAM(Random Access Memory)

  • RAM은 자유롭게 읽고 쓸 수 있는 기억장치. RWM(Read Write Memory)이라고도 함.
  • RAM에는 현재 사용중인 프로그램이나 데이터가 저장되어 있음.
  • 전원이 꺼지면 기억된 내용이 모두 사라지는 휘발성 메모리
  • 일반적으로 '주기억장치' 또는 '메모리' 하면 램을 의미함.
  • 정보가 저장된 위치는 주소로 구분함.
  • RAM은 재충전 여부에 따라 동적 램(DRAM, Dynamic RAM)과 정적 램(SRAM, Static RAM)으로 구분함.

자기 코어

  • 전류 일치 기술에 의하여 기억장소를 선별함.
  • 데이터를 읽으면 읽은 내용이 지워지는 파괴 메모리(DRO Memory)이므로, 내용을 읽은 후 지워진 내용을 기록하기 위한 재저장(Restoration Time) 시간이 필요함.

반도체 기억소자의 구성도

  • RAM은 칩 선택선, 그리고 읽기 쓰기 선택선, 주소선, 양방향 데이터 버스가 있지만
  • ROM은 읽기만 할 수 있도록 정해져 있으므로 읽기 쓰기 선택선이 없고, 데이터 버스도 단방향임.

보조기억장치

자기 테이프(Magnetic Tape)

  • 주소의 개념이 없고, 처음부터 차례대로 처리하는 순차 처리(SASD)만 할 수 있는 대용량 저장 매체
  • 가격이 저렴하고 용량이 커서 자료의 백업용으로 많이 사용함.

자기 디스크(Magnetic Disk)

  • 자성 물질을 입힌 금속 원판을 여러 장 겹쳐서 만든 기억 매체로, 용량이 크고 접근 속도가 빠름.
  • 자기 디스크는 순차, 비순차(직접) 처리가 모두 가능한 DASD(Direct Access Storage Device) 방식으로 데이터를 처리함.
  • 디스켓, 하드디스크의 형태로 사용함.

자기 드럼(Magnetic Drum)

연관기억장치, 복수 모듈 기억장치

연관기억장치(Associative Memory)

  • 기억장치에서 자료를 찾을 때 주소에 의해 접근하지 않고, 기억된 내용의 일부를 이용하여 Access할 수 있는 기억장치. CAM(Content Addressable Memory)이라고도 함.
  • 주소에 의해서만 접근이 가능한 기억장치보다 정보 검색이 신속함.
  • 캐시 메모리나 가상 메모리 관리 기법에서 사용하는 Mapping Table에 사용됨.
  • 외부의 인자와 내용을 비교하기 위한 병렬 판독 논리회로를 갖고 있기 때문에 하드웨어 비용이 증가함.

복수 모듈 기억장치

  • 독자적으로 데이터를 저장할 수 있는 기억장치 모듈을 여러 개 가진 기억장치
  • 주기억장치와 CPU의 속도 차이 문제점을 개선함.
  • 기억장치의 버스를 시분할하여 사용함.
  • 기억장소의 접근을 보다 빠르게 함.
  • 복수 모듈 기억장치에 사용되는 각각의 기억장치는 자체의 어드레스 레지스터와 버퍼 레지스터를 가지고 독립적으로 데이터를 저장할 수 있음.
  • 인터리빙 기법에 의해 기억장치를 구성하는 모듈 수만큼의 단어(Word)들에 동시 접근이 가능함.
    • 인터리빙이란 여러 개의 독립된 모듈로 이루어진 복수 모듈 메모리와 CPU 간의 주소 버스가 한 개로만 구성되어 있으면 같은 시각에 CPU로부터 여러 모듈들로 동시에 주소를 전달할 수 없기 때문에, CPU가 각 모듈로 전송할 주소를 교대로 배치한 후 차례대로 전송하여 여러 모듈을 병행 접근하는 기법임.
  • Bus를 구성하는 회선의 수가 많을 때는 모든 모듈에 동시에 병렬 접근할 수 있음.

캐시 메모리(Cache Memory)

  • 캐시 메모리는 CPU의 처리 속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory

캐시의 특징

  • 캐시는 주기억장치와 CPU 사이에 위치하며, 자주 사용하는 프로그램과 데이터를 기억함.
  • 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리 속도가 거의 CPU의 속도와 비슷할 정도.
  • 캐시를 사용하면 주기억장치를 접근(Access)하는 횟수가 줄어듦으로써 컴퓨터의 처리 속도가 향상됨.
  • 캐시 주소표는 검색시간을 단축시키기 위해 주로 연관기억장치(CAM, Associative Memory)를 사용함.
  • 캐시의 크기는 보통 수십 KByte~수백 KByte임.

캐시 설계 시 고려할 사항

  • 캐시의 크기(Cache Size)
  • 전송 Block Size
  • 교체 알고리즘(Replacement Algorithm)

매핑 프로세스(Mapping Process)

  • 매핑 프로세스는 주기억장치로부터 캐시 메모리로 데이터를 전송하는 방법을 말하는 것으로, 다음의 세 가지가 있음.
    • 직접 매핑
    • 어소시에이티브 매핑
    • 세트-어소시에이티브 매핑

캐시의 적중률

  • 명령어나 자료를 찾기 위하여 캐시 메모리에 접근하는 경우, 원하는 정보가 캐시 메모리에 기억되어 있을 때 적중(Hit)되었다고 하고, 기억되지 있지 않으면 실패했다고 함.
  • 적중률은 캐시 기억장치가 있는 컴퓨터의 성능을 나타내는 척도로 이용되며, 적중률이 0.95~0.99일 때 우수하다고 함.
  • 적중률 = 적중 횟수 / 총 접근 횟수

가상기억장치(Virtual Memory)

가상기억장치의 개요

  • 가상기억장치는 기억 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용할 수 있도록 하는 운영체제의 메모리 운영 기법. 사용자는 프로그램의 크기에 제한받지 않고 프로그램의 실행이 가능함.
  • 특징
    • 가상기억장치의 목적은 주기억장치의 용량 확보
    • 가상기억장치는 하드웨어적으로 실제로 존재하는 것이 아니고 소프트웨어적인 방법으로 보조기억장치를 주기억장치처럼 사용하는 것
    • 사용자 프로그램을 여러 개의 작은 블록으로 나누어서 보조기억장치 상에 보관해 놓고 프로그램 실행 시 필요한 부분들만 주기억장치에 적재함.
    • 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있음.
    • 보조기억장치의 접근이 자주 발생하면 시스템의 처리 효율이 저하될 수 있음.
    • 가상기억장치 기법에서 사용하는 보조기억장치는 디스크 같은 DASD(직접접근 기억장치)장치이어야 함.
  • 주소의 사용
    • 가상기억장치 기법에서는 보조기억장치에 저장된 사용자 프로그램을 블록으로 나누어 블록에 대한 주소를 주기억장치와는 별도의 주소로 표현하여 필요 시 해당 블록만을 주기억장치에 적재함.
    • 가상주소(논리주소): 보조기억장치 상의 주소. 이들 주소의 집합을 주소공간이라고 함.
    • 실기억주소(물리적 주소): 주기억장치 상의 주소로 물리적 주소라고도 하며, 이들 주소의 집합을 메모리 공간이라고 함.
    • 프로그램이 실행될 때 가상주소는 실기억주소로 변환되어야 함.
  • 가상기억장치의 관리 기법
    • 페이징 기법: OS가 보조기억장치에 있는 프로그램을 동일한 크기의 블록으로 나누어서 관리하는 기법
    • 세그먼트 기법: 사용자가 보조기억장치에 있는 프로그램을 가변적인 크기의 블록으로 나누어서 관리하는 기법

가상장치의 관리 전략

  • 기억장치의 관리 전략은 보조기억장치에 저장되어 있는 프로그램을 주기억장치에 효율적으로 적재하기 위한 방법

  • 반입(Fetch) 전략

    • 보조기억장체 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
    • 요구반입(Demand Fetch): 실행 프로그램이 요구할 때 비로소 적재하는 방법
    • 예상반입(Anticipatory Fetch): 실행 프로그램에 의해 참조될 것을 예상하여 미리 적재하는 방법
  • 배치(Placement) 전략

    • 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략으로 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)이 있음.
  • 교체(Replacement) 전략

    • 주기억장치의 모든 분할된 영역이 이미 사용중인 상태에서 새로운 프로그램을 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 페이지 프레임 중에서 어느 하나를 선택하여 빈 페이지 프레임으로 만들어 줄 것인지를 결정하는 전략으로 FIFO, OPT, LRU, NUR, LFU, MFU 등의 방법이 있음.
      • 가상기억체제에서 페이지 부재(Page Fault)가 발생하면 교체할 페이지를 결정해서 보조기억장치의 이전 위치에 기억시키고 새로운 페이지를 교체한 페이지의 위치에 놓는 곳을 스테이징(Staging)이라고 함.

주소 매핑(주소 변환)

  • 주소 매핑은 가상 주소를 실기억주소로 변환하는 작업

병렬 컴퓨터

병렬 컴퓨터의 개요 및 종류

병렬 컴퓨터의 개요

  • 병렬 처리는 폰 노이만 컴퓨터 구조의 순차 처리에 반대되는 구조로, I/O 채널 또는 Processor와 같은 다수의 Processor(처리기)에서 동시에 여러 작업(Process)을 처리하는 것
  • 병렬 처리 대상
    • 일기 예보
    • 인공지능 분야에서의 음성, 화상, 자연언어 처리
    • 역학계산, 자원탐사, 핵반응 연구를 위한 모의실험
    • 유도탄 등의 첨단 군장비

병렬 컴퓨터의 분류

  • 플린(Flynn)의 분류
    • SISD(Single Instruction stream Single Data stream)
    • SIMD(Single Instrcution stream Multi Data stream)
    • MISD(Multi Instruction stream Single Data stream)
    • MIMD(Multi Instruction stream Multi Data stream)
  • 팽(Feng)의 분류
    • WSBS(Word-Serial, Bit-Serial)
    • WPBS(Word-Parallel, Bit-Serial)
    • WSBP(Word-Serial, Bit-Parallel)
    • WPBP(Word-Parallel, Bit-Parallel)

병렬 처리 기법

파이프라인(Pipeline)

  • 파이프라인은 여러 개의 명령(Instruction)을 동시에 병렬 처리하는 장치로, 분업화의 원리를 활용하여 시간적 병렬 처리를 함.
  • 파이프라인 기법의 Micro Cycle
    • OF 단계에서 인출하는 오퍼랜드가 스칼라 데이터냐, 벡터 데이터냐에 따라 명령 실행 단계에서 그 데이터를 처리하기 위해 스칼라 프로세서 또는 벡터 프로세서가 이용됨. 일반적으로 파이프라인 기법이란 스칼라 프로세서를 이용하는 기법.
  • 장단점
    • 일단 파이프라인이 차고 나면 연속적으로 결과를 얻을 수 있으므로 연산 속도가 빠름.
    • 같은 연산이 여러 번 반복되어 사용되면 효율적이지만, 그렇지 않은 경우에는 구조가 복잡하고 시간이 오래 걸림.

벡터 프로세서(Vector Processor)

  • 벡터 프로세스는 산술 및 논리 연산, 비교, 내적 연산, 최대·최소값 구하기 등의 벡터 연산 명령을 빠르고 효율적으로 수행하도록 구성된 처리기
  • 구성 형태에 따른 종류
    • 파이프라인화된 벡터 프로세스(Pipelined Vector Processor)
    • 시스톨릭 프로세서(Systolic Processor): 시스톨릭 처리기는 데이터 흐름과 제어 흐름이 규칙적인 특징을 갖는 시스톨릭 알고리즘을 이용하여 수행하는 처리기
      • 시스톨릭 알고리즘은 파이프라인화된 벡터 프로세서와 배열 프로세서의 특징을 결합한 것으로, VLSI(초고밀도 집적회로) 기법을 이용하여 구현함.
      • 신호, 화상 처리와 같은 응용에 사용하기 위해 개발된 것으로, 비용이나 성능 면에서 우수하지만 응용의 한계성과 프로그램화의 어려움이 따름.

배열 처리기(Array Processor)

  • 배열 처리기는 PE(Processing Element)라고 불리는 다수의 연산기를 갖는 동기적 병렬 처리기
    • 명령 해독 및 제어는 제어장치가 하고, PE들은 명령 해독 능력이 결여된 수동적 장치로서 명령 처리만 함.
    • 벡터 계산이나 행렬 계산에 적합

0개의 댓글