• 検索結果がありません。

§0 コンピュータの歴史と概要

N/A
N/A
Protected

Academic year: 2021

シェア "§0 コンピュータの歴史と概要"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

Ver.15

コンピュータの仕組みを理解するために

1.ハードウエアの基本構成

中央処理装置(CPU) 演算装置 制御装置 (ALU) 入力装置 主記憶装置(main memory) 出力装置 キーボード、マウス、ライトペン 半導体メモリ ディスプレイ、プリンタなど OCR,MCR,イメージスキャナ,タッチパネルなど 外部記憶装置(補助記憶装置) 通信制御装置(CCU) モデム・ルータ(LANポート、 磁気テープ、ハードディスク、フロッピーディスク、 PCカード、無線LAN)など MO,CD,DVD,フラッシュメモリ(USBメモリやSDメモリ)など 通信回線へ データの流れ 制御の流れ コンピュータのハードウェアは、中央処理装置、記憶装置、入出力装置という3つの部分に 大別される。中央処理装置(CPU: central processing unit)は頭脳の中枢にあたるところで、 メモリとデータのやりとりをしながら各種の演算を実行する演算装置(ALU: arithmetic and logical unit)と、メモリから読み出した命令(プログラム)を解読しそれを実行するために各

部の制御を行う制御装置とからなる。

データやプログラムは、キーボード、マウス、タッチパネルなどの入力装置(I/O unit)から

読み込まれ、主記憶装置(main memory)に格納され、CPUとの間で高速のやりとりをして処理・ 実行される。特別な入力装置としては、ビデオカメラ(動画)、マイク(音声)、イメージスキャ

(2)

ナ(画像)などもあり、これらは取り込んだ動画、音声、画像などをデジタルデータに変換して コンピュータに入力する。メインメモリ(高速だが高価)には限りがあるので、大量のデータは

外部の補助記憶装置(低速だが廉価)に格納する。処理結果はディスプレイやプリンタなどの出

力装置に出力される。ほかの出力装置としては、プロジェクタ、プロッタ、スピーカーやイヤ

フォンなどもある。入力装置と出力装置を合わせて入出力装置(I/O: input-output unit)とい う。入出力装置、通信制御装置、無停電電源装置など、コンピュータの本体以外の部分を総称 して周辺装置(peripheral unit)という。 大容量のデータを保存するために補助記憶装置は必須である。かつて補助記憶装置の中心で あった磁気テープは現在ではほとんど使われていないが、磁気ディスク装置は大容量の補助記 憶装置として現在でも主役である。パソコンで広く使われているハードディスク(HDD: hard disk)は磁性体を塗布したディスク(円盤)を何層か重ねたもので、現在ではTB(テラバイト)程 度の容量も珍しくない。その他の補助記憶装置にはフロッピーディスク(FD: floppy disk)、 光磁気ディスク(MO: magneto-optical disk)、フラッシュメモリ(USBメモリやSDメモリなど)、 CD(compact disc), DVD(digital versatile disc)などがある。かつて PC の外部メモリの主 役であった FD (や、その後の一時期使われた MO) は今では CD, DVD,フラッシュメモリに取 って代わられている。1982年頃から普及しだした CD は光ディスク(光(半導体レーザー)の反 射により情報の読み書きをする)ものであり、記憶容量640MB/700MB, 読み込み速度 1.2Mbps 程 度である。1996年頃から登場したDVD も光ディスク(第二世代に分類される)であるが、記憶 容量は120mm両面2層で最大5.2GB, 読み込み速度11Mbps(最大で16倍速)程度である フラッシュメモリ(flash memory)は書き換え可能で、電源を切ってもデータが消えない不揮 発性の半導体メモリの一つである。USB ポートを用いてデータを転送する際に補助記憶装置と してフラッシュメモリが用いられることが多いため、USBメモリと呼ばれることもある。記憶 容量は16MB~512GB(2015年現在)と幅広い。携帯電話(スマホを含む)等で使われている小型 のメモリカードであるSDメモリ(や miniSD, microSD)はフラッシュメモリの一種である(数十 GBくらいまで)。形態によって SD, MS, SM, xD, CF とも呼ばれる。

ディスプレイには、一種の真空放電管であるCRT(cathode ray tube)を用いたCRTディスプレ

イと、液体と結晶の両方の特性を持つ物質である液晶が透過光の偏向角を変える性質を利用し

た液晶ディスプレイがある。

イメージスキャナ(image scanner)は、写真や絵などの画像を読み取ってデジタルデータに

変換する装置である。

通 信 制 御 装 置(CCU: communication control unit) の 一 つ で あ るモ デ ム(modem:

(3)

コンピュータとの間でデータ変換を行う装置である。シリアル信号を半導体レーザー光に変換 する光モデム、シリアル信号を無線によって伝送するための無線モデム(Bluetoothなど)、 ブロードバンドインターネット接続用のADSLモデムなどに分類されることもある。ADSLモデム の場合、ルーターに内蔵されていることが多い。ルータ(router)は、コンピュータを繋げたネ ットワークにおいて複数のサブネットの間でデータを中継する(データをサブネットに分配す ると同時に転送の可否等も判断する)通信機器の総称である。管理の対象や能力によってブロ ードバンドルータとかモバイルWiFiルータなどに分類することもある。 プリンタには、1文字ずつ横方向に印刷するシリアルプリンタ(serial printer)と、1行分 をまとめて印刷するラインプリンタ(line printer)と、1頁分のドット情報をメモリ内に展開 して印刷するページプリンタ(page printer)があるが、シリアプリンタやラインプリンタは現 在ではほとんど用いられていない。また、印刷方式によって、感熱式プリンタ、インクジェッ トプリンタ、レーザープリンタなどがあるが、感熱式プリンタは現在ではほとんど用いられて いない。

2.よく使われる単位

ビット bit (binary digit) 0/1(yes/no,有/無など)の2値を表す単位。2進数1桁。 バイト byte (Bと略記する) 1文字を表す単位に相当する(正しくは1語をいくつかに分割 したもの)。1byte=8bitsであることが多い。 KB Kilobyte (1000B) MB Megabyte (100万B) GB Gigabyte (10億B) TB Terabyte (1京B) ワード(語) word (Wと略記する) コンピュータ内部で演算対象となる単位(そのビット幅の 演算回路やバス(データ伝送路)がある)。1W=8bits,16bits,32bits,64bits等。現在は 1W =32bitsまたは64bitsが主流である。

MIPS (million instructions per second) 「1秒間に何百万回の基本命令を実行するか」を 表す単位。

FLOPS (floating point instructions per second) 「1秒間に何回の浮動小数点命令(実数 に関する命令)を実行するか」を表す単位。普通、浮動小数点数命令の方が他の数値演算命令(固 定小数点数命令=整数に関する命令)より実行時間がかかる。MFLOP=106FLOPS.

(4)

最近は、演算速度を表す単位として固定小数点演算にSPECint92、浮動小数点演算にSPECfp92 を使うこともある。

MFLOPS Mega Flops (100万FLOPS) GFLOPS Giga Flops (10億FLOPS)

bps bit per second(1秒間に送信できるビット数).B/s とか b/s とも書く。

2進数(binary number)下位から i ビット目は 2i を表す(ただし、最下位を 0 ビット目 とする). 8進数(octal number)下位から i 桁目は 8i を表す(ただし、最下位を 0 桁目とする). [0]10 = [0]8 = [000]2, [1]10 = [1]8 = [001]2, …, [6]10= [6]8 = [110]2, [7]10 = [7]8 = [111]2. 16進数(hexadecimal number)下位から i 桁目は 16i を表す(ただし、最下位を 0 桁目と する).10~15 を表すのに文字 a~f(または A~F)を用いる. [0]10 = [0]16 = [0000]2, [1]10 =[1]16 = [0001]2, …, [14]10 = [e]16 = [1110]2. [15]16 = [f]16 = [1111]2. 単位の接頭語(修飾語、補助単位) 10-24 10-21 10-18 10-15 10-12 10-9 10-6 10-3 10-2 10-1 1 y z a f p n μ m c d ヨクト ゼプト アット フェムト ピコ ナノ マイクロ ミリ センチ デシ atto femto pico nano micro mili centi deci

(古北欧) (北欧) (ラテン) (ラ) (ラ) (ラ) (ラ) (ラ) 18 15 尖った先 小人 小さい 1000 100 10 十 百 千 百万 十億 兆 千兆 百京 十垓 がい 秭 し 1 10 102 103 106 109 1012 1015 1018 1021 1024 da h K M G T P E Z Y デカ ヘクト キロ メガ ギガ テラ ペタ エクサ ゼタ ヨタ deca hecto kilo mega giga tera peta exa zetta yotta (ギ) (ギ) (ギ) (ギ) (ギ) (ギ) (ギ) (ギリシャ語)

10 100 1000 大きい 巨人 怪物 5 6

(5)

数年前までは、単位の接頭語の K, M, G, … は、K=103, M=106, G=109, … といった 10 の冪乗ではなく、2 の冪乗を使うことが結構行われた。例えば、K として、1000 に最も近い 2 の冪乗である 1024(=210) が使われた(同様に、M=106や G=109 の代わりに 220 =1048576 や 230=1073741824 が使われた)。しかし、これは混乱の元であったので、現在では、後者は別 の名称で呼ぶことになっている(1998 年に、IEC(国際電気標準会議)が国際規格として定め、 IEEE でも同様の規格IEEE 1541-2002を 2002 年に定めた)。その新呼称は次の通り: 呼称 単位記号 210=1024 キビ kibi Ki 220=1048576 メビ mebi Mi 230=1073741824 ギビ gibi Gi 240 テビ tebi Ti

以下略(ペビ pebi (Pi)、エクスビ exbi (Ei)、ゼビ zebi (Zi)、ヨビ yobi (Yi))

3.CPUの基本原理

2つの整数の和を出力するプログラムを考えよう。 main() { int a, b, c; /* 変数 a,b,c が整数値をとる変数であることを宣言する */ a = 1; /* a に 1 を代入する */ b = 2; /* b に 2 を代入する */ c = a+b; /* a と b の和を c に代入する */ cout << c; /* c の値を出力する */ } コンピュータは、このプログラムをそのまますぐに実行できるわけではない。このプログラ ムは人間にとって理解し易い汎用高級言語(この例ではC++言語)で書かれたものであり、コ ンピュータが直接認識して実行することはできない。そのため、コンパイラ(compiler)と呼ば れるプログラムによって、コンピュータが直接理解して実行できる形の命令(機械語命令 (machine instruction)と呼ばれ、対応するハードウェア的機構ないしはそれに近いものが存 在するもの)の列に翻訳する。1つの機械語命令は、命令の種類とその作業対象となるデータ

(6)

の入っている場所(アドレス)などを 0,1 で表現したものであり、このような機械語命令の列 を機械語プログラムという。機械語(machine language)は単に 0,1 の列であるが、より人間に 分かりやすいように記号化したものをアセンブリ言語(assembly language)という(アセンブ ラという人もいるが、アセンブラはアセンブリ言語を機械語に翻訳するプログラムのことであ る)。 X と Y の和を Z に代入するプログラム 機械語(8080A) アセンブリ言語(8080A) 汎用高級言語 00111011 LDA X Z=X+Y (FORTRAN) 00000000 LXI H,X COMPUTE Z=X+Y. (COBOL) 10000000 ADD M z:=x+y; (PASCAL) 10000000 STA Z Z←X+Y (APL) 00100001 (SETQ Z (+ X Y)) (LISP) 00000001 Z=X+Y; (PL/I) 10000000 ADD M _z is _x+y (Prolog) 00110010 STA Z z=x+y; (C) 00000010

10000000

高級言語と違い、機械語の仕様は CPU(すなわち、機種)ごとに異なっている。上の例に用 いたのは、インテル社製の 8080A と呼ばれる MPU の機械語である(8080A はマイコンが出現し た当初の 8 ビットマシン。MPU=micro processor unit=マイコンの CPU)。通常、機械語命令 の種類(命令セット)は 100 個から 200 個くらいあり(命令の種類が複雑で多種な CISC 型コ ンピュータ(complex instruction set computer)と、命令を単純にして実行効率を向上させた 方式の RISC 型コンピュータ(restricted instruction set computer)とでは命令の数がかなり 異なる)、1つの命令は次のような構造をしている(命令によって、長さや形式がかなり異な る): ① ② ③ 命令コード 補助情報 命令の対象となるアドレスあるいはデータ ①の「命令コード」はその命令の名前を 2 進数で表したものであり、③の「アドレス部」に はその命令の操作対象となるデータが入っているメモリ(主記憶装置)のアドレス、あるいは

(7)

使われるデータ自身が入れられる。②(「修飾部」)には、レジスタ番号その他の補助情報が入 れられる(レジスタ(register)とは、演算に使われる少数個の高速メモリのこと)。

さて、機械語に翻訳されたプログラムが行うことは次のようになる:

① 「 int a,b,c; 」によって主記憶装置上に int (整数)型変数 a, b, c それぞれのための 領域が確保される。 ②「 a = 1; 」によって確保された変数 a に int 型の値1が格納される(値1は、機械語命 令自身内に作られ、その命令が実行されるか、あるいは、主記憶装置内のデータ用領域に作ら れ、それが演算装置を経由して変数に格納される)。 ③「b = 2; 」についても②と同様。 ④「 c = a+b; 」によって変数 a と b の値は"ロード命令"(機械語の命令の一つ)によって演 算装置に渡され、"加算命令"を使って和がとられ、その演算結果が再び"ストア命令"によって 変数 c に格納される。 ⑤「cout << c; 」によって変数 c の値は出力装置(例えば、ディスプレイ)に出力される。 例えば、④を行うためには次の5つの機械語命令が実行される: アセンブリ言語による記述 mov dword ptr [a (00428bf4)],1 定数 1 を a (アドレス 00428bf4)に格納せよ mov dword ptr [b (00428bf8)],2 定数 2 を b (アドレス 00428bf8)に格納せよ mov eax,[a (00428bf4)] a の値を演算装置にロードせよ add eax,dword ptr [b (00428bf8)] 同上演算装置に b の値を加算せよ mov [c (00428bfc)],eax 同上演算装置の値を c(アドレス 00428bc)に格納せよ 対応する機械語命令の列 11000111 00000101 11110100 10001011 01000010 00000000 00000001 11000111 00000101 11111100 10001011 01000010 00000000 00000010 10100001 11110100 10001011 01000010 00000000 00000011 00000101 11111000 10001011 01000010 00000000 10100011 11111100 10001011 01000010 00000000 この機械語1つ1つが何であるかを解読して、対応する処理を実行するために、CPU は、各 機械語命令を「命令の読み込み」「命令の解読」「命令の実行」「結果の出力」というステップ に分解して実行するというステップを繰り返す(下図参照)。もう少し、細かく言うと、

(8)

① 命令の読込み(フェッチ): プログラムカウンタ(プログラム内のいくつめの命令を 解読実行中であるかを記憶しておくためのメモリ)が示すアドレスに従い主記憶装置から命令 を読み出し、命令レジスタ(1つの命令を格納しておくためのレジスタ。レジスタ(register) とは読み書きが高速にできるメモリのこと)に格納する。次に実行すべき命令を示すようにプ ログラムカウンタの値を更新する(普通は現在実行中の命令の直後の命令を実行するので、1 を足す。ジャンプ命令の場合は、飛び先の命令の番号を入れる)。 ② 命令の解読(デコード): 命令レジスタの命令(命令部とアドレス部と修飾部に分け られる)のうち、命令部をデコーダー(decoder)に渡す。デコーダーは渡されたものがどのよ うな命令であるかを解読し、命令を実行するための制御信号を生成し、命令が主記憶装置上の データを必要とするならば、そのアドレスをアドレスレジスタに転送する。 ③ 以下、命令の実行: アドレスレジスタは、インデックスレジスタやベースレジスタ(こ れらのレジスタは、アドレスを表すためのもので、実際のアドレスは、ベースアドレスにイン デックスレジスタの値を足したものになる(アドレスの決め方は方式によって異なり、もっと 複雑な方式によっている場合もある)の修飾を受けて、有効アドレスを割り出す。 ④ 有効アドレスの該当アドレスに記憶されているデータをデータバス上に読み出す。 ⑤ メモリレジスタ(メモリからのデータを記憶しておくためのレジスタ)は、データバス 上のデータを受け取って記憶する。 ⑥ 演算が必要なときは演算装置のアキュムレータ(演算器、accumulator)に渡す。 ⑦ アキュムレータは演算回路を使って演算を行う。 ⑧ 以下、結果の格納: アキュムレータは演算回路から演算結果を受け取る。主記憶装置 に格納する場合はいったんメモリレジスタに戻す。 ⑨ 指定されたアドレスに演算結果を格納する。 ①に戻る。

(9)

3.コンピュータの動作速度

コンピュータ内部のあらゆる処理はいろんな論理回路が一定の時間幅で同期をとって行う。 この同期の幅(で時間を割ったもの=クロック)が動作周波数(クロック周波数)である。例 えば、1クロックが1秒間に 1000 個であれば1KHz(キロヘルツ)、100 万個あれば1MHz(メガ ヘルツ)、10 億個あれば1GHz(ギガヘルツ)である。このため、動作周波数が大きいほど処理 速度が速いと言える(実際は、クロック周波数だけでなく、後述する「1クロックあたり実行 できる基本命令の数」にも依存する)。パソコンの場合、動作周波数はマザーボード上にある 水晶発振器等(安価なセラミック発振器を使うこともある)で作り出されるクロック信号をも とに、回路ごとに調整して用いられる。 CPU 内部での処理は動作周波数に合わせて、1クロックで1つの処理を行う。すなわち、1 クロック目に命令を読み込み、2クロック目にそれを解読し、3クロック目に実行を行い、4 クロック目に結果の書き込みを行う。しかし、これらの処理はそれぞれ CPU 内の別々の部分で 行われるので、2クロック目に1つ前の命令を解読すると同時に次の命令を読み込むことがで き、2クロック目には2つ前の命令を実行すると同時に1つ前の命令を解読し次の命令も読み 込むことができ、・・・というように同時に4つの処理を並行して行うこともできる。このよ うな処理方法をパイプライン(pipelining)という(下図参照)。最近では、CPU の内部処理を4 ス テ ッ プ で は な く 8 ス テ ッ プ あ る い は そ れ 以 上 に し た り ( ス ー パ ー パ イ プ ラ イ ン : superpipelining)、フェッチやデコードを複数同時に行い、演算器の数も増やして一度に複数 の命令を処理できるようにしたり(スーパースカラー: susperscalor)して、処理速度を上げ ることが行われている。 さらに最近では、パソコンは複数のコア(MPU core:マイクロプロセッサの中核部分で、演 算を行うための論理回路や一次キャッシュなどが実装された装置)を備え、それらを並列に稼 働させて動作速度の向上が図られるようになっている。コアの個数によって、デューアルコア (コアが2個、dual core)、クアッドコア(4個、quadcore)、オクタルコア(8個、octalcore) などと呼ばれている。

(10)

動作周波数 命令処理の基本 パイプライン処理 1クロック 命令1 命令2 命令3 命令4 フ デ 実 書 デ フ デ フ 実 書 実 1クロック 命令1 命令2 命令3 命令4 フェッチ デコード 実 行 書込み フェッチ デコード 実 行 書込み フェッチ デコード 実 行 フェッチ デコード ・・・・ 1クロック=100万分の1秒 1クロック=1秒 1Hz 1MHz

(11)

① 命令 やデータの 読み込み ② 計算 ③ 計 算 結 果 の書き込み スーパースカラー処理(2命令並列の場合) メメモモリリ((主主記記憶憶装装置置)) C CPPUU 1クロック 命令1 命令2 命令3 命令4 フェッチ デコード 実 行 書込み フェッチ デコード 実 行 書込み フェッチ デコード 実 行 フェッチ デコード 実 行 書込み 書込み 命令 i データ i 計 算 結 果 命令1 命令2 命令3 ……… データ1 データ2 ……… プログラム データ領域

(12)

4.メモリ(記憶装置)

(A)主記憶装置

コンピュータの記憶装置は、主記憶装置と外部記憶装置(2次記憶装置)に大別される。主

記憶装置(メインメモリ(main memory): パソコンではRAM (random access memory)とも呼

ばれる)は、すでに見たように、処理手続きを機械語で記述した一連の命令の列(プログラム) や、そのプログラムが使うデータや変数等を記憶しておくための装置である。主記憶装置は、 読み書き自由な RAM と、読み取り専用の ROM (read-only memory)に大別されるが、単に「メモ リ」という場合には主記憶装置の中の RAM を指す。コンピュータ誕生したばかりの頃に用いら れた、水銀遅延線、ブラウン管(1950 年代)、磁気ドラム、磁気コア(1980 年代)に代わり、現 在では半導体メモリが用いられている。 主記憶装置はビットの集まりである。いくつかのビットを単位としてアドレス(番地、 address)が付けられている。8 ビット=1バイトをアドレスの単位とする場合が多い(このよ うなコンピュータをバイトマシン(byte machine)という)が、1語(16, 32, 64 ビットなど) を単位とするコンピュータもかつてはあった(このようなコンピュータをワードマシン(word machine)という)。下図は、1ワード=32 ビット=4バイトのバイトマシンの例である。 パソコンではメインメモリ空間とは別に、キーボードなどの入出力機器の制御のために使わ れる I/O アドレス空間(64KB 程度)がある。 主記憶装置の容量はさまざまである。2002 年時点で、大型コンピュータで数十 GB、パソコ ンでは 64~256MB 程度であった(最大で 32 ビットで表せる程度)が、年々大容量化している (主記憶装置のアドレスを表すのに何バイト使えるかで主記憶装置の容量が決まるが、現在で 1W = 4B = 32bits アドレス (バイト単位:16進表現) 00000000 00000004 00000008 … … FFFFFFF8 FFFFFFFC 232 B = 4GB

(13)

は様々なメモリ空間管理法を使うことによって大容量のメモリが使えるようになっている。 2015 年時点では、パソコンでも主記憶装置の容量は 4~8GB 程度。補助記憶装置であるハード ディスクの容量はずっと大きく 256~512GB が普通である)。 バイトマシンではバイト長を単位としてメモリ空間にアドレスをふっているので、例えば、 16ビットマシンなら64KB (=216B)、32ビットマシンなら4GB (=232B)の大きさのアドレス空間 を表現できる。しかし、コンピュータのアーキテクチャのビット数を増やさずにアドレス空間 を広げる(表すことのできるアドレスの範囲を広げる)ためにいろんな方法が考えられている。 参考: 1B = [ff]16 = [256]10. 1W = 32ビット = 4B = [ffffffff]16 = [429496729]10.

64 ビット = 8B = [ffffffffffffffff]16

= [

18446744073709551616

]

10

.

(B)メモリ管理(主記憶装置の効率的利用) CPU の利用効率を高めるために大型計算機では、主記憶装置に2つ以上のプログラムを同時 に記憶しておいて、一方のプログラムがデータの入力待ちをしている間にもう一方のプログラ ムを実行する。このような方式を多重プログラミング(multi-programming)あるいはマルチタ スク(multi-task)という。多重プログラミング実行中は、主記憶装置内にすべてのプログラム とデータを常駐させておくことができないので、主記憶装置と2次記憶装置の間でプログラム やデータを入れ替える操作(スワッピング)を頻繁に行う必要がある。そのために、効率的に スワッピングを行うために主記憶装置内へプログラムやデータをどのように配置(メモリ割付、 memory allocation)するかが重要である。一方、コンピュータのアーキテクチャのビット数を 増やさずにアドレス空間を広げる(例えば、16ビットマシンで232バイト=4GBの主記憶装置を 使えるようにする)ためにも、主記憶装置のアドレスをどう表現するかが重要である。そのた めの代表的な方式には、ロケーションレジスタ方式、ベースレジスタ方式、セグメント方式、 仮想記憶方式などがある。 ① ロケーションレジスタ(location register)方式では、ロケーションレジスタと呼ぶ特 別のレジスタ(高速のメモリのこと)にプログラムの先頭アドレスを入れておき、機械語の各 命令の格納されているアドレスにその先頭アドレスを加えて実効番地を計算する。 ② ベースレジスタ(base register)方式は、1つの機械語命令の長さが小さくて、そのア ドレス部だけで主記憶装置のすべてのアドレスを表現できないとき、ベースレジスタと呼ばれ

(14)

るレジスタの値を加えたものを実効アドレスとする方式である。 ③ セグメント(segment)方式では、CPUが直接アクセスできるメモリ空間を1つのセグメン トとして、セグメントを複数個用意しておき(セグメントレジスタと呼ばれるレジスタを使う。 セグメントレジスタが16ビットなら216個のセグメントを扱える)、アクセスするセグメントを 切り替える。 ①②の方式では扱えるメモリ空間がロケーション/ベースレジスタの大きさ分しか増えない のに対し、③の方式では扱えるメモリ空間はセグメントレジスタの大きさ培に増える(下図参 照)。 ④ 仮想記憶(virtual memory)方式では、物理的な記憶装置(実メモリ空間)とは別にプロ グラムごとに仮想的なメモリ空間を考え、その上でプログラムを組み、実行時に仮想的なアド レスを物理的記憶装置上の物理アドレス(実アドレス)に変換するためにアドレス変換表をも つ。仮想記憶方式にはセグメント方式とページ方式があり、ページ方式では主記憶装置も2次 記憶装置もページと呼ばれる固定長のサイズの領域に分割し、ページ単位でスワッピングを行 う)。 セグメントレジスタ アドレス セグメント セグメント セグメント ・ ・ ・ ・ ・ ・ nビット mビット n+m ビット 拡張されたアドレス

(15)

(C)メモリの階層構造(アクセスの高速化) CPU の処理速度に比べると記憶装置へのアクセスにかかる時間は大きいため、CPU に待ち時 間が生じる。 ところで、プログラムの実行においては、ある命令が実行されると、その直後あるいはその 近辺にある命令がその次に実行される割合が高く、また、あるデータが参照されるとその次に 参照されるデータはその近辺にあることが多い。そこで、この参照の局所性に着目し、処理速 度差の大きい2つのメモリの中間にキャッシュメモリ(キャッシュ、chache memory)と呼ば れる処理速度が中程度のメモリを置き、CPU は主記憶装置から(へ)直接データを読み込む(に 書き出す)のではなく、次に呼び出される確率の高いデータ(あるいは、すでに得られている計 算結果)をキャッシュに前もって読み込んで(書き込んで)おき、CPU はキャッシュとの間でデ ータの遣り取りをする。キャッシュが主記憶装置とデータの遣り取りをする必要が生じるのは、 キャッシュに読み込まれれているデータの範囲外のデータが必要になったときだけであるの で、CPU の処理効率が上がる。 このようなキャッシュメモリは、CPU と主記憶装置の間に複数置かれることもある(1次キ ャッシュと2次キャッシュ)。また、主記憶装置と補助記憶装置(2次記憶装置、外部記憶装 置)の間や、主記憶装置と入出力装置の間にもキャッシュと類似の役割を果たすバッファ (buffer、データを一時的に蓄えておくためのメモリ、緩衝メモリ)と呼ばれる中間記憶装置 が置かれる。CPU と主記憶装置の間のこのようなメモリの階層をメモリの階層構造という(下 図参照。メモリ容量や動作速度は2012年頃のものであり、年々進歩している)。CPU の演算回 路に近いほど高速の記憶素子(値段は高い、容量は小)が用いられる。 数10ms 高 速 廉価、大容量 128MB~4GB 数10GB~数100TB 数10B 数ns 数ns 1ns 1次キャッシュ 2次キャッシュ 主 記 憶 装 置 補 助 (2 次、外 部) 記 憶 装 置 レジスタ 8KB~ 64KB~ 主記憶装置内 数10ns

(16)

現在のほとんどのコンピュータで採用されているプログラム内臓方式では、プログラム (機械語命令の列)とそれが使うデータや変数は主記憶装置上に格納されており、CPU はそれ らを直接読み書きすることができる。しかし、すでに述べたように、大量のデータを扱う場合 にはすべてのデータを主記憶装置上に置いておくことができないので、大容量データは補助記 憶装置(2次記憶装置、外部記憶装置)に記録しておき、必要に応じて主記憶装置上に読み込 んで使うという方式がとられる(CPU は補助記憶装置内のデータを直接読み書きすることはで きない)。

補助記憶装置としてHDD (hard disk drive)を使うパソコンを例として説明しよう。まず、 CPU がメモリ空間を介して HDD にデータの読み出し命令を出すと、HDD 内にあるコントロー ラーにその読み出し命令が書き込まれ、コントローラーはそれに従ってディスク内にある目的 のデータを読み出し、バッファメモリに蓄える。HDD 内のDMAコントローラー(DMA: direct memory access)がそれを主記憶装置に転送してはじめて、CPU が目的のデータを読むことがで きる。このような方式を採用することにより、CPU に比べて処理速度が圧倒的に遅い補助記憶 装置との間のデータの読み書きがプログラム全体の処理を遅らせるのを防ぎ、CPU の負荷を軽 減する。大型機では、DMA コントローラーに入出力制御のための専用プロセッサを付け加えた ものをチャネル(channel)と呼ぶ。 読み出し命令 C P U 主 記 憶 装 置 コントローラー 読み出し命令 目的データ バッファーメモリ 目的データ 目的データ HDD メモリ空間 ① ② ③ ④ ⑤

参照

関連したドキュメント

図2に実験装置の概略を,表1に主な実験条件を示す.実

(注 3):必修上位 17 単位の成績上位から数えて 17 単位目が 2 単位の授業科目だった場合は,1 単位と

地盤の破壊の進行性を無視することによる解析結果の誤差は、すべり面の総回転角度が大きいほ

証明で使われる重要な結果は mod p ガロア表現の strictly compatible system への minimal lifting theorem (以下, LT と略記する) と modular lifting theorem (主に

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

彩度(P.100) 色の鮮やかさを 0 から 14 程度までの数値で表したもの。色味の

前掲 11‑1 表に候補者への言及行数の全言及行数に対する割合 ( 1 0 0 分 率)が掲載されている。

建屋の概略平面図を図 2.1-1 に,建屋の断面図を図 2.1-2 及び図 2.1-3 に,緊急時対策所 の設置位置を図 2.1-4 に示す。.. 7 2.2