컴퓨터의 발전 과정
- 튜링 기계: 컴퓨터의 기계식 자동 계산기
- ENIAC: 최초의 전자 계산기
- EDSAC: 최초의 프로그램 내장 방식 도입
- EDVAC: 프로그램 내장 방식과 2진법 채택
프로그램 내장 방식
- 폰 노이만이 제안한 방식
컴퓨터의 각 세대별 특징
- ~1950년대: 진공관, 군사용, 하드웨어 개발, 기계어/어셈블리어
- ~1960년 초: 트랜지스터, 사무처리, 운영체제 도입, FORTRA/COBOL/ALGOL
- ~1970년 초: 집적회로, 시분할 처리시스템, PASCAL/LISP/구조화된 언어
- ~1990년중반: 개인용 컴퓨터 등장
- 1990년 중후반이후~: 인공지능
컴퓨터시스템분류
데이터 취급 방법에 따른 분류
- 디지털 컴퓨터
- 아날로그 컴퓨터
- 하이브리드 컴퓨터
처리방법에 따른 분류
- 일괄처리
- 실시간처리
- 시분할처리
- 다중처리
- 분산처리
연결형태에 따른 분류
- 중앙집중 컴퓨터시스템
- 분산처리 컴퓨터시스템
사용목적에 따른 분류
- 특수용 컴퓨터
- 범용 컴퓨터
처리 능력에 따른 분류
- 슈퍼 컴퓨터
- 메인 프레임
- 미니 컴퓨터
- 워크스테이션
- 마이크로 컴퓨터
수의 연산
보수
- 1의 보수
2진수의 0은 1로, 1은 0으로 변환 ⇒ 1001101 → 0110010
- 2의 보수
1의 보수 결과에 1을 더하여 구함 ⇒ 1001101 → 0110010 → 0110011
자료의 표현
자료 표현의 단위
비트(1) - 니블(4) - 바이트(8) - 워드(4Byte) / 필드 - 레코드 - 파일 - DB
- 바이트: 문자 표현의 최소 단위
- 워드: 특정 CPU에서 취급하는 명령어나 데이터의 길이에 해당하는 비트 수 / CPU가 한번에 처리가능한 양
수치데이터의 표현
- 고정 소수점 데이터 형식
- 양수를 표현할 때는 부호 절대치 방식만 사용
- 음수를 표현하는 방법에는 부호 절대치, 1의 보수, 2의 보수 표현 방식
- 첫 번째 비트는 부호 비트로서, 양수면 0, 음수면 1
- 부호 절대치와 부호 1의 보수는 +0, -0 존재
양수는 그냥 그대로 생각하면 된다.
음수는 3가지로 또 나뉨
- 부호 절대치 표현: 부호는 1로 변경, 정수부는 변경하지 않는다. → -128 표현 못함
- 1의 보수 표현: 부호는 1로 변경, 정수부는 1의 보수로 변경 → -128 표현 못함
- 2의 보수 표현: 부호는 1로 변경, 정수부는 2의 보수로 변경 → -0 표현못함
부동 소수점 데이터 형식
- 부호비트 + 지수부 + 가수부
- 지수부는 8비트로 실제 지수에 기준수를 더하여 나타냄
- 4바이트 단정도 실수형과 8바이트 배정도 실수형
- 고정 소수점 데이터 형식보다 복잡하고 연산속도 느림
- 실수표현을 위하여 지수부와 가수부로 분리시키는 정규화과정 필요
- IEEE 754 표준형식
- 32비트 부동소수점 표현
- 지수는 8비트, 가수는 23비트, 바이어스는 127
- 64비트 부동소수점 표현
- 지수는 11비트, 가수는 52비트, 바이어스는 1023
- 표현방식에 따라 저장되는 과정
- 2진수 변환
- 정규화 수행: 소수점 위치를 최대 유효숫자 1뒤에 위치시키기
- 부호비트: 양수이면 0 음수이면 1
- 지수부: 지수값에 바이어스 더해 표현
- 가수부: 정규화된 수에서 가장 왼쪽에 있는 1.을 생략하고 나머지 가수부는 0으로 채우기
- 32비트 부동소수점 표현
10진 데이터 형식
- 10진수 한자리를 8비트로 표현하는 존 방식과 4비트로 표현하는 팩 형식으로 구분
- 부호는 양수이면 1100(C), 음수이면 1101(D), 부호가 없으면 1111(F)
- 존 형식 - 언팩 10진 데이터 형식
- 팩 10진 데이터 형식
문자데이터의 표현
- BCD 코드: 2개의 존 비트와 4개의 숫자 비트의 6비트로 구성
- ASCII 코드: 3개의 존 비트와 4개의 숫자 비트의 7비트로 구성
- EBCDIC 코드: 4개의 존 비트와 4개의 숫자 비트의 8비트로 구성
- 유니코드: 2바이트(16비트)
기타 코드
- 가중치 코드
- 8421, 2421, 5421, 84-2-1, 51111 코드
- 비중치 코드
- 3초과 코드, 그레이 코드, 2 out of 5 코드, shift counter 코드
- 자보수 코드
- 3초과 코드, 2421 코드, 84-2-1 코드, 51111코드
- 코드에러검출
- 패리티 비트, 해밍 코드
3초과 코드
8421 코드에 +3을 더함
그레이 코드
- 2진수 코드를 그레이 코드로 변환하는 방법
- 2진수의 첫번째 비트는 그레이 코드의 첫번째 비트
- 왼쪽에서부터 오른쪽으로 이웃한 두 개의 2진 비트를 XOR 연산을 하면 그레이 코드
- 2진수 코드를 그레이 코드로 변환하는 방법
패리티 비트
- 1비트 에러는 검출 가능 하지만 2비트 이상 에러는 검출 불가능
- 패리티 비트 검사 방법
- 홀수 패리티 방법: 2진 데이터 중에서 1의 개수가 홀수개일 때 에러 없음
- 짝수 패리티 방법: 2진 데이터 중에서 1의 개수가 짝수개일 때 에러 없음
해밍코드
- 오류 검출과 교정이 가능
중앙처리장치(CPU)
CPU: 명령어를 해석하고 명령어의 수행을 위한 과정을 준비하며, 명령어의 처리 과정을 제어하는 기능
중앙처리장치의 구성
산술 논리 연산장치 + 제어 장치 + 레지스터 +내부버스
제어 장치(CU)의 구성
주기억 장치에 기억된 프로그램을 차례로 읽어 그 내용을 해독하고, 해독된 의미에 따라 필요한 장치에 신호를 보내어 작동시키ㅕ, 그 결과를 검사하는 역할
제어장치의 구성요소
- 프로그램 카운터(PC): 다음에 수행할 명령의 주소를 기억하는 레지스터
- 메모리 주소 레지스터(MAR): 명령 주소 임시 기억
- 메모리 버퍼 레지스터(MBR): MAR 내용 임시 보관
- 명령 레지스터(IR): 명령문 임시 보관 / 명령부+어드레스부
- 명령 해독기(ID): 명령부 해독한 다음 연산장치로 보내 실행
- 번지 해독기: 어드레스부 해독후 저장된 데이터 메모리로 보냄
- 부호기: 명령 해독기 내용을 신호로 변환하여 장치로 전송
제어장치 기본동작
- 주기억장치에서 명령어를 일고 제어장치 내에 명령어 레지스터 저장
- 명령어 포인터에는 다음에 실행될 명령어 주소 저장
- 제어장치가 명령어 레지스터의 명령어를 해석
- 해석된 명령어는 해당되는 제어신호를 발생
연산장치(ALU)의 구성
연산장치의 구성요소
- 누산기
- 가산기
- 데이터 레지스터
- 상태 레지스터: 연산실행 결과의 양수와 음수, 자리올림과 오버플로등의 상태 기능
- 범용 레지스터
- 보수기
버스의 구성
- 레지스터 사이의 ALU와의 데이터 전송을 위해 필요
- 내부버스: 중앙처리장치 내부에서의 데이터 전송과 논리 제어를 담당하는 경로
- 외부버스: 중앙처리장치와 메모리나 주변장치를 연결하는 데이터 통로
명령어
명령어의 구성
명령코드부 + 오퍼랜드부
- 명령코드부: n비트로 구성되면
- 2n2^n개의 명령어 지정 가능
- 오퍼랜드 부: 실행 시 필요한 데이터 주소 / n비트로 구성되면
- 2n2^n개의 주소 지정 가능
명령어의 형식
- 오퍼랜드 수에 따라 0-주소 명령어 형식부터 3-주소 명령어 형식있음
0-주소 명령어 형식
- 오퍼랜드부를 사용하지 않는 형식으로 처리 대상이 묵시적으로 지정되어 있는 형식
- 무조건 stack 접근
- 수식은 후위 연산자 형태로 바꾸기
1-주소 명령어 형식
- op-code + operand
- 모든 데이터의 처리가 누산기에 의해 이루어짐
2-주소 명령어 형식(범용 레지스터)
- op-code + operand1 + operand2
3-주소 명령어 형식
명령어의 종류
데이터 전송 명령
- 데이터를 내용의 변경 없이 한 장소에서 다른 장소로 이동시키는 명령
- LOAD, Store, Move, Input, Output, Push, Pop
데이터 처리 명령
- 데이터에 대해 산술 연산, 논리 연산 및 시프트 연산을 수행하는 명령
- 산술연산 명령: ADD, SUB, MUL, DIV / INC / DEC
- 논리연산 명령: Clear, Complement, AND, OR, XOR
- 시프트 명령
프로그램 제어 명령
- 프로그램 수행순서 제어 명령
- goto문
주소 지정 방식
오퍼랜드를 지정하기 위해 명령어의 주소 필드를 해석하거나 변환하는 규정
묵시적 주소 지정
- 오퍼랜드 기술X
- 스택 구조의 0-주소 명령어 형식 지정 방식
즉시 주소 지정
- 명령어의 오퍼랜드 자체가 주소, 메모리 참조 횟수 0
- 오퍼랜드 길이가 제한적
직접 주소 지정
- 명령어의 오퍼랜드 주소 필드의 내용이 오퍼랜드가 들어있는 유효 주소인 경우
- 참조 횟수 1번
간접 주소 지정
- 명령어의 오퍼랜드 주소 필드의 내용이 유효 주소가 저장된 기억장소의 주소인 경우
- 참조 2번 이상
레지스터 주소 지정
- 주소 필드는 레지스터를 지정, 그 레지스터 속에 데이터 들어감
레지스터 간접 주소 지정
계산에 의한 주소 지정
- 명령어의 Operand 값과 특정 Resister의 값을 연산하여 실제 Data 주소를 구하는 방식
- 특정 레지스터로 프로그램 카운터, 인덱스 레지스터, 베이스 레지스터 등이 사용된다.
- 상대 주소 지정: 유효 주소 = 주소 필드값 + 프로그램 카운터값
- 베이스 레지스터 주소 지정: 유효 주소 = 주소 필드값 + 베이스 레지스터값
- 인덱스 주소 지정: 유효 주소 = 주소 필드값 + 인덱스 레지스터값
명령어 파이프라이닝
CPU의 프로그램 처리 속도를 높이기 위하여 CPU 내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술
2단계 명령어 파이프라인
- Fetch stage / Execute state
4단계 명령어 파이프라인
- 명령어 인출 단계 / 명령어 해독 단계 / 오퍼랜드 인출 단계 / 실행 단계
파이프라이닝에 의한 속도 향상 관계식
파이프라이닝을 이용한 겅우의 전체 명령어 실행 시간 = 파이프라인 단계의 수 + 실행할 명령어들의 수 - 1
파이프라인 해저드
명령어 실행이 불가하여 지연/중지가 발생하는 현상
- 구조적 해저드
- 포트가 하나인 메모리에 동시 접근 or 하드웨어 동시 사용하려고 할 때 발생
- 메모리를 명령어 영역과 데이터 영역으로 분리 or 하드웨어 여러 개 사용
- 데이터 해저드
- 데이터 의존성이 있는 경우
- 명령어 재배치 or 전방전달 or No-Operation insertion
- 제어 해저드
- 조건 분기로 인해 실행 순서가 변경되어 명령어 무효화된 경우
- 분기 예측이나 Stall 삽입법
RISC 파이프라인
명령실행과 제어
마이크로 오퍼레이션
명령어 하나를 수행하기 위한 동작 하나 하나를 세분화한 것
- 명령을 수행하기 위해 CPU내의 레지스터와 플래그가 의미 있는 상태로 바뀌게 하는 동작으로 레지스터에 저장된 데이터에 의해 이루어진다.
마이크로 오퍼레이션의 종류
- 전송 마이크로 오퍼레이션
- 산술 마이크로 오퍼레이션
- 논리 마이크로 오퍼레이션
- 시프트 마이크로 오퍼레이션
마이크로 사이클 타임
CPU의 속도를 나타내는 단위
- 동기 고정식
- 작업시간이 가장 긴 마이크로 오퍼레이션의 동작 시간을 마이크로 사이클 타임으로 정하는 방식
- 전체 마이크로 오퍼레이션의 수행 시간이 비슷할 때 유리
- 구현 단순, 자원 낭비 심함
- 동기 가변식
- 수행 시간이 비슷한 애들 그룹으로 묶어서 각 그룹별로 타임 정하기
- 제어기 구현 복잡, 자원 낭비는 적어짐
- 비동기식
- 오퍼레이션 각각 타임 지정
- 낭비 없음, 구현 복잡하여 실사용 어렵
메이저 스테이트
CPU 현재 수행하는 작업의 상태를 나타내는 것
- Fetch / Indirect / Execute / Interrupt
메이저 스테이트 과정
- Fetch: 주기억장치에 있는 명령어를 CPU 명령레지스터로 가져와서 해독하는 단계
- Indirect: fetch에서 넘어온 주소부가 간접주소인 경우 수행
- Execute: Fetch이후 유효번지를 이용하여 명령어를 실행하는 단계
- Interrupt: 정상적으로 실행과정을 계속할 수 없은 경우
제어장치의 구현
- 중앙처리장치의 마이크로 오퍼레이션을 순차적으로 수행하는 데 필요한 제어신호를 생성
- 구현 방법: 하드웨어적인 고정배선 방식 / 소프트웨어적인 마이크로 프로그래밍
고정배선 제어장치
- 조합논리회로를 직접 설계하여 연결하는 방식
마이크로프로그래밍 제어장치
| CISC | RISC |
|---|---|
| 명령어 복잡 | 명령어 간단 |
| 마이크로프로그래밍 | Hard-Wired 방식 |
인터럽트
컴퓨터가 프로그램을 수행하는 동안 컴퓨터의 내부 또는 외부에서 예기치 않는 사건이 발생했을 때 응급조치를 수행한 후 계속적으로 프로그램 처리를 수행하는 운영체제의 기능
- 인터럽트가 발생하는 경우
- 정전이나 기계적 고장
- 프로그램상의 문제
- 프로그램 조작자에 의한 의도적인 중단
- 입/출력 조작에 중앙처리장치의 기능이 요청되는 경우
- 프로그램에서 오버플로나 언더플로 인터럽트 요청
- 인터럽트 수행 요소
- 인터럽트 요청회로
- 인터럽트 처리루틴(IPR): 상태정보 저장
- 인터럽트 서비스 루틴(ISR): 인터럽트 처리
인터럽트 종류
- 하드웨어적 인터럽트
- 전원이상: 가장 높은 우선 순위
- 기계 착오 인터럽트: 장치 오작동
- 외부 인터럽트: 타이머?
- 입출력 인터럽트
- 소프트웨어적 인터럽트
- 프로그램 검사 인터럽트: 0으로 나누거나, 오버플로 발생했다거나
- SVC: 의도적인 인터럽트(프로그래머에 의해서?)
인터럽트 동작
- 동작 방법: 인터럽트 발생 시 주 프로그램 일시 정지, ISR로 분기, 실행 → 연산 수행 → 종료후 주 프로그램 중지된 부분부터 다시 수행
- 인터럽트 순서: 인터럽트 요청 → 현재 수행중인 프로그램 저장 → 인터럽트 처리 → 조치 → 프로그램 복귀
인터럽트 요청 회선의 연결 방법
- 단일회선방법
- 다중회선방법
- 혼합회선방법
인터럽트 체제
인터럽트 우선순위 체제
- 폴링 방식
- 소프트웨어적 우선순위 결정
- 인터럽트 반응 속도 느림
- 벡터 인터럽트 방식
- 하드웨어적 우선순위 결정
- 인터럽트 발생한 장칙라 정보 제공
- 응답 속도 빠름
기억장치와 입/출력장치
기억장치
기억장치 계층
- 레지스터 / 캐시기억장치 / 주기억장치 / 보조기억장치
- 왼쪽으로 갈 수록 속도 가격 up
- 오른쪽으로 갈 수록 욜량 up
주기억장치
반도체 기억장치
RAM
- 전원이 끊어지면 기억내용이 소멸되는 휘발성 메모리
- SRAM: 정적램, 한 플립플롭으로 구성되어 전원 공급하고 있으면 기억사라지지 않음/재충전 필요 없음/캐시메모리사용/속도는 빠르지만, 고가, 용량 적음
- DRAM: 동적램/한개의 콘덴서로 구성 주기적인 재충적 없을 경우 기억 지워짐/속도는 느리지만 가격 저가, 용량 큼
ROM
- 비휘발성 기억장치
- Mask Rom: 제조사 기록, 사용자 내용 읽기만 가능
- PROM: 사용자가 특수장치를 이용하여 단 1회 기입, 변경 불가능
- UV-EPROM: 자외선으로 정보 지울 수 있기때문에 여러번 정보 기록가능
- EEPROM: 전압을 이용하여 내용 지우거나 다시 기록 가능
메모리 주소와 용량
메모리 주소
- 주소 할당 단위는 바이트와 워드 단위로 부여
- 워드의 개수로 기억징치 크기 알 수 있음
메모리 용량
- 주소 수와 워드 크기와 관련성 있음
- 메모리 용량 = 주소 개수 * 워드 크기
보조기억장치
자기 테이프
- 순차적 접근 기억장치
- 백업 데이터 저장장치
레코드 형식
- 고정길이 레코드
- 비블록화 고정길이 레코드
- 블록화 고정길이 레코드
- 가변길이 레코드
- 비블록화 가변길이 레코드
- 블록화 가변길이 레코드
자기 디스크
- 액세스암, R/W헤드, 트랙, 실린더, 섹터
디스크 접근 시간
access time = seek time(트랙) + latency time(섹터) + transfer time(레코드→ 주기억장치)
광 디스크
- CD-ROM
- DVD
특수 기억장치
캐시기억장치
- 중앙처리장치와 주기억장치의 속도 차이를 개선하기 위한 기억자잋
- 용량은 적음, SRAM으로 구성되어 고속처리 가능
- CPU가 메모리 접근할때 캐시 먼저 참조하여 hit하면 읽고 실패시 주기억장치 접근
적중률(hit ratio) = 적중횟수 / 전체 참조 횟수 * 100
Taverage(평균 기억장치 접근 시간) = Hit ratio * Tcashe + (1 - Hit ratio) * Tmain
캐시의 사상
- 주기억장치로부터 캐시기억장치로 데이터 전송하는 것
- 직접 사상
- 주기억장치의 블록이 특정 라인에만 적재
- 연관 사상
- 주기억장치의 블록이 캐시 어느라인에든 적재할 수 있음
- 집합 연관 사상
캐시 쓰기 정책
- 즉시 쓰기(Write Through) 정책
- 메모리 쓰기 요청할때마다 캐시 내용도 즉시 바꾸기
- 나중 쓰기(Write Back) 정책
- 쓰기 요청만 캐시 내용 먼저 바꾸기 캐시에서 그 블록이 제거될 때 메인 메모리 복사시키기
캐시 일관성
- 데이터가 분실되거나 겹쳐 쓰이지 않도록 캐시 관리
- 캐시 일관성 문제
- 멀티 프로세서 시스템에서 개별 캐시는 일관성 문제를 일으킬 수 있음
- 공유 캐시는 일관성 문제 일으키지 않음
- 캐시 일관성 구조
- 디렉터리 기반 일관성 구조
- 스누핑
- 캐시 일관성 모델
- MSI 프로토콜
- MESI 프로토콜
가상기억장치
구현 기술
- 페이지 기법: 고정 길이 페이지, 내부 단편화 발생
- 세그먼테이션 기법: 가변 길이 세그먼트, 외부 단편화 발생
사상(mapping)
- 페이지 번호 와 오프셋으로 구성
연관 메모리
RAID
RAID 시스템 레벨
- RAID 0 : Stripping, 성능 향상
- RAID 1: 미러링 / 읽을 때 빠르나 저장할 때 속도 느림
- RAID 2: 해밍 오류 정정 코드
- RAID 3: 전용 패리티
- RAID 4: 블록 단위, 병목 현상 발생 가능
- RAID 5: 분산 패리티
- RAID 6: 2차 패리티 구성
- RAID 7: 실시간 운영체계
최신 컴퓨팅 기술
유비쿼터스를 이용한 컴퓨터 기술
- 웨어러블 컴퓨팅
- 임베디드 컴퓨팅
- 감지 컴퓨팅
- 노매딕 컴퓨팅
- 퍼베이시브 컴퓨팅
- 1회용 컴퓨팅
- 엑조틱 컴퓨팅
클라우드 컴퓨팅 서비스 분류
서비스 유형
- SaaS: Software
- PaaS: Platform
- IaaS: Infrastructure
서비스 운용 형태
- Private Cloud
- Public Cloud
- Hybrid Cloud
엣지 컴퓨팅
인공지능
사고 해결 유무에 따른 구분
- 약한 인공지능
- 강한 인공지능
연구지능의 요소 기술
- 탐색
- 지식 표현
- 추론
- 기계 학습
- 지도학습
- 비지도학습
- 강화학습
- 계획수립
딥러닝
머신러닝