Laboratory Experiments in Computer Science and Engineering (Academic Year 2019, for 3rd grade undergraduate students, Friday, 3–5 periods)
情報・知能工学実験「マイクロプロセッサ」(2019年度,3年次,金曜,3–5限)
本資料の公開ページ: https://expcs.github.io/microprocessor/
Download page: https://expcs.github.io/microprocessor/
This materials are for a theme “Microprocessors” in Laboratory Experiments in Computer Science and Engineering, Toyohashi University of Technology, AY2019.
本資料は,2019年度に行われる豊橋技術科学大学 工学部 情報・知能工学系 情報・知能工学実験「マイクロプロセッサ」の資料です.
In charge of the theme: The first semester: Komei Hasegawa The second semester: Naohiro Fukumura
担当者: 前期: 長谷川 後期: 福村
Materials, 資料
- Slides (English): pdf/ppt
- スライド (日本語): pdf/ppt
- Cover, レポート表紙: pdf/doc
- Self-check list, 自己点検表: pdf/markdown
- Figure of KUE-CHIP2: pdf
- Record sheet for trace results, トレース結果記録用紙: pdf/xls
Notes, 注意事項
- The deadline of the report is 11.59 PM the next Friday of the day of the 3rd lecture.
- You should submit your report by e-mail (fukumura [at] cs.tut.ac.jp).
- The subject of the e-mail should be “[Report] [Your student ID] [Your name]” (e.g., [Report] B123456 Taro Toyohashi).
- Your report should be converted to PDF and be attached. The file name of the PDF should be “[Your student ID]-[Your name].pdf” (e.g., B123456-Taro_Toyohashi.pdf).
- We will send a confirmation mail within 3 days after you submit your report. If you do not receive the confirmation mail, your e-mail could be in my spam mailbox. If you have this situation, visit the fuculty’s room (F-408).
- In order to avoid that your mail is classified as spam, send it via your e-mail address that our university gave you.
- If the file size of your attached file is huge and you can not send it via e-mail, use suitable web services such as Google Drive and Dropbox.
- レポートの締め切りは,第3回の実験が終わった1週間後の金曜日23:59です.
- レポートの受け取りはメールで行います(fukumura [at] cs.tut.ac.jp).
- メールの件名は「[実験レポート] 学籍番号-名前」として下さい.例えば「[実験レポート] B123456-豊橋太郎」.
- レポートはPDFに変換して,メールに添付して下さい.そのとき添付ファイル名は「学籍番号-名前.pdf」として下さい.例えば「B123456-豊橋太郎.pdf」.
- レポート受領後,受領確認メールを3日以内に返信します.3日たっても確認メールが届かない場合は,迷惑メールに振り分けられた可能性があります.そのときは,お手数ですが,F-408を訪ねて下さい.
- できるだけ,学校のメールアドレスを使って送信してください.迷惑メールに入る可能性が減ります.
- PDFの容量が大きくて送信エラーが出る場合は,適切なWebサービスを使って,ダウンロードできるようなリンクを送ってください.
Notes for reports, 検討事項のポイント
- 3.1 (1) Explain the operation in each phase with sentences and figures.
- 3.1 (2)–(6) Discuss the condition for changing each flag.
- 3.1 (2)–(6) Explain the differences between
ADD
andADC
. - 3.2 Explain your program with sentences and flowcharts.
- 3.2 Explain how to compute the theoretical execution time.
- 3.2 Compare the theoretical execution time with actual execution times.
- 3.2 Compare with other programs (at least two) in
- point 1: execution time (either actual time or theoretical time),
- point 2: program size.
- 3.3 Explain how to estimate a and b to generate 440 Hz (A).
- 3.3 Show how to calculate the error between the tone you generated and 440 Hz.
- 3.3 Discuss how to improve the accuracy of the generated notes by software and hardware schemes.
- 3.3 Show your score data and discuss your data expression.
- 3.3 Show another example of processors.
- Option Select a popular or familiar CPU and show its architecture.
- 3.1 (1) 各命令の各フェーズでの動作について指導書pp. 18–22を参考に図などを使いながら文章で説明する.
- 3.1 (2)–(6) 各フラグがどのようなときに変化するのかまとめる.
- 3.1 (2)–(6)
ADD
命令とADC
命令の違いをまとめる. - 3.2 使用したプログラムのリストを載せて,フローチャートと文章を用いて説明する.
- 3.2 実行時間の理論値の計算過程を説明する.
- 3.2 実行時間の理論値と実測値を比較する.
- 3.2 他の人(最低2人)のプログラムを比較,考察する.
- 論点1: 実行時間(実測値,理論値,どちらでも可)
- 論点2: プログラムのメモリ消費量
- 3.3 440 Hz(ラ)の音をだすときの,aとbの計算過程を示す.
- 3.3 設定したaとbによって定まる周波数と理論値440 Hzとの誤差の計算過程を示す.
- 3.3 周波数の精度を向上させるための,ソフトウェア上,ハードウェア上の対策に関して考察する.
- 3.3 楽譜データのデータ表現の特徴を説明する.
- 3.3 他のCPUを挙げて,作成したメロディー出力法がそのCPUで使えるかを考察する.
- Option 具体的なCPUを取り上げ,そのアーキテクチャを調べてまとめる.
Useful information
Example for Problem 3.2
For confirmation
- 0028h * 04CDh = C008h
- 00FCh * 00AEh = AB48h
- 03ABh * 0025h = 87B7h
- 132Dh * 000Bh = D2EFh
For measurement of execution times
- A. 03ABh * 0025h = 87B7h
- B. 0025h * 03ABh = 87B7h
Tips and frequent mistakes
Problem 3.2
- Do not branch with
NF
.NF
flags ifCD-1=CC
.- Branch with
CF
orZF
usingSBC
.
- Do not subtract
1
from the 1st byte of multiplier, when carry over. - If the answer of the examples for confirmation (1) is
2008h
, the 2nd byte of multiplier might be ignored (0028h * 00CDh = 2008h
). - If the answer of the examples for confirmation (1) is
A008h
, carry-up might not work.ADD
might be used forADC
. - If you code the multiplication with bit-shift and the answer of the examples for confirmation (1) is
A848h
, carry-up might not work. - If you have problems, confirm results with simple multipliers such as
0001h
,0002h
,0010h
,0100h
. - Check whether
LD
andADC
work, by displayingACC
and step-executing. - Check whether the loop is operated properly by displaying
PC
. - 加算を繰り返す場合,
NF
で判定していないか(CD-1=CC
でもNF
が立つ.SBC
を使ってCF
かZF
で判定する). - 乗数の繰り下がりの際に,同時に下位桁も-1していないか.
- 確認用例題 (1) の解が
2008h
となる場合,上位桁が反映されていない.0028h * 00CDh = 2008h
- 確認用例題 (1) の解が
A008h
となる場合,繰り上げ(CF
)ができていない.ADC
がADD
になっている. - シフトを用いて確認用例題 (1) の解が
BF08h
,確認用例題 (2) の解がA848h
となる場合も,繰り上げ(CF
)ができていない. - うまく動かない場合,x
0001h
,x0002h
,x0010h
,x0100h
などで動作確認. ACC
を表示しながらステップ実行して,LD
やADC
ができているか確認.PC
を表示しながらステップ実行して,正しくループできているか確認.
課題3.3
- Check whether ‘IX’ increases by 3 for every steps.
- If the output is not
00/FF
, checkACC
betweenLD [image]
andOUT
. The process of branching for rest notes might changeACC
. - If you do not generate any tone, check the loop for
n1
. - If the first tone continued longer time than you expected, check the loop for
n2
andn3
. It might be caused by an endless loop for rewriting orn2
andn3
are too huge. - Debug with setting
1
or2
forn1
,n2
, andn3
. IX
を表示し,3ずつ増えているか確認.- 出力が
00/FF
でない場合,LD [image]
からOUT
の間のACC
の値を確認.特に,その間に休符判定の処理を追加して,ACC
の値が変わっていることが多い. - 全く音がでない場合は,
n1
のループを確認. - 最初の音がずっと続く場合は,
n2
とn3
のループを確認.値を上書きして無限ループになっていたり,単に値が大きすぎる場合もある. - 全く動かない場合は,
n1
,n2
とn3
の値を1
や2
にして,ステップ実行で1行ずつ動作確認.
Execution times and program sizes for Problem 3.2. (References) 課題3.2の実行時間と消費メモリ(参考)
Name | size (bit) | time A | time B |
---|---|---|---|
TK | 424 | 00 min 30 sec | 12 min 41 sec |
TK | 368 | 00 min 24 sec | 09 min 53 sec |
KI | 472 | 00 min 28 sec | 11 min 46 sec |
MK | 368 | 00 min 30 sec | 12 min 42 sec |
YY | 368 | 00 min 23 sec | 09 min 20 sec |
TY | 528 | 00 min 06 sec | 00 min 11 sec |
RY | 376 | 00 min 14 sec | 00 min 14 sec |
RK | 402 | 00 min 42 sec | 17 min 03 sec |
NH | 544 | 00 min 21 sec | 08 min 47 sec |
MS | 368 | 00 min 24 sec | 10 min 02 sec |
RT | 368 | 00 min 24 sec | 09 min 53 sec |
YK | 432 | 00 min 22 sec | 01 min 43 sec |
YK | 536 | 00 min 07 sec | 00 min 12 sec |
UM | 416 | 00 min 31 sec | 12 min 42 sec |
MS | 408 | 00 min 29 sec | 12 min 04 sec |
AS | 328 | 00 min 23 sec | 09 min 22 sec |