Raspberry Piで学ぶコンピュータアーキテクチャ

[cover photo]
TOPICS
Make/Electronics/DIY
発行年月日
PRINT LENGTH
552
ISBN
978-4-87311-865-9
原書
Learning Computer Architecture with Raspberry Pi
FORMAT
Print PDF EPUB
Ebook
4,620円
Ebookを購入する
Print
4,620円

本書は、未来のプログラマ、コンピュータ設計者のために書かれた、Raspberry Piを題材にコンピュータの「仕組み」、コンピュータサイエンスの基本を学ぶ書籍です。Raspberry Pi開発者たちが、プロセッサ、メモリ、ストレージ、ネットワーク、オペレーティングシステム、プログラミング、3Dグラフィックス、オーディオ、そして入出力制御などについて、それらの歴史的な背景なども合わせて詳細に解説を行います。また、解説内容の一部は、実際に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を使用するやさしい方法

索引