本書は、未来のプログラマ、コンピュータ設計者のために書かれた、Raspberry Piを題材にコンピュータの「仕組み」、コンピュータサイエンスの基本を学ぶ書籍です。Raspberry Pi開発者たちが、プロセッサ、メモリ、ストレージ、ネットワーク、オペレーティングシステム、プログラミング、3Dグラフィックス、オーディオ、そして入出力制御などについて、それらの歴史的な背景なども合わせて詳細に解説を行います。また、解説内容の一部は、実際にRaspberry Piで動かしながら学ぶことも可能です。
Raspberry Piで学ぶコンピュータアーキテクチャ
Eben Upton、Jeff Duntemann、Ralph Roberts、Tim Mamtora、Ben Everard 著、宮下 健輔、坂下 秀 監訳、株式会社クイープ 訳
![[cover photo]](https://www.oreilly.co.jp/books/images/picture_large978-4-87311-865-9.jpeg)
- TOPICS
- Make/Electronics/DIY , Electronics/DIY
- 発行年月日
- 2019年09月
- PRINT LENGTH
- 552
- ISBN
- 978-4-87311-865-9
- 原書
- Learning Computer Architecture with Raspberry Pi
- FORMAT
- Print PDF EPUB
目次
はじめに ケンブリッジ ここからが本題 成長曲線の伸び悩むところ 将来に向けて 監訳者まえがき 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を使用するやさしい方法 索引