학습 개요
- 컴퓨터 구조에서는 컴퓨터가 하드웨어적으로 어떤 요소로 이루어졌으며, 각 구성 요소가 어떻게 연결되어 상호 작용하는 지를 다룸
- 컴퓨터 하드웨어 측면에서 기본 소자인 논리 게이트와 이를 사용한 다양한 논리 회로에 대해서 살펴보고 이를 바탕으로 컴퓨터 하드웨어의 주요 구성 요소 중의 하나인 기억 장치의 구현과 동작에 대해서 학습함
학습 목표
- 불 대수, 논리 연산, 논리 게이트 등의 기본적인 개념을 이해할 수 있음
- 다양한 논리 회로의 기능, 동작 그리고 회로 구성을 이해할 수 있음
- ROM과 RAM의 구현 방법, 그리고 기억 장치의 계층 구조와 관련된 개념을 이해할 수 있음
강의록
불 대수와 논리 게이트
컴퓨터 하드웨어의 기본 구성

시스템 버스
- 중앙 처리 장치, 기억 장치, 입출력 장치 간의 물리적 연결 및 데이터 교환의 통로 역할을 하는 버스
- 전송되는 데이터 내용에 따른 구분 → 주소 버스, 데이터 버스, 제어 버스
- 주소 버스
- CPU가 기억 장치나 입출력 장치의 주소 정보를 전송하는 신호 선의 집합
- 버스의 폭이 시스템의 메모리 용량을 결정
- n개의 신호 선이면 2ⁿ개의 주소 지정 가능
- 단방향 버스
- 데이터 버스
- CPU와 기억 장치/입출력 장치 사이에 데이터 전송을 위한 신호 선의 집합
- 버스의 폭 → 한 번에 전송할 수 있는 비트의 수 → 워드
- 양방향 버스
- 제어 버스
- CPU와 시스템 내의 각종 장치의 동작을 제어하기 위한 다양한 신호들의 통로
- 버스의 폭(제어 신호의 수)은 CPU나 시스템의 구성에 따라 달라짐
- 양방향 버스
불 대수 (Boolean Algebra)
- 이진 변수의 논리 연산을 다루는 대수
- 영국의 수학자 조지 불(George Boole)
- 논리적인 문제를 해결하기 위한 수학적 방법 → 논리 대수, 스위치 대수
![image.png]()
기본 논리 연산의 진리표
논리 합 (Union, OR)
| 입력 X | 입력 Y | 출력 F = X + Y | | — | — | — | | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 1 |
- X ∪ Y, X ∨ Y
논리 곱 (Intersection, AND)
| 입력 X | 입력 Y | 출력 F = X • Y | | — | — | — | | 0 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 |
- XY, X ∩ Y, X ∧ Y
논리 부정 (Negation, NOT)
| 입력 X | 출력 F = X’ | | — | — | | 0 | 1 | | 1 | 0 |
- ~X, X̄
논리 게이트
- 논리 연산을 하드웨어로 구현한 것
- 논리 회로를 구성하는 기본 소자
![image.png]()
복합 논리 연산의 진리표
NAND
입력 X 입력 Y 출력 F 0 0 1 0 1 1 1 0 1 1 1 0 NOR
입력 X 입력 Y 출력 F 0 0 1 0 1 0 1 0 0 1 1 0 XOR
입력 X 입력 Y 출력 F 0 0 0 0 1 1 1 0 1 1 1 0
논리 게이트의 완전 집합
- 원하는 임의의 회로를 구성할 수 있는 게이트들의 부분 집합
- {NOT, AND}, {NOT, OR}, {AND, XOR}, {OR, XOR}, {NAND}, {NOR} 등
- NAND 게이트만 사용
- NOT, OR, AND의 기능 구현이 가능
- X′ = (X ⋅ X)′
- X + Y = ((X ⋅ X)′ ⋅ (Y ⋅ Y)′)′
- X ⋅ Y = ((X ⋅ Y)′ ⋅ (X ⋅ Y)′)′
불 대수의 기본 법칙
| 항등 법칙 | X + 0 = X | X + 1 = 1 | X ⋅ 0 = 0 | X ⋅ 1 = X |
|---|---|---|---|---|
| 멱등 법칙 | X + X = X | X ⋅ X = X | ||
| 지배 법칙 | X + X′ = 1 | X ⋅ X′ = 0 | ||
| 교환 법칙 | X + Y = Y + X | X ⋅ Y = Y ⋅ X | ||
| 결합 법칙 | X + (Y + Z) = (X + Y) + Z | X ⋅ (Y ⋅ Z) = (X ⋅ Y) ⋅ Z | ||
| 분배 법칙 | X + (Y ⋅ Z) = (X + Y) ⋅ (X + Z) | X ⋅ (Y + Z) = (X ⋅ Y) + (X ⋅ Z) | ||
| 드모르간 법칙 | (X + Y)′ = X′ ⋅ Y′ | (X ⋅ Y)′ = X′ + Y′ | ||
| 흡수 법칙 | X + X ⋅ Y = X | X ⋅ (X + Y) = X | ||
| 이중 부정 | (X′)′ = X |
불 대수와 논리 회로
- 불 함수 ↔ 논리 회로 형태로 표현 가능
- 불 함수의 간소화
- F = AB′ + B
- = B + AB′ ← 교환 법칙
- = (B + A)(B+B′) ← 분배 법칙
- = (B + A) ⋅ 1 ← 지배 법칙
- = A + B ← 항등 법칙
- F = AB + AC + AB′C′
- = A(B + C + B′C′) ← 분배 법칙
- = A((B+C)+(B+C)′) ← 드모르간 법칙
- = A ⋅ 1 ← 지배 법칙
- = A ← 항등 법칙
- F = AB′ + B
논리 회로
논리 회로의 종류
- 논리 회로
- 논리 게이트들로 구성된 회로
- 종류
- 조합 회로(combinational circuit)
- 순서 회로(순차 회로, sequential circuit)
- 조합 회로
출력 값이 단순히 현재 입력 값의 조합에 의해서만 결정되는 회로
![image.png]()
전 가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등
- 주로 연산을 위해서 사용하는 회로가 해당
- 순차 회로
- 연산의 각 단계마다 회로의 특정 상태가 저장되고 참조되는 회로
- 출력 값이 입력 값과 기억 소자에 저장된 현재 상태에 따라 결정됨
![image.png]()
- 카운터, 레지스터 등
- 연산의 각 단계마다 회로의 특정 상태가 저장되고 참조되는 회로
플립플롭 (flip-flop)
- 1비트의 이진 정보를 저장할 수 있는 장치
- 입력 신호에 의해서 상태를 바꾸도록 지시할 때까지는 현재의 이진 상태를 유지하는 논리 소자
- 종류(입력의 개수와 상태를 변화 시키는 방법에 따라)
- RS, T, D, JK 등
- RS (Reset-Set) 플립플롭
RS 래치
![image.png]()
RS 플립플롭
![image.png]()
블록도
![image.png]()
RS 래치의 동작
![image.png]()
- (0, 1) → 세트 상태
- (1, 0) → 리셋 상태
- (0, 0) → 무 변화 상태
- (1, 1) → 불가(미정 상태)
T (Toggle) 플립플롭

- T = 0
- Q의 이전 상태와 다음 상태가 같음
- 상태 변화 없이 그대로 유지
- 1 → 1
- 0 → 0
- T = 1
- Q의 이전 상태의 반대 값이 다음 상태 값
- 0 → 1
- 1 → 0
- clock pulse
- 주기적으로 생성되는 신호로 컴퓨터 내의 시스템 구성 요소들의 작동을 동기화 해주는 역할
전 가산기 Full Adder
- 아랫 자리에서 올라오는 올림 수 carry를 고려한 가산기
- 가산기
- 두 이 진수를 입력 받아서 더하는 회로
- 반 가산기 Half Adder
- 아랫 자리의 올림 수를 고려하지 않는 가산기
![image.png]()
- 가산기
진리 표 작성
![image.png]()
불 대수식 생성 및 간소화
1 2
S = X' · Y' · Cᵢₙ + X' · Y · Cᵢₙ' + X · Y' · Cᵢₙ' + X · Y · Cᵢₙ = X ⊕ Y ⊕ Cᵢₙ1 2
Cₒᵤₜ = X' · Y · Cᵢₙ + X · Y' · Cᵢₙ + X · Y · Cᵢₙ' + X · Y · Cᵢₙ = (X · Y) + (Cᵢₙ · (X ⊕ Y))논리 회로도
1 2
S = X ⊕ Y ⊕ C Cₒᵤₜ = (X ⋅ Y) + (Cᵢₙ ⋅ (X ⊕ Y))
![image.png]()
4 비트 전 가산기
![image.png]()
디코더
- n비트의 이진 코드를 최대 2ⁿ개의 서로 다른 정보로 변환하는 장치
- 출력
- 2ⁿ개 중에서 오직 1개만 1, 나머지는 모두 0
블록도
![image.png]()
진리표
![image.png]()
논리 회로도
![image.png]()
- 출력
- 주소 방식으로 주어진 입력으로부터 각각의 하드웨어 구성 요소를 개별적으로 구동하기 위해 주로 사용
- 주 기억 장치에 접근할 때도 디코더의 기본 원리가 그대로 적용됨
![image.png]()
멀티플렉서 multiplexer
- 여러 개의 입력 선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로
- 데이터 선택기
![image.png]()
어떤 장치(회로)로부터 들어오는 데이터가 버스를 사용할 것인가를 정하는 경우에 사용
![image.png]()
출력 = (A ⋅ S₁′ ⋅ S₂′) + (B ⋅ S₁′ ⋅ S₂) + (C ⋅ S₁ ⋅ S₂′) + (D ⋅ S₁ ⋅ S₂)
![image.png]()
카운터
- 클록 펄스가 입력될 때마다 미리 정해진 순서에 따라 상태가 변하는 장치
- 매번 구동 시마다 저장된 이 진수가 1씩 증가하는 장치
- 외부에서의 입력/출력이 없으며, 클록 펄스를 통해서만 상태가 변화함
![image.png]()
기억 장치
ROM
- ROM (Read-Only Memory)
- 비휘발성
- 읽기 전용
- 내용이 항상 고정되어 있어 조합 회로 구성 가능
설계자가 저장되는 이진 정보를 결정하고, 기억 장치 내에서 필요한 내부 연결 패턴을 형성해서 구현
![image.png]()
주소 → 2비트, 내용 → 5비트
![image.png]()
RAM
- RAM (Random Access Memory)
- 읽기/쓰기 모두 가능
- 상태를 저장/변경할 수 있는 순서 회로로 구성 가능
1 비트 기억 소자
![image.png]()
![image.png]()
- 읽기/쓰기 모두 가능
- DRAM (Dynamic RAM)
- 플립플롭이 아닌 축전지로 구현
- 시간이 지남에 따라 전류가 방전
- 주기적인 리프레시 과정 필요
기억 장치의 계층 구조 (memory hierarchy)
- 접근 속도와 저장 용량에 따라 계층적으로 분류 가능
- CPU가 데이터에 접근함에 있어서 가장 적은 비용으로 가장 높은 성능을 얻기 위한 전략
- 참조의 지역성 (locality of reference)
- 공간적 지역성
- 기억 장소의 특정 위치에 있는 정보를 참조하고 있을 때 다음 순간에 접근할 위치는 현재의 접근 위치와 근접해 있을 가능성이 큼
- 시간적 지역성
- 최근에 접근한 위치들이 가까운 미래에 다시 접근할 가능성이 큼
- 공간적 지역성
기억 장치의 계층 구조

- 레지스터
- CPU 내부에 존재하여 각종 연산에 직접적으로 사용
- CPU가 직접 접근 가능
- 캐시 기억 장치
- CPU와 주 기억 장치 사이에 위치한 접근 속도가 빠른 소규모 기억 장치
- CPU와 주 기억 장치 간의 속도 차이를 줄여주는 역할
- 수행 중인 명령어와 자주 사용되는 데이터를 저장하였다가 CPU 요청이 있을 시 즉시 제공
- CPU가 직접 접근 가능
- CPU와 주 기억 장치 사이에 위치한 접근 속도가 빠른 소규모 기억 장치
- 주 기억 장치
- 현재 수행 중인 프로그램 코드와 데이터 저장
- CPU가 직접 접근 가능
- 보조 기억 장치
- 반영구적인 저장
- 사용하려면 주 기억 장치에 적재되어야 함
- 주 기억 장치로 적재되어야만 CPU가 접근 가능
정리 하기
- 불 대수와 논리 게이트
- CPU (제어 장치, 산술 논리 연산 장치, 레지스터), 기억 장치, 입출력 장치, 시스템 버스
- 불 대수, 논리 연산, 논리 게이트
- 논리 회로
- 조합 회로 vs 순서 회로
- 플립플롭 → RS, T
- 조합 회로 → 전 가산기, 디코더, 인코더, 멀티플렉서, 디 멀티플렉서 등
- 순서 회로 → 카운터, 레지스터 등
- 기억 장치
- ROM → 조합 회로 구성 가능 (1개의 디코더와 여러 개의 OR 게이트)
- RAM → 순서 회로 구성 가능 (비트 기억 소자(RS 플립플롭 사용), 디코더, OR 게이트)
- 계층 구조 → 레지스터, 캐시 기억 장치, 주 기억 장치, 보조 기억 장치
연습 문제
시스템 버스의 종류에 해당하지 않는 것은?
a. 입출력 버스
- 시스템 버스는 CPU와 컴퓨터 내의 다른 장치 간의 물리적 연결 및 데이터를 교환하는 통로의 역할을 담당하며, 전송 되는 데이터가 의미하는 내용에 따라 제어 버스, 주소 버스, 데이터 버스로 구분 됨
- 시스템 버스의 종류
- 데이터 버스
- 주소 버스
- 제어 버스
두 이진 입력 A와 B가 서로 다른 값을 가질 경우에만 출력 X가 1의 값을 갖는 논리 게이트는?
![image.png]()
a. XOR
- 주어진 문제의 설명에 해당하는 논리 연산은 배타적 논리 합(XOR, exclusive OR)에 해당함
NAND
![image.png]()
NOT
![image.png]()
OR
![image.png]()
다음 중 순서 회로로만 올바르게 나열된 것은?
a. 레지스터, 카운터
- 논리 회로는 조합 회로와 순서 회로(순차 회로)로 구분할 수 있음
- 조합 회로
- 출력 값이 단순히 현재 입력 값의 조합에 의해서만 결정되는 회로
- 전 가산기, 디코더, 멀티플렉서 등
- 순서 회로
- 1비트 기억 소자인 플립플롭을 사용해서 연산의 각 단계마다의 회로의 특정 상태를 저장하고 참조함으로써, 출력 값이 입력 값과 기억 소자에 저장된 현재 상태에 따라 결정되는 회로
- 카운터, 레지스터
다음 설명에 해당하는 논리 회로는?
1 2
여러 개의 입력선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로이다. 어떤 장치로부터 들어오는 데이터가 버스를 사용할 것인가를 정할 때에 사용한다.
a. 멀티플렉서
- 2ⁿ개의 데이터 입력 선 중에서 특정한 하나의 입력 선을 선택하기 위해 n개 선택 변수가 사용 됨
- 많은 입력 선 중 하나를 선택하여 선택 된 입력 선의 이진 정보를 출력 선에 넘겨주기 때문에 데이터 선택기라고도 부름
- 디 멀티플렉서는 멀티플렉서의 동작과 반대되는 기능을 수행하는 조합 회로로서, 1개의 입력 선으로부터 정보를 받아 이를 2ⁿ개의 출력 선 중 하나로 내보내기 때문에 데이터 분배기라고도 함
다음 그림과 같은 기억 장치의 계층 구조에서 CPU와 주 기억 장치 간의 속도 차이를 줄여주는 기능을 담당하는 기억 장치는?
![image.png]()
a. (b) 캐시 기억 장치
- 기억 장치의 계층 구조
- CPU가 데이터에 접근함에 있어서 가장 적은 비용으로 가장 높은 성능을 얻기 위한 전략으로 접근 속도와 저장 용량에 따라 기억 장치를 계층적으로 분류 가능
- (a) 레지스터, (b) 캐시 기억 장치, (c) 주 기억 장치, (d) 보조 기억 장치
- 캐시 기억 장치는 CPU와 주 기억 장치 간의 속도 차이를 줄이기 위해 CPU와 주 기억 장치 사이에 위치한 접근 속도가 빠른 소규모 기억 장치로서, 수행 중인 명령어와 자주 사용되는 데이터를 저장하였다가 CPU 요청이 있을 때 즉시 제공하기 위해서 사용함
- 기억 장치의 계층 구조
정리 하기
- 불 대수와 논리 게이트
- 컴퓨터 하드웨어의 기본 구성 요소 → 중앙 처리 장치, 기억 장치, 입력 장치, 출력 장치
- 중앙 처리 장치 = 처리 장치(제어 장치 + 산술 논리 연산 장치) + 레지스터
- 시스템 버스 = 주소 버스 + 데이터 버스 + 제어 버스
- 불 대수 → 이진 변수의 논리 연산을 나타내는 대수
- 기본 논리 연산 → 논리 곱(AND), 논리합(OR), 논리 부정(NOT)
- 복합 논리 연산 → NAND, NOR, XOR
- 논리 게이트 → 논리 연산을 하드웨어로 구현한 것으로, 논리 회로를 구성하는 기본 소자
- 논리 게이트의 완전 집합 → 원하는 임의의 회로를 구성할 수 있는 게이트들의 부분 집합
- 불 대수의 법칙들을 사용하여 불 함수를 간소화하면 논리 게이트의 수를 줄일 수 있으므로 동일한 기능을 수행하는 보다 단순한 형태의 회로 구성이 가능
- 컴퓨터 하드웨어의 기본 구성 요소 → 중앙 처리 장치, 기억 장치, 입력 장치, 출력 장치
- 논리 회로
- 조합 회로 → 논리 게이트로만 구성되어 출력 값이 단순히 입력 값의 조합으로만 결정 되는 회로
- 종류 → 전 가산기, 디코더, 멀티플렉서 등
- (1비트) 전 가산기 → 두 개의 입력 비트와 바로 아랫 자리에서 올라오는 올림 수까지 입력으로 받아 덧셈을 수행하는 회로(세 개의 입력과 두 개의 출력으로 구성) → n비트 전 가산기는 1비트 전 가산기를 직렬로 연결 시켜 구성
- 디코더 → n비트의 이진 코드를 최대 2n개의 서로 다른 정보로 변환해 주는 장치 → 주소 방식으로 주어진 입력으로부터 각각의 하드웨어 구성 요소를 개별적으로 구동하기 위해 주로 사용
- 멀티플렉서 → 2n개의 입력 선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로 → 어떤 장치로부터 들어오는 데이터가 버스를 사용할 것인 가를 정할 때 사용
- 순서 회로 → 연산의 단계마다 회로의 특정 상태가 저장 되고 참조 되는 회로 → 출력 값이 입력 값과 기억 소자에 저장된 현재 상태에 따라 결정 됨
- 플립플롭 → 1비트의 이진 정보를 저장할 수 있는 장치 → 종류: RS 플립플롭, T 플립플롭 등
- 종류 → 카운터, 레지스터
- 카운터 → 클록 펄스가 입력될 때마다 저장된 이 진수가 1씩 증가하는 장치
- 조합 회로 → 논리 게이트로만 구성되어 출력 값이 단순히 입력 값의 조합으로만 결정 되는 회로
- 기억 장치
- ROM → 한 개의 디코더와 여러 개의 OR 게이트를 사용한 조합 회로로 구성 가능
- RAM
- 1비트 RAM 소자 → 1개의 RS 플립플롭, 3개의 AND 게이트, 2개의 NOT 게이트로 구성
- RAM은 1비트 RAM 소자, 디코더, OR 게이트를 사용한 순차 회로로 구성 가능 → 하지만 실제로는 플립플롭이 아닌 축전지로 구현된 DRAM 사용
- 기억 장치의 계층 구조
- 접근 속도와 저장 용량에 따른 기억 장치의 구분 → CPU가 데이터에 접근함에 있어서 가장 적은 비용으로 가장 높은 성능을 얻기 위해 참조의 지역성에 기반을 둔 전략
- 레지스터 - 캐시 기억 장치 - 주 기억 장치 - 보조 기억 장치




























