자격증 정복/컴퓨터시스템기사

컴퓨터시스템기사 실기 05 — 기억장치와 캐시 (주기억장치·보조기억장치·캐시메모리·연관기억장치)

올드 IT직장인 2026. 10. 15. 00:30

컴퓨터시스템기사 실기 05 — 기억장치와 캐시 (주기억장치·보조기억장치·캐시메모리·연관기억장치)

시험일: 2026-10-25 (D-10) / 시리즈: 컴퓨터시스템기사 실기 05편

실기 시리즈 다섯 번째 글입니다.

이번 편은 대단원 3 (컴퓨터 기억 및 입출력장치) 중 기억장치 동작 분석 입니다. (입출력 제어는 다음 06편입니다.)


복원 기출을 보면 이 단원은 "비트 수 계산" 이 압도적입니다.

MAR/MBR 비트, 주소선 수, 칩 개수, 캐시 인덱스·태그 비트, 적중률, 평균 접근 시간. 전부 같은 원리(2의 거듭제곱 ↔ log₂)의 변형이라서, 한 번만 제대로 잡으면 점수가 쉽게 나오는 구간입니다.


1. 실기 출제 포인트

구분 자주 나오는 형태 중요도
캐시 주소 필드 태그·인덱스·오프셋 비트 수, 블록 번호/라인 번호 ⭐⭐⭐
적중률·평균 접근 시간 적중 45/50 → 0.9, 접근 시간 공식 ⭐⭐⭐
MAR/MBR/주소선 용량 ↔ 주소 비트, 워드 단위 주소 ⭐⭐⭐
메모리 칩 구성 필요한 칩 개수, 주소선, 디코더 크기 ⭐⭐⭐
사상 방식 직접/세트 연관/완전 연관의 태그 개수 ⭐⭐
캐시 일관성 캐시 일관성 문제, 거짓 공유(False Sharing) ⭐⭐
보조기억장치 RAID 1(미러링), SATA 속도, HDD/SSD ⭐⭐
연관기억장치 CAM = 내용으로 접근 ⭐
ROM 종류·부트스트랩 EPROM/EEPROM, 부트스트랩 로더 ⭐

💡 답안 키워드 박스
태그(Tag) 인덱스(Index) 오프셋(Offset) 적중률(Hit Ratio) 미스율 직접 사상 세트 연관 완전 연관 Write-Through Write-Back 캐시 일관성 False Sharing RAID 1 미러링 CAM 부트스트랩


2. 주기억장치 구조 및 동작 (3-1-1)

2-1. RAM과 ROM

구분 SRAM DRAM
저장 소자 플립플롭 커패시터
리프레시 불필요 필요
속도·가격 빠름·비쌈 느림·저렴
용도 캐시 메모리 주기억장치
ROM 종류 특징
Mask ROM 제조 시 내용 고정
PROM 사용자가 한 번 기록
EPROM 자외선(UV) 으로 전체 삭제 후 재기록
EEPROM 전기적 신호로 삭제·재기록 (바이트 단위)
Flash EEPROM 계열, 블록 단위 삭제 (SSD·USB의 기반)

 

기출: 전기적 신호로 지우는 ROM과 자외선으로 지우는 ROM의 명칭은? (2020 수시) → EEPROM / EPROM
기출: ROM에 들어 있으며 전원을 켤 때 운영체제를 적재하는 프로그램은? (2020 통합) → 부트스트랩(Bootstrap) 로더, IPL

 

2-2. 주소선·MAR·MBR·용량 계산 ⭐⭐⭐

주소선(MAR) 비트 수 = log₂(워드 수)
MBR 비트 수        = 워드 길이(비트)
용량               = 워드 수 × 워드 길이 = 2^(MAR) × MBR
기출 풀이 정답
4096 × 16bit의 MAR, MBR, AC 4096 = 2¹² / 워드 16bit 12 / 16 / 16 비트
MAR 10비트, MBR 8비트의 용량 2¹⁰ × 8bit = 1024 × 1Byte 1024 Byte
용량 2¹⁶ Byte, 1워드 4Byte일 때 워드 단위 주소 비트 (2024-3) 2¹⁶ / 2² = 2¹⁴ 14비트
가상 1024K / 실제 32K (2016-3)의 MAR 32K = 2¹⁵ 15비트

 

⚠️ 함정: "워드 단위 주소"인지 "바이트 단위 주소"인지가 비트 수를 바꿉니다.

문제에서 단위를 꼭 확인하세요 (2¹⁶ Byte를 바이트 주소로 하면 16비트, 워드 주소로 하면 14비트).

 

2-3. 메모리 칩 구성 ⭐⭐⭐

필요한 칩 수 = 전체 용량(비트) / 칩 1개 용량(비트)
디코더 입력 = log₂(칩 수)  → "n × 2ⁿ 디코더"

 

 

기출 ① (B형 2016-04, 2018-11) 256×8 RAM 칩으로 4096 Byte 메모리를 구성

(1) 칩 수   : (4096 × 8) / (256 × 8) = 16개
(2) 주소선  : 4096 = 2¹² → 12개
(3) 디코더  : 칩 16개를 선택 → 4×16 디코더

(주소 12비트 중 하위 8비트는 칩 내부 주소, 상위 4비트는 디코더 입력)

 

 

기출 ② (2020 수시) 128M×4bit 칩으로 512MB 구성

(512M × 8bit) / (128M × 4bit) = 4 × 2 = 8개
(칩 2개를 병렬로 묶어 8bit 폭 → 이를 4뱅크 직렬)

 

 

기출 ③ (2018-3) 4K×8bit(=32Kbit) 칩으로 128KB 구성

128KB = 1,024 Kbit → 1,024 / 32 = 32개

 

 

기출 ④ (2020 통합) 4096×8bit ROM의 최소 핀 수 (전원·접지 포함) → 23개

주소 12 + 데이터 8 + 제어(CS) 1 + 전원/접지 2 = 23

🔎 제어 핀을 CS와 OE 두 개로 계산하면 24가 됩니다.
원문 정답은 23이므로, 답안에는 "제어핀 1개 가정"을 같이 적는 것이 안전합니다.


3. 보조기억장치 종류 및 특징 (3-1-2)

3-1. HDD vs SSD

항목 HDD SSD
방식 회전 디스크 + 헤드 (기계식) 플래시 메모리 (무기계식)
지연 탐색 시간 + 회전 지연 거의 없음
속도 상대적 느림 빠름 (랜덤 I/O 특히)
충격 내성 약함 강함
수명 기계 마모 쓰기 횟수(P/E cycle) 제한

 

HDD 접근 시간 = 탐색 시간(Seek) + 회전 지연(Latency) + 전송 시간

 

3-2. 인터페이스 속도 (B 2020-11 Q5)

규격 전송률
SATA 1 1.5 Gb/s
SATA 2 3.0 Gb/s
SATA 3 6.0 Gb/s

🔎 기출 원본 대조: 복원 파일에는 SATA 2의 답이 3.5Gb/s로 적혀 있으나 오류입니다.
정답은 3.0Gb/s 입니다. (SATA 3.0은 6Gb/s, 실효 약 600MB/s)

 

3-3. RAID ⭐⭐

레벨 방식 최소 디스크 가용 용량 특징
RAID 0 스트라이핑 2 N 성능↑, 중복 없음(장애 시 전체 손실)
RAID 1 미러링 2 N/2 100% 복제, 가용성·신뢰성↑, 효율 50%
RAID 5 스트라이핑 + 분산 패리티 3 N−1 1대 장애 복구
RAID 6 이중 분산 패리티 4 N−2 2대 장애 복구
RAID 10 미러링 + 스트라이핑 4 N/2 성능 + 가용성

 

기출 (2021-1, 2025-1 동일): 거울처럼 똑같은 디스크를 병렬로 저장하여 100% 중복하는, 가용성과 신뢰성이 높은 RAID 방식은? → RAID 1 (미러링)

 

연습 (직접 만든 문제): 1TB 디스크 4개로 RAID 5 구성 시 사용 가능한 용량은? → (4−1) × 1TB = 3TB


4. 캐시메모리 구성 및 동작 (3-1-3) ⭐⭐⭐

4-1. 개념

  • CPU와 주기억장치의 속도 차이를 완화하는 고속 버퍼 (SRAM)
  • 근거는 지역성(Locality): 시간 지역성(최근 접근한 데이터 재접근), 공간 지역성(인접 주소 접근)
  • 데이터는 블록(라인) 단위로 옮김

 

4-2. 적중률과 평균 접근 시간

적중률 h = 적중 횟수 / 전체 접근 횟수
미스율   = 1 − h

 

 

기출 (2018-3, 2021-1): 전체 기억장치 접근 50회 중 캐시 적중 45회일 때 적중률과 미스율?
→ 적중률 45/50 = 0.9 (90%), 미스율 0.1 (10%)

 

평균 접근 시간

모델 공식 의미
병렬(동시) 탐색 Tavg = h·Tc + (1−h)·Tm 캐시·주기억 동시 접근, 미스면 Tm
순차 탐색 Tavg = h·Tc + (1−h)·(Tc + Tm) 캐시 먼저 확인 후 미스면 주기억

 

B 2017-04 Q14: 캐시 40ns, 주기억 60ns, 적중률 0.9

병렬 : 0.9×40 + 0.1×60        = 36 + 6  = 42ns
순차 : 0.9×40 + 0.1×(40+60)   = 36 + 10 = 46ns

🔎 기출 원본 대조: 복원 파일의 정답 58ns는 공식을 뒤집은 오류입니다.
문제에서 어느 모델인지 조건을 확인하고 공식을 같이 적어 부분 점수를 확보하세요.

 

4-3. 사상(Mapping) 방식 ⭐⭐⭐

방식 주기억 블록이 들어갈 수 있는 캐시 위치 장점 단점
직접 사상 정해진 1곳 (블록 번호 mod 캐시 블록 수) 구조 단순, 빠름 충돌 미스(Conflict) 많음
완전 연관 아무 곳 충돌 적음 모든 태그 비교 필요(비교기 많음·비쌈)
세트 연관 (n-way) 정해진 세트 안의 n곳 직접·완전의 절충 중간 복잡도

4-4. 주소 필드 계산 (직접 사상) ⭐⭐⭐

주소 = | 태그 (Tag) | 인덱스 (Index) | 오프셋 (Offset) |

블록(라인) 수 = 캐시 크기 / 블록 크기
오프셋 비트   = log₂(블록 크기, Byte)
인덱스 비트   = log₂(블록 수)           ← 세트 연관이면 log₂(세트 수)
태그 비트     = 주소 비트 − 인덱스 − 오프셋

 

 

기출 (2026-1 Q8): 32bit 주소, 블록 64Byte, 캐시 32KB의 인덱스 비트 수?

블록 수 = 32KB / 64B = 32768 / 64 = 512 = 2⁹
오프셋 = log₂64 = 6,  인덱스 = 9,  태그 = 32 − 9 − 6 = 17

→ 인덱스 9비트 (직접 사상 가정)

⚠️ 연관도 조건이 없으면 직접 사상으로 가정하고, 답안에 "직접 사상 기준"이라고 적어 두세요.

 

기출 (2024-3): 직접 사상, 블록 16Byte, 전체 블록 64개일 때 1,213 Byte 주소의 위치?

블록 번호 = ⌊1213 / 16⌋ = 75          (75×16 = 1200)
오프셋    = 1213 mod 16 = 13
캐시 라인 = 75 mod 64   = 11
태그      = ⌊75 / 64⌋   = 1

→ 75번 블록, 캐시 11번 라인, 오프셋 13 (복원본에 "블록 크기와 개수가 뒤바뀌었다는 회상"도 있어 조건 재확인 필요)

 

기출 (2023-1): 캐시 4096블록, 1블록 4워드, 32비트 주소일 때 (1) 직접 (2) 4-way (3) 완전 연관의 태그 개수는?

태그 개수(엔트리 수)는 사상 방식과 무관하게 캐시 블록 수와 같다 → 모두 4,096개

 

태그 비트 수를 묻는다면 (1워드 = 4Byte, 바이트 주소 가정):

오프셋 = log₂(4워드×4B = 16B) = 4비트
직접      : 인덱스 12 → 태그 32 − 12 − 4 = 16
4-way     : 세트 1024 → 인덱스 10 → 태그 18
완전 연관 : 인덱스 0  → 태그 28

🔎 복원본에 "워드 주소인지 바이트 주소인지 미복원"이라는 메모가 있고 정답란은 4,096개로 되어 있습니다.
시험장에서는 "태그 개수"인지 "태그 비트 수"인지를 먼저 구분하고, 가정(워드 크기, 주소 단위)을 답안에 적으세요.

 

연습 (직접 만든 문제, 기출 아님): 32bit 주소, 블록 64B, 캐시 32KB, 4-way 세트 연관일 때 태그 비트는?

블록 512개 / 4 = 세트 128개 → 인덱스 7, 오프셋 6 → 태그 32 − 7 − 6 = 19

 

4-5. 쓰기 정책과 교체

쓰기 정책 동작 특징
Write-Through 캐시와 주기억에 동시에 기록 일관성 유지 쉬움, 쓰기 느림
Write-Back 캐시에만 기록, 교체 시 주기억에 반영 (Dirty bit) 빠름, 일관성 관리 필요

 

교체 알고리즘: LRU(가장 오래 사용 안 한 것), FIFO, Random, LFU.

 

4-6. 캐시 일관성(Coherence)과 거짓 공유 ⭐⭐

기출 (2024-3): DMA와 CPU가 같은 메모리를 참조할 때 캐시에서 발생할 수 있는 문제점은?
→ 캐시 일관성 문제 (Cache Coherency Problem), 데이터 불일치

  • DMA가 메모리를 갱신했는데 CPU 캐시에 옛 데이터(Stale) 가 남는 경우
  • Write-Back 방식에서 CPU가 캐시만 수정해 두었는데 DMA가 갱신 전 메모리를 읽어 가는 경우
  • 해결: 캐시 스누핑(Snooping), 캐시 불가 영역(Non-cacheable) 지정, 소프트웨어 Flush/Invalidate

 

기출 (2023-1, 2025-3 동일): 서로 다른 프로세서가 서로 다른 변수를 쓰는데도 같은 캐시 라인에 있어 불필요한 캐시 무효화 오버헤드가 생기는 현상은?
→ 거짓 공유 (False Sharing)

  • 해결: 변수 간 패딩(padding) 으로 캐시 라인 분리, 스레드별 지역 변수 사용

5. 연관기억장치 특성 (3-1-4)

기출 (2016-1): 주소를 검색하는 것이 아니라 데이터의 일부(내용) 를 이용해 위치를 알아낸 뒤 나머지 데이터에 접근하는 방식은?
→ 연관기억장치 (CAM, Content Addressable Memory) / Associative Memory

항목 일반 메모리 연관기억장치
접근 기준 주소 내용(키)
검색 순차/주소 계산 모든 워드 병렬 비교
속도 보통 매우 빠름
비용 낮음 높음 (워드마다 비교 회로)

 

구성 요소 키워드: 인수 레지스터(Argument), 키 레지스터(Key/Mask), 일치 레지스터(Match)
활용: 캐시 태그 비교, TLB, 스위치의 MAC 주소 테이블, 라우터·방화벽의 TCAM


6. 📌 구 범위 보충 — 페이지 교체 (출제기준 외, 기출 이력 많음)

2026 신 출제기준(실기)에는 없지만 구 범위 기출(FIFO 3프레임, LRU 등)이 반복됐고 필기에도 나왔습니다.
핵심만 잡고 갑니다. 세부 보충은 09편에서 이어집니다.

 

풀이 방법: 참조열을 쓴다 → 프레임이 가득 차면 교체 대상 선택(FIFO: 가장 먼저 들어온 것, LRU: 가장 오래 참조 안 된 것) → 부재(Page Fault) 횟수를 센다

 

표준 예제 (직접 풀이): 참조열 1 2 3 4 1 2 5 1 2 3 4 5

방식 프레임 3 프레임 4
FIFO 9회 10회 ← 프레임을 늘렸는데 부재 증가!
LRU — 8회

 

→ FIFO에서 프레임이 늘면 오히려 부재가 늘 수 있는 현상 = Belady의 모순(Belady's Anomaly).

LRU는 발생하지 않습니다.


7. 기출 Q&A 모음

Q1. 32bit 주소, 블록 64B, 32KB 캐시(직접 사상)의 인덱스 비트 수? (2026-1)
A. 9비트 (블록 수 512 = 2⁹, 오프셋 6, 태그 17).

 

Q2. 접근 50회 중 45회 캐시 적중 시 적중률과 미스율? (2018-3, 2021-1)
A. 적중률 0.9, 미스율 0.1.

 

Q3. 직접 사상, 블록 16B, 64블록에서 주소 1,213의 블록/라인/오프셋? (2024-3)
A. 75번 블록, 캐시 11번 라인, 오프셋 13.

 

Q4. DMA와 CPU가 같은 메모리를 쓸 때 캐시에서 생기는 문제? (2024-3)
A. 캐시 일관성(Coherency) 문제. 해결: 스누핑, Non-cacheable, Flush/Invalidate.

 

Q5. 서로 다른 변수가 같은 캐시 라인에 놓여 생기는 불필요한 무효화 오버헤드? (2023-1, 2025-3)
A. 거짓 공유(False Sharing).

 

Q6. 256×8 칩으로 4096 Byte 구성 시 칩 수·주소선 수·디코더 크기? (B 2016-04, 2018-11)
A. 16개, 12개, 4×16 디코더.

 

Q7. 100% 미러링하는 RAID 방식? (2021-1, 2025-1)
A. RAID 1.

 

Q8. 주소가 아닌 내용으로 접근하는 기억장치? (2016-1)
A. 연관기억장치(CAM).


8. ⚠️ 함정 패턴 정리

  1. MAR ↔ MBR 혼동 — MAR은 주소(워드 수), MBR은 데이터(워드 길이)
  2. 워드 주소 vs 바이트 주소 — 비트 수가 달라짐
  3. 오프셋은 블록 크기가 Byte 단위일 때 log₂(Byte). 블록이 "4워드"로 주어지면 바이트로 환산
  4. 연관도 미기재 시 직접 사상 가정 + 답안에 명시
  5. 세트 연관 인덱스 = log₂(세트 수) = log₂(블록 수 / n)
  6. 태그 "개수" vs "비트 수" 구분
  7. 평균 접근 시간: 병렬/순차 모델 확인, 공식을 답안에 함께 기재
  8. SATA 2 = 3.0Gb/s, 복원본 해설 숫자를 그대로 외우지 말 것
  9. 칩 개수는 비트 단위로 통일해서 나누기 (바이트 ↔ 비트 혼용 주의)

9. 💡 실무에서는?

  • 캐시 적중률 공식은 DB·웹 캐시에도 그대로 적용됩니다. MySQL InnoDB buffer pool hit ratio, Redis hit rate, CDN cache hit ratio 모두 hit / (hit + miss) 이고, 평균 응답시간 = h × 캐시 응답 + (1−h) × 원본 응답 으로 용량 산정의 근거가 됩니다.
  • RAID는 백업이 아닙니다. RAID 1/5/10은 디스크 장애에만 대비하며, 삭제·랜섬웨어·오작동에는 무력합니다. 인프라 설계에서는 RAID + 스냅샷 + 오프사이트 백업(3-2-1 원칙)을 함께 설계해야 합니다. 대용량 디스크의 RAID 5는 재구축 중 2차 장애 위험 때문에 RAID 6/10을 권장하는 경우가 많습니다.
  • 보안 관점: SSD는 쓰기 분산(웨어 레벨링) 때문에 덮어쓰기로 완전 삭제가 보장되지 않아, 폐기 시 Secure Erase / 암호화 후 키 폐기(Crypto Erase) 가 쓰입니다. 캐시 기반 부채널 공격(Flush+Reload, Spectre 계열)은 캐시 공유 구조를 악용하므로, 멀티테넌트 환경에서 코어·캐시 격리가 이슈가 됩니다.
  • 네트워크 장비: 스위치 MAC 테이블과 라우터/방화벽 ACL 검색은 CAM/TCAM 으로 하드웨어 처리해 라인레이트 성능을 냅니다. TCAM 용량이 곧 ACL·라우팅 엔트리 상한이라 장비 선정 시 확인 항목입니다.
  • 거짓 공유는 고성능 멀티스레드 서버(로그 카운터, 통계 변수)에서 코어 수를 늘려도 성능이 안 오르는 전형적 원인입니다. perf c2c로 확인할 수 있습니다.

10. 핵심 정리

✅ MAR = log₂(워드 수) / MBR = 워드 길이 / 용량 = 2^MAR × MBR
✅ 칩 수 = 전체 비트 / 칩 비트 / 디코더 = n×2ⁿ (칩 16개 → 4×16)
✅ SRAM = 캐시, DRAM = 주기억(리프레시 필요)
✅ EPROM = 자외선 / EEPROM = 전기적 / 부트스트랩 = ROM에서 OS 적재
✅ 적중률 = 적중 / 전체, 미스율 = 1 − 적중률
✅ 평균 접근 = h·Tc + (1−h)·Tm (병렬) / (1−h)(Tc+Tm) (순차)
✅ 오프셋 = log₂(블록 크기), 인덱스 = log₂(블록 수), 태그 = 나머지
✅ 직접 / 완전 연관 / 세트 연관(n-way) — 연관도 없으면 직접 가정
✅ Write-Through(동시) / Write-Back(교체 시, Dirty bit)
✅ 캐시 일관성 문제 → 스누핑 / 거짓 공유 → 패딩
✅ RAID 1 = 미러링(효율 50%), RAID 5 = N−1
✅ SATA 1 / 2 / 3 = 1.5 / 3.0 / 6.0 Gb/s
✅ CAM = 내용으로 접근, 병렬 비교
✅ FIFO는 Belady의 모순 (구 범위)

11. 다음 편 예고

다음 편(06편)은 입출력 제어 (채널·DMA·인터럽트) 입니다.

오늘 나온 DMA와 캐시 일관성 문제를 이어서, 폴링·데이지 체인·벡터 인터럽트, 사이클 스틸링까지 정리합니다!

 

궁금한 점은 댓글로 남겨주세요!

반응형