라즈베리 파이로 배우는 컴퓨터 아키텍처

라즈베리 파이 제작자가 알려주는 컴퓨터 동작 원리와 시스템 디자인

라즈베리 파이로 스마트하게 배우는 컴퓨터의 기본 원리!

  • 라즈베리 파이의 창시자 중 한 명인 에반 업튼이 공동 저술한, 라즈베리 파이 사용자를 위한 동반자
  • 컴퓨터 시스템의 설계 고려사항을 배우고, 저수준 프로그래밍을 실험할 수 있는 저렴한 방법
  • 메모리 저장소, 이더넷, 카메라, 프로세서 등의 기능을 쉽게 이해
  • 라스베리 파이의 기본 구조 탐색을 통해 컴퓨터 설계 및 운영 전반에 대한 지식 습득

라즈베리 파이는 생활 필수품이 된 컴퓨터의 원리를 이해해야 하는 새로운 세대의 컴퓨터 과학자, 개발자, 아키텍트를 양성하기 위해 만들어졌다. 《라즈베리 파이로 배우는 컴퓨터 아키텍처》는 컴퓨터 시스템 설계의 세계로 진입하기 위한 시작이다.

이제 《라즈베리 파이로 배우는 컴퓨터 아키텍처》만 있으면 학생, 해커, 일반 사용자 모두 컴퓨터의 작동 방식을 이해할 수 있다. 이 책은 모든 하드웨어 구성요소가 무슨 역할을 하고, 어떻게 서로 연관되는지, 그리고 다른 컴퓨터 시스템의 구성요소와 어떻게 작용하는지 설명한다. 또한 프로그래밍의 작동 방식과 운영체제와 라즈베리 파이의 물리적 구성요소의 연관성도 함께 다룬다.

라즈베리 파이는 1980년대를 풍미했던 저렴하고 프로그래밍 가능한 컴퓨터와 이러한 컴퓨터가 영국의 기술 업계에 끼친 영향력에 힘입어 만들어진 이후로 새로운 세대의 프로그래머에게 영감을 불어넣고 있다. 라즈베리 파이는 컴퓨터에 대한 비용 측면과 기술적 측면의 장벽을 낮추어 컴퓨터의 원리를 배우기에 이상적인 도구다.

《라즈베리 파이로 배우는 컴퓨터 아키텍처》는 컴퓨터의 원리를 익히기 위한 가이드이며, 라즈베리 파이 자체를 뛰어넘는 지식을 담은 전문서이기도 하다. 저자인 에반 업튼(Eben Upton)과 제프 던테만(Jeff Dunteman)은 최고의 스승이다. 업튼은 라즈베리 파이의 공동 창시자로서 깊은 통찰력을 담아냈고, 던테만은 복잡한 기술 지식을 쉽게 이해할 수 있는 설명으로 기술했다. 이들은 프로그래밍의 세계에 혁명을 일으키고 있는 신용카드 크기의 컴퓨터 기술을 바탕으로, 모든 컴퓨터 기술에 대한 전문적인 가이드를 제공한다.

이 책은 각 구성요소를 단계별로 안내하며 각각의 역할, 필요성, 다른 구성요소와의 관계 및 설계 관점에서의 선택사항을 소개한다. 업튼과 던테만은 메모리, 스토리지, 프로세서에서 이더넷, 카메라, 오디오에 이르기까지 라즈베리 파이의 내부 구조에 대한 확실한 이해를 심어 주고 기본적인 컴퓨터 기술과의 관련성을 설명한다.

《라즈베리 파이로 배우는 컴퓨터 아키텍처》를 통해 아래와 같은 내용을 익힐 수 있다.

  • 라즈베리 파이의 각 구성요소에 담긴 목적
  • 다양한 구성요소가 서로 상호작용하는 방법
  • 시스템 설계에 담긴 사고의 과정
  • 프로그래밍의 원리
  • 하드웨어와 운영체제 간의 상호작용 분석
  • ARM 칩 이면의 메커니즘 탐구
  • ARM과 인텔의 다양한 칩 비교 및 대조

에반 업튼(Eben Upton)

에반 업튼은 라즈베리 파이 재단의 창립자이자 라즈베리 파이(트레이딩) 유한회사의 CEO이며, 가레스 할퍼크리(Gareth Halfacree)와 함께 《Raspberry Pi User Guide》를 저술한 공동 저자다. 케임브리지 대학교에서 물리학 및 공학사 학위, 컴퓨터 과학 박사 학위 및 EMBA 학위를 취득했다.

제프 던테만(Jeff Duntemann)

제프 던테만은 1974년부터 공상 과학 및 논픽션을 출간해 왔다. 제록스 사의 프로그래머이자 Ziff-Davis Publishing 및 Borland International의 기술 편집자로 재직했으며, 프로그래머를 위한 잡지 2종을 출간하고 편집해 왔고 베스트셀러인 《Assembly Language Step By Step》을 비롯해 20권의 기술서를 집필했다.

랄프 로버츠(Ralph Roberts)

랄프 로버츠는 아폴로 달 착륙 프로그램이 진행될 당시 NASA에 근무했으며 무공 훈장에 빛나는 참전 용사로서 1979년 Creative Computing 잡지에 처음 글을 실은 이래로 컴퓨터와 소프트웨어에 대한 글을 계속 써왔다. 로버츠는 전국의 출판사와 함께 100권의 이상의 책을 썼고, 짧은 글과 기사를 합치면 수천 개의 글을 써 냈다.

팀 맴토라(Tim Mamtora)

팀 맴토라는 브로드컴의 IC 설계 부서에서 마스터 엔지니어로 일하고 있으며 현재 내부 GPU 하드웨어 팀의 기술 리더다. 거의 7년 동안 모바일 컴퓨터 그래픽 분야에서 근무했으며, 이전에는 아날로그 TV 및 맞춤형 DSP 하드웨어용 내부 IP를 개발하는 역할을 수행했다. 팀은 케임브리지 대학교에서 공학 석사 학위를 받았으며, 석사 과정 3년차에는 MIT에서 디지털 하드웨어 설계에 입문했다.

벤 에버라드(Ben Everard)

벤 에버라드는 작가, 팟캐스터이자 리눅스, 로봇 애호가이며, 《Learning Python with Raspberry Pi》(Wiley, 2014)의 저자다.

임지순 ([email protected])

낮에는 인두를 휘두르고 코드를 두드리며, 밤에는 건반을 난도질하거나 베이스를 뜯는 공학/음악의 주변인. 사회적인 덕후로서 생존하기 위해 오늘도 코드와, 그리고 글과 씨름하고 있다.

  • ▣ 01장: 새로운 컴퓨터의 등장
    • 새콤한 라즈베리의 변신
    • 단일 칩 시스템
    • 신용카드 크기의 컴퓨터가 가진 능력
    • 라즈베리 파이의 역할
    • 라즈베리 파이 보드 소개
      • GPIO
      • 상태 LED
      • USB 포트
      • 이더넷 연결
      • 오디오 출력
      • 컴포지트 비디오
      • CSI 카메라 모듈 커넥터
      • HDMI
      • 마이크로 USB 전원
      • SD 카드
      • DSI 디스플레이 연결
      • 장착용 구멍
      • 메인 칩
    • 라즈베리 파이의 미래
    •  
  • ▣ 02장: 다시 보는 컴퓨터 개론
    • 컴퓨터와 요리사의 비유
      • 재료가 곧 데이터
      • 기본 동작
    • 계획을 따르는 상자
      • 하는 것과 아는 것
      • 프로그램이 곧 데이터
      • 메모리
      • 레지스터
      • 시스템 버스
      • 명령 집합
    • 전압, 숫자, 의미
      • 이진수: 1과 0으로 세기
      • 숫자가 부족해
      • 세기와 매기기, 그리고 0
      • 이진법을 간소화하기 위한 16진법
      • 이진수와 16진법 연산 방법
    • 상자의 주인, 운영체제
      • 운영체제의 역할
      • 커널
      • 다중 코어
    •  
  • ▣ 03장: 전자 메모리
    • 컴퓨터 이전에 메모리가 있었다
    • 회전식 자기 메모리
    • 자기 코어 메모리
      • 코어 메모리의 작동 방식
      • 메모리 액세스 시간
    • 정적 RAM(SRAM)
    • 주소 라인과 데이터 라인
    • 메모리 칩에서 메모리 시스템으로
    • 동적 RAM(DRAM)
      • DRAM의 작동 원리
      • 동기식 및 비동기식 DRAM
      • SDRAM의 행, 열, 뱅크, 랭크, DIMM
      • DDR, DDR2, DDR3, DDR4
      • 오류 정정 부호(ECC) 메모리
    • 라즈베리 파이 메모리 시스템
      • 저전력 기능
      • BGA 패키징
    • 캐시
      • 참조 국부성
      • 캐시 계층 구조
      • 캐시 라인과 캐시 매핑
      • 직접 매핑
      • 연관 매핑
      • 집합 연관 캐시
      • 캐시에서 메모리로 쓰기
    • 가상 메모리
      • 가상 메모리 이해하기
      • 가상과 실제의 매핑
      • 메모리 관리 유닛
      • 다중 레벨 페이지 테이블과 TLB
      • 라즈베리 파이의 스왑 문제
      • 라즈베리 파이 가상 메모리 확인하기
    •  
  • ▣ 04장: ARM 프로세서와 단일 칩 시스템
    • CPU의 놀라운 축소 과정
      • 마이크로프로세서
      • 트랜지스터 예산
    • 디지털 논리 기초
      • 논리 게이트
      • 플립플롭과 순차 논리
    • CPU의 내부
      • 분기와 플래그
      • 시스템 스택
      • 시스템 클록과 실행 시간
      • 파이프라인
      • 파이프라인 자세히 살펴보기
      • 파이프라인 해저드
      • ARM11 파이프라인
      • 슈퍼스칼라 실행
      • SIMD
      • 엔디안
    • CISC와 RISC
      • RISC의 유산
      • 확장된 레지스터 파일
      • 로드/저장 아키텍처
      • 직교적인 기계어 명령
      • 명령 캐시와 데이터 캐시의 분리
    • ARM의 태동
      • 마이크로아키텍처, 코어, 제품군
      • 라이선스 사업 모델
    • ARM11
      • ARM 명령 세트
      • 프로세서 모드
      • 모드와 레지스터
      • 고속 인터럽트
      • 소프트웨어 인터럽트
    • 보조 프로세서
      • ARM 보조 프로세서 인터페이스
      • 시스템 제어 보조 프로세서
      • 벡터 부동 소수점(VFP) 보조 프로세서
      • 에뮬레이션 보조 프로세서
    • ARM 코어텍스
      • 다중 발행 및 비순차적 명령 처리
      • Thumb 2
      • Thumb EE
      • 빅리틀
      • SIMD를 위한 NEON 보조 프로세서
      • ARMv8과 64비트 컴퓨터
    • 단일 칩 시스템
      • 브로드컴 BCM2835 SoC
      • 브로드컴의 2세대, 3세대 SoC 장치
      • VLSI를 만드는 방법
      • 프로세스, 지오메트리, 마스크
      • 지적재산권: 셀, 매크로셀, 코어
      • 하드 IP와 소프트 IP
      • 평면 배치, 레이아웃, 라우팅
      • 칩 상의 통신 표준, AMBA
    •  
  • ▣ 05장: 프로그래밍
    • 프로그래밍의 개념
      • 소프트웨어 개발 과정
      • 폭포수, 나선형, 애자일
      • 이진수 프로그래밍
      • 어셈블리어와 니모닉
      • 고급 언어
      • 베이직 이후의 대홍수
      • 프로그래밍 용어
    • 네이티브 코드 컴파일러의 동작 원리
      • 전처리
      • 어휘 분석
      • 의미 분석
      • 중간 코드 생성
      • 최적화
      • 타깃 코드 생성
      • C 언어 컴파일의 예
      • 목적 코드 파일과 실행 파일의 연결
    • 텍스트 인터프리터
    • 바이트코드 인터프리터 언어
      • P-코드
      • 자바
      • JIT 컴파일
      • 자바를 넘어선 바이트코드와 JIT 컴파일
      • 안드로이드, 자바, 달빅
    • 데이터 구성 요소
      • 식별자, 예약어, 기호, 연산자
      • 값, 리터럴, 이름 상수
      • 변수, 표현식, 할당
      • 타입과 타입 정의
      • 정적 타이핑과 동적 타이핑
      • 2의 보수와 IEEE 754
    • 코드 구성 요소
      • 제어문과 복합 명령문
      • if/then/else 문
      • switch 문과 case 문
      • repeat 문
      • while 루프
      • for 루프
      • break 문과 continue 문
      • 함수
      • 지역성과 범위
    • 객체지향 프로그래밍
      • 캡슐화
      • 상속
      • 다형성
      • OOP 정리
    • GNU 컴파일러 툴셋
      • 컴파일러 gcc, 빌더 gcc
    •  
  • ▣ 06장: 비휘발성 메모리
    • 천공 카드와 테이프
      • 리눅스 make
      • 천공 카드
      • 테이프 저장소
      • 자기 저장소의 태동
    • 자기 레코딩 및 인코딩 체계
      • 자속 전이
      • 수직 기록 방식
    • 자기 디스크 저장소
      • 실린더, 트랙, 섹터
      • 저수준 포맷
      • 인터페이스와 컨트롤러
      • 플로피 디스크 드라이브
    • 파티션과 파일 시스템
      • 기본 파티션과 확장 파티션
      • 파일 시스템과 고급 포맷
      • GUID 파티션 테이블(GPT)
      • 라즈베리 파이 SD 카드 파티셔닝하기
    • 광학 디스크
      • CD 기반 포맷
      • DVD 기반 포맷
    • 램디스크
    • 플래시 저장소
      • ROM, PROM, EPROM
      • EEPROM으로서의 플래시
      • SLC와 MLC
      • NOR 플래시와 NAND 플래시
      • 웨어 레벨링과 플래시 변환 계층
      • 가비지 콜렉션과 TRIM
      • SD 카드
      • eMMC
      • 비휘발성 메모리의 미래
    •  
  • ▣ 07장: 유무선 이더넷
    • OSI 참조 모델
      • 응용 계층
      • 표현 계층
      • 세션 계층
      • 전송 계층
      • 네트워크 계층
      • 데이터 링크 계층
      • 물리 계층
    • 이더넷
      • Thicknet과 Thinnet
      • 이더넷의 기본 개념
      • 충돌 감지와 회피
      • 이더넷 인코딩 시스템
      • PAM-5 인코딩
      • 10BASE-T와 트위스트 페어 케이블
      • 버스 토폴로지에서 스타 토폴로지로
      • 스위칭 이더넷
    • 라우터와 인터넷
      • 이름 vs. 주소
      • IP 주소와 TCP 포트
      • 로컬 IP 주소와 DHCP
      • 네트워크 주소 변환
    • Wi-Fi
      • 표준 속의 표준
      • 현실 세계의 문제
      • Wi-Fi 기기의 활용
      • 인프라 네트워크 vs. 애드혹 네트워크
      • Wi-Fi 분산 미디어 액세스
      • 캐리어 감지 및 숨겨진 노드 문제
      • 단편화
      • 진폭 변조, 위상 변조, QAM
      • 확산 스펙트럼 기법
      • Wi-Fi 변조와 코딩
      • Wi-Fi 연결의 원리
      • Wi-Fi 보안
      • 라즈베리 파이의 Wi-Fi
      • 그 밖의 네트워킹
    •  
  • ▣ 08장: 운영체제
    • 운영체제 개론
      • 운영체제의 역사
      • 운영체제 기초
    • 커널: 운영체제의 조력자
      • 운영체제 제어
      • 모드
      • 메모리 관리
      • 가상 메모리
      • 멀티태스킹
      • 디스크 액세스와 파일 시스템
      • 장치 드라이버
    • OS의 보조 구성 요소
      • OS 켜기
      • 펌웨어
    • 라즈베리 파이의 운영체제
      • NOOBS
      • 서드파티 운영체제
      • 그 밖의 운영체제
    •  
  • ▣ 09장: 비디오 코덱과 압축
    • 최초의 비디오 코덱
      • 사람의 눈
      • 비디오 데이터
      • 주파수 변환
      • 무손실 압축
    • 표준의 변화
      • 최신 MPEG 표준
      • H.265
    • 모션 검색
      • 비디오 품질
      • 처리 능력
    •  
  • ▣ 10장: 3D 그래픽
    • 3D 그래픽의 역사
      • 그래픽 사용자 인터페이스(GUI)
      • 비디오 게임의 3D 그래픽
      • PC와 그래픽 카드
      • 표준 경쟁
    • OpenGL 그래픽 파이프라인
      • 기하학적 사양 및 특성
      • 기하학적 변환
      • 광원과 재질
      • 원시 어셈블리와 래스터화
      • 픽셀 처리(프래그먼트 셰이딩)
      • 텍스처링
    • 그래픽 하드웨어
      • 타일 렌더링
      • 지오메트리 리젝션
      • 셰이딩
      • 캐싱
      • 라즈베리 파이 GPU
    • OpenVG
    • 범용 GPU(GPGPU)
      • 이종 아키텍처
      • OpenCL
    •  
  • ▣ 11장: 오디오
    • 들리십니까?
      • MIDI
      • 사운드 카드
    • 아날로그 vs. 디지털
    • 음향과 신호 처리
      • 편집
      • 압축
      • 녹음과 이펙트
      • 통신을 위한 정보 인코딩과 디코딩
    • 1비트 DAC
    • I2S
      • 라즈베리 파이의 사운드 입출력
      • 오디오 출력 잭
      • HDMI
    • 라즈베리 파이의 사운드
      • 라즈베리 파이 온보드 사운드
      • 라즈베리 파이에서 사운드 다루기
    •  
  • ▣ 12장: 입출력
    • 입출력이란?
    • 입출력
      • 범용 직렬 버스
      • USB 허브
      • 이더넷
      • 범용 비동기 송수신기
      • SCSI
      • PATA
      • SATA
      • RS-232 시리얼 통신
      • HDMI
      • I2S
      • I2C
      • 라즈베리 파이 디스플레이, 카메라 인터페이스, JTAG
    • GPIO
      • GPIO 개요 및 브로드컴 SoC
      • GPIO 다루기
      • GPIO 프로그래밍
      • 대체 모드
      • GPIO 실험 쉽게 하기