実践 コンピュータアーキテクチャ (改訂版)

実践 コンピュータアーキテクチャ (改訂版)

ダウンロードサイトやFPGA評価ボードを変更し,設計やシミュレーションの図を変更した

ジャンル
発行年月日
2020/04/30
判型
B5
ページ数
168ページ
ISBN
978-4-339-02906-2
実践 コンピュータアーキテクチャ (改訂版)
在庫あり

定価

2,750(本体2,500円+税)

カートに入れる

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • 著者紹介

Altera社のIntel社による買収により,Quartusのバージョン,ダウンロード法が変わり,表示される画面が全部変更になった。このため,本書ではダウンロードサイトの変更,設計やシミュレーションの図を差し替え,FPGA評価ボードの変更などの改訂を行った。

まえがき
「コンピュータを作る」とは,マイクロプロセッサの中身を作ることである。IntelやAMDの既存のマイクロプロセッサチップを既存のマザーボードに載せることではない。この意味で,世界中のほとんどの若者が,コンピュータを作ることをしていない。これは,未来の情報科学やコンピュータ産業にとって,たいへんな問題である。

この本では,コンピュータアーキテクチャとは何かを学びつつ,実際にコンピュータを設計する。幸い,いまは開発環境として,CAD(computer aided design)が充実しており,FPGA(field programmable gate array)によるハードウェア実験も容易となった。だれでもコンピュータが設計・試作できる時代なのである。実際,この本を使ってコンピュータを作ってみれば,それがいかに簡単なことかわかるだろう。

私の先の教科書『コンピュータアーキテクチャ』(電子情報通信学会編,コロナ社発行)では,コンピュータがなぜプログラムを実行できるのか,その一点を徹頭徹尾簡明に述べた。本書は,この教科書で学んだコンピュータをほぼそのままの形で実際に設計してみる。どんな分野でも読書による理解と実験・製作は不可分のものである。もちろん,コンピュータでもそうである。

本書は独立した本であり,これだけ単独で使っていただければと思う。『コンピュータアーキテクチャ』を読み通した方には,本書の1章,5章,6.1~6.4節は復習である。これらを読み飛ばして2~4章,6.5節,それに7~9章を学習し,実践していただければと思う。逆に本書から始められる方は,本書をクリアしたところで,『コンピュータアーキテクチャ』の4章から読み始めていただければと思う。本書の範囲の外にあるパイプラインの技術や,キャッシュ,仮想記憶,並列処理,アウトオブオーダ処理などの技術を学ぶことができると思う。

1章では,1本の線による1ビットの表現から組合せ回路,順序回路,コンピュータの計算サイクルまでを概説した。続いて,2章ではCADを使った回路入力の初歩を示した。この本では,Altera社のQuartus IIというCADツールを用いており,回路入力はおもにVerilog HDLによる。他社のCADツールを使い,他のHDLを用いる場合でも基本的には同じ手順を踏むことになる。3章ではVerilog HDLを概説している。続いて4章では,Verilog HDLによるシミュレーション記述について学び,これを動作させる環境としてModelsimを導入する。ここまででCADの準備を一通り終えた後,5章でRISC型マイクロプロセッサのアーキテクチャの基本を学ぶ。6章では命令セットの設計とアセンブラの実装を学ぶ。命令セットアーキテクチャは,『コンピュータアーキテクチャ』のそれと同じものである。アセンブラは文字列処理に適したPerl言語で作成した。7章では基本プロセッサの設計を行う。続いて8章では,基本プロセッサをシミュレーションによって検証し,最後に9章でFPGA評価ボードの上に実装する。

以上,読者は,1本の線の実装からマイクロプロセッサまで,順番に設計し,シミュレーションし,最後はFPGA上に実装することになる。その過程でVerilog HDL,Quartus II,ModelsimといくつかCADツール群を使うことになる。焦らず,じっくりとエンジョイしてほしい。途中でさぼるのはかまわないが,忘れてしまわないうちに戻ってくること。本書は大学の学部学生の実験のための教科書として書かれた。東大での実験にあたって,アドバイスいただいた五島正裕准教授,TAを務めてくれた坂井・五島研究室の塩谷亮太君,金大雄君,杉本健君,履修した電子・情報系の学生諸君にはお礼をいいたい。前著に続いて本書の出版をお引き受けいただいたコロナ社の皆様にも感謝申し上げる。

2009年2月坂井修一


改訂版にあたって

2015年12月,Altera社がIntel社に買収されたことにより,CADツールであるQuartusのバージョン,ダウンロード法が変わり,表示される画面が全部変更になった。また,新しいFPGA評価ボードも販売された。このため,本書もこれに合わせて,ダウンロードサイトの変更,設計やシミュレーションの図を差し替え,FPGA評価ボードの変更などの改訂を行った。

2020年3月坂井修一

1.はじめに
1.1 ディジタルな表現
 1.1.1 1本の線=1ビットの信号
 1.1.2 n本の線=nビットの信号
 1.1.3 負の数
 1.1.4 実数
1.2 組合せ論理回路=計算の実現
 1.2.1 計算とは何か
 1.2.2 1ビットの加算
 1.2.3 nビット加算器
 1.2.4 減算の実現
 1.2.5 ALU
1.3 順序回路=記憶を含む論理回路
 1.3.1 フリップフロップ
 1.3.2 レジスタ
 1.3.3 レジスタとALUの結合
本章のまとめ
演習問題

2.ディジタル回路の入力
2.1 ディジタル回路の設計とは
 2.1.1 CAD
 2.1.2 設計の流れ
 2.1.3 CADツールの導入
2.2 組合せ論理回路の設計
 2.2.1 図式入力による半加算器の設計
 2.2.2 HDL入力による半加算器の設計(1)
 2.2.3 HDL入力による半加算器の設計(2)
2.3 順序回路の設計
 2.3.1 図式入力による3ビット同期式カウンタの設計
 2.3.2 HDL入力による3ビット同期式カウンタの設計(1)
 2.3.3 HDL入力による3ビット同期式カウンタの設計(2)
2.4 図式入力とHDL入力
本章のまとめ
演習問題

3.ハードウェア記述言語Verilog HDL
3.1 モジュール構成と宣言
 3.1.1 モジュール構成
 3.1.2 宣言部
 3.1.3 2次元配列の宣言
 3.1.4 名前・文字・予約語
3.2 値と型
 3.2.1 値
 3.2.2 型
 3.2.3 定数
3.3 素子とライブラリ
 3.3.1 基本素子
 3.3.2 3状態素子
 3.3.3 回路ライブラリ
3.4 演算
 3.4.1 演算子
 3.4.2 リダクション演算
 3.4.3 条件演算
 3.4.4 連接演算
 3.4.5 優先順位
3.5 回路記述部
 3.5.1 assign文
 3.5.2 function
 3.5.3 if文
 3.5.4 case文
 3.5.5 always文
 3.5.6 モジュール呼出し
 3.5.7 コメント
3.6 Quartusにおける設計の流れ
 3.6.1 プロジェクト起動
 3.6.2 回路入力
 3.6.3 論理合成
本章のまとめ
演習問題

4.シミュレーションによる動作検証
4.1 Verilog HDLによるテスト生成
 4.1.1 Verilog HDLによるシミュレーション記述
 4.1.2 モジュールの内部構成
4.2 Verilog HDLによるテストパターン生成と結果の表示
 4.2.1 遅延
 4.2.2 initial文とテストパターン入力
 4.2.3 繰返し文とwait文
 4.2.4 シミュレーションで用いるデータ型
 4.2.5 タスク
 4.2.6 システムタスク
4.3 シミュレーション環境の整備
 4.3.1 ModelSimの導入
 4.3.2 シミュレーションの波形出力
本章のまとめ
演習問題

5.データの流れと制御の流れ
5.1 主記憶装置
 5.1.1 主記憶装置の導入
 5.1.2 メモリの構成
 5.1.3 メモリの分類
 5.1.4 レジスタファイル
 5.1.5 主記憶装置の接続
5.2 命令とは何か
 5.2.1 命令
 5.2.2 命令実行のしくみ
 5.2.3 算術論理演算命令の実行サイクル
 5.2.4 メモリ操作命令の実行サイクル
5.3 シーケンサ
 5.3.1 シーケンサとは何か
 5.3.2 コンピュータ中枢部の構成
 5.3.3 条件分岐命令の実行サイクル
本章のまとめ
演習問題

6.命令セットアーキテクチャとアセンブラ
6.1 命令の表現形式とアセンブリ言語
 6.1.1 操作とオペランド
 6.1.2 命令の表現形式
 6.1.3 命令フィールド
 6.1.4 アセンブリ言語
6.2 命令セット
 6.2.1 算術論理演算命令
 6.2.2 メモリ操作命令
 6.2.3 分岐命令
6.3 アドレシング
 6.3.1 アドレシングの種類
 6.3.2 バイトアドレシングとエンディアン
 6.3.3 ゼロレジスタと定数の生成
6.4 サブルーチンの実現
 6.4.1 サブルーチンの基本
 6.4.2 サブルーチンの手順
 6.4.3 スタックによるサブルーチンの実現
 6.4.4 サブルーチンのプログラム
6.5 命令セットアーキテクチャの設計とアセンブラ
 6.5.1 命令セットの設計
 6.5.2 アセンブラの製作
本章のまとめ
演習問題

7.基本プロセッサの設計
7.1 設計の流れ
 7.1.1 モジュールへの分割
 7.1.2 入出力信号の設定
 7.1.3 設計の試行錯誤
7.2 構成要素の設計
 7.2.1 命令フェッチ部
 7.2.2 デコード部
 7.2.3 実行部
 7.2.4 書戻し部
 7.2.5 レジスタファイル
7.3 基本プロセッサ
 7.3.1 Verilog HDLによる全体設計
 7.3.2 論理合成
本章のまとめ
演習問題

8.基本プロセッサのシミュレーションによる検証
8.1 シミュレーションの手順
8.2 命令フェッチ部
 8.2.1 アセンブラによる機械語プログラムの生成
 8.2.2 機械語プログラムを命令メモリにロードする
 8.2.3 メモリ内容の表示と修正法
8.3 データメモリ
8.4 実行部
 8.4.1 opr_gen
 8.4.2 ALU
 8.4.3 結果データの生成・分岐・書込みレジスタの選択
8.5 書戻し部
8.6 レジスタファイル
8.7 基本プロセッサの全体シミュレーション
 8.7.1 トップモジュールのテスト法
 8.7.2 1+1=2の実行
 8.7.3 個々の命令のテスト
 8.7.4 階和計算のプログラム
本章のまとめ
演習問題

9.FPGAによる実装
9.1 FPGAの原理
9.2 設計の手順
 9.2.1 手順の具体化
 9.2.2 デザイン入力
 9.2.3 論理合成
 9.2.4 機能シミュレーション
 9.2.5 配置配線
 9.2.6 タイミング解析・シミュレーション
9.3 FPGA上の実装
 9.3.1 FPGAボード
 9.3.2 実装用の設計の修正(1)―命令メモリとプログラムのロード―
 9.3.3 実装用の設計の修正(2)―データメモリ―
 9.3.4 実装用の設計の修正(3)―結果の表示―
 9.3.5 Quartus Primeライブラリを用いたときのModelSimの使い方
 9.3.6 ピン割付け
 9.3.7 設計データのFPGAボードへのダウンロード
9.4 FPGAボード上のプログラム実行例
 9.4.1 1+1=2の実行
 9.4.2 階和計算
9.5 改良
 9.5.1 設計の改良
 9.5.2 アーキテクチャの改良
本章のまとめ
演習問題

付録
A.Quartus
B.ModelSim
C.基本プロセッサのVerilog HDL記述
D.FPGAボード
E.FPGAにダウンロードする基本プロセッサ(Verilog HDL)

引用・参考文献
演習問題解答
あとがき
索引