이번 문서의 목표: 파이프라인 CPI, 캐시 적중률, 디스크 접근시간처럼 각 편에서 따로 배운 계산을 하나의 시나리오 안에서 순서대로 조합해 실행시간과 처리량을 구하고, 여러 구성요소 중 어디가 시스템 전체 성능을 제한하는 병목인지 짚어낼 수 있게 한다.
06~12편에서는 프로세서·파이프라인·캐시·입출력·디스크를 각각 따로 떼어 계산했다. 그런데 실제 독학사 4단계 시험, 특히 통합컴퓨터시스템이라는 과목 이름 자체가 가리키듯, 고득점 문항은 이 요소들을 한 문제 안에서 순서대로 이어 붙여 묻는다. 이 편은 새로운 개념을 배우는 자리가 아니라, 이미 배운 계산 도구를 어떤 순서로 조합해야 하는지 훈련하는 자리다.
통합형 문항이 요구하는 것
쉽게 말하면: 통합형 문항은 새 지식을 묻는 게 아니라, 이미 아는 여러 공식을 올바른 순서로 이어 붙이는 능력을 묻는다.
단원별 문항은 “캐시 적중률이 이럴 때 평균 접근시간은?”처럼 계산 대상이 하나로 좁혀져 있다. 반면 통합형 문항은 다음과 같은 형태로 나온다.
- “명령어 실행 → 캐시 접근 → (미스 시) 주기억장치 접근 → 필요하면 디스크 접근”까지 이어지는 경로 전체의 실행시간을 구하라.
- 여러 구성요소(CPU, 캐시, 디스크) 각각의 처리 능력이 주어졌을 때, 시스템 전체의 처리량(throughput)을 제한하는 병목(bottleneck)이 어디인지 판단하라.
- 한 구성요소를 개선했을 때(예: 캐시 적중률을 높였을 때) 전체 실행시간이 실제로 얼마나 줄어드는지 계산하라.
이런 문항을 풀 때 핵심은 각 단계의 계산 결과를 다음 단계의 입력으로 정확히 이어 붙이는 것이다. 아래 두 시나리오로 이 과정을 처음부터 끝까지 연습한다.
시나리오 1: 파이프라인 CPI에 캐시 미스 페널티를 반영하기
쉽게 말하면: “이상적인 CPI”에 “캐시 미스 때문에 추가로 멈춰 있는 시간”을 더해야 진짜 CPI가 나온다.
07편에서 CPI(Cycles Per Instruction, 명령어 한 개를 처리하는 데 드는 평균 클록 사이클 수)를 계산할 때는 해저드가 없는 이상적인 파이프라인을 가정했다. 하지만 09~10편에서 다뤘듯 캐시 미스가 발생하면 그 명령어는 추가로 멈춰 있어야 한다. 이 두 계산을 이어 붙여 보자.
주어진 조건
- 클록 속도(clock rate): 2GHz → 클록 한 주기(cycle time)는
- 이상적인 CPI(해저드 없음, base CPI): 1.0
- 전체 명령어 중 메모리 접근(적재·저장) 명령어의 비율: 30퍼센트(0.3)
- 캐시 적중률: 96퍼센트 → 미스율은 4퍼센트(0.04)
- 캐시 미스 1회당 페널티(추가로 걸리는 사이클 수): 50사이클
- 실행할 총 명령어 수: 10억 개(개)
1단계: 명령어당 평균 메모리 지연(stall) 사이클을 구한다
메모리 접근이 필요한 명령어 중에서도, 그중 미스가 난 것만 페널티를 겪는다. 따라서 명령어 한 개당 평균 지연 사이클은 세 값을 곱해서 구한다.
- : 전체 명령어 중 메모리 접근이 필요한 비율.
- : 그 메모리 접근이 캐시에서 실패(미스)할 확률.
- : 미스 1회가 일으키는 추가 사이클(페널티).
2단계: 실질 CPI를 구한다
이상적인 CPI에 방금 구한 지연 사이클을 더한다.
캐시 미스가 전혀 없었다면 CPI는 1.0에 머물렀겠지만, 미스로 인한 대기시간까지 반영하니 실제로는 60퍼센트 더 많은 사이클이 명령어 하나에 걸린다.
3단계: 총 실행시간을 구한다
실행시간은 “명령어 수 × 명령어당 사이클 수(CPI) × 사이클 하나의 시간”으로 계산한다.
결과 해석: 캐시 미스를 무시하고 이상적인 CPI(1.0)만으로 계산했다면 실행시간은 초로 나왔을 것이다. 캐시 미스를 반영하니 실행시간이 0.5초에서 0.8초로 60퍼센트 늘어났다 — 이 비율은 정확히 2단계에서 구한 CPI 증가율(1.6/1.0=1.6배)과 같다. 이는 CPI가 늘어난 비율만큼 실행시간도 그대로 늘어난다는 관계를 보여 준다(명령어 수와 사이클 시간이 고정이라면).
이 계산에서 “미스율 4퍼센트”를 “전체 명령어의 4퍼센트가 미스”라고 잘못 읽으면 안 된다. 미스율은 메모리 접근이 일어난 것들 중에서의 실패 비율이므로, 전체 명령어 기준으로 환산하려면 반드시 메모리 접근 비율(0.3)을 먼저 곱해야 한다.
시나리오 2: 처리량의 병목은 가장 느린 단계가 결정한다
쉽게 말하면: 여러 단계가 이어진 시스템의 전체 속도는 가장 빠른 단계가 아니라 가장 느린 단계에 맞춰진다.
07편의 파이프라인에서 “각 단계는 가장 느린 단계의 시간만큼 기다려야 한다”고 배운 원리는 파이프라인 내부만이 아니라, CPU와 디스크가 함께 일하는 시스템 전체에도 그대로 적용된다. 요청 하나를 처리하는 데 CPU 연산과 디스크 접근이 모두 필요한 서버를 예로 들어 보자.
주어진 조건
- 요청 하나당 CPU 처리시간: 5ms
- 디스크 탐색시간(seek time): 8ms
- 디스크 회전지연(rotational latency): 회전수 7200RPM(분당 회전수)일 때 평균 회전지연은 반 바퀴 도는 시간
- 디스크 전송시간(transfer time): 1ms
1단계: 디스크 회전지연을 구한다
7200RPM은 1분(60초)에 7200바퀴를 돈다는 뜻이므로, 한 바퀴 도는 시간은 다음과 같다.
평균 회전지연은 원하는 섹터가 헤드 아래로 오기까지 평균적으로 반 바퀴만 돌면 된다고 보므로, 한 바퀴 시간의 절반이다.
2단계: 디스크 접근시간(요청 하나당)을 구한다
디스크 접근시간은 탐색시간, 회전지연, 전송시간을 순서대로 더한 값이다(11~12편에서 다룬 공식).
3단계: 두 가지 운용 방식의 처리량을 비교한다
방식 A(직렬 처리) — 한 요청의 CPU 처리와 디스크 접근을 순서대로 다 마친 뒤에야 다음 요청을 시작한다면, 요청 하나당 걸리는 총 시간은 두 시간을 그냥 더한 값이다.
방식 B(파이프라인 처리) — 한 요청이 디스크 접근을 하는 동안 CPU가 다른 요청을 처리하도록(07편의 파이프라이닝처럼) 겹쳐서 운용한다면, 전체 처리량은 가장 느린 단계의 처리 속도에 맞춰진다.
결과 해석: 방식 A는 초당 약 55건, 방식 B는 초당 약 76건으로 두 방식 사이에 큰 차이가 난다. 두 방식 모두에서 디스크 접근시간(13.17ms)이 CPU 처리시간(5ms)보다 훨씬 크므로 디스크가 병목이다. CPU를 아무리 빠르게 개선해도(예: 5ms를 1ms로 줄여도) 방식 B의 처리량은 여전히 디스크 접근시간에 묶여 약 76건/초를 넘지 못한다. 반대로 디스크를 개선해 접근시간을 5ms 이하로 줄이면 그때부터는 CPU가 병목이 되어, CPU 처리시간(5ms)이 처리량의 상한을 결정하게 된다. 이처럼 병목은 시스템을 개선해 나가면서 위치가 바뀔 수 있다는 점이 통합형 문항의 단골 포인트다.
통합형 문항 풀이 전략
1단계: 요청·명령어 하나가 거치는 경로를 순서대로 적는다
“CPU → 캐시 → (미스 시) 주기억장치 → (필요 시) 디스크”처럼, 문제에서 묻는 흐름을 화살표로 먼저 적어 둔다. 이 경로가 곧 계산해야 할 단계의 목록이다.
2단계: 각 단계의 공식과 단위를 먼저 확인한다
CPI·실행시간(0608편), 평균 메모리 접근시간·AMAT(0910편), 디스크 접근시간(11~12편) 중 이 문제에 필요한 공식이 무엇인지 짚고, 단위(ns, ms, 사이클)를 미리 통일해 둔다. 서로 다른 단위를 섞어 계산하는 것이 통합형 문항에서 가장 흔한 실수다.
3단계: 확률·비율이 “무엇에 대한” 비율인지 확인한다
시나리오 1처럼 미스율이 “전체 명령어 대비”인지 “메모리 접근 명령어 대비”인지에 따라 곱해야 할 값이 달라진다. 문제 문장을 다시 읽어 기준을 명확히 한 뒤 계산을 시작한다.
4단계: 단계별로 하나씩 계산하고 중간값을 남긴다
한 번에 답을 내려 하지 말고, 이 문서의 두 시나리오처럼 지연 사이클 → CPI → 실행시간, 또는 회전지연 → 접근시간 → 처리량처럼 중간 결과를 순서대로 적어 나간다. 중간값이 있어야 어느 단계에서 계산이 틀렸는지 검증할 수 있다.
5단계: 병목을 찾는 문제라면 각 단계의 처리시간을 나란히 비교한다
직렬로 더하는 상황인지, 병렬·파이프라인으로 겹치는 상황인지부터 구분한다. 겹치는 상황이라면 전체 처리량은 가장 느린 단계 하나가 결정하며, 나머지 단계를 아무리 개선해도 그 병목이 바뀌기 전까지는 전체 성능이 그대로라는 점을 답안에 명시한다.
자주 틀리는 점
- 미스율의 기준을 헷갈린다. “캐시 미스율 4퍼센트”가 전체 명령어 기준인지, 메모리 접근 명령어 기준인지 구분하지 않으면 지연 사이클 계산에서 3배 가까운 오차가 난다.
- 직렬과 병렬(파이프라인) 상황을 구분하지 않는다. 여러 단계가 순서대로 기다리며 더해지는 상황과, 겹쳐서 진행되어 가장 느린 단계만 남는 상황은 계산 방식이 완전히 다르다.
- 병목이 고정되어 있다고 생각한다. 한 구성요소를 개선하면 병목이 다른 구성요소로 옮겨 갈 수 있으므로, “이 개선이 실제로 전체 성능을 얼마나 올리는가”는 개선 후 병목이 어디인지 다시 확인해야 정확히 답할 수 있다.
- 단위를 통일하지 않고 계산한다. ns와 ms, 사이클과 초를 섞어 계산하면 답이 1000배씩 어긋난다. 계산을 시작하기 전에 모든 값을 같은 단위로 바꿔 두는 습관이 필요하다.
핵심 정리
- 통합형 문항은 새 개념이 아니라, 06~12편에서 배운 CPI·실행시간·AMAT·디스크 접근시간 공식을 문제가 요구하는 순서로 정확히 이어 붙이는 능력을 확인한다.
- 실질 CPI는 이상적인 CPI에 “메모리 접근 비율 × 미스율 × 미스 페널티”로 구한 평균 지연 사이클을 더해 구한다.
- 디스크 접근시간은 탐색시간+회전지연+전송시간의 합이며, 회전지연은 한 바퀴 도는 시간의 절반으로 계산한다.
- 여러 단계가 겹쳐(파이프라인처럼) 진행되는 시스템의 처리량은 가장 느린 단계 하나가 결정하며, 그 단계가 병목이다. 병목은 시스템을 개선해 나가면서 다른 구성요소로 옮겨 갈 수 있다.
- 풀이 전략은 경로 적기 → 공식·단위 확인 → 비율의 기준 확인 → 단계별 계산 → 병목 비교의 순서를 따른다.
마무리 복습
참고 자료
- 국가평생교육진흥원 독학학위제: https://bdes.nile.or.kr
- Patterson & Hennessy, Computer Organization and Design(대학 강의용 교재 소개 페이지)
- 관련 심화 내용:
/독학사/2단계/컴퓨터구조/16_cache-memory-mapping-and-replacement