2026 応用情報技術者試験 科目A 007 — CPU・キャッシュ・性能計算
応用情報技術者試験の科目Aに必要なクロック周期とCPU実行時間、命令ミックスによる加重平均CPI、キャッシュのヒット率と実効アクセス時間、パイプラインの処理時間とハザードを、例題とオリジナル演習問題5問で学びます。
AP科目A・第7回 · 2026年度・シラバスVer.7.2に基づく独立した学習資料です。IPAとの提携はなく、合格を保証しません。 シリーズ一覧を見る
- 改訂日:2026-10-20
- 出典確認日:2026-10-20
- 対象:2026年 IPA 応用情報技術者試験(AP)科目A、シラバス Ver.7.2
免責事項:試験の形式や出題範囲はIPAにより変更される可能性があります。受験前に必ずIPAの公式資料を確認してください。本記事は独自の学習資料であり、IPAが確認・推奨したものではありません。本文の問題はすべてオリジナル問題であり、過去問ではありません。
0. 学習目次
- 用語表(KO/JA/EN)
- CPU性能計算:クロック周期、CPUサイクル数、実行時間
- 加重平均CPI(命令ミックス)
- キャッシュ:ヒット率・ミス率と実効アクセス時間(2つの表記の流儀)
- パイプライン:理想的なk段モデルとその限界
- オリジナル練習問題5問(正解・解説・誤答選択肢の説明)
- クイックシート
- よくある落とし穴
- 最終セルフチェック
- 1・3・7日後の復習の提案
- 出典とシラバス対応
1. 用語表
| KO | JA | EN |
|---|---|---|
| 클록 주파수 | クロック周波数 | clock frequency |
| 클록 주기(사이클 타임) | サイクルタイム(クロック周期) | clock period (cycle time) |
| CPI(명령당 평균 사이클 수) | CPI(1命令当たりの平均クロック数) | CPI (cycles per instruction) |
| 명령 수 | 命令数 | instruction count |
| 명령 믹스 | 命令ミックス | instruction mix |
| CPU 시간(실행 시간) | CPU時間(実行時間) | CPU time (execution time) |
| MIPS | MIPS | MIPS |
| 히트율 / 미스율 | ヒット率 / ミス率 | hit rate / miss rate |
| 히트 시간 | ヒット時間 | hit time |
| 미스 페널티 | ミスペナルティ | miss penalty |
| 실효(평균) 접근 시간 | 実効アクセス時間 | effective (average) access time, AMAT |
| 명령 파이프라인 | 命令パイプライン | instruction pipeline |
| 파이프라인 해저드 | パイプラインハザード | pipeline hazard |
| 데이터/구조/제어 해저드 | データ/構造/制御ハザード | data/structural/control hazard |
| 스톨 / 플러시 | ストール / フラッシュ | stall / flush |
| 지연 시간 / 처리량 | レイテンシ / スループット | latency / throughput |
2. CPU性能計算
2.1 前提(すべての式に適用)
- CPU時間モデル:ここで求めるのは、CPUが命令を実行する時間だけです。I/O待ち、OS、他プロセスなどを含むシステム全体の経過時間は、この式から推定しません。
- CPIは平均値:与えられた命令ミックスに対する平均CPIです。ミックスが変わればCPIも変わります。
- 同一ワークロード:特に断りがない限り、同じプログラム・同じ命令数で比較します。
- 単位:1 GHz = 10^9 サイクル/s、1 MHz = 10^6 Hz、1 ns = 10^-9 s、Hz = 1/s。
- クロックだけで判断しない:命令セットアーキテクチャ(ISA)が異なれば命令数とCPIが変わるため、クロック周波数だけでどちらのCPUが優れているかは結論できません。
2.2 式と単位
| 式 | 単位 |
|---|---|
| クロック周期 T = 1 / f | s = 1 / (サイクル/s) → s/サイクル |
| CPUサイクル数 = 命令数 × CPI | 命令 × (サイクル/命令) = サイクル |
| 実行時間 = 命令数 × CPI / f = CPUサイクル数 × T | サイクル / (サイクル/s) = s |
2.3 必須例題
条件:f = 2.4 GHz、命令数 = 1.2×10^9、平均CPI = 1.5
- クロック周期:T = 1 / (2.4×10^9 /s) ≈ 4.167×10^-10 s ≈ 0.417 ns
- CPUサイクル数:1.2×10^9 命令 × 1.5 サイクル/命令 = 1.8×10^9 サイクル(命令の単位が約分される)
- 実行時間:1.8×10^9 サイクル / (2.4×10^9 サイクル/s) = 0.75 s(サイクルの単位が約分され、sだけが残る)
- 検算:1.8×10^9 サイクル × (1/2.4×10^9) s/サイクル = 0.75 s
2.4 MIPSに関する注意
MIPS = f / (CPI × 10^6) です。上の例題なら 2.4×10^9 / (1.5 × 10^6) = 1600 MIPS です。しかしMIPSは命令セットと命令ミックスに依存します。同じ処理に必要な命令数はISAごとに異なるため、MIPSは異なるアーキテクチャ間の信頼できる性能順位の指標ではありません。
3. 加重平均CPI
3.1 式
加重CPI = Σ(命令種別 i の比率 × CPI_i)、ただし比率の合計 = 1(単位:サイクル/命令)
3.2 例題
条件:命令数 = 2.0×10^9、f = 2.0 GHz
| 命令種別 | 比率 | CPI | 比率 × CPI |
|---|---|---|---|
| 演算(ALU) | 0.5 | 1 | 0.5 |
| ロード/ストア | 0.3 | 2 | 0.6 |
| 分岐 | 0.2 | 3 | 0.6 |
| 合計 | 1.0 | — | 1.7 |
- 加重CPI = 1.7 サイクル/命令
- CPUサイクル数 = 2.0×10^9 × 1.7 = 3.4×10^9 サイクル
- 実行時間 = 3.4×10^9 サイクル / (2.0×10^9 サイクル/s) = 1.7 s
- 独立検算(種別ごとのサイクル数の合計):1.0×10^9×1 + 0.6×10^9×2 + 0.4×10^9×3 = 1.0×10^9 + 1.2×10^9 + 1.2×10^9 = 3.4×10^9 サイクル ✓
- 注意:CPIの単純平均 (1+2+3)/3 = 2.0 は比率を無視しているため誤りです。
4. キャッシュ:実効アクセス時間
4.1 定義
- ヒット率 h:アクセスのうちキャッシュで見つかった割合(0 ≤ h ≤ 1)
- ミス率 = 1 − h
- パーセント → 確率の変換:95% = 95/100 = 0.95、ミス率 = 1 − 0.95 = 0.05。式には必ず0〜1の値を入れます。
4.2 2つの流儀(混ぜないこと)
流儀A — ヒット時間をすべてのアクセスに含める
AMAT = ヒット時間 + ミス率 × ミスペナルティ
- ミスペナルティ = ミスを検出した後に追加でかかる時間(ns)
- すべてのアクセスはまずキャッシュを確認(ヒット時間)し、ミスのときだけペナルティが加わるというモデルです。
流儀B — 総レイテンシの加重平均
実効アクセス時間 = h × ヒット時のレイテンシ + (1 − h) × ミス時の総レイテンシ
- ミス時の総レイテンシ = ミスしたときのアクセス1回にかかる全体の時間(ns)
変換:ミス時の総レイテンシ = ヒット時間 + 追加ミスペナルティ。この変換を行えば、2つの流儀は同じ値になります。流儀Aの「追加ペナルティ」を流儀Bの「総レイテンシ」の位置にそのまま入れたり、その逆をしたりすると誤りです。
4.3 必須例題
条件:ヒット時間 2 ns、ヒット率 95%、追加ミスペナルティ 60 ns
- 確率への変換:h = 0.95、1 − h = 0.05
- 流儀A:2 ns + 0.05 × 60 ns = 2 + 3 = 5 ns
- 流儀Bへ変換:ミス時の総レイテンシ = 2 + 60 = 62 ns 0.95 × 2 ns + 0.05 × 62 ns = 1.9 + 3.1 = 5 ns
- 両方の流儀が5 nsで一致します。単位:(無次元の確率)× ns = ns。
試験問題では、「ミス時の主記憶アクセス時間」が追加分なのか総時間なのかを問題文から判断する必要があります。判断できない場合は、どちらの流儀を仮定したかを明記してください。
5. パイプライン
5.1 理想的なk段パイプラインの前提
- k段、すべての段の時間が等しく t
- ストール・フラッシュなし、ハザードなし
- 段間のラッチ(レジスタ)オーバーヘッドは0
- n個の命令を連続して実行
5.2 式
| 項目 | 式 | 単位 |
|---|---|---|
| 非パイプライン時間 | n × k × t | ns |
| パイプライン時間 | (k + n − 1) × t | ns |
| 1命令のレイテンシ | k × t(理想モデルでも短くならない) | ns |
| 定常状態のスループット | 1/t に近づく | 命令/ns |
(k + n − 1) の意味:最初の命令がk段すべてを通過するのに k×t(フィル)、その後残りの n − 1 個が t ごとに1つずつ完了します。最後の命令がパイプラインから抜けるドレイン区間もこの式に含まれます。
5.3 例題
条件:k = 5、t = 2 ns、n = 100
- 非パイプライン:100 × 5 × 2 ns = 1000 ns
- パイプライン:(5 + 100 − 1) × 2 ns = 104 × 2 = 208 ns
- 速度向上:1000 / 208 ≈ 4.81倍(k = 5 より小さい)
- 1命令のレイテンシ:5 × 2 = 10 ns(パイプライン化しても変わらない)
- 定常状態のスループット:1/t = 0.5 命令/ns = 5×10^8 命令/s
レイテンシとスループット:パイプラインは「単位時間当たりに完了する命令数(スループット)」を高める技術であり、1つの命令が開始から終了までにかかる時間(レイテンシ)を短くするものではありません。理想モデルでも、速度向上はnが大きくなるにつれてkに近づくだけで、常にkに等しいわけではありません。
5.4 現実の限界
- フィル/ドレイン:nが小さいと、(k − 1)t の固定コストの割合が大きくなります。
- データハザード:後の命令が前の命令の結果を必要とするときに待ちが生じます。
- 構造ハザード:同じハードウェア資源(例:メモリポート)を同時に使おうとして競合します。
- 制御ハザード:分岐結果が確定するまで次の命令を確定できません。
- ストール/フラッシュ:ハザードにより空きサイクル(バブル)が入ったり、誤って取り込んだ命令を破棄したりします。
- 段の時間の不均等:クロックは最も遅い段に合わせる必要があるため、t = 最大の段の時間になります。
- ラッチオーバーヘッド:段間のレジスタ時間が加わるため、段数を増やし続けても効果が際限なく大きくなるわけではありません。
6. オリジナル練習問題(5問)
以下の問題はすべて本記事のために新たに作成したオリジナル問題であり、IPAの過去問ではありません。
問題1(オリジナル)— CPU時間と単位
クロック周波数2.5 GHzのCPUで、命令数3.0×10^9、平均CPI 2.0のプログラムのCPU実行時間はどれか。(CPU時間モデル、同一ワークロード)
- A. 0.6 s
- B. 1.2 s
- C. 2.4 s
- D. 2400 s
正解:C
解説:サイクル数 = 3.0×10^9 × 2.0 = 6.0×10^9 サイクル。時間 = 6.0×10^9 サイクル / (2.5×10^9 サイクル/s) = 2.4 s。
- A(0.6 s):CPIを掛けずに割った場合 — 3.0×10^9 / (2.0 × 2.5×10^9)。
- B(1.2 s):CPIを無視し、命令数 / f だけを計算した場合。
- D(2400 s):GHzをMHz(10^6)として誤って換算した場合 — 6.0×10^9 / 2.5×10^6。
問題2(オリジナル)— 加重CPI
命令ミックスが種別X 60%(CPI 1)、種別Y 30%(CPI 3)、種別Z 10%(CPI 5)である。命令数1.0×10^9、クロック1.0 GHzのとき、加重CPIとCPU実行時間の組合せはどれか。
- A. CPI 3.0、3.0 s
- B. CPI 2.0、2.0 s
- C. CPI 2.0、0.5 s
- D. CPI 1.0、1.0 s
正解:B
解説:比率の合計 0.6 + 0.3 + 0.1 = 1.0 を確認。加重CPI = 0.6×1 + 0.3×3 + 0.1×5 = 0.6 + 0.9 + 0.5 = 2.0。サイクル数 = 1.0×10^9 × 2.0 = 2.0×10^9。時間 = 2.0×10^9 / 1.0×10^9 /s = 2.0 s。
- A:CPIを単純平均 (1+3+5)/3 = 3.0 で計算 — 比率を無視している。
- C:CPIは正しいが、時間を 命令数 / (CPI × f) と誤って計算している。
- D:最も比率の大きい種別XのCPIだけを使っている。
問題3(オリジナル)— キャッシュの流儀
ヒット時間1 ns、ヒット率90%で、ミスしたときのアクセス1回の総レイテンシが51 ns(ヒット確認時間を含む)である。実効アクセス時間はどれか。
- A. 6.0 ns
- B. 5.9 ns
- C. 6.1 ns
- D. 46.0 ns
正解:A
解説:h = 0.90、1 − h = 0.10。流儀B:0.90 × 1 + 0.10 × 51 = 0.9 + 5.1 = 6.0 ns。流儀Aで検算:追加ペナルティ = 51 − 1 = 50 ns、1 + 0.10 × 50 = 6.0 ns。
- B(5.9 ns):流儀Bの式に総レイテンシではなく追加ペナルティ50 nsを入れた — 0.9 + 5.0。ミス時のヒット確認時間が抜けている。
- C(6.1 ns):流儀Aの式に総レイテンシ51 nsを追加ペナルティとして入れた — 1 + 5.1。ヒット時間を二重に計上している。
- D(46.0 ns):hと1 − hを取り違えた — 0.10 × 1 + 0.90 × 51。
問題4(オリジナル)— 理想的パイプラインの時間
各段の時間がすべて5 nsの理想的な4段パイプライン(ストール・オーバーヘッドなし)で、20個の命令を実行するのにかかる時間はどれか。
- A. 100 ns
- B. 115 ns
- C. 120 ns
- D. 400 ns
正解:B
解説:(k + n − 1) × t = (4 + 20 − 1) × 5 = 23 × 5 = 115 ns。
- A(100 ns):n × t だけを計算 — フィル区間 (k − 1)t = 15 ns を無視している。
- C(120 ns):(k + n) × t で計算 — 1を引いていない。
- D(400 ns):非パイプライン時間 n × k × t。
問題5(オリジナル)— 前提と限界
次の記述のうち、正しいものはどれか。
- A. クロック周波数が高いCPUは、ISAに関係なく、どんなプログラムでも常に早く終える。
- B. 理想的なk段パイプラインでは、1命令のレイテンシが k×t から t に短縮される。
- C. MIPS値は、異なるISAのCPU性能をそのまま比較できる指標である。
- D. 命令数とクロック周波数が同じなら、平均CPIが小さくなるほど、CPU時間はCPIに比例して短くなる。
正解:D
解説:CPU時間 = 命令数 × CPI / f なので、命令数とfが固定ならCPU時間 ∝ CPI。
- A:ISAが異なれば命令数・CPIが変わるため、クロックだけでは判断できない。また、CPU時間モデルはシステム全体の経過時間については何も言わない。
- B:パイプラインはスループットを高めるだけで、理想モデルでも1命令のレイテンシは k×t のまま。
- C:MIPSは命令セットと命令ミックスに依存するため、異なるISA間の比較には信頼できない。
正解一覧
| 問題 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 正解 | C | B | A | B | D |
7. クイックシート
- T = 1/f(s)、2.4 GHz → ≈ 0.417 ns
- サイクル数 = 命令数 × CPI
- CPU時間 = 命令数 × CPI / f(s)
- 加重CPI = Σ 比率_i × CPI_i(Σ 比率 = 1)
- MIPS = f / (CPI × 10^6) — ISA・ミックスに依存
- 流儀A:AMAT = ヒット時間 + (1 − h) × 追加ミスペナルティ
- 流儀B:h × ヒット時のレイテンシ + (1 − h) × ミス時の総レイテンシ、ミス時の総レイテンシ = ヒット時間 + 追加ペナルティ
- 非パイプライン n·k·t、パイプライン (k + n − 1)·t、レイテンシ k·t、スループット → 1/t
- 必須例題の答え:1.8×10^9 サイクル、0.75 s / キャッシュ 5 ns(両方の流儀)
8. よくある落とし穴
- GHzをMHzとして換算する(10^9 と 10^6 の混同)。
- CPIを掛けずに割る。
- 加重CPIを単純平均で計算する。
- 比率の合計が1になっているか確認しない。
- ヒット率95%に95を代入する(0.95に変換すること)。
- 流儀Aの追加ペナルティと流儀Bの総レイテンシを混ぜる。
- パイプライン時間で (k − 1)t のフィル区間を落とす。
- 「パイプラインの速度向上は常にちょうどk倍」「1命令も速くなる」と誤解する。
- クロックやMIPSだけで、異なるISAのCPUの優劣を判断する。
- CPU時間をシステム全体の経過時間と取り違える。
9. 最終セルフチェック
- 2.4 GHz、1.2×10^9 命令、CPI 1.5 から、単位の約分を含めて 1.8×10^9 サイクルと 0.75 s を導出できる。
- 比率の合計が1の命令ミックスで加重CPIと実行時間を計算し、種別ごとのサイクル数の合計で検算できる。
- 流儀AとBを区別し、ヒット2 ns・ヒット率95%・追加ペナルティ60 nsで、両方の方法から5 nsを得られる。
- (k + n − 1)t をフィル/ドレインで説明し、レイテンシとスループットを区別できる。
- 3種類のハザード、ストール/フラッシュ、段の不均等、ラッチオーバーヘッドが理想モデルを崩す理由を説明できる。
- MIPSやクロックだけでは結論できない理由を説明できる。
10. 復習の提案
- 1日後:クイックシートだけを見て、必須例題3つ(CPU時間、加重CPI、キャッシュ)を白紙から計算し直す。
- 3日後:オリジナル問題5問を解説を隠して解き直し、各誤答選択肢がどのミスから生じるかを言葉で説明する。
- 7日後:数値を変えて各タイプの問題を1問ずつ自作し(例:別のヒット率、別のk・n)、よくある落とし穴10項目を点検する。
11. 出典とシラバス対応
- 公式出典:IPA「応用情報技術者試験(レベル3)シラバス Ver.7.2」 https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kq5-att/syllabus_ap_ver7_2.pdf(確認日 2026-10-20、PDF 14–16ページ)
- 対応(シラバスの見出しをそのまま記載):
- 大分類2:コンピュータシステム/中分類3:コンピュータ構成要素 › 1. プロセッサ › (8)プロセッサの性能 → 本文2章・3章、問題1・2・5
- 大分類2:コンピュータシステム/中分類3:コンピュータ構成要素 › 1. プロセッサ › (9)プロセッサの高速化技術 → 本文5章、問題4・5
- 大分類2:コンピュータシステム/中分類3:コンピュータ構成要素 › 2. メモリ › (5)メモリの容量と性能 → 本文4章、問題3
- 大分類2:コンピュータシステム/中分類3:コンピュータ構成要素 › 2. メモリ › (3)メモリシステムの構成と記憶階層 → 範囲の参照のみ(キャッシュのマッピング方式・書込み方式は後の回で扱う)
- シラバスは出題範囲のみを定めます。本文の式・例題・問題は本記事独自の説明であり、外部資料や過去問は使用していません。