CPU(Central Processing Unit)
- OS からの命令を受け、データに対して演算処理を行い、結果を返却
- 機械語(マシン語) で記述されたソフトウェアを理解し、実行することができる
- プロセッサ、中央処理装置
- 基本構図
- 演算装置(コア)
- プログラムの計算
- メモリ(レジスタ、L1, L2, L3 キャッシュ)
- 演算結果の一時置き場
- L1 キャッシュ
- 超高速にアクセスしたいデータを置く
- L2 キャッシュ
- 高速にアクセスしたいデータを置く
- 入出力インタフェース
- メモリとのやり取り
- 演算装置(コア)
- パイプライン制御
- CPU 処理を高速化させるため、1 命令を、命令読出し(フェッチ)、解読(デコード)、アドレス計算、オペランド呼出し、実行 などのように複数のステージに分け、各ステージを少しずつずらしながら独立した処理機構で並列に実行することで、処理時間全体を短縮させる技法
- パイプライン処理が完了するまでの時間を求める公式は、(I+D-1)×P
- パイピラインピッチ 10 msとすると、実行する命令数(I)=4、命令の分割数(D)=3 のため処理終了までの時間は
(4+3-1)×10=60(ms)
- パイピラインピッチ 10 msとすると、実行する命令数(I)=4、命令の分割数(D)=3 のため処理終了までの時間は
- IF (Instruction Fetch)
- 命令を命令キャッシュから読み出す
- ID (Instruction Decode/register read)
- 制御信号を生成し、レジスタ・ファイルをレジスタ指定子で参照する
- EX (EXecution/address calculation)
- 数値の計算やロード・ストアのデータやアドレス・分岐先の計算を行う
- MA (Memory Access)
- ロード(メモリの読み出し)・ストア(メモリへの書き込み)を行う
- WB (Write Back)
レジスタにデータを書き込む
時間 1 2 3 4 5 6 7 8 9 10 命令1 IF ID EX MA WB 命令2 IF ID EX MA WB 命令3 IF ID EX MA WB 命令4 IF ID EX MA WB 命令5 IF ID EX MA WB 命令6 IF ID EX MA WB ```
- 性能
- クロック周波数
クロック(同期信号)
- 電圧の「高」と「低」を繰り返し入力
- 1 秒間にクロックを何回刻むかを表した数値
- CPU の名前の表記の後ろに 1.8 GHz とか 2.4 GHz とか書いてある数字の事
- 1.8 GHz の場合、1 秒間に 18 億回切り替えが可能
- 単純にこの数字が大きいほど処理が速い
- クロック周波数をあげる高速化は 2000 年頃に頭打ちになる
- マルチコアへ
- コアの数
- コアとは CPU の中心部分であり、実際に処理を行うところ
- マルチコアの CPU は性能の表記で 3 Ghz×2 や 2.6 Ghz×4 などという表記でコアの数が表される事が多い
- フルパワーで動いたときの電力の消費量は通常と比べて多くなり、発熱も高い
- これを抑えるため、コアが多い CPU はコア 1 つあたりの能力が抑えられている
- よく使っているコアの性能を一時的に高める技術(ターボブーストテクノロジー) がある
- 2P/28C
- 1 プロセッサあたり 14 コア
- 総コア数が多いほど性能は良くなるが、プログラム側もマルチコアを意識した作りにすることが重要
- クロック周波数
- ハイパースレッディング
- これは CPU (の中にあるコア) がその時に使っていない部分を有効利用して、もう 1 つの処理を行うもの
- この技術が導入されていると、1 つのコアで最大 2 つの作業を行う事が可能
- よってコアが 2 つの CPU なら同時に 4 つの作業が可能
- この同時に行える作業の数をスレッドと言う
- よってコアが 2 つの CPU なら同時に 4 つの作業が可能
- 発熱も消費電力も通常より多い
- 1 つ目の作業より処理速度に劣る
リソース分析
ボトルネック
- CPU を利用する処理が多いため、待ち行列が発生
- スケールアウトで対応
- CPU のレスポンスが遅い
- スケールアップで対応
仮想化
CPU 仮想化支援機能(CPU エミュレーション)
- ソフトウェアレベルで行っていた仮想化の仕組みを CPU で実現するための拡張機能
- Intel VT(intel)
- AMD-V(amd)
SLAT(Second Level Address Translation)
- 複数のゲスト OS とホスト OS(ハイパーバイザー) 間のアドレス処理をハードウェアが担うことにより、安全にハイパフォーマンスを提供する仮想化支援
- Intel
EAP(Extended Page Table)
と呼ばれる
- AMD
NPT(Nested Page Table)
と呼ばれる
CPU フラグ
- 仮想化支援機能が利用できる場合の目印
/proc/cpuinfo
を見る- Intel
vmx
- AMD
svm
- 注意
- BIOS レベルで無効化されている可能性がある
Others
- CPU モード / 特権レベル
特権モード(カーネルモード)
- CPU が備えるすべての機能を無制限に利用できる
- 特権 CPU 命令
- 特権モードでの CPU に対する命令
ユーザモード
- CPU 利用に制限が課せられた CPU モード
SMP(Symmetric Multiple-Processor)
- 対称型マルチプロセッシング
- 複数のプロセッサに処理を分散することで並列処理を行う方式
- 一つのシステムに複数の CPU やプロセッサコアがあり、それらに特別な役割や主従関係などがなく対等、対称な関係になっているシステム
コンペア・アンド・スワップ(Compare-and-Swap、CAS)
- アトミックに、あるメモリ位置の内容と指定された値を比較し、等しければそのメモリ位置に別の指定された値を格納する CPU の特別な命令の一種
テスト・アンド・セット
- あるメモリ位置へアトミックに書き込みを行うコンピュータの命令
8, 16, 32, 64 ビット
- CPU や CPU レジスタの大きさ、レジスタとメモリとを結ぶデータバスが、8, 16, 32, 64 となっている
- ビット数の量のデータを一度に処理したり転送したりすることができる
AES-NI
- AES 暗号化処理を高速化するための仕組み
プロセッサナンバー、モデルナンバー
- 最近の CPU は名前にクロック数を表す「MHz」の単位ではなく、「520」とか「2700」とかの数字が書かれているものが多い
- 今の CPU は特殊技術によってクロック数以上の性能を発揮するようになったため、従来のクロック数の表記のままでは性能をアピールできないという事で、別の表記になったため
- プロセッサナンバー
- Intel 社(Pentium や Core など)での呼び名
- モデルナンバー
- AMD 社(Athlon など)での呼び名
- プロセッサナンバー / モデルナンバー(型番) には、記号が付いている場合がある
- Core i7-2700K, Core i5-2540M
- K (Core i7 2700K など)
- CPU の性能を調整できるもの
- クロック数の最大倍率をユーザーが自由に変更できるもの
- オーバークロック可能
- S (Core i5 2500S など)
- 低電圧版を意味
- 通常版よりも性能が低い分、発熱や消費電力が抑えられている
- T (Core i5 2500T など)
- S よりもっと省電力なタイプ
- X (Core i7 3960X など)
- Extreme Edition の略
- 最上級モデルの CPU
- G (Celeron G530 など)
- Pentium や Celeron についている型番
- CPU に内蔵グラフィック機能があることを表している
- M (Core i7 2640M など)
- モバイル用
- デスクトップの CPU より低電圧で、発熱や消費電力が抑えられている反面、性能は低めで、コアの数も少ない場合が多い
- QM (Core i7 2720QM など)
- クアッドコア の モバイル用の意味
- 4 コアあるノートパソコン用の CPU
- XM (Core i7 2960XM など)
- 最上級なモバイル用 CPU という意味
- 最近の CPU は名前にクロック数を表す「MHz」の単位ではなく、「520」とか「2700」とかの数字が書かれているものが多い
FSB / QPI / DMI (データバス)
- FSB とは「フロント・サイド・バス」の略で、CPU がそれ以外のパーツとデータをやり取りするスピードを表す
- 同じクロック数でも、この FSB が高い CPU の方が性能が良くなる
- マザーボードには「FSB 200MHz までの CPU が動作可能です」みたいに使用可能な CPU の FSB 制限がある
- AMD 社の CPU は、FSB の代わりに「HyperTransport」という用語が使われています
ターボブーストテクノロジー
- コアがたくさんある CPU は消費電力や発熱が大きくなるために、コア 1 つ 1 つの性能を抑える必要がある
- そのためコアを 1 つしか使っていない時は、コアが少ない CPU の方が処理速度が早い、という状況が生じていました
- この問題を解消するため、Intel 社は「あまり使っていないコアがある時に、その分の電力をよく使っているコアに集中させて、使っているコアの性能を引き上げる技術」を開発
- ターボ・ブースト・テクノロジー
- ソケット形状
- CPU をはめるための取り付け口の事を「ソケット」と言う
Reference
CPI(Cycle Per Instructions)
- 1 命令を実行するのに必要なクロック数
MIPS(Million Instructions Per Second)
- 1 秒間に何百万回命令が実行されるかを表す
FLOPS(Floating-Point number Operations Per Second)
- 1 秒間に実行できる浮動小数点数演算の回数
命令ミックス
- 使用される命令の組み合わせ
CISC(Complex Instructions Set Computer)
- CPU に複雑な命令を理解できるようにした構成
- 複雑な命令を
マイクロコード
と呼ばれるプログラムによって実現
RISC(Reduced Instructions Set Computer)
- CPU に単純な命令をもたせる構成
- 命令長は固定で、単純な命令をハードウェア回路によって構成
- => ワイヤードロジック