「作りながら学ぶコンピュータアーキテクチャ(改訂版)」のページ
このページは 天野英晴、西村克信 著「作りながら学ぶコンピュータアーキテクチャ(2011年改訂版)」(培風館)のホームページです。
本書はVerilog HDLを使って、演習を通してコンピュータを設計しながら
学習する新しい概念の教科書です。まず演習を行うためには、皆さんのパソコンに
icarus verilogと(できれば)gtkwaveをインストールする必要があります。
icarus verilogのインストールについては、
icarus verilog
のページ 
をご覧下さい。
 
gtkwaveのインストールについては、
gtkwaveのページ 
をご覧下さい。
 
演習用Verilogファイル
 それぞれの章で解説したVerilogのソースです。最初はLinuxのtarファイルがありますので、まるごと取ってきて、tar xvf ファイル名と打ち込めばディレクトリが表れます。中身のファイルを個別に見ることができるようにしていますので、tarが使えない場合、そちらをご利用下さい。
 第2章 データパス:コンピュータで演算をするところ 
   加算器(adder.v) 
   テストベンチ(test.v) 
   ALU(alu.v) 
   テストベンチ(test.v) 
   ALU(alu.v) 
   データパス(datapath.v) 
   定義ファイル(def.h)   
  テストベンチ(test.v)   
 第3章 アキュムレータマシン 
   ALU(alu.v) 
   データパス(datapath2.v) 
   定義ファイル(def.h) 
   テストベンチ(test.v) 
   データメモリ(dmem.dat) 
   命令メモリ(imem.dat) 
   ALU(alu.v) 
   データパス(accum.v) 
   定義ファイル(def.h) 
   テストベンチ(test.v) 
   データメモリ(dmem.dat) 
   命令メモリ:掛け算(imem.dat) 
 第5章 汎用レジスタマシンへの拡張
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(poco1.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ(imem.dat) 
 第6章 分岐、ジャンプ、命令の拡張
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(poco1.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ掛け算(imem.dat) 
   アセンブラshapa(shapa) 
 アセンブラshapa用定義ファイル(poco.rb) 
 掛け算アセンブラ元ファイル(mult.asm) 
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(poco1.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ自乗(imem.dat) 
   アセンブラshapa(shapa) 
 アセンブラshapa用定義ファイル(poco.rb) 
 自乗アセンブラ元ファイル(jijo.asm) 
 第8章 入出力:I/O
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(poco1.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   ディスプレイ(disp.v) 
   データメモリ偶数(dmem0.dat) 
 データメモリ奇数(dmem1.dat) 
   命令メモリ掛け算(imem.dat) 
   アセンブラshapa(shapa) 
 アセンブラshapa用定義ファイル(poco.rb) 
 演習8-2(imem_enshu_test.dat) 
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(poco1.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   ディスプレイ(disp.v) 
   データメモリ偶数(dmem0.dat) 
 データメモリ奇数(dmem1.dat) 
   命令メモリ掛け算(imem.dat) 
   アセンブラshapa(shapa) 
 アセンブラshapa用定義ファイル(poco.rb) 
 第9章 パイプライン処理
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(pocop.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ(imem.dat) 
   演習9-1(imem_enshu.dat) 
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(pocop.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ(imem.dat) 
   ALU(alu.v) 
   レジスタファイル(rfile.v) 
   POCO(pocop.v) 
   定義ファイル(def.h) 
   テストベンチ(test_poco.v) 
   データメモリ(dmem.dat) 
   命令メモリ掛け算(imem.dat) 
   演習9-2(test.asm) 
  アセンブラshapa(shapa) 
 アセンブラshapa用定義ファイル(poco.rb) 
 10章 キャッシュのシミュレーション、パワーポイントファイル 
 キャッシュのシミュレーション用記述(ダイレクトマップと2way setassociative解説用読みだしのみ(c1kai.tar) 
 キャッシュのシミュレーション用記述(ライトスルーとライトバック解説用 読み書き対応(c2kai.tar) 
 10章前半授業用パワーポイントファイル(sec10-1.ppt) 
 10章後半授業用パワーポイントファイル(sec10-2.ppt) 
 POCOアセンブラ shapa 
 「アセンブラshapa」
shapaは、天野研究室を2010年に卒業した社長こと齋藤貴樹君の開発によるものです。rubyで書かれているため、実行するにはrubyのインタプリタがインストールされている必要があります。通常のLinux環境でしたらそのまま利用できると思います
Verilog演習をやる場合、shapaは必要なVerilogディレクトリ中に入っていますので、そのまま持ってきて利用可能です。
 POCOの論理合成 
 ここでは二つの論理合成環境を紹介します。
 Synopsys社Design Compilerを用いた論理合成:ツールの利用には、指導教員がVDECに登録して、CADをインストールしている必要があります。
論理合成ツールの使い方(synth.pdf)
演習用Verilogファイル、tclファイル
 Xilinx社iseを用いた論理合成:WebPackを利用すれば無料です。
論理合成ツールの使い方(ise.pdf)
演習用Verilogファイル
 補足資料 
ページ数の関係で本編に含むことができなかった部分です。
 マルチサイクル版POCO
今回、POCOはシングルサイクル版から一気にパイプライン化しましたが、本当はマルチサイクル版を勉強してからパイプライン化するのが良いと思います。その部分の解説と演習です。
マルチサイクルPOCOの解説(multc.pdf)
演習用Verilogファイル
 Verilog記述の様々
今回、POCOは本当に基本的な文法だけを使って記述しました。しかしVerilogの記述は奥が深く様々なパターンでの記述が可能になります。これを試したものです。対象はマルチサイクル版にしています。それぞれの記述をDesign Compilerで合成して評価しています。
様々なVerilog構文を使ったPOCOの解説(veri.pdf)
always文版poco1.v
function文版poco1.v
 うんちく、補足文章
コンピュータアーキテクチャテキストのサーベイ:ヘネパタとパタヘネ(工事中)
アドレッシングモードの色々:もしPCを汎用レジスタにしたら?
高級官僚VHDLとVerilogおやじ
  
 POCOを使った学生実験 
Xilinx社の SPARTAN3Aスタータキットを用いた実験用のファイルと解説書です。慶應義塾大学理工学部情報工学科3年ではこれを使ってピンポンゲームなど簡単なゲームを作り、マイクロプロセッサと入出力についての理解を深めます。
実験解説書(jikken.pdf)
実験用ファイル一式(jikken.tar.gz)
実験説明用パワポ(jikken.ppt)
 POCOチップを作ろう 
指導教員がVDECに登録して、CADをインストールし、NDAを結んでライブラリの利用許可を受けていれば、e-shuttle 65nmプロセスなどを用いてPOCOチップを作ることができます。
クラブレイアウトにようこそにアクセスすることで、POCOチップのレイアウトフローを見ることができます。
ふんが研のホームページに戻る 
天野 英晴