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

어른이 된 폰 칩

~15 min · map, soc, a-series, m1, unified-memory

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"M1은 효율을 배운 맥 칩이 아니야. 맥이 되는 법을 배운 아이폰 칩이지."

네 손에 있는 게 뭔지

2020년 말 이후에 팔린 맥을 열어 보면, PC 세계가 쓰는 뜻의 CPU는 없어. 대신 시스템 온 칩이 있어. CPU 코어, GPU 코어, 뉴럴 엔진, 비디오 인코더와 디코더, Secure Enclave, 메모리 컨트롤러, 그리고 이걸 다 묶는 패브릭이 실리콘 한 조각 위에 올라가 있어(Ultra랑 M5 Pro/Max는 한 패키지 안에서 두 조각 또는 네 조각을 이어 붙인 건데, 그 얘기는 네 번째 레슨에서). 그 실리콘 바로 옆, 같은 패키지 기판 위에 메모리 칩이 앉아 있고. 애플이 M1 발표 날 쓴 문장이 정확해. "고대역폭, 저지연 메모리를 커스텀 패키지 안의 단일 풀로 모은 통합 메모리 아키텍처".

이 배치는 데스크톱에서 나온 발상이 아니야. 아이폰 거야. 폰엔 소켓에 꽂는 CPU, 자기 메모리를 따로 가진 그래픽 카드, 그 둘 사이의 버스를 넣을 자리가 없어. 있는 건 배터리, 몇 와트짜리 열 예산, 껌 한 통만 한 기판이지. M 시리즈를 M 시리즈답게 만드는 설계 결정 전부, 그러니까 패키지 위의 메모리, 모든 프로세서가 나눠 쓰는 풀 하나, 첫 번째 지표로서의 와트당 성능, 범용 코어가 못하는 일을 맡는 고정 기능 블록, 이게 다 10년 넘게 폰을 위해 먼저 내려진 결정이고, 그걸 키운 거야.

계보, 짧게

  • A4 (2010) — 애플이 처음 설계한 SoC. 첫 아이패드랑 아이폰 4에 들어갔어. 코어는 Arm 라이선스, 통합은 애플.
  • A6 (2012)와 A7 (2013) — 애플이 직접 설계한 첫 CPU 코어, 그리고 폰에 들어간 첫 64비트 Arm 코어. 모바일 업계 나머지보다 앞섰지. 여기서부터 코어는 Arm 명령어 집합 위에 올린 애플의 설계야.
  • A12X / A12Z (2018–2020) — 맥 전환을 믿을 만하게 만든 아이패드 프로 칩. 개발자 전환 키트는 A12Z를 넣은 Mac mini였어.
  • M1 (2020년 11월) — 폰 계보가 더 넓은 메모리 버스, 더 많은 코어, 그리고 똑같은 한 풀 메모리 배치를 들고 맥에 도착했어.
  • M1 Pro / Max (2021), M1 Ultra (2022) — 티어가 등장해. 더 넓은 버스, 더 많은 GPU, 그리고 Ultra는 Max 다이 두 개를 한 패키지에 이어 붙였어.

상속의 방향이 이 뒤의 모든 걸 좌우해. 맥은 서버 칩을 줄인 걸 받은 게 아니라 폰 칩을 키운 걸 받았어. 이 퀘스트 뒤에서 제약을 만나면, 예를 들어 살 때 정해지는 용량, 없는 외장 GPU, 운영체제가 정하는 GPU 메모리 한도 같은 걸 만나면, 먼저 물어봐. 이거 폰 제약이 따라온 거 아니야?

네 칩 읽기

macOS는 SoC를 sysctl로 보여줘. 코드 블록의 스크립트는 칩 이름, 성능 레벨별 코어 배치, 물리 메모리, 페이지 크기를 찍어(애플 실리콘은 16 KB인데, Rosetta에서 튀어나오는 폰 습관 중 하나야. CPU 트랙 세 번째 레슨에서 봐). 네가 가진 아무 맥에서나 돌려봐. 이 퀘스트 내내 들고 다닐 카드의 첫 줄이야.

출력에서 두 가지를 봐. hw.perflevelN.name이 CPU 클러스터마다 이름을 붙이는데, 그 이름은 세대 따라 움직여. 집의 M3들은 전부 Performance와 Efficiency고, M5 Max는 Super와 Performance야. 카드가 자리를 가정하지 않고 이름을 읽는 이유지. macOS는 이 클러스터들 사이에서 서비스 품질 기준으로 스케줄링해. 백그라운드 작업이랑 포그라운드 앱이 같은 다이 위에서 안 싸우고 공존하는 이유지. 그리고 hw.memsize는 풀 전체야. '그래픽 메모리'라는 별도 숫자는 없어. 별도 메모리가 없으니까.

Code

chip_card.py — macOS가 보고하는 대로 SoC 읽기·python
#!/usr/bin/env python3
"""First row of your Mac card: what silicon is this, and how is it laid out?"""
import subprocess


def sysctl(key: str) -> str:
    out = subprocess.run(["sysctl", "-n", key], capture_output=True, text=True)
    return out.stdout.strip()


def clusters() -> str:
    """macOS names every CPU cluster in hw.perflevelN.name, and the names move with the
    generation: M3 reports Performance + Efficiency, the M5 Max reports Super + Performance.
    Read the name; never assume which slot is which."""
    parts = []
    for n in range(8):
        name = sysctl(f"hw.perflevel{n}.name")
        if not name:
            break
        parts.append(f"{sysctl(f'hw.perflevel{n}.physicalcpu')} {name}")
    return " + ".join(parts) or "n/a"


card = {
    "chip": sysctl("machdep.cpu.brand_string") or "n/a",
    "cpu cores (total)": sysctl("hw.physicalcpu"),
    "cpu clusters (hw.perflevelN.name)": clusters(),
    "memory (GB, as Apple counts it)": int(sysctl("hw.memsize")) // 2**30,
    "page size (bytes)": sysctl("hw.pagesize"),
    "macOS": subprocess.run(["sw_vers", "-productVersion"], capture_output=True, text=True).stdout.strip(),
}
for k, v in card.items():
    print(f"{k:34} {v}")
system_profiler로 같은 사실 보기 (느리지만 필드가 더 많아)·bash
system_profiler SPHardwareDataType | grep -E "Chip|Total Number of Cores|Memory"
# Chip: Apple M3 Ultra
# Total Number of Cores: 32 (24 performance and 8 efficiency)
# Memory: 512 GB

# GPU core count lives under the display data type
system_profiler SPDisplaysDataType | grep -E "Chipset Model|Total Number of Cores"

External links

Exercise

네 맥에서 chip_card.py를 돌리고 칩, 두 클러스터 크기, 메모리, 페이지 크기를 적어. 그다음 한 문장씩 답해봐. 이 숫자들 중 PC 주인이 산 뒤에 바꿀 수 있는 건 뭐고, 네 맥에서 기계 수명 내내 고정인 건 뭐야?
Hint
이 퀘스트 나머지에서 중요한 건 메모리야. PC에선 소켓이고, 여기선 패키지야. GPU 코어 수는 양쪽 다 고정이지만(노트북에 새 GPU를 납땜하는 사람은 없으니까) 데스크톱 PC 주인은 카드 통째로 갈아 끼워.

Progress

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

댓글 0

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

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