応用情報をとりたくて
きたる10月、応用情報技術者試験があります。ので、それまでの二か月間でひたすらに勉強し、その内容をまとめていきたいと思います。
今回はコンピュータ構成要素とシステム構成要素の過去問を解いたので、その分で出てきた単語をまとめます。
出てきた単語集(前回分)
正規分布、確率、モンテカルロ法、再帰的、再使用可能、再入可能、再配置可能、相関係数、ユークリッド互助法、 ハフマン符号化、幅優先と深さ優先探索、ディープラーニング、ベイズの定理、排他的論理和、リストの実現(配列orポインタ)、浮動小数の情報落ち、ハッシュ関数の衝突、完全二分木、ニュートン法、オイラー法、ガウスの消去法、シンプソン法、グラフと隣接行列、スタックとヒープ、BNF(バッカス・ナウア記法)、UTF-8、過学習、パリティチェック、有限オートマトン、ハミング符合、M/M/1待ち行列モデル、クイックソート、選択ソート、挿入ソート、バブルソート、BCD(Binary-coded decimal)、逆ポーランド記法、カルノー図、桁落ち、丸め誤差、情報落ち、打ち切り誤差、値呼び出しと参照呼出し、双方向リスト、シェルソート、ヒープソート、マージソート、オーバーライド、オーバーロード、カプセルか、汎化、TOF(Time of Flight)センサー
出てきた単語集(今回分)
RAID0、RAID1、RAID5、RAID2、RAID3、RAID4、SIMD、VLIW、グリッドコンピューティング、レジスタ、命令レジスタ、プログラムカウンタ、ベースレジスタ、インデックスレジスタ、アキュムレータ、汎用レジスタ、パイプライン処理、メモリインターリープ、フォールトトレランス(Fault Tolerance)、フォールトアボイダンス(Fault Avoidance)、フォールトマスキング(Fault Masking)、フールプルーフ(Fool Proof)、フェールセーフ(Fail Safe)、フェールソフト(Fail Soft)、フェールオーバー(Fail Over)、フェールバック(Fail Back)、フォールバック(Fall Back)、MIMD、ウェアレベリング、マルチレベルセル、ブロックアクセス方式、スケールイン/アウト、スケールアップ/ダウン、web3層アーキテクチャ構造、密結合マルチプロセッサシステム、アウトオブオーダー実行、遅延分岐、投機実行、レジスタリネーミング、サーバコンソリデーション、キャパシティプランニング、絶対アドレス方式、相対アドレス方式、間接アドレス方式、SDXC、シンクライアント、アムダールの法則、MMU(Memory Management Unit)、スーパースカラ、スーパパイプライン、構造ハザード、制御(分岐)ハザード、データハザード、シンプロビジョニング、キャパシティプランニング、ZigBee、SAN(Storage Area Network)、磁気ディスクにおけるデータ読み取り時間、ライブマイグレーション、ホットスタンバイシステム、ハートビートバケット、ライトスルー/ライトバック、アクセス透過性、ダイレクトマップ、フルアソシエイティブ、セットアソシエイティブ、スタックポインタ、クラスタリング方式、オブジェクトストレージ、CDN(Contents Delivery network)、量子コンピュータ、ストアドプロシージャ
今回分について、それぞれの用語解説
RAID(Redundant Arrays of inexpensive Disks):複数のハードディスクを組み合わせることで、1台の仮想的なハードディスクとして認識させて冗長性を向上させる技術のこと(参考)
RAID0:RAIDコントローラ上でデータをブロック単位で分割し、各HDDに分散して書き込む。そのため、一台でもHDDに障害が発生するとデータを復旧できない。
RAID1:同じデータを2つのHDDに書き込む。なので、実効容量が半分になるが、HDDが1台故障しても問題なくデータを利用できる。
RADI5:データからパリティ(誤り訂正符号)を生成し、3代以上のHDDに分散して書き込む方式。パリティの容量がHDD1台分となるので、実効容量がその分減少する。(参考)
RAID2:データをビット単位で分割され、ハミングコードを採用している。データと冗長コードは専用ドライブが必要であり、最小構成でもデータ2台、修正コード用3台となってしまう。(参考)
RAID3:データをビット単位で分割して並列して書き込むが、パリティコードはパリティディスクにのみ書き込む
RAID4:RAID3の処理をブロック単位にしたもの
SIMD(Single Instruction, multiple data):一つの命令を同時に複数のデータに適用する並列化形態の一種(参考)
VLIW(Very Long Instruction Word):複数の命令を一つの命令にすることで、複数命令を同時に実行させる手法(参考)
グリッドコンピューティング:地理的に異なる場所に分散したコンピュータリソースを組み合わせて共通の目標を達成するコンピューティングインフラストラクチャ(参考)
レジスタ:CPU内部にある記憶装置のこと。CPUの命令処理の流れとしては、命令を取り出し(命令フェッチ)、命令の解読(でコードの後、対象データの読み出し(オペランドの読み出し)を行い、命令を実行して結果を書き込むというものだが、その際に取り出した命令や、次に実行する命令などを記録しているのがレジスタになる。
(参考)
命令レジスタ:取り出した命令を一時的に記憶しておくためのレジスタ
プログラムカウンタ:次に実行すべき命令のアドレスを記憶しておくためのレジスタ
ベースレジスタ:プログラムをメモリ上にロードしたときの先頭のアドレスを記憶しておくためのレジスタ。
インデックスレジスタ:連続したデータの取り出しに使うためのレジスタ
アキュムレータ:演算結果を一時的に記憶しておくためのレジスタ
汎用レジスタ:特に役割を限定していないレジスタ
パイプライン処理:命令を、フェッチ、デコード、アドレス計算、オペランド読み出し、実行のステージに分けて、ステージごとに並列に実行することで処理時間を短くする方法(参考)
メモリインターリープ:メモリ内部を多層構造(バンク)にして、バンクごとに並列的にデータ読み書きを行うことで、メモリアクセスを高速化する技術(参考)
以下の障害関連ワードの参考
フェールセーフ(Fail Safe):障害発生時に常に安全側にシステムを制御すること。(信号の一つが壊れたら全て赤にする)
フェールソフト(Fail Soft):障害発生時に機能低下しつつもシステム全体は動かし続けること。(機能低下状態で処理を続行することをフォールバック(Fall Back)(縮退運転)という。)
フェールオーバー(Fail Over):障害発生時に処理やデータを別システムに自動的に引継ぐこと。(障害回復後に、元のシステムに処理を戻すことをフェールバック(Fail Back)という)
フォールトトレランス(Fault Tolerance):故障が発生してもシステムを維持すること
フォールトアボイダンス(Fault Avoidance):構成要素を故障しにくいものにすることで、故障発生を防ぐこと
フォールトマスキング(Fault Masking):障害発生時にその影響が外部へ出ないようにすること
フールプルーフ(Fool Proof):誤った操作や意図しない使われ方をしても、システムに異常が発生しないようにすること
MIMD:プロセッサごとに異なる命令を並列に実行させる処理方式のこと(参考)
ウェアレベリング:フラッシュメモリ上で、特定のアドレスに書き換えが集中することを避ける仕組み(参考)
マルチレベルセル:1つのセルに複数bitを記録する仕組み。3bitならTLC、4bitならQLCとなる。(2bitの時をマルチレベルセルというのか、2bit以上の場合をいうのかは謎。混じってそう)(参考)
ブロックアクセス方式:固定長のブロック単位でデータを読み書きする手法(参考)
スケールイン/スケールアウト:サーバー台数を減らす/増やすことで、リソース最適化を行う方法(参考)
スケールアップ/スケールダウン:サーバー自体のスペックを上げる/下げることで、リソース最適化を行う方法(参考)
web3層アーキテクチャ構造:主に、ユーザーがアプリケーションを直接操作するためのインターフェースを構成するWebサーバのプレゼンテーション層、Webサーバのプレゼンテーション層にあるインターフェース上の走査を処理するAPPサーバのアプリケーション層、データ保存や更新、削除をするDBサーバのデータ層に分かれている。(参考)
密結合マルチプロセッサシステム:複数のプロセッサが主記憶装置を共有するマルチプロセッサシステムであり、複数プロセッサは共通バスを経由して接続される。(参考)
アウトオブオーダー実行:プログラム記述順序に関係なく、処理に必要なデータがそろった命令から実行する仕組み(参考)
遅延分岐:コンピュータの命令実行において、条件分岐の結果が分かるまでにほかの命令を先に実行しておくことで効率を上げる技術(参考)
投機実行:命令処理の結果によって次に実行する命令処理が異なる場合、どの命令処理が実行されるか予測する仕組みとして分岐予測が存在するが、この予測に基づいて、命令処理を先に実行する仕組みのこと(参考)
レジスタリネーミング:同じレジスタ名が複数の命令で競合しないようにリネーミングすることで、順序依存性(命令の実行順序に依存する現象)を解消し、パイプライン処理の効率を上げる技術。(参考)
サーバコンソリデーション:多数のサーバ機で運用しているシステムを、仮想化技術を用いて、少数サーバで構築した仮想化環境に移行することで、管理コストを削減すること。(コンソリデーションは統合を意味する)(参考)
キャパシティプランニング:情報システムに必要なリソース量や処理能力を予測し、計画的に確保するプロセスのこと(参考)
絶対(直接)アドレス方式:CPUにおける命令実行の際、処理対象となるデータの所在を指定するアドレス指定方式の一つで、命令のアドレス部(オペランド部)に記載された値をそのままメモリ上の位置とする指定方式(参考)
相対アドレス方式:命令のオペランド部にプログラムカウンタの値を加えたものをアドレスとする方式(参考)
間接アドレス方式:求めるデータのアドレスが保存されたメモリ上の領域を、命令のアドレス部で指定する方式(参考)
SDXC:ファイルシステムとしてexFATを採用した高尾で、最大2TBまで記憶可能なSDカードの種類の一つ。(参考)
シンクライアント:大規模HDDを持たず、アプリケーション実行やデータ保持をサーバー側で行うエンドポイント端末。(参考)
アムダールの法則:並列処理に伴う高速化について、理論上の限界値を求めるための法則であり、以下のように表現される。(参考)
E = \frac{1}{1-r+(\frac{r}{n})} \
E:速度向上率 \
r:並列処理の高速化割合 \
n:プロセッサ数 \
MMU(Memory Management Unit):現代コンピュータの多くは、メモリ装置内の記憶領域を「ページ」と呼ばれる一定サイズの小さい領域に分割し、物理アドレスとは別に仮想アドレスを割り振ってアクセスできるようにする、仮想メモリという仕組みを導入している。MMUは、物理アドレスと仮想アドレスの対応関係を記録して相互に変換したり、要求されたページが物理メモリに存在しない場合はOSに知らせたりする(ページフォールト)役割を果たす。(参考)
スーパースカラ:パイプライン処理において、パイプライン自体が並列されている仕組み(参考)
スーパーパイプライン:パイプライン処理の段階をさらに細分化した仕組み(参考)
構造ハザード:コンピュータの内部構成が原因のハザードであり、複数の命令が同じハードウェア資源を使わなければならない場合に生じる(メモリアクセス衝突など)(参考)
制御(分岐)ハザード:制御命令とそれ以後の命令の依存関係が存在する、制御依存によるハザード(参考)
データハザード:ある命令で生成されるデータを別の命令が使う、データ依存が解消されない場合のハザード(参考)
シンプロビジョニング:ストレージ容量を仮想的に割り当てることで、物理容量を削減できる技術。(ユーザーに初めに50GB物理容量を割り当てるのではなく、仮想的に物理容量を割り当てることで、確保するストレージ容量は実使用量に抑えられる仕組み)(参考)
キャパシティプランニング:需要や負荷の変化に対応できるように、ICTシステムにとって必要なリソースの量や処理能力を予測し、計画的に確保するプロセスのこと(参考)
ZigBee:低コスト、低消費電力のワイヤレスせんさーネットワーク構築に適した無線通信規格(参考)
SAN(Storage Area Network):ストレージとサーバの間にデータ共有のための専用ネットワークを配置する接続形態であり、ファイバーチャネルを使った高速通信も併用することで、サーバーごとにストレージを用意するのではなく、統合して管理できるようになる仕組み。(参考)
磁気ディスクにおけるデータ読み取り時間:シーク時間(位置決め)、サーチ時間、データ転送時間の三つからなる。HDDでは、同心円状の記憶領域(トラック)中二、読み書き最小単位(セクタ)が存在するようになっている。読み出しの際は、ヘッドがデータのあるトラックに合わせる平均シーク時間、データが実際に記録されている位置に会うまでの平均回転待ち時間があり、さらにそこにデータ転送時間が乗ってくる形式になっている。(参考)
ライブマイグレーション:仮想マシンへのアクセスを中断することなく、VMをあるホストから別のホストへ移動するプロセスのこと(参考)
ホットスタンバイシステム:複数の同じ構成のシステムを用意しておき、システム障害発生時に本番系から同期する待機系へ瞬時に切り替えることで、ダウンタイムを最小限に抑える手法。(参考)
ハートビートバケット:ホットスタンバイシステムにおいて、運用系と待機系で相互に死活監視を行う際に用いる、自らが正常に動作していることを知らせるシグナル(参考1,参考2)
ライトスルー/ライトバック:ライトスルー(write through)は、処理されたデータがキャッシュメモリと主記憶装置などに書き込まれるまで次の処理が行われない方式であり、ライトバック(write back)方式は、キャッシュメモリにデータを書き込んだ時点で次の処理を行い、CPU処理負荷が低下した段階で主記憶装置などに書き込む方式。(参考)
アクセス透過性:分散システムにおいて、ローカルと遠隔の資源について、同じようなアクセスが可能なこと(参考)
ダイレクトマッピング方式:キャッシュメモリの割付方式のうち、主記憶のブロック番号から、キャッシュメモリ上でのブロック番号が一意に決まる方式。(計算式は下記の通り)このため、キャッシュメモリ上での位置がかぶった場合には、データの追い出しが発生する。(参考)
(主記憶のブロック番号)mod(キャッシュメモリのそうブロック数)=キャッシュメモリのブロック番号
フルアソシエイティブ方式:キャッシュメモリの割付方式のうち、主記憶のブロックがどのキャッシュブロックにも対応付けられる方式のこと。これにより、キャッシュヒット率が上昇するが、主記憶のどのブロックの内容がどのキャッシュと対応するかの記憶が必要であり、かつ検索にも時間を要する。(参考)
セットアソシエイティブ方式:キャッシュメモリの割付方式のうち、上記二つの中間に位置するもので、連続したキャッシュブロックをセットとしてまとめ、そのセット中であればどのブロックでも格納できる方式。例えば、キャッシュブロックが10あったとして、2ごとにグルーピングをする。そして、主記憶からmod(キャッシュメモリグループ数)とすれば、同じキャッシュメモリグループに複数格納することが出来る、という方式。(参考)
スタックポインタ:レジスタの一種で、スタックと呼ばれるメモリ領域の現在の操作位置を保持するためのもの。メインルーチンからサブルーチンへ戻る際に必要となるアドレスや、サブルーチンに渡す引数などをスタックに入れるといった形で利用される?。(参考1、参考2)
クラスタリング方式:複数台のPCをネットワークでつなぐことで、1台の高性能大型コンピューターのように利用するための技術。主に高い性能を求めるHPCクラスタリング、単一障害点(SPOF)をなくし、あるノードが停止しても他のノードに処理を引き継ぐことで高可用性を実現するHAクラスタリング、ロードバランサーによって処理を複数ノードに分散させ、高い処理性能と高い可用性を両立する負荷分散クラスタリングが存在する。(参考)
オブジェクトストレージ:データをディレクトリ構造で管理するファイルストレージとは異なり、オブジェクト単位で扱う記憶装置のこと。データサイズやデータ数保存制限がない。(AWS S3が代表格)(参考)
CDN(Contents Delivery network):オリジンサーバーから複製し、各地に配備されたキャッシュサーバーからコンテンツが配信されることで、オリジンサーバーの負荷軽減をしつつ、ユーザーとサーバー間の物理的距離の退縮を可能にする仕組み。(参考)
量子コンピューター:量子の持つ性質を利用したコンピューターであり、01が併存した量子計算に特化した量子ゲートを用いる、汎用性が高いが実用化されていない量子ゲート方式と、組み合わせ最適化問題に特化している、汎用性は低いがすでに実用化されている量子アニーリング方式の二種類が存在する。(参考)
ストアドプロシージャ:データベース管理システム(DBMS)の一つで、データベースに対する連続した複数処理を一つのプログラムにまとめ、データとともに保存できるようにしたもの。すでにDBMS側に保存されているので、高速に実行でき、帯域幅も節約できる。(参考)
まとめ
今回は、コンピュータ構成要素とシステム構成要素の過去問を一通り解きました。単語数がめっちゃ多くなりました。
正直cpuがどのように命令処理をするか?であったり、耐障害性を考えた仕組みなど、こんがらがる部分が多かったので、ちゃんと復習しておこうと思います。