전산직 컴퓨터일반 - Part 01 전자계산기구조론 요약

⭐⭐⭐ 반드시 / ⭐⭐ 중요 / ⭐ 참고 ⚠️ = 기출 함정 포인트



Chapter 01. 컴퓨터 시스템


하드웨어 / 소프트웨어

  • 하드웨어 = 물리적 부품 (CPU, 기억장치, 입출력장치)
  • 소프트웨어 = 외형 없는 명령과 데이터의 집합

CPU 내부

  • 제어장치: 주기억장치에서 명령어 인출·해독 → 제어신호 발생 (지휘자)
    • 구성: MAR, MBR, 명령레지스터(IR), 프로그램카운터(PC), 명령해독기
  • 연산장치(ALU): 제어신호에 따라 실제 연산 수행 (일꾼)
    • 구성: 산술·논리연산기, 상태레지스터, 쉬프터, 보수기
  • 레지스터: CPU 내 임시기억장치 (고속)
  • CPU 내부버스: 데이터/주소/제어 신호 전송

⭐⭐⭐ 기억장치 계층구조

1
2
3
레지스터 → 캐시 → 주기억장치 → 보조기억장치
(위로 갈수록) 고속·고가·소용량
(아래로 갈수록) 저속·저가·대용량
  • ⚠️ 보조기억장치(HDD/SSD)는 CPU와 직접 정보교환 불가 → 반드시 주기억장치 경유
  • 주기억: RAM(휘발성) / ROM(비휘발성)

소프트웨어

  • 시스템 S/W = 제어 프로그램(감시·작업제어·데이터관리) + 처리 프로그램(언어번역·서비스)
  • 응용 S/W = 사용자 목적용

⭐⭐ 컴파일러 vs 인터프리터

  컴파일러 인터프리터
번역 단위 파일 문장
목적 프로그램 생성 O 생성 X
메모리 할당 받음 안 받음
번역 속도 느림 빠름
실행 속도 빠름 느림
  • 펌웨어: S/W를 H/W화. ROM에 저장, 미들웨어라고도 함. 대표 예 = BIOS
  • 부팅: 전원 → ROM의 부트로더 실행 → HDD의 OS 커널을 RAM에 적재 → 제어권 OS로

⭐⭐ 컴퓨터 구조의 발전

  • ENIAC: 프로그램 외장식 → 작업 바꿀 때마다 배선 재배치
  • EDSAC / EDVAC: 프로그램 내장식 → 프로그램과 데이터를 동일 형태로 메모리에 저장 = 폰노이만 구조
  • ⚠️ 폰노이만 구조 최초 컴퓨터는 ENIAC이 아님 (ENIAC은 외장식)
  • UNIVAC-1: 세계 최초 상업용 (국세조사)
  • 하버드 아키텍처: 명령어/데이터 메모리를 분리 → 병렬 인출

⭐⭐⭐ 정보처리 시스템의 분류

방식 구성 현실 예시
일괄처리 CPU1-메모리1-프로그램1-사용자1 모아서 한번에
다중프로그래밍 CPU1-메모리1-프로그램n-사용자1 일반 PC
시분할 CPU1-메모리1-프로그램n-사용자n 다중프로그래밍의 논리적 확장
다중처리(강결합) CPUn-메모리1-프로그램n-사용자n 멀티코어 프로세서
분산처리(약결합) CPUn-메모리n-프로그램n-사용자n 클라우드
  • ⚠️ 다중처리 = 메모리 공유(강결합) / 분산처리 = 메모리 각자(약결합)
  • 실시간 시스템: 자료 발생 즉시 처리

⭐ 세대별 발전 / 성능 단위

세대 소자 키워드
1 진공관 전력소모↑
2 트랜지스터 신뢰성↑
3 집적회로 MIS, 시분할
4 고밀도 IC PC 대중화
5 초고밀도 IC 인공지능
  • 주파수 = 1/주기
  • CPU 실행시간 = 명령어 개수 × 평균 CPI × 클록주기

⭐⭐ CPU 시간 계산 (기출 단골)

  • CPI = 명령어 1개 처리에 필요한 평균 클록 수
  • 주기 = 1/주파수 이므로 → 실행시간(초) = 명령어 수 × CPI ÷ 클록 주파수
  • 앞 숫자끼리 / 10의 지수끼리 따로 계산 (곱하면 지수 더하기, 나누면 빼기)
  • 단위: G = 10⁹ / 만 = 10⁴ / 백만 = 10⁶ ・ ms = 10⁻³초 / μs = 10⁻⁶초 / ns = 10⁻⁹초
기출 계산 답
1GHz, 15만개, CPI 5 (2013 국가) 1.5×10⁵ × 5 ÷ 10⁹ = 7.5×10⁻⁴초 0.75ms
4GHz, 10¹⁰개, CPI 4 (2021 국가) 10¹⁰ × 4 ÷ (4×10⁹) 10초
2GHz, 100만개, CPI 1 (2012 국회) 10⁶ × 1 ÷ (2×10⁹) = 0.5×10⁻³초 0.5ms

⭐⭐ GPU / GPGPU / APU

  • GPU: CPU보다 ALU가 훨씬 많음 → 대량의 간단한 연산을 병렬로 빠르게 처리
    • 그래서 기계학습·인공신경망·블록체인에 사용 (2021 국회)
    • ⚠️ CPU보다 ALU 적다 / 전력 적게 소모 / 트랜지스터 적다 → 전부 틀림 (다 많음)
  • GPGPU: GPU를 그래픽 외 범용 연산에 사용하는 기술 (OpenCL로 프로그래밍)
    • ⚠️ “CPU용 모든 프로그램이 GPGPU에서 실행 가능” → 틀림
    • 병렬처리 불가능한 프로그램은 GPGPU에서도 성능향상 기대 어려움
  • APU: CPU + GPU를 하나의 칩에 (AMD 최초 제시). 크기↓, 발열↓
  • 암기: APU = CPU + GPU



Chapter 02. 데이터의 표현과 컴퓨터 연산


⭐⭐ 정보 표현 단위

1
비트(1) → 니블(4) → 바이트(8) → 워드
  • 비트: 최소 단위. n비트 = 2ⁿ개 표현
  • 니블: 4비트 = 16진수 1자리. 독립 처리 안 됨
  • 바이트: 8비트. 문자 표현의 최소 단위
  • 워드: ⚠️ CPU가 한 번에 처리하는 데이터 크기
    • Half Word=2B / Full Word=4B / Double Word=8B

⭐⭐ 진법 변환

  • 정수부: x로 나눠 나머지 → 아래에서 위로 읽기
  • 소수부: x를 곱해 올라간 정수 → 위에서 아래로 읽기
  • 2진수 ↔ 8진수: 3자리씩 묶기 (2³)
  • 2진수 ↔ 16진수: 4자리씩 묶기 (2⁴)

2진 소수 자리값 (정수부의 반대 방향으로 ÷2씩)

1
… 8  4  2  1 . 0.5  0.25  0.125  0.0625
  • 10진 소수를 이 값들의 합으로 쪼개면 바로 변환: 0.625 = 0.5 + 0.125 → .101
  • 0.5 / 0.25 / 0.125 / 0.0625 네 개만 외우기

x진수 → 10진수: 각 자리 × 밑수의 거듭제곱을 모두 더하기

  • 264₍₈₎ = 2×64 + 6×8 + 4×1 = 180 (⚠️ 181 아님, 2021 지방직 함정)
  • 소수점 오른쪽은 밑수⁻¹, 밑수⁻² … (0.4₍₈₎ = 4/8 = 0.5)

용량 단위: 2¹⁰=K, 2²⁰=M, 2³⁰=G, 2⁴⁰=T, 2⁵⁰=P, 2⁶⁰=E, 2⁷⁰=Z, 2⁸⁰=Y (한 칸 = ×2¹⁰)

⭐⭐ 보수

  • 컴퓨터는 뺄셈 회로가 없음 → 보수로 덧셈 처리
  • 1의 보수: 모든 비트 반전
  • 2의 보수: 1의 보수 + 1
  • 밑수 R → R의 보수, R-1의 보수 (10진수는 10/9의 보수)

2의 보수로 표현된 수 읽기

  • 맨 앞(MSB) 0 → 양수, 1 → 음수 (문제에서 “부호 있는 / 2의 보수”일 때만)
  • 음수 값 = 2의 보수를 한 번 더 취한 값에 − 붙이기
    • 11111010 → 반전 00000101 → +1 → 00000110 = 6 → −6
  • 전부 1(1111…1) = −1 / 1000…0 = 가장 작은 음수 (4비트면 −8)

⭐⭐ 코드

코드 비트 표현 수 특징
표준 BCD 6 (zone2+digit4) 64 대소문자 구별 X
아스키 7 (zone3+digit4) 128 PC·통신용
확장BCD(EBCDIC) 8 (zone4+digit4) 256 범용 컴퓨터
유니코드 16 65536 언어 무관
  • 3초과(Excess-3): 8421코드 + 3(0011). 자기보수 코드, 비가중치
  • Gray 코드: 인접 값이 1비트만 차이. A/D 변환기, 에러율↓
  • 패리티 비트: 1개 에러만 검출
  • 해밍코드: 에러 검출 + 수정
  • ASCII 7비트 + 패리티 1비트 = 8비트(1바이트) → 데이터 통신용

⭐⭐ 해밍코드 풀이 틀

1
2
위치:  1   2   3   4   5   6   7
이름:  P1  P2  D1  P4  D2  D3  D4
  • 패리티 = 1, 2, 4, 8, 16… (2의 거듭제곱 자리) / 나머지 = 데이터
  • 담당 구역: Pn은 n번째부터 n개 잡고 n개 건너뛰기
    • P1 = 1,3,5,7,9… / P2 = 2,3,6,7,10,11… / P4 = 4,5,6,7,12… / P8 = 8~15
  • 만들기: 데이터를 3,5,6,7에 넣고 → 각 구역 1 개수 홀수면 패리티 1, 짝수면 0 (짝수 패리티)
    • 1001 → 0011001 / 1010 → 1011010
  • 오류 수정: 각 구역 검사 → 홀수 나온 패리티 번호를 더한 값 = 오류 위치 → 그 비트 뒤집기
    • 0011111 → P1, P2 틀림 → 1+2 = 3번 → 0001111
  • 16비트 코드 → 패리티 1,2,4,8,16 = 5개, 데이터 11개 (2020 해경)
  • 짝수/홀수 판단: 문제에 명시 or p = (d합) mod 2 식이면 짝수 패리티
  • ⚠️ 적는 방향 주의: 배치표 주면 표대로(예: d4 d3 d2 p4 d1 p2 p1 = 오른쪽이 1번), 없으면 왼쪽이 1번, 선지에 없으면 뒤집기

⭐⭐ 수치형 데이터 표현

언팩 vs 팩

  • 언팩: 숫자 1자리 = 1바이트 → 입출력용
  • 팩: 숫자 1자리 = 4비트(1바이트에 2자리 압축) → 연산용
  • 부호: C(1100) = 양수, D(1101) = 음수

⭐⭐⭐ 고정소수점 - 음수 표현 3가지

  부호와 절대치 1의 보수 2의 보수
방법 최상위 비트만 변환 전체 반전 1의보수+1
0 표현 +0, -0 +0, -0 +0만
표현범위 -(2ⁿ⁻¹-1)~+(2ⁿ⁻¹-1) 동일 -(2ⁿ⁻¹)~+(2ⁿ⁻¹-1)
속도 느림 가장 느림 가장 빠름 ★
  • 양수는 3가지 모두 동일하게 표현
  • 캐리 발생 시 버림 / 미발생 시 결과는 음수

⭐⭐⭐ 부동소수점 (IEEE 754)

형식 부호 지수 가수
단정도(32bit) 1 8 (Bias 127) 23
배정도(64bit) 1 11 (Bias 1023) 52
  • 정규화: ±1.bbb × 2^E 형태로
  • 잠복비트: 소수점 앞의 1은 항상 1이라 저장 안 함
  • 바이어스: 음수 지수를 양수로 만들려고 더하는 값
  • ⚠️ 연산 순서: ① 0인지 검사 → ② 지수를 큰 쪽에 맞춤 → ③ 가수 연산 → ④ 정규화

⭐⭐ IEEE 754 변환 풀이 (예: −30.25 × 2⁻⁸, 2021 국가)

  1. 부호: 음수 → 1
  2. 2진수: 30.25 = 11110.01
  3. 정규화: 11110.01 × 2⁻⁸ = 1.111001 × 2⁻⁴ (소수점 왼쪽 4칸 이동 → 지수 +4)
  4. 지수부: −4 + 127 = 123 = 01111011
  5. 가수부: “1.” 뒤만 → 111001 + 0 채워 23비트
  6. 16진수: ⚠️ 필드 경계 무시하고 32비트 전체를 왼쪽부터 4자리씩
    • 1011 1101 1111 0010 0000 … → BDF20000 - ⚠️ 가수부 ≠ 소수부: 가수부는 정규화 후 “1.” 뒤의 유효숫자 (원래 정수부 비트도 포함됨)

⭐ 논리연산

  • AND(둘 다 1) / OR(하나라도 1) / XOR(다르면 1)
  • 선택적-세트 = OR / 선택적-보수 = XOR / 마스크(삭제) = AND
  • Shift: 밀려난 비트 제거, 빈자리 0
  • Rotate: 밀려난 비트가 반대편으로 순환
  • 산술적 shift: 부호비트 유지. 좌측 = ×2ⁿ, 우측 = ÷2ⁿ



Chapter 04. 중앙처리장치(CPU)


⭐⭐⭐ RISC vs CISC

구분 CISC RISC
명령어 개수 많다 적다
명령어 길이 가변 고정(1워드)
주소지정 방식 많다 적다
레지스터 수 적다 많다 ⚠️
처리속도 저속 고속
전력소모 많다 적다
제어방식 마이크로프로그래밍 Hard-Wired
파이프라이닝 어려움 효율적
  • ⚠️ “RISC는 레지스터를 적게 쓴다” → 틀림! 많이 씁니다
  • RISC는 연산을 레지스터끼리만, 메모리 접근은 Load/Store만

⭐⭐⭐ CPU 내부 레지스터 5종

레지스터 역할
PC 다음에 인출할 명령어의 주소
IR 가장 최근에 인출된 명령어
AC 연산 결과 일시 저장
MAR 주기억장치 주소 임시 저장
MBR 주기억장치에 쓸/읽은 데이터 임시 저장
  • ⚠️ “MAR = 가장 최근 인출한 명령어 보관” → 틀림! 그건 IR
  • MAR = Address(주소), MBR = Buffer(데이터)

⭐⭐ 소속 구분 (함정 단골)

제어장치 연산장치
PC, IR, MAR, MBR, 명령해독기(디코더), 번지해독기, 제어신호 발생기(부호기) 누산기(AC), 가산기, 보수기, 시프트 레지스터, 상태 레지스터, 데이터 레지스터
  • CPU 구성요소 = 제어장치 + ALU + 레지스터 (⚠️ DRAM, PCI, 메인보드 X)
  • ⚠️ 캐시 메모리는 CPU 내부 레지스터가 아님 (2019 국가)
  • ⚠️ 세그먼트 포인터는 가상기억장치 개념 → 제어장치 구성요소 아님
  • ⚠️ 레지스터는 플립플롭으로 구성 (DRAM 아님, 2008 국가)
  • ⚠️ 인출된 명령어는 MBR → IR 에 저장 (누산기 아님)
  • ⚠️ 시스템 동작 제어 = 제어신호 발생기 (PC 아님)
  • 스택 포인터(SP): 인터럽트 시 원래 프로그램으로 돌아오도록 복귀 주소(PC) 를 스택에 임시 저장
  • CPU 처리속도 단위: MIPS

⭐⭐ 플래그 레지스터(PSW): 연산 결과 상태 기록

  • Carry(자리올림) / Parity(1의 개수 짝수) / Zero(결과 0) / Sign(음수) / Overflow

필요한 비트(선) 수 = n개를 구분하는 최소 k (2ᵏ ≥ n)

  • 20가지 작업 → 2⁴ < 20 ≤ 2⁵ → 5개 선 (2013 서울시)
  • 레지스터 16개 → 2⁴ → 4비트 / 3-주소 명령어면 × 3 = 12비트 (2012 국회)

⭐ 명령어 형식 (오퍼랜드 수)

  • 0-주소: 스택 사용, PUSH/POP, 후위표기법
  • 1-주소: 누산기(AC) 사용, LOAD/STORE
  • 2-주소: 가장 많이 사용 / 3-주소: 프로그램 짧음, 입력자료 보존
  • 0-주소 스택 계산: PUSH C → PUSH A → PUSH B → ADD → MUL → POP Z
    • 스택(LIFO)에 C, A, B → ADD로 위 두 개(B+A) → MUL로 그 결과 × C → Z = (A+B)×C

⭐⭐ 주소지정 방식 — 메모리 접근 횟수

방식 접근 횟수
즉시(Immediate) 0회 (가장 빠름)
레지스터 0회
직접(Direct) 1회
간접(Indirect) 2회 (가장 많음) ⚠️
  • 상대 주소지정 = PC + 변위
  • 인덱스 주소지정 = 인덱스 레지스터(IX) + 변위
  • 베이스 레지스터 주소지정 = 베이스 레지스터 + 주소필드
  • 묵시적(implied) 주소지정 = 오퍼랜드가 명령어 정의에 이미 정해짐 (스택 등)

⭐⭐⭐ 비유: 오퍼랜드 = 쪽지, 메모리 = 사물함

방식 쪽지 내용 과정 레벨
즉시 데이터 자체 쪽지가 곧 데이터 0
레지스터 레지스터 이름 레지스터 안 = 데이터 0.5
직접 사물함 번호 1번 열기 1
레지스터 간접 레지스터 이름 레지스터 안 = 사물함 번호 → 열기 1.5
간접 사물함 번호 열면 또 번호 → 한 번 더 열기 2
상대 숫자 숫자 + PC = 사물함 번호  
  • 속도: 즉시 > 레지스터 > 직접 > 레지스터 간접 > 간접 (메모리 1점, 레지스터 0.5점)
  • 메모리 참조 안 하는 방식 = 즉시, 레지스터 (2009 서울시)
  • 간접 방식 쓰는 이유: 짧은 명령어로 지정 가능한 주소 범위 확대 (단점: 가장 느림)
  • 상대 주소 = 분기 명령어에서 주로 사용
  • ⚠️ 상대 주소의 PC는 이미 +1 된 값 (명령어 인출하면서 PC ← PC+1)

⭐⭐ 163번 유형 (2008 국회) — LDA MODE 400, PC=100, R1=300 메모리: [300]=600, [400]=700, [500]=800, [501]=375, [700]=302

방식 유효주소 AC
직접 400 700
간접 [400]=700 302
상대 400 + 101 = 501 375
레지스터 R1 300
레지스터 간접 R1 = 300 600
  • AC(누산기) = 최종 꺼낸 데이터를 담는 바구니 (LDA = Load Accumulator)

⭐⭐ 인터럽트

  • 외부 인터럽트 = 정전, 기계결함, 입출력 → 하드웨어 원인
  • 내부 인터럽트 = 0으로 나누기, 오버플로, 보호영역 침범 → 프로그램 오류
  • SVC(슈퍼바이저 호출) = 사용자가 의도적으로 OS 서비스 요청

우선순위 판별 3가지

방식 장점 단점
소프트웨어 폴링 우선순위 변경 쉬움, 저렴 시간 많이 소요
데이지 체인 하드웨어 간단 낮은 우선순위 처리 어려움
벡터 인터럽트 빠른 식별 하드웨어 복잡, 장치 수 제한
  • 동작 순서: 요청 → 현재 상태 저장 → 원인 분석·ISR 수행 → 상태 복구 → 재개

⭐ 시스템 버스

  • 데이터 버스: 양방향. 폭 = 한 번에 전송되는 비트 수
  • 주소 버스: 단방향. 비트 수 = 접근 가능한 주소 개수 결정
  • 제어 버스: 제어신호 전송



Chapter 05. 기억장치


⭐⭐⭐ DRAM vs SRAM

  DRAM SRAM
소자 캐패시터 플립플롭
재충전(refresh) 필요 불필요
속도 느림 빠름
가격 저렴 비쌈
집적도(밀도) 높음 낮음
전력소모 적음 많음
용도 주기억장치 캐시 메모리
  • ⚠️ “DRAM은 주기적 충전 없어도 영구 저장” → 틀림! (2010 국가직)
  • 암기: Static=가만히 둬도 유지 / Dynamic=계속 새로고침

⭐⭐ ROM 종류

  • Mask ROM: 제작 시 고정, 변경 불가
  • PROM: 1회에 한해 기록 가능
  • EPROM: 여러 번 지우고 재기록 (UVEPROM=자외선 / EEPROM=전기)
  • EEPROM: 비휘발성 + 읽기·쓰기 가능, 갱신 횟수 제한
  • 플래시 메모리: ROM의 비휘발성 + RAM의 자유로운 입출력
    • NAND: 데이터 저장용, 셀 직렬, 대용량, USB
    • NOR: 코드 저장용, 셀 병렬, 읽기 빠름

⭐⭐⭐ 캐시 메모리

  • 목적: CPU와 주기억장치의 속도 차이 보완
  • 적중률(Hit Ratio) = 적중 수 ÷ 전체 참조 횟수

⭐⭐⭐ 평균 접근시간 공식

1
T = (적중률 × 캐시시간) + (1-적중률) × 주기억시간

예) 캐시 20ns, 주기억 150ns, 적중률 80% = 0.8×20 + 0.2×150 = 16 + 30 = 46ns (2020 지방직)

지역성(Locality) — 캐시가 효과를 내는 이유

  • 시간 지역성: 한 번 쓴 걸 또 씀 (반복문, 서브루틴)
  • 공간 지역성: 근처 주소를 이어서 씀 (배열, 순차 실행)

⭐⭐ 사상(Mapping) 기법

기법 특징
직접 사상 캐시블록 = 메모리블록 mod 캐시블록수. 간단·저렴, 충돌 잦음
완전연관 사상 어느 라인에도 적재 가능. 적중률 최고, 회로 복잡·비쌈
집합연관 사상 둘의 절충. 실제 가장 많이 사용
  • 속도 순: 연관 > 집합연관 > 직접

⭐⭐ 쓰기 정책

  • 즉시 쓰기(Write-Through): 캐시 + 주기억 동시 기록 → 일관성 O, 느림
  • 나중 쓰기(Write-Back): 캐시에만 기록, 교체 시 반영 → 빠름, 일관성 X
  • ⚠️ “write-back은 적중 시 메인메모리도 갱신” → 틀림!

교체 알고리즘: LRU(적중률 높음, 비쌈) / Random / FIFO

⭐⭐ RAID

레벨 방식 핵심
RAID 0 스트라이핑 패리티·미러링 없음 → 장애 시 전부 손실
RAID 1 미러링 복사. 신뢰성↑, 저장비용↑, 쓰기 느림
RAID 2 비트 + 해밍코드 거의 사용 X
RAID 3 비트 단위 + 패리티 1개  
RAID 4 블록 단위 + 패리티 1개 패리티 디스크 병목
RAID 5 블록 + 분산 패리티 병목 해결, 현재 최다 사용
RAID 6 블록 + 이중 분산 패리티 두 가지 패리티
  • ⚠️ “RAID 5는 이중 분산 패리티” → 틀림! 이중은 RAID 6
  • 암기: 2=해밍, 3=비트, 4=블록+고정, 5=블록+분산, 6=이중

⭐ 기타

  • 주기억장치 용량 = 주소 개수 × 주소 1개 크기
    • 주소 개수 ← MAR 크기 / 워드 길이 ← MBR 크기
  • 엔디언: 빅=큰 단위가 앞(적은 주소) / 리틀=작은 단위가 앞
    • (1234)₁₆ → 빅: 12 34, 리틀: 34 12
  • 메모리 인터리빙: 모듈 여러 개 독립 접근 → 연속 바이트 한 번에
  • 디스크 접근시간 = Seek Time + Search Time + Transmission Time
  • 연관 기억장치(CAM): 주소가 아닌 내용으로 검색



Chapter 06. 입출력장치


입출력장치 특징: 주기억장치보다 동작 속도가 매우 느림 (기계적 동작), 처리 단위 다름, 에러 확률 높음

  • ⚠️ “입출력장치는 반드시 CPU 제어를 거쳐야만 데이터 교환” → 틀림! DMA로 CPU 거치지 않고 직접 교환 가능 (2023 국가)

⭐⭐⭐ 입출력 제어 기법 (CPU 부담 순)

방식 CPU 개입 설명
프로그램 I/O(폴링) 가장 많음 CPU가 끝날 때까지 계속 대기
인터럽트 구동 I/O 중간 CPU는 다른 일. 단 메모리 접근은 CPU 담당
DMA 가장 적음 DMA 제어기가 전송 처리
  • ⚠️ CPU 부담 작은 순서: DMA < 인터럽트 구동 < 프로그램 I/O (2012 국회)

DMA

  • 대용량 데이터 이동에 효과적
  • CPU는 시작과 마지막에만 관여
  • 사이클 스틸링: DMA가 버스 사용권을 CPU로부터 일시적으로 빼앗음

채널: DMA보다 발전. 자기 자신의 프로그램을 가져 CPU와 독립 동작

  • 셀렉터 = 고속 1개 / 바이트 멀티플렉서 = 저속 여러 개 / 블록 멀티플렉서 = 고속 여러 개

주소 지정 방식

  • 메모리 맵 I/O: 기억장치 주소공간과 함께 사용
  • 분리형 I/O: 주소공간 분리, 별도 명령어 필요, 프로그래밍 복잡



Chapter 07. 병렬처리


⭐⭐⭐ 플린의 분류

분류 명령어 데이터 특징
SISD 단일 단일 단일 프로세서. 파이프라인·슈퍼스칼라
SIMD 단일 다중 벡터/배열 프로세서
MISD 다중 단일 이론상만 존재
MIMD 다중 다중 공유 기억장치 / 분산 기억장치
  • ⚠️ SISD를 “여러 프로세서로 구성”이라 하면 틀림

⭐⭐⭐ 파이프라인

공식: S = (K + N − 1) × T (K=단계 수, N=명령어 수, T=클록 주기)

예) 4단계, 10개 명령어 → (4+10-1)×T = 13T

⭐⭐⭐ 해저드 3종

해저드 원인 별칭 해결
구조적 동일 하드웨어 자원 동시 요구 자원 해저드 자원 추가, NOP
명령어 분기(branch) 명령어 분기/제어 해저드 분기 예측, 재배치
데이터 앞 결과를 뒤가 사용(종속) — 데이터 전방전달(forwarding)

이상적 효과가 안 나는 이유

  • 클록 주기는 가장 긴 단계 기준
  • 오퍼랜드 불필요 명령어도 모든 단계 통과
  • IF·OF 단계 기억장치 충돌
  • 조건 분기 시 미리 인출한 명령어 무효화

⭐⭐ 슈퍼스칼라 / 슈퍼파이프라인

  • 슈퍼스칼라: 파이프라인을 여러 개 (폭을 늘림) → (k + ⌈N/m⌉ − 1) × T
  • 슈퍼파이프라인: 클록 주기를 절반 이하로 (주기를 쪼갬) → (k + ⌈(N−1)/m⌉) × T

⭐⭐ 암달의 법칙

1
2
최대 성능 향상 = 1 / [(1−p) + p/s]
p = 개선 부분 비율, s = 향상 배수

예) 부동소수점 50%, 하드웨어 2배 개선 → 1/[(1−0.5)+0.5/2] = 1/0.75 ≈ 1.33배 → s를 ∞로 해도 최대 2배를 못 넘음 (1/(1−0.5))

  • 의미: 개선 안 된 부분이 전체 성능을 제한한다
  • 구스타프슨 법칙: 암달의 반대 개념



🎯 시험 직전 최종 체크 15

  1. 다중처리=멀티코어(메모리 공유) / 분산처리=클라우드(메모리 각자)
  2. RISC는 레지스터가 많다 (적다 아님)
  3. MAR=주소, MBR=데이터, IR=최근 명령어
  4. 간접 주소지정 = 메모리 접근 2회 (가장 많음)
  5. DRAM은 재충전 필요, SRAM은 불필요
  6. write-back은 캐시에만 기록 (메인메모리 동시 갱신 X)
  7. RAID 5=분산 패리티(1개 복구), RAID 6=이중(2개 복구)
  8. CPU 부담: DMA < 인터럽트 < 프로그램 I/O
  9. IEEE754 단정도 = 부호1+지수8(Bias 127)+가수23
  10. 파이프라인 = (K+N−1)×T
  11. 실행시간 = 명령어 수 × CPI ÷ 주파수, 지수끼리 따로 계산
  12. 해밍 오류 위치 = 틀린 패리티 번호의 합
  13. 상대 주소는 PC+1 된 값 사용
  14. 레지스터는 플립플롭, 캐시는 레지스터 아님, 시프트 레지스터는 연산장치
  15. GPU는 ALU 많고 병렬 처리 → 머신러닝 / APU = CPU+GPU



명령어 처리순서

  • 인출(IF) -> 해독(ID) -> 피연산자 인출(OF) -> 실행(EX) -> 저장
  • PC -> MAR -> MEMORY -> MBR -> IR -> 해독 -> 실행 -> 인터럽트 확인



RISC / CISC

  • cisc 명령어 길이는 가변
  • cisc : 메모리 피연산자를 직접 처리 / risc: Load/Store로만 메모리 접근
  • risc는 레지스터 많음, 전력소모 적음, 내부캐시 슈퍼스칼라 파이프라이닝 활용



펌웨어

  • sw를 hw화 한것으로 전원 켜지면 자동으로 실행됨 rom에 저장됨. bios가 대표적인 예임.



사상방식

  • 직접은 한곳만들어감 적중률은 낮고 교체알고리즘은 필요없고 회로는 간단함
  • 집합연관은 정해진 집합 아무곳 적중률은 중간이고 교체알고리즘은 필요하고 회로는 중간
  • 완전연관은 아무데나 들어가고 적중률은 높고 교체알고리즘은 필요하고 회로는 복잡함



주소 필드 비트 계산

  • 블록수 = 캐시 크기 / 블록 크기
  • 집합수 = 블록(라인) 수 / way
  • 태그 = 주소길이 - 세트 - 오프셋



쓰기 정책

  • write through : 캐시 + 메인 동시 기록 -> 일관성 높아지고 느림 따라서 쓰기버퍼 사용, 다중 프로세서에선 불일치 발생가능
  • write back: 캐시에만 기록 교체될때 메인이 반영됨 -> 빠름, 불일치 가능함



인터럽트

  • 우선순위 = 전원이상 -> 기계착오 -> 외부신호 -> 입출력 -> 명령어의 잘못 사용 -> 슈퍼바이저 콜
  • 소프트웨어보다 하드웨어 인터럽트가 우선순위가 높음.
  • daisy chain은 우선순위 판별을 위한 하드웨어 방법. 모든 장치를 직렬로 연결하되 우선순위가 순대로.
  • 소프트웨어 폴링은 cpu가 각 주변장치들을 연속적으로 순환하며 입출력 요구를 체크하는 방법
  • 인터럽트 벡터 = cpu와 장치사이에 버스를 설치하여 cpu에게 알리는 방식
  • 컨텍스트 스위칭: 인터럽트 발생시 제어권을 넘겨주는것.
  • 외부인터럽트 : 전원이상, 기계착오, 외부신호, 입출력
  • 내부인터럽트 : 잘못된 명령어, 프로그램 검사
  • 소프트웨어인터럽트 : 슈퍼바이저 콜 인터럽트



버스

  • 시스템 버스에 해당하는것은 제어, 주소- 단방향, 데이터 -양방향 버스가있음
  • 버스의 폭은 전송량을 의미하며 컴퓨터 성능에 영향을 줌



병렬

  • 슈퍼스칼라: 한 사이클에 여러 명령어 동시 실행
  • VLIW : 컴파일러가 동시 실행 명령어를 하나로 묶음
  • SMT: 하드웨어 멀티스레딩
  • 병렬연산장치는 배열 프로세서, spu, simd
  • 파이프라이닝 4단계 : 명령어 인출(IF) -> 명령어 해독(ID) -> 주소 인출(OF) -> 실행(EX)