Ibaraki Univ. Dept of Electrical & Electronic Eng.

Slides:



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

基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第2週目
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機システムⅡ 命令セットアーキテクチャ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
プログラムはなぜ動くのか.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
ディジタル回路の設計と CADによるシステム設計
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
Ibaraki Univ. Dept of Electrical & Electronic Eng.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
プロセッサ設計支援ツールを用いた 独自プロセッサの設計
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
Presentation transcript:

Ibaraki Univ. Dept of Electrical & Electronic Eng. 2011. 5.23 電子計算機工学 Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA

基本命令セット   アーキテクチャ

基本アーキテクチャ コンピュータシステムの論理的構造を示す言葉 コンピュータのハードウェアやソフトウェア構成の考え方や、プロセッサの命令セット(instruction set)等を指す

基本アーキテクチャ コンピュータのハードウェアやソフトウェア構成の考え方や、プロセッサの命令セット(instruction set)等を指す マシン命令(machine instruction)の集合 コンピュータアークテクチャ 命令セットアークテクチャ (instruction set architecture : ISA)

・・・ デジタル情報 デジタル情報 コンピュータで扱える形式の情報 アナログ情報 時間経過とともに変化する情報   コンピュータで扱える形式の情報 アナログ情報   時間経過とともに変化する情報     コンピュータで扱うために標本化を行い     デジタル情報に変換する。 量 子 化 標本化 時間 ・・・

コンピュータ内部での容量の単位 コンピュータ内部では0と1の2進数(バイナリ(binary))しか取り扱えない。 ビット bit 2進一桁 バイト  byte  1バイト=8bit ワード  word 語 通常は4バイト(32              ビット)を意味する。  各コンピュータで扱えるデータ  の容量をさす場合もある。 プロセッサアーキテクチャー 命令語 (プログラム)   マシン語(マシン命令)  データ   計算や処理の対象となる情報

命令とデータ 命令 (プログラム) マシン語(マシン命令) 今実行している命令のアドレスを格納しておく場所:プログラムカウンタ データ 命令 (プログラム)   マシン語(マシン命令)    今実行している命令のアドレスを格納しておく場所:プログラムカウンタ       データ   計算や処理の対象となる情報   データのメインメモリアドレスを記憶する装置:メモリアドレスレジスタ(MAR)

命令形式 命令語の構成要素 ・命令コード 命令の種類を示す ・オペランド データの格納場所 などを示す情報 命令コード オペランド 命令とデータ 命令形式 命令語 (プログラム)   マシン語(マシン命令)  データ   計算や処理の対象となる情報 命令語の構成要素  ・命令コード 命令の種類を示す  ・オペランド データの格納場所          などを示す情報 命令コード オペランド オペランド 4バイト(32ビット)長命令形式が多いが、 大型計算機では、8バイト長(64ビット)もある。

オペランド オペランド ・ソースオペランド (ソースアドレス) ・デスチネーションオペランド (デスチネーションアドレス) SRC1 SRC2 オペランド   ・ソースオペランド     (ソースアドレス)   ・デスチネーションオペランド     (デスチネーションアドレス) 対象となる格納場所   ・メインメモリ   ・レジスタ 処理・演算 DEST 命令例 ADD A,B  ・AレジスタとBレジスタの値を加算してAレジスタへ格納せよ 命令コード オペランド オペランド

オペランド数による命令形式の分類 (1) 3アドレス形式 命令コード オペランド オペランド オペランド (2) 2アドレス形式 命令コード (1) 3アドレス形式 命令コード オペランド オペランド オペランド ADD A,B,C  ・AレジスタとBレジスタの値を加算してCレジスタへ格納せよ  (R-R-R形式の例) (2) 2アドレス形式 命令コード オペランド オペランド ADD A,B  ・AレジスタとBレジスタの値を加算してAレジスタへ格納せよ  (R-R形式の例)

オペランド数による命令形式の分類 (3) 1アドレス形式 命令コード オペランド (4) 1・1/2アドレス形式 命令コード オペランド (3) 1アドレス形式 命令コード オペランド SRC1 SRC2 opr1 AC OP DEST ADD B  ・アキュムレータの値とBレジスタの値を加算してアキュムレータへ格納せよ (4) 1・1/2アドレス形式 命令コード オペランド オペランド ADD A,メモリアドレス等  ・AレジスタとBレジスタの値を加算してAレジスタへ格納せよ  (R-M形式の例) オペランドの一方は必ずレジスタを指定すること

オペランド数による命令形式の分類 (5) 0アドレス形式 命令コード オペランド (5) 0アドレス形式 命令コード オペランド オペランドを“スタック”という一方向のみからアクセスする特殊な格納装置として暗黙指定しておくことで、オペランドを明示する必要がない命令形式 SRC1 SRC2 OP SRC1 DEST SRC2 OP スタックマシン

固定長命令と可変長命令 コスト高 (1) 命令長固定・オペランド数固定 命令でコードステージの高速化 順序制御用ハードウェアの簡素化 (1) 命令長固定・オペランド数固定 コスト高 命令でコードステージの高速化 順序制御用ハードウェアの簡素化 (2) 命令長可変・オペランド数固定 ハードウェアコストをある程度おさえながら命令種類の多種多様化が図れる (3) 命令長可変・オペランド数可変 多種多様な高機能命令を実現するための柔軟性を確保できる

アドレス指定方式 絶対アドレス指定方式(absolute addressing): メモリのアドレスを指定 直接アドレス指定 間接アドレス指定 レジスタアドレス指定 レジスタ間接アドレス指定

アドレス指定方式 直接アドレス指定方式(direct addressing): メモリのアドレス(実効アドレス:命令が実際にアクセスするためのアドレス)を直接指定 命令コード オペランド1 メモリ アドレス 高速なアクセスが可能。 オペランドの位置が変更された場合、オペランド部を書き換える必要がある。

アドレス指定方式 間接アドレス指定方式(indirect addressing): オペランドの値が指定したメモリのアドレスの内容が、実効アドレスとなるアドレス指定 メモリ 命令コード オペランド1 A アクセス時間が延びる。 容易にアドレス指定を変更可能 A

アドレス指定方式 レジスタアドレス指定方式(register addressing): 直接アドレス指定方式において、アクセスの対象がレジスタの場合 命令コード オペランド1 レジスタ 高速なアクセスが可能

アドレス指定方式 レジスタ間接アドレス指定方式: アドレスA 間接アドレス指定方式において、実効アドレスがメモリではなくレジスタに存在する場合 命令コード オペランド1 メモリ レジスタ アドレスA A レジスタを用いて間接的にアドレスを指定しているので、メモリを用いた場合よりもアクセス時間が短い

アドレス指定方式 相対アドレス指定方式(relative addressing): アクセス対象のメモリの先頭アドレス:ベースアドレス(base address) ベースアドレスとベースアドレスからの距離のようなもの(displacement)を加算して、実行アドレスとなるアドレスの指定を行う インデックスアドレス指定 ベースアドレス指定 ベースインデックスアドレス指定 相対間接アドレス指定

アドレス指定方式 + インデックスアドレス指定方式(index addressing): B 命令のオペランドでベースアドレスとインデックスレジスタ(index register)を指定する方式。ベースアドレスとインデックスレジスタの値が加算されてメモリの実行アドレスが決まる 命令コード オペランド1 オペランド2 メモリ インデックスレジスタ A B A+B ベースアドレス +

アドレス指定方式 + ベースアドレス指定方式(base addressing): A 命令のオペランドでベースレジスタ(base register)とディスプレースメントを指定する方式。ベースレジスタにはベースアドレスが格納されており、その値とディスプレースメントが加算されて、実効アドレスが決まる 命令コード オペランド1 オペランド2 メモリ ディスプレースメント B ベースレジスタ A+B A +

アドレス指定方式 + ベースインデックスアドレス指定方式(base index addressing): B A 命令のオペランドでベースレジスタとインデックスレジスタを指定する 命令コード オペランド1 オペランド2 メモリ インデックスレジスタ B ベースレジスタ A+B A +

アドレス指定方式 + 相対アドレス指定方式(relative addressing): B 命令のオペランドでディスプレースメントが与えられ、プログラムカウンタとの加算が実効アドレス 命令コード オペランド1 メモリ A ディスプレースメント A+B プログラムカウンタ B +

アドレス指定方式 イミーディエイトアドレス指定方式(immediate addressing): 命令のオペランド値そのものがアクセス対象のデータ 命令コード オペランド データとして直接演算装置へ レジスタに定数を格納する。 メモリからオペランドを読み出す必要がないので高速に実行

データ形式については後日、述べる。

命令サイクル プロセッサへの命令はどのように実行されるか? 命令の読み出しから演算実行までの一連の処理の繰り返しを命令サイクルという。   ・命令の取り出し(フェッチfetch)     プログラムカウンタの更新   ・命令のデコード     命令形式が複雑な場合この部分(ステージ)が長くなる   ・オペランド(処理データ)の取り出し(フェッチfetch)   ・演算実行   ・結果の格納 基本的には上記の繰り返し ・次命令アドレス決定    プログラムの分岐があるときに使用する

命令セット データ転送命令: プロセッサの性能に関わるもっとも基本的なアーキテクチャ メモリからレジスタへ ロード(load)命令 レジスタからレジスタへデータを転送したり、レジスタとメモリ間のデータを制御する命令 メモリからレジスタへ ロード(load)命令 (b) レジスタからメモリへ ストア(store)命令 (c) 転送元と転送先を入れ替える 交換(exchange)命令 (d) スタックにデータを入れる プッシュ(push)命令 (e) スタックからデータを取り出す ポップ(pop)命令

命令セット 演算命令: 算術演算命令 (b) 論理演算命令 加減乗除、大小比較、データを+1するインクリメント(increment)、ー1するディクリメント(decrement)命令など (b) 論理演算命令 論理積、論理和、否定、排他的論理和などの論理演算がビットごとに行われる

命令セット 演算命令: ・ ・ ・ (c) ビット列操作命令 フォーマット変換命令 算術シフト、論理シフト、循環シフトの各命令がある      ・ ・ ・ 循環シフト命令の例

命令セット 演算命令: (c) ビット列操作命令 コード変換(code conversion)命令 コンピュータ内部で表現されるコード形式を変換、2進数と10進数との間の基数を変換する命令 ビット操作(bit manipulation)命令 データの任意のビットを1にするセット(set)、0にするリセット(reset)、反転(complement)、0か1かを判定するテスト(test)など

命令セット プログラム制御命令: (a) 無条件分岐(unconditional branch)命令 プログラムの実行順序を制御する命令 (a) 無条件分岐(unconditional branch)命令 無条件でオペランドをアドレス変換して、プログラムカウンタに設定 (b) 条件付き分岐(conditional branch)命令 演算の結果、例えば大小関係をキャリフラグ(carry flag)やゼロフラグ(zero flag)を調べることによって判定し、その結果によってプログラムカウンタへ設定するアドレスを変更する。 条件が成立する場合と不成立の場合とで、分岐先が異なる。

命令セット プログラム制御命令: (c) サブルーチンコール(subroutine call)命令 プログラムの途中でサブルーチンが呼び出されて実行されると、呼び出した元のプログラムへ戻る 戻りのアドレスは、サブルーチンへの分岐命令の次の命令 戻る時はリターン(return)命令 (d) システムコール(system call)命令 実行中のユーザのプログラムから、オペレーティングシステムに制御を移す。

命令セット システム制御命令: 入出力装置の動作の起動を開始 START I/O 入出力装置の状態を確認 TEST I/O 起動を停止 HALT I/O プログラム状態レジスタのセット/リセット システムの環境を操作する命令で、特に特権命令(privileged instruction)とも呼ばれる

命令セット コンディション: 算術演算の派生データ オーバーフロー、桁上げ、ゼロ除算等、正負 論理演算データの結果 フラグ 実行結果の結果によるコンディション。条件分岐命令の条件として 使用する。 算術演算の派生データ   オーバーフロー、桁上げ、ゼロ除算等、正負 論理演算データの結果 フラグ コンピュータのハードウェアの状態

ハードウエアとシステムプログラム 命令セットアーキテクチャーはハードウエアとソフトウエアの機能分担 の境界線 命令セットを設計することは、ハードウエア/ソフトウエアのトレードオフを 設計すること。 ただし、ソフトウエア互換性を十分考慮しなければならない。

システムプログラム プログラミング言語処理ソフト・・・ コンパイラなど オペレーティングシステム(OS) プログラミング言語処理ソフト・・・ コンパイラなど オペレーティングシステム(OS) コンピュータアーキテクチャーを設計する作業とは、   コンパイラやOSとハードウエアのトレードオフ(機能分担)を考えること。

設計者が考慮すべき事項 ・マシン命令形式 ・アドレス指定モード ・データ型とその内部表現方式 ・命令セットアーキテクチャー

OSとのインターフェース ・プロセッサ管理  ・メモリ管理 ・入出力処理 ・割り込みや例外の処理 ・実行制御

プログラミング言語の処理 プログラムとマシン語のギャップを埋める機能。 コンパイル プログラムの実行に先立ってマシン命令列に翻訳しておくこと。 コンパイル時の最適化処理によって、ハードウエアの機能を 最大限に引き出すことができる。

インタープリタ プログラムを直接解釈して直ちに実行していく方式。 インタプリタはあらかじめシステムプログラムの一部として 組み込んでおく。

実行時コンパイル 中間言語までコンパイルしておき、実行時にコンパイルしながら、 実行していく言語処理方式。                      ・・・ジャストインタイムコンパイル 変更のあった部分など、必要部分だけ実行にコンパイルする インクリメンタルコンパイルもこの方式の一部。

RISCとCISC RISC (reduce instruction set computer) プロセッサをLSI化するとき RISC (reduce instruction set computer) 基本的な命令セットのみに限定することにより、処理回路の単純化と高速な処理を実現。 命令機能が制限されているので、プログラムのステップ数が増加。 (モトローラ68000系など) ゲーム機などはこちらが使われる CISC (complex instruction set computer) 多数の複雑な命令も処理できる機能を有する。 回路が複雑化→コスト高・命令の解読に時間 (インテル Coreシリーズなど) 現在のパソコンはほとんどがこちら

命令機能の評価指標 TPI (平均命令実行時間) TPI = TPC × CPI TPC (マシンサイクル時間) プロセッサを評価するとき TPI (平均命令実行時間) 1命令の平均実行時間(秒) TPI = TPC × CPI TPC (マシンサイクル時間) 1マシンサイクル(クロック)何秒か? CPI (平均命令実行サイクル数) 1命令を平均何マシンサイクル(クロック)で実行できるか? RISCは意図的にCPIを小さくしている。 CISCはCPIがRISCに比べて大きくなる

本日のまとめ 基本命令セットアーキテクチャ ソフトウェアの構成要素 命令形式 アドレス指定方式 命令実行サイクル 基本命令セット デジタル情報、2進数とコンピュータ内部での容量 命令形式 命令、オペランド、オペランドと命令形式 アドレス指定方式 命令実行サイクル 基本命令セット ハードウェアとシステムプログラム

本日の課題 1 基本命令セットについて、それぞれの命令機能を実現するハードウェア機構の複雑さ順に並べて説明せよ。 2.CPUのアーキテクチャの視点からRISCとCISCを比較し、その特徴を述べよ。 (H15年春期 改題)

本日の課題 2 LD A, 100 LD B, 200 ADD A, B HALT 番 地 内 容 100 101 102 : 200 番 地 内 容 100 101 102 : 200 201 202 300 301 302 203 303 411 412 413 3.以下に記号語(アセンブラ言語)によるプログラムとメモリの内容を示す。(1)~(3)の各方式によるプログラム実行後のレジスタA,Bの値を示せ。ただし、数値は全て10進数とする。 LD A, 100 LD B, 200 ADD A, B HALT (1) イミーディエイト方式 (2) 絶対アドレス指定方式の直接アドレス指定方式 (3) 絶対アドレス指定方式の間接アドレス指定方式