基本情報技術者(2種)−U

 

このページでは、しゅんぜい氏の発行されているメルマガのうち「基本情報(2種)」について

編集して掲載しています。

[ ホーム ] [ 上へ ]


フローチャート(H10.秋 2種 問14)


 長さ m, n の文字列を格納した配列 X, Y がある。図は、これらの文字列を
 この順に連結した文字列を配列 Z に格納する処理の流れ図である。
 a ,b に入れる処理として、正しいものはどれか。ここで、1文字が一つの
 配列要素に格納されるものとする。


     _____
    ( 開 始 )
      ̄ ̄│ ̄ ̄
     ──┴──    (注) ループ端の繰返し指定は,
    / ループ1 \     変数名:初期値,増分,終値
   │ k : 1, 1, m │     を示す。
   └───┬───┘
    ┌──┴──┐
    │【 a 】│
    └──┬──┘
   ┌───┴───┐
   │       │
    \ ループ1 /
     ──┬──
     ──┴── 
    / ループ2 \
   │ k : 1, 1, n │
   └───┬───┘
    ┌──┴──┐
    │【 b 】│
    └──┬──┘
   ┌───┴───┐
   │       │
    \ ループ2 /
     ──┬──
     ──┴──
    ( 終 了 )
      ̄ ̄ ̄ ̄ ̄ 

   ┌────────┬──────────┐
   │   a    │    b     │
 ┌─┼────────┼──────────┤
 │ア│ X(k) → Z(k) │ Y(k) → Z(m+k)  │
 ├─┼────────┼──────────┤
 │イ│ X(k) → Z(k) │ Y(k) → Z(n+k)  │
 ├─┼────────┼──────────┤
 │ウ│ Y(k) → Z(k) │ X(k) → Z(m+k)  │
 ├─┼────────┼──────────┤
 │エ│ Y(k) → Z(k) │ X(k) → Z(n+k)  │
 └─┴────────┴──────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H10.秋 2種 問14)
----------------------------------------------------------------------


   ┌────────┬──────────┐
   │   a    │    b     │
 ┌─┼────────┼──────────┤
 │ア│  X(k) → Z(k) │ Y(k) → Z(m+k)  │
 └─┴────────┴──────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週は、フローチャート特集をやっています。
 今日は、文字列処理の問題でした。これもやさしいと思います。


 では、見ていきましょう。

> 長さ m, n の文字列を格納した配列 X, Y がある。図は、これらの文字列を
> この順に連結した文字列を配列 Z に格納する処理の流れ図である。

 配列というのは、文字列が1文字ずつ入るつながれた箱です。
 例えば、長さ5の white という文字列を格納した配列は、次のように
 表現できます。(プログラム言語によっては、異なる場合があります。)

   │w │h │i │t │e │
   └─┴─┴─┴─┴─┘

 今回の問題は、長さ m の文字列を格納した配列 X と、長さ n の文字列を
 格納した配列 Y があるので、次のようなイメージですね。


     │○│○│○│
     └─┴─┴─┘    5コしかないですが、長さは m です。
        X(m)


   │●│●│●│●│●│
   └─┴─┴─┴─┴─┘  3コしかないですが、長さは n です。
        Y(n)

 これらの文字列をこの順に連続した文字列として、配列 Z に格納します。
 よって、次のようなイメージになりますね。

    1    m m+1      m+n
    ↓   ↓ ↓       ↓
   │○│○│○│●│●│●│●│●│   8コしかないですが
   └─┴─┴─┴─┴─┴─┴─┴─┘   長さは m+n です。
          Z(m+n)

 ポイントは、配列 Z の最初の m コには配列 X の文字列が入り、その後に
 配列 Y の文字列が n コ分入ります。

 つまり、配列 Z の 1 番目から m 番目に配列 X の文字列が入り、
 m+1 番目から m+n 番目までに配列 Y の文字列が入るということです。


 したがって、正解のフロチャートは次のようになります。

     _____
    ( 開 始 )
      ̄ ̄│ ̄ ̄
     ──┴──    (繰り返し)
    / ループ1 \    │この解釈は
   │ k : 1, 1, m │   │ 「k が 1 から m まで 1 ずつ増える」
   └───┬───┘   │ということ
   ┌───┴───┐   │
   │ X(k) → Z(k) │   │X(k) の文字列を Z(k) に格納する。
   └───┬───┘   │K = 1 なら X(1) → Z(1) になる。
   ┌───┴───┐   │K = m なら X(m) → Z(m) になる。
   │       │   │
    \ ループ1 /   (繰り返し)
     ──┬──
     ──┴──    (繰り返し)
    / ループ2 \    │この解釈は
   │ k : 1, 1, n │   │ 「k が 1 から n まで 1 ずつ増える」
   └───┬───┘   │ということ
   ┌───┴────┐  │
   │Y(k) → Z(m+k) │  │Y(k) の文字列を Z(m+k) に格納する。
   └───┬────┘  │K = 1 なら Y(1) → Z(m+1) になる。
   ┌───┴───┐   │K = n なら Y(n) → Z(m+n) になる。
   │       │   │
    \ ループ2 /   (繰り返し)
     ──┬──
     ──┴──
    ( 終 了 )
      ̄ ̄ ̄ ̄ ̄ 

戻る


フローチャート(H11.秋 2種 問14)


 配列Aの1番目からN番目の要素に整数が格納されている(N>1)。
 Xと同じ値が何番目の要素に格納されているかを調べる流れ図である。
 この流れ図の実行結果として、正しい記述はどれか。

       _____
      ( 開 始 )
        ̄ ̄│ ̄ ̄
      ┌──┴──┐
      │ 1→k │
      └──┬──┘
   ┌────→│
   │    / \
   │   /k:N\ >
   │   \   /─────┐
   │    \ /      │
   │     │≦      │
   │     │       │
   │    / \      │
   │   /A(k):X\ =   │
   │   \   /─────┤
   │    \ /      │
   │     │≠      │
   │  ┌──┴──┐    │
   │  │k+1→k│  ──┴──
   │  └──┬──┘ ( 終 了 )
   │     │      ̄ ̄ ̄ ̄ ̄ 
   └─────┘

 ア Xと同じ値が配列中にない場合、kには1が設定されている。

 イ Xと同じ値が配列中にない場合、kにはNが設定されている。

 ウ Xと同じ値が配列の1番目とN番目の2か所にある場合、
   kには1が設定されている。

 エ Xと同じ値が配列の1番目とN番目の2か所にある場合、
   kにはNが設定されている。

 Special thanks! ( http://www.sam.hi-ho.ne.jp/ike3/ )



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H11.秋 2種 問14)
----------------------------------------------------------------------
 ウ Xと同じ値が配列の1番目とN番目の2か所にある場合、
   kには1が設定されている。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週は、フローチャート特集をやっています。
 今日も配列に関する問題でした。少しずつレベルを上げているつもりです。
 こうやってみると、2種は配列の問題が多いですね。

 フローチャートは、しっかり読み取れましたか?
 1つだけ確認しておきましょう。

         │
         │
        / \
       /k:N\ >
       \   /────
        \ /
         │≦
         │

 この部分は、kとNの値を比べます。
 k>Nであれば右に進み、k≦Nであれば下に進みます。


 今日の問題の配列Aは、次のようなイメージです。

  スタート
   ↓

  │○│●│▼│△│▲│▽│ │ ・・・ │ │
  └─┴─┴─┴─┴─┴─┴─┴─   ─┴─┘
   1 2  ・・・  N

 また、この配列と別にXという整数があります。
 このXと同じ値を左から順に探していきます。順番に探すためにkという
 変数を1つずつ増やしてチェックしています。


 それでは、選択肢を順に見ていきましょう。

> ア Xと同じ値が配列中にない場合、kには1が設定されている。

   Xと同じ値が配列中にない場合は、フローチャートを追っていくと
   kの値がどんどん増えていき、kの値がNより大きくなる(N+1)で
   終了します。つまり、kには(N+1)が設定されます。

                k
                ↓
   │○│●│▼│△│▲│▽│ │ ・・・ │ │
   └─┴─┴─┴─┴─┴─┴─┴─   ─┴─┘
    1 2  ・・・  N


> イ Xと同じ値が配列中にない場合、kにはNが設定されている。

   「ア」と同様、kには(N+1)が設定されます。


> ウ Xと同じ値が配列の1番目とN番目の2か所にある場合、
>   kには1が設定されている。

   このフローチャートは、Xと同じ値を見つけると終了します。
   つまり、配列Aの1番目に同じ値があれば、それ以上kは増えません。
   よって、kには1が設定されるので、これが正解です。

    k
    ↓
   │○│●│▼│△│▲│○│ │ ・・・ │ │
   └─┴─┴─┴─┴─┴─┴─┴─   ─┴─┘
    1 2  ・・・  N


> エ Xと同じ値が配列の1番目とN番目の2か所にある場合、
>   kにはNが設定されている。

   「ウ」と同様、kには1が設定されます。


 #長い割には、たいした説明じゃないなぁ。

戻る


CPU高速化技術(H12.春 2種 問18)
 コンピュータの高速化技術のうち、一つの命令を n 個の独立な処理段階に
 分割し、各処理段階を並行に実行できるようにして、複数の命令を
 オーバラップさせて実行する方式はどれか。

 ア out-of-order 実行
 イ キャッシュメモリ
 ウ パイプライン処理
 エ 分岐予測


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12.春 2種 問18)
----------------------------------------------------------------------
 ウ パイプライン処理

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週からアーキテクチャの話に入ります。

 今日は、CPU (or MPU) の問題でした。高速化の話です。
 勉強が進んでいる人には、正解を選ぶのは簡単だと思いますが、
 他の選択肢はどうでしょうか?

 #CPU と MPU は、同じ意味だと考えて(僕は)良いと思います。


 では、選択肢を順に見ていきましょう。

> ア out-of-order 実行(out of order execution)

   out-of-order 実行とは、CPU の高速化の方法の1つです。
   プログラムで記述されている命令順序とは、異なる順序でプログラムを
   実行する方式です。

   簡単に言うと
   「メモリの中で先に実行できる命令は、どんどんやってしまえ!」
   という考え方で、パイプラインやスーパースカラの実行時の乱れを
   防ぐために使われています。

   ちなみに、プログラムされた順に命令を実行する方式をイン・オーダー
   実行(in order execution) といいます。


> イ キャッシュメモリ(cache memory)

   CPU とメモリの間において、2つのアクセス速度の速度差を埋めるため
   に置かれる高速の記憶装置のことです。
   最近の CPU は、キャッシュメモリを2段階搭載にしていますね。


> ウ パイプライン処理(pipeline)

   CPU で1個の命令の処理過程を複数の小さな処理単位(ステージ)に
   分割して、複数の命令を少しづつ段階をずらしながら、同時に実行する
   方式です。

   ステージをいくつにするかは、CPU によって異なりますが
   6ステージに分けた場合は、次のようになります。

        ┌─┬─┬─┬─┬─┬─┐
   最初の命令│1│2│3│4│5│6│
        └─┴─┴─┴─┴─┴─┘
          ┌─┬─┬─┬─┬─┬─┐
      次の命令│1│2│3│4│5│6│
          └─┴─┴─┴─┴─┴─┘
            ┌─┬─┬─┬─┬─┬─┐
      次の次の命令│1│2│3│4│5│6│
            └─┴─┴─┴─┴─┴─┘
               :
               :

     ┌────┬──────────┐
     │ステージ│   処理内容   │
     ├────┼──────────┤
     │ 1  │命令コード部の取出し│
     │ 2  │命令の解読     │
     │ 3  │アドレス部の取出し │
     │ 4  │実効番地の計算   │
     │ 5  │データの取出し   │
     │ 6  │演算の実行     │
     └────┴──────────┘

   各ステージの数字が上の図の中の数字に対応しています。


   このパイプラインのクロック周波数を高くして、パイプラインの
   ステージ数を増やした方式をスーパーパイプライン(super pipeline)
   といいます。ステージ数を増やすと、個々の命令が簡単になり、
   高速化につながりますが、分岐予測が上手くいかないと逆に遅くなる
   こともあるようです。

   また、複数のパイプラインで並列に命令を処理できるようにしたものを
   スーパースカラ(superscalar)といいます。


> エ 分岐予測(branch prediction)

   これも、CPU の高速化の方法の1つで、パイプラインを効率よく動かす
   ための技術です。

   パイプライン処理では、複数の命令を同時に実行するため、
   分岐命令が現われ、分岐が行われると、それまでにパイプラインに
   取り込んであった命令を捨てて、新たに分岐先の命令を処理しなければ
   いけなくなります。そうなると、大幅なロスになります。

   そこで、これを防ぐために命令が分岐するかどうかを予測して、
   分岐しそうな場合は、分岐先の命令をパイプラインに読みこませるのが
   分岐予測というものです。

戻る


CPUクロック(H12.秋 2種 問16)
 プロセッサを制御するために用いられるクロックに関する記述のうち、
 適切なものはどれか。

 ア 同じアーキテクチャのプロセッサであれば、クロック周波数の高いもの
   ほど単位時間当たりの実行命令数は多い。

 イ クロック周波数の逆数は、1秒間に実行できる命令数と等しい。

 ウ プログラムが全く実行されていないときは、クロックは停止している。 
 
 エ 命令フェッチから命令実行までの一連の処理は、1クロックで実行
   される。




━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12.秋 2種 問16)
----------------------------------------------------------------------
 ア 同じアーキテクチャのプロセッサであれば、クロック周波数の高いもの
   ほど単位時間当たりの実行命令数は多い。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週からアーキテクチャの話に入ります。

 今日は、CPU のクロック周波数(clock frequency) の問題でした。
 クロック周波数というのは、Celeron 533MHz というように CPU の性能を
 表す数値です。(本来は、クロックが発生するパルス信号の一秒間あたりの
 周波数のことです)


 選択肢を順に見ていきましょう。

> ア 同じアーキテクチャのプロセッサであれば、クロック周波数の高いもの
>   ほど単位時間当たりの実行命令数は多い。

   これが正解です。

   例えば、Pentium3 でクロック周波数が 733MHz のものと 500MHz の
   ものを比べると、733MHz の方が高速で単位時間あたりの実行命令数は
   多くなります。同じアーキテクチャなら、クロック周波数が高い方が
   高速であると言えます。


> イ クロック周波数の逆数は、1秒間に実行できる命令数と等しい。

   クロック周波数の逆数ではなく、CPU のクロック周波数が増えること
   によって、1秒間に実行できる命令数は相対的に増えます。


> ウ プログラムが全く実行されていないときは、クロックは停止している。

   クロックというのは、音楽で言うとテンポのようなものです。
   曲の途中でブレイク(一瞬、静かになる)の部分があっても、テンポが
   キープされているのと同じように、プログラムが全く実行されていなく
   ても、クロックが停止するという事はありません。


> エ 命令フェッチから命令実行までの一連の処理は、1クロックで実行
>   される。

   これは、昨日のパイプラインの話を思い出してください。
   一連の処理でなく、もっと細かいステージごとに実行されます。

   ちなみに、命令フェッチとは CPU がデータをメモリから取り出し、
   レジスタに転送することをいいます。


 今日の問題と似たような問題がこちらにあります。
 物足りない方は、ついでにどうぞ。

 http://www.melma.com/mag/89/m00000189/a00000364.html


 #今日は、シンプルな解説でした(^^;

戻る


CISC・RISC(H12. 1種 問13)

 CISC 型 MPU と比較したときの RISC 型 MPU の特徴として、適切なものは
 どれか。

 ア 高機能な命令をもっている。
 イ パイプライン処理に適している。
 ウ プログラム容量は小さくなる。
 エ 命令の種類が多い。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12. 1種 問13)
----------------------------------------------------------------------
 イ パイプライン処理に適している。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週からアーキテクチャの話に入ります。
 今日も CPU (or MPU) の問題でした。CISC と RISC の話ですね。
 試験用の参考書を見ると必ず載ってますが、実はあまり出ない問題ですが、
 見ておいて損はないでしょう(^^;


 そもそも CPU って何?って思っている方のために説明しておくと、CPU は
 メモリ(Memory) に記憶されたプログラムを読み込んで、その指示に従って
 入力装置や記憶装置からデータを受け取り、四則演算などを行い、出力装置
 や記憶装置に出力する役割を行っています。

 上で書いた CPU(Central Processing Unit) と MPU(Microprocessor Unit) 
 は、同じ意味だと考えて良いでしょう。CPU を1つのチップ上に集めたもの
 が MPU になります。


 今日出てきた CISC と RISC は、CPU や MPU の設計様式の種類です。
 そういう2つの種類があるんだ!って思っていればOK!です。

 CISC(Complex Instruction Set Computer) とは、1つ1つの命令で複雑な
 ことが実行できるようにして、処理能力の向上をはかっている方式です。

 x86 系(というより Pentium 系の方がわかりやすそうですね)の CPU は、
 この方式です。

 また、RISC(Reduced Instruction Set Computer)とは、1つ1つの命令を
 簡単にして、処理能力の向上をはかっている方式です。
 また、1つ1つの命令が簡単なので、パイプライン方式の効率を高めます。
 MAC の PowerPC 系の CPU は、この方式です。

 これらは、お互いの長所を取り込みながら進化しているので、
 どっちが良いか?は、なんとも言えません(^^;


 試験対策としては、下記の特徴を覚えておくと良いでしょう。

> CISC
  ハードウェアの構造が複雑
  命令の種類が多くて、複雑
  プログラムサイズが小さい
  マイクロプログラム(micro program)を使用

> RISC
  ハードウェアの構造が単純
  命令の種類が少なくて、単純
  プログラムサイズが大きい
  ワイヤードロジック(Wired Logic)を使用
  パイプライン向き


 最後に、さらっと全ての選択肢を見ておきましょう。

> ア 高機能な命令をもっている。

   CISC 型 MPU の説明です。

> イ パイプライン処理に適している。

   RISC 型 MPU の説明です。

> ウ プログラム容量は小さくなる。

   CISC 型 MPU の説明です。

> エ 命令の種類が多い。

   CISC 型 MPU の説明です。

戻る


ファンクションポイント法(H12.秋 2種 問63)

 ソフトウェア開発の工数を見積もる方法の一つであるファンクション
 ポイント法の特徴として、適切なものはどれか。

 ア 開発すべき成果物と、それらの成果物を作成するための作業を洗い出し
   それらの作業ごとに一定の基準で見積もるので、見積りの根拠が
   はっきりしている。

 イ 過去に類似システムがない場合は、適用が難しい。

 ウ プログラムステップ数算定の標準値や工数換算のための標準値を用いて
   開発工数を比較的容易に計算できる。

 エ ユーザから見える画面や帳票などを単位として見積もるので、
   ユーザにとって理解しやすい。

----------------------------------------------------------------------

 今回は、「ウ」か?「エ」か?という話から始まったのですが、
 残念ながら、回答は少なかったです。とりあえず見てみましょう。

> 回答:エ
> 解説
> ファンクションポイント法 ( Function Point )
> Albrecht により提案されたソフトウァアのコストモデルで 5 の機
> 能ごとに求めた複雑さの評価値と、14 種類のシステムの特性項目
> から求めた評価値の 2 つの値をもとに、ファンクションポイント
> ( FP ) を計算する。さらに FP から必要工数を見積もる。
> (学研:合格情報処理99年4月号)
> 
> それでは過去問を見てみます。
> 
> ■平成9年プロダクションエンジニア午前67■
>  ソフトウェア開発の見積りに使われるファンクションポイント法
> に関する記述のうち,正しいものはどれか。
> 
>  エ 帳票数,画面数,ファイル数などの機能の単位となる指標の
>   数から,ソフトウェアの開発工数や開発費用などを見積もる。
> 
> ■平成9年ネットワークスペシャリスト午前79■
>  システム開発規模を見積もる方法であるファンクションポイント
> 法において,ファンクションポイント計算で着目する対象はどれか
> 
>  イ 画面の数
> 
> ■平成12年秋初級システムアドミニストレータ午前17■
>  GUI を活用したソフトウェアの開発規模を見積もるときに適用し
> やすいといわれている,ファンクションポイント法に関する記述と
> して,適切なものはどれか。
> 
>  ウ 外部入出力や内部論理ファイルの数と開発の難易度などから
>   システムの開発規模を見積もる方法
> 
> 帳票数,画面数などの外部入出力や内部論理ファイルの数が、ファ
> ンクションポイント法算出の単位であると考えます。キーワード的
> には、エが最も近いと思います。
> 
> さらに、ファンクションポイント法の算出問題も出題されていまし
> た。
> 
> ■平成12年一種午前71■
>  あるアプリケーションプログラムの,ファンクションポイント法
> によるユーザファンクションタイプごとの測定個数及び重み付け係
> 数は,次の表のとおりである。このアプリケーションプログラムの
> ファンクションポイント数は幾らか。ここで,複雑さの補正係数は 
> 0.75 とする。
> 
> ┌─────────────┬────┬────┐
> │ユーザファンクションタイプ│測定個数│重み付け│
> │             │    │ 係数 │
> ├─────────────┼────┼────┤
> │外部入力         │  1 │  4 │
> │外部出力         │  2 │  5 │
> │内部論理ファイル     │  1 │ 10 │
> │外部インタフェースファイル│  0 │  7 │
> │外部照会         │  0 │  4 │
> └─────────────┴────┴────┘
> 
>  ア 4    イ 18    ウ 24    エ 30
> 
> 回答:イ
>   
> ( 1 * 4 + 2 * 5 + 1 * 10 + 0 * 7 + 0 * 4 ) * 0.75 = 18.0

 いつもながら、過去問調査ありがとうございます。
 本当に助かっています。

 ろくさんの回答は、「エ」という判断ですね。
 説明の仕方によっては「ウ」の選択肢も合ってそうな気もしますが、
 やはり、試験的には「エ」が正解のような気がします。


 ちなみに、「ウ」の選択肢ですが・・・

> ウ プログラムステップ数算定の標準値や工数換算のための標準値を用いて
>   開発工数を比較的容易に計算できる。

 これは、COCOMO(COnstructive COst MOdel) の説明じゃないかな?
 と考えています。

 (その他、参考サイト)
 以前、マッシーさんが送ってきてくれたメールにあった URL です。
 http://www4.airnet.ne.jp/munakata/function_point.html

 ファンクションポイント法入門
 http://home7.highway.ne.jp/mats/IFPUG/index.htm

戻る


メモリ(H11.春 2種 問18)

 処理装置の演算速度に比べ、主記憶装置へのアクセス速度は遅い。
 この速度差を埋めるために、処理装置と主記憶装置の間に置く、高速の
 記憶装置はどれか。

 ア VLIW
 イ キャッシュメモリ
 ウ ディスクキャッシュ
 エ パイプライン


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H11.春 2種 問18)
----------------------------------------------------------------------
 イ キャッシュメモリ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 今週からアーキテクチャの話に入ります。
 今日は、メモリ(memory) に関する問題でした。昨日までやっていた CPU の
 話も入っています。

 「他の選択肢はどういうものなのか?」ということを考えてから、解説を
 見るようにしましょうね。正解したからといって、それで終わりにするには
 もったいないですよ(^^;


 選択肢を順に見ていきましょう。

> ア VLIW(Very Long Instruction Word)

   マイクロプロセッサの高速化技術の1つです。
   次世代マイクロプロセッサの1つの技術として、注目されています。

   基本的な考えとしては、コンパイラで複数の命令を一つの命令として
   まとめ、並列処理的に同時に実行しようという方式です。

   ただ、この方式のすごいところは、直接関係のない複数の命令でも
   まとめて実行してしまいます。同時に実行する命令数は決まっていて、
   数が足りないときには「何もしない」という命令で数を合わせます。

   単語を直訳すると、「とっても長い命令語」って訳せますね(^^;
   たしか、100ビット以上の長さになる?とか聞いた覚えがあります。


> イ キャッシュメモリ(cache memory)

   処理装置の演算速度に比べて、主記憶へのアクセス速度は遅いので、
   この速度差を埋めるために、処理装置と主記憶装置の間に置く、
   高速の記憶装置のことです。

   ちょっと試験の選択肢を意識した説明を書きましたが、
   勉強を始めたばかりの方のために、もう少しかみ砕いて書くと・・・

   主記憶(メモリ)は、CPU に比べると動作速度がかなり遅いです。
   それによって、2つの処理速度には差がついてしまいます。

   その差を少しでも縮めるために、主記憶(メモリ)と CPU の間に
   キャッシュメモリという主記憶よりも動作が高速なメモリを置きます。
   これによって、CPU は主記憶(メモリ)にアクセスする回数が減るので
   スムーズな処理が可能になるということです。


> ウ ディスクキャッシュ(disk cache)

   磁気ディスク装置と主記憶装置とのアクセス時間の差を埋めるための
   高速の記憶装置のことです。

   簡単に言うと、キャッシュメモリの「磁気ディスク(ハードディスク)
   とメモリの間」版です。


> エ パイプライン(pipeline)

   1つのプロセッサにおいて、複数の命令を少しづつ段階をずらしながら
   同時実行する方式です。

>   コンピュータの高速化技術のうち、一つの命令を n 個の独立な処理
>   段階に分割し、各処理段階を並行に実行できるようにして、複数の命令
>   をオーバラップさせて実行する方式

   この文章は「2種平成12年春問18」の問題文でした。

戻る


モジュール結合(H12.秋 2種 問54)

 図は,五つの関数A〜Eからなるプログラムの構成を表したものである。
 表に,これらの関数間のインタフェースを示す。図中の番号は関数間の
 インタフェースを示し,表中の項目“No”の列と対応している。このほかに
 関数A,D,Eは,特定のデータ領域を参照するという関係がある。
 関数AとEの間のモジュール結合関係はどれか。

            ┌―――┐
           ,'│ A │
          ,' └―――┘
         ,'  1 /  \ 2
  ┌―――――┐   /    \
  │ 特定の │┌―――┐  ┌―――┐
  │データ領域││ B │  │ C │
  └―――――┘└―┬―┘  └―┬―┘
     :  ',   │  \4   │
     :   ',  3│   \  │4
     :    ┌―┴―┐  ┌―┴―┐
     :    │ D │  │ E │
     :    └―――┘  └―┬―┘
     :.........................:

        図 プログラムの構成


    表  関数間のインタフェース
  ┌―┬――――――――┬――――――――┐
  │No│   引数   │   戻り値  │
  ├―┼――――――――┼――――――――┤
  │1│データ項目の内容│データ項目の内容│
  ├―┼――――――――┼――――――――┤
  │2│データ項目の内容│データ項目の内容│
  ├―┼――――――――┼――――――――┤
  │3│機能コード   │なし      │
  ├―┼――――――――┼――――――――┤
  │4│なし      │リスト     │
  └―┴――――――――┴――――――――┘

 ア 共通結合
 イ データ結合
 ウ 内容結合
 エ なし(非直接結合)

 Special thanks! ( http://www.sam.hi-ho.ne.jp/ike3/ )

----------------------------------------------------------------------

 今回も残念ながら回答が集まりませんでした。
 唯一、回答を送ってもらったろくさん、どうもありがとうございました。


 では、紹介します。

> 回答:ア
> 解説
> EのモジュールはBとCから結合されています。その方法はいずれ
> も、引数ではなにも与えず、call されたことによりリストを出力
> するというものです。したがって、AとBCがどのような結合関係
> であってもEには関係が無いと考えました。(最も、入れ子の先は
> モジュール結合という見方ではそもそも無関係なのかもしれません
> この部分は、自分が解っていません。)
> むしろ注目すべきは、ADEが特定のデータ領域で結合されている
> ことだと思います。
> 
> 《共通結合》
> COBOL で GLOBAL や EXTERNAL 属性を使用した時のように、共通の
> データ構造を複数のモジュールが参照するような場合の結合
> 
> 《データ結合》
> 変数や配列要素といったデータ要素だけがパラメータとして渡され
> る場合の結合
> 
> 《内容結合》
> あるモジュールが他のモジュール内のデータを直接参照する結合
> (日本経済新聞社:アルゴリズムとシステム開発)
> 
> パラメータとして渡されていないし、モジュール内のデータを直接
> 参照もしていないので、今回の特定のデータ領域で結合される関係
> は選択肢の中から「共通結合」であると考えています。
> 
> モジュール構造 ( module structure )
> システムをモジュールに分割して構成するときの、論理的な構造。
> モジュ−ル分割を階層構造的に行えば、プログラムの開発は全体か
> ら部分へと段階的にトップダウン展開することで実現できる。また
> モジュールの独立性を高くすることも重要であり、これはモジュー
> ル間結合度を弱く、モジュール独立性を高くする方向で検討する。
> (学研:情報システム辞典 2000年版)
> 
> では過去問を
> ■平成11年春二種午前58■
>  モジュール間の情報の受け渡しがパラメタだけで行われ,結合度
> が最も弱いモジュール結合はどれか。
> 
>  エ データ結合
> 
> ■平成9年プロダクションエンジニア午前55■
>  モジュールの独立性を高めるためには,モジュール結合度を弱く
> する必要がある。モジュール間の情報の受渡に関する記述のうち,
> モジュール結合度が最も弱いものはどれか。
> 
>  ア 共通域に定義したデータを,関係するモジュールが参照する。
>    《共通結合》
> 
>  イ 制御パラメタを引数として渡し,モジュールの実行順序を制
>   御する。
>    《制御結合》
> 
>  ウ データ項目だけをモジュール間の引数として渡す。
>    《データ結合》
> 
>  エ 必要なデータだけを外部宣言して共有する。
>    《外部結合》
>   
> ■平成10年プロダクションエンジニア午前61■
>  次のモジュール結合のうち,最も結合度が弱いものはどれか。
> 
>  ア COBOL の EXTERNAL 句で指定されたデータ項目を,他のプロ
>   グラムが参照する。
>    《共通結合》
> 
>  イ Fortran の COMMON 文で定義されたデータ要素を,他の副プ
>   ログラムが参照する。
>    《わかりませんでした》
> 
>  ウ 一方のモジュールが,データ要素を引数として他方のモジュ
>   ールに渡す。
>    《データ結合》
> 
>  エ 呼び出す側のモジュールが,呼び出される側のモジュールに
>   対して,処理の流れを制御するためのデータを引数として渡す。
>    《制御結合》

 最後の部分、「イ」のFortran の COMMON 文も共通結合になります。

 図で考えるとこんなカンジでしょうか。

   ┌────┐  ┌────┐  ┌────┐
   │A   │  │B   │  │C   │
   │    │  │    │  │    │
   │ XY │  │  YZ│  │ X Z│
   └────┘  └────┘  └────┘
     │        │       │
     │        ↓参照     │
     │参照   ┌─┬─┬─┐    │
     └────→│X│Y│Z│←───┘参照
           └─┴─┴─┘
          共通領域のデータ


 秋試験の2種のソフトウェア工学の問題が続きましたが、
 2種にしては難しい問題だと思います。
 ひょっとしたら、この影響が春試験でも出てくるかもしれません。

 ソフトウェア工学を勉強するに当たって、良い参考書などがありましたら
 どなたか教えてください。僕も探してみます。

戻る


誤り制御(H12.秋 2種 問20)

 メモリの誤り制御方式で、自動訂正機能に採用されているものはどれか。

 ア 水平パリティチェック
 イ チェックサム
 ウ チェックディジット
 エ ハミングコード


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12.秋 2種 問20)
----------------------------------------------------------------------
 エ ハミングコード

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 引き続き、アーキテクチャの特集です。
 今日は、メモリの誤り制御に関する問題でした。


 選択肢を順に見ていきましょう。

> ア 水平パリティチェック(horizontal parity check)

   パリティチェック(parity check)とは、伝送したい情報(ビット列)に
   対して、パリティビットと呼ばれる1ビットをビット列の最後に余分に
   付加して、ビット列の中の「1」のビットの個数を奇数か偶数に
   合わせることで、伝送中の誤りを検出する方法です

   あらかじめ送信側と受信側で「1」のビットの個数を奇数なのか
   偶数なのかを決めておくことで、誤ったビット列を受信した場合は、
   途中で誤りがあったということがわかる仕組みです。

   水平だけでなく垂直パリティチェック(vertical parity check) と
   いうのもあります。

   垂直と水平の違いは、ブロック単位でデータを送信するときに
   一文字単位でデータ誤りを検出するのが垂直パリティで、データ
   ブロック単位で誤りを検出する方式が水平パリティになります。

   水平パリティと垂直パリティについては、以前 vol.341 で紹介した
   のうめいさんから頂いた図がわかりやすかったので、引用させて
   もらいます。(この図は、これで3度目の登場です)

>   ■をスタートビット
>   ○をデータ部分
>   △を水平パリティービット(ブロック単位でチェックする)
>   ▲を垂直パリティービット(1文字ずつチェックする)
>   □をストップビット
>   と考えて1ブロック分(ここでは80文字)の図を書いてみると
>     _
>     ↑ ■■■■■■■■■……■■
>     1 ○○○○○○○○○……○△
>     文 ○○○○○○○○○……○△
>     字 ○○○○○○○○○……○△
>     10 ○○○○○○○○○……○△
>     b ○○○○○○○○○……○△
>     i ○○○○○○○○○……○△
>     t ○○○○○○○○○……○△
>     ↓ ▲▲▲▲▲▲▲▲▲……▲△
>     _ □□□□□□□□□……□□
>       |←80文字+パリティ→|

   水平と垂直を組み合わせることにより、2ビットの誤り制御が
   可能になります(100%可能という訳ではありません)


> イ チェックサム(check sum)

   チェックサムとは、あらかじめデータの合計の値を計算しておき、
   データの伝送のときに、データに合計の値をくっつけて送信し、
   受信側では、受信データの合計を計算して、送信側で計算した合計値と
   比べることでチェックをする方法です。


> ウ チェックディジット(check digit)

   チェックディジットとは、データをある一定の規則で得られた結果を
   末尾に付加して、データの誤りをチェックする方法です。
   主に、入力したコードの値の誤りを検出するのに使われます。

   過去問では、次のような文章がありました。

   モジュラス11などの計算方法によって得られた結果を商品コードなど
   の末尾に付加し、入力の誤りを入力データだけから発見できるように
   する方法で、この末尾に付加されるもののことをいう
   (2種平成11年秋問60の問題文)


> エ ハミングコード(Hamming code)

   ハミングコードとは、メモリの誤り制御や RAID-2 などで使われる
   チェック方式です。ECC(Error Correcting Code:誤り訂正符号) と
   いう誤りを訂正するためのデータをくっつけます。

   試験向きのキーワードとしては「誤りの検出と訂正」になります。
   パリティは、訂正はできません。

戻る


システムバス(H12.春 2種 問28)

 システムバスの説明として、適切なものはどれか。

 ア 多くのパソコンで用いられており、モデムや周辺装置とデータを直列に
   転送するための規格である。

 イ コンピュータ内部で複数の装置が共有するディジタル信号伝送路
   である。

 ウ ディジタル信号をアナログ信号に、又はアナログ信号をディジタル信号
   に変換する装置である。

 エ 入出力装置と主記憶との間のデータ転送を CPU と独立に行う機構で
   ある。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12.春 2種 問28)
----------------------------------------------------------------------
 イ コンピュータ内部で複数の装置が共有するディジタル信号伝送路
   である。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 引き続き、アーキテクチャの特集です。
 今日は、システムバス(system bus) に関する問題でした。


 バス(bus) とは、コンピュータ内部で各回路がデータをやり取りするための
 伝送路のことです。

 同時に複数ビットを転送することができるパラレル転送方式で伝送します。
 そのときの1回の転送で同時に送れるデータの量をバス幅といいます。

 システムバスとは、CPU と入出力装置や外部記憶装置との間を接続するバス
 で、信号の送受信を行う伝送路になっています。

 代表的なものには、最大データ転送速度が 8MB/s である ISA バス
 (Industrial Standard Architecture bus) や バス幅が 64 ビットの
 PCI バス(Peripheral Components Interconnect bus) などがあります。


 選択肢を順に見ておきましょう。

> ア 多くのパソコンで用いられており、モデムや周辺装置とデータを直列に
>   転送するための規格である。

   これは、シリアルインタフェースのことです。
   1本の信号線を使って1ビットずつデータを転送する方式です。


> イ コンピュータ内部で複数の装置が共有するディジタル信号伝送路
>   である。

   これが、正解のシステムバスです。


> ウ ディジタル信号をアナログ信号に、又はアナログ信号をディジタル信号
>   に変換する装置である。

   これは、モデム(MODEM) のことです。
   パソコンとアナログ回線を接続するときに使い、アナログ信号と
   ディジタル信号の変換を行います。また、その逆もやります。


> エ 入出力装置と主記憶との間のデータ転送を CPU と独立に行う機構で
>   ある。

   これは、DMA(Direct Memory Access) のことです。
   CPU を通さずに、各装置と RAM の間で直接データ転送を行う方式です。

戻る


入出力インターフェース(H12.春 2種 問29)

 入出力インタフェースに関する記述のうち、適切なものはどれか。

 ア ATA/ATAPI-4 (通常、IDE と呼ばれている)は、
   データを1ビットずつ直列(シリアル)に転送するインタフェースで
   あり、モデムやマウスなどを接続するために用いる。

 イ RS-232C は、8ビットのデータを並列(パラレル)に転送するインタ
   フェースであり、プリンタを接続するために用いられることが多い。

 ウ USB は、高速な周辺装置と低速な周辺装置向けの二つの転送モードを
   持ち、一般にプリンタやスキャナ、モデムなどは高速モードで利用する。

 エ セントロニクスは、赤外線通信の規格として、ノート型パソコンや
   携帯情報端末でのデータ交換やプリンタへの印刷データ送信などに使う。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H12.春 2種 問29)
----------------------------------------------------------------------
 ウ USB は、高速な周辺装置と低速な周辺装置向けの二つの転送モードを
   持ち、一般にプリンタやスキャナ、モデムなどは高速モードで利用する。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 引き続き、アーキテクチャの特集です。
 今日は、入出力インタフェースに関する問題でした。

 インタフェース(interface)とは、調整するという意味です。
 2つ以上のシステムをつなげて、何かのやりとりを行うことを言います。
 システム同士だけでなく、人間とコンピュータをつなぐインタフェース
 と言うようにも使われる言葉ですね。


 順に選択肢を見ていきましょう。

> ア ATA/ATAPI-4 (通常、IDE と呼ばれている)は、
>   データを1ビットずつ直列(シリアル)に転送するインタフェースで
>   あり、モデムやマウスなどを接続するために用いる。

   この選択肢は「RS-232C は・・・」に変えれば正解です。
   RS-232C は、主にモデムを接続します。

   ATA/ATAPI-4 とは、IDE コントローラに CD-ROM ドライブなどを
   接続するために考案されたデータ転送方式の規格です。
   ATA と ATAPI はもともと別の規格でしたが、ATA-4 で「ATA/ATAPI-4」
   としてくっつきました。

   IDE(Integrated Drive Electronics) とは、パソコンとハードディスク
   を接続する方式の1つです。
   これを拡張したのが EIDE(Enhanced Integrated Drive Electronics) で
   その拡張版が Ultra ATA です。
   現在は Ultra ATA の転送速度が3倍になった Ultra ATA/100 が登場
   しています。


> イ RS-232C は、8ビットのデータを並列(パラレル)に転送するインタ
>   フェースであり、プリンタを接続するために用いられることが多い。

   この選択肢は「セントロニクスは・・・」に変えれば正解です。

   セントロニクス(Centronics interface)とは、主にコンピュータと
   プリンタを接続するのに使われるパラレルインタフェースです。


> ウ USB は、高速な周辺装置と低速な周辺装置向けの二つの転送モードを
>   持ち、一般にプリンタやスキャナ、モデムなどは高速モードで利用する。

   これが、正解です。
   USB(Universal Serial Bus) とは、周辺機器とパソコンを接続する
   規格の1つです。

   機能としては、最大 127 台の機器をツリー状に接続可能であり、
   周辺機器の接続を自動的に認識してくれるプラグアンドプレイ
   (PnP : Plug and Play) や、電源を入れたままコネクタの抜き差しが
   できるホットプラグ(hot plug) を備えています。

   そして、選択肢にあるように、12Mbps のフルスピードモードと
   1.5Mbps のロースピードモードの2つの転送速度があります。


   あと、秋の2種試験でもこんな具合で出ていましたよ(^^;

   周辺機器はホストとなるパソコンを通じて接続される。
   複数のデータ転送モードがあり、一般にプリンタやスキャナは
   フルスピードモードで、キーボードやマウスはロースピードモードで
   使用される。(2種平成12年秋問25イ)


> エ セントロニクスは、赤外線通信の規格として、ノート型パソコンや
>   携帯情報端末でのデータ交換やプリンタへの印刷データ送信などに使う。

   この選択肢は「IrDA は・・・」に変えれば正解です。

   IrDA(Infrared Data Association) とは、赤外線通信の規格として、
   ノート型パソコンや携帯情報端末でのデータ交換やプリンタへの印刷
   データ送信などに使われます。

   IrDA は、僕の持っている携帯電話にも付いています。
   最近、使う機会が増えました(^^;

戻る


ディスクアクセス時間(H11.秋 2種 問21)

 図は、磁気ディスク装置のアクセス時間を表している。
 a〜dの正しい組合せはどれか。

      │                    │
      │←──────アクセス時間──────→│
      │                    │
      ├┬────┬─────┬────────┤
      ││←a─→│←─b─→│        │
      ││    │     │←──d───→│
      │           │        │
      │←────c────→│        │
      │           │        │

      ↑           ↑        ↑
  ┌─────────┐ ┌───────┐┌───────┐
  │制御装置が読み書き│ │読み書きの  ││読み書きの  │
  │の指令を出す   │ │動作が開始する││動作が終了する│
  └─────────┘ └───────┘└───────┘

   ┌──────┬───────┬───────┬───────┐
   │  a   │   b   │   c   │   d   │
 ┌─┼──────┼───────┼───────┼───────┤
 │ア│位置決め時間│回転待ち時間 │待ち時間   │データ転送時間│
 ├─┼──────┼───────┼───────┼───────┤
 │イ│位置決め時間│待ち時間   │回転待ち時間 │データ転送時間│
 ├─┼──────┼───────┼───────┼───────┤
 │ウ│待ち時間  │位置決め時間 │データ転送時間│回転待ち時間 │
 ├─┼──────┼───────┼───────┼───────┤
 │エ│待ち時間  │データ転送時間│位置決め時間 │回転待ち時間 │
 └─┴──────┴───────┴───────┴───────┘





━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解答■(出典:H11.秋 2種 問21)
----------------------------------------------------------------------
   ┌──────┬───────┬───────┬───────┐
   │  a   │   b   │   c   │   d   │
 ┌─┼──────┼───────┼───────┼───────┤
 │ア│位置決め時間│回転待ち時間 │待ち時間   │データ転送時間│
 └─┴──────┴───────┴───────┴───────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■解説■
----------------------------------------------------------------------
 引き続き、アーキテクチャの特集です。
 今日は、磁気ディスク(ハードディスク)の問題でした。基本情報技術者
 向けですね。

 このアクセス時間は、具体的に磁気ディスクが「どのようにデータの読み
 書きを行っているか?」というのがわかっていないと解きづらいです。
 まずは、流れを押さえてください。


 磁気ディスクの構成を簡略して書くと、図1のようになります。
 四角で書いたのが磁気ディスクです(^^;
 磁気ディスクは、CDみたいなものと思ってください。
 図は1枚ですが、本当は丸いディスクがいくつか重なっています。

 また、棒みたいなものはアクセスアームと言って、先端に磁気ヘッドという
 データを読み書きする部分がついた可動式のアームです。

 このアームが動くことと、ディスクが回転することによって、全てのデータ
 を読み書きすることができます。

             ─┐回転
      ┌──────┐↓
      │      │
      │ ↑    │
    ┣━┿━━━   │
      │ ↓移動  │
      │      │
      └──────┘
         図1


 磁気ディスクは、次のような動作で読み書きを行います。

> 1.まずアクセスアームをトラックの上へ動かし、磁気ヘッドの位置を
>   決めます。これにかかる時間が「位置決め時間(シークタイム)」
>   です。

   ここでは、まずアクセスアームが動きます。

   トラック(track) と言うのは、磁気ディスク上に並んだ同心円状の
   記録帯のことです(図2)。陸上のトラックのイメージです。

   また、重なっているディスクの同じ半径の所にあるトラック群を
   シリンダ(cylinder)と言います。このシリンダは、アクセスアームを
   動かさずに複数のディスクからデータの読み書きができる部分です。

      ┌──────┐
      │┌────┐│
      ││┌──┐││
      │││┌┐│││
      │││└┘│││
      ││└──┘││
      │└────┘│
      └──────┘
         図2

   さらに、トラックを分割した1つをセクタ(sector) といいます。


> 2.次に磁気ディスクを指定レコードの真下のところまで回転させます。
>   これにかかる時間が「回転待ち時間(サーチタイム)」です。

   ここでは、磁気ディスクが回転します。
   1と2で、磁気ディスクの「どの場所からデータを読み書きするのか」
   が決定されることになります。

   位置決め時間と回転待ち時間を合わせて「待ち時間」といいます。


> 3.最後に磁気ディスク上のデータを他の装置へ転送します。この転送が
>   始まってから終わるまでにかかる時間が「データ転送時間」です。

   場所が決まったら、データの転送が始まります。


 これが、磁気ディスクの一連の動きです。もう一度簡単にまとめると、

  1.アクセスアームの位置を決める。
  2.ディスクが回転する。
  3.データを転送する。

 という流れになります。


 問題の図に当てはめると下のようになりますね。
 時間は左から右に流れています。

  │                            │
  │←───────── アクセス時間 ─────────→│
  │                            │
  ├┬────────┬────────┬─────────┤
  ││←位置決め時間→│←回転待ち時間→│         │
  ││        │        │←データ転送時間→│
  │                  │         │
  │←───── 待ち時間 ─────→│         │
  │                  │         │

  ↑                  ↑         ↑
 ┌─────────┐  ┌───────┐  ┌───────┐
 │制御装置が読み書き│  │読み書きの  │  │読み書きの  │
 │の指令を出す   │  │動作が開始する│  │動作が終了する│
 └─────────┘  └───────┘  └───────┘

戻る