1학년 1학기 기말 컴퓨터 구조

컴퓨터의 개념
  • 계산하는 기계 -> 데이터 처리
  • 컴퓨터의 특성
    • 신속성 - 입출력&연산 속도가 빨라서 많은 양의 데이터를 신속하게 처리
    • 대용량성 - 많은 양의 데이터를 기억하고 처리
    • 신뢰성 - 컴퓨터의 처리 결과 신뢰 가능
    • 정확성 - 오류/오차 최소화 & 처리 결과 정확
    • 범용성 - 다양한 업무 처리 가능
컴퓨터의 출현
  1. Mark - I
    기어&톱니바퀴 사용
    세계 최초 전기 기계식 자동 계산기
  2. ENIAC (Electronic Numerical Integrator And Calculator)
    최초의 범용 디지털 컴퓨터
    각 부분을 전선으로 연결하여 프로그램마다 배선의 결합과 스위치를 직접 손으로 조작
  3. EDSAC (Electronic Delayed Storage Automatic Computer)
    "폰 노이만"이 제시한 프로그램 내장 방식 적용
  4. EDVAC (Electronic Discrete Variable Automatic Computer)
    1,024단어 기억 & 20,000단어 보관
    2진 표현 방식 사용
  5. 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. 제어 장치의 제어 신호를 받음
  2. 주기억 장치에서 데이터를 가져와 레지스터에 저장
  3. 세로운 데이터 발생 시 주기억 장치에서 가져와 저장 (예외)
  4. 누산기 값 + 데이터 레지스터 값
  5. 상태 레지스터에 상태 저장
  6. 누산기 <- 가산 결과
  7. 주기억 장치 <- 결과
불 대수
  • 불 대수 정의
    • 참과 거짓을 판단하는 대수
    • 참(1) 또는 거짓(0) 값을 갖는 논리 변수, and/or/not 등의 논리 연산 이용

  • 불 대수의 기본 연산
    • 논리곱(AND) - 주어진 복수 명제 모두 참
    • 논리합(OR) - 주어진 복수 명제에서 적어도 1개 이상 참
    • 논리부정(NOT) - 주어진 명제의 참과 거짓을 부정

  • 불 대수 법칙
구분논리식구분논리식
논리합A + 0 = A논리곱A x 0 = 0
A + 1 = 1A x 1 = A
A + A = AA x A = A
A + A' = 1A x A' = 0
교환 법칙A + B = B + A결합 법칙A + (B + C) = (A + B) + C
A x B = B x AA 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) = AA 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 BC 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