F-nameのブログ

はてなダイアリーから移行し、更に独自ドメイン化しました。

現実のコンピュータ(コンピューティング第4回)

大昔のハードウェアの知識しか自分は持っていないような気がする。パソコンの機能は私にとってすっかりブラックボックスになっているが、それでは駄目なような。

 

現実のコンピュータ。フォン・ノイマン型アーキテクチャ。しかし現実は遥かに複雑。メモリは何種類もあるし、CPUは1つだけではない。記憶装置の種類。階層を構成。メモリ階層。機械語命令もデータとしてデータパスを通って。レジスタなど。レイテンシ。スループット。キャッシュメモリ。主メモリ。
CPUの中にはレジスタ。演算はレジスタのデータ。CPUには数十個のレジスタ。64ビットのデータ。アクセス時間。数ナノ程度。レジスタの読み書き。機械語は遅延なく。プログラムカウンタ。制御レジスタが色々と。キャッシュメモリ。データを蓄える。数十ナノ程度。主メモリのアクセス時間は数百。レジスタには機械語命令は番号を指定して。主メモリとのやりとりはCPUの周辺の回路で勝手に。アドレスAの周辺のデータのブロックがキャッシュメモリに。転送されたブロックのアドレスが記憶。主メモリに書き込む。ブロック単位で。キャッシュメモリ自体が複数の階層から。レベル1。レベル2。レベル3。数メガバイト程度。キロとは1024。主メモリ。メインメモリ。数百ナノ秒程度。数GB程度。レジスタと比べると100倍程度遅い。機械語命令は待たなければ。OSは仮想メモリの機能を。主メモリが足りなくなると二次メモリが利用される。現時点で必要なデータを格納。二次メモリのデータが戻される。退避されていたデータを。二次メモリに余裕がある限り。CPUのする機械語命令。各々の機械語命令は読み書きのみ。二次メモリとして使われる媒体。電源を切っても内容は失われない。DVDなど。キャッシュメモリを内蔵している。仮想メモリは二次メモリを使って拡大。主メモリに、物理メモリ。アドレスを変換するハードウェア。論理アドレス、仮想アドレス。別の物理アドレスに。元の論理アドレスはそのままなのでそれを利用。機械語プログラムは論理アドレスを用いてアクセス。メモリ階層の観察。C言語のプログラムのソース。配列。実行時間。モップス。MOPS。値は1秒間に何百万回行うか。対数軸。MOPSの値。平坦部分や傾きが小さい部分。プログラムの領域がそれぞれのメモリ領域に収まる。平坦部分。最も早いキャッシュメモリ。次の平坦部分。主メモリや仮想記憶。最も遅いと最も早いは5倍程度。プログラムでメモリ領域を上手に使う。プログラムの効率。レイテンシ。遅延。スループット。帯域。データの量。二次メモリではレイテンシが大きくてもスループットは大きい。プログラムがどのようにデータにアクセスするか。
CPU。キャッシュメモリや二次メモリ。現実のコンピュータは複雑。心臓部であるCPUチップには複数のCPUが。より多くの計算ユニット。同時に行うことにより膨大なデータを。回路が複数個。CPUではなくコア。従来のCPU回路。機械語命令を読み出しながらデータのやり取りを。これらのコアは並列に実行。2つ以上のプログラムが。主メモリを共有。マルチコア。CPUチップ。キャッシュメモリが色んなところに。チップ全体のキャッシュメモリも。コアごとのキャッシュメモリの方が高速。CPUチップを複数。主メモリを。マルチプロセッサ。ネットワークで結合。仮想メモリを用いてメモリを共有。コンピュータの間で。ネットワークで結合したプログラム同士がデータを受けたりする。共同して通信を行い、分散計算。それぞれのコンピュータは並列計算。巨大なデータを処理。サーバというコンピュータを用意。全体のデータを管理。それぞれの塊を別のコンピュータに処理。サーバに送り返す。計算全体の結果を。GPU。プロセッサチップ。グラフィック処理を行うものだったが、汎用の計算が可能に。CPGPU。GPUでは沢山の演算ユニット。同じ機械語処理を。クラスタ。演算ユニットは同じ。クラスタは複数個。行列積のプログラム。3重のループ。2次元配列の行列。GPUを用いると演算ユニットの数が多ければ別々の値を実行できる。GPUではクラスタに属する演算ユニットが同時に実行。レジスタは別の値を格納。演算ユニット毎に別のレジスタが用意。並列計算の方法。同時に実行される命令は1つ。データはマルチプルデータ。GPUのメモリ階層。クラスタに属する演算ユニットが共有するメモリ。要素を共有メモリに置くと早くなる。
オペレーティングシステム。機械語のプログラムを実行。主メモリ上に格納。一連の準備の作業。一度に複数のプログラムを。CPUのコアの割当。ハードウェアですべて行うのは不可能。管理するソフトウェア。オペレーティングシステム。コンピュータ上で動くプログラムをタスクと呼ぶ。プロセス管理。1つのプロセスには仮想アドレス空間。メモリ。スレッド。プログラムの実行単位。CPUのコアが割り当てられる。個々のスレッドはレジスタを持ち並列に。1つのプログラムの手続や関数からの配列。プロセスの仮想アドレス空間の中に割り当てられる。データセグメントに。手続や関数はスレッドとして利用。CPUのコアが割り当てられる。仮想アドレスによって参照。メインの手続。別のスレッドが。別のコアに。局所的な変数は別のコアのレジスタに。局所変数。同じレジスタであってもコアが異なる。帯域的な変数。仮想アドレスを共有。プログラムのコードは仮想アドレスのコードセグメントに。CPUのコアの数が少ないと未分割で。適当な時間の間隔で交代して実行。CPUの状態を退避、メモリの領域に。別のスレッドを再開。コアの状態はレジスタの内容。適当な短い時間間隔でスレッドを同時に走らせる。1つのスレッドから別のスレッドに読み出される。データ全体の実行時間を減らす。一貫性の問題。排他制御。オペレーティングシステムの中でプロセスの仮想アドレス空間を管理、メモリ管理。プロセス管理とメモリ管理、ファイル管理などがOSの機能。入出力管理。手続をプログラムから読み出すことで。システムコール。ライブラリを用いて。ファイル管理。ファイルの作成や読み書き。ファイル群をフォルダなどで階層的に。ファイルシステム。ネットワークを介して読み書き。ネットワークファイルシステム。ネットワーク管理。通信の機能。通信機能を利用してIPなどのプログラムを。言語処理系も広い意味でOSの一部。CPUが直接的に実行するのが機械語命令。複数のWordから。OSの基本部分などでアセンブリ言語を使用する以外は高級言語を。普遍的な計算モデルに基づく。高級言語は何らかの言語処理系で等価な。翻訳された機械語のプログラム。ソースプログラム。オブジェクトプログラム。コンパイラ。インタプリタ。構文解析。代入文。各変数の名前と値はインタプリタで。

 

 

コンピューティング―原理とその展開 (放送大学大学院教材)

コンピューティング―原理とその展開 (放送大学大学院教材)