명령어 하나가 데이터패스를 지나가는 길 - 레지스터 31개와 XZR, 그리고 MUX 네 개
레지스터 파일에 왜 31개만 있고 31번은 XZR 인지, 명령의 어느 비트가 어디로 가는지, MUX 네 개가 무엇을 고르는지를 그림으로 본다. 같은 데이터패스 위에 ADD, CMP(SUBS XZR), LDUR, CBZ 네 명령이 각각 어느 길을 타는지 값과 제어 신호를 붙여 따라간다.
30개의 글
레지스터 파일에 왜 31개만 있고 31번은 XZR 인지, 명령의 어느 비트가 어디로 가는지, MUX 네 개가 무엇을 고르는지를 그림으로 본다. 같은 데이터패스 위에 ADD, CMP(SUBS XZR), LDUR, CBZ 네 명령이 각각 어느 길을 타는지 값과 제어 신호를 붙여 따라간다.
전압으로 켜고 끄는 스위치가 어떻게 NOT, NAND, NOR 이 되고, 그 게이트가 어떻게 덧셈기가 되는지 회로도로 따라간다. 왜 CMOS 에서는 NAND 가 AND 보다 싼지, 왜 pMOS 와 nMOS 를 짝지어야 대기 전류가 0 이 되는지, 트랜지스터 몇 개로 1비트를 더할 수 있는지 그림과 개수로 확인한다.
CPU 를 밖에서부터 안으로 뜯어서 구조도로 본다. 뚜껑 밑 다이 배치, 코어 하나의 네 층(프론트엔드·비순차 엔진·실행 유닛·캐시), 명령 하나가 지나가는 데이터패스, 파이프라인 시간표, 비순차 실행이 시간을 버는 방식, 메모리 계층의 거리감까지 그림으로 정리한다.
CPU 의 계산 부품 ALU 를 안팎으로 뜯는다. 회로도 기호와 인터페이스, 1비트 셀의 내부(AND·OR·XOR·전가산기·선택기), 32비트로 늘리는 법, 뺄셈이 덧셈인 이유, 플래그 4개가 어디서 나오는지, 캐리 선행으로 속도를 버는 법, 그리고 실제 실리콘에서 ALU 가 차지하는 띠 모양까지 그림으로 정리한다.
RSS 피드부터 자동 알림 시스템까지, 웹 콘텐츠를 효율적으로 모니터링하는 다양한 방법을 알아본다. 매일 사이트를 확인하는 수고를 덜어주는 실용적인 접근법들을 소개한다.
그래프의 기본 개념과 주요 알고리즘을 정리했다. DFS, BFS, 신장 트리, 최소 비용 신장 트리(Kruskal, Prim), 최단 경로(Dijkstra)까지 다룬다.
운영체제의 메모리 관리 기법을 정리했다. 논리 주소와 물리 주소, 연속 메모리 할당, 단편화 문제, 페이징, 세그먼테이션까지 다룬다.
캐시 메모리의 개념과 동작 원리를 정리했다. 직접 사상, 집합 연관, 완전 연관 방식과 캐시 쓰기 정책까지 다룬다.
B-트리의 개념과 동작 원리를 정리했다. 이진 탐색 트리의 한계, m-원 탐색트리의 개념, B-트리의 삽입/삭제 연산까지 다룬다.
CPU 파이프라이닝의 개념과 해저드(hazard) 문제를 정리했다. 구조적 해저드, 데이터 해저드, 제어 해저드의 원인과 해결 방법을 다룬다.
교착상태의 개념, 발생 조건, 예방/회피/탐지/회복 방법을 정리했다. 운영체제뿐만 아니라 멀티스레드 프로그래밍에서도 필수적인 개념이다.
운영체제의 역할, 컴퓨터 시스템 구조, 다중 프로그래밍과 시분할의 개념을 정리했다.
우선순위 큐의 개념과 히프(Heap)를 이용한 구현을 정리했다. 최대/최소 우선순위 큐, 좌향 트리, 이항 히프까지 다룬다.
주요 정렬 알고리즘의 원리와 시간 복잡도를 정리했다. 삽입 정렬, 병합 정렬, 퀵 정렬, 히프 정렬의 동작 원리와 언제 어떤 알고리즘을 써야 하는지 비교한다.