坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

CPU設計と パイプライン.
2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
Ibaraki Univ. Dept of Electrical & Electronic Eng.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
2012年度 計算機システム演習 第4回 白幡 晃一.
ソフトウェアを美味しく 解析する方法 Security Ark
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
2006年度 計算機システム演習 第4回 2005年5月19日.
第4回目 2006/05/08.
ソフトウェアとのインターフェース.
計算機システムⅡ 命令セットアーキテクチャ
プログラミング論 II 電卓,逆ポーランド記法電卓
第4回放送授業.
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
プログラムはなぜ動くのか.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
第3回目 2006/05/01.
型付きアセンブリ言語を用いた安全なカーネル拡張
アドバンスト コンピュータ アーキテクチャ 五島.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 補足資料4-1 「メモリと配列」
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
ディジタル回路の設計と CADによるシステム設計
コンパイラ資料 実行時環境.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
08. メモリ非曖昧化 五島 正裕.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
プログラミング 3 スタックとキュー.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
アルゴリズムとプログラミング (Algorithms and Programming)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
ポインタとポインタを用いた関数定義.
ガイダンス 電子計算機 電気工学科 山本昌志 1E
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
コンピュータアーキテクチャ 第 5 回.
コンパイラ 第12回 実行時環境 ― 変数と関数 ― 38号館4階N-411 内線5459
アルゴリズムとデータ構造 2010年6月17日
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
Presentation transcript:

坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科 工学部講義 マイクロプロセッサ応用(3) 坂井 修一  東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科 はじめに 講義概要 アドレス指定方式 サブルーチン マイクロプロセッサ応用

はじめに 本講義の目的 時間・場所:火曜日 8:30 - 10:00、3-31 ホームページ(坂井分:ダウンロード可能) 教科書・参考書 マイクロプロセッサのハード・ソフトの基本を実践的に学習する 前半:講義 坂井 (ソフトの基本:機械語プログラミング) 三田先生(ハードの基本) 後半:実習 時間・場所:火曜日 8:30 - 10:00、3-31 ホームページ(坂井分:ダウンロード可能) url: http://www.mtl.t.u-tokyo.ac.jp/~sakai/micro/ 教科書・参考書 Patterson and Hennessy: Computer Organization and Design:The Hardware/Software Interface 2nd Ed. (邦訳 「コンピュータの構成と設計」(第2版)日経BP) マイクロプロセッサ応用 東大・坂井

講義の概要と予定(坂井分) 1.マイクロプロセッサのモデルと命令 2.命令とプログラム 3.アドレス指定方式 4.入出力、例外処理等 アドレス指定方式、サブルーチン 4.入出力、例外処理等 5.課題出題 2月15日: 坂井分課題レポート提出期限(仮) マイクロプロセッサ応用 東大・坂井

3.アドレス指定方式 オペランド(operand) アドレス指定方式(addressing) アドレス指定方式の大別 命令の対象 ソースオペランド: 被演算データ デスティネーションオペランド:結果データ アドレス指定方式(addressing) オペランドを特定する方式のこと アドレス指定方式の大別 即値: 「アドレス」でなく「値」でオペランドを指定 アドレス指定 レジスタアドレス指定:直接アドレッシング(のみ) rs, rt, rd:命令のフィールドがレジスタアドレスを表す メモリアドレス指定: 次のスライド マイクロプロセッサ応用 東大・坂井

3.1 メモリアドレス指定 RISCとCISC RISC: メモリアドレス指定方式の種類は少ない 3.1 メモリアドレス指定 RISCとCISC RISC: メモリアドレス指定方式の種類は少ない load/store以外には、メモリの中身をオペランドとすることはない load/storeのアドレス指定 ベース相対モード: address = rs + dpl インデクス相対モード: address = rs + rt (+dplはないのが普通) PC相対モード:address=pc+dpl (分岐命令で用いる) CISC: メモリアドレス指定方式の種類が多い 一般の演算命令がメモリの中身をオペランドとすることができる アドレス指定 直接モード: address = dpl レジスタ間接モード:address = rs ベース相対モード: address = rs + dpl インデクス相対モード: address = rs+rt+dpl スケールインデクスモード: address = rs+rt*scl+dpl メモリ間接モード:address= (rs)+dpl 自動インクリメントモード:address = rs++ + dpl etc. マイクロプロセッサ応用 東大・坂井

アドレス指定方式の図解 OP rs rt dpl OP rs rt dpl + PC (a)直接モード (d)PC相対モード OP rs * SCL + rs rs (b)ベース相対モード (e)スケールインデクスモード OP rs rt dpl OP rs rt dpl rt + rs rs + (c)インデクス相対モード (b)メモリ間接モード マイクロプロセッサ応用 東大・坂井

3.2 各アドレス指定方式の使い方 ベース相対モード ベース相対モードの用途 3.2 各アドレス指定方式の使い方 ベース相対モード ベース相対モードの用途 ある番地A以後に連続してデータが格納されているときの各データへのアクセス Aをベースアドレスレジスタに入れておいて、各データはここからの変位(相対番地)でアクセスする Base DW 6 DUP #(アドレスBaseを定義する疑似命令) add r2 r0 Base ; r2 <- Base lw r3 0(r2) ; r3 <- x lw r4 4(r2) ; r4 <- y add r3 r3 r4 ; r3 <- r3 + r4 sw r3 8(r2) ; z <- r3 lw r3 12(r2) ; r3 <- u lw r4 16(r2) ; r4 <- v sub r3 r3 r4 ; r3 <- r3 - r4 sw r3 20(r2) ; w <- r3 メモリ ベース アドレス X Y Z U V W マイクロプロセッサ応用 東大・坂井

(注)疑似命令 機械語の命令に対応する命令ではなく、メモリ番地の定義を変数で表すため等に使う見かけ上の命令 X DW     X番地に1語データがある DWは一語の領域の定義(Define Word) Y DW 10 DUP Y番地から10語データがある D UPはduplicate (重複)の略 マイクロプロセッサ応用 東大・坂井

各アドレス指定方式の使い方(続き) インデクス相対モード インデクス相対モードの用途 配列データへのアクセスなど 領域の先頭番地Aaをベースアドレスレジスタ、配列の先頭番地(Aからの相対番地)Amをインデクスレジスタに入れておいて、配列要素はここからの変位でアクセスする メモリ X Y A[0] A[1] ‥ A[9] B[0] B[1] B[9] ベース アドレス Base DW 2 DUP A DW 10 DUP B DW 10 DUP add r2 r0 Base ; r2 <- Base mul r3 r1 4 ; r1 = Iとする lw r4 8(r2, r3) ; r4 <- A[I] lw r5 48(r2, r3) ; r5 <- B[I] add r4 r4 r5 ; r4 <- A[I]+B[I] マイクロプロセッサ応用 東大・坂井

3.3 RISC型アドレス指定方式の拡張性 RISC型にないモードの実現 直接モード インデクス相対モード 他のモード 0レジスタ:値が恒常的に0のレジスタ 例.MIPS: r0=0 rs=0レジスタとすれば、直接モードになる インデクス相対モード ベース+インデクスの値を別のレジスタに入れておけばよい 潤沢なレジスタ資源を活用する! 他のモード 複数の命令に展開する スケール: アドレスの入っているレジスタの値を定数倍 RISC型は、アドレス指定方式の種類が少なく、複雑なアドレス指定は命令の組合せで実現する。 よく使うアドレス指定だけを用意し、単純化の利点を活かして高速化することで、全体の処理を高速化する マイクロプロセッサ応用 東大・坂井

3.4 アドレス空間 セグメント化アドレス方式 仮想記憶、記憶保護 語長16ビット以下の計算機 3.4 アドレス空間 セグメント化アドレス方式 語長16ビット以下の計算機 「語 = アドレス」では、アドレス空間が狭い(64KB) → セグメントレジスタを用意し、その中身と16ビットアドレスと足しあわせる 8086:論理空間 1MB 80286: 仮想記憶 → 論理空間 1 GB 80386: 32ビット化 → 論理空間 64TB セグメント 4GB 32ビット全空間をセグメントを切り替えずにアクセスできる (リニアアドレス) 仮想記憶、記憶保護 (田中英彦先生講義) マイクロプロセッサ応用 東大・坂井

4.サブルーチン サブルーチン 一般的な手順(機械語レベル) プログラムの中であるまとまった処理をする部分 レジスタ値の待避 Cの関数、Pascalのprocedure、FORTRANのsubroutine 引数と返値をもつ 一般的な手順(機械語レベル) レジスタ値の待避 戻り番地(次の命令番地)の待避 サブルーチンの先頭番地へのジャンプ サブルーチン本体の実行 戻り番地へのジャンプ レジスタ値の復帰 もとの命令列の実行再開 本方式は、レジスタ値を呼び出し側が待避するので、 Caller Save方式と呼ばれる マイクロプロセッサ応用 東大・坂井

4.1 サブルーチンの実現 スタックを用いる スタック(Stack): Last In First Out (LIFO)型のデータ構造 4.1 サブルーチンの実現 スタックを用いる スタック(Stack): Last In First Out (LIFO)型のデータ構造 通常はメモリの領域を使う スタックポインタ(SP): スタックの一番上を指すレジスタ サブルーチンを呼び出すときは、待避するデータをスタックに積み上げる(PUSH) サブルーチンから復帰するときは、待避したデータをスタックから読み出す(POP) New SP P → Q → Rの順で サブルーチンが呼ばれた とき PUSH POP Q Old SP P SP: Stack Pointer スタック マイクロプロセッサ応用 東大・坂井

4.2 サブルーチンのプログラム sw r1 0(sp) ; レジスタ値の待避(必要なだけ)始め sw r2 4(sp) ....... 4.2 サブルーチンのプログラム sw r1 0(sp)    ;   レジスタ値の待避(必要なだけ)始め sw r2 4(sp) ....... sw rk 4k(sp)    ;   レジスタ値の待避終わり add sp 4k+4 call address sub sp 4k+4 lw r1 0(sp)    ;   レジスタ値の復帰始め lw r2 4(sp) ..... lw rk 4k(sp)    ;   レジスタ値の復帰終わり もとの仕事の続き ............. body of subroutine ...... ret call: 戻り番地をスタックに積んで、addressへ   ジャンプ ret: スタックから戻り番地をPCに戻す address: 注. 戻り番地の待避は特定のレジスタ上にしてもよい。 この場合、ひとつ前の戻り番地をスタックに積む マイクロプロセッサ応用 東大・坂井