컴퓨터의 개념
- 계산하는 기계 -> 데이터 처리
- 컴퓨터의 특성
- 신속성 - 입출력&연산 속도가 빨라서 많은 양의 데이터를 신속하게 처리
- 대용량성 - 많은 양의 데이터를 기억하고 처리
- 신뢰성 - 컴퓨터의 처리 결과 신뢰 가능
- 정확성 - 오류/오차 최소화 & 처리 결과 정확
- 범용성 - 다양한 업무 처리 가능
컴퓨터의 출현
-
- Mark - I
- 기어&톱니바퀴 사용
- 세계 최초 전기 기계식 자동 계산기
-
- ENIAC (Electronic Numerical Integrator And Calculator)
- 최초의 범용 디지털 컴퓨터
- 각 부분을 전선으로 연결하여 프로그램마다 배선의 결합과 스위치를 직접 손으로 조작
-
- EDSAC (Electronic Delayed Storage Automatic Computer)
- "폰 노이만"이 제시한 프로그램 내장 방식 적용
-
- EDVAC (Electronic Discrete Variable Automatic Computer)
- 1,024단어 기억 & 20,000단어 보관
- 2진 표현 방식 사용
-
- UNIVAC (UNIversal Automatic Computer)
- 일반 업무에 사용된 첫 번째 상용 컴퓨터
- 2진 표현 방식 사용
컴퓨터의 세대 구분
-
- 제 1세대
- 진공관 사용
- 1940중반 ~ 1950중반
- 기계어, 어셈블리어
- 폰 노이만의 프로그램 내장 방식
-
- 제 2세대
- 트렌지스터 사용
- 1950중반 ~ 1960초반
- FORTRAN, ALGOL, COBOL 사용
- 주기억장치 : 자기코어 / 보조기억장치 사용
-
- 제 3세대
- 집적 회로(IC) 사용
- 1960중반 ~ 1970초반
- 보조기억장치 : 자기드럼 & 자기디스크 <dd시분할 시스템</dd>
-
- 제 4세대
- 고밀도 집적 회로(LSI : Large Scale Integration) 사용
- 초고밀도 집적 회로(VLSI : Very LSI) 사용
- 1970년대
- 소형화 & 처리 속도 증가
- 가상 기억 장치 사용
-
- 제 5세대
- 프로세서 초고밀도 집적 회로, 광회로 사용
- 1980년대 이후
- 유비쿼터스(Ubiquitous)환경에서 IoT(Internet of Things) 지원
- GUI환경 구현
컴퓨터 구성 요소
- 하드 웨어
-
- 입력 장치
- 다양한 형태의 정보를 2진수 형태로 변환하여 읽어들임
-
- 출력 장치
- 처리 결과를 문자, 그림, 소리 등의 형태로 출력
-
- 연산 장치
- 입력한 데이터로 산술, 논리 연산
- 연산은 CPU에서 실행
-
- 제어 장치
- 프로그램에서 명령을 받아 각 장치들을 동작하도록 제어
- 제어는 CPU에서 실행
-
- 기억 장치
- 데이터와 프로그램을 컴퓨터에 기억
-
-
- 주기억 장치
- CPU에서 실행할 데이터와 프로그램 저장
- RAM(Random Access Memory), ROM(Read Only Memory)
-
- 보조 기억 장치
- 용량이 큰 프로그램/데이터 기억
- 비휘발성 메모리
- 자기 테이프, 광 디스크, 하드 디스크, 플래시 메모리, USB
-
- 소프트웨어
- 시스템 소프트웨어
-
- 운영 체제
- 하드웨어&소프트웨어를 직접/독립적으로 관리
- 컴퓨터와 사용자 간 중개 역할
- Windows, Linux, Unix
-
- 언어 번역 프로그램
- 원시 프로그램 -> 기계어
-
-
- 어셈블러(Assembler)
- 어셈블리어로 작성된 원시 프로그램을 기계어로 된 목적 프로그램으로 번역
-
- 컴파일러(Compiler)
- 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역 후, 링킹 작업
- FORTRAN, COBOL, PASCAL, C, C++
-
- 인터프리터(Interpreter)
- 고급 언어나 코드화된 중간 언어를 목적 프로그램 없이 직접 기계어 생성&실행
- BASIC, SNOBOL, LISP, APL
-
-
- 유틸리티 프로그램
- 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 도와주는 소프트웨어
- 압축 프로그램, 백신...
- 응용 소프트웨어
-
- 범용 프로그램
- 특정 분야에서 공동적으로 사용
- 많은 노력 필요X, 쉽게 업무 처리 가능
- 쉽게 수정 불가능
- MS-Office, Abode Photoshop
-
- 특수 목적용 프로그램
- 사용자가 특별한 목적으로 주문 제작
컴퓨터의 동작
- 인출(fetch)
- 다음 명령을 인출하고 PC 증가
- 해독(encode)
- 명령 레지스터에 있는 비트 패턴 해독
- 실행(execute)
- 명령 레지스터 내부에 있는 명령어가 요청하는 활동 수
디지털 코드
- BCD코드
- 0에서 9까지 10진수를 2진수 4자리로 표현
- 3초과 코드
- BCD코드에 3을 더해 표현
- ASCII 코드
- 7bit 코드
- 영어 대/소문자, 숫자, 특수 문자 표현
- EBCDIC 코드
- 영문자, 숫자, 특수 기호 등 256자 표현 가능
- 유니 코드
- 16bit 표현
- 65536글자 표현 가능
- 해밍 코드
- 단일 비트 오류 발생 시 오류 위치 검출
- 4비트 데이터에서 사용 방법
- C1 C2 8 C3 4 2 1
- C1 : 1, 3, 5, 7 짝수
- C2 : 2, 3, 6, 7 짝수
- C3 : 4, 5, 6, 7 짝수
연산 장치의 구성
- 연산 장치의 구성 요소
- 데이터 레지스터(Data Register)
- 주기억 장치에서 가져온 데이터 보관
- 가산기(Adder)
- 누산기 값 + 레이스터 값 을 누산기에 보관
- 누산기(AC, Accumulator)
- 연산의 중간 결과 기억
- 오버플로(Overflow) 검출기
- 가산기의 결과가 레지스터 용량을 초과했는지 검사
- 상태 레지스터
- 자리 올림(Carry in), 오버플로, 인터럽트(Interrupt) 발생 여부 저장
연산 과정
- 제어 장치의 제어 신호를 받음
- 주기억 장치에서 데이터를 가져와 레지스터에 저장
- 세로운 데이터 발생 시 주기억 장치에서 가져와 저장 (예외)
- 누산기 값 + 데이터 레지스터 값
- 상태 레지스터에 상태 저장
- 누산기 <- 가산 결과
- 주기억 장치 <- 결과
불 대수
- 불 대수 정의
- 참과 거짓을 판단하는 대수
- 참(1) 또는 거짓(0) 값을 갖는 논리 변수, and/or/not 등의 논리 연산 이용
- 불 대수의 기본 연산
- 논리곱(AND) - 주어진 복수 명제 모두 참
- 논리합(OR) - 주어진 복수 명제에서 적어도 1개 이상 참
- 논리부정(NOT) - 주어진 명제의 참과 거짓을 부정
- 불 대수 법칙
구분 | 논리식 | 구분 | 논리식 |
---|---|---|---|
논리합 | A + 0 = A | 논리곱 | A x 0 = 0 |
A + 1 = 1 | A x 1 = A | ||
A + A = A | A x A = A | ||
A + A' = 1 | A x A' = 0 | ||
교환 법칙 | A + B = B + A | 결합 법칙 | A + (B + C) = (A + B) + C |
A x B = B x A | A x (B x C) = (A x B) x C | ||
흡수 법칙 | A + (A x B) = A | 분배 법칙 | A + (B x C) = (A + B) x (A + C) |
A x (A + B) = A | A x (B + C) = (A x B) + (A x C) | ||
드모르간 법칙 | (A + B)' = A' x B', (A x B)' = A' + B' |
- 논리 게이트
- AND게이트, OR게이트, NOT게이트 - 설명 생략
- NAND 게이트 - (AB)’
- NOR 게이트 - (A+B)’
- XOR(배타적 논리합) 게이트 - AB’ + A’B
가산기
- 반가산기(Half Adder)
- 2개 입력, 2개 출력
- 입력 변수 : 2진수 1자리 2개(A, B)
- 출력 변수 : 합(S, Sum), 자리 올림수(C, Carry)
- 진리표
입력 | 출력 | ||
---|---|---|---|
A | B | C | S |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
- S = A xor B
- C = AB
- 전가산기(Full Adder)
- 3개 입력, 2개 출력
- 입력 변수 : 2진수 1자리 2개(A, B), 하위 자리 자리 올림수(Z)
- 출력 변수 : 합(S, Sum), 자리 올림수(C, Carry)
- 진리표
입력 | 출력 | |||
---|---|---|---|---|
A | B | Z | C | S |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
- S = (A xor B) xor Z
- C = (A xor B)Z + AB
감산기
- 반감산기(Half Subtracter)
- 2개 입력, 2개 출력
- 입력 변수 : 2진수 1자리(A, B)
- 출력 변수 : 빌림수(b, borrow), 차(D, Difference)
- 진리표
입력 | 출력 | ||
---|---|---|---|
A | B | b | D |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 0 | 0 |
- b = A’B
- D = A xor B
- 전감산기(Full Subtracter)
- 3개 입력, 2개 출력
- 입력 변수 : 2진수 1자리(A, B), 자리 빌림수(Y)
- 출력 변수 : 빌림수(b, borrow), 차(D, Difference)
- 진리표
입력 | 출력 | |||
---|---|---|---|---|
A | B | Y | b | D |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
- b = A’B + Y(A xor B)’
- D = (A xor B) xor Y
산술 연산 회로
- 사칙 연산은 덧셈을 기본한다.
- 덧셈
- 뺄셈 : 보수에 의한 덧셈
- 곱셈 : 시프트와 덧셈의 반복
- 나눗셈 : 시프트와 뺄셈의 반복
- 덧셈
- AC <- AC + MBR
- 가산기의 결과를 누산기 앞에 AND게이트를 통해 누산기에 저장
- 뺄셈
- AC <- AC + MBR의 2의 보수
- 2의 보수를 가산기에 입력하여 누산기에 있는 피감수와 덧셈
- 곱셈
- AC, MQ레지스터 <- AC x MBR
- 승수 : 기억 레지스터 / 피승수 : 누산기에 기억
- 가산기에서 덧셈을 하여 그 결과를 MQ레지트터와 누산기에 연결한 형태로 저장
- MQ레지스터 : 곱셈의 결과 늘어난 자릿수만큼 기억할 수 있게 하는 보조 누산기
- 나눗셈
- AC, MQ레지스터 <- MQ레지스터 AC / MBR
- 기억 레지스터에 보수를 취한 뒤 누산기와 덧셈
- 피제수 : MQ레지스터와 누산기를 연결한 형태의 큰 수로 기억
- 제수 : 기억 레지스터에 기억
- 몫 : 누산기 / 나머지 : MQ레지스터 에 저장
- 비교 연산
A - B | 의미 |
---|---|
- | A < B |
0 | A = B |
+ | A > B |