コンピュータ及びプロセッサの種類

コンピュータの種類

パーソナルコンピュータ

パーソナルコンピュータ(パソコン)は主に個人の利用を目的としています.開発当初は価格が高く利用者は限定されていましたが,1980年代後半には一般の人にも広く普及しました.パソコンは形状によって次のように分類されます.

デスクトップ型パソコン
コンピュータの本体がキーボード等の装置から独立している形態が主流で,スペースを必要としますが拡張性に富みます.さらに大きいデスクサイド型(フロアスタンド型)もあり,大容量の補助記憶装置等を内蔵できます.
ラップトップ型パソコン
ラップは英語で「ひざ」の意味です.ひざの上にのるぐらいの大きさで,キーボード・本体・ディスプレイが一体になっているものが多く,デスクトップ型パソコンよりも軽量です.ノート型パソコンが登場するまでは携帯性が売りものでした.
ノート型パソコン
ノート型パソコン(ブック型パソコン)はかばん等に入れて携帯できる設計になっています.本体と周辺装置が一体になっているものが多いです.拡張性は劣りますが,携帯性に優れており,家庭や会社での個人用パソコンとして普及しています.
モバイルコンピュータ
インターネットの普及で,いつでもどこでもネットワークに接続できる機器が登場し,それがモバイルコンピュータ(モバイル情報端末)です.

Point

ノートパソコンや携帯情報端末の高性能化,携帯電話やPHSによるデータ通信の高速化に伴い,外出中でも自宅や職場と同様のコンピューティング環境を再現できるようになりました.移動中や外出先でコンピュータを利用することや,特に携帯電話等によるデータ通信を行うことをモバイルコンピューティングと言います.

似た用語にユビキタスコンピューティングがあります.1989年にXerox社のパロアルト研究所で提唱された概念で,コンピュータがどこにでもある(ユビキタスはラテン語で「遍在する」の意味です),次世代のコンピューティング環境を指します.

パソコンの特徴としてCPUが1つのLSIで構成されている点があげられます.このLSIマイクロプロセッサ(MPU)と言います.LSIの性能によって「nビットパソコン」(nは16や32等)と言うことがあります.nが大きいほど処理能力は上がります.

ワークステーション

パソコンより高性能で,もともとは業務上の個人用コンピュータという位置づけでしたが,最近はパソコンと大差がなくなりました.科学技術分野での研究や技術開発に利用するものを特にエンジニアリングワークステーション(EWS)と言います.一般的にパソコンよりも解像度が高くて図形描画が高速なので,グラフィックディスプレイを使って図面の設計等を行います.

ワークステーションのマイクロプロセッサはパソコンより高性能で,多くがRISCを採用しています.また,処理性能は数十~数百MIPSのものが主体です.

サーバコンピュータ

メインフレームとUNIXによるサーバコンピュータに大別されます.メインフレームは各企業で使用されているコンピュータで,利用分野は広範囲です.用途としてバッチ処理・オンライントランザクション処理・TSSLANにおけるサーバとして利用されます.汎用コンピュータでは同時に複数のプログラムを実行するのが一般的で,これをマルチプログラミング(多重プログラミング)と言います.

スーパーコンピュータ

非常に高価です.大規模な研究機関等で,気象予報・原子力開発・宇宙開発等のシミュレーションを必要とする科学技術計算分野で利用されます.膨大かつ高速な演算処理能力が必要とされるため,パイプライン方式とマルチプロセッサ方式を使います.

組み込み型コンピュータ

マイクロプロセッサ(MPU)を組み込んだ小さなコンピュータで,現在では自動車や色々な家電製品等に使用されている小さなコンピュータを指します.温度センサや動力センサが入力装置にあたり,センサからの情報を解析・処理した結果,温度を設定したりスイッチを作動させます.これらはアクチュエータ(出力装置にあたります)が担当します.決められた一定の動作しかしないので,プログラムはあらかじめROMに記憶します.

なお,携帯電話やゲーム機等の特定の用途に設計・製造されるICを総称してASICと言います.

Column

この他に制御用コンピュータがあります.ファクトリーオートメーションの実現に不可欠で,通常,ミニコンピュータという小型のコンピュータを使いますが,場合によっては普通のコンピュータのように鎮座ましますものもあります.熱を帯びやすく,チリ・ホコリがたまりやすい工場の環境でも正常動作するよう注意して設計されます.

プロセッサの種類

プロセッサとはコンピュータの中で組み込みソフトウェアを動作させるためのハードウェアで,多くの場合はCPUと同義語です.

コプロセッサはプロセッサ機能の一部を高速化する補助的なもので,CPUが苦手な処理を,CPUとは別の外部チップで実行して性能を向上させます.浮動小数点命令や画像処理命令を高速処理するコプロセッサが代表例です.

構成・動作原理

一般的に,プロセッサはCPU・メモリ・入出力ドライブで構成されます.ここで,コンピュータの命令がどのように実行されるかを図解します.なお,処理装置とは基本的に演算装置と制御装置のことです.

処理装置の仕組みと動作

データを演算装置に渡すとき,演算装置がデータの格納場所(番地またはアドレス)について,そのアドレスに格納されているデータを読み書きします.格納場所を直接指定することもありますが,多くの場合はデータが格納されている場所(番地)を計算し,これを有効アドレスの計算(アドレッシング)と言います.また,操作対象のデータをオペランドと言います.

制御装置が取りだす命令のアドレスは命令アドレスレジスタ命令カウンタまたはプログラムカウンタまたは逐次制御カウンタ)にセットされます.命令を取りだすときは,命令アドレスレジスタにセットされているアドレスを見て,それからそのアドレスにセットされている命令を命令レジスタに取りだします.

制御装置から演算装置へデータを渡すとき,命令の中にアドレスがある場合と,アドレスを保持しているレジスタの番地を参照する場合があります.具体的な計算方法は「命令とアドレッシング」の項目で後述します.

演算装置には,算術演算や論理演算の結果を一時的に格納するアキュムレータがあります.また,演算装置でデータの比較をするとき,比較情報を格納されるレジスタを使用しますが,この情報をコンディションコードと言います.なお,命令アドレスレジスタの内容やコンディションコードをまとめてプログラム状態語(PSW)と言います.

上述の方式で命令を処理するコンピュータをフォンノイマン型コンピュータと言い,命令の処理方式をプログラム記憶方式(プログラム格納方式)と言います.この形式のコンピュータでは,プロセッサと主記憶との間のデータ転送能力が,プロセッサ全体の性能向上を妨げる要因になります(フォンノイマンボトルネック)

1つ1つの命令は演算装置で複数のステージに分割され,各ステージが順番に実行されます.ステージの概念がない時代は,命令の解読から実行までを1つとして扱ったため,ある命令を実行している間は他の命令が実行できませんでした.ステージの概念の導入により高速動作が可能になりました.ステージは以下の5つから構成されます.

  1. 命令フェッチ
  2. 命令デコード
  3. オペランドフェッチ
  4. データフェッチ
  5. 命令実行

性能と特性

CPUの性能を表す指標を示します.

MIPS
1秒間に何百万の命令を実行できるかを表し,値が大きいほど高性能です.この指標は汎用コンピュータに用いることが多いです.
FLOPS
1秒間に何回の浮動小数点数演算命令を実行できるかを表し,値が大きいほど高性能です.この指標はスーパーコンピュータやワークステーションに用いることが多いです.

機械語の個々の命令は実行時間が異なるので,命令に重みづけを行い,加重平均をとって命令の平均実行時間を求めます.各命令の使用頻度を命令ミックスと言います(小さいほど高性能です).事務計算用はコマーシャルミックス,科学技術計算用はギブソンミックスと言います.一般に,命令ミックスの値の逆数をとると指標の値を求められます

プロセッサの動作速度を表すもう1つの指標がクロック周波数で,MHzが単位で,値が大きいほど高性能です.この指標を使ってMIPS値を計算できます.また,1命令の実行に必要なクロック数をCPIと言います.

Point

命令実行速度(MIPS)=クロック周波数÷CPIです.クロック周波数の1周期は下図の通りです.

クロックの周期

(例題)次に示す仕様のプロセッサのMIPS値はいくらですか.

命令の種類 実行時間(ナノ秒) 使用頻度(%)
移動命令 60 60
四則演算命令 100 20
比較命令 80 10
分岐命令 40 10

コマーシャルミックス値は60×0.6+100×0.2+80×0.1+40×0.1=68だから,MIPS値は1×109/68≒14.7となる.

構造と方式

処理装置の高速化技法

パイプライン処理

単位時間あたりの実行命令数を向上させるため,下図のように1つずつステージをずらして命令を実行します.

パイプライン処理

例えば,命令1の命令フェッチが終わって命令デコードに入ると,命令フェッチの処理を行う部分が暇になります.その時間がもったいないため,命令2の命令フェッチに割り当てます.ただし,この方法が必ずしも適用できるとは限りません.以下に示すハザードが発生する恐れがあるからです.

制御ハザード(分岐ハザード)

一般に,OSでは5~6回に1回の割合で分岐命令が発生します.命令1の3ステージ目が命令3の1ステージ目に分岐する場合,命令2が先取りした部分が無駄になります.無駄になった部分の命令をストールインターロックと言います.

このハザードを解消するためには,分岐命令があると分かっている場合に分岐先が判明するまで他の命令の実行を待機する方法と,分岐の成立条件が常に偽であると仮定して処理を続ける方法等があります.最近では,分岐の成立条件が真の場合と偽の場合の両方を想定し,その2つを平行してパイプライン処理を行うこともあります.

データハザード

例えば,a+b=cという命令とc+d=eという命令があるとき,a+b=cの処理が終わるまではc+d=eの処理を行うことができません.そこで,cの値が決まるまで該当するステージにNOP命令(何もしないという命令)を挿入するか,データハザードを検知した場合に,実行結果を次の命令に直接渡す方法があります.前者はコンパイラによってソフトウェア的に,後者は演算装置によってハードウェア的に実現されます.

一般的に,1つの命令の実行が終わらないと,その命令の実行結果のデータは使えないため,データハザードを検知して実行結果を直接渡す方法は特殊な例です.

構造ハザード

同時に命令を実行すると,特定のメモリの領域に別々の命令が同時にアクセスしてしまうことがあり,完全に回避することは不可能です.しかし,回避の確率を上げるためにバスを多く用意すると,コストが上昇するため非現実的であり,多少の構造ハザードは無視する考え方が一般的です.

並列処理

命令系統が1つなら処理系統も1つで,一度に処理できるデータは1つです.系統が増えれば一度に処理できるデータも増えます.なお,後述するマルチプロセッサとの違いは,並列処理が1つのコンピュータで行うもの,マルチプロセッサは複数のコンピュータで行うことです.

Flynnは1966年に,命令系統とデータの流れに注目し,コンピュータを4つのモデルに分類しました.処理系とは1つのCPUと考えて差し支えありません.

パイプライン処理の応用

前述したパイプラインは1つのCPUでの高速化技法でしたが,これから説明する高速化技法は複数のCPUにおけるものです.

1つ目はスーパースカラで,言葉で説明するよりは図を見た方が直感的に理解できると思います.簡単に言えば,パイプライン処理は全ての命令を1つずつずらしていたものを,同時にスタートできる命令はスタートを一緒にする方式です.

スーパースカラ

ただし,パイプラインの段数はあらかじめCPUの用意した数より多くできない制約があります.

別の方法にVLIWがあります.命令の一語が非常に長いもので,同時に実行可能な命令は1つの命令としてセットで実行します.例えば,この図では命令1と命令2が同時に実行できるため,これを結合して1つの命令Aとします.命令3と命令4も同様にして命令Bとし,パイプライン処理を行います.命令を結合して段数の空きを作り,その分を別の命令に割り当てれば,結果的に高速な処理が実現できます.

マルチプロセッサシステム

1台のコンピュータに複数の処理装置をもち,同時に複数の業務プログラムを実行するもので,スーパーコンピュータでは広く使用されます.

密結合マルチプロセッサ(TCMP)
複数のプロセッサが主記憶装置を共有して処理を行います.同時に使用すると競合するので,プロセッサの数が多くない場合に適しています.
疎結合マルチプロセッサ(LCMP)
プロセッサ・主記憶装置・磁気ディスク装置の集まりを1単位として,これを複数個,バスを介して接続したシステムです.

CPU間のやりとりを通信で行う場合,処理そのものの時間以外に通信にかかる時間等(オーバーヘッド)が発生するため,通信時間があまりに大きいとマルチプロセッサを導入する意味がありません.よって,プロセッサを増やしても処理性能が上がるとは限りません.

アメリカの計算機技術者アムダールは「ある面を改善したことによる性能の向上は,その改善された機能が使用される割合に制約される.」という概念を発表しました(アムダールの法則).例えば,計算の処理が大半を占めているなら,それ以外の性能,例えばディスクの読み書きの速度を向上させても,あまり効果がありません.この場合,計算処理をいかに速くするかが第一優先です.

Column

ある部分の処理を改善しても,相応の見返りがあるとは限りません.改善度をc,改善を行った部分(対象とする処理の中の並列化可能部分)をr(0≦r≦1),CPUの数をn,マルチプロセッサでの速度向上率をEとすると,次の式が成立します.

アムダールの法則の式

r=1でない限りEはnに比例しませんが,r=1になることはあり得ません.最後の式でEをnの関数としてn→∞の極限を考えると,正の無限大には発散せずに特定の値に収束します.よって,CPUの個数を増やせば何でも解決するとは限りません.

RISCCISC

演算装置の内部構造はRISCCISCに大別されます.

Point

RISCは,コンピュータで開発された性能向上化技術を導入すると同時に,単機能しか実装しない制限を撤廃し,ビジネス向けやマルチメディア向けの命令を次々と実装しました.よって,RISCCISCの性格を帯びることになり,両者の厳密な区別はつかなくなってきました.

命令とアドレッシング

CPUが解釈して実行できる命令を機械語と言い,一般的に,命令部演算部または命令コード部)と番地部アドレス部またはオペランド部)から構成されます.番地部の数は0~3個で,命令の種類は,算術演算・論理演算・比較・分岐・シフト・入出力等です.

命令実行後はその結果を主記憶装置のどこかに格納します.格納位置の決め方をアドレス指定方式と言い,番地部の内容から実際のアドレスを求めることをアドレス修飾と言います.アドレス指定方式には次の種類があります.