pulpul 日本の試験

基本情報技術者 概念書 · コンピュータ構成要素

プロセッサの動作と性能

要点と定義

プロセッサは、命令を取り出して解読し、必要なデータを読み、演算や転送を行う装置です。制御装置が命令の実行順序や各装置の動きを制御し、演算装置が算術演算・論理演算を行います。レジスタは処理中の値やアドレスを一時的に保持する高速な記憶場所です。命令レジスタは実行中の命令を保持し、プログラムカウンタは次に実行する命令のアドレスを保持します。割込み後に中断位置から再開するには、プログラムカウンタの値を保存しておく必要があります。

命令の実行は、一般に命令の取出し、命令部の解読、データの取出し、実行という段階を踏みます。パイプラインでは段階を分け、複数の命令を異なる段階で重ねて処理します。代表的な五段構成では、命令フェッチ、デコードとレジスタ読出し、実行とアドレス生成、メモリアクセス、書込みの順です。

投機実行は、分岐命令の結果が確定する前に分岐先を予測し、その先の命令を先行して実行する方法です。予測が外れた場合は、予測に基づいて行った処理の結果を破棄します。分岐後の処理を待つ時間を減らせる一方、誤予測時には先行処理が無駄になります。

アドレス指定方式は、命令がデータの場所をどう示すかを表します。間接アドレス指定では、命令中のアドレスで一度記憶場所を参照し、そこに格納された値を実効アドレスとして次の参照先にします。

割込みは、現在の処理を中断して別の処理へ移る仕組みです。外部割込みはタイマや入出力装置など、プロセッサの外部からの通知によって起きます。内部割込みは命令実行に伴う異常や状態変化など、プロセッサ内部の原因で起きます。

プロセッサの性能指標の一つであるクロック周波数は、単位時間あたりのクロック数です。CPIは命令一つあたりに必要な平均クロック数、MIPSは一秒あたりの百万命令数を表します。命令の種類ごとに必要なクロック数が異なる場合、平均CPIは各種類のCPIを出現割合で加重平均して求めます。

適用条件と例

間接アドレス指定の例として、命令が番地20を示し、番地20の内容が25なら、次に番地25を参照してデータを読みます。番地20にデータそのものがあるのではなく、次の参照先を示す値がある点が要点です。番地20から直接データを取る場合とは区別します。

パイプラインは段階を重ねることで、定常状態では命令を次々に完了させやすくします。ただし、一つの命令が完了するまでの段階数が減るわけではありません。また、後続命令が先行命令の結果を必要とする場合や分岐先が確定しない場合は、待ち時間が生じることがあります。投機実行は分岐先を予測して先へ進む対策ですが、命令順序を入れ替えるアウト・オブ・オーダ実行や、複数コアでスレッドを並行実行する方式とは別の考え方です。

例えば、命令の三割が4クロック、六割が8クロック、一割が10クロックなら、平均CPIは4×0.3+8×0.6+10×0.1=7です。周波数が700 MHzなら、単純化したMIPSは700÷7=100です。この計算は命令構成と平均CPIを使った見積りです。実際の処理時間は、命令の依存関係やメモリ待ちなどにも左右されるため、MIPSだけであらゆるプログラムの速さを比較できるとは限りません。

複数語の符号なし整数では、下位語から加算し、桁あふれを上位語へ繰り越します。例えば16ビット語で、下位語の和が16ビットの範囲を超えたら繰越し1を保持し、次の語の和に加えます。繰越しを失うと、上位語を含めた整数の結果が誤ります。各語を処理した後に比較と分岐を行う場合は、比較対象と終了条件を明確にします。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む