コンピュータアーキテクチャ 第 5 回
サブルーチン プログラムのある機能ブロックを分割統治する 利点 書式 必要に応じて呼び出す プログラムの 全体の 設計・検証・保守の容易化 同じプログラムブロックを何度も書かなくてすむ 書式 呼び出し側プログラムと同様 サブルーチン名:START 命令の前のラベル 設計・検証・保守の容易化 * プログラムサイズをコンパクト化 *
コール,リターン命令 CALL adr, x ・・・ (CALL subroutine) RET ・・・ (RETurn from subroutine) CALL 命令: プログラムレジスタ PR へ実効アドレス値を格納 実効アドレス ⇒ サブルーチンの先頭番地 サブルーチンの実行が終了したときの戻り番地を確保 RET 命令: PR へ戻り番地を格納 サブルーチンへ制御を移す * 呼び出しプログラムへ制御を戻す *
サブルーチン命令におけるスタック操作 呼び出しプログラムの戻り番地の記憶場所は? ⇒ スタックへプッシュダウン サブルーチンから別のサブルーチンが呼ばれたときの 戻り番地の記憶場所は? CALL 命令で呼び出しプログラムの戻り番地を自動格納 RET 命令で呼び出しプログラムの戻り番地を自動取出し SP (スタックポインタ)も自動更新 スタックへプッシュダウン * スタックへさらに積み上げ(プッシュダウン) *
ユークリッドの互除法 ~プログラム 11 のアルゴリズム~ *
メインプログラム GCD (CaslBuilder に対応して ラベル LOOP*, QUIT* を変更)
サブルーチン EUCLID, MOD (ラベル LOOP*, QUIT* を変更)
プログラム 11 の処理の流れ (a) * * *
プログラム 11 の処理の流れ (b) * * * *
プログラム 11 の処理の流れ (c) * * * *
プログラム 11 の処理の流れ (d) * * * *
演習問題 5.1 割り算 5÷2, 11÷3, 100÷7, 1000÷33, 20000÷100 を実行し,それぞれの商をラベル DIV ではじまるメモリ領域に,それぞれの余りをラベル MOD ではじまるメモリ領域に格納するプログラム DIVRPT を記述せよ.ただし,サブルーチン命令を使うこと.さらに,このプログラムをハンドアセンブルせよ. 演習問題 5.2 COMETⅡの38個の命令を,2ワード命令と1ワード命令,およびメモリ・レジスタ間命令とレジスタ間命令の視点から分類せよ.
アーキテクチャについての視点 2 章:機械語(アセンブリ)プログラマの視点 3 章/ 4 章:コンピュータ設計者の視点 COMETⅡの機械語とアセンブリ言語の仕様 想定されるハードウェアのモデル 汎用レジスタ メモリ プログラムレジスタ スタックポインタ フラグレジスタ 3 章/ 4 章:コンピュータ設計者の視点 機械語プログラマからは見えないハードウェアもあり それぞれの * は何か? どのような * で動作するのか? どのように * するのか? 演算部と制御部に区分 機能 タイミング 実装
コンピュータ設計者が見るハードウェア 算術論理演算ユニット (ALU: arithmetic logic unit) ...算術演算,論理演算 シフタ (shifter) ...シフト演算 命令レジスタ (IR: instruction register) ... * を格納 命令解読装置(デコーダ) ...命令レジスタの命令を * 制御信号生成回路 ...演算部やメモリに * や動作の * をあたえる メモリアドレスレジスタ (MAR: memory address register) ...メモリの * を格納 メモリデータレジスタ (MDR: memory data register) ...メモリとのデータのやり取りのための * として機能 データ選択/転送回路 ...レジスタ選択回路や * など 機械語命令を表すビット列 解読 機能選択信号 タイミング アクセスアドレス バッファ(buffer) バス(bus)
コンピュータ設計者が見るハードウェア 命令の実行例: ADDA GR1,#1000 *
3 章/ 4 章の目的 3 章: 演算部の基本的な構成と動作原理および 設計の概要について知る. 4 章: 制御部の動作と設計の概要を知る. 演算部 = * ALU, シフタ, レジスタ, データ転送路からなる COMETⅡを想定 各部の実装方法 メモリへのアクセス方法 データの転送方式と制御 4 章: 制御部の動作と設計の概要を知る. 制御部 = * 命令デコーダ,制御信号生成回路からなる データパス(data path, データの通り路) コントローラ(controller)