応用情報技術者試験 合格教科書|2026年度(令和8年度)対応
第 4 章|科目 A 例年 4〜5 問(直近 10 年 19 回で 86 問、1 回平均 4.5 問) 科目 B: 組込みシステム開発

コンピュータ構成要素 ― プロセッサ・メモリ・入出力

命令実行サイクル・パイプライン・キャッシュの仕組みを図で理解し、実効アクセス時間などの計算を確実に取る

この章で学ぶこと

科目 A で例年 4〜5 問出題されます(直近 10 年・19 回で 86 問、1 回平均 4.5 問)。23 ある中分類のうちセキュリティ・ネットワーク・データベースに次ぐ 4 位の頻出分野で、しかも計算問題が 24 問と多く、型を覚えれば確実に得点できます。4 問確保が目標です。

コンピュータの構成と命令実行サイクル

コンピュータは目的の違いこそあれ、入力・記憶・演算・制御・出力の 5 つの装置(5 大装置)で説明できます。演算装置と制御装置をまとめたものが CPU(Central Processing Unit、中央処理装置)で、プロセッサとも呼びます。データは入力装置 → 記憶装置 → 演算装置 → 出力装置と流れ、制御装置はその全体へ制御信号を配ります。入力装置と出力装置は直接つながっておらず、必ず記憶装置を経由します。データの流れと制御の流れが別物である点が、構成図を読むときの要点です。

CPU が 1 命令を処理する手順を命令実行サイクルといいます。図 4-1 の 4 段階を、どのレジスタが何を保持するかとセットで覚えます。

次の命令へ(PC 更新) ① 命令フェッチ PC の番地から 命令を IR へ ② 命令デコード デコーダが 命令部を解読 ③ データ読出し 実効アドレスを 計算しデータ取得 ④ 命令実行 演算装置が実行 結果を格納
図 4-1 命令実行サイクル。①でフェッチした瞬間に PC は次の命令の番地に更新されるため、分岐命令は④で PC を上書きする形で実現されます。

各段階で働くレジスタは次のとおりです。PC(プログラムカウンタ、命令アドレスレジスタ)と IR(Instruction Register、命令レジスタ)の役割は、直近 10 年で PC が 2 回、スタックポインタが 2 回そのまま定義を問われています。

レジスタ保持するもの試験での問われ方
PC(プログラムカウンタ)次に実行する命令が置かれた主記憶の番地「次の命令の番地を保持する」=正解
IR(命令レジスタ)フェッチした命令そのもの(命令部+アドレス部)デコーダが解読する対象
GR(汎用レジスタ)/アキュムレータ演算の対象データと結果アキュムレータは演算結果の蓄積用
MAR/MDR(DR)アクセスする主記憶の番地/読み書きするデータ主記憶とのやり取りの窓口
スタックポインタ(SP)スタックの最上段(次に積む/降ろす位置)の番地割込み・サブルーチンの戻り番地退避で使う
指標(インデックス)レジスタ配列の添字に相当する増分値インデックスアドレス指定で加算される
ベースレジスタプログラムが置かれた先頭番地ベースアドレス指定で加算される

PC は命令アドレスレジスタとも呼ばれ、シラバスでは命令カウンター・逐次制御カウンターという別名も挙げられています。主記憶とのやり取りに使う MAR と DR をまとめて MR(Memory Register、メモリレジスタ)と呼ぶこともあります。演算装置は加算器のほかに、減算を加算に置き換えるための補数器、乗算器、積和演算器をもちます。

アドレッシング(アドレス指定方式)

機械語命令は算術演算命令・論理演算命令・転送命令・比較命令・分岐命令・シフト命令・入出力命令などに分類され、1 命令は命令部(オペコード)とアドレス部(オペランド)から成ります。アドレス部の値に指標レジスタやベースレジスタの値を足すといったアドレス計算(アドレス修飾)を経て、実際にアクセスする番地=実効アドレス(有効アドレス)が決まります。この決め方の規則がアドレス方式で、違いは「アドレス部の値をどう扱うか」だけなので一覧で押さえます。直近 10 年では間接アドレス指定が 1 回出題されています。

方式実効アドレスの求め方用途
即値アドレス指定アドレス部の値そのものがデータ(番地ではない)定数の指定
直接(絶対)アドレス指定アドレス部の値がそのまま実効アドレス固定番地の参照
間接アドレス指定アドレス部が指す番地の中身が実効アドレスポインタ、参照の付け替え
インデックス(指標)アドレス指定アドレス部 + 指標レジスタの値配列の連続アクセス
ベースアドレス指定アドレス部 + ベースレジスタの値再配置可能なプログラム
相対アドレス指定アドレス部 + PC の値近距離の分岐
覚え方 間接だけが「主記憶をもう一度読みに行く」方式です。1 回余分にメモリを見ると覚えれば、直接と取り違えません。

割込みとマイクロプログラム制御

割込みは、実行中のプログラムを中断して別の処理へ制御を移す仕組みです。原因が実行中プログラム自身にあるものを内部割込み、外部装置など自分の外にあるものを外部割込みといいます。優先度の高い割込みが処理中の割込みをさらに中断するのが多重割込みで、退避に使うのがスタックです。割込みの受付け・優先順位づけ・退避と復帰を担う仕組みを割込み制御といいます。

分類例発生源
内部割込みプログラム割込み(0 除算・記憶保護違反)、SVC 割込み(OS 機能の呼出し)、ページフォールト実行中の命令
外部割込み入出力割込み、マシンチェック割込み(ハードウェア障害)、タイマ割込み、電源異常CPU の外

マスクによって受付けを保留できる割込みをマスク可能割込み、電源異常など保留できないものを NMI(Non-Maskable Interrupt、マスク不能割込み)といいます。また、1 つの機械語命令の動作をさらに細かいマイクロ命令の列として制御メモリ(マイクロプログラムメモリ)に持たせる方式がマイクロプログラム制御で、次に実行するマイクロ命令の位置はマイクロプログラムカウンターが指します。ビットを制御信号にそのまま対応させて並列度を上げた水平型マイクロコードと、符号化して命令語を短くした垂直型マイクロコードがあり、他機種の命令を模倣するエミュレーションを実現できます。これに対し、命令の解読と実行を論理回路だけで行う方式をワイヤードロジック(布線論理)制御といい、高速ですが命令の変更が効きません。

論理回路と加算器

演算装置の中身は、AND・OR・NOT という基本論理回路の組合せです。出力が現在の入力だけで決まる回路を組合せ回路(加算器・デコーダ・マルチプレクサ)、過去の状態も保持する回路を順序回路(フリップフロップ・カウンタ・レジスタ)といいます。この分野は直近 10 年で 5 問出題され、うち 4 問が真理値表やタイミングチャートを読ませる読解問題です。暗記より「表を埋める」練習が効きます。

1 桁の 2 進数 A と B を足す回路が半加算器です。和 S は「どちらか一方だけが 1 のとき 1」なので XOR(排他的論理和)、桁上がり C は「両方 1 のとき 1」なので AND で作れます(図 4-2)。

入力 A 入力 B XOR AND 和 S 桁上がり C A と B が違えば 1 A と B が両方 1 で 1 全加算器 = 半加算器 2 個 + OR 回路(下位からの桁上がりを受け取る)
図 4-2 半加算器。下位桁からの桁上がりを受け取れないのが半加算器の限界で、これを補うために半加算器 2 個と OR 回路をつないだものが全加算器です。
AB和 S(XOR)桁上がり C(AND)
0000
0110
1010
1101

NAND(AND の否定)は 1 種類だけで AND・OR・NOT のすべてを作れる「万能ゲート」です。真理値表から回路を逆引きするときは、ド・モルガンの法則(A・B の否定 = 否定 A + 否定 B、A + B の否定 = 否定 A・否定 B)を使って、AND と OR を入れ替えて考えます。

ここがひっかけ 符号付き 2 進数の加算では、桁上がり(キャリー)の発生とオーバーフローは別物です。オーバーフローは「最上位ビットへの桁上がり」と「最上位ビットからの桁上がり」が一致しないときに起こります。正負の異なる数どうしの加算ではオーバーフローは起こりません。

プロセッサの性能指標 ― CPI・MIPS・FLOPS

CPU の動作の刻みがクロックで、1 秒あたりの刻み数がクロック周波数(単位 Hz)、1 刻みの時間がクロックサイクルタイム(周期)です。両者は逆数の関係にあり、1.25 GHz なら周期は 1 ÷ (1.25×109) = 0.8 ナノ秒になります。ここを取り違えるのが計算問題の最大の失点源です。

1 命令の実行に平均何サイクル要するかが CPI(Cycles Per Instruction)、1 秒間に実行できる命令数を 100 万単位で表したものが MIPS(Million Instructions Per Second)です。3 つの量は図 4-3 の掛け算 1 本でつながります。

命令数 10 億命令 × CPI 平均 1.25 サイクル × クロック周期 0.8 ns(1.25 GHz) 実行時間 = 命令数 × CPI × クロック周期 = 10 億 × 1.25 × 0.8 ns = 1.0 秒
図 4-3 性能指標の関係。式は 3 つの量の積なので、どれか 1 つを未知数にして逆算する問題(実行時間と周期から CPI を求めるなど)にそのまま使えます。

計算の型: CPI と MIPS

実行時間 = 命令数 × CPI × クロック周期 / MIPS = クロック周波数(MHz) ÷ CPI

例題: クロック周波数 1.25 GHz のプロセッサが 1 秒間に 10 億命令を実行した。CPI はいくつか。

  1. 1 秒間のクロック数を出す: 1.25 GHz = 1.25×109 サイクル/秒
  2. 1 秒間の命令数を出す: 10 億 = 1.0×109 命令/秒
  3. CPI = サイクル数 ÷ 命令数 = 1.25×109 ÷ 1.0×109 = 1.25

2 台の性能比を問われたら、実行時間の式に両方の値を入れて比を取ります。命令数が同じなら、実行時間の比は「CPI × 周期」の比に等しくなります。

命令の種類ごとに出現率と所要サイクル数が違う場合、出現率で重み付けした平均を取ります。これが命令ミックスで、事務処理向けのコマーシャルミックス、科学技術計算向けのギブソンミックスなどがあります。平均 CPI = Σ(各命令の出現率 × 所要サイクル数)です。

科学技術計算では 1 秒間の浮動小数点演算回数 FLOPS(Floating point Operations Per Second)を使います。スーパーコンピュータの理論ピーク演算性能は「1 ノード当たりの性能 × ノード数」で求めます(同一仕様のノード構成が前提で、異種ノードやアクセラレータ混在時はノードごとに算出して合算します)。直近 10 年で 2 回、同一形式で出題されています(ノード数 2,000・総性能 640 TFLOPS を求めさせるもの)。

指標意味注意点
クロック周波数1 秒あたりのクロック数(Hz)周期との逆数関係。周波数が高い=速いとは限らない
CPI1 命令あたりの平均サイクル数小さいほど速い。RISC は 1 に近づける設計
MIPS1 秒あたりの命令実行数(百万単位)大きいほど速い。命令の重さを無視するので機種間比較には弱い
FLOPS1 秒あたりの浮動小数点演算回数HPC の指標。理論ピーク=ノード性能×ノード数

命令パイプラインと高速化技術

命令実行サイクルを複数の段(ステージ)に分け、前の命令が次の段へ進んだら空いた段に次の命令を流し込む方式が命令パイプラインです。RISC 型プロセッサでは IF(命令フェッチ)→ ID(デコード)→ EX(実行)→ MEM(メモリアクセス)→ WB(書戻し)の 5 段構成が代表的で、この順序がそのまま出題されたことがあります。パイプラインと高速化技術はこの中分類で最も厚く、直近 10 年で命令パイプライン 4 問・VLIW 4 問・スーパースカラ 1 問・投機実行 1 問が出ています。

時間 1 2 3 4 5 6 7 命令 1 IF ID EX MEM WB 命令 2 IF ID EX MEM WB 命令 3 IF ID EX MEM WB (命令 4 以降も 1 サイクルずつずれて続く) 所要サイクル数 = 命令数 + 段数 − 1 = 20 + 5 − 1 = 24 サイクル
図 4-4 5 段パイプラインのタイムチャート。最初の命令が完了するまでに 5 サイクル、以降は 1 サイクルごとに 1 命令ずつ完了するので、n 命令なら k + (n − 1) サイクルになります。

計算の型: パイプラインの所要時間

所要サイクル数 = 命令数 n + 段数 k − 1(各段 1 サイクル、ハザードなしの場合)

例題: 5 段のパイプラインで 20 命令を実行するのに要するサイクル数は。1 サイクル 10 ナノ秒なら実行時間は。

  1. 最初の 1 命令が完了するまで: 5 サイクル
  2. 残り 19 命令は 1 サイクルずつ: 19 サイクル
  3. 合計 5 + 19 = 24 サイクル。時間は 24 × 10 = 240 ナノ秒

誤答肢は「20 × 5 = 100」(パイプラインなしの逐次実行)や「20 + 5 = 25」(− 1 の忘れ)です。

パイプラインの流れが乱れて空きサイクル(ストール)が生じることをハザードといいます。

ハザード原因対策
構造ハザード同じハードウェア資源を複数の命令が同時に使おうとする資源の二重化(命令キャッシュとデータキャッシュの分離)
データハザード直前の命令の演算結果を次の命令が待つフォワーディング、命令の並べ替え(アウトオブオーダー実行)
制御ハザード(分岐ハザード)分岐命令の成立・不成立が確定するまで次の命令を決められない分岐予測、投機実行、遅延分岐

分岐予測は分岐先を予測して先に命令を読み込み、投機実行は予測に基づいて実際に実行まで進めておく技術です。予測が外れたら実行結果を破棄します。パイプラインの段数を増やして 1 段を短くしたものがスーパーパイプライン、パイプラインを複数本並べて同時に複数命令を流すのがスーパースカラです。図 4-5 のとおり、スーパースカラと VLIW(Very Long Instruction Word)の違いは「並列化を誰が決めるか」に尽きます。VLIW は依存関係のない複数の動作をコンパイル時に 1 つの長い命令へまとめておく方式です。

VLIW(並列化はコンパイラ) コンパイラが依存関係を解析 長い 1 命令にまとめる [演算 A|演算 B|演算 C] CPU はそのまま実行 スーパースカラ(並列化はハード) 命令列はそのまま渡す CPU 内の命令発行部が 実行時に依存を判定し並列発行 複数演算器で同時実行
図 4-5 VLIW とスーパースカラの分かれ目。問題文に「コンパイル段階で」「コンパイラが」とあれば VLIW、「実行時にハードウェアが」とあればスーパースカラです。

命令セットの設計思想も対比で問われます。CISC(Complex Instruction Set Computer)は 1 命令で複雑な処理を行う可変長命令が中心で、マイクロプログラム制御と相性がよい方式です。RISC(Reduced Instruction Set Computer)は単純な固定長命令に絞り、ワイヤードロジックとパイプラインで高速化します。CPI を 1 に近づけられる代わりに、同じ処理に必要な命令数は増えます。

マルチコア・並列処理とプロセッサの種類

1 個の LSI に複数の CPU コアを載せたものがマルチコアプロセッサです。同じ性能のコアを並べるのがホモジニアス、性能や消費電力の異なるコアを混在させるのがヘテロジニアスマルチコアで、高性能コアと省電力コアを使い分ける big.LITTLE がその代表です。1 つのコアが複数スレッド分のレジスタ群をもち、実行資源の空きを別のスレッドで埋めることで 1 コアが複数のスレッドを同時に処理する技術がマルチスレッディング(同時マルチスレッディング、SMT)です。

複数のプロセッサを結合する形態は、主記憶を共有するかどうかで分けます。

方式主記憶特徴
密結合マルチプロセッサ共有する1 つの OS が全プロセッサを制御。台数を増やすとメモリアクセスが競合して頭打ちになる
疎結合マルチプロセッサ各自が持つプロセッサごとに OS が動き、通信路で連携。台数を増やしやすい
SMP(対称型マルチプロセッシング)共有する密結合の一形態。すべてのプロセッサが対等に処理を分担する

このほか、処理を工程で分担して前段の結果を後段へ渡すタンデム結合マルチプロセッサシステム、多数の演算器を格子状に並べて同じ命令を一斉に適用するアレイコンピュータシステムがあります。プロセッサ間を結ぶ網の形にはトーラス・ハイパーキューブ・ハイパーツリーがあり、独立した複数のコンピュータを接続して 1 台のように見せる構成をクラスタといいます。

プロセッサを増やしても性能が比例して上がらないのは、並列化できない逐次部分が残るからです。主記憶への同時アクセス競合やデータベースのロックがその典型で、これを並列処理の隘路(ボトルネック)といいます。定量化したものがアムダールの法則で、直近 10 年で知識・計算あわせて 2 回出ています。

計算の型: アムダールの法則

速度向上比 S = 1 ÷ { (1 − p) + p ÷ n }(p: 並列化できる割合、n: プロセッサ数)

例題: 処理の 80% を並列化できるプログラムを 4 台のプロセッサで実行したときの速度向上比と、台数を無限に増やしたときの上限は。

  1. 逐次部分は 1 − 0.8 = 0.2、並列部分は 0.8 ÷ 4 = 0.2
  2. S = 1 ÷ (0.2 + 0.2) = 2.5 倍
  3. n を大きくすると p ÷ n は 0 に近づくので、上限は 1 ÷ 0.2 = 5 倍

「上限」「漸近値」と問われたら、プロセッサ数を無限大にして逐次部分だけを残す、と読み替えます。

並列処理の分類には、命令の流れとデータの流れの数で分けるフリンの分類があります。SISD が単一命令・単一データ(通常の逐次処理)、SIMD が 1 命令で複数データを一括処理(GPU のベクトル演算)、MISD が複数命令・単一データ、MIMD が複数命令・複数データ(マルチコア)です。

プロセッサとチップの種類

SoC・FPGA・GPU・量子コンピュータ・ユニファイドメモリといった新しいハードウェア概念は、直近 10 年で 10 問出題され、そのうち 6 問が直近 3 年に集中しています。定義を 1 行で言えるようにしておきます。

名称正式名称・意味特徴
CPU中央処理装置汎用。複雑な制御と分岐に強い少数の高性能コア
GPU / GPGPUGraphics Processing Unit(画像処理装置)/ General Purpose computing on GPU(汎用計算への転用)単純な演算コアを多数並べ、行列演算や画像処理を並列実行。深層学習の学習処理で使う
DSPDigital Signal Processor積和演算に特化。音声・信号処理向け
FPUFloating Point Unit浮動小数点演算専用の演算装置
TPU / AI チップTensor Processing Unit機械学習のテンソル演算に特化した専用プロセッサ
SoCSystem on a Chip複数チップで構成していたシステム全体を 1 チップに集積した LSI
FPGAField Programmable Gate Array製造後に論理回路の構成を書き換えられる。試作や仕様変更に強い
ASICApplication Specific Integrated Circuit特定用途向けの専用 LSI。量産すれば安く速いが後から変更できない

量子コンピュータは、0 と 1 の重ね合わせ状態をとる量子ビットを使って複数の状態を同時に表現し、特定の問題を高速に解きます。汎用的な量子ゲート型と、組合せ最適化に特化した量子アニーリング型があります。従来型コンピュータでは実用的な時間内に解けない計算を量子コンピュータが実行してみせることを量子超越性といいます。

省電力技術では、使っていない回路ブロックへの電源供給そのものを止めるパワーゲーティング、クロック供給を止めるクロックゲーティング、負荷に応じて電圧と周波数を下げる DVFS(Dynamic Voltage and Frequency Scaling)を区別します。パワーゲーティングは直近 10 年で 2 回出題されています。

周辺用語の整理 コンピュータの種類はデスクトップ PC・ノート PC・サーバ・携帯端末(スマートフォン、タブレット端末)・シングルボードコンピュータ(SBC)・汎用コンピュータ・制御用コンピュータ・マイクロコンピュータに分かれます。1 命令で扱うデータの単位はビット・バイト・キャラクター・ワードで、ワード長はアーキテクチャごとに異なります。命令形式は、オペランド(アドレス部)の数によって 1 オペランド形式・2 オペランド形式に分類します。コア数ではシングルコアプロセッサとマルチコアプロセッサを対比し、高速化技術の用語例としては、多数のプロセッサを結合した超並列プロセッサ、配列データをまとめて演算するベクトル処理方式、ハイパースカラ方式も挙げられています。

メモリの種類と特徴

半導体メモリは、電源を切ると内容が消えるRAM(Random Access Memory、揮発性)と、消えない ROM(Read Only Memory、不揮発性)に大別されます。RAM の 2 種類、DRAM(Dynamic RAM)と SRAM(Static RAM)の特徴の入れ替えは定番の誤答肢で、直近 10 年で DRAM の特徴だけで 4 問出題されています(図 4-6)。

DRAM(主記憶に使う) 記憶素子=コンデンサ 1 個 + トランジスタ 1 個 → 構造が単純 ・電荷が抜けるのでリフレッシュ必要 ・低速だが大容量・ビット単価が安い ・用途: 主記憶 SRAM(キャッシュに使う) 記憶素子=フリップフロップ (トランジスタ 4〜6 個)→ 複雑 ・リフレッシュ不要 ・高速だが小容量・ビット単価が高い ・用途: キャッシュメモリ どちらも電源を切ると内容が消える揮発性メモリ
図 4-6 DRAM と SRAM。「セル構造が単純だから安く大容量にできる。その代わり電荷が抜けるのでリフレッシュが要る」という因果でつなげると、特徴を入れ替えた誤答肢に引っかかりません。
種類書換え特徴・用途
マスク ROM不可製造時に内容を焼き込む。大量生産で安価
PROM1 回だけ利用者が 1 度だけ書き込める
EPROM可(紫外線)紫外線を当てて全消去してから書き換える
EEPROM可(電気的)電気的にバイト単位で消去・書換えができる
フラッシュメモリ可(ブロック単位)EEPROM の一種。NAND 型は大容量・安価で SSD や SD カード向け、NOR 型はランダム読出しが速くプログラム格納向け
FeRAM可強誘電体を使う不揮発メモリ。低消費電力で高速

DRAM をクロックに同期させて高速化したものが SDRAM、クロックの立上りと立下りの両方でデータを転送して帯域を倍にしたものが DDR SDRAM です。DDR2 → DDR3 → DDR4 → DDR5 と世代が進むほど転送速度が上がります。これらを基板に載せたモジュールが DIMM で、ノート PC 向けの小型版が SO-DIMM です。

主記憶の構成と誤り検出訂正

主記憶は、記憶部・アドレス選択機構・読取り書込み機構から成り、アドレスを指定して該当する記憶セルを選び、読み書きします。ビット化けに備えて冗長ビットを付ける仕組みが誤り制御です。

方式付加するものできること
パリティチェック1 ビット(偶数/奇数パリティ)1 ビットの誤りを検出するのみ。2 ビット誤りは見逃す
ハミング符号複数の検査ビット2 ビットの誤りを検出し、1 ビットの誤りを訂正できる
ECC(Error Correcting Code)メモリハミング符号などの検査ビットサーバ用途。訂正までできるので運転を止めずに済む
ここがひっかけ パリティは「検出だけ」、ハミング符号と ECC は「訂正まで」。選択肢に「パリティによって 1 ビットの誤りを訂正できる」とあれば誤りです。

キャッシュメモリと記憶階層

この節はこの中分類で最大の得点源です。実効アクセス時間 5 問、キャッシュの書込み方式 4 問、メモリインタリーブ 5 問、置換アルゴリズム 2 問と、直近 10 年で 16 問が出ています。

記憶装置は「速いものは高価で小さい、遅いものは安価で大きい」という関係にあり、レジスタ → キャッシュメモリ → 主記憶 → 補助記憶 の順に階層をなします。上の階層に「よく使うものだけ」を置いて、平均の待ち時間を下げるのが記憶階層の考え方です。CPU と主記憶の速度差を埋めるために間に置く高速な SRAM がキャッシュメモリで、目的のデータがキャッシュにある確率をヒット率、ない確率をミス率といいます。メモリの速さは、読み書きを要求してからデータが得られるまでのアクセス時間と、次のアクセスを開始できるようになるまでのサイクル時間で表され、サイクル時間のほうが長くなります。

CPU ヒット率 0.95 キャッシュ Tc = 10 ns ミス率 0.05 主記憶 Tm = 100 ns 実効アクセス時間 0.95×10 + 0.05×100 = 14.5 ナノ秒 ミス時は主記憶の時間だけを数える(キャッシュ時間を二重に足さない)
図 4-7 実効アクセス時間。ヒット率で重み付けした 2 本の経路の期待値です。「主記憶だけの場合の何倍か」を問う設問は、この値を Tm で割ります(14.5 ÷ 100 = 0.145)。

計算の型: 実効アクセス時間

実効アクセス時間 = h × Tc + (1 − h) × Tm(h: ヒット率、Tc: キャッシュのアクセス時間、Tm: 主記憶のアクセス時間)

例題 1: h = 0.95、Tc = 10 ナノ秒、Tm = 100 ナノ秒のとき、実効アクセス時間は主記憶だけの場合の何倍か。

  1. 実効アクセス時間 = 0.95 × 10 + 0.05 × 100 = 9.5 + 5 = 14.5 ナノ秒
  2. 主記憶だけなら 100 ナノ秒なので 14.5 ÷ 100 = 0.145 倍

例題 2(逆算): 実効アクセス時間が 19 ナノ秒、Tc = 10、Tm = 100 のときのヒット率は。

  1. 式を立てる: 10h + 100(1 − h) = 19
  2. 展開して整理: 100 − 90h = 19 → 90h = 81
  3. h = 0.9

例題 3(比で与えられる形): キャッシュのアクセス時間が主記憶の 30 分の 1、ヒット率が 0.95 のとき、実効アクセス時間は主記憶だけの場合の何倍か。

  1. 主記憶のアクセス時間を 1 と置くと Tc = 1 ÷ 30 = 0.0333…
  2. 0.95 × 0.0333… + 0.05 × 1 = 0.0317 + 0.05 = 約 0.08 倍

実際の出題ではこの「比で与える形」が多く、直近 10 年で 2 回、ヒット率 0.95・主記憶比 約 0.08 倍を答えさせる同一問題が出ています。ナノ秒が与えられなくても、主記憶を 1 と置けば同じ式で解けます。

ミス時に余分にかかる時間をミスペナルティといいます。問題文が「ミス時はキャッシュを調べてから主記憶を読む」と明記していれば Tc + Tm を使いますが、断りがなければ主記憶の時間だけを使います。

キャッシュへの書込み方式

読出しと違い、書込みは主記憶との整合をどう保つかで 2 方式に分かれます。直近 10 年で 4 回出題され、4 回とも正解はライトスルー側の記述でした(図 4-8)。

ライトスルー CPU 書込み キャッシュ 同時に書込み 主記憶 常に内容が一致・書込みは遅い ライトバック CPU 書込み キャッシュ dirty ビットを立てる 追出し時だけ 主記憶 書込みは速い・一時的に不一致
図 4-8 ライトスルーとライトバック。左の実線は CPU の書込みと同時に主記憶へ届くこと、右の流れる破線は追い出すときにだけ遅れて届くことを表します。ライトバックは書込み回数が減って速い代わり、追い出すまで主記憶が古いままなので、マルチプロセッサでは一貫性の管理が要ります。

マッピング方式と置換アルゴリズム

主記憶のブロックをキャッシュのどこに置くかの決め方がマッピング方式です。

方式置ける場所特徴
ダイレクトマップ(ダイレクト方式)1 か所だけ(アドレスから一意に決まる)回路が単純で高速。同じ場所を争う競合ミスが起きやすい
フルアソシアティブ(フルアソシエイティブ)方式どこでもよいヒット率は最も高いが、全エントリを同時に比較する連想メモリが必要でコストが高い
セットアソシアティブ(セットアソシエイティブ)方式決まったセット内の複数か所両者の折衷。実際のプロセッサはこれが主流

キャッシュが満杯のときにどのブロックを追い出すかが置換アルゴリズムです。同じ表を 3 つの基準で読むと追い出されるブロックが変わる、という形で出題されます。

ブロックロード時刻最終参照時刻参照回数
A10805
B20709
C30903
D40607
覚え方 LRU の R は Recently(最近使ったか)、LFU の F は Frequently(何回使ったか)。見る列は LRU が「最終参照時刻」、LFU が「参照回数」、FIFO が「ロード時刻」です。

キャッシュは命令用とデータ用に分けることがあり(命令キャッシュ・データキャッシュ)、これにより構造ハザードを避けられます。また、値そのものから格納場所を引ける記憶装置を連想メモリ(CAM:Content Addressable Memory)といい、フルアソシアティブ方式のタグ比較に使います。なお、多バイトのデータを主記憶に並べる順序には、上位バイトを先頭に置くビッグエンディアンと、下位バイトを先頭に置くリトルエンディアンがあります。

メモリインタリーブ

主記憶を複数のバンクに分け、連続するアドレスを異なるバンクへ交互に割り当てて、複数バンクへ並列にアクセスする高速化技法がメモリインタリーブです。直近 10 年で 5 回出題され、5 回とも正解は「主記憶を複数のバンクに分けて交互(並列)にアクセスして高速化する」という趣旨の記述でした。

CPU 連続番地 バンク選択 (下位ビット) バンク 0: 番地 0, 4, 8, … バンク 1: 番地 1, 5, 9, … バンク 2: 番地 2, 6, 10, … バンク 3: 番地 3, 7, 11, … 4 バンクなら 4 語を並列に読み出せる(1 語のアクセス時間自体は変わらない)
図 4-9 メモリインタリーブ。連続した番地を続けて読むときに効果が出る技法なので、ランダムアクセスでは効きません。誤答肢はキャッシュや仮想記憶の説明を貼り付けたものです。

同じ発想を補助記憶に適用したものがディスクキャッシュで、主記憶の一部に読み書きしたデータを保持して、低速な磁気ディスクへのアクセス回数を減らします。

バス・入出力デバイス・入出力装置

この節は直近 10 年で 16 問(バス 1・入出力デバイス 7・入出力装置 8)と出題数は多くありませんが、計算問題が含まれるので型だけは押さえます。

バス

装置間でデータをやり取りする共通の伝送路がバスです。番地を運ぶアドレスバス、データを運ぶデータバス、読み書きの指示やタイミングを運ぶ制御バスの 3 本組で、CPU・主記憶・入出力を結ぶものをシステムバスと呼びます。CPU 内部の内部バスに対して、外部バス・拡張バス(PCI、PCI Express)があります。命令用とデータ用にバスを分ける構成がハーバードアーキテクチャ、1 本のバスを共用する構成がプリンストンアーキテクチャ(ノイマン型)です。複数の装置がバスの使用権を争うため、調停を行う回路をバスアービタ、使用権を得てバスを制御する装置をバスマスタといいます。用途で分けると、CPU と主記憶を結ぶメモリバス、周辺装置につながる入出力バスがあり、信号線の使い方では 1 本の線で 1 ビットずつ送るシリアルバスと、複数の線で同時に送るパラレルバスに分かれます。使用権の決め方には、アービタが一括して割り当てる集中制御方式、装置からの要求を割込みで受ける割込み方式、装置へ順番に問い合わせるポーリング方式があります。標準規格には PCI・PCI Express・NVMe(Non-Volatile Memory Express)のほか、IEEE 1394、ANSI-X3.131(SCSI)、USB があります。

計算の型: バスの転送速度

転送速度 = バス幅(バイト) × バスクロック周波数

例題: バス幅 32 ビット、クロック周波数 100 MHz のバスの最大転送速度は。

  1. バス幅をバイトに直す: 32 ビット ÷ 8 = 4 バイト
  2. 1 秒あたりの転送回数はクロック周波数と同じ: 100×106 回
  3. 4 × 100×106 = 400 M バイト/秒

ビットとバイトの取り違えが定番の誤答です。単位に「バイト/秒」とあれば 8 で割ってから掛けます。

入出力インタフェースと制御方式

規格種別特徴
USBシリアルハブでツリー状に最大 127 台。2.0 は半二重、3.0 は全二重でスーパースピード(5 G ビット/秒)。Type-C は上下対称で裏表を選ばない
PCI Expressシリアルレーン単位の高速拡張バス。x1・x4・x16 とレーン数で帯域が変わる
NVMe—PCI Express 接続の SSD 向けプロトコル(NVMe over Fabrics 拡張では RDMA や TCP 経由の接続にも対応)。SATA より低遅延
シリアル ATAシリアル内蔵ストレージ接続の標準
Thunderboltシリアルデータ・映像・電力を 1 本で。デイジーチェーン接続に対応
HDMI / DisplayPort映像・音声デジタル映像と音声を 1 本で伝送。DisplayPort はマルチストリームに対応
Bluetooth / BLE無線 PAN近距離無線。BLE は省電力で IoT 機器向け
NFC無線10 cm 程度の至近距離通信。交通系 IC カードや決済
ZigBee / Wi-SUN無線センサネットワーク・スマートメータ向けの省電力無線
IrDA赤外線見通し内の近距離通信
RS-232C / UARTシリアル調歩同期式の古典的なシリアル通信
FC(ファイバチャネル)シリアルSAN でストレージを接続する高速規格

データを 1 本の信号線でビット単位に順送りするのがシリアルデータ転送方式、複数の信号線で同時に送るのがパラレルデータ転送方式です。パラレルは信号線どうしのタイミングのずれが高速化を妨げるため、現在の外部インタフェースはシリアルが主流です。

接続の形は、1 台のハブから放射状に伸びるスター接続、ハブを段階的につなぐカスケード接続、機器を数珠つなぎにするデイジーチェーン接続があり、SCSI のようにバス両端に終端抵抗(ターミネータ)が要る規格もあります。

入出力の制御方式は 3 つを区別します。CPU が 1 語ずつ転送に付き合うのがプログラム制御方式、CPU を介さずに入出力装置と主記憶が直接データをやり取りするのが DMA(Direct Memory Access)方式、専用のチャネル装置が入出力を肩代わりするのがチャネル制御方式です。DMA では転送の完了を入出力割込みで CPU に知らせるため、CPU は転送中に別の処理を進められます。転送元・転送先・語数・方向をパラメタで指定するブロック転送は、直近 10 年で 2 回出題されています。

ここがひっかけ 領域が重なる範囲のブロック転送では、転送方向で結果が変わります。転送先が転送元より高位のアドレスなら、末尾から先頭へ降順にコピーしないと、まだ読んでいない元データを上書きしてしまいます。

計算の型: 重複領域のブロック転送

転送先が転送元より高位なら降順(末尾から)、低位なら昇順(先頭から)に 1 語ずつ運ぶ。開始アドレスは進む向きの先頭を指定する

例題: 2000〜2003 番地の 4 語を 2002〜2005 番地へ移す。方向フラグは 0 で昇順、1 で降順に転送するとき、指定するパラメタは。

  1. 転送先(2002〜2005)は転送元(2000〜2003)より高位なので降順 = 方向フラグ 1
  2. 降順は末尾から運ぶので、開始アドレスは転送元 2003・転送先 2005
  3. 語数は 4。昇順にすると、2000 の値を 2002 へ書いた時点で、まだ読んでいない 2002 の値が消える
2000 2001 2002 2003 2004 2005 ① 転送前 a b c d 空 空 ② 昇順(方向 0) c と d が消える a b a b a b ③ 降順(方向 1) a〜d が正しく並ぶ a b a b c d 転送先が高位なら末尾から降順に運ぶ(昇順は読む前に上書きしてしまう)
図 4-10 重複領域のブロック転送。②は昇順に運んだ結果で、2000 の a を 2002 へ書いた瞬間に c が消え、続けて d も消えるため転送先には a b a b が並びます。③のように末尾から降順に運べば、まだ読んでいない語を上書きしません。

周辺装置を OS から使えるようにする制御ソフトウェアがデバイスドライバです。接続した装置を自動認識して設定するのがプラグアンドプレイ、電源を入れたまま抜き差しできるのがホットプラグです。

入出力装置と補助記憶

入力装置にはポインティングデバイス(マウス・タッチパネル・タッチスクリーン・ジョイスティック・トラックボール・デジタイザ・ペンタブレット)、キーボード(複数同時押しを取りこぼさない N キーロールオーバー)、音声入力装置、画像入力装置(スキャナ・OCR・OMR・デジタルカメラ)、バーコード読取装置、磁気カード読取装置、IC カード読取装置、生体認証装置、温度・加速度・光などの各種センサ、アナログ信号をデジタルに変える A/D コンバータがあります。出力装置には液晶ディスプレイ(TFT・STN)、有機 EL ディスプレイ、電子ペーパー、ヘッドマウントディスプレイ、プロジェクタ、プリンタ(インパクト/ノンインパクト、シリアル/ライン/ページ、レーザー・インクジェット・3D プリンタ)、D/A コンバータがあります。

計算の型: VRAM(表示に必要なメモリ容量)

必要容量 = 横画素数 × 縦画素数 × 1 画素あたりのバイト数

例題: 1,920 × 1,080 の解像度で 1 画素 24 ビットの色を表示するのに必要な容量は。

  1. 総画素数 = 1,920 × 1,080 = 2,073,600 画素
  2. 1 画素 24 ビット = 3 バイト
  3. 2,073,600 × 3 = 6,220,800 バイト = 約 6.2 M バイト(1 M = 106 とした場合。1 M = 220 で数えるなら約 5.9 M バイト)

表示内容を保持するこの領域をフレームバッファといいます。専用の VRAM を持たず、主記憶の一部を表示領域として使う方式がユニファイドメモリで、直近 10 年で 2 回、同一の問題が出題されています。

補助記憶の代表が磁気ディスク(ハードディスク)です。同心円状のトラック、複数円盤の同じ位置のトラックを束ねたシリンダ、トラックを分割したセクタという構造を持ちます。アクセス時間は 3 つの和で求めます。

計算の型: 磁気ディスクの平均アクセス時間

平均アクセス時間 = 平均シーク時間 + 平均回転待ち時間 + データ転送時間

(平均回転待ち時間 = 1 回転の時間 ÷ 2、データ転送時間 = 1 回転の時間 × 転送量 ÷ 1 トラック容量)

例題: 回転数 5,000 回/分、平均シーク時間 10 ミリ秒、1 トラック 15,000 バイトのディスクから 4,000 バイトを読む平均アクセス時間は。

  1. 1 回転の時間 = 60 秒 ÷ 5,000 = 12 ミリ秒
  2. 平均回転待ち時間 = 12 ÷ 2 = 6 ミリ秒
  3. データ転送時間 = 12 × (4,000 ÷ 15,000) = 3.2 ミリ秒
  4. 合計 = 10 + 6 + 3.2 = 19.2 ミリ秒

「圧縮したプログラムが主記憶に展開されるまでの時間」も、同じく時間を足し上げる問題です。

計算の型: 圧縮プログラムの展開時間

所要時間 = 圧縮後のサイズ ÷ 転送速度 + 圧縮後のサイズ × 1 M バイト当たりの展開時間(転送と展開が同時に行われない場合)

例題: 20 M バイトのプログラムを元の 40% に圧縮して保存してある。補助記憶から主記憶への転送速度が 25 M バイト/秒、圧縮された 1 M バイトの展開に 0.05 秒かかるとき、主記憶に展開されるまでの時間は。

  1. 圧縮後のサイズ = 20 × 0.4 = 8 M バイト
  2. 転送時間 = 8 ÷ 25 = 0.32 秒
  3. 展開時間 = 8 × 0.05 = 0.4 秒
  4. 合計 = 0.32 + 0.4 = 0.72 秒(圧縮しなければ 20 ÷ 25 = 0.8 秒なので、この条件では圧縮したほうが速い)

展開時間が比例するのは「圧縮後のサイズ」です。元のサイズを掛けてしまうのが定番の誤答で、直近 10 年で 2 回、同一問題として出題されています。

SSD(Solid State Drive)は NAND 型フラッシュメモリを使う補助記憶で、機械的な駆動部がないためシークも回転待ちもありません。フラッシュメモリのセルは書換え回数に上限があるため、書込みを特定ブロックに集中させず全体へ均等に分散するウェアレベリングで寿命を延ばします。光ディスクは書換えの可否で、読出し専用型(CD-ROM・DVD-ROM)、追記型(CD-R・DVD-R)、書換型(DVD-RAM・DVD-RW)の 3 つに分かれ、大容量のブルーレイディスクにも同じ 3 種類があります。半導体メモリを記憶媒体に使う補助記憶を総称して半導体ディスクといい、SSD がその代表です。主記憶の一部をディスクのように見せて使う領域は RAM ファイルと呼びます。このほか USB メモリや SD/SDHC/SDXC カード、磁気テープ装置(DAT・ストリーマ。ブロック間隔 IBG(Interblock Gap)とブロック化因数で容量が決まる)、複数台をまとめたディスクアレイ、待機時にディスクを停止して省電力化する MAID(Massive Array of Idle Disks)があります。複数台のディスクを束ねて信頼性や速度を高める RAID は第 5 章で扱います。

入出力まわりの周辺用語 表示装置には、走査線を 1 本おきに描くインタレースモードと順に描くノンインタレースモード、文字だけを扱うテキストモードと画素単位で描くグラフィックスモード、1 画素分のビットをまとめて置くパックトピクセル方式と色の面ごとに分けて置くプレナピクセル方式、解像度の規格である VGA・SVGA・XGA といった用語があります。視線を検出するアイトラッキングデバイス、触覚を返すハプティックデバイス、図面を描くプロッター、音を出す音声出力装置も出力装置の仲間です。磁気ディスクの部位は、円盤を回すスピンドル、磁気ヘッドを支えるアクセスアームで、装置に固定された円盤を固定ディスク、断片化した領域を並べ直す操作をデフラグメンテーションといいます。トラックの詰まり具合をトラック密度、目的のセクタが回ってくるのを待つ時間をサーチタイム(=回転待ち時間)と呼び、記録媒体 1 巻をボリューム、その識別のために置くラベルをボリュームラベル・見出しラベル・後書きラベルといいます。ネットワークにつなぐ通信制御装置には、有線 LAN インタフェースカードと無線 LAN インタフェースカードがあります。

ひっかけポイント

出題実績 この中分類は過去問の再利用が特に多い分野です。直近 3 年だけでも、パイプラインの 24 サイクル・実効アクセス時間の約 0.08 倍・ブロック転送・VLIW・理論ピーク演算性能・LRU・SoC が、いずれも過去回とほぼ同一の問題として再出題されています。以下の 5 パターンを潰しておけば、誤答肢の作り方が読めるようになります。
ここがひっかけ 1: 実効アクセス時間の変数の割当て 選択肢が式の形で並ぶとき、問題文で「x はキャッシュのアクセス時間、y は主記憶のアクセス時間、r はヒット率」なのか、それとも「r はミス率」なのかを必ず確認します。正解が「(1 − r) × x + r × y」の形になる回もあり、式の暗記だけでは落とします。「掛ける相手が同じ側どうしか(ヒット率にはキャッシュ、ミス率には主記憶)」で検算してください。
ここがひっかけ 2: パイプラインの所要サイクル数 5 段・20 命令なら 24 サイクルです。誤答肢には 20 × 5 = 100(パイプラインを使わない逐次実行)、20 + 5 = 25(− 1 忘れ)、20 × 5 − 1 = 99 が並びます。図 4-4 のタイムチャートを頭に描いて、「最初の 1 命令に k サイクル、あとは 1 サイクルずつ」と唱えれば取り違えません。
ここがひっかけ 3: ライトスルーとライトバックの説明の貼り替え 「キャッシュに書き込むと同時に主記憶にも書き込むので、両者の内容は常に一致する」=ライトスルー、「キャッシュにだけ書き込み、そのブロックを追い出すときに主記憶へ反映する」=ライトバックです。設問がライトスルーを問うているのにライトバックの説明を置く、という入れ替えが定番です。
ここがひっかけ 4: VLIW とスーパースカラの取り違え 「コンパイル段階で依存関係のない複数の動作を 1 つの命令にまとめる」とあれば VLIW です。スーパースカラは実行時にハードウェアが並列化を判断します。さらに投機実行(分岐予測の結果を先に実行する)を混ぜた誤答肢も出ますが、これは並列化の話ではなく分岐の話です。
ここがひっかけ 5: 別技術の説明を貼った肢 メモリインタリーブの設問では、誤答肢としてキャッシュメモリ(速度差を埋める緩衝)や仮想記憶(主記憶より大きなアドレス空間)の説明が並びます。DRAM の設問では SRAM の性質(リフレッシュ不要・高速・高価)が貼られます。「その説明はどの技術のものか」を先に判定してから正解を選ぶと安全です。

理解度チェック(科目 A 形式)

Q1. キャッシュメモリのヒット率が 0.98、キャッシュのアクセス時間が 5 ナノ秒、主記憶のアクセス時間が 80 ナノ秒である。実効アクセス時間は何ナノ秒か。ミス時は主記憶のアクセス時間だけを要するものとする。
  1. 5.0
  2. 6.5
  3. 42.5
  4. 78.5

正解: イ 0.98 × 5 + 0.02 × 80 = 4.9 + 1.6 = 6.5 ナノ秒です。ア はキャッシュのアクセス時間そのもの、ウ は 5 と 80 の単純平均、エ はヒット率とミス率を逆に掛けた値(0.02 × 5 + 0.98 × 80)です。

Q2. メモリインタリーブの説明として適切なものはどれか。
  1. CPU と主記憶の速度差を埋めるために、高速で小容量のメモリを両者の間に置く。
  2. 補助記憶を利用して、主記憶の容量を超える大きなアドレス空間をプログラムに見せる。
  3. 主記憶の一部を画面表示用の領域として割り当て、専用メモリを省く。
  4. 主記憶を複数のバンクに分け、連続する番地を各バンクへ交互に割り当てて並列にアクセスする。

正解: エ インタリーブは主記憶側の高速化技法で、連続番地を別バンクに散らして同時読出しを可能にします。ア はキャッシュメモリ、イ は仮想記憶、ウ はユニファイドメモリの説明です。

Q3. 依存関係のない複数の動作を、コンパイルの段階で 1 つの長い命令にまとめておき、実行時に並列処理させる方式はどれか。
  1. スーパーパイプライン
  2. スーパースカラ
  3. VLIW
  4. 投機実行

正解: ウ 並列化の判断をコンパイラが行うのが VLIW(Very Long Instruction Word)です。ア はパイプラインの段数を増やして 1 段を短くする技術、イ は実行時にハードウェアが複数命令を並列発行する方式、エ は分岐予測に基づいて先に実行を進める技術で、いずれも「コンパイル段階で」という条件に合いません。

Q4. 4 段の命令パイプラインをもつプロセッサで 30 命令を実行する。各段の所要時間は 1 サイクルで、1 サイクルは 20 ナノ秒、ハザードは発生しないものとすると、実行時間は何ナノ秒か。
  1. 660
  2. 680
  3. 2,380
  4. 2,400

正解: ア 所要サイクル数は 命令数 + 段数 − 1 = 30 + 4 − 1 = 33 なので、33 × 20 = 660 ナノ秒です。イ は − 1 を忘れた 34 サイクル、ウ・エ はパイプラインを使わない逐次実行(30 × 4 = 120 サイクル)を基にした値です。

Q5. キャッシュメモリの書込み方式のうち、ライトスルー方式の説明として適切なものはどれか。
  1. キャッシュにだけ書き込み、そのブロックが追い出されるときに主記憶へ書き戻す。
  2. キャッシュと主記憶の両方に同時に書き込むので、両者の内容は常に一致する。
  3. 主記憶にだけ書き込み、キャッシュ上の該当ブロックは無効化する。
  4. 書込みは必ず主記憶に対して行い、キャッシュは読出し専用として使う。

正解: イ ライトスルーは書込みのたびに主記憶も更新するため一貫性の管理が楽な代わり、書込み性能は落ちます。ア はライトバック方式の説明です。ウ・エ はキャッシュの書込み方式として定義されていない架空の動作です。

Q6. DRAM の特徴として適切なものはどれか。
  1. 記憶素子にフリップフロップを使い、リフレッシュ動作を必要としない。
  2. 電源を切っても記憶内容が保持される不揮発性メモリである。
  3. SRAM に比べてアクセスが高速なので、キャッシュメモリとして使われる。
  4. SRAM に比べてセル構造が単純でビット単価が安いが、一定時間ごとのリフレッシュが必要である。

正解: エ DRAM はコンデンサ 1 個とトランジスタ 1 個でセルを構成するため安価で大容量にできますが、電荷が抜けるのでリフレッシュが要ります。ア と ウ は SRAM の性質、イ は ROM やフラッシュメモリの性質を貼り付けた誤答です。

Q7. SoC(System on a Chip)の説明として適切なものはどれか。
  1. 複数の LSI で構成していたシステム全体の機能を、1 つのチップ上に集積した LSI である。
  2. 製造後に利用者が内部の論理回路の構成を書き換えられる集積回路である。
  3. 特定用途向けに設計され、製造後は回路構成を変更できない専用の集積回路である。
  4. 複数のチップを 1 つのパッケージに収めた実装形態である。

正解: ア SoC は「システム 1 式を 1 チップに」が定義です。イ は FPGA、ウ は ASIC の説明です。エ は複数チップを 1 パッケージに封止する実装(SiP など)であり、1 チップに集積する SoC とは集積の単位が違います。

Q8. USB 3.0 の特徴として適切なものはどれか。
  1. 転送は半二重方式で、最大転送速度は 480 M ビット/秒である。
  2. 給電機能をもたないので、接続する周辺機器には別途電源が必要である。
  3. 全二重方式に対応し、スーパースピードモードでは 5 G ビット/秒で転送できる。
  4. 接続できる機器は 1 台だけで、ハブによる分岐接続はできない。

正解: ウ USB 3.0 は送信用と受信用の信号線を分けて全二重化し、スーパースピードモードを追加しました。ア は USB 2.0 の仕様です。イ は誤りで、USB はバスパワーによる給電に対応しています。エ も誤りで、ハブを使って多数の機器をツリー状に接続できます。

Q9. ユニファイドメモリ方式の説明として適切なものはどれか。
  1. グラフィックス処理専用の高速メモリを別に搭載し、主記憶とは切り離して使う。
  2. 主記憶の一部を表示用の領域として割り当てて使う。
  3. 複数のプロセッサがそれぞれ専用の主記憶をもち、通信路を介して連携する。
  4. 主記憶を複数のバンクに分け、交互にアクセスして転送速度を上げる。

正解: イ ユニファイドメモリは専用 VRAM を持たず、主記憶の一部をフレームバッファに充てる方式です。ア は専用 VRAM 型でユニファイドの反対、ウ は疎結合マルチプロセッサ、エ はメモリインタリーブの説明です。

Q10. 1 ノード当たりの理論ピーク演算性能が 320 GFLOPS のノードを 2,000 台使ってシステムを構成する。このシステム全体の理論ピーク演算性能は幾らか。
  1. 6.4 TFLOPS
  2. 64 TFLOPS
  3. 320 TFLOPS
  4. 640 TFLOPS

正解: エ 320 GFLOPS × 2,000 = 640,000 GFLOPS = 640 TFLOPS です(1 TFLOPS = 1,000 GFLOPS)。ア・イ は桁を 2 桁・1 桁取り違えた値、ウ はノード数を掛けずに単位だけ TFLOPS に読み替えた誤りです。

Q11. キャッシュに 4 つのブロック A〜D が格納されている。ロードされた時刻は A が 5、B が 15、C が 25、D が 35、最後に参照された時刻は A が 70、B が 95、C が 60、D が 85、参照回数は A が 8、B が 2、C が 6、D が 4 である。LRU 方式で追い出されるブロックはどれか。
  1. A
  2. B
  3. C
  4. D

正解: ウ LRU は「最後に参照された時刻が最も古い」ブロックを追い出します。最終参照時刻は C が 60 で最も古いので C が対象です。ア はロード時刻が最も古いので FIFO で選ばれるブロック、イ は参照回数が最も少ないので LFU で選ばれるブロック、エ はどの方式でも選ばれません。

Q12. クロック周波数 2 GHz、CPI が 2.5 のプロセッサが 1 秒間に実行できる命令数はおよそ幾らか。
  1. 800 M 命令
  2. 1,250 M 命令
  3. 2,000 M 命令
  4. 5,000 M 命令

正解: ア 1 秒間のクロック数 2×109 を CPI 2.5 で割ると 8×108 = 800 M 命令です。イ は CPI を周波数で割った誤り、ウ は CPI を無視してクロック数をそのまま命令数とした誤り、エ は割る代わりに掛けた誤りです。

Q13. 回転数 6,000 回/分、平均シーク時間 8 ミリ秒、1 トラック当たりの記憶容量 20,000 バイトの磁気ディスクから 5,000 バイトのデータを読み出すときの平均アクセス時間は何ミリ秒か。
  1. 10.5
  2. 13.0
  3. 15.5
  4. 20.5

正解: ウ 1 回転は 60 ÷ 6,000 = 10 ミリ秒なので、平均回転待ち時間は 5 ミリ秒、データ転送時間は 10 × (5,000 ÷ 20,000) = 2.5 ミリ秒です。合計 8 + 5 + 2.5 = 15.5 ミリ秒になります。ア は平均回転待ち時間(5 ミリ秒)の足し忘れ、イ はデータ転送時間(2.5 ミリ秒)の足し忘れ、エ は平均回転待ちを 1 回転分(10 ミリ秒)とした誤りです。

Q14. 同一のメモリ空間で、転送元の開始アドレス・転送先の開始アドレス・方向フラグ・転送語数を指定してブロック転送を行う CPU がある。3000 番地から 3004 番地までの 5 語を、3003 番地から 3007 番地へ転送したい。方向フラグは 0 で昇順、1 で降順に開始アドレスから 1 語ずつ転送するとき、指定するパラメタとして適切なものはどれか。
  1. 転送元 3000、転送先 3003、方向フラグ 0、語数 5
  2. 転送元 3000、転送先 3003、方向フラグ 1、語数 5
  3. 転送元 3004、転送先 3007、方向フラグ 0、語数 5
  4. 転送元 3004、転送先 3007、方向フラグ 1、語数 5

正解: エ 転送先が転送元より高位に 3 語ずれて重なっているので、末尾から降順に運ばないと、まだ読んでいない語を上書きします。降順では開始アドレスが領域の末尾になるため、転送元 3004・転送先 3007・方向フラグ 1・語数 5 が正解です。ア は昇順なので 3000 の値を 3003 へ書いた時点で元データが壊れます。イ は降順なのに開始アドレスが領域の先頭で、3000 番地から下位方向の無関係な領域を転送します。ウ は開始アドレスこそ末尾ですが、昇順では 3004 番地から上位方向へ読み進むので対象の 5 語を運べません。

まとめ

この章の計算はすべて「型」で解けます。式と、その式が問う対象を 1 枚の表にまとめます。

論点式・結論取り違えやすい点
実効アクセス時間h × Tc + (1 − h) × Tmヒット率とミス率、キャッシュと主記憶の対応。逆算も出る
パイプライン所要サイクル数 = 命令数 + 段数 − 1命令数 × 段数(逐次実行)と混同しない
CPI・MIPS実行時間 = 命令数 × CPI × クロック周期クロック周波数と周期は逆数。単位をそろえる
理論ピーク演算性能1 ノードの性能 × ノード数G と T の桁(1 T = 1,000 G)
アムダールの法則S = 1 ÷ { (1 − p) + p ÷ n }、上限 = 1 ÷ (1 − p)「上限」はプロセッサ数無限大の漸近値
バスの転送速度バス幅(バイト) × クロック周波数ビットのまま掛けない(8 で割る)
磁気ディスク平均シーク + 平均回転待ち(1 回転 ÷ 2)+ 転送時間回転待ちを 1 回転分にしない。3 つ全部足す
VRAM 容量横画素 × 縦画素 × 1 画素のバイト数色深度がビット表記なら 8 で割る

知識問題は「どちらが速く、どちらが安いか」「誰が決めるか」という対比で整理します。

対比片方もう片方
RAM の 2 種DRAM: コンデンサ、安い・大容量・リフレッシュ要、主記憶SRAM: フリップフロップ、速い・高い、キャッシュ
キャッシュ書込みライトスルー: 同時書込み、常に一致、遅いライトバック: 追出し時に反映、速い、一時的に不一致
並列化の主体VLIW: コンパイラが決めるスーパースカラ: 実行時にハードが決める
命令セットCISC: 可変長・複雑、マイクロプログラム制御RISC: 固定長・単純、ワイヤードロジック、パイプライン向き
誤り制御パリティ: 1 ビット誤りの検出のみハミング符号・ECC: 1 ビットの訂正まで可能
チップの作り分けFPGA: 製造後に回路を書き換えられるASIC: 専用設計で変更不可、量産向き
置換アルゴリズムLRU: 最終参照時刻が最古/LFU: 参照回数が最少FIFO: ロード時刻が最古
入出力制御プログラム制御: CPU が転送に付き合うDMA・チャネル制御: CPU を介さず転送し、完了を割込みで通知

本章のキャッシュと記憶階層は、第 6 章で扱う仮想記憶(主記憶と補助記憶の階層)とまったく同じ発想です。ページ置換えアルゴリズムに LRU・FIFO が再登場するので、この章で身につけた「同じ表を基準ごとに読み替える」練習がそのまま活きます。