1 / 14

マイクロプロセッサ応用 (3)

工学部講義. マイクロプロセッサ応用 (3). はじめに 講義概要 アドレス指定方式 サブルーチン. 坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科. はじめに. 本講義の目的 マイクロプロセッサのハード・ソフトの基本を実践的に学習する 前半:講義 坂井 (ソフトの基本:機械語プログラミング) 三田先生(ハードの基本) 後半:実習 時間・場所: 火曜日 8 :30 - 10:00、3-31 ホームページ (坂井分:ダウンロード可能)

nikkos
Download Presentation

マイクロプロセッサ応用 (3)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. はじめに • 本講義の目的 • マイクロプロセッサのハード・ソフトの基本を実践的に学習する • 前半:講義 • 坂井(ソフトの基本:機械語プログラミング) • 三田先生(ハードの基本) • 後半:実習 • 時間・場所:火曜日 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) 東大・坂井

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

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

  5. 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. 東大・坂井

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

  7. 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 メモリ ベース アドレス 東大・坂井

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

  9. 各アドレス指定方式の使い方(続き) • インデクス相対モード • インデクス相対モードの用途 • 配列データへのアクセスなど • 領域の先頭番地Aaをベースアドレスレジスタ、配列の先頭番地(Aからの相対番地)Amをインデクスレジスタに入れておいて、配列要素はここからの変位でアクセスする メモリ ベース アドレス 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] 東大・坂井

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

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

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

  13. 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 スタック 東大・坂井

  14. 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: 注. 戻り番地の待避は特定のレジスタ上にしてもよい。 この場合、ひとつ前の戻り番地をスタックに積む 東大・坂井

More Related