勉強会その1    2016/4/25 10 8分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行.

Slides:



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

2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
CPU、記憶装置について 情報機器工学 2015年4月20日 Ⅳ限目.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
2012年度 計算機システム演習 第4回 白幡 晃一.
第6回 今日の目標 §2.1 コンピュータ コンピュータの五大機能を示せる プログラム内蔵型コンピュータの装置を示せる
『コンピュータ構成要素』 (C)Copyright, Toshiomi KOBAYASHI,
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
ソフトウェアとのインターフェース.
計算機システムⅡ 命令セットアーキテクチャ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラムはなぜ動くのか.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
人間とコンピュータの違い コンピュータ 人間
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
第6回 メモリの種類と特徴 主記憶装置、ROM、RAM
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
前坂 たけし (北大院・理) 其の壱 はじめての BIOS 前坂 たけし (北大院・理)
情報リテラシー2014 part 5/5 (亀田担当分最終回)
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの仕組み 1E16M048 圓谷 英一 1E16M050 徳弘 徹也 1E16M051 戸張 将義 1E16M052 飛田 優輝
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
1.情報機器について知ろう(p.8-9) 第1章 第1節
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
コンピュータアーキテクチャ 第 5 回.
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月17日
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

勉強会その1    2016/4/25 10 8分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行

コンピュータアーキテクチャとは? コンピュータ? 自動計算機→命令を与えれば自動で計算を行う機械 サーバ ラップトップPC デジカメ  コンピュータアーキテクチャとは? コンピュータ? 自動計算機→命令を与えれば自動で計算を行う機械 サーバ ラップトップPC デジカメ デスクトップPC タブレット ゲーム機

コンピュータアーキテクチャとは? アーキテクチャ? もともとは建築の用語 要すると どのような構成要素で出来ているか  コンピュータアーキテクチャとは? アーキテクチャ? もともとは建築の用語 要すると どのような構成要素で出来ているか どのような仕組みになっているか

コンピュータの構成要素 自分のPCの構成を見てみましょう コントロールパネル→システムとセキュリティ→システム フォルダ画面→PC OS  コンピュータの構成要素 自分のPCの構成を見てみましょう コントロールパネル→システムとセキュリティ→システム OS プロセッサ メモリ フォルダ画面→PC ディスク ドライブ

ビット?バイト?ギガバイト? データの基本単位 とてもややこしい話 1Mbps (bit per second) = ? 1,000kbps  ビット?バイト?ギガバイト? データの基本単位 1bit = 0 or 1, 2bit = 00 or 01 or 10 or 11 1bと小文字bで略す 1byte = 8bit (ex. 10101010) → 0~255まで表現できる 1Bと大文字Bで略す とてもややこしい話 情報量の単位 1K = 1,024 ( K = 2 10 ) 1M = 1,024K ( K = 2 20 ) 1G = 1,024M ( K = 2 30 ) 1T = 1,024G ( K = 2 40 ) 国際単位系(SI)の単位 1k = 1,000 ( K = 10 3 ) 1M = 1,000k ( K = 10 6 ) 1G = 1,000M ( K = 10 9 ) 1T = 1,000G ( K = 10 12 ) 1Ki(kibi) 1Mi(mibi) 1Gi(gibi) 1Ti(tibi) 1Mbps (bit per second) = ? 1,000kbps

コンピュータの構成要素 実際に見てみましょう ネットワークアダプタ メインメモリ プロセッサ USB※1 モジュール GPU※2  コンピュータの構成要素 実際に見てみましょう ネットワークアダプタ メインメモリ プロセッサ USB※1 モジュール GPU※2 DVDドライブ マザーボード ※1 Universal Serial Bus の略 ※2 Graphic Processing Unit の略 電源ユニット ハードディスクドライブ

コンピュータの構成要素 自分のPCの構成を見てみましょう コントロールパネル→システムとセキュリティ→システム フォルダ画面→PC OS  コンピュータの構成要素 自分のPCの構成を見てみましょう コントロールパネル→システムとセキュリティ→システム OS プロセッサ メモリ フォルダ画面→PC ディスク ドライブ

コンピュータの構成要素 ハードウェア ソフトウェア 物理的実体を持つ機械部品 CPU, メモリ, マウスなど  コンピュータの構成要素 ハードウェア 物理的実体を持つ機械部品 CPU, メモリ, マウスなど ソフトウェア ハードウェアを動かすためのプログラムやデータの集 まり。物理的実体を持たない部分 OS, アプリケーションなど

演算・制御装置 (プロセッサ) Central Processing Unit  ハードウェアの構成 コンピュータの構造(5大装置) 演算・制御装置 (プロセッサ) Central Processing Unit 入力装置 (マウス)(キーボード) 主記憶装置 (メモリ) 出力装置 (ディスプレイ) 補助記憶装置 (ハードディスク)

プロセッサCPU(Central Processing Unit)  演算装置・制御装置 プロセッサCPU(Central Processing Unit) 命令の実行(データの処理)を行う コンピュータ全体の性能や消費電力を左右する ダイとは? シリコンウエハー上には数十個の半導体が作られる。そこから一枚に切り離した半導体チップをダイと呼ぶ コアとは? 実際に処理を行うところ キャッシュとは? メモリよりも更に小規模だが高速な読み書きが可能 [ Intel Core i7-5960 Haswellのダイ]

主記憶装置 メモリ 日本語にすると主記憶装置 以下のデータを格納  主記憶装置 メモリ DRAMチップ 日本語にすると主記憶装置 以下のデータを格納 一部のプログラム プログラムが必要とするデータ DRAM(Dynamic Random Access Memory)が一般的 コンデンサに電荷を蓄える・蓄えないで0と1を表現 揮発性 → 電源を切るとすべてのデータが失われる 揮発性メモリ SRAM(Static Random Access Memory) 回路のループにより0と1を表現 DRAMよりも高速だが小容量かつ高価 キャッシュ等に用いられる

補助記憶装置 ディスク 大容量&不揮発性のメモリ すべてのデータを格納  補助記憶装置 ディスク 大容量&不揮発性のメモリ 現在は数TBですら一般的 電源を切ってもデータが失われない すべてのデータを格納 プログラムそのものや実行に必要なデータは,ディスクから メインメモリに移して使用 HDD(Hard Disc Drive)やSSD(Solid State Drive)

記憶装置の種類と役割 記憶装置の階層構造 レジスタ アクセス 速度 バイト オーダ CPU内 キャッシュ ~ns B 1ns~ メモリ  記憶装置の種類と役割 記憶装置の階層構造 バイト オーダ アクセス 速度 CPU内 レジスタ キャッシュ メモリ ディスク B ~ns KB~MB 1ns~ GB 100ns~ TB ms~

命令とプログラム言語、機械語 プログラム言語 機械語 よく耳にするC言語とかJavaとか 高水準言語(高級言語)と呼ばれる  命令とプログラム言語、機械語 プログラム言語 よく耳にするC言語とかJavaとか 高水準言語(高級言語)と呼ばれる 人が理解しやすい命令シーケンス プロセッサは理解できない 変換が必要(コンパイル) 機械語 プロセッサの理解できる命令シーケンス 0と1による2進数の数値列

プログラムの変換 プログラム言語→アセンブリ言語→機械語 高水準言語 メモリ 命令 コンパイル 低水準言語 アセンブル  プログラムの変換 プログラム言語→アセンブリ言語→機械語 高水準言語 メモリ lw $4, 0($1) 命令 lw $5, 4($1) add $2, $4, $5 コンパイル 低水準言語 アセンブル

命令とデータの格納 プログラム内蔵方式 ノイマン型アーキテクチャ ハーバード型アーキテクチャ  命令とデータの格納 プログラム内蔵方式 ノイマン型アーキテクチャ ハーバード型アーキテクチャ メモリ メモリ lw $4, 0($1) 共用バス lw $4, 0($1) 命令バス lw $5, 4($1) lw $5, 4($1) add $2, $4, $5 add $2, $4, $5 命令 データ メモリ データバス Data 1 Data 1 Data 2 Data 2 命令とデータを同一メモリに格納 作りが単純 命令とデータのアクセス競合により フォンノイマンボトルネックが顕著 命令とデータを別々のメモリに格納 作りは複雑 遅延(latency)の隠ぺいが可能 現在はノイマン型にハーバードを取り入れたハイブリッド型

命令の格納 アドレスとプログラムカウンタ データとアドレス 命令のアドレス プログラムカウンタ(PC) データ: 物 (ex. 電通大)  命令の格納 アドレスとプログラムカウンタ データとアドレス データ: 物 (ex. 電通大) アドレス: 場所 (ex. 調布市調布ヶ丘1-5-1) 命令のアドレス プログラム内蔵方式では 命令もメモリに格納 命令にもアドレスが存在 プログラムカウンタ(PC) プロセッサ内にある小さなメモリ 実行する命令のアドレスを示す プロセッサはPCにしたがって命令をメモリから取得 アドレス メモリ プロセッサ add $t1, $s1, $s2 add $t1, $s1, $s2 PC 8 4 4 add $t2, $s3, $s4 add $t2, $s3, $s4 8 sub $s0, $t2, $t3 sub $s0, $t2, $t3 64 100 68 10 72 500

プログラムの変換 プログラム言語→アセンブリ言語→機械語 高水準言語 メモリ 命令 コンパイル 低水準言語 アセンブル  プログラムの変換 プログラム言語→アセンブリ言語→機械語 高水準言語 メモリ lw $4, 0($1) 命令 lw $5, 4($1) add $2, $4, $5 コンパイル 低水準言語 アセンブル

CPUと命令セットアーキテクチャ 命令セットアーキテクチャ CPUによってできる命令が違う(機械語も異なる) さまざまな命令セットアーキテクチャが存在 例: x86, MIPS, ARM, POWER, SPARC, など

命令セットアーキテクチャの例 MIPS命令セットアーキテクチャ 主に組み込みシステムで使われていた 特徴  命令セットアーキテクチャの例 MIPS命令セットアーキテクチャ 主に組み込みシステムで使われていた 例: ルータやプリンタ,NINTENDO64, PS, PS2 など 特徴 命令長を 32 ビットに統一 32 本の汎用レジスタと32 本の浮動小数点レジスタ レジスタの幅は 32 ビット(のちに 64 ビット)

命令の実行 レジスタとは レジスタ 命令の実行とレジスタ プログラムの基本構造 プロセッサ内にある高速&小容量のメモリ  命令の実行 レジスタとは メモリ プロセッサ PC レジスタ プロセッサ内にある高速&小容量のメモリ データを一時的に格納する場所 同時に格納できるデータは高々 64個程 命令の実行とレジスタ ほとんどの命令はレジスタに対して処理を行う メモリ上のデータに対する処理は低速なため プログラムの基本構造 メモリ上のデータの値をレジスタにコピー レジスタの値を使って演算を繰り返す 結果が入ったレジスタの値をメモリに書き戻す レジスタ lw $s1, 0($t0) lw $s2, 4($t0) lw $s3, 8($t0) lw $s4, 16($t0) add $t1, $s1, $s2 add $t2, $s3, $s4 sub $s0, $t1, $t2 sw $s0, 16($t0) ① ② ③ レジスタ

命令とプログラム 命令の基本構造 オペコード オペランド 処理の種類 例: add, sub, lw ,swなど 処理の対象  命令とプログラム 命令の基本構造 オペコード 処理の種類 例: add, sub, lw ,swなど オペランド 処理の対象 例: $s0, 0($t0), 100 など オペランドの数は オペコードによって異なる オペコード オペランド lw $s1, 0($t0) lw $s2, 4($t0) lw $s3, 8($t0) lw $s4, 16($t0) add $t1, $s1, $s2 add $t2, $s3, $s4 sub $s0, $t1, $t2 sw $s0, 16($t0)

MIPS のアドレシングモード アドレシングモード MIPS のアドレシングモード オペランドの解釈方法 命令によって異なる 即値アドレシング 命令中に指定された定数をオペランドとする (例: addi $t1, $s0, 66) レジスタアドレシング レジスタをオペランドとする (例: sub $t1, $s0, $s3) ベース相対アドレシング 命令中の定数とレジスタの和によってオペランドのアドレスを表す (例: lw $s2, 4($t0)) PC相対アドレシング 命令中の定数と PC の和によってメモリアドレスを表す (例: beq $s1, $s2, 100) 疑似直接アドレシング 命令中の 26 ビットと PC の上位ビットを連結したものを分岐アドレスとする (例: j 10000)

プログラムの実行例(分岐を含まない場合) アドレス メモリ プロセッサ $s1 = M [1024 + 0] $s2 = M [1024 + 4] lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 4 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 lw $s3, 8($t0) lw $s3, 8($t0) レジスタ 12 lw $s4, 16($t0) lw $s4, 16($t0) 16 add $t1, $s1, $s2 add $t1, $s1, $s2 20 8 ($t0) add $t2, $s3, $s4 add $t2, $s3, $s4 1024 24 9 ($t1) sub $s0, $t1, $t2 sub $s0, $t1, $t2 28 10 ($t2) sw $s0, 16($t0) sw $s0, 20($t0) 16 ($s0) 17 ($s1) 1024 100 100 18 ($s2) 1028 10 10 19 ($s3) 1032 42 42 20 ($s4) 1036 3 3 1040

プログラムの実行例(分岐を含まない場合) $t1 = $s1 + $s2 $t2 = $s3 + $s4 アドレス メモリ プロセッサ $s0 = $t1 - $t2 lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 16 24 12 20 lw $s4, 16($t0) 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 lw $s3, 8($t0) lw $s3, 8($t0) レジスタ 12 lw $s4, 16($t0) lw $s4, 16($t0) 16 add $t1, $s1, $s2 add $t1, $s1, $s2 20 8 ($t0) add $t2, $s3, $s4 add $t2, $s3, $s4 1024 24 9 ($t1) sub $s0, $t1, $t2 sub $s0, $t1, $t2 110 28 10 ($t2) sw $s0, 20($t0) sw $s0, 16($t0) 45 16 ($s0) 65 17 ($s1) 100 1024 100 100 18 ($s2) 10 1028 10 10 19 ($s3) 42 1032 42 42 20 ($s4) 3 1036 3 3 1040

プログラムの実行例(分岐を含まない場合) アドレス メモリ プロセッサ M [1024+16] = $s0 lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 24 28 sub $s0, $t1, $t2 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 lw $s3, 8($t0) lw $s3, 8($t0) レジスタ 12 lw $s4, 16($t0) lw $s4, 16($t0) 16 add $t1, $s1, $s2 add $t1, $s1, $s2 20 8 ($t0) add $t2, $s3, $s4 add $t2, $s3, $s4 1024 24 9 ($t1) sub $s0, $t1, $t2 sub $s0, $t1, $t2 110 28 10 ($t2) sw $s0, 16($t0) sw $s0, 16 ($t0) 45 16 ($s0) 65 65 17 ($s1) 100 1024 100 100 18 ($s2) 10 1028 10 10 19 ($s3) 42 1032 42 42 20 ($s4) 3 1036 3 3 1040

プログラムの実行例(分岐を含む場合) アドレス メモリ プロセッサ $s2 = $s2 + 1 実行中 の命令 PC 12 4 8 4 8 if ($s1 == $s2) go to 20; $s2 = $s2 + 1 lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 12 4 8 lw $s2, 4($t0) 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 beq $s1, $s2, 20 beq $s1, $s2, 20 レジスタ 12 addi $s2, $s2, 1 addi $s2, $s2, 1 16 j 8 j 8 20 8 ($t0) 1024 9 ($t1) 10 ($t2) 16 ($s0) 17 ($s1) 2 1024 2 2 18 ($s2) 1 1028 19 ($s3) 20 ($s4)

プログラムの実行例(分岐を含む場合) go to 8 アドレス メモリ プロセッサ 実行中 の命令 PC 8 12 16 4 8 レジスタ if ($s1 == $s2) go to 20; lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 8 12 16 addi $s2, $s2, 1 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 beq $s1, $s2, 20 beq $s1, $s2, 20 レジスタ 12 addi $s2, $s2, 1 addi $s2, $s2, 1 16 j 8 j 8 20 8 ($t0) 1024 9 ($t1) 10 ($t2) 16 ($s0) 17 ($s1) 2 1024 2 2 18 ($s2) 1 1028 19 ($s3) 20 ($s4)

プログラムの実行例(分岐を含む場合) アドレス メモリ プロセッサ 実行中 の命令 PC 8 4 16 20 4 8 レジスタ 12 16 if ($s1 == $s2) go to 20; lw $s1, 0($t0) lw $s1, 0($t0) 実行中 の命令 PC 8 4 16 20 j 8 4 lw $s2, 4($t0) lw $s2, 4($t0) 8 beq $s1, $s2, 20 beq $s1, $s2, 20 レジスタ 12 addi $s1, $s1, 1 addi $s2, $s2, 1 16 j 8 j 8 20 8 ($t0) 1024 9 ($t1) 10 ($t2) 16 ($s0) 17 ($s1) 2 1024 2 2 18 ($s2) 2 1028 19 ($s3) 20 ($s4)

メモリ領域 命令・データとメモリアドレスの関係 システムソフトウェアが管理 いくつかのセグメントに分けて管理 頻繁にアクセスするアドレス 予約済み システムソフトウェアが管理 いくつかのセグメントに分けて管理 テキスト(プログラム)領域: 命令を格納 静的データ領域: 静的データを格納 ヒープ領域: 動的データを格納 スタック領域: 関数呼び出し時にレジスタや         戻りアドレスを格納 頻繁にアクセスするアドレス 静的データセグメントの末尾,スタックの先頭など レジスタ($gp, $sp)に常に保持しておく ことによってメモリアクセスを高速化 PC テキスト (プログラム) 静的データ $gp ヒープ $sp スタック

MIPS のレジスタ規約 名前 レジスタ番号 用途 関数呼び出し時に退避するか $zero 定数 0 が常に格納されているレジスタ 定数 0 が常に格納されているレジスタ 該当しない $v0-$v1 2-3 結果および式の評価のための値 しない $a0-$a3 4-7 引数 $t0-$t7 8-15 一時 $s0-$s7 16-23 退避 する $t8-$t9 24-25 予備の一時 $gp 28 グローバルポインタ $sp 29 スタックポインタ $fp 30 フレームポインタ‡ $ra 31 戻りアドレス † 26-27番の汎用レジスタは OS のカーネルが使用するために予約されている ‡ フレームポインタ: スタック内の最も最近のフレーム領域の末尾を指すポインタ.   フレーム領域とは1回の関数呼び出しによって退避されたデータを格納した領域.

整列化制約とエンディアン 整列化制約 エンディアン 32 ビット(1ワード)のデータ(命令)を 4 の倍数のアドレスに配置 例: 0, 4, 8, …, 1024, 1028, … データへのアクセスを容易にするため エンディアン ワード内のデータの並び順 ビッグエンディアン: 最上位バイトが最小アドレスの位置 リトルエンディアン: 最上位バイトが最大アドレスの位置 命令セットアーキテクチャによって異なる ビッグエンディアン: MIPS, SPARC など リトルエンディアン: x86, ARM など メモリ 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 メモリ 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 lw $s1, 0($t0) lw $s2, 4($t0) lw $s3, 8($t0) lw $s4, 16($t0) add $t1, $s1, $s2 add $t2, $s3, $s4 sub $s0, $t1, $t2 sw $s0, 20($t0) sw $s0, 16($t0) 整列化 ビッグエンディアン 2048 0A 0B 2049 2050 0C 0D 2051 0A0B0C0D 0D 2048 0C 2049 0B 2050 0A 2051 リトルエンディアン

x86, i386 x86-64 (x64) その他の命令セットアーキテクチャ Intel 8086, Intel 80186, Intel 80286, Intel 80386… Intelの命令セット。PC やサーバ用途の大多数のプロセッサが採用 x86は16bitから始まり32bit拡張(これがi386)、64bit拡張(IA-64…普及せず) 主な特徴 命令長が命令によって異なる 汎用レジスタが少ない(8本) 1命令で複雑な処理が可能 例: メモリから読み込んだ値にレジスタの値を加算し,    結果をメモリに格納 x86-64 (x64) x64はAMD社の開発した、x86の命令セットを64bitに拡張したもの