内容紹介
Raspberrry Piを通してコンピューターの仕組みを学ぶ!
本書は、低価格シングルボードコンピュータとして普及しているRaspberry Piを題材に、コンピューターの仕組みを学ぶ書籍です。コンピューターを構成するさまざまなコンポーネント(プロセッサ、メモリ、ストレージ、イーサネット、カメラなど)と、それらがどのように連携して動作するのかについて、詳細に解説を行います。またそれらハードウェア上で動作するOSなど低レイヤのプログラミングについての解説も行います。
このような方におすすめ
コンピューターサイエンスを学ぶ学生、コンピューターの低いレイヤに興味のあるプログラマー、Raspberry Piのことをより深く知りたいエンジニア、ホビースト
目次
詳細目次
はじめに
ケンブリッジ
ここからが本題
成長曲線の伸び悩むところ
将来に向けて
監訳者まえがき
1章 驚くべきコンピュータの姿
おいしくて果汁あふれるラズベリーの成長
SoC
わくわくするクレジットカードサイズのコンピュータ
Raspberry Piに何ができるか?
Raspberry Piボードの紹介
GPIOピン
ステータスLED
USBレセプタクル
イーサネット接続
オーディオ出力
コンポジットビデオ
CSIカメラモジュールコネクタ
HDMI
Micro-USB電源
ストレージカード
DSIディスプレイの接続
取り付け穴
チップ
今後の展望
2章 速習:コンピュータが動く仕組み
コンピュータは料理人
データは材料
基本の動作
設計図に従う箱
行うことと知っていること
プログラムはデータ
メモリ
レジスタ
システムバス
命令セット
電圧、数字、意味
2進法:1と0で数える
数字が足りない
計数と付番と0
2進数の省略表記としての16進数
2進数と16進数の計算
オペレーティングシステム:マシンを支配する者
オペレーティングシステムは何をするのか
カーネルに敬礼
マルチコア
3章 メモリ
メモリはコンピュータより前からあった
回転式磁気メモリ
磁気コアメモリ
コアメモリの仕組み
メモリアクセス時間
SRAM
アドレス線とデータ線
メモリシステムへのメモリチップの統合
DRAM
DRAMの仕組み
同期DRAMと非同期DRAM
SDRAMの列、行、バンク、ランク、DIMM
DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM
ECCメモリ
Raspberry Piのメモリシステム
省電力機能
BGAパッケージ
キャッシュ
参照の局所性
キャッシュ階層
キャッシュラインとキャッシュマッピング
ダイレクトマッピング
連想マッピング
セットアソシアティブキャッシュ
キャッシュをメモリに書き戻す
仮想メモリ
仮想メモリの全体像
仮想アドレスから物理アドレスへのマッピング
MMUの詳細
多段ページテーブルとTLB
Raspberry Piのスワップの問題
Raspberry Piの仮想メモリを確認する
4章 ARMプロセッサとSoC
縮みゆくCPU
マイクロプロセッサ
トランジスタ予算
デジタルロジック入門
論理ゲート
フリップフロップと順序回路
CPUの内部
分岐とフラグ
システムスタック
システムクロックと実行時間
パイプライン処理
パイプライン処理を理解する
パイプラインのさらなる探求とパイプラインハザード
ARM11のパイプライン
スーパースカラー実行
SIMDでの並列処理
エンディアン
CPUの再考:CISCとRISC
RISCの遺産
拡張されたレジスタファイル
ロード/ストアアーキテクチャ
直交性の高いマシン命令
命令用とデータ用に分かれたキャッシュ
ARMも最初は小さなドングリだった
マイクロアーキテクチャ、コア、ファミリ
チップではなくライセンスを販売する
ARM11
ARMの命令セット
プロセッサモード
プロセッサモードとレジスタ
高速割り込み
ソフトウェア割り込み
割り込みの優先順位
条件付き命令実行
コプロセッサ
ARMコプロセッサのインターフェイス
システム制御コプロセッサ
VFPコプロセッサ
コプロセッサのエミュレーション
ARM Cortex
複数命令発行とアウトオブオーダー実行
Thumb 2
Thumb EE
big.LITTLE
SIMD用のNEONコプロセッサ
ARMv8と64ビット演算
SoC
Broadcom BCM2835 SoC
Broadcomの第2世代と第3世代のSoCデバイス
VLSIチップの製造法
プロセス、ジオメトリ、マスク
IP:セル、マクロセル、コア
ハードIPとソフトIP
フロアプラン、レイアウト、ルーティング
オンチップ通信の標準:AMBA
5章 プログラミング
プログラミングの概要
ソフトウェア開発プロセス
ウォーターフォール、スパイラル、アジャイル
2進数でのプログラミング
アセンブリ言語とニーモニック
高級言語
BASICのあとは野となれ山となれ
プログラミング用語
ネイティブコードコンパイラの仕組み
前処理
字句解析
構文解析
意味解析
中間コードの生成
最適化
ターゲットコードの生成
Cのコンパイル:具体的な例
オブジェクトコードファイルを実行可能ファイルにリンクする
純粋なテキストインタープリタ
インタープリタ型のバイトコード言語
pコード
Java
JITコンパイル
Java以外のバイトコードとJITコンパイル
Android、Java、Dalvik
データの構成要素
識別子、予約語、記号、演算子
値、リテラル、名前付き定数
変数、式、代入
型と型定義
静的な型付けと動的な型付け
2の補数とIEEE 754
コードの構成要素
制御文と複合文
if/then/else
switchとcase
repeatループ
whileループ
forループ
break文とcontinue文
関数
局所性とスコープ
オブジェクト指向プログラミング
カプセル化
継承
ポリモーフィズム
オブジェクト指向プログラミングのまとめ
GNU Compiler Collection Toolsetの概要
コンパイラ/ビルダとしてのgcc
LinuxのMakeを使用する
6章 不揮発性ストレージ
パンチカードとテープ
パンチカード
テープ
磁気ストレージの幕開け
磁気記録と符号化方式
磁束反転
垂直磁気記録
磁気ディスクストレージ
シリンダ、トラック、セクタ
ローレベルフォーマット
インターフェイスとコントローラ
フロッピーディスクドライブ
パーティションとファイルシステム
プライマリパーティションと拡張パーティション
ファイルシステムとハイレベルフォーマット
新しいパーティショニング技術:GPT
Raspberry PiのSDメモリカードのパーティション
光ディスク
CDから派生したフォーマット
DVDから派生したフォーマット
RAMディスク
フラッシュストレージ
ROM、PROM、EPROM
EEPROMとしてのフラッシュ
シングルレベルストレージとマルチレベルストレージ
NORフラッシュとNANDフラッシュ
ウェアレベリングとフラッシュ変換レイヤ
ガベージコレクションとTRIM
SDメモリカード
eMMC
不揮発性ストレージの未来
7章 有線イーサネットと無線イーサネット
ネットワークのOSI参照モデル
アプリケーション層
プレゼンテーション層
セッション層
トランスポート層
ネットワーク層
データリンク層
物理層
イーサネット
ThicknetとThinnet
イーサネットの基本概念
衝突の検出と回避
イーサネットの符号化方式
PAM-5符号化
10BASE-Tとツイストペアケーブル
バス型トポロジからスター型トポロジへ
スイッチで接続されたイーサネット
ルータとインターネット
MACアドレスとIPアドレス
IPアドレスとTCPポート
ローカルIPアドレスとDHCP
NAT
Wi-Fi
規格の中の規格
現実との対峙
よく使用されるWi-Fi機器
インフラストラクチャネットワークとアドホックネットワーク
Wi-Fiの分散方式によるメディアアクセス
キャリアセンシングと隠れ端末問題
フラグメンテーション
振幅変調、位相変調、QAM
スペクトラム拡散手法
Wi-Fiの変調と符号化の詳細
Wi-Fi接続の仕組み
Wi-Fiのセキュリティ
Raspberry PiでWi-Fiを使う
ネットワークについてさらに
8章 オペレーティングシステム
オペレーティングシステムの概要
オペレーティングシステムの歴史
オペレーティングシステムの基礎
カーネル:オペレーティングシステムのまとめ役
オペレーティングシステムの制御
モード
メモリ管理
仮想メモリ
マルチタスキング
ディスクアクセスとファイルシステム
デバイスドライバ
オペレーティングシステムを補助するプログラム
OSの起動
ファームウェア
Raspberry Piのオペレーティングシステム
NOOBS
サードパーティのオペレーティングシステム
利用可能なその他のオペレーティングシステム
9章 ビデオコーデックと動画圧縮
最初のビデオコーデック
目の働きを利用する
データを利用する
周波数変換
可逆エンコード技術の使用
時代の変化とコーデック
最新のMPEG規格
H.265
モーションサーチ
動画の品質
処理能力
10章 3Dグラフィックス
3Dグラフィックスの略史
GUI
ビデオゲームの3Dグラフィックス
パーソナルコンピュータとグラフィックスカード
競合する2つの規格
OpenGLのグラフィックスパイプライン
ジオメトリの仕様と属性
ジオメトリ変換
ライティングとマテリアル
プリミティブの組み立てとラスタライズ
ピクセル処理:フラグメントシェーディング
テクスチャ処理
現代のGPU
タイルベースのレンダリング
ジオメトリの除去
シェーディング
キャッシュ
Raspberry PiのGPU
Open VG
汎用GPU
異種アーキテクチャ
OpenCL
11章 オーディオ
聞こえますか?
MIDI
サウンドカード
アナログとデジタル
サウンドと信号の処理
編集
圧縮
エフェクトを使った録音
通信のための情報のエンコードとデコード
1ビットDAC
I2S
Raspberry Piのサウンド入出力
オーディオ出力コネクタ
HDMI
Raspberry Piのサウンド
Raspberry Piのオンボードサウンド
Raspberry Piでサウンドを操作する
12章 入出力
入出力の紹介
I/Oデバイス
USB
パワードUSBハブ
イーサネット
UART
SCSI
PATA
SATA
RS-232シリアル
HDMI
I2S
I2C
Raspberry Piのディスプレイ、カメラインターフェイス、JTAG
Raspberry PiのGPIO
GPIOの概要とBroadcom SoC
実践GPIO
GPIOのプログラミング
ALTモード
GPIOを使用するやさしい方法
索引
続きを見る