プロセッサ
コンピュータの五大装置、CPUの構造と命令の実行手順、割込み、クロック周波数やMIPSなどの性能指標、パイプラインなどの高速化技術を理解できるようになります。
ねらい
コンピュータの頭脳であるプロセッサの仕組みを学びます。このレッスンを終えると、五大装置の役割分担、命令が実行されるまでの手順、割込みの分類、クロック周波数・CPI・MIPSといった性能指標の計算、パイプラインなどの高速化技術を説明できるようになります。
ストーリー
あなたはスマートフォンの買い替えを検討しています。製品仕様には「3GHz・8コア」と書かれていますが、この数字は何を意味するのでしょうか。3GHzはプロセッサが1秒間に30億回の拍を刻むこと、8コアは頭脳が8つあることを表しています。数字の意味が分かると、機械の力を正しく読み取れるようになります。プロセッサの世界へ入っていきましょう。
コンピュータの種類と五大装置
コンピュータには、デスクトップPCやノートPC、共有サービスを支えるサーバ、スマートフォンなどの携帯端末、科学計算のためのスーパーコンピュータ、機器に組み込まれる制御用コンピュータやシングルボードコンピュータ(SBC)など、用途に応じた種類があります。
どの種類のコンピュータも、内部は次の5つの装置で構成されます。これを五大装置といいます。
| 装置 | 役割 |
|---|---|
| 制御装置 | 命令を解読し、ほかの装置に指示を出す |
| 演算装置 | 計算や比較を行う |
| 記憶装置 | プログラムとデータを保持する |
| 入力装置 | 外部からデータを取り込む |
| 出力装置 | 結果を外部へ出す |
このうち制御装置と演算装置をひとつにまとめたものがプロセッサ(CPU)です。近年は、画像処理や大量の並列計算を得意とするGPUも広く使われています。
制御装置は他の4つの装置すべてに指示を出す一方、データそのものは主に記憶装置を経由して入力装置から出力装置へ流れます。
プロセッサの構造:レジスタと論理回路
アーキテクチャとレジスタ
プロセッサの設計方針には、単純な命令を高速に実行するRISCと、高機能な命令を備えるCISCがあります。命令の解読を配線そのもので行う方式をワイヤドロジック制御方式、マイクロプログラムで行う方式をマイクロプログラム制御方式といいます。
プロセッサの内部には、作業用の小さな記憶場所であるレジスタがあります。次に実行する命令の場所を指す命令アドレスレジスタ(プログラムカウンター)、取り出した命令を保持する命令レジスタ、計算の途中結果を保持するアキュムレーターや汎用レジスタ、アドレス修飾に使うインデックスレジスタ(指標レジスタ)やベースレジスタ、スタックの先頭を指すスタックポインタなどが代表です。
論理回路と加算器
演算の実体は、前に学んだ論理演算を電子回路にした論理回路です。AND回路、OR回路、NOT回路、NAND回路などの組合せで、1桁の2進数の足し算を行う半加算器が作られ、半加算器を組み合わせて桁上がりも扱う全加算器が作られます。出力が入力だけで決まる回路を組合せ回路、過去の状態にも依存する回路を順序回路といいます。
命令の実行と割込み
命令の実行手順
プロセッサは、機械語の命令を次の手順で繰り返し実行します。
- 命令の取出しで、命令アドレスレジスタが指す場所から命令を読み込みます。
- 命令部の解読で、デコーダが命令の種類を判別します。
- データの取出しで、演算に使うデータを読み込みます。
- 命令の実行で、演算や転送を行います。
命令には、算術演算命令、論理演算命令、データを移す転送命令、大小を比べる比較命令、処理の流れを変える分岐命令、シフト命令、入出力命令といった種類があります。
割込み
実行中の処理を一時中断して、別の処理に切り替える仕組みを割込みといいます。プログラム自身に起因する内部割込み(ゼロによる除算などの異常や、OSの機能を呼び出すSVC割込み)と、外部の出来事に起因する外部割込み(入出力装置の動作完了を知らせる入出力割込みなど)に分類されます。
プロセッサの性能指標
プロセッサの速さは、次の指標で表します。
- クロック周波数は、動作の拍を刻む速さです。1秒あたりの拍の回数をヘルツで表し、1回の拍にかかる時間をサイクルタイムといいます。
- CPIは、1命令の実行に何回の拍が必要かを表します。
- MIPSは、1秒間に実行できる命令数を百万単位で表します。
たとえばクロック周波数2GHzのプロセッサは1秒間に20億回の拍を刻みます。平均CPIが4なら、1秒間に実行できる命令数は20億割る4で5億命令、つまり500MIPSです。浮動小数点演算の回数で表す指標にはFLOPSがあり、性能測定では命令の出現割合を現実に合わせた命令ミックスが使われます。
高速化と高信頼化の技術
パイプラインとマルチコア
命令の実行手順を段階に分け、複数の命令を流れ作業で同時に進める技術がパイプラインです。段階をさらに細かくしたスーパーパイプライン、複数の命令を同時に開始するスーパースカラ、依存関係のない複数の命令をまとめて1つの長い命令にするVLIWといった発展形があります。
命令の取出し・解読・データの取出し・実行という4段階を1サイクルずつずらして重ねることで、全体の処理速度が上がります。
プロセッサの中核(コア)を複数搭載したものがマルチコアプロセッサです。冒頭の「8コア」は、流れ作業ではなく頭脳の数そのものを増やす方向の高速化です。
並列処理とマルチプロセッサ
並列処理の方式は、命令とデータの流れの数で、SISD、SIMD、MISD、MIMDの4つに分類されます。1つの命令で複数のデータを同時に処理するSIMDは、画像処理やAIの計算で活躍しています。
複数のプロセッサを搭載するマルチプロセッサシステムには、主記憶を共有する密結合マルチプロセッサシステムと、独立したコンピュータを連携させる疎結合マルチプロセッサシステム(クラスタ)があります。ただし、プロセッサを増やしても、並列化できない部分が残る限り性能向上には限界があります。この関係を表したものがアムダールの法則です。
例題
次の問いに答えてください。
問1 コンピュータの五大装置のうち、命令を解読してほかの装置に指示を出す装置は何ですか。
問2 プログラムがゼロによる除算を行ったときに発生する割込みは、内部割込みと外部割込みのどちらですか。
解答と解説
問1の答えは制御装置です。演算装置が計算を受け持ち、制御装置が全体の指揮を受け持ちます。この2つを合わせたものがプロセッサです。
問2の答えは内部割込みです。実行中のプログラム自身に起因して発生するためです。入出力装置の動作完了のように、プログラムの外の出来事に起因するものが外部割込みです。
応用
本試験を意識した問題を解いてみましょう。
問 クロック周波数が1GHzで、1命令の実行に平均5サイクルを要するプロセッサがあります。このプロセッサの性能はおよそ何MIPSでしょうか。次の中から選んでください。
- 5
- 200
- 1,000
- 5,000
解答と解説
答えは2の200です。クロック周波数1GHzは1秒間に10億サイクルを意味します。1命令に平均5サイクルかかるので、1秒間に実行できる命令数は10億割る5で2億命令になります。MIPSは百万命令単位なので200MIPSです。1の5はCPIの値をそのまま答えてしまった誤り、3の1,000はクロック周波数をそのままMIPSと取り違えた誤り(CPIで割る手順が抜けています)、4の5,000はクロック数にCPIを掛けてしまった誤りです。CPIは「1命令に必要なサイクル数」なので、掛けるのではなく割ります。
分からなかった点・気になった点
読み込み中です。