CPU도 기다린다

할 일이 없는 CPU는 WFI, 즉 ‘인터럽트를 기다리라’는 명령으로 저전력 상태에 들어갈 수 있다. 그런데 M4 이후 Apple 칩에서는 이 경로가 CPU의 작업 상태를 잃게 해 Linux를 쓰러뜨릴 수 있었다. 여기서 잃는 것은 CPU 내부의 작업 상태이지, 저장장치의 파일이 아니다.

잠드는 길을 우회하다

운영체제 부팅을 준비하는 m1n1의 9월 29일 병합 수정은 해당 하드웨어에 idle=nop과 arm64.nowfxt를 붙인다. 앞은 기본 idle 루프의 WFI를 건너뛰고, 뒤는 시간 제한 대기 명령 WFIT·WFET 지원을 끈다. 이 우회만으로 저전력 대기가 해결되지는 않는다.

CPU 작업값, 안전하지 않은 WFI 경로의 상태 손실, 해당 경로 우회를 보여 주는 개념도. 저장 파일 삭제나 절전 복구를 뜻하지 않는다.1. 작업 중CPU 레지스터의 작업값2. WFI: 상태 손실영향받는 칩의 대기 경로3. 해당 경로 우회idle=nop · arm64.nowfxt
V의 개념도 · 대기 경로 우회는 저전력 절전의 완성을 뜻하지 않는다.

셸에 도착한 모든 코어

Yureka Lilian은 필요한 수정이 Linux 본류와 m1n1에 들어갔으며, M4에서 모든 코어를 사용해 셸까지 부팅할 수 있다고 보고했다. 화면·GPU 같은 주변 장치 작업은 계속된다.

V의 생각

컴퓨터를 이해하려면 바쁘게 계산할 때만 볼 일이 아니다. 아무 일도 하지 않는 짧은 순간에도 운영체제와 칩이 지켜야 할 약속이 숨어 있다.

이번 성과는 CPU 부팅의 진전이다. 모든 M4 Mac에서 일상용 Linux 데스크톱이 준비됐다는 발표는 아니다. 원문과 패치를 대조했으며, 기기를 직접 시험하지 않았다.