モデルコンピュータを用いたハードウェア/ソフトウェア 設計教育の試み

モデルコンピュータを用いたハードウェア/ソフトウェア
設計教育の試み
隆*
太田
*
鹿股 昭雄** 力武
仙台電波工業高等専門学校
**
仙台電波工業高等専門学校
克彰**
教育研究支援室
情報工学科
概要 コンピュータの動作を学ぶ上でコンピュータアーキテクチャとシステムプログラムを
理解することは必須である。本校情報工学科4年生の「ディジタルシステム設計」の授業で
は、モデルコンピュータCDEC*1を用いコンピュータアーキテクチャとシステムプログラ
ムの理解と比較的規模の大きなハードウェア・ソフトウェアの設計、実装技術の教育をめざ
している。本稿は主にシステムプログラムを理解するための「アセンブラ設計・実習」につ
いて紹介する。(*1:CDEC Computer Design Education Computer)
1. はじめに
DECの構成図でありデータパス部と制御部の
二つのボードから構成される。制御部はPLD
(GAL20V8)16個で構成されており、ここに
命令のロジックが定義されおり基本的な命令は
すでに実装されている。このPLDに命令ロジッ
クを追加することにより標準命令には無い新た
な命令を追加できる。
コンピュータの基本を理解する上でハードウ
ェアとソフトウェアをバランスよく学ぶことは
非常に大事である。しかしそのバランスをとるこ
とはむずかしく、それぞれ別な教材・課題で行わ
れることが多くハードとソフトとの繋がりを意
識した学習を行うことができない。
「ディジタルシステム設計」の授業では、モデ
ルコンピュータCDECを用いることで、ハード
ウェアとソフトウェアの両分野を連携させた学
習を実施している。ハードウェアの教育としては、
CDECのアーキテクチャを理解した上で、新た
な命令を各自が設計追加する実習を行う。一方、
ソフトウェアの教育としては、CDECで動作す
る機械語用アセンブラの設計・実習を行っている。
同一教材を用いることによりハードウェア・ソフ
トウェアといった意識にとらわれずにコンピュ
ータの基本動作を理解できると考えられる。
3.
2. CDECの概要
CDECは、コンピュータの内部構造および動
作原理を学習するために 1998 年に仙台電波高専
と群馬高専が共同で開発した教育システムであ
る[1]。できるだけ学生への透明度をもたせるため
に TTL と SRAM およびPLDで構成した。また、
教育用のテキストも同時に刊行した[2]。図1はC
Data Path Board
・内部1バス方式
・PC IR FR GRx3
・MM256 バイト
図1
Control Board
・
PLDx16
CDECの構成図
授業の進め方
授業の前半3分の1はクラス全員でアーキテ
クチャと動作原理、内部構造、アセンブラなどコ
ンピュータの基礎を講義で学ぶ。後半3分の2は
クラスを半分にわけ、表1に示すようにグループ
Aは「制御部設計実習」と「アセンブラ設計・実
習」の順に、グループBは「アセンブラ設計・実
習」と「制御部設計実習」の順にそれぞれ実習す
る。
制御部設計実習ではCDECにプログラムを
入力しクロックパルスを手動で1クロックずつ
進めながらフェッチサイクル、命令ステート数、
各レジスタの動作・役割を理解する。あらかじめ
実装されている標準命令を理解した後、各自追加
命令を考案し、その制御信号用のロジックをPL
Dに焼付けCDECに実装し動作を確認する。
コマ No.
形態
1~10
講義
11~20
21~30
実習
実習
授 業 内 容
・
コンピュータのアーキテクチャと動作原理
・
制御部の構成とその設計法
・
アセンブラの処理内容と設計法
(A グループ)
(B グループ)
制御部設計実習
アセンブラ設計実習
・基本命令の動作確認
・Pass1の設計・作成
・追加命令の設計
・Pass2の設計・作成
アセンブラ設計実習
制御部設計実習
・Pass1の設計・作成
・基本命令の動作確認
・Pass2の設計・作成
・追加命令の設計
表1
表1 授業の流れ
授業の進め方
4. アセンブラ設計・実習(ソフトウェア)
4.1
アセンブラ設計・実習の概要
アセンブラ設計・実習ではCDECアセンブリ
言語を機械語に変換するための「アセンブラ」を
設計し作成する。
実習はガイダンス、設計、作成、リーフレット
作成、最終発表という流れで行う。ガイダンスで
は代表的な変換アルゴリズムである2パス方式
を説明する。2パス方式はアセンブラソースプロ
グラムを2回走査し機械語に変換する方式で、1
度目の走査(パス1)ではラベルのアドレスをテ
ーブルに格納する、2度目の走査(パス2)では
命令を機械語へ変換と、ラベルを参照している命
令においては1度目の走査で作成したテーブル
を用いて機械語を完成させる方式である。学生は
それらをヒントにアルゴリズムを考案、設計し、
アセンブラの作成を行う。また品評会を行い、学
生は各自が作成したアセンブラをリーフレット
を用いてアピールする。最終発表では実際に作っ
たアセンブラを実行し各自の工夫点などを発表
する。レポートは中間と最終に提出する。
学生はアルゴリズムの考案から設計、データ定
義、工程管理、文書化などアセンブラ作成の一連
の作業を行う。各自自由に設計、作成することで
システム開発能力の向上と多数の情報をいかに
形あるものにコーディネートしていくか、またそ
れをいかにアピールするかを体験する。
CDEC制御部に命令を追加できることを意
識させ、アセンブラ設計・実習においても命令の
追加が容易にできるようプログラムの拡張性や
保守性といったソフトウェアの性能についても
配慮するように指導している。
4.2
アセンブラ設計・実習の特徴
特徴1:アルゴリズム、言語は自由
学生は、2パス方式をヒントに変換アルゴリズ
ムを考案し、設計、プログラミング、デバッグし
て完成させる。開発環境もUNIX端末や
Windows PC の選択も自由であり、使用する言語
もC言語、JAVA、Perl、AWK など自由である。
特徴2:発表会で意見交換
授業2回に1回程度で発表会を行う。1回の発
表会につき4,5人選出し1人5分程度で、現在
の状況やうまくいかずに困っている点などを発
表させる。発表後は質疑応答のほか学生間での意
見交換、指導者からの助言を得るための時間を取
る。
特徴3:日報で進捗状況の把握
毎回授業の終わりには日報を提出してもらう。
日報にはその日の作業内容、次回の作業内容、質
問などを記入しファイリングしておく。毎回授業
の始まりに各自ファイルを見て今回の作業の確
認、進度の調整、疑問点などを確認して作業に入
る。指導者は日報により、各学生の進捗状況を確
認し、必要に応じてアドバイスを記入しておく。
特徴4:リーフレットの作成
最終発表の前に各自の作成した「アセンブラ」
をアピールするリーフレットを作成する。機能の
説明やネーミング、コピー、配色、配置、字体、
大きさなど工夫をこらしA4に表現する。リーフ
レットは掲示しお互い評価しあう。
特徴5:最終発表
最終発表はクラス全員で行う。どんなアルゴリ
ズムを考案したか、ユーザーインターフェースは
どうかなどプロジェクターを用い実際に動作を
確認しながら行う。
4.3 作成されるアセンブラの実際
実際に学生はどのようなプログラムを作成し
ているか紹介する。
1:選択されている言語
C言語が7割程で、のこりは JAVA や Perl
その他の言語であった。
2:開発環境
UNIX端末での作成が8割程であるが、それ
ぞれ研究室のPCや自宅PCを用いるケースも
あった。
3:アルゴリズム
9割程の学生は2パスまたは2パスの変形を
用いている。その他ではパス1で命令を機械語に
変換し、パス2でラベルのアドレスを埋めていく
といった通常の2パス方式とは逆のアルゴリズ
ムで作成した学生もいた。
4:機械語への変換部分
4割程の学生は命令の語長の計算と機械語へ
の変換はテーブルを用いており、命令の追加が容
易にできるよう工夫している。残りはプログラム
コード中に直接「if ~else~」文により命令を変
換する手法をとっており拡張性・保守性にかける
ものとなっていた。
5:エラー対処、エラー処理
入力されるアセンブラソースプログラムには
エラーが考えられる。7割程の学生はエラーを1
種類、あるいは数種類のエラーを検知しメッセー
ジを出力するプログラムを作成している。一方3
割程の学生はエラーにまったく対応できていな
い。
6:ユーザーインターフェース
アセンブラソースのファイル名の入力方式は
会話型やコマンドラインから入力する方式が多
数であった。過去には JAVA を用い、ウィンドウ
を複数開きリアルタイムでアセンブルし文字の
色を変えて完了・未定・エラーなど表示するパッ
ケージソフト並みのアセンブラを作成した学生
もいた。最近では、インターフェースにPHPを
用いファイルの読み込みをウィンドウからマウ
スで選択させ内部の処理は Perl で行うといった、
Web環境によるアセンブラを作成した学生も
いた。
5. おわりに
授業「ディジタルシステム設計」では、ハード
ウェアとソフトウェアの両分野を関連させた教
育を行っている。本稿では、主にソフトウェア教
育であるアセンブラ設計・実習について述べた。
ソフトウェア教育の教科において、自由課題とし
て自由にプログラムを作るといった例があり教
育効果を上げているが、本授業は目の前にモデル
コンピュータCDECがあり、標準命令にはない
新たな命令を追加することができ、しかもその命
令をアセンブルするアセンブラを作成すること
が特徴であり、教育効果はさらに高いと思う。
長期間にわたる課題は「手をつけられない」や
「さぼり」などの問題も発生するが、発表やディ
スカッション、日報をうまく活用することで、学
生同士の積極的なコミュニケーションを促し、学
習達成度の底上げを図っている。
まず、各自に考えさせ形あるものを作らせ、そ
れが他の人とどこが違うのか理解させることが
大事である。今回作成したアセンブラの機能は低
くても、プログラミングする上で設計の重要さや
質の良いプログラムとはどんなものか理解でき
ればこの授業は意義があったものと思う。
これからも工夫を重ね有意義な授業になるよ
う努力していきたい。
6. 参考文献
[1]木村,鹿股:命令の追加・変更可能な教育用コ
ンピュータシステムの開,電子情報通信学
会,D-I,Vol.j81-D-I,No.12,pp1241-1248(1998)
[2]木村真也,鹿股昭雄:コンピュータの原理と設
計,日刊工業新聞社、東京(1996)
[3]鹿股昭雄,太田隆:モデルコンピュータに基づ
く比較的大規模なハードウェア/ソフトウェア
設計教育の試み,論文集「高専教育」第30
号,pp.377-382(2007)