본문 바로가기
C.W.K.
Lesson 02 of 06 · published

Base, Pro, Max, Ultra: 티어 사이에서 바뀌는 것

~15 min · map, tiers, memory-bandwidth, gpu-cores, ultrafusion

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"티어 이름은 자동차 트림 등급처럼 들리지. 실제론 도로의 차선 수에 더 가까워."

이름 넷, 변수 셋

한 세대 안에서 애플은 같은 코어 설계를 네 가지 패키지로 팔아. 티어 사이에서 바뀌는 건 코어 하나의 속도가 아니야. M3 Max의 성능 코어는 기본 M3에 든 코어랑 같은 코어야. 바뀌는 건 같이 커지는 세 가지 양이야. 메모리 버스가 얼마나 넓은지, 그 뒤에 GPU 코어가 몇 개 앉아 있는지, 패키지에 메모리를 얼마나 납땜할 수 있는지. CPU 코어 수도 늘긴 하는데, 이 퀘스트에서 다루는 어떤 것에도 넷 중 제일 덜 중요해.

M3 가족을 애플 스펙 페이지 그대로 옮기면 이래(칸 하나하나가 벤더 숫자고, 증거 칸이 그렇게 말해줘):

칩CPUGPU 코어최대 메모리대역폭증거
M34P + 4E1024 GB100 GB/s벤더 (기술 사양)
M3 Pro6P + 6E1836 GB150 GB/s벤더 (기술 사양)
M3 Max (16C/40G)12P + 4E40128 GB400 GB/s벤더 (기술 사양)
M3 Ultra (32C/80G)24P + 8E80출시 시 512 GB819 GB/s벤더 (기술 사양. 뉴스룸은 "800GB/s 이상")

대역폭 칸을 비율로 읽어봐. 1 : 1.5 : 4 : 8. GPU 칸도. 1 : 1.8 : 4 : 8. 두 칸이 같이 움직이는 건 같은 설계 결정이라서 그래. 네 배 큰 GPU는 굶지 않으려면 네 배의 메모리 트래픽이 필요하고, 같은 메모리 기술로 트래픽을 네 배 뽑는 방법은 채널을 네 배로 늘리는 거야. Ultra가 Max의 두 배인 건 Ultra가 말 그대로 Max 다이 두 개라서야. 애플의 UltraFusion 인터포저로 이어 붙였고, 다이마다 자기 메모리 채널을 달고 있어.

대역폭 숫자가 어디서 나오는지

대역폭은 칩의 마법 같은 속성이 아니야. 전송 속도 × 전송당 바이트 × 채널 수야. M3 가족은 6400 MT/s의 LPDDR5를 써. 16비트 채널 하나가 전송마다 2바이트를 옮기니까, 채널 한 쌍(32비트)은 6400 × 4 = 25.6 GB/s를 내고, 애플의 공개 수치는 64비트 조각 하나가 51.2 GB/s라고 놓으면 딱 맞아. 기본 M3는 조각 두 개(102.4, '100'으로 판매), Max는 여덟 개(409.6, '400'으로 판매), Ultra는 열여섯 개(819.2, '819'로 판매). 코드 블록은 원장에 있는 칩 전부에 대해 이 산수를 하고 벤더 수치 옆에 적합값을 찍어. 애플은 채널 수를 공개하지 않아. 채널 수는 적합에서 나온 우리 추론이고, 이 레슨은 그렇게 라벨을 붙여.

티어 체계 전체가 이 공식 하나야. 96 GB짜리 M3 Ultra랑 512 GB짜리 M3 Ultra의 대역폭이 똑같은 이유이기도 해. 용량은 채널마다 붙은 칩이 몇 비트를 담느냐고, 대역폭은 채널이 몇 개냐야. 메모리 트랙이 이 구분으로 다시 돌아오는데, 어느 맥이 모델을 아예 돌릴 수 있는지(용량)랑 올린 다음 얼마나 빨리 돌리는지(대역폭)를 이게 정하거든.

안 바뀌는 것

명령어 집합, 코어 마이크로아키텍처, 뉴럴 엔진(기본, Pro, Max는 16코어. Ultra는 다이가 둘이라 32코어), 미디어 엔진(Max랑 Ultra는 인코더가 더 붙지만 설계는 같아), 페이지 크기, 운영체제의 메모리 규칙. M3 MacBook Air에서 도는 프로그램은 M3 Ultra에서 고치지 않고 그대로 돌아. 차선이 더 많고 풀이 더 클 뿐이야. 한 집이 네 세대에 걸친 맥 아홉 대에서 코드 경로 하나를 굴릴 수 있는 게 이 속성 덕이고, 실험 트랙이 써먹는 것도 이 속성이야. 한 마이크로아키텍처 아래의 M3 티어 셋은 대역폭과 용량의 효과를 나머지 전부에서 떼어내 줘.

Code

bandwidth_fit.py — 벤더 대역폭을 전송 속도 × 채널로 설명하기·python
#!/usr/bin/env python3
"""Bandwidth = MT/s × 8 bytes × 64-bit channels. Apple publishes the GB/s and
the memory generation; the channel counts below are OUR INFERENCE from the fit."""

CHIPS = [
    # chip,        MT/s,  64-bit channels, vendor GB/s
    ("M3",         6400,  2,   100),
    ("M3 Pro",     6400,  3,   150),
    ("M3 Max 40G", 6400,  8,   400),
    ("M3 Ultra",   6400, 16,   819),
    ("M2 Ultra",   6400, 16,   800),
    ("M4 Pro",     8533,  4,   273),
    ("M4 Max 40G", 8533,  8,   546),
    ("M5 Max 40G", 9600,  8,   614),
    ("M5 Ultra",   9600, 16,  1229),   # Apple: "1.2TB/s"
]

print(f"{'chip':12} {'MT/s':>6} {'ch':>3} {'fit GB/s':>9} {'vendor':>7} {'delta':>6}")
for chip, mts, ch, vendor in CHIPS:
    fit = mts * 8 * ch / 1000          # 8 bytes per transfer on a 64-bit channel
    print(f"{chip:12} {mts:6d} {ch:3d} {fit:9.1f} {vendor:7d} {fit - vendor:+6.1f}")

# The point: bandwidth is a lane count. Same memory chips, more channels.

External links

Exercise

첫 레슨의 카드에 네 맥의 티어, GPU 코어 수, 벤더 대역폭을 추가해(네 모델의 기술 사양 페이지에 셋 다 있어). 그다음 bandwidth_fit.py를 돌리고 네 칩을 새 줄로 넣어봐. 어떤 전송 속도랑 채널 수가 벤더 숫자를 재현해? 깔끔하게 맞는 조합이 없으면, 결론 내리려면 뭘 더 알아야 하는지 적어.
Hint
M1이랑 M2 기본 칩은 LPDDR4X-4266이랑 LPDDR5-6400을 써. M4는 LPDDR5X-7500(기본)이랑 8533(Pro/Max)으로 옮겼고, M5는 LPDDR5X-9600이야. 적합값이 딱 두 배 어긋나면, 스크립트는 64비트 채널로 세는데 너는 32비트 채널로 센 거야. 두 관례 다 있고, 애플은 어느 쪽도 공개 안 해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.