現在地
トップ > 電子書籍 > PC・システム開発 > ハードウェア
RISC-VとChiselで学ぶはじめてのCPU自作ーーオープンソース命令セットによるカスタムCPU実装への第一歩

RISC-VとChiselで学ぶ はじめてのCPU自作 ーーオープンソース命令セットによるカスタムCPU実装への第一歩 [電子書籍版]
??悠太朗

3,520(税込)

商品情報

  • 著者:   ??悠太朗井?健太
  • 発売日:  2021年08月20日
  • 出版社:  技術評論社
  • 商品番号:  9784297123062
  • 言語:  日本語
  • 対応端末:   電子書籍リーダー, Android, iPhone, iPad, デスクトップアプリ

商品説明

内容紹介

(概要)

本書では、UCバークレーで開発されたオープンソースの命令セット(ISA)「RISC-V」を用いて、CPUの作り方を解説します。コンピュータアーキテクチャ、ハードウェアに関する知識があまりない方にも理解できるように基礎からわかりやすく学んでいきます。CPUとコンピュータアーキテクチャのしくみを解説したうえで、基本整数命令の実装から、CPUの高速化で活躍するパイプラインの実装、スーパーコンピューターでも活躍するベクトル拡張命令(SIMD)、さらに、汎用CPUでは負荷の高い処理をより高速に実行するためにCPUへ追加可能なカスタム命令の実装までを行います。CPU設計に用いる基本言語としては、Velilogを抽象化したHDL(ハードウェア記述言語)であるChiselを利用しています。CPUの自作範囲に関して、手順が煩雑なFPGAでの動作確認は行わず、ソフトウェア上でエミュレーションをゴールとしているので、ソフトウェアエンジニアの方にも取っ付きやすいものとなっています。巻末には、昨今RISC-Vが注目されている理由を整理するため、RISC-Vのもたらす価値についてまとめています。


(こんな方におすすめ)

・ソフトウェアエンジニアで、CPUや命令セットなどのローレイヤーを学びたい人

・カスタムCPU、DSA(Domain Specific Architecture)に興味がある人


(目次)

第1部 CPU自作のための基礎知識

第1章 CPUとは何か

1-1 電子回路が論理を表現できる理由

1-2 基本論理回路がCPUを実現できる理由

1-3 CPUの製造プロセス

第2章 コンピュータ・アーキテクチャ

2-1 メモリ

2-2 コンピュータの基本的な処理の流れ

第3章 ハードウェア記述言語Chiselの基本

3-1 Chiselとは

3-2 オブジェクト指向とは

3-3 Scalaの基本文法

3-4 Chiselの基本文法

第2部「簡単なCPUの実装」

第4章 環境構築

4-1 chisel-templateのダウンロード

4-2 Dockerによる実行環境の構築

4-3 命令bit列および定数ファイル

4-4 第2部で実装する命令とChiselコード全体

第5章 命令フェッチの実装

5-1 Chiselコードの概要

5-2 Chiselの実装

第6章 ChiselTestによる命令フェッチテスト

6-1 ChiselTestのインストール

6-2 テストの流れ

6-3 Chiselテストコードの作成

6-4 メモリ用hexファイルの作成

6-5 printfを活用したデバッグ信号の出力

6-6 テストの実行

6-7 Dockerコンテナのcommit

第7章 命令デコーダの実装

7-1 Chiselの実装

7-2 テストの実行

第8章 LW命令の実装

8-1 RISC-VのLW命令定義

8-2 Chiselの実装

8-3 テストの実行

第9章 SW命令の実装

9-1 RISC-VのSW命令定義

9-2 Chiselの実装

9-3 テストの実行

第10章 加減算命令の実装

10-1 RISC-Vの加減算命令定義

10-2 Chiselの実装

第11章 論理演算の実装

11-1 RISC-Vの論理演算命令定義

11-2 Chiselの実装

第12章 デコーダの強化

12-1 ALU用デコード

12-2 MEM用デコード

12-3 WB用デコード

第13章 シフト演算の実装

13-1 RISC-Vのシフト演算命令定義

13-2 Chiselの実装

第14章 比較演算の実装

14-1 RISC-Vの比較演算命令定義

14-2 Chiselの実装

第15章 分岐命令の実装

15-1 RISC-Vの分岐命令定義

15-2 Chiselの実装

第16章 ジャンプ命令の実装

16-1 RISC-Vのジャンプ命令定義

16-2 Chiselの実装

第17章 即値ロード命令の実装

17-1 RISC-Vの即値ロード命令定義

17-2 Chiselの実装

第18章 CSR命令の実装

18-1 RISC-VのCSR命令定義

18-2 Chiselの実装

第19章 ECALLの実装

19-1 RISC-VのECALL命令定義

19-2 Chiselの実装

第20章 riscv-testsによるテスト

20-1 riscv-testsのビルド

20-2 ELFファイルをBINファイルへ変換

20-3 BINファイルのhex化

20-4 riscv-testsのパス条件

20-5 riscv-testsの実行

20-6 一括テストスクリプト

第21章 Cプログラムを動かしてみよう

21-1 Cプログラム作成

21-2 コンパイル

21-3 リンク

21-4 機械語のhex化とdumpファイルの生成

21-5 テストの実行

第3部 パイプラインの実装

第22章 パイプラインとは

22-1 パイプライン処理の意義

22-2 CPU処理のパイプライン化

22-3 第3部で完成するChiselコード

第23章 パイプラインレジスタの実装

23-1 レジスタ定義

23-2 IFステージ

23-3 IDステージ

23-4 EXステージ

23-5 MEMステージ

23-6 WBステージ

第24章 分岐ハザード処理

24-1 分岐ハザードとは

24-2 Chiselの実装

24-3 分岐ハザードのテスト

第25章 データハザード処理

25-1 データハザードとは

25-2 フォワーディングのChisel実装

25-3 ストールのChisel実装

25-4 データハザードのテスト

第4部 ベクトル拡張命令の実装

第26章 ベクトル命令とは

26-1 SIMDとは

26-2 既存のベクトルアーキテクチャ

26-3 RISC-Vのベクトル命令とSIMD命令の相違点

26-4 第4部で完成するChiselコード

第27章 VSETVLI命令の実装

27-1 RISC-VのVSETVLI命令定義

27-2 VTYPE

27-3 Chiselの実装

27-4 テストの実行

第28章 ベクトルロード命令の実装

28-1 unit-stride形式のベクトルロード命令定義

28-2 Chiselの実装

28-3 テストの実行

第29章 ベクトル加算命令VADD.VVの実装

29-1 RISC-VのVADD.VV命令定義

29-2 Chiselの実装

29-3 テストの実行

第30章 ベクトルストア命令の実装

30-1 unit-stride形式のベクトルストア命令定義

30-2 Chiselの実装

30-3 テストの実行

第5部 カスタム命令の実装

第31章 カスタム命令の意義

31-1 シングルコアの性能向上と限界

31-2 マルチコアによる並列処理の効率化と限界

31-3 DSAの可能性

31-4 DSAとRISC-V

第32章 ポピュレーションカウント命令の実装

32-1 ポピュレーションカウント命令とは

32-2 カスタム命令を実装しない場合のポピュレーションカウントプログラム

32-3 カスタム命令用のコンパイラ(アセンブラ)実装

32-4 Chiselの実装

32-5 テストの実行

付録 RISC-Vの価値


商品レビュー

楽天Koboのレビュー

まだレビューがありません。 レビューを書く

楽天ブックスランキング情報

  • 週間ランキング

    ランキング情報がありません。

  • 日別ランキング

    ランキング情報がありません。

楽天Kobo電子書籍版

  • 期間限定!イチオシのキャンペーン

最近チェックした商品

    ※表示を削除したい場合は閲覧履歴のページから削除お願いいたします

    ランキング:PC・システム開発

    ※1時間ごとに更新

    購入データ自動連携!楽天ブックス公式 無料 読書管理パプリ Readee

    このページの先頭へ