「作りながら学ぶコンピュータアーキテクチャ」のページ

このページは 天野英晴、西村克信 著「作りながら学ぶコンピュータアーキテクチャ」(培風館)のホームページです。

本書はパルテノン/SFLにより、演習を通してコンピュータを設計しながら 学習する新しい概念の教科書です。まず演習を行うためには、皆さんのパソコンに パルテノン/SFLをインストールする必要があります。パルテノン/SFLは、NTTに よって開発された設計用ツールで、さほど 能力の高くないパソコンでも簡単に動作し、 個人のレベルでHDL設計環境を実現することができます。

パルテノン/SFLのインストールについては、 NTT PARTHENON のページ をご覧下さい。テキスト中のhtmlからだと現在アクセスが できなくなっております。こちらからどうぞ。

慶應義塾大学理工学部情報工学科3年コンピュータアーキテクチャ履修の皆様は、 まず コンピュータアーキテクチャのページで、 課題および設計コンテストの内容と、 実行環境を確認してからこのページから設計データを 取得して下さい。

例題のSFL記述とスクリプトファイル

第2章 演算器の設計とSFLの文法 まとめ(sec2.tar)

  • ハーフアダー(hadder.sfl)
  • フルアダー(fadder.sfl)
  • 4bitフルアダー(add4.sfl)
  • 4bit加減算器ー(addsub4.sfl)
  • 4bitフルアダースクリプト(add4.sct)
  • 4bit ALU(alu4.sfl)
  • 4bit ALUスクリプト(alu4.sct)
  • 4bit ALU 改善版(alu4a.sfl)
  • 第3章 アキュムレータマシン まとめ(sec3.tar)

  • 簡易データパス(datapath1.sfl)
  • 簡易データパススクリプト (datapath1.sct)
  • メモリ付きデータパス (datapath2.sfl)
  • メモリ付きデータパステスト (testdp2.sfl)
  • メモリ付きデータパススクリプト (testdp2.sct)
  • アキュムレータマシン分岐無し (amachine.sfl)
  • アキュムレータマシン分岐無しテスト用全体記述 (testam.sfl)
  • アキュムレータマシン分岐無しスクリプト (testam.sct)
  • アキュムレータマシン分岐付き (am2.sfl)
  • アキュムレータマシン分岐付きテスト用全体記述 (testam2.sfl)
  • アキュムレータマシン分岐付きテストスクリプト (testam2.sct)
  • 掛け算のプログラム (mult.sct)
  • 第4章 16bit RISC PICO16 まとめ(sec4.tar)

  • Born PICO16(bpico16.sfl)
  • Born PICO16テスト用全体記述(btest.sfl)
  • 簡単なテストプログラム用スクリプト (bfirst.sct)
  • メモリ0x20番地からの表示用スクリプト (mem20)
  • メモリ0x30番地からの表示用スクリプト (mem30)
  • メモリ0x0120番地からの表示用スクリプト (mem0120)
  • 第5章 分岐命令の付加 まとめ(sec5.tar)

  • 分岐付きBorn PICO16(bpico16.sfl)
  • 分岐付きBorn PICO16テスト用全体記述 (btest.sfl)
  • 掛け算テストプログラム用スクリプト (bmult.sct)
  • 最大値を見つけるプログラム用スクリプト (bmax.sct)
  • サブルーティンコールテスト用スクリプト (bsubr.sct)
  • 第6章 入出力と割り込み まとめ(sec6.tar)

  • 割り込み付きPICO16(pico16.sfl)
  • 入出力付きテスト(test.sfl)
  • 入出力付きテストスクリプト (io1.sct)
  • 入出力付きテストスクリプト(サブルーティン版) (io2.sct)
  • 入出力付きテストスクリプト(レジスタ保存版) (io3.sct)
  • 入出力付きテストスクリプト(割り込み版) (int.sct)
  • 演習6.2スクリプト(割り込み版) (ex62.sct)
  • メモリ読み出し用スクリプト(割り込み版) (mem30)
  • 第7章 CPUの性能とコストの評価

  • 桁上げ先見方式加算器(cla.sfl)
  • 桁上げ先見方式版PICO16(pico16.sfl)
  • 第8章 キャッシュ まとめ(sec8.tar)

  • PICO16(6章と同じ) (pico16.sfl)
  • ダイレクトマップ方式キャッシュコントローラ (dmapc.sfl)
  • 主記憶モデル (dram.sfl)
  • キャッシュメモリモデル (cache.sfl)
  • キャッシュテスト用全体記述 (test.sfl)
  • 最大値を求めるプログラム (bmax.sct)
  • 最大値を求めるプログラム(コンフリクトにより キャッシュミスをやたらに起す版) (bmax2.sct)
  • メモリの0番地からの表示用スクリプト (mem)
  • 第9章 パイプライン処理 まとめ(sec9.tar)

  • パイプライン化PICO16(フォワーディング無し、分岐対処無し) (ppico16.sfl)
  • パイプライン化PICO16テスト用全体記述 (test.sfl)
  • テストプログラム(うまく動くもの) (ptest0.sct)
  • テストプログラム(フォワーディングがないとダメなもの) (ptest1.sct)
  • テストプログラム(NOPを入れて強引に動かしたもの) (ptest1a.sct)
  • データメモリの表示用スクリプト (mem)
  • パイプライン化PICO16(フォワーディング付) (ppico16.sfl)
  • テストプログラム(分岐を含むもの) (bra.sct)
  • パイプライン化PICO16(フォワーディング付分岐対処付) (ppico16.sfl)
  • テストプログラム(掛け算) (bmult.sct)
  • テストプログラム(掛け算スケジュール付き) (bmult2.sct)
  • パイプライン化PICO16(割り込み付き) (ppico16.sfl)
  • パイプライン化PICO16割り込み付きテスト用全体記述 (test.sfl)
  • 割り込みテスト用スクリプト (int.sct)
  • パイプライン処理のスライド (arcpipe.ppt)
  • パイプライン処理のスライド2 (arcpipe2.ppt)
  • パイプライン処理のスライド3 (arcpipe3.ppt)
  • 付録A まとめ(app1.tar)

  • PICO-16本体
  • テスト環境
  • メモリをX20番地から表示するスクリプト
  • メモリをX30番地から表示するスクリプト
  • 付録B まとめ(app2.tar)

  • 割り込み付き版PICO-16本体
  • PICO-16テスト環境(I/Oモジュール付き)
  • 付録C まとめ(app3.tar)

  • キャッシュメモリ
  • ダイレクトマップ式キャッシュコントローラ
  • DRAM
  • PICO-16テスト環境(キャッシュ付き)
  • 付録D まとめ(app4.tar)

  • PICO-16本体
  • PICO-16テスト環境


  • PICO-16 アセンブラ

  • ファイル
  • PICO-16アセンブラはPerlで記述されています.従って,使用するには環境に Perlのインタプリタがインストールされている必要があります.ファイルをダウンロードしたら,一行目をお手元の環境で Perlがインストールされているパスへ書き換え,実行権限を与えてください.

    使用方法

  • アセンブリプログラム"foo.s"は本書中で紹介されるニーモニックで記述されます
  • "pasm foo.s"とコマンドラインで打つと,sflスクリプト"foo.o"を出力します
  • レジスタはr0からr7まで
  • 分岐の跳び先をラベルを使って指定できます
  • #記号 でイミーディエイト値を表し,16進数と10進数をサポートします
  • @番地 がアドレスダイレクティブで,16進数と10進数をサポートします
  • 0x で始まるイミーディエイト値は16進数であると判断されます
  • イミーディエイト値以外の#記号以降はコメントと判断されます
  • イミーディエイト値であるかコメントであるかはアセンブラが判別します
  • 一行に付き一命令のみ記述でき,新しい行は新しい命令であると判断されます
  • オペコードやオペランドを区切る空白はいくつあっても一つと数えられます
  • オペランド同士を区切るには空白,カンマ,あるいはその両方が使えます
  • オペコードおよびラベルの大文字小文字は区別しません
  • ワード長やPCインクリメント数は適当に調節できます
  • sflスクリプトのほか,Verilog-HDLの$readmemh()用メモリファイルも出力できます
  • そのうちなにかサンプルプログラムを置きます

  • ふんが研のホームページに戻る

    天野 英晴