忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【企業経営】投資判断のモノサシ!「現在価値」の評価|情報処理問題1000本ノック

財務管理やIT投資の意思決定において、基本中の基本となる考え方。お金が持つ「時間的な価値」を正しく評価するためのキーワードを攻略しましょう。

1. 【 問題 】:お金の時間的価値の評価

【 問題 】 企業経営における投資評価や財務管理において、将来獲得することが見込まれる収入や利益などのキャッシュフローを、金利やリスク(割引率)などを考慮して、現時点における価値に換算したものはどれでしょうか?

① 将来価値 (Future Value)
② 現在価値 (Present Value)
③ 内部利益率 (Internal Rate of Return)
④ 期待投資収益率 (Expected Rate of Return)

2. 正解:

正解: ② 現在価値(Present Value / PV)

3. 解説:「未来の100万円」は「今の100万円」より価値が低い?

現在価値とは、「未来のお金を、今のお金に換算するといくらになるか」を計算したものです。経済の世界では、「お金には時間的な価値がある」と考えます。

【なぜ将来の価値を「現在価値」に直す必要があるのか?】

・例えば、年利が 5% の世界があるとします。
・今「100万円」を銀行に預けると、1年後には利息がついて「105万円」になります。
・この裏を返すと、「1年後の105万円」の『現在価値』は「100万円」である、ということになります。

→ システム投資などで「このシステムを導入すれば、3年後に1,000万円の利益が出ます!」と言われたとき、それをそのまま今の投資額と比べてはいけません。金利やリスク(割引率)を使って現在価値に目減り(割引)させてから比較しないと、正しい投資判断ができないため、この概念が使われます。
[ 選択肢のひっかけポイント ]
★ ① 将来価値:現在価値の真逆です。「今の100万円が、将来(利息がついて)いくらになるか」を表した値です。
★ ③ 内部利益率(IRR):投資によって得られる将来の現在価値の合計と、初期投資額がちょうど「トントン(ゼロ)」になるような割引率のことです。
★ ④ 期待投資収益率:ある投資に対して、投資家や企業が平均的に期待する(見込んでいる)収益の割合(リターン)のことです。

1. 理解のコツ: 「友達への貸し付け」に例えてみましょう。「今すぐ1万円を返してくれる」のと、「10年後に1万円を返す(インフレや踏み倒しのリスクあり)」と言われるのでは、絶対に今もらう方が嬉しい(価値が高い)ですよね。つまり、未来の約束(収入)は、今すぐ手に入る現物よりも価値が低い(割り引かれる)のです。そのリスクや金利を引いて、今現在の価値に直したものが現在価値です。
2. 試験対策の視点: 「将来獲得することが見込まれる収入」「現時点における価値に換算」というフレーズがあれば現在価値が正解です。応用情報やITストラテジスト試験では、この現在価値の考え方を使った応用技である「NPV(正味現在価値法)」の計算問題などが非常によく狙われます。


4. まとめ

「将来手に入る予定の利益を、金利やリスクを考慮して今現在の価値に目減りさせて評価する指標」。これが現在価値です。企業の経営陣が「この巨大なシステム開発に今数億円を投資すべきか?」を冷徹に判断する上で、絶対に欠かせない財務のモノサシとなっています。


PR

【開発管理】顧客の頭の中をのぞき込む!要件定義の第一歩「要求獲得」|情報処理問題1000本ノック

要件定義プロセスはいくつかの段階に分かれています。「言われたことをただ書く」のではなく、顧客と対話してニーズを引き出す最初のフェーズを攻略しましょう。

1. 【 問題 】:要求定義プロセスの段階

【 問題 】 要求定義のプロセスのうち、現状の業務分析やステークホルダーへのインタビュー、ミーティングなどを通じて、利用者がシステムに求めている潜在的な要望やビジネスニーズを引き出し、理解していく段階に当てはまるものはどれでしょうか?

(ア)要求獲得
(イ)要求分析
(ウ)要求仕様化
(エ)要求の検証

2. 正解:

正解: (ア)要求獲得(要求エライシテーション)

3. 解説:まずは「引き出す」ことからすべてが始まる

要求定義(要求工学)のプロセスは、一般的に「①獲得 ➡️ ②分析 ➡️ ③仕様化 ➡️ ④検証」というサイクルを回します。今回の問題は、まさにそのスタート地点である「①獲得」の特徴を突いたものです。

【試験に出る!要求定義4つのプロセスの違い】

■ (ア)要求獲得(Elicitation)
内容:インタビュー、ワークショップ、現状業務の観察などを通じて、顧客の要望やビジネスの目的を「引き出して理解する」段階です。 ← ココが問題の正解!

■ (イ)要求分析(Analysis)
内容:獲得したバラバラな要求を整理し、矛盾を解決したり、実現可能性(コストや技術)を考慮して「ふるいにかける・優先順位をつける」段階です。

■ (ウ)要求仕様化(Specification)
内容:合意した要求を、開発者も読めるように「要件定義書」などの「ドキュメント(文書)の形に落とし込む」段階です。

■ (エ)要求の検証(Validation)
内容:出来上がった要件定義書を顧客と一緒にレビューし、「本当にこの内容で、あなたが欲しかったシステムが作れますか?」と最終確認・承認をもらう段階です。

1. 理解のコツ: 「お医者さんの診察」に例えてみましょう。患者さんに「今日はどうされました?どこが痛みますか?(インタビュー)」と聞いて、現行の症状をじっくり聞き出すのが要求獲得です。その情報をもとに「原因は何か、治療可能か」を考えるのが分析、カルテに書くのが仕様化、最後に「この治療方針でいいですね?」と同意をとるのが検証、という流れです。
2. 試験対策の視点: 「現状業務やインタビューから」「利用者の要求を理解していく(引き出す)」という文脈が来たら「要求獲得」が一択です。カタカナ表記で「要求エライシテーション」と出題されることもあるため、両方の名前をセットで覚えておくのが得点アップの秘訣です。


4. まとめ

「ステークホルダーとのコミュニケーションを通じて、システムの根底にある要望を正しく引き出すフェーズ」。これが要求獲得です。この段階で顧客の真のニーズを理解できていないと、その後の分析や仕様化がすべて『砂上の楼閣』になってしまうため、非常に丁寧なヒアリングスキルと業務理解が求められる重要なプロセスです。


【知識】顧客の「本当の欲しい」を引き出す!「要求獲得」の全貌|情報処理問題1000本ノック(解説編)

システム開発の最上流工程であり、プロジェクトの成否を握る最重要局面「要求獲得(要求エライシテーション)」。単に言われたことをメモするのではない、本質的な知識を整理しましょう。

1. 要求獲得で「絶対に聞き出すべき」4つの本質

ステークホルダー(利害関係者)に対してヒアリングを行う際は、表面的な機能の要望(「画面にボタンが欲しい」など)ではなく、以下の根本的な問いをぶつけ、合意形成を行う必要があります。

システムの目的は?(Why:なぜこのシステムを作るのか)
何を達成したいの?(Goal:最終的なゴール、経営目標は何か)
どんなビジネスニーズに対応するの?(Need:市場や業務のどんな課題を解決したいのか)
システムがビジネスで、どう使われていくの?(Operation:現場でどのような業務フローになるのか)

2. 要求獲得が「極めて難しい」3つの理由

要求獲得は、システム開発の中で最も人間臭く、トラブルが起きやすい工程です。それには以下の3つの大きな原因が存在します。

1. スコープの問題
システム化の「境界線(どこまでやるか)」の設定が甘いと、「あれもやりたい、これもやりたい」とスコープが無限に広がっていき、予算と納期が崩壊します。

2. 要求や問題自体の問題
利用者が、問題自体を正しく認識していない(何に困っているか、何が欲しいのかを自分たちで言語化できない)。
・立場(経営層、現場のリーダー、一般社員など)によって、問題のとらえ方が全く異なる

3. 時間による変化の問題
ビジネス環境の変化、法改正、あるいは開発が進んで画面が見えてくることによって、要求は時間とともに必ず変化・追加される性質を持っています。

3. 要求獲得プロセスの「7つの実践ステップ」

要求を獲得し、仕様として確立するまでには、以下の一連のエンジニアリング作業を順番に進めていきます。

ステップ作業内容
ステップ 1 ビジネスや技術の面から実現可能性を検討(フィージビリティスタディ)
ステップ 2 要求の定義および組織での役割の特定(誰がどの要求を出しているかの明確化)
ステップ 3 技術環境(アーキテクチャ等)の定義(システムを動かす土台の策定)
ステップ 4 ドメインの制約定義(業界ルールや法規制などの縛りの定義)
ステップ 5 要求獲得の技法の定義(インタビュー、ミーティング、観察など手法の決定)
ステップ 6 要求獲得、プロトタイプでの確認(試作品を見せて認識ズレを早期に解消する)
ステップ 7 ユースケースシナリオの定義(実際の利用シーンに沿った具体的な動きの落とし込み)

1. 理解のコツ: 顧客は「ドリル(機能)」が欲しいのではなく「穴(ビジネスの成果)」が欲しいのだ、という格言があります。要求獲得の難しさを突破するには、ステップ6にあるプロトタイプ(試作品)を素早く見せ、「欲しかったのはこれじゃない」を先に言わせることが最大の防御になります。
2. 試験対策の視点: 応用情報以上の高度試験(システムアーキテクトなど)では、「利用者は要件を正しく認識していない」という前提をもとに、それを解決するための「プロトタイプ」「ユースケース記述」「JAD(共同アプリケーション開発)」などの技法と絡めて、午後問題の記述や論文のテーマとして非常によく狙われます。


4. まとめ

「ステークホルダーの潜在的なニーズを引き出し、実現可能性や制約を考慮しながら、具体的な利用シナリオに落とし込んでいく一連のプロセス」。それが要求獲得です。ここでの妥協や認識ズレは、後々の工程(設計・テスト)で何十倍もの手戻りコストとなって跳ね返ってくるため、7つのステップを堅実に回していく管理能力が求められます。

【先端技術】膨大な計算が信頼を生む!「PoW(プルーフ・オブ・ワーク)」|情報処理問題1000本ノック

中央管理者がいないブロックチェーンにおいて、「誰の言うことが正しいか」を多数決ではなく『計算量の多さ』で決定する革新的なアルゴリズム、PoWを攻略しましょう。

1. 【 問題 】:ブロックチェーンの合意形成アルゴリズム

【 問題 】 ブロックチェーンネットワークにおいて、参加者(マイナー)が膨大な計算資源を消費して特定の条件を満たすハッシュ値(ナンス)を競って探し出し、最も早く計算に成功した者が新しいブロックの承認権と報酬を得ることで、台帳の正当性を合意する仕組みはどれでしょうか?

① PoS (Proof of Stake)
② PoW (Proof of Work)
③ PoI (Proof of Importance)
④ PBFT (Practical Byzantine Fault Tolerance)

2. 正解:

正解: ② PoW(Proof of Work / プルーフ・オブ・ワーク)

3. 解説:「仕事の成果」が裏付ける絶対的な信頼

PoW(Proof of Work)は、日本語で「仕事による証明」という意味です。ここでの仕事とは、コンピュータによる「超高速の総当たり計算」を指します。

【PoWが改ざんを不可能にする数学的マジック】

・PoWのルールでは、最も多くの計算(仕事)が積み上げられたチェーンを「本物の正しい歴史」として全員が認めます。
・もし悪意のあるハッカーが過去のデータを書き換えよう(改ざんしよう)とすると、それ以降のすべてのブロックのPoW(計算)を、世界中の真面目な参加者全員の合計スピードを上回る超大パワーでやり直す必要があります。
・これは事実上不可能なため、「悪いことをするよりも、真面目に計算して報酬をもらった方が得である」という経済的なインセンティブによって安全性が保たれています。
[ 選択肢のひっかけポイント(他の合意形成アルゴリズム) ]
★ ① PoS:計算量ではなく、その通貨を「多く持っている(Stake)」人に次のブロックの承認権を与える仕組みです。PoWの欠点である莫大な消費電力を抑えるために生まれました。
★ ③ PoI:通貨の保有量だけでなく、取引の回数など「ネットワークへの貢献度(Importance)」で権利を決める仕組みです。

1. 理解のコツ: 「世界一難しいパズル大会」をイメージしてください。主催者から「答えの先頭に0が20個並ぶような数字を探せ」という超難問が出され、世界中の人がスーパーコンピュータをフル回転させて探します。一番最初に「見つけた!」と答えを出した人(プルーフ)は、それだけ「誰よりもたくさん脳細胞(計算資源)を使って仕事(ワーク)をした」という動かぬ証拠になります。この大会を繰り返す仕組みがPoWです。
2. 試験対策の視点: 「膨大な計算資源を消費」「ナンスを探し出す」「最も早く成功した者が報酬を得る」というキーワードがあればPoWが正解です。対義語として並べられる「PoS(資産型)」との違い(電気代をかけるPoW vs 資産を凍結するPoS)が午前試験で非常によく狙われます。


4. まとめ

「莫大なコンピュータの計算量を担保にして、データの正当性を全員で合意するシステム」。これがPoWです。ビットコインの生みの親であるサトシ・ナカモトが考案したこの仕組みにより、性悪説に基づいた「誰も信用できないネットワーク」の中に、数学的で完璧な信頼を築くことができるようになりました。


【ブロックチェーン】ブロックの生成速度を一定に保つ自動ブレーキ!「採掘難易度」|情報処理問題1000本ノック

ビットコインなどのマイニング競争。参加者が増えてコンピュータの性能が上がると、ブロックは一瞬で作れてしまうはず。それを防ぐための「採掘難易度」の仕組みを攻略しましょう。

1. 【 問題 】:ブロックチェーンの合意形成と制御メカニズム

【 問題 】 ブロックチェーン(特にPoWを採用するシステム)において、ネットワーク全体の計算能力(ハッシュレート)の変動に関わらず、新しいブロックが生成される間隔(例:ビットコインでは約10分)を常に一定に保つために、動的に自動調整されるパラメーター(指標)はどれでしょうか?

① 採掘難易度(ディフィカルティ)
② ブロックサイズ
③ トランザクション手数料(ガス代)
④ ナンス(Nonce)

2. 正解:

正解: ① 採掘難易度(ディフィカルティ / Difficulty)

3. 解説:ゲームの難易度を自動で変えるAIシステム

PoW(プルーフ・オブ・ワーク)では、ブロックを作るために「ハッシュ値が、ある一定の基準(目標値)より小さくなるような、特殊な数字(ナンス)を総当たりで見つける」という宝探しゲームを行っています。

【採掘難易度が果たす超重要な役割】

■ なぜ難易度を変える必要があるのか?
・世界中のマイナー(採掘者)が超高性能なマシンを大量に投入すると、宝(ナンス)はあっという間に見つかってしまい、ブロックの生成スピードが急加速してしまいます。
・逆に、マイナーが減って全体の計算力が落ちると、次のブロックがいつまで経っても作られず、送金が遅延してしまいます。

■ どうやって調整しているのか?(ターゲットの調整)
・そこでシステムは、過去のブロック生成にかかった時間を定期的にチェックし、「最近早く作られすぎているから、次の条件を厳しく(ハッシュ値の先頭に『0』が何個も連続して並ぶように)しよう」と、合格ラインを厳しくします。これが採掘難易度(ディフィカルティ)の引き上げです。
・ビットコインの場合、2016ブロック(約2週間)ごとに、この難易度が自動でアップデートされ、平均10分に1個のペースが頑なに守られています。
[ 選択肢のひっかけポイント ]
★ ④ ナンス:難易度そのものではなく、難易度をクリアするためにマイナーが必死に探す「使い捨てのランダムな数字(答え)」のことです。

1. 理解のコツ: 「大人の宝探しゲーム」をイメージしてください。参加者が子供のうちは、公園の砂場に宝を埋めるだけで見つけるのに10分かかっていました(ちょうど良い難易度)。しかし、大人たちが「レーダー」や「ショベルカー」を持ち出して一瞬で見つけるようになったら、主催者は「次は砂場じゃなくて、広大な富士山の樹海のどこかに埋めます」と難易度を上げます。これで参加者の道具がどれだけ進化しても、制限時間の10分をキープできます。このゲームバランスの調整役採掘難易度です。
2. 試験対策の視点: 「計算能力の変動に関わらず」「ブロックの生成間隔(時間)を一定に保つ」「自動的に調整される」というキーワードが並んだら「採掘難易度(ディフィカルティ)」が一択です。基本情報や応用情報の午前試験だけでなく、ニュースでも「ビットコインの採掘難易度が過去最高に」といった文脈でよく登場する、経済的にも重要な概念です。


4. まとめ

「世界の総計算力に合わせて、ブロックの生成時間を一定(約10分)にするために自動調整されるハードルの高さ」。これが採掘難易度です。この絶妙な自動ブレーキシステムがあるおかげで、中央管理者がいなくてもブロックチェーンの通貨発行ペースや取引の承認速度は、何年経っても一定に保たれ、安定した運用が続けられています。



【ブロックチェーン】取引をまとめるコンテナ!ブロックチェーンの「ブロック」|情報処理問題1000本ノック

ビットコインなどで使われるブロックチェーン技術。取引データがどのようにパッケージングされ、改ざん不可能な「鎖(チェーン)」になっていくのか、その単位であるブロックを攻略しましょう。

1. 【 問題 】:ブロックチェーンのデータ構造

【 問題 】 ブロックチェーン技術において、ネットワーク上で発生した複数のトランザクション(取引データ)を一定の時間ごとに1つのまとまり(コンテナ)にし、検証・承認された後に時系列順に結合されるデータ処理の基本単位はどれでしょうか?

① ブロック
② ノード
③ トークン
④ ハッシュ

2. 正解:

正解: ① ブロック(Block)

3. 解説:取引明細を「箱」に詰めて、前の箱と南京錠で繋ぐ

ブロックチェーンはその名の通り、取引データを詰め込んだ「ブロック」を、ハッシュ値という数学的な鎖(チェーン)で過去から現在へと一本道で繋いでいく技術です。

【ブロックの中身とチェーンになる仕組み】

1個のブロックの中には、主に以下の情報が入っています。

トランザクションの山:「AさんからBさんへ10コイン送金した」といった、その時間内に発生した大量の取引明細データ。
タイムスタンプ:そのブロックがいつ作られたかという時間情報。
直前のブロックのハッシュ値(← 超重要!):1つ前の古いブロックの中身を丸ごと数式に入れて計算した「暗号の指紋」です。

→ 新しいブロックを作る際、必ず「1つ前のブロックのハッシュ値」を内部に含めるルールになっているため、過去のブロックのデータを1文字でも改ざんすると、それ以降のすべてのハッシュ値がドミノ倒しのように変わってしまい、不正が瞬時にバレる仕組みになっています。
[ 他の選択肢の重要キーワード解説 ]
★ ② ノード:ブロックチェーンのネットワークに参加している、個々のコンピュータ(端末)のことです。
★ ③ トークン:ブロックチェーン上で発行される、独自の資産や価値、権利を表すデジタルスタンプのようなものです。
★ ④ ハッシュ:元データから特定の長さの不規則な文字列(暗号の指紋)を出力する計算システム、またはその値のことです。

1. 理解のコツ: 「会社の会計帳簿」をイメージしてください。毎日発生する1件1件の領収書(トランザクション)を、そのままバラバラで保管すると失くしてしまいます。そこで、1ページ(ブロック)に何十件もの取引をまとめて清書し、承認のハンコ(確認)をもらいます。さらに、次のページの冒頭には「前ページの合計金額(前のハッシュ値)」を引き継いで書くことで、途中のページを破り捨てたり改ざんしたりできないようにしている、というイメージです。
2. 試験対策の視点: 「トランザクションを一定単位にまとめる」「検証・承認される」「時系列に結合される」という記述があれば、その単位は「ブロック」です。ブロックチェーンの基本中の基本ですが、このブロック同士が「ハッシュ値」によって数珠繋ぎになっているという構造は、応用情報やシステムアーキテクトなどの高度試験でも記述式でよく狙われる超重要概念です。


4. まとめ

「複数の取引(トランザクション)をひとまとめにして、ネットワーク全体の承認を経て分散台帳に記録するコンテナ」。これがブロックです。このブロックを約10分に1個(ビットコインの場合)というペースで生成し、世界中のコンピュータで同期し続けることで、銀行のような中央管理者がいなくても「絶対にデータが消えない・改ざんされない」信頼のネットワークが作られています。


【システム構成】メモリ不足でCPUがサボる?恐怖の「スラッシング」|情報処理問題1000本ノック

仮想記憶は便利な仕組みですが、物理メモリが限界を迎えると、システム全体の動きがカクつく致命的な状態に陥ります。そのメカニズムを攻略しましょう。

1. 【 問題 】:仮想記憶システムの管理現象

【 問題 】 仮想記憶システムにおいて、主記憶(実記憶)の容量が不十分なために、ページインおよびページアウト(データの入れ替え処理)が頻発し、プロセッサ(CPU)の処理時間の大部分がこの入れ替え処理に費やされ、結果としてアプリケーションの処理効率やCPU使用率が著しく減少する現象はどれでしょうか?

(ア)デフラグ
(イ)スラッシング
(ウ)セグメンテーション
(エ)オーバーフロー

2. 正解:

正解: (イ)スラッシング(Thrashing)

3. 解説:片付けに追われて仕事が進まないCPU

仮想記憶は、実記憶(本物のメモリ)に入り切らないデータを、ハードディスクやSSDなどの「補助記憶(スワップ領域)」に一時的に退避させることで、実際のメモリ以上の大きなプログラムを動かす技術です。

【スラッシングが起きる悪循環のメカニズム】

1. 物理メモリの容量が全然足りない状態で、たくさんのアプリを動かそうとします。
2. CPUが「次のデータを読もう」としたら、メモリにないので補助記憶から読み込む(ページイン)必要があります。
3. しかしメモリが満杯なので、今あるデータをどれか補助記憶へ追い出す(ページアウト)しかありません。
4. この「データの出し入れ」は、CPUの計算スピードに比べて圧倒的に遅い(ディスクアクセスの壁)です。
5. 結果として、CPUは「アプリの計算」をする暇がなくなり、データの出し入れの待ち時間ばかりが増えてサボる形になり、CPU使用率がガクンと下がります。これがスラッシングです。
[ 他の選択肢の重要キーワード解説 ]
★ (ア)デフラグ:ハードディスクなどの断片化(バラバラに記録された状態)を綺麗に並べ直して、読み込みを速くする最適化操作です。
★ (ウ)セグメンテーション:仮想記憶において、データを「プログラムの意味のあるまとまり(可変長)」ごとに区切って管理する方式です(固定長で区切る方式はページング方式)。
★ (エ)オーバーフロー:計算結果が、あらかじめ用意された変数の型や桁数の上限を超えてしまい、正しく表現できなくなる現象(桁あふれ)です。

1. 理解のコツ: 「狭すぎる勉強机」をイメージしてください。机(実記憶)が狭すぎて教科書が1冊しか置けません。数学の問題を1問解くたびに、数学の教科書をカバン(補助記憶)に片付けて、次は英語の教科書をカバンから引っ張り出して……という作業を毎回やっていたら、「勉強している時間」よりも「教科書を出し入れしている時間」のほうが遥かに長くなってしまいますよね。この、出し入れでパニックになっている状態がスラッシングです。
2. 試験対策の視点: 「実記憶(主記憶)の容量が不十分」「データの入れ替えが頻発(多発)」「プロセッサ(CPU)の使用率が減少(低下)」という3つの条件が揃ったら100%スラッシングです。根本的な解決策は「物理メモリを増設する」か「同時に立ち上げるアプリを減らす」ことになります。


4. まとめ

「メモリ不足が原因で、データの入れ替え処理ばかりに追われてシステムがほぼフリーズしてしまう現象」。これがスラッシングです。実務でも、古いPCで重い作業をしたときにハードディスクのアクセスランプが点っぱなしになり、マウスカーソルすら動かなくなるあの現象の正体が、まさにこのスラッシングです。


【コンピュータ】分岐の先がわからない!パイプラインの「制御ハザード」|情報処理問題1000本ノック

パイプライン3大ハザードのラストを飾るのがこれ。プログラムの「条件分岐(if文)」が原因で、次に実行すべき命令を見失ってしまう制御ハザードを攻略しましょう。

1. 【 問題 】:パイプライン処理の阻害要因

【 問題 】 CPUのパイプライン処理において、条件分岐命令が実行される際、その分岐結果(どちらのルートに進むか)が確定するまで、次に実行すべき命令を決定してパイプラインに読み込むことができず、処理に遅れ(ストール)が生じる現象はどれでしょうか?

① 制御ハザード (Control Hazard)
② データハザード (Data Hazard)
③ 構造ハザード (Structural Hazard)
④ 割込みハザード (Interrupt Hazard)

2. 正解:

正解: ① 制御ハザード(Control Hazard)

3. 解説:分かれ道の手前で、どっちに行くか決まるまで進めない

パイプラインは、前の命令が実行されている間に、次の命令を「先読み」してどんどん並行処理していくことで高速化しています。しかし、ここに条件分岐命令(if文やループなど)が来ると問題が発生します。

【制御ハザードの発生と、現代CPUの「予測」ワザ】

分岐命令が「条件を満たしているか?」を判定して結果が出るのは、パイプラインの後半(実行ステージなど)です。そのため、結果がわかるまでは、次にAルートの命令を読み込めばいいのか、Bルートの命令を読み込めばいいのかが分かりません。これが制御ハザードです。

■ 現代CPUの対策①:分岐予測(Branch Prediction)
・結果が出るのを待つと遅いので、CPUが過去のパターンから「今回はたぶんAルートに進むだろう」とギャンブルで予測し、そちらの命令を先読みして実行してしまいます。

■ 現代CPUの対策②:投機的実行(Speculative Execution)
・予測が「的中」していれば、そのまま超高速で処理が続きます。
・予測が「外れた」場合は、先読みして途中まで進めていた命令をすべて破棄し、正しいルートの命令を最初から読み込み直します(このロスを分岐ペナルティと呼びます)。
[ これで完璧!3大ハザードのキーワード比較 ]
構造ハザード = ハードウェア(メモリや演算器)の奪い合い
データハザード = 計算に必要なデータがまだできていない(依存関係)
制御ハザード分岐(if文)があるため、次の命令が決まらないココ!

1. 理解のコツ: 「旅行のナビゲーション」をイメージしてください。高速道路を走っていて、この先「左の東京方面」か「右の名古屋方面」かの分岐点があります。運転手(分岐命令)がどっちに行くか決める(結果が出る)まで、助手席のナビ係は次のルートの地図を先読みして準備することができません。この行き先不明による足止め制御ハザードです。
2. 試験対策の視点: 「分岐が存在するため」「他の命令(分岐条件の判定)の結果が必要となり」「次の命令が実行できない」という文脈が来たら制御ハザードが一択です。試験では、対策技術である「分岐予測」「投機的実行」という言葉とセットで出題されることも非常に多いので、まとめて覚えておくと午前試験は無敵になります。


4. まとめ

「条件分岐のせいで、次に進むべき正しいルート(命令)が確定するまでパイプラインが足止めを食らう現象」。これが制御ハザードです。現代のCPUはこの「分岐予測」の的中率が95%以上に達しており、制御ハザードによるロスを極限まで減らす設計になっています。


【コンピュータ】前の計算結果が出るまで待って!パイプラインの「データハザード」|情報処理問題1000本ノック

パイプライン処理のスピードを狂わせる3大ハザードの第2弾。プログラムの「計算の順番(依存関係)」が原因で発生する、データハザードの仕組みを攻略しましょう。

1. 【 問題 】:パイプライン処理の阻害要因

【 問題 】 CPUのパイプライン処理において、ある命令を実行するために必要なデータが、直前の命令の処理が完了していないためにまだ利用できず、次の命令の実行を待たせる(ストールさせる)必要がある現象はどれでしょうか?

① 制御ハザード (Control Hazard)
② データハザード (Data Hazard)
③ 構造ハザード (Structural Hazard)
④ 動的ハザード (Dynamic Hazard)

2. 正解:

正解: ② データハザード(Data Hazard)

3. 解説:前の人が答えを書くまで、次の計算ができない

データハザードは、連続する命令の間に「データの依存関係(前のアウトプットが、次のインプットになる関係)」があるときに発生します。

【データハザードの具体例と回避ワザ】

以下のような2つの計算が連続しているとします。
・命令1: X = A + B
・命令2: Y = X × C

パイプラインでこの2つをほぼ同時に進めようとしても、命令2が掛け算を行うステージに達した瞬間、「命令1の足し算の結果(Xの値)が、まだレジスタに書き込まれていなくて手に入らない!」という事態になります。これがデータハザードです。

■ 現代CPUの対策:フォワーディング(バイパス)
・レジスタへの書き込みを待っていると遅いため、前の命令の演算器(ALU)から出たホカホカの計算結果を、レジスタを経由せずに「次の命令の演算器へ直接横流し(フォワーディング)する」専用のバイパス回路を設けることで、このハザードによる待ち時間を最小限に抑えています。
[ 3大ハザードの特徴的な一言キーワード ]
構造ハザード = ハードウェア(メモリや演算器)の奪い合い
データハザード必要なデータがまだ準備できていない(依存関係)ココ!
制御ハザード = 分岐命令(if文)によって次に実行する命令が決まらない

1. 理解のコツ: 「書類のバケツリレー」をイメージしてください。1人目が「書類に金額を計算して書き込む」、2人目が「その金額にハンコを押す」という作業を並行しています。1人目が計算をモタついていると、2人目は前の書類が回ってこないため、手元にデータ(書類)がなくて作業がストップしてしまいます。これがデータハザードです。
2. 試験対策 of 視点: 「実行に必要なデータが利用できない」「処理が完了していない」「依存関係」というフレーズがあればデータハザードが一択です。構造ハザードと並んで午前試験の超ド定番なので、文章のニュアンスだけで一瞬で切り分けられるようにしておきましょう。


4. まとめ

「データの前後関係が原因で、前の処理が終わるまで次の命令がデータを読み込めずに立ち往生する現象」。これがデータハザードです。ハードウェアの工夫(フォワーディング)だけでなく、コンパイラが「依存関係のない別の命令を間にうまく挟み込む(命令の並べ替え)」といったソフトウェア側の知恵も使って、このハザードは日々克服されています。


【コンピュータ】ハードウェアの奪い合い!パイプラインの「構造ハザード」|情報処理問題1000本ノック

CPUの処理を高速化する「パイプライン」。しかし、命令の組み合わせが悪いと、ハードウェア資源の衝突によって処理がピタッと止まってしまいます。その原因となるハザードを攻略しましょう。

1. 【 問題 】:パイプライン処理の阻害要因

【 問題 】 CPUのパイプライン処理において、同時に実行される複数の命令の組み合わせが悪く、同じハードウェア資源(メモリ、レジスタ、演算器など)を同時に使用しようと衝突が発生し、命令を予定通り同時に実行できなくなる現象(ハザード)はどれでしょうか?

① 制御ハザード (Control Hazard)
② データハザード (Data Hazard)
③ 構造ハザード (Structural Hazard)
④ 割込みハザード (Interrupt Hazard)

2. 正解:

正解: ③ 構造ハザード(Structural Hazard / 資源ハザード)

3. 解説:1つの道具を2人で同時に使えない

パイプライン処理は、1つの命令を「命令フェッチ(読み込み)」「デコード(解析)」「実行」「メモリ書き込み」といったステージに細分化し、複数の命令を1ステージずつずらしながら並行して実行する仕組みです。

【試験に出る!パイプライン3大ハザードの決定的な違い】

CPUの足を引っ張るハザード(妨害)には、原因別に以下の3種類があります。

■ 構造ハザード(Structural Hazard)
原因ハードウェアの構造上の衝突です。例えば、「命令を読み込むためのメモリ」と「データを読み書きするためのメモリ」が共通の1つしかない場合、ある命令のフェッチと、別の命令のデータアクセスが同時に発生すると衝突し、片方の命令を待たせる(バブルを挿入する)必要が生じます。 ← ココが問題の正解!

■ データハザード(Data Hazard)
原因データの依存関係です。前の命令の計算結果を使って次の命令が計算を行う場合、前の計算が終わってレジスタに書き込まれるまで、次の命令は待たなければなりません。

■ 制御ハザード(Control Hazard)
原因分岐命令(if文など)です。条件分岐命令が来ると、次に実行すべき命令がどちらになるか(ジャンプするかどうか)が決まるまで、次の命令をパイプラインに投入できなくなります。
[ 構造ハザードを回避する工夫 ]
★ 現代のCPUでは、命令用のキャッシュメモリとデータ用のキャッシュメモリを物理的に分ける「ハーバードアーキテクチャ」などを採用することで、この構造ハザードが極力起きないように工夫されています。

1. 理解のコツ: 「1つのキッチンで行う料理の分担作業」をイメージしてください。1人が「野菜を切る」、もう1人が「肉を炒める」という別々の作業(パイプライン)を並行して進めています。しかし、2人が同時に「1つしかない電子レンジ(ハードウェア資源)」を使いたくなってしまったとき、作業の手が止まります。この器具の奪い合いによる停滞構造ハザードです。
2. 試験対策の視点: 「命令の組み合わせが悪い」「同じハードウェア(資源)を同時に使えない」「衝突が発生」というキーワードが来たら構造ハザードが一択です。データ依存ならデータハザード、分岐命令なら制御ハザード。この3大ハザードの区別は、コンピュータの基礎理論・ハードウェア分野における超頻出問題です。


4. まとめ

「複数の命令が同じハードウェア部品を取り合うことで、同時に実行できなくなる現象」。これが構造ハザードです。ハードウェアを増やせば(電子レンジを2台にすれば)解決しますが、コストやチップの面積とのトレードオフになるため、いかに効率の良い構造にするかがCPU設計の腕の見せ所となります。