More Related Content
Similar to パタヘネゼミ 第2回 (20)
More from okuraofvegetable
More from okuraofvegetable (8)
パタヘネゼミ 第2回
- 2. 2.11 並列処理と命令 : 同期
同期、協調動作がなぜ必要か
◦ 競合(race condition)が起こるから
◦ OS,シスプロでやった
atomicな処理
相互排除(mutual exclusion)
実現方法は?
◦ OSの授業でやったように様々ある
- 3. 2.11 並列処理と命令 : 同期
MIPSでどのように実現されているか
◦ load linked , store conditional
◦ 2つで1組、対をなす命令
- 5. 2.12 プログラムの翻訳と起動
コンパイラ
◦ アセンブリに翻訳
◦ 昔は色々アセンブリで書かれてたらしい
アセンブラ
◦ アセンブリ(疑似命令を含む)をオブジェク
トファイルに変換
機械語命令とそれをメモリに適切に配置するた
めの情報からなるファイル
未決定な参照とかが残ってる
- 6. 2.12 プログラムの翻訳と起動
リンカ
◦ オブジェクトファイルとライブラリを結
びつけ、すべての外部参照を解明する
◦ 出力は実行ファイル(executable file)
ローダ
◦ ディスク上の実行ファイルをメモリに読
み込む
- 8. 2.12 プログラムの翻訳と起動
Javaの場合
◦ コンセプト”いかなるコンピュータ上でも
すばやく安全に実行できる”
コンパイル
◦ Javaバイトコードに
インタプリタで実行可能な命令セット
Javaに近くコンパイル負荷が軽い
最適化もほぼしない
◦ Cとの比較
アセンブリは”コンピュータ依存”だった
- 13. 2.14 配列とポインタの対比
素朴にアセンブリで書いてみる
◦ ループ内部のみ
ポインタver.
◦ 1. pの指す場所に0をストア
◦ 2. pを4増やす
◦ 3. 要素数の4倍を計算
◦ 4. 先頭アドレスと要素数から最後尾のア
ドレスを計算
◦ 5. pが配列の最後尾以前かどうか比較
◦ 6. 判定結果をみて先頭に戻るか終了
- 14. 2.14 配列とポインタの対比
どちらもループ内は6命令のみ
◦ 差はない?
ポインタver.の3,4に着目
◦ 1. pの指す場所に0をストア
◦ 2. pを4増やす
◦ 3. 要素数の4倍を計算
◦ 4. 先頭アドレスと要素数から最後尾のア
ドレスを計算
◦ 5. pが配列の最後尾以前かどうか比較
◦ 6. 判定結果をみて先頭に戻るか終了
- 17. 2.15 CとJavaの実行
コンパイラの内部
◦ 言語ごとのフロントエンド
一般的な中間表現に変換
◦ 高水準オプティマイザ
ループ展開,インライン展開
◦ グローバルオプティマイザ
大域的、局所的最適化
レジスタ割付
◦ コードジェネレータ
詳細な命令の選択、マシンに依存した最適化
- 26. 2.16 ARMv7の命令
ARMv7とは
◦ 組み込み機器用に普及している命令セッ
トアーキテクチャ
◦ 設計思想はMIPSと似ている
MIPSとの違い
◦ レジスタがMIPSより少ない(半分)
◦ アドレッシングモードが9つもある
MIPSは3つだった(計算機構成論でやった)
- 27. 2.16 ARMv7の命令
比較とOpxフィールド
◦ MIPSでは比較結果はレジスタにある
◦ ARMでは4つの条件コードビットを用いる
負、ゼロ、桁上げ、オーバーフロー
PowerPCの演習や計算機システムでやった
CR(Condition Register)みたいなもの?
◦ ARMの命令にはOpxという4ビットの
フィールドがあり、4つの条件ビットとの
組み合わせで命令をnopにすることができ
る
- 28. 2.17 x86の命令
Intel x86の発展
◦ 1978年:Intel8086アーキテクチャが発表された。それは、当時成功を収めていた
8ビット・マイクロプロセッサであるIntel8080のアセンブリ言語と互換性のあ
る機能拡張と位置づけられた。8086は16ビット・アーキテクチャであり内部レ
ジスタ長はすべて16ビットであった。MIPSとは異なり,8086のレジスタは専用
化されていた。したがって、8086は汎用レジスタ(general-purpose register :
GPR)アーキテクチャとはみなされていない。
◦ 1980年:Intel8087浮動小数点コプロセッサが発表された。このアーキテクチャは
約60の浮動小数点命令を追加して、8086を拡張したものである。このアーキテ
クチャはレジスタを使用する代わりにスタックに依存していた。
◦ 1982年:80286アーキテクチャを32ビットに拡張した80386が発表された。32
ビット・レジスタおよび32ビット・アドレス空間を備えた32ビット・アーキテ
クチャに加え、80386では新しいアドレッシング・モードと命令操作が追加さ
れた。それによって、80396は汎用レジスタ・マシンに近くなった。80386では、
セグメント方式のアドレシングに加え、ページ方式がサポートされるように
なった。80286と同様、80386には8086のプログラムを修正せずに実行できる
モードが用意されていた。
◦ 1989-95年: 1989年にi486が、1992年にPentinumが、1995年にPentium Proが、
次々と発表された。これは性能の向上を目的としたものであり、命令セット
◦ 上ユーザーに見えるものは4つしか追加されていない。そのうちの3つはマルチ
プロセッシング…
- 29. 2.17 x86の命令
Intel x86の発展
◦ 1978年:Intel8086アーキテクチャが発表された。それは、当時成功を収めていた
8ビット・マイクロプロセッサであるIntel8080のアセンブリ言語と互換性のあ
る機能拡張と位置づけられた。8086は16ビット・アーキテクチャであり内部レ
ジスタ長はすべて16ビットであった。MIPSとは異なり,8086のレジスタは専用
化されていた。したがって、8086は汎用レジスタ(general-purpose register :
GPR)アーキテクチャとはみなされていない。
◦ 1980年:Intel8087浮動小数点コプロセッサが発表された。このアーキテクチャは
約60の浮動小数点命令を追加して、8086を拡張したものである。このアーキテ
クチャはレジスタを使用する代わりにスタックに依存していた。
◦ 1982年:80286アーキテクチャを32ビットに拡張した80386が発表された。32
ビット・レジスタおよび32ビット・アドレス空間を備えた32ビット・アーキテ
クチャに加え、80386では新しいアドレッシング・モードと命令操作が追加さ
れた。それによって、80396は汎用レジスタ・マシンに近くなった。80386では、
セグメント方式のアドレシングに加え、ページ方式がサポートされるように
なった。80286と同様、80386には8086のプログラムを修正せずに実行できる
モードが用意されていた。
◦ 1989-95年: 1989年にi486が、1992年にPentinumが、1995年にPentium Proが、
次々と発表された。これは性能の向上を目的としたものであり、命令セット
◦ 上ユーザーに見えるものは4つしか追加されていない。そのうちの3つはマルチ
プロセッシング…