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

폰 칩은 왜 메모리를 나눠 쓰는가

~13 min · mouse, history, unified-memory, iphone, power, board-area

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"2010년 애플의 누구도 512 GB 언어 모델을 생각하지 않았어. 배터리와 껌 한 통만 한 기판을 생각했지."

폰의 제약

1번 트랙이 말했고 이 트랙은 역사로 들려줘. Mac Studio를 언어 모델한테 흥미롭게 만드는 통합 메모리는 아이폰을 위해, AI와 아무 상관 없는 세 가지 제약 아래 설계됐어. 기판 면적. 폰의 로직 보드엔 자기 메모리 칩과 그 사이 버스를 가진 외장 GPU를 넣을 자리가 없어. 들어가는 유일한 배치는 칩 하나 옆의 풀 하나야. 전력. 기판을 건너 옮기는 모든 바이트는 배터리가 아낄 수 없는 에너지를 먹어. 제일 싼 바이트는 패키지를 안 떠나는 바이트고, 제일 싼 복사는 안 일어나는 복사야. 비용. 메모리 시스템 하나가 둘보다 사고, 배선하고, 검사하기 싸. 그 제약 아래서 공유 풀은 영리한 선택이 아니라 유일한 선택이고, 누가 만들든 모든 폰 SoC가 같은 이유로 CPU와 GPU 사이에 메모리를 나눠 써.

애플이 나머지 폰 업계와 다르게 한 건 그 배치를 제약이 더는 묶지 않는 기계로, 바꾸지 않고 위로 가져간 거야. 먼저 iPad Pro, 그다음 2020년 11월 맥. M1 발표문이 이 퀘스트 내내 인용되는 문장 하나로 설명해. "고대역폭, 저지연 메모리를 커스텀 패키지 안의 단일 풀로 모은 통합 메모리 아키텍처." 그 발표문에도, 그 뒤 한 해에도 언어 모델 얘기는 없어. 2020년 11월엔 공개적으로 논의되던 제일 큰 모델이 연구 산물이었고, 그걸 노트북에서 돌린다는 생각은 누구의 로드맵에도 없었으니까.

발은 일부러였어

집주인의 표현에 이게 중요해. '쥐를 밟았다'는 어딘가로 일부러 가던 발을 함축해. 그랬어. 애플은 노트북이 아이폰의 와트당 성능, 팬 없는 고요함, 즉시 깨어남을 갖길 원했고, 그걸 내준 설계가 풀 하나짜리 패키지였어. 2021년의 후속인 M1 Pro와 Max는 버스를 넓히고 풀을 64 GB로 키웠고, 다음 레슨은 그 발표문 자체의 말에서 그 성장이 뭘 위한 거였는지 읽어. 발은 배터리로 도는 비디오 편집자와 3D 아티스트를 향해 가고 있었어. 쥐는 완전히 다른 데 있었고.

날짜, 순서가 곧 논증이니까

코드 블록은 타임라인이야. 항목마다 1차 출처 날짜, 간격마다 계산. 일부러 짧아. 이 트랙 전체가 순서에 대한 논증이야. 워크로드보다 배치가 먼저, 벤더보다 커뮤니티가 먼저, 우연 뒤에 후속. 타임라인이 그것의 유일하게 정직한 형식이야.

Code

timeline.py — 1차 출처 날짜로 본 쥐·python
#!/usr/bin/env python3
"""Every date is a primary source (Apple newsroom, a repository's first commit,
a PyPI upload, an Apple support page). Gaps are computed, not remembered."""
from datetime import date

EVENTS = [
    (date(2020, 11, 10), "M1: unified memory on a Mac",                        "Apple newsroom"),
    (date(2021, 10, 18), "M1 Pro / M1 Max: 400 GB/s, 64 GB, pitched at video",  "Apple newsroom"),
    (date(2022,  3,  8), "M1 Ultra: two dies, 128 GB, 800 GB/s",               "Apple newsroom"),
    (date(2022, 11, 30), "ChatGPT released",                                   "OpenAI"),
    (date(2023,  3, 10), "llama.cpp repository created",                       "GitHub"),
    (date(2023, 11, 28), "MLX repository created",                             "GitHub"),
    (date(2023, 12,  5), "MLX 0.0.2 on PyPI",                                  "PyPI"),
    (date(2025,  3,  5), "M3 Ultra announced with 512 GB",                     "Apple newsroom"),
    (date(2025, 10, 15), "M5: Neural Accelerators in every GPU core",          "Apple newsroom"),
    (date(2025, 12, 12), "macOS 26.2: RDMA over Thunderbolt 5",                "Apple support"),
    (date(2026,  8, 25), "M5 Ultra: quad-die, 1.2 TB/s, 512 GB",               "Apple newsroom"),
]

prev = None
for d, what, src in EVENTS:
    gap = f"+{(d - prev).days:4d} d" if prev else "        "
    print(f"{d}  {gap}  {what:52} [{src}]")
    prev = d

m1, chatgpt, llama, mlx = EVENTS[0][0], EVENTS[3][0], EVENTS[4][0], EVENTS[5][0]
print(f"\nunified memory on the Mac predates ChatGPT by {(chatgpt - m1).days} days")
print(f"the community's runtime predates Apple's by {(mlx - llama).days} days")

External links

Exercise

timeline.py를 돌리고 계산된 간격 둘을 카드에 추가해. 그다음 이 타임라인에 속하는 1차 출처 날짜 하나를 더 찾아. 릴리스, 첫 커밋, 스펙 페이지. 출처와 함께 끼워 넣고, 그게 '쥐보다 발이 먼저' 읽기를 강화하는지 복잡하게 만드는지 한 문장으로 말해.
Hint
후보: llama.cpp의 첫 Metal 백엔드 커밋, mlx-community의 첫 모델 업로드, MLX 요구 사항을 추가한 macOS 릴리스, M1이 든 iPad Pro. 애플의 것이든 커뮤니티의 것이든 의도에 날짜를 매기는 건 증거고, 루머에 날짜를 매기는 건 아니야.

Progress

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

댓글 0

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

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