1. 컴퓨터
(1) 컴퓨터의 기능
- 입력 기능: 자료나 명령을 컴퓨터 안으로 들여보내는 기능
- 출력 기능: 처리된 결과(정보)를 컴퓨터 외부로 내보내는 기능
- 연산 기능: 산술적인 사칙 연산과 논리 연산을 수행하는 기능
- 제어 기능: 각각의 모든 장치들에 대한 지시 또는 감독을 수행하는 기능
- 저장 기능: 입력된 자료를 기억하거나 저장하는 기능
* 입력 기능, 출력 기능: 속도 빠름(cpu와 독립적으로 수행)
* 연산 기능, 제어기능: cpu가 처리 (cpu = 중앙처리장치 : 기억(저장))
(2) 디지털 컴퓨터 VS. 아날로그 컴퓨터
| 디지털 컴퓨터 | 아날로그 컴퓨터 | |
| 입력 형태 | 숫자, 문자 | 전류, 전압, 온도 |
| 출력 형태 | 숫자, 문자 | 곡선, 그래프 |
| 연산 형식 | 산술 논리 연산 | 미적분 연산 |
| 구성 회로 | 논리회로 | 증폭회로 |
| 프로그래밍 | 필요 | 불필요 |
| 정밀도 | 필요한 한도까지 | 제한적 |
| 기억 기능 | 있음 | 없음 |
| 적용 분야 | 범용 | 특수 목적용(제어) |
(3) 처리 방법에 따른 분류
| 일괄처리(batch processing) | - 데이터를 일정량 또는 일정기간 동안 모아두었다가 주기적으로 처리하는 방식 - 시스템 중심 -> 시스템 효율성 높음 |
| 실시간 처리(free-tine processing) | - 데이터 입력 시 즉시 처리하는 양식으로 실시간으로 확인 가능 - 사람 중심 -> 시스템 효율성 낮음 |
| 시분할 처리(time-sharing processing) | - CPU의 처리시간을 분할해 여러 작업에 번갈아 할당해 CPU를 공유하여 처리하는 방식 |
| 다중처리(multi processing) | - 2개 이상의 처리기(Processor)를 사용해 여러 작업을 동시에 처리하는 방식 - 듀얼(Dual) 시스템, 듀플렉스(Duplex) 시스템 2가지로 분류 - 강결합 시스템 |
| 분산처리(distrubuted processing) | - 여러 대의 컴퓨터에 작업을 나누어 처리해 그 내용이나 결과가 통신망을 통해 상호교환되도록 연결되어 있는 형태 - 약결합 시스템 |
* 다중처리, 분산처리 - 네트워크 필요
* 다중 프로그래밍 시스템 VS 다중 처리 시스템
| CPU | 프로그램 | 처리 | |
| 다중 프로그래밍 시스템 | 1개 | N개 | 병렬화 처리 |
| 다중 처리 시스템 | N개 | N개 | 병렬 처리 |
* 프로세서 = CPU = 처리기
* 프로세스 = 실행중인 프로그램
(5) 처리 능력에 따른 분류
| 슈퍼 컴퓨터 | 메인 프레임 | 미니 컴퓨터 | 워크스테이션 | 마이크로컴퓨터 |
| - 초대형 컴퓨터 - 복잡한 계산: 초고속 - 이용분야: 우주항공, 기상예측, 첨단과학 |
- 대형 컴퓨터 - 대표 기종: IBM 360, IBM370 |
- 중형 컴퓨터 | - RISC 마이크로프로세서 사용 - PC급 + 고성능 + 네트워크 기능 강화 |
- 마이크로프로세서가 장착된 컴퓨터 - 개인용 컴퓨터(PC: Personal Computer)임 |
(8) 유니버셜 게이트(Universal Gate) = 범용 게이트
- NAND 게이트와 NOR게이트를 유니버셜 게이트 또는 범용 게이트라고 함
- NAND 게이트와 NOR 게이트는 디지털 시스템에서 사용되는 모든 논리 게이트 구성 가능
* NAND게이트는 AND 게이트의 반대값, NOR 게이트는 OR 게이트의 반대값을 나타냄
| A | B | AND | NAND |
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
명령어 파이프라이닝
- CPU의 프로그램 처리 속도를 높이기 위해 CPU 내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술 -> 처리 속도 향상
- 하나의 명령어를 여러 단계로 나누어 처리함 -> 한 명령어의 특정 단계를 처리하는 동안 다른 부분에서는 다른 명령어의 다른 단계를 처리할 수 있음 => 동시에 여러 개의 명렁어 실행 가능
(1) 2-단계 명령어 파이프라이닝
- 명령어를 실행하는 하드웨어를 인출단계(fetch stage)와 실행단계(execute stage) 두 개의 독립적인 파이프라인 모듈로 분리하여 수행
- 두 단계에 동일한 클럭을 가하여 동작 시간 일치시킴
- 1. 첫 번째 클럭 주기 동안 인출 단계가 첫 번째 명령어 인출
- 2. 두 번째 주기에서 그 명령어가 실행 단계로 보내져 실행됨, 그와 동시에 인출 단계는 두 번째 명령어 인출
| 클럭주기 | 1 | 2 | 3 | 4 |
| 명령어 1 | ←인출 → | ← 실행 → | ||
| 명령어 2 | ← 인출 → | ← 실행 → | ||
| 명령어 3 | ← 인출 → | ← 실행 → |
* 직렬로 수행 시 한 명령어 당 클럭주기 (2) * 명령어 갯수(3) = 6 클럭주기 필요
(2) 4-단계 명령어 파이프라이닝
- 명령어 인출(IF) 단계, 명령어 해독(D)단계, 오퍼랜드 인출(IF) 단계, 실행(EX) 단계라는 네 개의 독립적인 파이프라인 모듈들로 분리해 수행
(3) 파이프라이닝에 의한 속도 향상 관계식
: 전체 명령어 실행시간 = 파이프라인 단계 수 + (실행할 명령어들의 수 -1)
(4) 파이프라인 해저드
- 명령어 실행이 불가하여 지연 또는 중지가 발생하는 현상
| 구조적 해저드 | - 포트가 하나인 메모리에 동시에 접근하려고 하거나 ALU 등의 하드웨어를 동시에 사용하려고 할 때 발생 - 해결 방법: 메모리를 명령어 영역과 데이터 영역으로 분리하여 사용 또는 ALU 등의 하드웨어를 여러 개 사용 |
| 데이터 해저드 = 충돌 발생 |
- (동일 사이클 내에서) 이전 명령어에서 레지스터의 값을 바꾸기 전에 후속 명령어가 그 값을 읽거나 쓰려고 하는 경우 = 데이터 의존성이 있는 경우 발생 - 해결 방법: 명령어 재배치, 전방전달(Data forwarding), No-operation insertion 사용 * 명령어 재배치: 지연 발생 없음, 무조건 해결되는건 아님 * No-operation insertion: 지연 발생, 무조건 해결됨 (S/W적 해결방법) |
| 제어 해저드 | - 조건 분기로 인해 명령어의 실행 순서가 변경되어 명령어가 무효화 되는 것 - 해결 방법: 분기 예측, stall 삽입법 사용 |
(5) RISC 파이프라인
- 명령어 집합이 단순 -> 한 클럭 사이클에 수행되는 소수의 부연산들로 파이프라인 구성 가능
- 고정된 길이의 명령어 형식을 사용 -> 연산의 디코딩과 레지스터의 선택을 동시에 할 수 있음
- 모든 피연산자가 레지스터에 있는 것 -> 유효 주소를 계산하고 메모리로부터 미연산자를 읽어올 필요 없음
- 3/4/5단 명령 파이프라인
| 3단 파이프라인 | Fetch instruction - Decode/Select Register - Excute/Store |
| 4단 파이프라인 | Fetch instruction - Decode/Select Register - Excute - Store |
| 5단 파이프라인 | Fetch instruction - Decode - Select Register - Excute - Store 명령어 인출 (IF) - 명령어 해독(ID) - 데이터인출(SR) - 실행(EX) - 저장(ST) |
- 문제점
| 데이터 충돌 | - 한 명령어가 결과값을 어떠한 레지스터에 저장, 다른 명령어가 그 값을 오퍼랜드로 사용 시 발생 |
| 분기 충돌 | - 분기나 점프문에서 충돌 문제 발생하는 것 - 데이터 충돌과는 다르게 잘못된 데이터 값이 사용되는 것이 아니고, 중앙처리장치가 실행되어서는 안될 때 명령어를 실행시켜 야기됨 |
- 충돌 해결 방법
| No-operation insertion | - S/W적 해결 방법(컴파일러) - 컴파일러가 데이터 충돌을 감시하여 충돌을 피하기 위해 No-operation을 삽입하는 방법 - 충돌 문제 해결 가능하나 성능저하시킴(지연 발생) - 최적의 방법은 아님 |
| Instruction reordering | - S/W적 해결 방법(컴파일러) - 데이터 충돌을 피하기 위해 몇몇 명령어를 재배치하는 방법 - No-operation insertion과 다르게 클럭 주기를 낭비하지 않고, 데이터 충돌 해결할 수 있음 - 항상 사용할 수 있는 것X, 프로그램에 의해 계산 결과가 변경되지 않을 때에만 가능 - 항상 데이터 충돌 문제 해결할 수 있는 것은 아니며, 이 방법으로 해결되지 않을 경우 No-operation insertion 방법 사용해야 함 |
| Stall insertion | - H/W적 해결 방법(OS) - 부가적인 하드웨어가 데이터 충돌을 감지, 해결하기 위해 Stall을 넣거나 지연 주는 방법 - 프로그램이 컴파일되는 동안 컴파일러에 의해 다루어지는 것이 아니라 프로그램이 실행되고 있는 동안 하드웨어에서 다루어진다는 것을 제외하면 No-operation insertion과 유사함 - 데이터 충돌 문제를 해결하지만, 전체적인 시스템 성능 저하시킴 |
| Data forwarding | - H/W적 해결 방법(OS) - 하나의 명령어가 실행된 후에 그 결과가 저장되면서 이 결과가 레지스터를 선택하는 단으로 직접 전달되는 방법 - IF - -> D/SR - -> EX/ST ↑_________| |
* 슈퍼스칼라(superscalar): CPU 내 파이프라인을 여러 개 두어 명령어를 동시에 실행하는 기술
- 파이프라인과 병렬 처리의 장점을 모은 것
* VLIW(Very Long Instruction Word): 동시 실행이 가능한 여러 명령을 하나의 긴 명령으로 재배열하여 동시 처리함
부울대수
부울 대수 공리
| 공리 1 | 공리 2 | 공리 3 | 공리 4 | 공리 5 |
| A ≠ 0 이면 A = 1 A ≠ 1이면 A = 0 A = 0이면 Ā = 1 A = 1이면 Ā = 0 |
0 ⋅ 0 = 0 0 + 0 = 0 |
1 ⋅ 1 = 1 1 + 1 = 1 |
0 ⋅ 1 = 0 0 + 1 = = |
Ī = 0 ō = 1 |
부울 대수 기본 정리
| 정리 1 | 정리 2 | 정리3 | 정리4 |
| A + 0 = A | A + Ā = 1 | A + A = A | A + 1 = 1 |
| A ⋅ 0 = 0 | A ⋅ Ā = 0 | A ⋅ A = A | A ⋅ 1 = A |
* A + 0 = A | 0 + 0 = 0 | 1 + 0 = 1
논리함수의 간소화
- 논리함수가 회로를 설계하기 위해 입력변수와 조합에 따른 것을 부울 대수식으로 표현하는 것
- 간단한 회로 설계 가능
(1) 부울 대수식 이용한 간소화
* 부울 대수식: 입력과 출력 사이의 기본적인 법칙에 관한 관계를 나타낸 것
* 최소항(minterm): 변수들이 AND로 결합된 것
* 최대항(maxterm): 변수들이 OR로 연결된 것
- 논리식의 각 최소항(Minterm) 사이의 공동 변수를 찾아내고 정리식에 따라 간소화
(2) 카르노 맵(Karnaugh Map)
- 도식적 표현 사용해 부울 대수 간소화하는 방법
- 최소항의 합 방식과 최대항의 곱 방식 모두 표현 가능
* 최소항의 합 방식으로 간소화
1) 함수식의 진리값을 카르노 맵에 표시
2) '1'로 표시된 진리값 중 인접한 값을 1,2,4,8,16개씩 묶음
3) 가능하면 큰 개수로 묶기(그래야 최소화 가능)
4) 진리값들은 각각 다른 묶음에 여러 번 중복하여 묶일 수 있음
5) 인접한 값이 없는 경우 단독으로 묶이며, 단독으로 묶인 집합은 간략화 불가능
6) 각각의 묶인 집합을 간략화
7) 각각의 간략화 된 함수식을 OR 연산함
부호기(= 인코더, Encoder)
- 여러 개의 입력단자 중 어느 하나에 나타난 정보를 여러 자리의 2진수로 코드화하여 전달
- 2개의 입력신호로부터 n개의 출력신호 만듦
(회로도 사진 필요)
병렬 가감산기
- 병렬 가산기의 Y에 부호 S(sign)와 XOR하여 입력하면 덧셈과 뺄셈 모두 가능
- S가 1이면 Y의 값은 반전이 되어 1의 보수 입력됨
* 캐리어 값은 1이 입력되어 결과적으로 Y의 2의 보수가 만들어짐
- XOR 게이트에 입력되는 부호 선택의 값이 0이면 덧셈을 수행, 1이면 뺄셈 수행
플립플롭(Flip Flop)
- 쌍인정 멀티바이브레이터(bistable multivibrator)의 입력신호에 의해서 상태를 바꾸라는 명령이 있을 때까지 현재 상태를 유지하는 순서논리회로
- 출력이 다시 입력으로 피드백되어 최종적인 출력을 결정하는 순차논리회로의 가장 기본적인 회로
- 상태를 바꾸는 신호는 클릭 신호가 되거나 혹은 외부의 입력신호가 될 수 있음
- 플립플롭의 종류
| RS 플립플롭 | - S(Set)과 R(Reset)인 두 개의 상태 중에서 하나의 상태를 안정정되게 유지시키는 회로 - 외부에서 입력되는 펄스가 1인 경우: S, 0인 경우: R * 어느 펄스가 입력되었는지 그 상태를 보존 |
| JK 플립플롭 | - RS = 11 입력은 허가 되지 않는 회로(쌍안정성 위배로 사용금지) - 단점: 입력이 둘 다 될 경우 불안정해짐 |
| D 플립플롭 | - RS의 단점을 보완한 회로 - 하나의 입력단자를 가지며, 입력된 것과 동일한 결과를 출력 - S입력이 NOT게이트를 거쳐 R쪽에서도 입력되도록 연결한 것 -> {R=1, S=0} 또는 {R=0, S=1}만 입력 가능 |
| T 플립플롭 | - JK 플립플롭을 이용해 만들 수 있음 - T의 값이 0일 경우, J와 K값이 둘 다 0이 되어 변하지 않음 - T의 값이 1일 경우, J와 K값이 둘 다 1이 되어 출력값이 반전되는 효과 있음 * T: 0 일 경우 불변, T:1일 경우 반전(현 상태 보수) |
* T플립플롭 진리표 * Ā = A' = NOT A
| 입력 | 출력 | |
| T | Q | Q' |
| 0 | Q | Q' |
| 1 | Q' | Q |
'컴퓨터 일반' 카테고리의 다른 글
| 2. 운영체제 - 운영체제의 개념 (0) | 2026.01.22 |
|---|---|
| 1. 컴퓨터 구조 - 입출력장치 및 병렬처리 (1) | 2026.01.21 |
| 1. 컴퓨터 구조 - 기억장치 (0) | 2026.01.21 |
| 1. 컴퓨터 구조 - 중앙처리장치 (0) | 2026.01.21 |
| 1. 컴퓨터 구조 - 자료의 표현 (0) | 2026.01.21 |