#review 가정부로 이해한다. CPU 구조
크~ CPU를 가정부로 이해한다니! 생각지도 못한 비유. 멋지다. 적절한 비유와 그림을 많이 써서 이해가 잘됐다.
파이프라인부터 하이퍼스레딩까지 CPU를 이해하는데 기초가 되는 내용부터 차근차근 잘 설명해준다. ’Fetch -> Decode -> Execute -> Write Back’으로 진행되는 기초적인 명령 처리 파이프라인. 한 프로세서 안에서 명령어를 병렬로 실행하는 슈퍼 스칼라(superscalar). 비순차적 명령어 처리(Out-of-order execution, OoOE). 프로그램 카운터(program counter, PC)를 점프시키는 분기가 있을 때, 순서대로 파이프라인에 들어온 명령어들을 버려야 하는 경우가 발생한다. 이런 낭비를 방지하기 위한 분기 예측(branch prediction). 스레드 두 개를 코어 하나에서 실행시키고 버스 2개를 제공해 듀얼 프로세스처럼 사용하게 하는 하이퍼스레딩(Hyper-Threading, HTT). 이거 한동안 안 써서 죽은 기술인 줄 알았는데, 네할렘부터 다시 들어갔음.
메인 메모리 접근 시간이 발목을 잡아서 나온 CPU 캐시(CPU cache). 네할렘(Nehalem)에서는 메모리 컨트롤러를 거쳐서 메인 메모리에 접근하는 게 아니라 바로 메모리에 접근해서 이 시간을 확~ 줄여버렸다. 좀 더 빠른 CPU가 나와도 캐시 용량이 그다지 변하지 않았는데, 그 이유가 제조 공정에 있었다니 이건 몰랐던 사실.
신나게 클록 속도(clock rate)를 높이다가 이제는 코어를 늘리는데, 그 기술 배경도 잘 설명했다. 0.18 µm(180 nm) 프로세스 이후 새는 전류(leakage) 때문에 설계자 계산보다 훨씬 더 많은 전력을 소비하게 되는데, 90nm 프로세스에서는 새는 전류 비율이 30~50%나 돼서 결국 3.8GHz로 마감하게 된다. 사용하는 전력과 열은 비례하는데, 발열이 감당 안 됐던 것이다. 이제 CPU를 업그레이드하면 덩달아 실행 속도가 빨라지는 프로그래머에게 공짜로 제공되는 점심은 없다.
PS : 오타가 아니라 ’가정부로 이해한다’가 원래 제목이다.