CS/컴퓨터구조

NCS 공부 정리

말감공 2025. 7. 15. 09:42
728x90

 

컴퓨터의 발전 과정

  • 튜링 기계: 컴퓨터의 기계식 자동 계산기
  • ENIAC: 최초의 전자 계산기
  • EDSAC: 최초의 프로그램 내장 방식 도입
  • EDVAC: 프로그램 내장 방식과 2진법 채택
프로그램 내장 방식
- 폰 노이만이 제안한 방식

컴퓨터의 각 세대별 특징

  • ~1950년대: 진공관, 군사용, 하드웨어 개발, 기계어/어셈블리어
  • ~1960년 초: 트랜지스터, 사무처리, 운영체제 도입, FORTRA/COBOL/ALGOL
  • ~1970년 초: 집적회로, 시분할 처리시스템, PASCAL/LISP/구조화된 언어
  • ~1990년중반: 개인용 컴퓨터 등장
  • 1990년 중후반이후~: 인공지능

컴퓨터시스템분류

데이터 취급 방법에 따른 분류

  1. 디지털 컴퓨터
  1. 아날로그 컴퓨터
  1. 하이브리드 컴퓨터

 

처리방법에 따른 분류

  1. 일괄처리
  1. 실시간처리
  1. 시분할처리
  1. 다중처리
  1. 분산처리

연결형태에 따른 분류

  1. 중앙집중 컴퓨터시스템
  1. 분산처리 컴퓨터시스템

사용목적에 따른 분류

  1. 특수용 컴퓨터
  1. 범용 컴퓨터

처리 능력에 따른 분류

  1. 슈퍼 컴퓨터
  1. 메인 프레임
  1. 미니 컴퓨터
  1. 워크스테이션
  1. 마이크로 컴퓨터

수의 연산

보수

  1. 1의 보수

2진수의 0은 1로, 1은 0으로 변환 ⇒ 1001101 → 0110010

  1. 2의 보수

1의 보수 결과에 1을 더하여 구함 ⇒ 1001101 → 0110010 → 0110011

자료의 표현

자료 표현의 단위

비트(1) - 니블(4) - 바이트(8) - 워드(4Byte) / 필드 - 레코드 - 파일 - DB
  • 바이트: 문자 표현의 최소 단위
  • 워드: 특정 CPU에서 취급하는 명령어나 데이터의 길이에 해당하는 비트 수 / CPU가 한번에 처리가능한 양

수치데이터의 표현

  1. 고정 소수점 데이터 형식
  • 양수를 표현할 때는 부호 절대치 방식만 사용
  • 음수를 표현하는 방법에는 부호 절대치, 1의 보수, 2의 보수 표현 방식
  • 첫 번째 비트는 부호 비트로서, 양수면 0, 음수면 1
  • 부호 절대치와 부호 1의 보수는 +0, -0 존재

양수는 그냥 그대로 생각하면 된다.

음수는 3가지로 또 나뉨

  1. 부호 절대치 표현: 부호는 1로 변경, 정수부는 변경하지 않는다. → -128 표현 못함
  1. 1의 보수 표현: 부호는 1로 변경, 정수부는 1의 보수로 변경 → -128 표현 못함
  1. 2의 보수 표현: 부호는 1로 변경, 정수부는 2의 보수로 변경 → -0 표현못함

부동 소수점 데이터 형식

  • 부호비트 + 지수부 + 가수부
  • 지수부는 8비트로 실제 지수에 기준수를 더하여 나타냄
  • 4바이트 단정도 실수형과 8바이트 배정도 실수형
  • 고정 소수점 데이터 형식보다 복잡하고 연산속도 느림
  • 실수표현을 위하여 지수부와 가수부로 분리시키는 정규화과정 필요
  • IEEE 754 표준형식
    1. 32비트 부동소수점 표현
      • 지수는 8비트, 가수는 23비트, 바이어스는 127
    1. 64비트 부동소수점 표현
      • 지수는 11비트, 가수는 52비트, 바이어스는 1023
    1. 표현방식에 따라 저장되는 과정
      1. 2진수 변환
      1. 정규화 수행: 소수점 위치를 최대 유효숫자 1뒤에 위치시키기
      1. 부호비트: 양수이면 0 음수이면 1
      1. 지수부: 지수값에 바이어스 더해 표현
      1. 가수부: 정규화된 수에서 가장 왼쪽에 있는 1.을 생략하고 나머지 가수부는 0으로 채우기

10진 데이터 형식

  • 10진수 한자리를 8비트로 표현하는 존 방식과 4비트로 표현하는 팩 형식으로 구분
  • 부호는 양수이면 1100(C), 음수이면 1101(D), 부호가 없으면 1111(F)
    1. 존 형식 - 언팩 10진 데이터 형식
    1. 팩 10진 데이터 형식

문자데이터의 표현

  1. BCD 코드: 2개의 존 비트와 4개의 숫자 비트의 6비트로 구성
  1. ASCII 코드: 3개의 존 비트와 4개의 숫자 비트의 7비트로 구성
  1. EBCDIC 코드: 4개의 존 비트와 4개의 숫자 비트의 8비트로 구성
  1. 유니코드: 2바이트(16비트)

기타 코드

  1. 가중치 코드
    • 8421, 2421, 5421, 84-2-1, 51111 코드
  1. 비중치 코드
    • 3초과 코드, 그레이 코드, 2 out of 5 코드, shift counter 코드
  1. 자보수 코드
    • 3초과 코드, 2421 코드, 84-2-1 코드, 51111코드
  1. 코드에러검출
    • 패리티 비트, 해밍 코드
  • 3초과 코드

    8421 코드에 +3을 더함

  • 그레이 코드
    1. 2진수 코드를 그레이 코드로 변환하는 방법
      • 2진수의 첫번째 비트는 그레이 코드의 첫번째 비트
      • 왼쪽에서부터 오른쪽으로 이웃한 두 개의 2진 비트를 XOR 연산을 하면 그레이 코드
  • 패리티 비트
    • 1비트 에러는 검출 가능 하지만 2비트 이상 에러는 검출 불가능
    • 패리티 비트 검사 방법
      • 홀수 패리티 방법: 2진 데이터 중에서 1의 개수가 홀수개일 때 에러 없음
      • 짝수 패리티 방법: 2진 데이터 중에서 1의 개수가 짝수개일 때 에러 없음
  • 해밍코드
    • 오류 검출과 교정이 가능

중앙처리장치(CPU)

💡

CPU: 명령어를 해석하고 명령어의 수행을 위한 과정을 준비하며, 명령어의 처리 과정을 제어하는 기능

중앙처리장치의 구성

산술 논리 연산장치 + 제어 장치 + 레지스터 +내부버스

제어 장치(CU)의 구성

💡

주기억 장치에 기억된 프로그램을 차례로 읽어 그 내용을 해독하고, 해독된 의미에 따라 필요한 장치에 신호를 보내어 작동시키ㅕ, 그 결과를 검사하는 역할

제어장치의 구성요소

  1. 프로그램 카운터(PC): 다음에 수행할 명령의 주소를 기억하는 레지스터
  1. 메모리 주소 레지스터(MAR): 명령 주소 임시 기억
  1. 메모리 버퍼 레지스터(MBR): MAR 내용 임시 보관
  1. 명령 레지스터(IR): 명령문 임시 보관 / 명령부+어드레스부
  1. 명령 해독기(ID): 명령부 해독한 다음 연산장치로 보내 실행
  1. 번지 해독기: 어드레스부 해독후 저장된 데이터 메모리로 보냄
  1. 부호기: 명령 해독기 내용을 신호로 변환하여 장치로 전송

제어장치 기본동작

  1. 주기억장치에서 명령어를 일고 제어장치 내에 명령어 레지스터 저장
  1. 명령어 포인터에는 다음에 실행될 명령어 주소 저장
  1. 제어장치가 명령어 레지스터의 명령어를 해석
  1. 해석된 명령어는 해당되는 제어신호를 발생

연산장치(ALU)의 구성

연산장치의 구성요소

  1. 누산기
  1. 가산기
  1. 데이터 레지스터
  1. 상태 레지스터: 연산실행 결과의 양수와 음수, 자리올림과 오버플로등의 상태 기능
  1. 범용 레지스터
  1. 보수기

버스의 구성

  • 레지스터 사이의 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

데이터 처리 명령

  • 데이터에 대해 산술 연산, 논리 연산 및 시프트 연산을 수행하는 명령
  1. 산술연산 명령: ADD, SUB, MUL, DIV / INC / DEC
  1. 논리연산 명령: Clear, Complement, AND, OR, XOR
  1. 시프트 명령

프로그램 제어 명령

  • 프로그램 수행순서 제어 명령
  • goto문

주소 지정 방식

💡

오퍼랜드를 지정하기 위해 명령어의 주소 필드를 해석하거나 변환하는 규정

묵시적 주소 지정

  • 오퍼랜드 기술X
  • 스택 구조의 0-주소 명령어 형식 지정 방식

즉시 주소 지정

  • 명령어의 오퍼랜드 자체가 주소, 메모리 참조 횟수 0
  • 오퍼랜드 길이가 제한적

직접 주소 지정

  • 명령어의 오퍼랜드 주소 필드의 내용이 오퍼랜드가 들어있는 유효 주소인 경우
  • 참조 횟수 1번

간접 주소 지정

  • 명령어의 오퍼랜드 주소 필드의 내용이 유효 주소가 저장된 기억장소의 주소인 경우
  • 참조 2번 이상

레지스터 주소 지정

  • 주소 필드는 레지스터를 지정, 그 레지스터 속에 데이터 들어감

레지스터 간접 주소 지정

계산에 의한 주소 지정

  • 명령어의 Operand 값과 특정 Resister의 값을 연산하여 실제 Data 주소를 구하는 방식
  • 특정 레지스터로 프로그램 카운터, 인덱스 레지스터, 베이스 레지스터 등이 사용된다.
    1. 상대 주소 지정: 유효 주소 = 주소 필드값 + 프로그램 카운터값
    1. 베이스 레지스터 주소 지정: 유효 주소 = 주소 필드값 + 베이스 레지스터값
    1. 인덱스 주소 지정: 유효 주소 = 주소 필드값 + 인덱스 레지스터값

명령어 파이프라이닝

💡

CPU의 프로그램 처리 속도를 높이기 위하여 CPU 내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술

2단계 명령어 파이프라인

  • Fetch stage / Execute state

4단계 명령어 파이프라인

  • 명령어 인출 단계 / 명령어 해독 단계 / 오퍼랜드 인출 단계 / 실행 단계

파이프라이닝에 의한 속도 향상 관계식

💡

파이프라이닝을 이용한 겅우의 전체 명령어 실행 시간 = 파이프라인 단계의 수 + 실행할 명령어들의 수 - 1

파이프라인 해저드

💡

명령어 실행이 불가하여 지연/중지가 발생하는 현상

  1. 구조적 해저드
    • 포트가 하나인 메모리에 동시 접근 or 하드웨어 동시 사용하려고 할 때 발생
    • 메모리를 명령어 영역과 데이터 영역으로 분리 or 하드웨어 여러 개 사용
  1. 데이터 해저드
    • 데이터 의존성이 있는 경우
    • 명령어 재배치 or 전방전달 or No-Operation insertion
  1. 제어 해저드
    • 조건 분기로 인해 실행 순서가 변경되어 명령어 무효화된 경우
    • 분기 예측이나 Stall 삽입법

RISC 파이프라인

명령실행과 제어

마이크로 오퍼레이션

💡

명령어 하나를 수행하기 위한 동작 하나 하나를 세분화한 것

  • 명령을 수행하기 위해 CPU내의 레지스터와 플래그가 의미 있는 상태로 바뀌게 하는 동작으로 레지스터에 저장된 데이터에 의해 이루어진다.

마이크로 오퍼레이션의 종류

  1. 전송 마이크로 오퍼레이션
  1. 산술 마이크로 오퍼레이션
  1. 논리 마이크로 오퍼레이션
  1. 시프트 마이크로 오퍼레이션

마이크로 사이클 타임

💡

CPU의 속도를 나타내는 단위

  1. 동기 고정식
    • 작업시간이 가장 긴 마이크로 오퍼레이션의 동작 시간을 마이크로 사이클 타임으로 정하는 방식
    • 전체 마이크로 오퍼레이션의 수행 시간이 비슷할 때 유리
    • 구현 단순, 자원 낭비 심함
  1. 동기 가변식
    • 수행 시간이 비슷한 애들 그룹으로 묶어서 각 그룹별로 타임 정하기
    • 제어기 구현 복잡, 자원 낭비는 적어짐
  1. 비동기식
    • 오퍼레이션 각각 타임 지정
    • 낭비 없음, 구현 복잡하여 실사용 어렵

메이저 스테이트

💡

CPU 현재 수행하는 작업의 상태를 나타내는 것

  • Fetch / Indirect / Execute / Interrupt

메이저 스테이트 과정

  • Fetch: 주기억장치에 있는 명령어를 CPU 명령레지스터로 가져와서 해독하는 단계
  • Indirect: fetch에서 넘어온 주소부가 간접주소인 경우 수행
  • Execute: Fetch이후 유효번지를 이용하여 명령어를 실행하는 단계
  • Interrupt: 정상적으로 실행과정을 계속할 수 없은 경우

제어장치의 구현

  • 중앙처리장치의 마이크로 오퍼레이션을 순차적으로 수행하는 데 필요한 제어신호를 생성
  • 구현 방법: 하드웨어적인 고정배선 방식 / 소프트웨어적인 마이크로 프로그래밍

고정배선 제어장치

  • 조합논리회로를 직접 설계하여 연결하는 방식

마이크로프로그래밍 제어장치

CISC RISC
명령어 복잡 명령어 간단
마이크로프로그래밍 Hard-Wired 방식

인터럽트

💡

컴퓨터가 프로그램을 수행하는 동안 컴퓨터의 내부 또는 외부에서 예기치 않는 사건이 발생했을 때 응급조치를 수행한 후 계속적으로 프로그램 처리를 수행하는 운영체제의 기능

  • 인터럽트가 발생하는 경우
    • 정전이나 기계적 고장
    • 프로그램상의 문제
    • 프로그램 조작자에 의한 의도적인 중단
    • 입/출력 조작에 중앙처리장치의 기능이 요청되는 경우
    • 프로그램에서 오버플로나 언더플로 인터럽트 요청
  • 인터럽트 수행 요소
    • 인터럽트 요청회로
    • 인터럽트 처리루틴(IPR): 상태정보 저장
    • 인터럽트 서비스 루틴(ISR): 인터럽트 처리

인터럽트 종류

  1. 하드웨어적 인터럽트
    1. 전원이상: 가장 높은 우선 순위
    1. 기계 착오 인터럽트: 장치 오작동
    1. 외부 인터럽트: 타이머?
    1. 입출력 인터럽트
  1. 소프트웨어적 인터럽트
    1. 프로그램 검사 인터럽트: 0으로 나누거나, 오버플로 발생했다거나
    1. SVC: 의도적인 인터럽트(프로그래머에 의해서?)

인터럽트 동작

  • 동작 방법: 인터럽트 발생 시 주 프로그램 일시 정지, ISR로 분기, 실행 → 연산 수행 → 종료후 주 프로그램 중지된 부분부터 다시 수행
  • 인터럽트 순서: 인터럽트 요청 → 현재 수행중인 프로그램 저장 → 인터럽트 처리 → 조치 → 프로그램 복귀

인터럽트 요청 회선의 연결 방법

  1. 단일회선방법
  1. 다중회선방법
  1. 혼합회선방법

인터럽트 체제

인터럽트 우선순위 체제

  1. 폴링 방식
    • 소프트웨어적 우선순위 결정
    • 인터럽트 반응 속도 느림
  1. 벡터 인터럽트 방식
    • 하드웨어적 우선순위 결정
    • 인터럽트 발생한 장칙라 정보 제공
    • 응답 속도 빠름

기억장치와 입/출력장치

기억장치

기억장치 계층

  • 레지스터 / 캐시기억장치 / 주기억장치 / 보조기억장치
  • 왼쪽으로 갈 수록 속도 가격 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 시스템 레벨

  1. RAID 0 : Stripping, 성능 향상
  1. RAID 1: 미러링 / 읽을 때 빠르나 저장할 때 속도 느림
  1. RAID 2: 해밍 오류 정정 코드
  1. RAID 3: 전용 패리티
  1. RAID 4: 블록 단위, 병목 현상 발생 가능
  1. RAID 5: 분산 패리티
  1. RAID 6: 2차 패리티 구성
  1. RAID 7: 실시간 운영체계

최신 컴퓨팅 기술

유비쿼터스를 이용한 컴퓨터 기술

  • 웨어러블 컴퓨팅
  • 임베디드 컴퓨팅
  • 감지 컴퓨팅
  • 노매딕 컴퓨팅
  • 퍼베이시브 컴퓨팅
  • 1회용 컴퓨팅
  • 엑조틱 컴퓨팅

클라우드 컴퓨팅 서비스 분류

서비스 유형

  1. SaaS: Software
  1. PaaS: Platform
  1. IaaS: Infrastructure

서비스 운용 형태

  1. Private Cloud
  1. Public Cloud
  1. Hybrid Cloud

엣지 컴퓨팅

인공지능

사고 해결 유무에 따른 구분

  1. 약한 인공지능
  1. 강한 인공지능

연구지능의 요소 기술

  1. 탐색
  1. 지식 표현
  1. 추론
  1. 기계 학습
    1. 지도학습
    1. 비지도학습
    1. 강화학습
  1. 계획수립

딥러닝

머신러닝

 

 

'CS > 컴퓨터구조' 카테고리의 다른 글

명령어 사이클  (0) 2025.10.24