20260427_2


現在はマイクロプロセッサ(一つのICの中にCPUがすべて入っている)
→もともとはそうではなかったらしい

現在はSoCとかAPUができるようになってきている

CISCとRISCが出てくる

ある程度までは微細化とクロック向上で性能が上がったが、現在では電力当たりの性能やコア数の向上が主流に

CISCとRISC

CISC(Complex Instruction Set Computer)

  • 命令長が可変
  • 高機能な命令が存在
  • 演算命令のオペランドでメモリを指定できる
  • 命令の実行に必要なクロックにばらつき
  • 1命令をより小さなマイクロ命令の列で構成していく(マイクロプログラム方式)

RISC(Reduced Instruction Set Computer)

  • パイプラインを使うための工夫
    • 命令が単純
    • 命令の長さが均一
    • 非マイクロプログラム方式(実行時間がほぼ均一)
  • 1クロックで1命令が使える
  • メモリアクセスはloadstoreのみで、レジスタを使うのが基本

とにかくパイプが大事らしい、UNIX?

RISCでは命令の形式も相当減らしてデコードが楽になった

パイプを利用することで浮いているシリコンを削減できる


計算機の性能評価

前提として絶対唯一の評価法や尺度はない

  • 実行時間(実行開始から終了までの時間)
  • スループット(単位時間当たりの仕事量)

実行時間に限っても動かすソフトやハードで変化が起こる

CPU実行時間

実行時間を短くするなら

  • クロックの向上
  • 1命令を少ないクロックで実行
  • プログラムを短い命令にする

CISCではプログラムを短くし、RISCではクロックの向上を狙った

MIPS(Million Instruction per Second)値

  • 重たい命令だと時間が変わる
  • あるプログラムを実行するための命令数がアーキテクチャによって変わる

Dhrystone MIPS

  • Drystoneという整数演算のベンチマークの結果を基にする
  • VAX11/780のベンチ結果を1DMIPSとする
  • Pi2で1000DMIPSくらい

ベンチマーク

  • 性能評価用プログラムの実行時間でテスト
  • ある程度の大きさのプログラムを複数用いたベンチマークスイートを用いるのが一般的

ハードウェア階層とソフトウェア階層

ハードやソフトはどちらもかなり複雑
→扱いにくいので一皮かぶせて隠し、扱いやすく見せる
ブラックボックス化とインターフェースの用意

  • 内部の実装の隠蔽
  • 利用法を公開
  • 抽象化を行う
  • こういったものを積み重ねていく

→階層化されていれば各層は独立に理解できるようになる

OSは仮想のCPUとかを用意する機能とかを持つが、ソフトウェアを用意する側はそれを意識せず、高性能なハードウェアを扱うように使うことが可能