力装置はじめに マイクロプロセッサ ( 第 回 ) 担当 : 佐竹純二 情報 知能工学系学生実験サイト http://www.cs.tut.ac.jp/jikken/ 実験の説明資料などは Web 上で公開中 http://www.aisl.cs.tut.ac.jp/~satake/class/ 実験レポートの受け取りはMoodle 上で行う https://moodle.imc.tut.ac.jp/course/view.php?id=285 登録キーは satake23 実験レポートは PDF ファイルで提出すること 2 日程 (p.27 参照 ) 第 回イントロダクション ( 課題 3. 加算 ) 第 3 回応用プログラミング ( 課題 3.3 図形描画, 課題 3.4() メロディ ) 第 2 回基本プログラミング ( 課題 3.2 乗算 ) 第 4 回応用プログラミング ( 課題 3.4(2) メロディ ) コンピュータの利用 出力 ユーザ どのような仕組みで動いているのか? 入力 第 2 回以降は予習 ( プログラムの準備 ) が必須 コンピュータ 3 4 コンピュータ ハードウェア入コンピュータ ソフトウェア入記憶装置処理装出力装置置グムラム6 力装置アプリケーションプロ置記憶装置処出力装システムプログラ理装置5
ンパイラよるプログラムコンパイラよるプログラムコ疑問 ( 今のところの ) 回答 処理装置 (CPU) はプログラム ( ソフトウェア ) をどのように解釈しているのか? コンパイラ, アセンブラと呼ばれるプログラムを変換するプログラムを使う 高級言語によるプログラム 機械語によるプログラム 高級言語によるプログラム アセンブリ言語に 機械語によるプログラム 7 8 ことばの整理 : 機械語 ことばの整理 : 高級言語 CPU が直接理解し実行できる言語のこと プログラムは と の列から構成される CPU ごとに異なる 人間が使いやすいプログラミング言語 C,C++,Java,Perl など CPU ごとに異ならない ( 共通 ) 高級言語によるプログラム アンセパンイブララアセンブリ言語に機械語による高級言語によるアセンブリ言語に機械語によるプログラムプログラムよるプログラムコプログラム アセンブラ9 アセンブことばの整理 : アセンブリ言語 ことばの整理 : コンパイル 機械語を人間にわかりやすくした言語 命令が機械語と ( ほぼ ) 対 に対応 CPU ごとに異なる 高級言語によるプログラム ンパイラよるプログラムコアセンブリ言語に ランパンイブラララ 高級言語によるプログラムを アセンブリ言語によるプログラムに ( または機械語によるプログラムに ) 翻訳すること 機械語による高級言語によるアセンブリ言語に機械語によるプログラムプログラムよるプログラムコプログラム アセ 2 アセンブ
ンパイラよるプログラムコことばの整理 : アセンブル この実験の流れ アセンブリ言語によるプログラムを機械語によるプログラムに翻訳すること. アセンブリ言語によるプログラミング 2. 作成したプログラムのアセンブル ( 手作業 ) 3. 実行 ( 動作の理解 ) 高級言語によるプログラム アセンブラアセンブリ言語に機械語によるアセンブリ言語に機械語によるプログラムプログラム 4 よるプログラムアセンブラ5 3 この実験で用いるハードウェア KUE-CHIP2 の構造 (p.6 図 ) KUE-CHIP2 教育用の8ビットマイクロプロセッサ CPU 8 ビット = バイト 3h 6 進数であることを示す他にも 3H,x3 など 6 KUE-CHIP2 の各部 : バス KUE-CHIP2 の各部 :ALU 入力バス : 入力部分と CPU 内部を結ぶ 出力バス : 出力部分と CPU 内部を結ぶ 演算ユニット (Arithmetic and Logic Unit) 算術演算, 論理演算, アドレスの計算を行う 7 8
KUE-CHIP2 の各部 :ACC KUE-CHIP2 の各部 :IX アキュムレータ (accumulator) 演算に利用するレジスタ.8 ビット 演算対象, 演算結果を保持 インデックスレジスタ (index register) 演算に利用するレジスタ.8 ビット 演算対象, 演算結果を保持 修飾アドレス指定のときのアドレス修飾にも使用 9 2 KUE-CHIP2 の各部 :FLAG KUE-CHIP2 の各部 :PC フラグレジスタ (flag register) 演算 シフト結果により変化.4 ビット - - - - CF VF NF ZF プログラムカウンタ (program counter) 次に実行する命令のメモリ上でのアドレスを保持.8 ビット 桁上がりフラグ桁あふれフラグ負フラグ p.6 図 2 ゼロフラグ 2 22 KUE-CHIP2 の各部 :MAR KUE-CHIP2 の各部 : 内部メモリ メモリアドレスレジスタ メモリ操作の対象とするアドレスを保持. 8ビット 52 バイト. バイト単位の番地指定 プログラム領域 :~255 番地 データ領域 :256 番地 ~5 番地 5 ~ 256 255 ~ FF FF データ領域 プログラム領域 23 p.7 図 3 24
KUE-CHIP2 のアセンブリ言語 プログラム例 (p.25, リスト 2) 命令の種類 :p.8 表 を参照 言語仕様 : p.29~32 付録 A を参照 機械語フォーマット : バイトか 2 バイト p.7 図 4 を参照 アドレス : 2: 3: 4: データ - --- 命令 OUT RLL 2h ACC 常に の内容を出力バッファの内容を論理左回転し 2 という値を番地へ戻るACCに格納する (OBUF),ACCに入れるに出力する機械語によるアセンブリ言語によるプログラム プログラム アセンブラ LD BA オペランド ACC, h ACC 25 26 アセンブル方法 (/4) p.3,a.2 命令セットを参照 LD ACC,h のアセンブル - A B B = :ACC Rsm A = :ACC A sb = m :IX Rotate sm LD A = :IX A B = -: LoaD 即値 ST A B = : STore 直接 (P) SBC A B = : SuB 直接 with (D) Carry B = : 修飾 (P) アセンブル方法 (2/4) p.3,a.2 命令セットを参照 OUT のアセンブル - - - - - - OUT - - - OUTput IN - - - INput RCF - - - Reset CF - B = : 修飾 (D) 27 28 アセンブル方法 (3/4) p.3,a.2 命令セットを参照 RLL ACC のアセンブル A s m Rsm A = RA :ACC ARight sarithmetically m Rotate sm LD A = LA :IX ALeft Arithmetically B LoaD ST RL ARight BLogically STore SBC LL ALeft Logically B SuB with Carry アセンブル方法 (4/4) p.3,a.2 命令セットを参照 BA 2h のアセンブル c c RCF A -Always - - Reset CF SCF VF -on - overflow - Set CF Bcc NZ c on c Not Zero Branch cc Ssm Z A on s Zero m Shift sm 29 3
プログラム例 (p.25, リスト 2) プログラム例 (p.25, リスト 3) アドレス : 2: 3: 4: データ - --- 命令 LD OUT RLL BA オペランド ACC, h ACC 2h アドレス : 2: 3: 4: データ : 5: 命令 LD OUT RLL BA オペランド ACC, h ACC 2h - は か で置き換える ( どちらでもよい ) アセンブル完了 3 32 プログラムの実行 操作方法の補足 第 2.5 節に沿って行う (p.23~27) 注意点 : 電源器とボードを接続してからコンセントに繋ぐことコンセントは机に固定されたものに繋ぐこと ( 転落防止 ) 電源スイッチ横のコンデンサに指をかけないことプログラムの実行前に RESET を押すこと 全員確認できたら次の説明へ ( 次回からグループではなく一人 台で行う ) SSスイッチで実行 さらにSSスイッチを押すと停止, 再開 CLKFRQのダイヤルを回すと実行速度が変化 RESET SELスイッチを操作してACCを表示 SIスイッチでステップ実行 ( 命令ずつ ) SELスイッチを操作してPCを表示 SIスイッチでステップ実行 ( 命令ずつ ) 33 34 命令はどのように実行されるか? 実際に見てみる : リスト (p.2) クロックに沿って実行 クロック 周期分 つの実行フェーズ KUE-CHIP2の各命令は3から5フェーズ P,P: 各命令で共通 P2 以降 : 各命令で異なる p.9 表 2を参照 35 アドレス データ ラベル 命令 オペランド D: EQU 8h D2: EQU 8h ANS: EQU 82h : 64 8 LD ACC,[D] 2: B4 8 ADD ACC,[D2] 4: 74 82 ST ACC,[ANS] 6: F HLT 8: 3 8: FD END プログラムの実行を停止するメモリのプログラム領域 アセンブル結果の D を見たら 8 番地の内容を 6 8h 進表示 だと思う 3ANS D2 D とし番地の番地に, メモリ ACC ( 内容を内容と変数宣言の内容を格納する 8 ACC 番地の内容を, に格納するの内容を加算する初期化のようなもの FDとする) 36
実行のトレース LD ACC,[D] A B Bの部分 p.9 表 2 を参照 実行のトレース LD ACC,[D] ACC IX LD d [d] (d) P P P2 P3 P4 (PC) MAR PC++ (Mem) IR (A) B (PC) MAR PC++ (Mem) A (Mem) MAR (Mem) A : 64 : 8 2: B4... 8: 3 8: FD 37 38 実行のトレース 実行のトレース LD ACC,[D] P: (PC) MAR, PC++ LD ACC,[D] P: (Mem) IR : 64 : 8 2: B4... 8: 3 8: FD 64 : 64 : 8 2: B4... 8: 3 8: FD 39 4 実行のトレース 実行のトレース LD ACC,[D] P2: (PC) MAR, PC++ LD ACC,[D] P3: (Mem) MAR 64 2 : 64 : 8 2: B4... 8: 3 8: FD 64 2 8 : 64 : 8 2: B4... 8: 3 8: FD 4 42
実行のトレース フラグレジスタの働き LD ACC,[D] 3 P4: (Mem) A 64 2 8 : 64 : 8 2: B4... 8: 3 8: FD 桁上がりフラグ (Carry Flag, CF) 演算結果に桁上がりが生じると 桁あふれフラグ (Overflow Flag, VF) 演算結果に桁あふれが生じると 負フラグ (Negative Flag, NF) 演算結果が負になると ゼロフラグ (Zero Flag, ZF) 演算結果がゼロになると p.6 図 2 も参照 43 44 実験課題 3. (p.27) 実験課題 3. 注意 () について 実行開始から実行終了まで, 観測可能なレジスタ, バスをトレース (2)~(6) について ADD 開始前から ADD 終了後まで, フラグレジスタのみをトレース ADD 命令を ADC 命令に変更して, ADC 開始前から ADC 終了後まで, フラグレジスタのみをトレースそれぞれの加算結果も確認 記録すること リスト を利用 6 進数 64,2 進数では? 8 番地に値を入れるには, まず MAR を操作 毎回, まず計算結果を確認 ( 記録 ) すること 6 と b の読み間違いに注意 負の数は 2 の補数表現 + 3-3 45 46 検討事項のポイント 次回 () について 各命令の各フェーズでの動作についてテキスト p.8~22 を参考に図などを使いながら文章で説明すること レポート作成補助 : 図や資料のデータを配布中 http://www.aisl.cs.tut.ac.jp/~satake/class/ (2)~(6) について 各フラグがどのような時に変化するのか, ADD 命令とADC 命令の違いもまとめること 実験課題 3.2 乗算プログラムの作成 符号なし2バイト精度の2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 8h 83h 85h 必須の予習 : プログラムの作成とアセンブル 8h 82h 84h 47 48
補足 : 符号無し 2 バイトの乗算 補足 : アドレスモード MSB: 最上位ビット LSB: 最下位ビット バイト = 8ビット メモリ上での順序に注意 オペランド ( 引数 ) の表現方法のこと KUE-CHIP2 のアドレスモード (p.29~3 参照 ) ACC,IX:ACC,IX の内容がデータ 即値 : オペランドそのものがデータ 直接 : オペランドがメモリのアドレスそのアドレス上の内容がデータ 修飾 : オペランド +IX の内容 がメモリのアドレスそのアドレス上の内容がデータ 49 5 補足 : 命令について (p.8) 注意点 ADD: 加算命令 CFを考慮しない ADC: 加算命令 CFを考慮する ( 減算も同様 ) RCF:CF をリセットする 必ずプログラムを準備してくること! 次回からは各自 ( 一人一台 ) で実験を進めるすぐに開始できるように ( 機械語プログラム ) まずはフローチャートを作成すること授業開始時 ( 入力中 ) に問題がないか確認する プログラムとフローチャートは別の紙に 遅刻や準備不足に対する救済は行わないできなかった分は減点, 最悪の場合は不受理 5 52 フローチャートの例 2 バイトの加算の例 バイトの乗算 A B C プログラムの流れを日本語で図示する 初期化 C 終了判定 B=? N C に A を足す C+A C B を 減らす B- B Y 終了 HLT + A A2 B B2 C C2 CF 繰り上げ 加算 CF A2 + B2 + C2 A + B + CF C 終了 HLT RCF LD ADC ST LD ADC ST HLT ACC, [A2] ACC, [B2] ACC, [C2] ACC, [A] ACC, [B] ACC, [C] 53 54
プログラム作成時の注意点 よくある間違い 他人が見て分かるように書くこと 必ず紙に手書き or 印刷してくること 紙の両面を使わない : 2 RCF アセンブリ言語と : 64 8 LD ACC, [A2] 機械語は横に揃える 3: 94 82 ADC ACC, [B2] 修正用のスペースも 5: 74 84 ST ACC, [C2] 用意しておく 機械語は 2 進 6 進のどちらでも良いが, 6 進数なら確認しやすい 7: 64 8 LD ACC, [A] 9: 94 83 ADC ACC, [B] B: 74 85 ST ACC, [C] D: 8 HLT 2バイトのデータの取扱い上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令とADC 命令 CFのリセット 終了判定の誤り LD ではZeroFlagは立たない データの保存 (ST) のし忘れ アドレスが 6 進数ではなく 進数になっている 8h 83h 85h 8h 82h 84h 55 56 第 2 回 マイクロプロセッサ ( 第 2 回 ) 実験課題 3.2 乗算プログラムの作成 符号なし2バイト精度の2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 必須の予習 : プログラムの作成とアセンブル 57 58 よくある間違い ( 再確認 ) 進め方 2 バイトのデータの取扱い上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令と ADC 命令 CF のリセット 終了判定の誤り LD では ZeroFlag は立たない データの保存 (ST) のし忘れ アドレスが 6 進数ではなく 進数になっている 入力ミス, アセンブルの誤り 8h 83h 85h 8h 82h 84h 各自の作成したプログラムを入力入力中にフローチャートをチェック早く終わった人は他の人をサポート ホワイトボードの ()~(4) で動作確認 それらが正しく計算できたら (A) と (B) を計算. 実行時間を計測 ホワイトボードに実行時間とプログラムのメモリ消費量 ( 単位 : バイト ) を記入プログラム部分 + データ格納部分 59 6
実行時間の理論値 自分のプログラムについて実行時間の理論値を求め, 実測値と比較せよ手順 ) 実行時間を決めるパラメータを特定 各命令のフェーズ数 (p.9 表 2) フェーズ = クロック周期 クロック周波数 = Hz 手順 2) 実行時間を求める計算式を導出手順 3) 式から (A),(B) の実行時間理論値を算出手順 4) 理論値と観測値の比較 検討事項のポイント 使用したプログラムのリストを載せ, フローチャートを用いて説明せよ 他の人のプログラムと比較 論点 : 実行時間 ( 実測値で可 ) 論点 2: プログラムのメモリ消費量 注意 : 他の人のプログラムは掲載不要だが, 簡単な説明は記述すること 6 62 次回 (p.28) オシロスコープへの文字の出力 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4() メロディーの出力予習 : 軽く目を通しておく ( 付録 B. も ) 電卓を持参すること 出力バッファに DA コンバータを付けて出力信号をオシロスコープへ DA コンバータ : ディジタル信号をアナログ信号に変換する回路 DA コンバータ 3 (, の 4 桁の信号 ) (6 段階の値 ) 63 64 取り付ける DA コンバータの機能 オシロスコープへの出力 出力バッファの8ビットの中の上位 4ビットを x 座標下位 4ビットを y 座標とする x 座標の取れる範囲は h~fh y 座標の取れる範囲は h~fh F B LD ACC, 6Bh OUT 6 F 65 66
オシロスコープへの出力 注意点 F B 6 F LD ACC, 6Bh OUT 点を つずつ表示 続けて表示すれば全てが同時に表示されるように見える. つの点は として表示され として表示されないので注意 2. ずっと表示されるようにすること ( 図形表示部分を無限ループさせ, 停止させる時は SS ボタンを押す ) 3. オシロスコープの残像に注意 ( 表示点は ジャンプ ではなく 移動 する. そのため, 一筆書きの図形になる ) 4. 座標データを一箇所にまとめ, IX ( 修飾アドレス指定 ) を使うこと 67 68 修飾アドレス指定 余力がある場合 : LD IX, h 2: LD ACC, [IX+8h] IXを~4としてループ 4: ADD IX, h 文字 図形を動かしてみる例 : 右から左 8: 座標 8: 座標 2 82: 座標 3 83: 座標 4 84: 座標 5 まずは固定で完成してから ( 任意の課題は加点対象 ) 69 7 第 3 回 マイクロプロセッサ ( 第 3 回 ) 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4() メロディーの出力予習 : 軽く目を通しておく ( 付録 B. も ) 電卓を持参すること 7 72
注意 進め方 使用する DA コンバータはとても壊れやすいので, 大事に扱うこと ( むやみに触らない ) 特に, 取り付け部分周辺の配線に注意 取り付け & 取り外しは教員 TA が行います 5:4 終了を目処に オシロスコープとDAコンバータを接続 チャンネル 赤 チャンネル2 青 グランド 黒 ダイヤルCLKFRQを にして実行 5:4 頃に次の説明 73 74 メロディーの出力 音とは KUE-CHIP2 から波を出力しスピーカから音を出す 今日 : 音を出す仕組みの基礎 次回 : メロディー出力プログラムの実行 音は空気の振動 ( 波 ) 音の三要素 大きさ 高さ 音色 波の振幅の大きさ 波の周波数の高さ 波の形 スピーカ : 電気信号を音 ( 空気振動 ) に変換する装置 75 76 作る波 方形波 : 長方形の波波の周期 T ( 秒 ) Ta ( 秒 )Tb( 秒 ) T = Ta + Tb On Off 77 音を出すプログラム (p.33 リスト 4) アドレス ラベル 命令 オペランド フェーズ数 : L: LD ACC, FFh 4 2: OUT 4 3: LD ACC, a 4 5: L: SUB ACC, h 4 7: BNZ L 4 9: LD ACC, h 4 B: 自分で OUT 4 C: 決める LD ACC, b 4 E: L2: SUB ACC, h 4 : 2: BNZ BA L2 L 4 4 波の On 部を作る 波の Off 部を作る 78
作る波 : 長さ 実験内容 3.4() p.28 方形波 : 長方形の波 波の周期 T ( 秒 ) Ta ( 秒 )Tb ( 秒 ) Ta = (2+8a)T,Tb = (6+8b)T ( ただし,T = クロック周期 ) On Off (a) オシロスコープでクロック周期を確認 スイッチCLKを中立に ダイヤルCLKFRQの ~8 の周波数を測定 信号はコネクタJP3より出力 (b) リスト 4 の a,b を設定 出力する音の周波数 :44Hz ラ 最適な T,a,b を計算によって定める T = Ta + Tb T = /44 ( 秒 ) Ta = (2+8a)T,Tb = (6+8b)T 最も精度が高くなる T を選択 79 8 実験内容 3.4() p.28 検討事項のポイント (c) 44Hz の音の出力 リスト 4 の入力 CLKFRQ の設定 DA コンバータを通してスピーカから出力 出力音が 44Hz ( 誤差 ±%) であることを計算によって確認 (3) オシロスコープによる文字の出力 プログラムのリストを載せて, プログラムの特徴を説明 修飾アドレス指定について どうやって文字を描画したのか 8 82 検討事項のポイント 検討事項のポイント (4) メロディーの出力 (a) 誤差 ±% の確認 どのように最適な T, a, b を計算したか? 計算過程を記述すること どのように確認を行ったか? 実際に誤差を計算すること 他の精度確認方法は考えられるか (4) メロディーの出力 (b) 精度をより上げるための対策 KUE-CHIP2 だけで対処する場合 ( ソフトウェア上, プログラム上の工夫 ) その他の機器を KUE-CHIP2 に接続する場合 ( ハードウェア上の工夫 ) メロディー出力の基本的なアルゴリズムはそのまま出力周波数を 44Hz に近づける方法 83 84
次回 注意 課題 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2 とリスト 5 (p.33~34) 楽譜データを用意するだけではダメリスト 5 のプログラムに改造が必要 時間内に完成しなかった場合は打ち切りデバッグのサポートはできるが, プログラムが無い場合はサポートできない メロディーの出力は無限に繰り返すこと p.34 表 4 音階の周波数 を参考に オクターブ高い音 周波数が2 倍 休符 はどうすれば実現できるか 音符と休符を判別し, 別処理が必要 同じ音が続くとつの長い音に聞こえる 音と音の間に空白が必要リスト5に改造が必要な部分 最も高周波 低周波な音でも可聴領域を超えない 85 86 メロディー出力プログラム例 ( リスト 5) プログラム領域 : 62 LD ACC, dptr 2: 75 A ST ACC, (dptr) 4: 65 A L: LD ACC, (dptr) 6: 68 LD IX, ACC 7: B2 3 ADD ACC, x3 9: 75 A ST ACC, (dptr) B: A2 8 SUB ACC, dptr2 D: 3 3 BNZ L F: 62 LD ACC, dptr : 75 A ST ACC, (dptr) 3: 67 2 L: LD ACC, (IX+2) 5: 75 C ST ACC, (n3) データ領域のアドレスを指している ( 自分のプログラムに合わせて設定 ) データ領域 : n n2 n3 dptr: ド 3: n n2 n3 レ 6: n n2 n3 音の先頭ミ 9: n n2 n3 ファ C: n n2 n3 ソ F: n n2 n3 ラ 2: n n2 n3 シ 5: n n2 n3 ド 8: dptr2: ( 未使用 ) 9: またはff image 出力 A:?? 音の終わり dptr B:?? n2 C:?? n3 どの音を鳴らすか (3ずつ増える) 実行時に使用 nは音の高さ,n2 n3は長さ (2 重ループ ) 87 マイクロプロセッサ ( 第 4 回 ) 88 第 4 回 検討事項のポイント 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2 とリスト 5 (p.33~34) DA コンバータの取扱いに注意 (4)(c) 各自のデータ表現の特徴 プログラムのリストを載せて説明せよ 例えば, 楽譜 は人間に理解しやすいようにメロディーを表現しているどのような表現なら理解しやすいのか 89 9
検討事項のポイント 検討事項のポイント (4)(d) 作成したメロディー出力法は他の CPU にも流用できるか? 他の CPU の例を つ挙げて考察 挙げた CPU の実行命令フェーズを調べ, それを踏まえて考察 (5) 自分が最も使用している CPU ( または, 有名な CPU) についてそのアーキテクチャを調べてまとめる ( 必須ではない ) レジスタ, 命令セット, メモリ空間の特徴 乗算命令がどのように実行されているか 任意の課題は加点対象 9 92 まとめ 計算機の仕組みについて理解例えば, なぜ 32bit の OS では 4G 以上のメモリが使えないのか? プログラムの作り方やデバッグの練習 高級言語によるプログラム ンパイラよるプログラムコアセンブリ言語に 4G = 4 24 24 24 =2 2 2 2 2 =2 32 アセンブラ機械語によるプログラム 93 実験報告書について 指導書 p.6 をよく読むこと PDF ファイルを Moodle 上で提出すること 表紙は自作のものでも構わない 実験方法について, 指導書を丸写しする必要はない この資料の 検討事項のポイント を参考に 指導書の課題 検討事項の番号に沿ってまとめること 必ず自己点検票をチェック ( 提出は不要 ) 提出〆切は 週間後の 2:3 ( 時間厳守 ) 病気等の例外を除き, 〆切の延長はしない 受理されたものへの改善 修正は可 ( 一週間以内 ) 未完成のもの ( 途中までしかないもの ) は不受理 94