스킬캠퍼스

오늘 끝나면

지연·대역폭·지역성

  • 지연·대역폭·지역성의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 지연이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

빠른 건 작다 — 시간·공간 지역성이 성능을 만든다 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 24

지연·대역폭
·지역성

지연은 한 번 가져오는 데 걸리는 시간이다.
대역폭은 한 번에 옮기는 양이다.
방금 쓴 걸 또 쓰는 버릇이 캐시를 만든다.

P.01반도체 설계 · 24

지연 vs 대역폭, 다른 두 축

메모리 속도는 한 숫자가 아니다. 지연과 대역폭, 두 축으로 쪼개야 비로소 보인다.

지연(latency)은 요청하고 첫 데이터가 올 때까지 걸리는 시간이다.
대역폭(bandwidth)은 일단 흐르기 시작하면 초당 옮기는 양이다.
이 둘은 서로 다른 축이라 따로 논다.

수도로 비유하면 지연은 수도꼭지를 열고 첫 물이 나올 때까지의 텀이고, 대역폭은 관이 굵어 한꺼번에 쏟아지는 물의 양이다.
관이 굵어 대역폭이 커도 멀리 있으면 첫 물은 늦게 오니 지연은 길어진다.
그래서 빠르다를 말할 땐 어느 축인지부터 따져야 한다.

한 번에 걸리는 시간 · 한 번에 옮기는 양
다른 두 축, 따로 측정한다
지연 (latency)첫 데이터까지의 시간
요청첫 도착← 대기 →

길수록 첫 응답이 늦다

대역폭 (bandwidth)초당 옮기는 양

굵을수록 한꺼번에 많이 옮긴다

관이 굵어 대역폭이 커도 멀면 첫 물은 늦으니, 두 축을 따로 본다
P.02반도체 설계 · 24

빠른 건 작다, 메모리 계층

빠른 메모리로만 채우지 못하는 건 빠른 게 비싸고 작기 때문이다. 그래서 계층으로 쌓는다.

레지스터는 CPU 바로 옆에 있고 약 1사이클이다. 대신 수십 칸뿐이고, 우리 머신은 8개다.
캐시는 코어 안쪽에 있고 수 사이클이다. KB에서 MB로 작다.
RAM은 칩 바깥에 있고 수십에서 수백 사이클이다. 대신 GB로 크다.

위로 갈수록 빠르고 작고, 아래로 갈수록 느리고 크다.
물리적으로 가까울수록 빠르고, 가까운 자리는 좁아 많이 못 둔다. 이게 계층이 생기는 이유다.
자주 쓸 데이터를 위로 끌어올리는 게 설계의 핵심이 된다.

레지스터 < 캐시 < RAM · 빠를수록 작음
빠를수록 작다, 그래서 계층
레지스터
8칸
≈1 사이클
캐시
KB~MB
수 사이클
RAM
GB
수십~수백
↑ 빠르다 · 작다↓ 느리다 · 크다
가까울수록 빠르고, 가까운 자리는 좁아 많이 못 둔다
P.03반도체 설계 · 24

시간 지역성 · 공간 지역성

프로그램의 메모리 접근은 골고루 흩어지지 않는다. 한쪽에 뭉친다. 이 뭉침을 지역성이라 한다.

시간 지역성은 방금 쓴 데이터를 곧 또 쓰는 성질이다.
반복문의 카운터, 자주 부르는 함수가 그 예다. 같은 칸이 짧은 시간에 여러 번 불린다.

공간 지역성은 방금 쓴 칸의 바로 옆 칸도 곧 쓰는 성질이다.
배열을 처음부터 끝까지 훑을 때가 그 예다. 0번 다음 1번, 2번, 줄줄이 옆으로 간다.
접근이 시간과 공간으로 뭉치니, 한 번 가져온 걸 잠깐 곁에 두면 적중률이 확 오른다.

방금 쓴 걸 또 · 옆 것도 곧
접근은 뭉친다, 두 가지 지역성
시간 지역성같은 칸을 또
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
공간 지역성옆 칸을 잇따라
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
파란 칸은 곧 다시 닿을 자리다. 흩어지지 않고 뭉친다
P.04반도체 설계 · 24

직접 돌려 시간을 비교한다

같은 프로그램을 세 저장소에서 돌려, 데이터 16칸을 24번 읽는 동안 누적 사이클을 비교한다.

지역성을 켜면 캐시 머신은 히트가 많아 RAM만 쓰는 머신을 크게 앞지른다.
무작위로 바꾸면 미스가 많아 캐시가 거의 무용해진다. 같은 하드웨어인데 접근 패턴만으로 갈린다.

메모리 비교 · 지역성 토글 + STEP 시뮬
메모리 계층 비교 · 같은 프로그램 세 곳에서
접근 패턴, 지역성을 켜고 끄기
예측 먼저, 지역성을 켜면 캐시 머신은?
접근 수열 · 데이터 주소0 / 24
0
1
0
2
1
0
2
3
2
4
3
2
4
5
4
6
5
4
6
7
6
8
7
6
히트 미스캐시 4칸 · 데이터 16
누적 사이클, 같은 프로그램, 다른 저장소
레지스터만0 사이클
1사이클 · 기준선
캐시 + RAM0 사이클
히트 3 · 미스 30
RAM만0 사이클
매번 30
근거 패널, 진행 수치
접근
0
/ 24회
히트율
0%
0H · 0M
캐시 절약
0
RAM 대비

STEP을 눌러 접근을 하나씩 진행한다. 히트와 미스가 막대에 쌓인다.

전체 평균 히트율 63% (이 패턴 끝까지). 캐시가 효과를 보는 전제는 지역성이다. 같거나 가까운 데이터를 또 쓸 때만 히트가 난다. 이 가정이 25강 캐시 구조와 최종 MyChip에 들어간다.

P.05반도체 설계 · 24

지역성이 캐시를 만든다

캐시는 지역성이라는 가정 위에 서 있는 도박이다.

접근이 뭉친다는 사실을 믿고, 방금 가져온 데이터를 잠깐 가까이 둔다.
지역성이 있으면 다음 접근이 그 근처라 캐시에서 바로 꺼내니 히트다.
무작위면 매번 캐시에 없어 RAM까지 가니 미스다.

그래서 캐시의 효과는 하드웨어가 아니라 프로그램의 접근 패턴이 결정한다.
지역성이 좋은 코드는 같은 칩에서 몇 배 빠르게 돈다. 캐시 친화적으로 짜는 게 곧 성능이다.

Q. 캐시가 효과를 보려면 프로그램에 무엇이 있어야 하나?정답은 지역성이다. 같은 데이터를 또 쓰는 시간 지역성, 가까운 데이터를 잇따라 쓰는 공간 지역성을 말한다.
캐시는 방금 가져온 데이터를 잠깐 곁에 두는 도박이라, 접근이 뭉쳐 있어야 다음 접근이 히트난다.
접근이 무작위로 흩어지면 매번 미스라 캐시가 있으나 마나다.
뭉치는 접근 → 가까이 두면 적중
캐시 = 지역성에 거는 도박

다음에 또 쓸 거라 믿고, 방금 가져온 데이터를 잠깐 가까이 둔다.

지역성 있음방금 것 근처를 또

캐시에 살아 있음 → 히트

무작위매번 멀리 튄다

캐시에 없음 → 미스

효과를 정하는 건 하드웨어가 아니라 접근 패턴

3줄 요약

  1. 1빠른 건 작다 — 시간·공간 지역성이 성능을 만든다
  2. 2지연·대역폭·지역성은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

지연

빠른 건 작다 — 시간·공간 지역성이 성능을 만든다

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩