はじめに
2022 SA am1
01-02: https://blog.yexca.net/archives/184
03-05: https://blog.yexca.net/archives/185
06-10: https://blog.yexca.net/archives/186
11-15: https://blog.yexca.net/archives/189
16-30: https://blog.yexca.net/archives/190
つぶやき
月曜日はいつも疲れるよね。週末に休んだ後だと、どうしてもやる気が出ない。でも、今日はどういうわけか、これまでの沈んでた気分が嘘みたいにスッキリして、急にポジティブになったんだ。何もしてないんだけどね。感情とか心の状態って本当に不思議。
だから今日は結構のんびりしちゃって、危うく更新をサボるところだった。でもこの試験、30問もあるんだよね。今のペースだと全部終わるのに半月はかかりそう……。 :cry:
第3問
プログラミング言語のうち、ブロックの範囲を指定する方法として特定の記号や予約語を用いず、等しい文字数の字下げを用いるという特徴をもつものはどれか。
ア C
イ Java
ウ PHP
エ Python
問題の要約:プログラミング言語の中で、特定の記号や予約語を使わずに、同じ文字数のインデント(字下げ)でコードブロックの範囲を決める特徴があるのはどれ?
もちろん Python だから、正解は選択肢「エ」だね。
第4問
キャッシュメモリのアクセス時間が主記憶のアクセス時間の1/30で、ヒット率が95%のとき、実効メモリアクセス時間は、主記憶のアクセス時間の約何倍になるか。
ア 0.03
イ 0.08
ウ 0.37
エ 0.95
この問題は実効メモリアクセス時間(EMAT)についての問題。この公式で計算できるよ。
$$ EMAT = \text{キャッシュのアクセス時間} \times \text{ヒット率} + \text{主記憶のアクセス時間} \times \text{失効率} $$主記憶のアクセス時間を T とすると、キャッシュのアクセス時間は $\frac{T}{30}$。問題文からヒット率は 95% だから、失効率(ミス率)は 5% になる。
なので、EMAT = $\frac{T}{30} \times 95\% + T \times 5\% \approx 0.08T$。というわけで、答えは選択肢「イ」だね。
この問題、実は最初解けなかったんだ。コンピュータ構成法は半分くらいしか聞いてなかったし、正直ほとんど忘れちゃってる。
第5問
プロセッサ数と、計算処理におけるプロセスの並列化が可能な部分の割合とが、性能上へ及ぼす影響に関する記述のうち、アムダールの法則に基づいたものはどれか。
ア 全ての計算処理が並列化できる場合、速度向上比は、プロセッサ数を増やしてもある水準に漸近的に近づく。
イ 並列化できない計算処理がある場合、速度向上比は、プロセッサ数に比例して増加する。
ウ 並列化できない計算処理がある場合、速度向上比は、プロセッサ数を増やしてもある水準に漸近的に近づく。
エ 並列化できる計算処理の割合が増えると、速度向上比は、プロセッサ数に反比例して減少する。
問題の要約:プロセッサの数と並列化可能な部分の割合が性能に与える影響について、アムダールの法則に基づいた説明はどれ?
ア:すべての計算が並列化できる場合、速度向上比はプロセッサ数を増やしてもある一定値に近づく。 イ:並列化できない部分がある場合、速度向上比はプロセッサ数に比例して増える。 ウ:並列化できない部分がある場合、プロセッサ数を増やしても速度向上比はある一定値に近づく。 エ:並列化できる割合が増えると、速度向上比はプロセッサ数に反比例して減る。
この問題を解くには、まず「アムダールの法則(Amdahl’s Law)」が何かを知っておく必要があるよ。アムダールの法則は、プログラムの中に並列化できない部分があると、いくらプロセッサを増やしても全体の性能向上には限界があるということを示しているんだ。公式はこんな感じ:
$$ S(N)=\frac{1}{(1-P)+\frac{P}{N}} $$ここで $S(N)$ は $N$ 個のプロセッサを使った時の速度向上比、$P$ はプログラムの中で並列化できる部分の割合、$N$ はプロセッサの数だよ。
以上のことから、正解は「ウ」になるね。