Outlookに他人の予定表を表示させる方法を追加
アクセス時間を高速にするため主記憶の内容の一部を蓄えるSRAM。プログラムやデータの局所性を利用している。最近ではほとんどのマイクロプロセッサがキャッシュメ・モリを内蔵している。外部にもキャッシュ・メモリを置き2段構成にするときもある。このときの外部のキャッシュを外部キャッシュまたは2次キャッシュという。 キャッシュ・メモリ内のデータの管理は専用のキャッシュ・コントローラが行う。
CPUの要求するデータがキャッシュ・メモリ内に存在(ヒット)するとき、そのデータをキャッシュ・コントローラがCPUに渡す。要求したデータがキャッシュ・メモリにない(ミス)とき時には、キャッシュ・コントローラが主記憶から該当するデータをCPUに渡し、同時にキャッシュ・メモリに蓄える。キャッシュ・メモリがいっぱいのときは、通常は参照されたのが最も古いデータと置き換える(LRU:Least Recently Used方式)。
データ本体を保持するデータ領域と、アドレスやアクセス履歴を保持するタグ領域からなる。どちらの領域も複数のブロックに分割されており、一対一で対応する。データ領域を構成するブロックをラインといい、その大きさをライン・サイズという。キャッシュ・メモリと外部のデータ転送はライン単位で行う。1ビットのデータ転送でもライン全体のデータのやりとりを行う(ライン・フィル)。
キャッシュ・メモリと主記憶を複数のセット(ラインの集合)に分割し、主記憶上のあるデータは各セット中の決められたラインにしか置けないという方式。各セットのどのラインにデータをおけるかは、アドレス中のセットアドレスで決める。セット数がnのとき、nウェイ・セット・アソシアティブ方式と呼ぶ。
キャッシュ全体を一つのセットとして扱う1ウェイ・セット・アソシアティブ方式。主記憶中のあるアドレスのデータはキャッシュ上のどのラインに置かれるかは常に決まっている。
あるアドレスのデータをキャッシュ上のどのラインに置いてもよい方式。
CPUがデータ書き込み命令を実行したとき、キャッシュにだけデータを書き込み、主記憶には書き込まないという方式。主記憶への書き込みはキャッシュの該当するラインが置換される時点で行う。
CPUがデータ書き込み命令を実行したとき、キャッシュと主記憶の両方にデータを書き込む方式。
命令実行のステージをオーバーラップさせて、CPI値を1にする技術。パイプラインの重なり具合を1マシン・サイクルより細分化して、そのステージを1クロックごとに実行する手法をスーパー・パイプラインという。
ALU入力をデコードステージ後のパイプラインレジスタだけではなく、任意のパイプラインレジスタから取り出せることによりパイプラインのストールを避ける技術。実行ステージにフォワーディングのための制御回路が必要となる。フォワーディング機能を追加すると、ロード/ストア命令以外のハザードはなくなる。
1命令をほぼ1クロックで動作するパイプラインを複数本備え、複数の命令を同時実行する技術。命令デコーダや汎用レジスタは共通に使い、演算器を複数個内蔵する。同時実行する命令数で度合いを示す。パイプラインの本数をウェイと表記し、2本備えていれば2ウェイのスーパースケーラという。
命令の同時実行はプロセッサ内部で制御する。命令の依存関係を調べ、なければスーパースケーラを実行する。
スーパースケーラ実効制御で調べる依存関係には、命令依存、オペランド依存、制御依存がある。命令依存は使用する演算器が競合するかしないかで決まる。オペランド依存は、レジスタの内容の読み書きに順序関係があるかないかで決まる。制御依存は分岐命令があるかないかで決まる。
レジスタ依存が発生したとき、一方のオペランドをリネームレジスタに割り当てて依存関係を回避する方法。
プロセッサ内部で命令の実行順序を変換してスーパースケーラの実行効率をあげる技術。フェッチした順序とは無関係に命令を実行する。命令依存、オペランド依存が発生したときに、その依存関係が解決するまで実行を保留し、依存関係のない命令を先に実行する。
out-of-order実行を簡略化する機構としてリザベーション・ステーションがある。
分岐遅延スロットとはパイプライン・バブルとなってしまう命令に相当する部分のことを指す。このスロットに分岐命令より先に記述されている命令をおくことにより、パイプライン・バブルを解消する。
プロセッサが自動的にあらかじめ分岐する方向を予測し、それに基づいたアドレスの命令をパイプラインに詰めていくことにより、パイプライン・バブルの発生する確率を低くする技術。
スタティックな分岐予測は、予測する分岐の方向が一定のもので、通常は命令の中に分岐予測ビットがあり、プログラマが方向を指定できる。暗黙に予測する方向を決めている命令もある。コードが書き替えられない限り、分岐予測方向は変わらない。
ダイナミックな分岐予測は過去の分岐方向の履歴をもとに分岐予測をする。分岐予測バッファ(BTB)または分岐履歴バッファ(BHT)に分岐先のメモリアドレスと分岐履歴情報を格納し、分岐履歴のビットパターンにより方向を予測する。
分岐予測が当たったかどうかを判定する前に、予測した方向の命令を実行する技術。分岐予測技術が高度で当たる確率が高いことが前提。投機実行をする場合は、分岐予測がはずれたときのために内部レジスタの状態を退避させておき(スナップショットを撮る)、外れたら書き戻す。ほとんどのプロセッサは投機実行中に、さらに予測された分岐命令の投機実行する。いくつまで投機実行できるかを投機実行のレベルという。