i à ¤ ; 3 @ ~ Þ Þ q ´ á ûs q Þ × ¤ ; % ý À ç î i j ; Ø ( ì j ;/8 ñ...

45
컴퓨터 구조 C h a p t e r 02 학습목표 복잡한 논리를 간결하고 정확하게 표현할 수 있게 하는 논리회로에 대해 살펴본다. 컴퓨터 시스템을 전체적으로 구성하고 있는 요소들에 대한 각각의 기능을 살펴본다. 중앙처리장치의 구성 요소들과 동작, 명령어 세트 등에 대해 자세하게 살펴본다. 기억장치의 계층 구조를 통하여 주기억장치, 캐쉬 기억장치, 보조기억장치에 대한 역할들을 자세하게 살펴본다. 입출력장치들의 입출력 방식에 대하여 살펴본다. 처리 속도와 처리율을 향상시키기 위한 병렬 컴퓨터의 구조에 대하여 살펴본다. 01. 논리회로 02. 컴퓨터 시스템의 구성 03. 중앙처리장치 04. 기억장치 05. 입출력장치 06. 병렬 컴퓨터 구조 요약 연습문제

Upload: others

Post on 21-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

컴퓨터구조

C h a p t e r

02

학습목표

복잡한 논리를 간결하고 정확하게 표현할 수 있게 하는 논리회로에 대해 살펴본다.

컴퓨터 시스템을 전체적으로 구성하고 있는 요소들에 대한 각각의 기능을 살펴본다.

중앙처리장치의 구성 요소들과 동작, 명령어 세트 등에 대해 자세하게 살펴본다.

기억장치의 계층 구조를 통하여 주기억장치, 캐쉬 기억장치, 보조기억장치에 대한역할들을 자세하게 살펴본다.

입출력장치들의 입출력 방식에 대하여 살펴본다.

처리 속도와 처리율을 향상시키기 위한 병렬 컴퓨터의 구조에 대하여 살펴본다.

01. 논리회로

02. 컴퓨터 시스템의 구성

03. 중앙처리장치

04. 기억장치

05. 입출력장치

06. 병렬 컴퓨터 구조

요약

연습문제

부울대수

일반적으로우리가사용하는컴퓨터는 0과 1이라는두개의숫자만사용하는이진수시스

템의디지털컴퓨터(digital computer)며, 디지털논리회로로구성되어있다. 이러한디

지털회로의설계와분석을쉽게하기위해서사용하는이진변수와논리연산을나타내는

대수가부울대수(boolean algebra)다.

논리 대수(logic algebra)라고도 부르는 부울 대수는 19세기 중반 국의 수학자 부울

(George Boole, 1815~1864)에 의해 창시되었으며, 논리적인 문제를 해결하기 위한

수학적인방법으로써, 하나의명제에대한결과가참(true)과거짓(flase), 또는 0과 1로

한정된다. 이것은 20세기에들어와서미국벨연구소의섀넌(Claude Elwood Shannon,

1916∼2001)에의해전화교환기와컴퓨터이진법논리회로등에응용되면서스위칭대수

(switching algebra)라고도 불렸다. 부울 대수를 이용하여 논리회로를 설계하면 복잡한

논리회로를간결하게나타낼수있다.

부울 대수의 기본적인 논리연산에는 논리곱(AND), 논리합(OR), 논리부정(NOT)이 있

으며, 이때디지털신호를나타내는데사용되는논리회로를게이트(gate)라고한다. 각각

의게이트는논리기호, 논리함수, 진리표등으로나타낼수있다. 또한부울대수는일반

대수와같이교환법칙, 결합법칙, 분배법칙등이성립한다.

결론적으로부울대수식은논리게이트의회로형태로표현이가능하며, 반대로논리게이

트회로를부울대수식의형태로표현할수있다. 또한부울대수식의기본법칙을이용하여

입력문자의개수를줄임으로써논리회로로변환되었을때논리회로의게이트수를줄일수

있다.

64

논리회로

S e c t i o n

1

부울 대수의 논리연산

■ 논리곱(AND)

두가지명제가모두참일경우에만결과가참이된다. 논리곱에대한표현은두가지명제를각

각A, B라고했을때, AB, A B, A∩B, A∧B, A AND B와같이나타낸다.

[그림 2-1] 논리곱(AND) 회로

■ 논리합(OR)

두가지명제중하나만참이어도결과가참이된다. 다시말해서 두가지명제가모두거짓일

경우에만결과가거짓이된다. 논리합에대한표현은두가지명제를각각A, B라고했을때,

A+B, A∪B, A∨B, A OR B와같이나타낸다.

[그림 2-2] 논리합(OR) 회로

■ 논리부정(NOT)

명제를부정하는것으로서 명제가참일경우결과는거짓이되고, 명제가거짓일경우결과는

참이된다. 논리부정에대한표현은하나의명제를A라고했을때, A’, ~A, A, NOT A와

같이나타낸다.

65

2장. 컴퓨터 구조 ◀

[그림 2-3] 논리부정(NOT) 회로

부울 대수의 기본법칙

❶교환법칙: AB=BA, A+B=B+A

❷결합법칙: (AB)C=A(BC), (A+B)+C=A+(B+C)

❸분배법칙: A(B+C)=AB+AC, A+(BC)=(A+B)(A+C)

❹흡수법칙: A(A+B)=A, A+AB=A

❺부정: AA’=0, A+A’=1, (A’)’=A

❻드모르간의법칙: (AB)’=A’+B’, (A+B)’=A’B’

❼ 기타: 0A=0, 1A=A, AA=A, 0+A=A, 1+A=1, A+A=A

부울 함수의 간소화 예

❶F=AB’+B ❷F=A(A’+B) ❸F=AB+AC+AB’C’

=B+AB’ =AA’+AB =A(B+C+B’C’)

=(B+A)(B+B’) =0+AB =A((B+C)+(B+C)’)

=(B+A)·1 =AB =A·1

=A+B =A

논리 게이트

논리게이트(logic gate)는논리회로를구성하는기본소자로서 이진입력정보를이용해

서 0 또는 1의논리적인값을생성한다. [표 2-1]에서A와B는게이트의입력, X는출력

을나타낸다.

66

▶ 컴퓨터 과학 개론

[표 2-1]게이트의종류

게이트 논리기호 논리함수 진리표

A B X

0 0 0

AND X=AB 0 1 0

1 0 0

1 1 1

A B X

0 0 0

OR X=A+B 0 1 1

1 0 1

1 1 1

BUFFER

A X

X=A 0 0

1 1

NOTA X

(Inverter)X=A' 0 1

1 0

A B X

0 0 1

NAND X=A'+ B' 0 1 1

1 0 1

1 1 0

A B X

0 0 1

NOR X=A'B' 0 1 0

1 0 0

1 1 0

A B X

XOR0 0 0

(Exclusive-OR)X=A B=A'B+AB' 0 1 1

1 0 1

1 1 0

A B X

0 0 1XNOR

X=A⊙B=A'B'+AB 0 1 0(Exclusive-NOR)

1 0 0

1 1 1

67

2장. 컴퓨터 구조 ◀

논리회로의종류

논리회로(logic circuit)의 종류는 크게 조합 논리회로(combinational logic circuit)와

순서 논리회로(sequential logic circuit)로 나누어볼 수 있다. 논리 게이트로 구성되고

출력값이 입력값에 의해서만 결정되는 조합 논리회로는 기억회로를 가지고 있지 않으며,

반가산기(half adder), 전가산기(full adder), 디코더(decoder), 인코더(encoder), 멀티

플렉서(multiplexer), 디멀티플렉서(demultiplexer) 등의종류가있다. 반면에순서논

리회로는플립플롭(flip-flop)과게이트들로구성되고기억소자를가지고있어서입력값

과기억소자의상태에따라출력값이결정된다. 이것은플립플롭을구성소자로하여레지

스터및카운터등에사용된다.

조합 논리회로

조합논리회로(combinational logic circuit)는현재입력값에의해출력값이결정되며, 정

보에대한기억능력이없다.

[그림 2-4] 조합 논리회로

■ 반가산기(half adder)

두개의입력(x, y)을받아서합(sum)과자리올림(carry)을구하는조합논리회로다.

[그림 2-5] 반가산기의 진리표와 논리회로

■ 전가산기(full adder)

두개의입력(x, y)과밑의자리로부터올라오는자리올림수(z)를포함한 3개의입력을사용

하여합(sum)과자리올림(carry)을구하는조합논리회로다.

68

▶ 컴퓨터 과학 개론

2

[그림 2-6] 전가산기의 진리표와 논리회로

■ 디코더(decoder)

n개의입력으로최대 2n개의출력을나타낼수있는조합논리회로로서, 출력중에서하나는 1

이되고나머지출력은모두0이된다.

■ 인코더(encoder)

디코더(decoder)와 반대되는 동작을 수행하는 조합논리회로로서, 2n개의 입력과 n개의 출

력으로구성된다.

■ 멀티플렉서(multiplexer)

2n개의 입력 중에서 n개의 선택선에 의해 1개의 출력을 내보내는 조합 논리회로로서 크기가

입력선의 개수로 정해지는 2n×1 장치다. 예를 들어 4×1 멀티플렉서는 4개의 입력, 2개의

선택선과 1개의출력으로구성되며 [그림 2-7]과같이나타낼수있다.

[그림 2-7] 4×1 멀티플렉서

■ 디멀티플렉서(demultiplexer)

1개의 입력을 받아서 n개의 선택선으로 2n개의 출력을 내보내는 조합 논리회로로서, 1×2n

장치다.

69

2장. 컴퓨터 구조 ◀

순서 논리회로

조합 논리회로에서의 출력값은 입력값에 의해서 결정되었으나, 순서 논리회로(sequential

logic circuit)에서는입력값과회로의현재상태에따라출력값이결정된다. 플립플롭에의

하여기억능력을갖고있다.

■ 플립플롭(flip-flop)

1개의비트에대한정보를저장할수있는장치로서, S(Set), R(Reset), C(Clock)의입력

과 2개의출력(정상출력Q, 보수출력Q)을갖는다. 플립플롭을조합하여레지스터(register)

와카운터(counter) 등을구성한다. RS 플립플롭, D 플립플롭, JK 플립플롭, T 플립플롭

으로분류한다.

[그림 2-8] RS 플립플롭의 논리회로

■ 레지스터(register)

n비트레지스터는n개의플립플롭으로구성되어있으며, n비트를저장할수있다.

[그림 2-9] 4비트 레지스터

■ 카운터(counter)

입력펄스에따라미리정해진순서대로상태가변하는장치다. n개의플립플롭을가진이진

카운터의경우0부터2n-1까지카운트할수있다.

[그림 2-10] 4비트 동기 이진 카운터

70

▶ 컴퓨터 과학 개론

컴퓨터 시스템은 프로그램을 실행하고 데이터를 저장하고 이동하며, 각 장치를 제어하는

기능을수행하기위해상호연결되어있다. 이러한기본적인기능을수행하기위한컴퓨터

시스템은 데이터를 처리하는 중앙처리장치와 데이터를 저장하는 기능을 수행하는 기억장

치, 컴퓨터와외부장치사이에데이터를교환하는기능을수행하는입출력장치그리고모

든컴퓨터시스템구성요소를연결하여데이터를전송하는시스템버스로이루어진다.

[표 2-2] 컴퓨터의기본적인기능

프로그램 실행 중앙처리장치가 기억장치로부터 프로그램 코드를 읽고 실행한다.

데이터 저장 중앙처리장치에서 처리된 데이터를 기억장치에 저장한다.

데이터 이동 하드 디스크와 같은 보조기억장치에 저장되어 있는 프로그램과 데이터를 주기억장치로 이동한다.

제어 프로그램이 제대로 실행될 수 있도록 각종 제어 신호들을 발생한다.

[그림 2-11] 컴퓨터 시스템의 구조

이들구성요소를간단히살펴보면다음과같다.

중앙처리장치

중앙처리장치(CPU, Central Processing Unit)는명령어들을기억장치로부터차례로인

출하여 해독하고 실행하는 기능을 수행하며, 이러한 기능을 위하여 산술논리연산 기능을

수행하는 산술논리연산장치(ALU, Arithmetic and Logical Unit), 명령어를 해독하고

그것을실행하기위한제어신호들을발생하는제어장치(control unit) 그리고데이터처

리를위한고속의임시저장장소인레지스터들(registers)로구성된다.

71

컴퓨터 시스템의 구성

S e c t i o n

기억장치

기억장치는데이터를저장하는기능을수행한다. 기억장치는크기와속도및그기능에따

라주기억장치(main memory)와보조기억장치(auxiliary storage unit)로나누어진다.

주기억장치는중앙처리장치와가까운곳에있으며 고속의액세스가가능하나 구저장할

수없기때문에디스크와같은보조기억장치를사용하여대용량의데이터를저장한다. 중

앙처리장치는데이터를처리하기위하여기억장치에저장되어있는명령어와데이터를인

출하여수행한후에그결과를다시기억장치에저장한다.

입출력장치

입출력장치(Input/Output unit)는중앙처리장치및기억장치와시스템버스로연결되어

있으며 하나의컴퓨터시스템에모니터와프린터등과같은여러장치가연결되어사용된

다. 이들장치들은중앙처리장치와직접적으로데이터를교환할수없으며 동작및특성이

다르기때문에제어하는방식도달라서각장치마다별도의제어기를두고있다.

시스템 버스

시스템 버스(system bus)는 중앙처리장치와 컴퓨터 시스템 내의 다른 장치들 간의 물리

적인 연결뿐만 아니라 데이터를 교환하는 통로며 주소 버스(address bus), 데이터 버스

(data bus) 및제어버스(control bus)로구성된다. 일반마이크로컴퓨터에있는시스

템버스는메인보드위에새겨진병렬구리선으로이루어져있다.

주소버스(address bus)는중앙처리장치가기억장치나입출력장치의주소정보를전송하

는신호선의집합으로서 주소버스의버스폭은그시스템메모리의용량을결정한다. 즉,

주소 버스가 n개의 선으로 구성되어 있다면 2n개의 주소를 지정할 수 있다. 예를 들어

CPU가발생하는 주소버스의폭이 16비트라면 최대 216=65,536=64K개의기억장소들

의주소를지정할수있다는것을의미한다. 이버스는중앙처리장치에서만주소를지정할

수있기때문에단방향버스(uni-directional bus)라고한다.

데이터 버스(data bus)는 중앙처리장치가 기억장치나 입출력장치에 데이터를 보내거나

반대로 기억장치나 입출력장치에서 데이터를 읽어 들일 때 데이터를 전송하기 위한 신호

선의집합이다. 데이터선의수가 32개라는것은중앙처리장치가한번에전송할수있는

비트수가 32비트임을의미한다. 이버스는중앙처리장치와기억장치나입출력장치간에

서로데이터를전송할수있으므로양방향버스(bidirectional bus)라고한다.

72

▶ 컴퓨터 과학 개론

제어버스(control bus)는중앙처리장치가컴퓨터시스템내의각종장치들의동작을제

어하기위한신호선의집합이다. 이제어신호선의수는중앙처리장치나시스템의구성에

따라달라지며 기억장치읽기/쓰기신호, 입출력읽기/쓰기신호, 버스요구신호, 인터럽

트요구신호, 클럭신호등이있다.

[그림 2-12] 시스템 버스

[표 2-3]제어신호의종류와기능

제어신호의종류 기능

기억장치 읽기 지정된 기억장치 주소에 있는 데이터를 데이터 버스에 싣기 위한 신호

기억장치 쓰기 데이터 버스에 있는 데이터를 지정된 기억장치 주소에 쓰기 위한 신호

입출력 읽기 지정된 입출력장치로부터 데이터를 읽어서 데이터 버스에 싣기 위한 신호

입출력 쓰기 데이터 버스에 있는 데이터를 지정된 입출력장치로 출력시키기 위한 신호

버스 요구 컴퓨터 시스템의 어떤 장치가 버스를 사용해야할 경우 버스 사용요청을 요구하기 위한 신호

인터럽트 요구 인터럽트가 실행을 위해 대기하고 있음을 나타내는 신호

클럭 컴퓨터 시스템의 각 장치들의 동작을 동기화시키는 데 사용되는 신호

중앙처리장치, 주기억장치및입출력장치들이시스템버스를통해서로접속하여전체컴

퓨터시스템을구성한모습이 [그림 2-13]이다.

[그림 2-13] 컴퓨터 시스템의 전체 구성

73

2장. 컴퓨터 구조 ◀

중앙처리장치기능

중앙처리장치(CPU, Central Processing Unit)는프로그램을수행하기위해기억장치에

저장되어있는명령어들을실행함으로써컴퓨터시스템에있어서핵심적인역할을수행한

다. 즉, 프로그램은데이터와함께주기억장치에적절한형태로저장되어있으며, CPU는

주기억장치로부터 명령어와 데이터를 읽어와서 작업을 수행하는 것이다. 이것은 폰 노이

만(Von Neumann) 구조의프로그램내장방식의컴퓨터개념에기반을두고있음을의

미한다.

CPU는명령어를인출하고해독하며 경우에따라데이터를인출하고처리한후저장하는

기능을수행한다. 각기능에대한설명은 [표 2-4]와같다.

[표 2-4] 중앙처리장치기능

명령어 인출(instruction fetch) 명령어를 기억장치로부터 읽어온다.

명령어 해독(instruction decode) 명령어를 해독하여 수행할 작업을 결정한다.

데이터 인출(data fetch)명령어를 실행하는 과정에 있어서 필요한 데이터를 기억장치 또는 입력장

치로부터 읽어온다.

데이터 처리(data processing) 인출된 데이터에 요구되는 산술연산이나 논리연산을 수행한다.

데이터 저장(data store)수행한 결과를 저장한다(데이터 저장의 기능은 데이터 쓰기 또는 데이터 이동

으로도 표현된다).

[그림 2-14] 중앙처리장치 기능

74

중앙처리장치

S e c t i o n

1

중앙처리장치구성

CPU는 [그림 2-15]와같이산술논리연산장치(ALU, Arithmetic and Logical)와제어

장치(control unit) 및레지스터들(registers)로구성된다.

[그림 2-15] CPU의 내부 구조 및 시스템 버스와의 접속

산술논리연산장치

산술논리연산장치(ALU, Arithmetic and Logical Unit)는 가감승제(+, -, ×, ÷)의

산술연산과 AND, OR, NOT 등의 논리연산을 수행하는 CPU 내부 구성 요소 중 하나

다. 산술논리연산장치는 CPU의레지스터에서데이터를받아서정해진연산을수행한후

에결과를다시CPU 내부에있는레지스터에저장한다.

제어장치

제어장치(Control Unit)는 명령어들을 해독하고 명령어 실행에 필요한 동작들을 수행하

기위해제어신호들을발생시킨다. 즉, 프로그램이올바르게수행될수있도록CPU 내의

모든요소들의동작을제어한다.

레지스터

레지스터(register)는데이터를임시저장하는기능을가진CPU 내부에있는고속의기억

장치다. 레지스터종류에는누산기(accumulator), 프로그램카운터(program counter),

명령어레지스터(instruction register), 인덱스레지스터(index register) 등이있으며 프

로세서의종류에따라서그수와크기에제한을받는다.

75

2장. 컴퓨터 구조 ◀

2

[표 2-5]레지스터종류와기능

레지스터의종류 기능

데이터를 일시 저장하는 레지스터다. 누산기를 사용한 연산이 이루어질 경

우 기억장치로부터 읽어온 데이터와 누산기에 적재되어 있던 데이터가 지

누산기(Accumulator)정된 연산을 수행한 후 그 결과값을 다시 누산기에 적재한다. 또한 누산기

의 내용을 전부 지워 0으로 만들 수 있으며, 왼쪽이나 오른쪽으로 몇 자리

씩 움직일 수도 있다. 누산기의 비트 수는 CPU가 한 번에 처리할 수 있는

데이터 비트 수인 워드의 길이와 같다.

프로그램 카운터다음에 수행될 명령어의 주소를 가지고 있는 레지스터다. PC의 값은 단어

(PC, Program Counter)

의 크기에 따라 1 또는 명령어 길이(바이트 수)만큼씩 증가되어 기억장치에

저장되어 있는 명령어를 연속적으로 수행한다. 그러나 만일 분기 명령어가

실행되는 경우에는 그 목적지 주소로 갱신된다.

명령어 레지스터현재 실행 중인 명령어를 기억하고 있는 레지스터다.

(IR, Instruction Register)

기억장치 주소 레지스터 다음에 수행될 명령어를 인출하기 위하여 현재 PC에 들어있는 내용(주소)이

(MAR, Memory Address Register) 시스템주소버스로출력되기전에일시적으로저장되는주소레지스터다.

기억장치 버퍼 레지스터 기억장치로 쓰여질 데이터나 기억장치로부터 읽어온 데이터를 임시로 저

(MBR, Memory Buffer Register) 장하는 레지스터다.

인덱스 레지스터(Index Register) 인덱스 주소지정(indexed addressing) 방식에서 사용되는 레지스터다.

스택 포인터(Stack Pointer) 스택 주소지정 방식에서 사용되며, 스택의 최상위를 지정한다.

[그림 2-16] CPU 내부의 레지스터의 구성

76

▶ 컴퓨터 과학 개론

중앙처리장치의동작

CPU는기억장치에저장되어있는명령어를순차적으로인출하여해독하고실행한다. 이

때CPU 동작은크게명령어인출(instruction fetch)과명령어실행(instruction execution)

의두단계로나누어지며 이두단계가번갈아가며반복해서수행된다. 명령어인출단계

는기억장치의지정된주소로부터CPU로한번에한개씩의명령어를가져오는과정이고,

그것을수행하는과정이명령어실행단계다. 이두단계를명령어사이클(instruction cycle)

이라고하고,서브사이클(subcycle)로서인출사이클(fetch cycle)과실행사이클(execution

cycle)이있으며, 세분화하여간접사이클(indirect cycle)과인터럽트사이클(interrupt

cycle)까지나타낼수있다.

[그림 2-17] 기본 명령어 사이클

[그림 2-17]과 같이 기억장치로부터 인출된 명령어는 기억장치 버퍼 레지스터(MBR)를

경유하여명령어레지스터(IR)에저장되며 실행사이클에서제어장치로보내진다. 기억장

치주소레지스터(MAR)와기억장치버퍼레지스터(MBR)는CPU 내부버스와시스템버

스사이에서각각주소와데이터에대해버퍼역할을하는레지스터다. 또한기억장치로부

터읽어온데이터는기억장치버퍼레지스터(MBR)를통하여누산기(AC)에적재되고 필

요할경우누산기의내용을산술논리연산장치로보내어연산한후연산결과를다시누산기

에저장한다.

[그림 2-18] 명령어 사이클

77

2장. 컴퓨터 구조 ◀

3

인출 사이클

인출사이클(fetch cycle)에서 CPU는먼저프로그램카운터(PC)의내용을기억장치주

소레지스터(MAR)로보내고, 기억장치주소레지스터(MAR)의내용은기억장치의주소

이므로그주소로부터명령어를인출하여기억장치버퍼레지스터(MBR)로옮긴다. 그후

다음명령을인출할준비를위해프로그램카운터(PC)의값을 1 또는명령어길이(바이트

수)만큼증가시킨다. 이와같은과정이반복되면프로그램카운터(PC)의내용은계속증가

되며, 그에따라 CPU는그위치들로부터차례대로명령어들을인출하게된다. 이와같이

기억장치의지정된위치로부터CPU로명령어를가져오는단계를인출사이클이라고한다.

인출사이클에서수행되는동작을마이크로연산으로표현하면 [표 2-6]과같다. 이때의

C0~C2는CPU 클럭의각주기를나타낸다.

[표 2-6]인출사이클에서의마이크로연산

C0: MAR ← PC현재 PC의 내용인 실행할 명령의 주소를 CPU 내부 버스를 통하여 MAR

로 전달한다.

C1: MBR ← M(MAR), PC ← PC+1

MAR의 내용이 가리키는 기억장치의 위치로부터 읽은 내용을 데이터 버

스를 통하여 MBR로 전달하며, 그와 동시에 다음에 실행할 명령어를 위해

서 PC를 1 증가시킨다.

C2: IR ← MBR MBR의 내용을 명령어 레지스터인 IR로 전달한다.

실행 사이클

실행사이클(execution cycle)은인출된명령어를해독(decode)하고직접명령을실행

하는사이클이다. CPU는기억장치나입출력장치사이에서데이터를이동하고, 데이터에

대하여산술이나논리연산을수행한다. 그리고연산후의결과나다른입력장치로부터읽

어들인데이터를기억장치에저장하며, 프로그램의실행순서를결정한다. 실행사이클에

서수행되는마이크로연산(micro operation)들은명령어의종류에따라서로달라진다.

이 때의 명령어는 연산코드(operation code)와 오퍼랜드(operand)로 구성된다고 가정

하며, 연산코드는CPU가수행할연산을지정해주고, 오퍼랜드는명령어가사용할데이터

가저장되어있는기억장치의주소(address)를나타낸다.

메모리내용을누산기(AC)에저장하는명령인 LDA(Load AC) 명령에대한마이크로연

산은 [표 2-7]과같다.

78

▶ 컴퓨터 과학 개론

[표 2-7] LDA 명령에대한마이크로연산

C0: MAR ← IR(addr) 명령어 레지스터 IR에 있는 명령어의 오퍼랜드(주소) 부분을 MAR에 전달한다.

C1: MBR ← M(MAR)MAR의 내용이 가리키는 기억장치의 위치로부터 읽은 내용을 데이터 버스를 통하여 MBR

로 전달한다.

C2: AC ← MBR AC에 적재한다.

기억장치의내용과누산기(AC)의내용에대하여덧셈을수행한후그결과를다시누산기

(AC)에저장하는ADD 명령에대한마이크로연산은 [표 2-8]과같다.

[표 2-8] ADD 명령에대한마이크로연산

C0: MAR ← IR(addr) 명령어 레지스터 IR에 있는 명령어의 오퍼랜드(주소) 부분을 MAR에 전달한다.

C1: MBR ← M(MAR)MAR의 내용이 가리키는 기억장치의 위치로부터 읽은 내용을 데이터 버스를 통하여 MBR

로 전달한다.

C2: AC ← AC+MBR MBR의 내용과 AC의 내용을 더하여 결과값을 다시 AC에 저장한다.

누산기(AC)내용을기억장치에저장하는명령인STA(Store AC) 명령에대한마이크로연산

은 [표2-9]와같다.

[표 2-9] STA 명령에대한마이크로연산

C0: MAR ← IR(addr) 명령어 레지스터 IR에 있는 명령어의 오퍼랜드(주소) 부분을 MAR에 전달한다.

C1: MBR ← AC AC의 내용을 MBR로 전달한다.

C2: M(MAR) ← MBR MBR의 내용을 MAR이 지정하는 기억장소에 저장한다.

프로그램의수행을지정된유효주소로이동시키는제어명령인BUN(Branch Unconditionally)

명령에대한마이크로연산은 [표 2-10]과같다.

[표 2-10] BUN 명령에대한마이크로연산

C0: PC ← IR(addr) 분기할 목적지의 주소에 해당하는 명령어의 오퍼랜드가 PC에 전달된다.

79

2장. 컴퓨터 구조 ◀

인터럽트 사이클

CPU의일반적인처리과정중에 CPU의정상적인처리를방해하는예기치않았던사건,

즉 인터럽트(interrupt)가발생하 을때컴퓨터가동작을중단하지않고계속수행할수

있도록하는메커니즘이제공된다. CPU는인터럽트가발생하면현재수행중이던처리과

정을 저장한 후에 인터럽트 사이클(interrupt cycle)을 시작한다. 그리고 인터럽트에 대

한 처리가 끝나면 원래의 프로그램으로 복귀(return)하여 수행을 계속한다. 이를 위하여

CPU는한명령어의실행사이클을종료하고다음명령어를위한인출사이클을시작하기

전에인터럽트요구신호가대기중인지검사한다.

간접 사이클

간접사이클(indirect cycle)은인출사이클에서읽어들인명령어가간접주소지정방식

의 명령어일 경우에 기억장치로부터 유효 주소(effective address)를 읽어오는 과정으로

서, 인출사이클과실행사이클사이에위치한다. 다시말해서어떤명령어를실행하기위

하여데이터가필요할때, 그데이터가기억장치에저장되어있고명령어에는그데이터가

저장된기억장치주소가포함되어있는경우도있으나, 때로는간접주소지정방식으로써

명령어에포함되어있는주소를데이터의주소가저장된기억장치주소로사용하는경우가

있다. 이경우에실행사이클이시작되기전에그주소를기억장치로부터읽어와야하는과

정이간접사이클(indirect cycle)이다.

명령어파이프라이닝

현재 대부분의 컴퓨터에서 컴퓨터의 처리율을 높이기 위한 방법으로 많이 사용되고 있는

기법중에명령어파이프라이닝(instruction pipelining)이있다. 이것은한명령어의수

행이끝나기전에다른명령어의수행을시작하는방법으로서, 연산과정을몇개의단계로

구분하여각단계가중첩되어동시에수행되도록하 다. 예를들어 명령어를실행하는하

드웨어를인출단계(fetch stage)와실행단계(execute stage)로분리한 2-단계명령어

파이프라인(two-stage instruction pipeline)일경우, 첫번째클럭주기에서는인출단

계가 첫번째 명령어를 인출한다면 두번째 클럭 주기에서는 인출된 첫번째 명령어가 실행

단계로보내져서실행될때그와동시에인출단계는두번째명령어를인출함으로써명령

어처리속도를대략 2배정도향상시킨다.

80

▶ 컴퓨터 과학 개론

4

[그림 2-19] 2-단계 명령어 파이프라인

명령어세트

컴퓨터의구조에따라명령어형식과그에따른명령어집합의종류와수가다르다. 이때정

의되어 있는 명령어들의 집합을 명령어 세트(instruction set)라고 하며, CPU가 명령어

세트를결정할때에는명령어의종류, 명령어형식및주소지정방식등을고려해야한다.

명령어 종류

CPU가수행할수있는명령어의종류는컴퓨터에따라매우다양하며, 일반적으로데이터

전송명령어, 데이터처리명령어, 프로그램제어명령어등으로분류해볼수있다.

데이터전송명령어는레지스터와레지스터사이, 레지스터와기억장치사이 또는기억장

치와기억장치사이등에서데이터를전송한다. 예를들어 LDA, STA 등의명령어를말

할수있다. 데이터처리명령어는데이터에대해동작을수행할연산능력을컴퓨터에부

여해주는 것으로써 산술 및 논리연산 등으로 분류되며 ADD와 AND 등의 명령어가 있

다. 그리고명령어실행순서를변경하는연산으로서BUN 등과같은프로그램제어명령

어가있다.

명령어 형식

컴퓨터의동작은기억장치에기억되어있는명령어에의해서실행된다. 이때각명령어는

CPU에의해실행될때필요한모든정보를포함하고있어야하며 일반적으로명령어의기

본적인형식은 [그림 2-20]과같다.

[그림 2-20] 명령어의 기본 형식

81

2장. 컴퓨터 구조 ◀

5

연산코드부분은CPU에서수행되어야할 LDA, ADD 등의동작을나타내는것이며, 오

퍼랜드부분은일반적으로참조될기억장치의주소를나타낸다. 명령어형식은 0-주소명

령어(zero-address instruction)를포함한 4가지가있다.

[그림 2-21] 명령어 형식의 종류

0-주소 명령어는 연산코드만으로 명령어가 구성되며 스택(stack) 구조의 컴퓨터에서 사

용되고 연산속도가 가장 빠르다. 1-주소 명령어는 연산코드와 1개의 오퍼랜드(주소) 부

분으로 명령어가 구성되는데 모든 데이터의 처리가 누산기(AC)에 의해 이루어진다. 2-

주소명령어는가장일반적인경우로써연산코드와 2개의오퍼랜드부분으로구성되며, 오

퍼랜드부분에는레지스터나기억장치주소를지정한다. 마지막으로 3-주소명령어는연

산코드와 3개의오퍼랜드부분으로구성되며, 오퍼랜드부분에는레지스터나기억장치의

주소그리고연산결과를저장하기위한주소를지정할수있다. 3-주소명령어는연산할

때프로그램의길이를짧게할수있다는장점이있는반면에, 하나의명령어길이가길어

진다는단점이있다.

일반적으로명령어의길이를나타내는비트수는CPU가한번에처리할수있는데이터의

길이와같다. 그리고예를들어연산코드의비트수가 4비트일경우에는 24=16가지의연

산이정의될수있음을의미한다. 즉, 연산코드의비트수는 CPU가수행할수있는연산

의수를결정해준다.

주소지정 방식

주소지정방식(addressing mode)은연산에사용될데이터가기억장치의어디에위치하

는지를 지정하는 방법으로서, 제한된 명령어 비트들을 이용하여 다양하게 오퍼랜드를 지

정할수있도록여러가지방식들이제안되었다. 주소지정방식을다양하게사용하면명령

어의길이를짧게할수있고, 기억장치사용에대한융통성을증가시킬수있으며시스템

의자원을효율적으로사용할수있다.

82

▶ 컴퓨터 과학 개론

[그림 2-22] 주소지정 방식의 수행 속도

즉시주소지정방식(immediate addressing mode)에서는오퍼랜드의내용자체가실제

데이터다. 이방식은변수의초기값을설정하거나상수를사용할경우에사용되며, 기억장

치를참조할필요가없으므로처리속도가가장빠르다.

[그림 2-23] 즉시 주소지정 방식

레지스터 주소지정 방식(register addressing mode)에서는 연산에 사용할 데이터가 레

지스터에 저장되어 있다. 오퍼랜드의 내용이 기억장치의 주소가 아닌 레지스터를 참조하

며, 레지스터의내용이데이터로사용된다. 일반적으로레지스터의개수는기억장치의워

드수보다훨씬적기때문에오퍼랜드의비트수가적다.

[그림 2-24] 레지스터 주소지정 방식

직접주소지정방식(direct addressing mode)에서는오퍼랜드의내용이데이터의유효

주소다. 즉, 오퍼랜드는실제데이터가들어있는기억장치의주소를나타낸다. 이방식은

명령어형식이간단한편이나, 주소공간이제한되기때문에융통성이부족하다는단점을

가지고있다.

83

2장. 컴퓨터 구조 ◀

[그림 2-25] 직접 주소지정 방식

변위 주소지정 방식(displacement addressing mode)은 명령어의 오퍼랜드 내용과

CPU의레지스터내용을더해서유효주소를얻는방식이다. 이방식들은사용되는레지스

터의종류에따라여러종류의변위주소지정방식들이정의된다. 상대주소지정방식(relative

addressing mode)은 레지스터로 프로그램 카운터(PC)를 사용하며, 프로그램 카운터

(PC)의내용과명령어의오퍼랜드의내용을더해서유효주소를얻는방식이다. 이방식은

분기형명령어와함께자주사용한다. 인덱스주소지정방식(indexed addressing mode)

에서는인덱스레지스터를사용하며 인덱스레지스터의내용과명령어의오퍼랜드의내용

을더해서유효주소를결정한다. 이방식은배열(array) 구조에유용하다. 또한베이스-

레지스터 주소지정 방식(base-register addressing mode)에서는 베이스 레지스터의

내용과명령어의오퍼랜드의내용을더해서유효주소를결정한다. 이방식은기억장치에

서프로그램의재배치를쉽게하기위해사용한다.

[그림 2-26] 변위 주소지정 방식

간접주소지정방식(indirect addressing mode)은명령어의오퍼랜드내용으로기억장

치내의주소를찾아간후그주소의내용으로다시기억장치의주소를지정하는방식이다.

84

▶ 컴퓨터 과학 개론

결국기억장치액세스를두번해야하므로처리속도가느리다. 그러나짧은길이를가진

명령어로큰용량의기억장소의주소를지정할수있다는장점을가지고있다.

[그림 2-27] 간접 주소지정 방식

이밖에명령어실행에필요한데이터의위치를지정하지않아도묵시적으로정의되어있

는묵시적주소지정방식(implied addressing mode), 오퍼랜드의내용이가리키는레

지스터의 내용이 기억장치 주소로 사용이 되는 레지스터 간접 주소지정 방식(register-

indirect addressing mode) 등이있다.

[그림 2-28] 레지스터 간접 주소지정 방식

산술논리연산장치

산술및논리데이터에대한연산은컴퓨터시스템의가장기본적인기능이다. 이기능을

담당하고있는것이CPU의내부구성요소들중의하나인산술논리연산장치(ALU)다. 데

이터는레지스터에서산술논리연산장치(ALU)로전달되며연산의결과는다시레지스터로

저장된다. 그리고 연산의 결과가 제로인 경우는 제로 플래그를 설정하고, 오버플로우

85

2장. 컴퓨터 구조 ◀

6

(overflow)인경우에는오버플로그플래그(flag)를설정하는등의플래그설정이따른다.

여기서 오버플로우란산술연산의결과가수의표현가능한범위로부터절대값이큰쪽으로

넘치는것을의미한다. 플래그값또한CPU 내의레지스터에저장된다. 제어장치는산술

논리연산장치(ALU)의연산이나데이터이동등을위한제어신호를제공한다.

[그림 2-29] 산술논리연산장치(ALU)의 입출력

산술연산은 일반적으로 정수(integer)와 부동 소수점 수(floating-point number)라는

두가지형태의수들에대하여수행되며, 논리연산은 0과 1의배열로표현되는이진데이

터(binary data)에대하여이루어진다.

정수의 표현

정수의표현은양의정수와음의정수를표현하는방식으로나눌수있다. 양의정수만을

표현하는방식은수의부호(+ 또는-)를나타내는비트를별도로사용할필요가없기때문

에 n비트로이루어진수는 0부터 2n-1까지의값을나타낸다. 예를들어 8비트로이루어진

수는 0부터 255까지의정수들을표현한다.

[표 2-11]양의정수표현

0 00000000

34 00100010

128 10000000

255 11111111

한편음의정수를표현하기위해서는부호비트를사용하여 0일때는양수로, 1일경우에

는 음수로 나타내며, 이러한 표현은 부호화-크기(signed magnitude), 1의 보수(1’s

complement) 및 2의보수(2’s complement) 방식으로나누어볼수있다.

먼저부호화-크기방식은최상위 1비트를부호로사용하고나머지비트는수의크기를나

타내는방식이다. 부호비트가양수일경우에는 0, 음수일경우에는 1로나타내는것을제

외하면양수와음수의나머지비트에대한표현은동일하다. 예를들어 8비트로표현되는

+5의경우에 00000101로나타내고, -5의경우에는가장왼쪽에있는최상위비트를 1

86

▶ 컴퓨터 과학 개론

로 바꾸어 10000101로 나타낸다. 부호화-크기 방식에서의 결점은 0에 대한 표현이 두

가지라는 점인데, 8비트로 나타내는 경우에 0이 +0(00000000)과 -0(10000000)으로

표현되기때문이며, 결국 2n개로표현할수있는수들을 2n-1개로표현하게됨으로써표

현할수있는수의범위가그만큼줄어들게되고데이터가 0인지검사하게되는과정이복

잡하게된다.

[그림 2-30] 부호화-크기 방식

1의보수방식은이진수의각비트를 0은 1로, 1은 0으로바꾸어서표현하는방식이다. 예

를들어 8비트로표현되는+5의경우에 00000101로나타내고, -5의경우에는각비트

를 0은 1로, 1은 0으로바꾸어 11111010으로표현한다. 그러나이방식또한부호화-크

기방식과마찬가지로 0에대한표현이+0(00000000)과-0(11111111) 두가지로표현

된다는결점을가지고있다.

[그림 2-31] 1의 보수 방식

일반적으로컴퓨터에서가장많이사용하는방식은 2의보수방식이다. 그이유는동일한

비트로표현할수있는수의개수가부호화-크기방식과 1의보수방식에비해더많고덧

셈과뺄셈같은산술연산을할때편리하기때문이다. 2의보수방식은 1의보수에서 1을

더하여숫자를표현하는방식이다. 예를들어 8비트로표현되는+5의경우에 00000101

로나타내고, 1의보수방식에서-5가 11111010으로표현되었다면여기에 1을더하여

11111011로표현된것이 2의보수방식으로표현한-5인것이다. 2의보수방식에서는

0의표현에있어서+0(00000000)만이존재하며, -0은존재하지않는다. 이때문에음

수의표현이양수의표현보다 1자리더나타낼수있다는장점을가지고있다.

87

2장. 컴퓨터 구조 ◀

[그림 2-32] 2의 보수 방식

실제컴퓨터에서정수에대한산술연산은가장널리사용되고있는 2의보수로표현된수들

에대하여이루어지고있으며, 덧셈, 뺄셈, 곱셈과나눗셈등에대하여다양한방법의연

산들이존재한다.

부동 소수점 수의 표현

부동소수점수에대한표현은소수점의위치가필요에따라이동하는표현방법을의미하

는 것으로서 매우 큰 수와 작은 수도 간결한 형태로 표현이 가능하여 정 도가 높은 수를

나타내고자 할 때 많이 사용한다. 부동 소수점 방식은 지수부(exponent part)와 가수부

(mantissa part)로 구성되며, 지수부는 소수점의 위치를 나타내고 가수부는 유효 숫자를

나타낸다. 일반적으로부동소수점수의일반적인형태는다음의식과같다.

N=(-1)S×M×BE

여기서 S는수의부호, M은가수, B는기수(base) 그리고 E는지수를나타내며, 지수부

분에는부호비트가사용되지않는다. 예를들어십진수로표현된수 3.14×1012에서가수

M은 3.14, 기수B는 10이며,지수E는 12다.

[그림 2-33] 부동 소수점 방식

지수부에서사용하는비트수가많아질수록표현할수있는수의범위가증가한다. 또한 가

수부에서사용하는비트수가많아질수록더정확한수를표현할수있게된다.

부동소수점수들사이의산술연산은지수부와가수부가따로처리된다. 또한부동소수점

방식으로 표현된 수에서는 지수에 의해 소수점의 위치가 결정됨으로 인하여 덧셈과 뺄셈

과정이곱셈과나눗셈보다더복잡해진다.

88

▶ 컴퓨터 과학 개론

논리연산

산술연산과더불어산술논리연산장치(ALU)에서수행되는기본적인연산인논리연산에서

사용되는데이터는단어(word) 내의각비트단위로처리될수있다. 예를들어01110001

과 01011011을 AND 연산했을경우각비트에대하여 AND 연산한결과가 01010001

로표현된다. 이러한논리연산들은레지스터에저장된데이터의특정비트값을변경하거

나일부비트들을삽입할때유용하게사용된다.

[표 2-12]기본적인논리연산

P Q NOT P NOT Q P AND Q P OR Q P XOR Q

0 0 1 1 0 0 0

0 1 1 0 0 1 1

1 0 0 1 0 1 1

1 1 0 0 1 1 0

쉬프트 연산

쉬프트연산(shift operation)은레지스터내에서비트값들을왼쪽이나오른쪽으로한자

리씩이동하게하는것을말한다. 쉬프트연산이수행되면자리이동방향에따라 1비트가

삭제되고 그반대끝의비어있는비트자리에 0이추가된다. 예를들면 왼쪽쉬프트(left

shift) 연산이수행되면비트값들이왼쪽으로한자리씩이동하고 가장왼쪽비트의값은

버려지며 가장 오른쪽 비트로는 0값이 들어온다. 마찬가지로 오른쪽 쉬프트(right shift)

에서는모든비트값들이오른쪽으로한자리씩이동하고 가장오른쪽에있던최하위비트

는버려지며가장왼쪽비트인최상위비트로는 0이들어온다. 만일이진수 00100110에

대하여왼쪽쉬프트연산을하면 01001100이된다. 또한이진수 00100110에대하여오

른쪽쉬프트연산을하면 00010011이된다. 하나의값에대하여왼쪽쉬프트연산과오른

쪽 쉬프트 연산을 각각 수행한 후의 값들을 살펴보면 쉬프트 연산 이전의 수가 38

(00100110)이었을때, 이수가왼쪽쉬프트연산을수행한결과값은 76(01001100)이되

었으며 오른쪽쉬프트연산을수행한결과값은 19(00010011)가되었다. 다시말해서왼

쪽쉬프트를하면 2로곱한값이되고 오른쪽쉬프트를하면 2로나눈값이된다. 이와같

이쉬프트는간단한곱셈과나눗셈으로도사용될수있다.

89

2장. 컴퓨터 구조 ◀

[그림 2-34] 왼쪽 쉬프트 연산

[그림 2-35] 오른쪽 쉬프트 연산

제어장치

제어장치는산술논리연산장치(ALU), 레지스터와함께CPU의주요구성요소다. 제어장

치는컴퓨터프로그램의명령어들을해독하고그결과에따라명령어실행에필요한제어

신호들을발생시킨다. 다시말해서인출사이클, 간접사이클및실행사이클과같은명령

어사이클이잘수행되도록각사이클에서의마이크로연산(micro operation)들의수행

순서를제어하는것이다. 예를들어 인출사이클에서수행되는다음과같은마이크로연산

들은세번의 CPU 클럭주기로이루어지며, 첫번째주기와세번째주기에서는각각하나

씩의마이크로연산이수행되나두번째주기에서는두개의마이크로연산들이동시에수

행된다.

C0: MAR ←PC

C1: MBR ←M(MAR), PC ←PC+1

C2: IR ←MBR

인출사이클은모든명령어들에있어서공통인부분이기때문에세개의마이크로명령어

들로구성이되나실행사이클은각명령어마다서로다르다.

명령어가수행되는과정을제어장치중심으로간략하게살펴보기위해수행할명령어의주

소가프로그램카운터(PC)에기억되어있다고가정한다. 먼저프로그램카운터(PC)에기

억된주소를기억장치로보내면기억장치의해당주소에서수행될명령어가인출되어명령

어 레지스터(IR)에 전달된다. 명령어 레지스터(IR)로부터 제어장치 내의 명령어 해독기

(instruction decoder)로명령어가들어오면명령어의연산코드부분을해독하여해당연

90

▶ 컴퓨터 과학 개론

7

산을 수행하기 위한 루틴의 시작 주소를 결정한 후, 제어 주소 레지스터(CAR, Control

Address Register)를통하여제어기억장치(control memory)의특정위치를가리킨다.

제어 기억장치는 마이크로 명령어(micro instruction)들로 이루어진 마이크로 프로그램

(micro program)을저장하는제어장치내부의기억장치다. 제어기억장치로부터읽혀진

마이크로 명령어는 제어 버퍼 레지스터(CBR, Control Buffer Register)에 일시적으로

저장되었다가해독기를통하여제어신호들로나타난다.

[그림 2-36] 간략화한 제어장치의 내부 구성

91

2장. 컴퓨터 구조 ◀

기억장치는 CPU가 작업을 수행하기 위해서 프로그램이나 데이터 등을 일시적으로 또는

일정기간동안저장하기위한모든장치를의미한다. 컴퓨터시스템내에는여러종류의

기억장치들이존재한다. 하드디스크와CD-ROM과같은보조기억장치는대용량의데이

터를저장하고있고주기억장치로데이터전송이이루어지며, CPU의레지스터는주기억

장치또는캐쉬기억장치로부터데이터를읽어들인다.

[그림 2-37] 기억장치의 구성

기억장치계층

CPU는 기억장치에서 명령어와 데이터를 가지고 온다. 이때 만일 CPU가 빠르고 기억장

치가느리다면 CPU는많은시간을기다리게되어컴퓨터시스템의성능을저하시키게된

다. 그러한격차를줄이기위해서가격이높은기억장치를CPU 내부또는그가까이에위

치시킨다. 이러한기억장치는용량이적기때문에 가격이낮고용량이크며 구적으로저

장할 수 있는 보조기억장치가 필요한 것이다. 즉, 대부분의 컴퓨터 시스템에서는 성능과

가격이다양한기억장치들이계층적으로구성되어사용되고있다.

[그림 2-38] 기억장치 계층 구조

92

기억장치

S e c t i o n

1

기억장치계층구조에서살펴보면상위계층으로올라갈수록속도는빠르지만용량이작고

바이트당가격이높아진다. 반면에하위계층으로내려갈수록속도는느리지만용량이크

고바이트당가격이낮아진다. 기억장치를효율적으로사용하기위해서는 CPU가빈번하

게사용하는데이터는상위계층의기억장치에저장해두는것이좋다. CPU가필요로하는

데이터가레지스터에없으면캐쉬기억장치로부터값을읽어들이고 캐쉬기억장치에도없

으면 주기억장치로부터 읽어 들인다. 그리고 주기억장치에도 없으면 보조기억장치로부터

읽어들여주기억장치에기억시켜놓는다. CPU가데이터에접근함에있어서가장적은비

용으로가장높은성능을얻기위해이와같은기억장치계층구조를사용한다.

주기억장치

주기억장치는 수행 중인 프로그램과 그 프로그램이 필요로 하는 데이터 그리고 프로그램

수행중에발생하는중간결과등을저장하는기억장치다. 다시말해서 CPU가직접사용

할수있는정보를기억하고있는기억장치다.

보조기억장치에 저장되어 있는 정보는 CPU가 직접 접근할 수 없다. 그렇기 때문에 일단

주기억장치로읽어들인후에주기억장치에서사용해야한다. 또한CPU에서사용하고처

리된정보도 CPU가직접보조기억장치에기억시킬수없기때문에먼저주기억장치에기

억시킨후그곳에서부터보조기억장치로저장해야한다.

현재거의모든컴퓨터시스템에서의주기억장치들은반도체칩(semiconductor chip)을

사용한다.이러한반도체기억장치에는RAM과ROM이있다. RAM에저장된각데이터들

은CPU가전송하는주소에의해지정되어직접접근되며 칩내의어느위치에서나접근하

는데걸리는시간은같다. ROM은제조과정에서데이터들을칩속에내장시키고내용을

수정하는것을불가능하게한다. 따라서읽는것만가능하기때문에시스템초기화프로그

램이나제어장치의마이크로프로그램등과같은변경될수없는데이터를저장하는데사

용된다. RAM과ROM에관한설명은 1장을참고하도록한다.

93

2장. 컴퓨터 구조 ◀

2

[그림 2-39] 주기억장치의 분류

캐쉬기억장치

반도체기억장치를사용하면서 CPU에서주기억장치에접근하는속도가크게향상되었지

만 CPU의 속도를 따라갈 수는 없다. 즉, CPU는 명령어나 데이터를 인출하는 과정에서

많은시간을기다려야한다. 캐쉬기억장치(cache memory)는이러한 CPU와주기억장

치사이의속도차이로인한문제를방지하기위하여CPU와주기억장치사이에설치한접

근속도가빠른소규모기억장치다.

캐쉬기억장치(이하캐쉬라고한다)는수행중인명령어나자주사용하는데이터를저장하

다가 CPU의 요청이 있을 경우 즉시 제공함으로써 명령 수행이 신속하게 이루어지도록

하는 역할을 한다. 캐쉬는 CPU와 가까운 곳에 위치하며 CPU 칩 내부에 포함되기도 한

다. 또한캐쉬접근시간은주기억장치의접근시간보다 5~10배정도빠르다.

[그림 2-40] 캐쉬 기억장치

CPU가기억장치로부터명령어나데이터를읽으려고할때는먼저캐쉬를조사한다. 이때

캐쉬에명령어나데이터가있다면즉시 CPU로전달되지만, 만일없다면주기억장치로부

터인출되어야하기때문에시간이더걸리게된다. CPU가기억장치에접근할때 원하는

정보가캐쉬에있으면적중(hit)되었다고하며 그렇지않을경우에는실패(miss)하 다고

한다.

94

▶ 컴퓨터 과학 개론

3

캐쉬를 가진 컴퓨터의 성능을 나타내는 척도로서 적중률(hit ratio)을 정의하는데 이것은

캐쉬에적중된횟수를CPU에의한기억장치총접근횟수로나눈것이다.

캐쉬에적중된횟수적중률=

기억장치총접근횟수

CPU가원하는정보가캐쉬에없을때, 즉실패했을때에는교체알고리즘을사용하여원

하는정보를주기억장치에서캐쉬로옮겨야한다. 교체알고리즘중에서가장널리사용되

고 있는 알고리즘에는 LRU(Least Recently Used) 방식, FIFO(First-In First-Out)

방식, LFU(Least Frequently Used) 방식, 임의(random) 교환방식등이있다.

LRU 방식은최근에가장적게사용한블록을교체하는것으로써일반적으로가장효과적

인 알고리즘이다. FIFO 방식은 가장 오랫동안 있었던 블록을 교체하는 알고리즘이며

LFU 방식은사용빈도가가장적은블록을교체하는알고리즘이다. 임의교환방식은교

환이가능한블록중에서임의의블록과교환하는알고리즘이지만적중률은좋지않은편

이다.

보조기억장치

CPU에서처리될명령어나데이터들은주기억장치에저장되어사용되지만대량의데이터

를 구적으로저장할수는없다. 그렇기때문에컴퓨터시스템을더욱효율적으로사용하

려면보조기억장치를두고대량의데이터를저장해놓고있다가 CPU에서필요로할때주

기억장치로호출하여사용하면된다. 이와같이대량의정보를저장하고관리하기위한장

치를보조기억장치라고한다.

보조기억장치의 데이터를 접근하는 방법으로써 기억장치를 분류하면 순차 접근 기억장치

(SASD, Sequential Access Storage Device)와 직접 접근 기억장치(DASD, Direct

Access Storage Device)로나누어볼수있다.

순차접근은보조기억장치에저장된파일로부터미리정해놓은순서대로데이터를검색해

나가는 것을 의미한다. 순차 접근에서는 레코드들이 차례차례로 읽혀지기 때문에 순차적

으로접근되는파일들은주로일괄처리(batch processing)에사용되고있으며, 실시간

처리(real time processing)의 경우에는 거의 사용되지 않는다. 자기 테이프(magnetic

95

2장. 컴퓨터 구조 ◀

4

tape)에저장된데이터를검색하는데는순차접근이유일한방법이며, 자기디스크(magnetic

disk)의데이터도순차접근이가능하다.

직접접근은보조기억장치에있는데이터를빨리검색할수있는접근방식으로서, 어떤파

일내에있는특정한레코드를찾을때, 다른레코드를순차적으로읽지않고원하는레코

드만을직접접근하는것을의미한다. 직접접근되기때문에순차접근파일과는달리정해

진순서로저장될필요는없다. 그런이유에서직접접근파일들은실시간처리시스템에서

는반드시필요하며, 따라서직접접근할필요가있는파일은자기디스크와같은직접접

근기억장치(DASD)에저장되어야한다. 자기디스크는하드디스크 또는디스크라고부

르기도한다.

현재사용되고있는보조기억장치의종류에관한설명은 1장을참고하도록한다.

96

▶ 컴퓨터 과학 개론

컴퓨터를 이용하여 프로그램을 수행하려면 프로그램과 이에 필요한 데이터를 키보드

(keyboard)와같은입력장치를통하여입력받고, 입력된데이터는 CPU가처리할수있

도록주기억장치에기억된다. 또한CPU에의해처리된결과들은모니터나프린터와같은

출력장치를 통하여 다양한 형태로 출력된다. 입력장치는 컴퓨터 외부에 존재하는 정보를

컴퓨터가이해할수있는코드형태로변환하는장치를의미하고, 출력장치는컴퓨터내부

에존재하는정보를사람이사용하는언어나또는컴퓨터에연결되어있는다른기계가사

용하는신호로변환하는장치다. 따라서컴퓨터시스템에서입력장치가입력데이터를판

독하는방법과출력장치가데이터를출력매체에나타내는방법은입출력장치의종류에따

라다양하다.

기억장치와입출력장치의동작에는차이가있는데, 기억장치와입출력장치사이에정보교

환이원활하게이루어지도록하려면이차이점을보완하는기능이필요하다. 먼저, 두장

치간의가장큰차이점은동작속도다. 기억장치의동작속도에비해입출력장치의속도는

기계적인동작을필요로하기때문에상당히느리다. 또한 I/O 장치들과CPU가사용하는

데이터 형식의 길이가 서로 다른 경우가 많다. 오류 발생률에 있어서도 CPU와 기억장치

사이에서는일반적으로짧은거리에서데이터의이동이이루어지지만, 입출력의경우에는

입출력장치와매체사이에또는데이터전달회선상에서데이터가이동할때신호의감쇠

나잡음으로인한왜곡현상이발생할가능성이있으므로입출력과정에서의오류발생률

은크다고말할수있다.

이와같이기억장치와입출력장치의동작에는현저한차이가있으므로입출력장치를기억

장치에직접연결시켜서사용할수는없다. 따라서기억장치와입출력장치사이에서데이

터를 교환하는 역할을 하는 입출력 버스(I/O bus)나 입출력 인터페이스(I/O interface)

를 통하여 CPU와 간접적으로 연결하고, 이들의 동작을 입출력장치의 전용 제어기(I/O

controller)에의해제어를받도록하는보완기능이필요하다.

97

입출력장치

S e c t i o n

[그림 2-41] 입출력장치의 구성

입출력방식

입출력 방식은 CPU에 의한 입출력 방식, DMA(Direct Memory Access)에 의한 입출

력방식및채널(channel)에의한입출력방식으로나누어볼수있다.

먼저CPU에의한입출력방식은입출력의모든시작과종료를CPU가수행하는프로그램

에의한입출력방식과인터럽트에의한입출력방식으로구분된다. 프로그램에의한입출

력방식은CPU가입출력장치를계속감시해야하기때문에시간적낭비가심하고처리효

율이떨어진다. 반면에인터럽트에의한입출력방식은CPU가입출력제어기에게명령을

전송하고, CPU는 다른 작업을 수행한다. 이때 제어기는 입출력장치를 제어하여 입출력

명령을 수행하고 수행이 완료되면 CPU로 인터럽트 신호를 전송하며, CPU는 인터럽트

신호를받는즉시원래의프로그램으로복귀하여수행을계속하는방식이다. 다시말해서

CPU가 입출력장치의 상태를 정기적으로 점검하는 부담이 줄어들기 때문에 CPU는 입출

력동작을작동시켜놓고다른작업을찾아처리할수있다.

CPU에의한입출력방식중에서프로그램에의한입출력방식을이용하면입출력요구가

발생했을 때 CPU가 입출력 작업만을 수행함으로써 고속으로 입출력 처리가 가능한 반면

에다른작업을하지못한다는단점이있고, 인터럽트에의한입출력방식은 CPU가다른

작업의일을처리할수있는대신입출력전송률이느린단점이있다. 이런두방식의단점

을보완하기위해나온것이DMA다. DMA는CPU의레지스터를거치지않고직접주기

억장치와입출력장치사이에서데이터전송이이루어지게하기때문에효율성이높다. 먼

저 CPU가작업을원할때에 DMA에게명령을보내어입출력동작을맡긴후 CPU는다

른작업을처리한다.

98

▶ 컴퓨터 과학 개론

1

그리고DMA는 CPU를이용하지않고한번에한단어씩직접주기억장치로모든데이터

블록을 전송한다. 전송이 끝나면 DMA는 CPU에게 인터럽트 신호를 보냄으로써 동작을

마친다. 이방식의단점은DMA에의해데이터전송이시작되면CPU가주기억장치를제

어하지못하기때문에잠시유휴(idle) 상태가된다는점이다.

[그림 2-42] 입출력 버스를 이용한 DMA 구성

채널에의한입출력방식은가장고성능의입출력방식으로입출력처리기(I/O processor)

라고도한다. 입출력처리기는입출력과관련된거의모든동작들을수행하기때문에CPU

가입출력동작에대한부담을거의가지지않는다. 채널과DMA의차이점은채널은CPU

를거쳐서주기억장치에접근하지만 DMA는CPU를거치지않고주기억장치에바로접근

한다는점이다.

99

2장. 컴퓨터 구조 ◀

현재컴퓨터는기초과학및응용과학뿐만아니라모든산업분야에서응용되고있다. 이

로 인하여 컴퓨터를 이용한 결과 추출에 의존도가 높아짐으로써 컴퓨터 시스템의 성능에

대한요구가지속적으로높아지고있으며, 컴퓨터시스템의새로운구조에대한관심과연

구가활발히이루어지고있다. 특히초고 도집적회로(VLSI) 기술의발전으로새로운고

성능컴퓨터구조의개발이가능하게되었고, 동시에여러명령어를실행하여전체프로그

램의실행시간을줄일수있는높은성능을가진병렬처리시스템에관한연구가진행되고

있다.

병렬처리(parallel processing)는여러개의프로세서가동시에정보를처리하는기술을

말한다. 병렬 처리의 목적은 처리 속도 향상과 처리율의 증가에 있다고 볼 수있다. 이를

위해서는추가적인하드웨어가필요하기때문에시스템비용이증가한다.

플린종류

플린(Flynn)의분류는컴퓨터시스템을구조적특징에따라분류하는방식중에서가장널

리사용되고있는방식이다. 이방식에서플린은프로세서의내부구조와프로세서들사이

의 연결 구조와 시스템 사이의 정보 흐름 등을 고려하여 컴퓨터를 네 가지로 분류하고 있

다. 여기서 명령어스트림(instruction stream)은프로세서에의해실행되기위하여순서

대로나열된명령어들의집합을말하며, 데이터스트림(data stream)은그명령어들을실

행하는데필요한순서대로나열된데이터들의집합을말한다.

SISD(Single Instruction stream Single Data stream)

단일 명령어, 단일 데이터 스트림이다. 일반적으로 사용하는 개인용 컴퓨터와 같은 단일

프로세서 시스템을 말하며 CPU와 산술논리연산장치(ALU)가 각각 하나씩 존재한다. 이

것은한번에하나씩의명령어와데이터를순서대로처리한다.

100

병렬 컴퓨터 구조

S e c t i o n

1

[그림 2-43] SISD

SIMD(Single Instruction stream Multiple Data stream)

단일명령어, 다중데이터스트림이다. 공통의제어장치아래에여러개의처리장치를두

고 있는 구조로서 하나의 연산에 대하여 여러 데이터가 동시에 처리된다. 배열 프로세서

등이여기에속한다.

[그림 2-44] SIMD

MISD(Multiple Instruction stream Single Data stream)

다중명령어, 단일데이터스트림이다. 여러개의프로세서들이서로다른명령어들을실

행하지만 처리하는데이터스트림은한개다. 즉, 여러명령이하나의데이터입력에대하

여동작하는경우다. 실제로이것은비현실적이기때문에구현된경우가없다.

[그림 2-45] MISD

101

2장. 컴퓨터 구조 ◀

MIMD(Multiple Instruction stream Multiple Data stream)

다중 명령어, 다중 데이터 스트림이다. 대부분의 멀티프로세서 시스템을 의미하며, 여러

개의프로세서들이서로다른명령어들과데이터들을동시에처리한다.

[그림 2-46] MIMD

파이프라인처리

파이프라인처리(pipeline processing)는병렬처리방법중의하나다. 파이프라인처리

는하나의프로세스를서로다른기능을가진여러개의서브프로세스(subprocess)로분

할하여각서브프로세스가동시에서로다른데이터를취급하도록한다. 이때기능별로나

누어진서브프로세스를세그먼트(segment)라고하며, 각세그먼트마다레지스터를설치

해둔다. 파이프라인 처리는 각각의 세그먼트에서 수행된 연산결과를 다음 세그먼트로 연

속적으로넘어가게하여마지막세그먼트를통과하면최종적인연산결과를얻게하는병렬

처리방법이다.

파이프라인의 종류에는 명령어 파이프라인(instruction pipeline)과 산술 파이프라인

(arithmetic pipeline)이있다. 명령어파이프라인은 CPU의명령어사이클내에서의파

이프라인으로 명령어가 인출되어서 해석되는 동안 다음 명령어를 연속적으로 인출함으로

써명령어인출과실행이중첩되어동시에발생하게된다. 명령어파이프라인은여러운

체제에서구현되며, 특히여러개의명령어들을순차적으로처리하고자할때많이사용된

다. 산술 파이프라인은 산술논리연산장치(ALU)에서 필요로 하는 연산으로 부동 소수점

연산과곱셈, 과학계산등을파이프라인으로수행가능하도록구성한다. 병렬처리방법

으로 파이프라인 처리 이외에 배열 프로세서(array processor)나 벡터 프로세서(vector

processor) 등을이용한방법도있다.

102

▶ 컴퓨터 과학 개론

2

논리 대수(logic algebra)라고도 부르는 부울 대수(boolean algebra)는 디지털 회로의 설계와 분석을 쉽게하기위해서사용하는이진변수와논리연산을나타내는대수다.

부울대수의기본적인논리연산에는논리곱(AND), 논리합(OR), 논리부정(NOT)이있으며, 디지털신호를나타내는데사용되는논리회로를게이트(gate)라고한다.

컴퓨터시스템은프로그램을실행, 데이터의저장과이동, 그리고각장치를제어하는기능을수행한다.

중앙처리장치(CPU)는 명령어를 인출하고 해독하며, 경우에 따라 데이터를 인출하고 처리한 후 저장하는기능을수행한다.

CPU는 산술논리연산장치(ALU, Arithmetic and Logical Unit), 제어장치(control unit)와 레지스터들(registers)로구성된다.

산술논리연산장치(ALU)는산술연산과논리연산을수행한다.

제어장치는 명령어들을 해독하고, 명령어 실행에 필요한 동작들을 수행하기 위하여 제어 신호들을 발생시킨다.

레지스터(register)는데이터를임시저장하는기능을가진CPU 내부에있는고속의기억장치다.

CPU 동작은 명령어 인출(instruction fetch)과 명령어 실행(instruction execution)의 두 단계로 나누어지며, 이 두 단계를 명령어 사이클(instruction cycle)이라고 한다. 서브사이클(subcycle)로서 인출 사이클(fetch cycle)과 실행 사이클(execution cycle) 외에, 더 세분화하여 간접 사이클(indirect cycle)과 인터럽트사이클(interrupt cycle)이있다.

컴퓨터의처리율을높이기위한방법인명령어파이프라이닝(instruction pipelining)은한명령어의수행이끝나기 전에 다른 명령어의 수행을 시작하는 방법으로서, 연산과정을 몇 개의 단계로 구분하여 각 단계가중첩되어동시에수행되도록한다.

컴퓨터의구조에따라명령어형식과그에따른명령어집합의종류와수가다르다. 이때정의되어있는명령어들의집합을명령어세트(instruction set)라고한다.

주소지정 방식(addressing mode)은 연산에 사용될 데이터가 기억장치의 어디에 위치하는지를 지정하는방법으로써, 제한된명령어비트들을이용하여다양하게오퍼랜드를지정할수있도록여러가지방식들이제안되어있다.

정수의표현은양의정수와음의정수를표현하는방식으로나눌수있다. 특히, 음의정수를표현하기위한방법으로는부호화-크기(signed magnitude), 1의보수(1’s complement) 및 2의보수(2’s complement)방식이있다.

103

요약✲

1

2

34

5

67

89

10

11

12

13

레지스터 내에서 비트 값들을 왼쪽이나 오른쪽으로 한 자리씩 이동하게 하는 것을 쉬프트 연산(shiftoperation)이라고한다.

대부분의컴퓨터시스템에서는성능과가격이다양한기억장치들이계층적으로구성되어사용되고있다.

캐쉬 기억장치(cache memory)는 CPU와 주기억장치 사이의 속도 차이로 인한 문제를 방지하기 위하여CPU와주기억장치사이에설치한접근속도가빠른소규모기억장치다.

보조기억장치의 데이터를 접근하는 방법으로써 기억장치를 분류할 경우 순차 접근 기억장치(sequentialaccess storage device)와직접접근기억장치(direct access storage device)로나누어볼수있다.

입출력장치를기억장치에직접연결하여사용할수는없으므로입출력버스(I/O bus)나입출력인터페이스(I/O interface)를 통하여 CPU와 간접적으로 연결하고, 이들의 동작을 입출력장치의 전용 제어기(I/Ocontroller)에의해제어를받도록하는보완기능이필요하다.

입출력 방식은 CPU에 의한 입출력 방식, DMA(Direct Memory Access)에 의한 입출력 방식 및 채널(channel)에의한입출력방식으로나누어볼수있다.

여러개의프로세서가동시에정보를처리하는기술을병렬처리(parallel processing)라고하며, 병렬처리의목적은처리속도향상과처리율의증가에있다고볼수있다.

플린(Flynn)의분류는컴퓨터시스템을구조적특징에따라분류하는방식중에서가장널리사용되고있는방식으로써, SISD(Single Instruction stream Single Data stream), SIMD(Single Instruction streamMultiple Data stream), MISD(Multiple Instruction stream Single Data stream), 그리고MIMD(Multiple Instruction stream Multiple Data stream)으로분류한다.

파이프라인처리(pipeline processing)는하나의프로세스를서로다른기능을가진여러개의서브프로세스(subprocess)로분할하여각서브프로세스가동시에서로다른데이터를취급하도록하는병렬처리방법중의하나다.

104

요약✲

14

1516

17

18

19

20

21

22

부울함수F=AB+AB'+A'B를간소화하시오.

시스템버스의역할과구성에대하여설명하시오.

다음레지스터들의기능을설명하시오.

⑴누산기(accumulator)

⑵프로그램카운터(program counter)

⑶기억장치주소레지스터(memory address register)

⑷기억장치버퍼레지스터(memory buffer register)

명령어사이클(instruction cycle)에대하여설명하시오.

인출사이클에서수행되는동작을마이크로연산으로표현하시오.

기억장치의내용과누산기(AC)의내용에대하여덧셈을수행한후그결과를다시누산기(AC)에저장하는

ADD 명령에대한마이크로연산을나타내고설명하시오.

명령어형식의종류와구성에대하여설명하시오.

다음주소지정방식들에대하여설명하시오.

⑴즉시주소지정방식(immediate addressing mode)

⑵레지스터주소지정방식(register addressing mode)

⑶직접주소지정방식(direct addressing mode)

⑷변위주소지정방식(displacement addressing mode)

⑸간접주소지정방식(indirect addressing mode)

십진수-100을다음의방식들을사용하여각각8비트로표현하시오.

⑴부호화-크기(signed magnitude)

⑵1의보수(1’s complement)

⑶2의보수(2’s complement)

제어주소레지스터(control address register)와제어버퍼레지스터(control buffer register)의기능을설

명하시오.

105

연습문제✲

1

2

3

4

5

6

7

8

9

10

기억장치의계층구조에대하여설명하시오.

캐쉬기억장치(cache memory)의역할과널리사용되고있는교체알고리즘들에대하여설명하시오.

입출력장치를기억장치에직접연결하여사용할수는없는이유를설명하시오.

DMA(Direct Memory Access)에의한입출력방식에대하여설명하시오.

여러가지병렬처리방법들에대하여조사한후설명하시오.

106

연습문제✲

11

12

13

14

15

1.『임베디드 하드웨어 이해와 설계(Designing Embedded Hardware)』John Catsoulis 저, 박재호, 이해 역,

한빛미디어, 2003

이책은실전에서널리사용하는컴퓨터부품과각종인터페이스장치를대상으로설명을진행하고있기에이론에치우친

컴퓨터아키텍처나디지털이론책과달리매우현실적이며자신감을불러일으켜준다. 이책은전자공학을본격적으로전

공하지는않았지만임베디드부문이나컴퓨터아키텍처에관심이많은소프트웨어공학도가읽기에딱알맞는책이다.

2. 『A Retargetable C Compiler : Design and Implementation』Christopher W. Fraser, David R.

Hanson, Addison Wesley, 1995

컴퓨터(특히 CPU) 아키텍처를제대로이해하기위해서는반드시컴파일러제작방법을익혀야한다. RISC는물론이고

CISC 계열에서조차컴파일러의코드생성기법이나최적화기법을통해역으로 CPU 아키텍처를좀더정확하게이해할

수있기때문이다. 이책은이론적으로컴파일러이론을다루다가끝나는기존교과서와달리실제로사용할수있는컴파

일러를만드는방법을소개하는몇안되는책이다.

3. 『The soul of a new machine』Kidder, Tracey, Little Brown & Co, 2000

이책은지금은역사에서사라져버린디지털이큅먼트와치열하게경쟁하던데이터제너럴사의이 컴퓨터개발과정을너

무나생생하게다루고있는소설이다. 컴퓨터아키텍처와관련해서각종기술적인난관을개발자들이어떻게풀어나가는지

처음부터끝까지손에땀이나도록흥미진진하게읽을수있을것이다. 컴퓨터공학도라면반드시읽어야하는필독서다.

4. http://arstechnica.com/cpu/index.html

펜티엄 4나PowerPC 970과같은신형CPU에대한설계사상과특징, 장단점을비교해놓은다양한아티클을포함하고

있다. 교과서에나온여러가지이론을상용CPU에서실제로어떻게적용하고있는지궁금했던독자라면반드시읽어봐야

할내용으로가득차있다.

5. http://www.cs.princeton.edu/software/lcc/

앞서소개한『A Retargetable C Compiler』에서설명하는 lcc의원시코드와각종참고자료를제공하는사이트다. 책

에서다룬 lcc 3.6 버전은물론이고, 기능을향상시킨 lcc 4.2 버전까지원시코드를내려받을수있다. 책의정오표도

있으므로책을읽기앞서미리인쇄해놓기바란다.

6. http://bwrc.eecs.berkeley.edu/CIC/archive/cpu_history.html

CPU 역사를흥미진진하게다루고있는아티클이다. Z80과 6502와같이 70년~80년대를풍미했던 8비트CPU부터시

작해서 64비트 CPU 시대를개막한 Alpha에이르기까지다양한 CPU를주제별로모아서정리하고있다. 2000년도까

지만나와있으므로요즘몇년사이에새롭게등장한CPU가빠져있다는점이조금아쉽다.

개발자가추천하는

좋은책, 좋은사이트

107

박재호([email protected])

(주)휴비츠임베디드시스템개발