計算機システム II 2 年 月 日...

12
計算機システム II ・第 2 2020 9 30 2.1 CPU ......................................... 2–1 2.2 メモリ ........................................ 2–5 2.3 Big Endian Little Endian ............................ 2–7 2.4 アドレス変 .................................. 2–7 2.5 : Intel Core i3-4330T プロセッサ ....................... 2 – 10 2.1 CPU たちが した C プログラム コンパイラ 1 きによって、 プログラムに変 されます が、こ プログラムを って、そこに かれた している CPU ( 2 ) れる す。一 パソコン されている CPU 1 よう に格 された、ダイ (die) れる mm mm (シリコン ) に、 して された して されています。1 CPU から (トランジスタ 3 ) されています。各 1μm 大きさしかありま せん 4 1 よう CPU して くこ きる 1 つだけ格 されている あれ (2 30 ) されているこ あります。 ある 、そ 1 1 CPU あれ 、それらを格 している ( 1 よう ) CPU び、 ( ) 意された CPU して する を、それぞれコア (core) する あります。 1: Intel Core i7 3960X (6 コアが 蔵されている) CPU (コア) 1 1 から され、 (メモリ) されてい 1 Linux cc コマンド 2 Central Processing Unit 3 3 っており、そ 2 れる オン・オフ (あるい ) を、 1 える り替えるこ きる す。 パソコン CPU MOSFET (Metal-Oxide- Semiconductor Field Effect Transistor トランジスタ) いうトランジスタが われて います。 4 1μm 10 -6 m (= 1,000 nm) す。 2–1

Transcript of 計算機システム II 2 年 月 日...

Page 1: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

計算機システム II・第 2回 2020年 9月 30日

今回の内容

2.1 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 – 1

2.2 メモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 – 5

2.3 Big Endian と Little Endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 – 7

2.4 アドレス変換機構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 – 7

2.5 付録: Intel Core i3-4330T プロセッサ . . . . . . . . . . . . . . . . . . . . . . . 2 – 10

2.1 CPU

私たちが作成した Cプログラムはコンパイラ1の働きによって、機械語プログラムに変換されます

が、この機械語プログラムを読み取って、そこに書かれた指示を実行しているのが CPU (中央処理

装置2)と呼ばれる装置です。一般のパソコンで使用されている CPUは、図 1のような部品の内部

に格納された、ダイ (die)と呼ばれる 数 mm ~十数 mm 四方の半導体 (シリコン等)の小片上に、

印刷技術を応用して形成された電子回路として実現されています。1つの CPUは、数百万から数

十億の素子 (トランジスタ3等)で構成されています。各素子は 1µm 四方程度の大きさしかありま

せん4。

図 1のような部品の中には、CPUとして働くことのできる電子回路が 1つだけ格納されている

こともあれば、複数 (2~ 30個程度)格納されていることもあります。複数ある場合、その 1つ 1つ

を CPU と呼ぶ場合もあれば、それらを格納している (図 1のような)部品のことを CPU と呼び、

その中に (複数)用意された CPUとして機能するものを、それぞれコア (core)と呼んで区別する

場合もあります。

図 1: Intel Core i7 3960X (6つのコアが内蔵されている)

CPU (コア)は、1台の計算機に 1個から数十個搭載され、主記憶装置 (メモリ)に記憶されてい

1Linux環境の cc コマンドなど2Central Processing Unit

33つの電気的な端子を持っており、その 2つの間を流れる電流のオン・オフ (あるいは大小)を、もう 1つの端子に与える電圧で切り替えることのできる素子の総称です。パソコンの CPU には、主に MOSFET (Metal-Oxide-

Semiconductor Field Effect Transistor 金属酸化物半導体型電界効果トランジスタ)というトランジスタが使われています。

41µmは 10−6m (= 1,000 nm)です。

2 – 1

Page 2: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

る機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

間でのデータの転送を行います。

機械語プログラムは、数 bitから数十 bitの大きさの機械語命令がたくさん並んだものです。ど

のようなビット列でどのような作業を行うかについての約束事が CPU毎にあらかじめ決められて

おり、CPUはこの約束事にしたがって、順に指示されたとおりの作業を行っていきます。CPUに

用意されている機械語命令の集まりを命令セットと呼びます。

メモ

CPUの内部構成

パソコン等で使用されている CPUは、おおよそ図 2のような構成になっています。

CPU

キャッシュメモリ

アドレス変換機構

実行制御ユニット

メモリ(主記憶装置) 命令レジスタ

プログラムカウンタ

レジスタ A

レジスタ B...

ALU周辺機器

インタフェース

データの流れ アドレスの指定 制御

図 2: CPUの内部構成 (模式図)

キャッシュメモリ メモリに記憶されているデータの内、CPUが頻繁に読み書きする部分のコピー

を記憶しておく装置です。主記憶装置のメモリは、通常 DRAM (ダイナミック RAM)で構成され

ますが、キャッシュメモリは、より高速な SRAM (スタティック RAM)で構成されます。キャッシュ

2 – 2

Page 3: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

メモリの記憶容量は主記憶装置に比べると僅かなものです5が、レイテンシ (アクセスタイム)6がよ

り小さく (高速に)なっています。パソコンで使用されている CPUのキャッシュメモリは、高速で

容量の小さい 1次キャッシュメモリと、それよりは若干低速で容量の大きい 2次キャッシュメモリ

の 2段構え、あるいは、さらに大容量の 3次キャッシュまでを備えた 3段構えとなっている場合が

ほとんどです。

CPU がメモリ中のデータを必要とする場合、まず、このキャッシュメモリに読み込まれてから

使用されます。また、メモリにデータを格納する場合、とりあえずキャッシュメモリに記憶して、

その後メモリに格納されます。CPUが機械語命令を実行していく過程では、メモリ中のいろいろ

な場所 (アドレス)のデータにアクセスしますが、メモリ全体に全くでたらめな順番でアクセスす

ることは稀で、短い時間 (たとえば 10µs) だけを見れば、アクセスするデータはいくつかのアドレ

ス周辺に偏るのが普通です。たとえば、メモリ中には機械語プログラムが格納されており、これを

CPU が読み取って、その指示を実行していきますが、このとき CPU は (基本的には)連続するア

ドレスを順にアクセスしていくことになります。また、機械語プログラム以外の一般のデータに関

しても、ひとまとまりのデータは連続するアドレスに置かれますから、このひとまとまりのデータ

を処理する場合にも、CPU がアクセスするアドレスは集中します。このため、頻繁にアクセスす

るアドレスのデータをキャッシュメモリにまとめてコピーしておき、直接メモリにアクセスする代

りにキャッシュメモリにアクセスし、キャッシュメモリの内容が変更された場合は、適宜、その内容

をメモリに書き戻してやれば、全体としてデータの読み書きが高速化できます。キャッシュメモリ

の詳細については、この科目の中で後程解説します。

メモ

プログラムカウンタ CPU が次に実行する機械語命令を読み取るメモリアドレスを記憶します。

パソコン等で使用される CPUは、通常、メモリアドレスを 32 bitあるいは 64 bitの符号なし整数

で表現しますので、このような CPUの「プログラムカウンタ」は 32 bitあるいは 64 bit長のデー

タを記憶します。通常は、機械語命令が 1つ実行される度に、その機械語命令のビット列の長さに

相当する分だけプログラムカウンタの値が増加して、次の機械語命令の場所を指すようになりま

す。ただし、分岐命令が実行されると、その分岐命令によって指定されたアドレスがプログラムカ

ウンタに書き込まれて、CPUはそのアドレスから機械語命令の実行を続けます。

5通常、主記憶は数百 MiB から数百 GiB、キャシュメモリは数百 KiB から大きくても数十 MiB の大きさ (KiB =

1024B、MiB = 10242 B、GiB = 10243 B)です。6対象となる情報 (の場所)を指定してから、その情報が実際に読み取られる (書き込まれる)までの時間的な遅れ

2 – 3

Page 4: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

メモ

命令レジスタ CPUが次に実行する機械語命令 (ビット列)を保持する働きを持ちます。「プログ

ラムカウンタ」で指示されたアドレスのデータが、メモリから (キャッシュメモリを介して)この「命

令レジスタ」に読み込まれ、「実行制御ユニット」によって機械語命令として解釈されて実行されま

す。レジスタという名前は付いていますが、CPUが機能するための仕組みの一部であって、通常、

「命令レジスタ」の値を機械語プログラムから参照したり変更したりすることはできません。

メモ

実行制御ユニット 「命令レジスタ」に読み込まれた機械語命令を解読して、そこに指示されてい

る作業を実行します。ビット列として表現された機械語命令を解析して、CPUの行うべき仕事を

決定する作業のことを、命令のデコード (decode)と呼びます。1つの機械語命令は、デコードされ

ることによってマイクロ命令と呼ばれるいくつかの細かい手順に分割され、「実行制御ユニット」

が CPUを構成している各部に順に指令を出すことで、そのマイクロ命令が CPUのクロック信号

に同期して実行されていきます。1つの機械語命令は、数クロック7から数十クロック8の時間をか

けて実行されますが、1つの機械語命令を分割してできた一連のマイクロ命令の実行がすべて終わ

らなくても、次の機械語命令のマイクロ命令の実行を始めることが可能な場合がほとんどなので、

CPUの中では複数の機械語命令が時間的に少しずつずらされながら同時並行的に実行されていく

ことになります。このような機械語命令の並行処理はパイプライン処理と呼ばれます。パイプラ

イン処理については、この科目の中で分岐命令を取り上げるときに再度説明します。

メモ

7クロック信号の周期の長さ (時間)を 1クロックと呼びます。たとえば 2GHz (2× 109Hz)のクロック信号の場合、1クロックは 0.5 ns (0.5× 10−9 秒)となります。

8ごく稀には、さら長い時間を必要とする命令も存在します。

2 – 4

Page 5: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

レジスタ 計算に使うためにメモリから読み込まれたデータや、複雑な計算の途中結果などを記憶

します。通常、1つの CPU に、数個から数百個のレジスタが用意されています。一般的な用途に

使用される汎用レジスタと呼ばれるレジスタもあれば、浮動小数点数値データ専用のレジスタや、

アドレスの処理専用のレジスタなど、特定の用途専用のレジスタもあります。パソコンで使用さ

れる CPUの 汎用レジスタやアドレス処理用のレジスタは、それぞれ 32 bit あるいは 64 bit 長の

データを記憶することができるのが普通ですが、家電製品などに組み込まれる場合では、8 bit 長

など、もっと短いレジスタを持つ CPUが使われます。

CPU は、ビット列として表現されたいろいろなデータを扱うことができますが、この中で、そ

の CPU が最も自然に扱うことのできる大きさのデータを、その CPU のワード (word)と呼びま

す。通常、CPUの 1ワードの大きさは、1つの汎用レジスタに格納できるデータの大きさとなって

います。

メモ

ALU ALUは 算術・論理ユニット (Arithmetical Logical Unit)の略称で、符号付き、あるい

は符号なしの整数データの四則演算、ビット演算 (ビット毎の論理演算やビットシフト、ローテー

ト)、浮動小数点数値データの四則演算などの計算を行います。CPUによっては、浮動小数点数値

データの平方根や指数関数、対数関数、三角関数の計算を行えるものもあります。

メモ

2.2 メモリ

CPUが実行していく機械語命令や CPUが処理するデータは、すべてビット列としてメモリ (主記

憶装置)に記憶されます。メモリは、数個から十数個のメモリチップを装着したメモリモジュール

と呼ばれる部品 (図 39)数枚で構成されてます。

9ED2と記された図は「情報機器と情報社会の仕組み素材集 (http://www.kayoo.org/mext/joho-kiki/)」の一部を

利用させて頂いたものです。

2 – 5

Page 6: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

図 3: メモリモジュール

アドレス

0番地 11000101

1番地 01101001

2番地 00110000

3番地 10100110

4番地 10111110

5番地 01010001

6番地 11011110

7番地 01110111

8番地 01011101

......

01000011

図 4: メモリアドレス

これを CPU の側から見ると、図 4のように 1つの欄に 1 byte (8 bit)のデータ10を記憶するこ

とのできる長い長い 1列の表のように見えます。メモリの欄を区別するために、各欄にはアドレス

(番地)と呼ばれる非負の整数が振られており、CPU は、このアドレスを指定してメモリ中のデー

タの読み書きを行います。アドレスは 1つの欄 (1 byte)ごとに振られるのが普通ですが、CPUの

1ワードごとに振られることもあります。前者のアドレスの振り方をバイトアドレッシング (byte

addressing)、後者をワードアドレッシング (word addressing)と呼びます。

機械語命令のレベルでは、CPU はメモリ中に記憶されたデータに、1 byte から十数 byte くら

いの大きさを単位としてアクセスすることになりますが、この時実際にアクセスされるのはキャ

シュ中のデータです。キャッシュメモリとメモリとの間では、より効率的にデータを転送するため

に、もっと大きなサイズ (たとえば 64 byte)を単位としてメモリの読み書きが行われます。しかし、

キャッシュの働きで CPUの動作が高速化されるという点を除けば、このことが機械語プログラム

の動作に影響を与えることはありません。CPUは、あくまで機械語命令で指定されたメモリアド

レスに格納されたデータを直接読み書きしていると考えたときと同じ動作を行います。

メモ

10CPUによっては、1つの欄に格納できるデータの大きさが 1ワードとなっている場合もあります。

2 – 6

Page 7: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

2.3 Big Endian と Little Endian

たとえば、CPU が 32 bit 長のデータを、メモリ中に (バイトアドレッシング)で書き込む場合に

は、4つの連続するアドレスにアクセスすることになります。この時、32 bit長のデータは 4つの 8

bit長のデータとして、メモリに格納されることになりますが、これら 4つのデータを、それぞれど

のアドレスに対応させて格納するかにについては 2つの方法が存在します。多バイト長のデータ

をメモリに格納する際に、上位バイトを下位アドレスに対応させる格納方法をビッグエンディアン

(big endian)と呼び、下位バイトを下位アドレスに対応させる格納方法をリトルエンディアン (little

endian)と呼びます。この 2つのどちらの格納方法を採用するかは CPUごとに異なります。この

2つのいずれかを選択することのできる CPUもあります。

32 bit 長のデータ 0x12345678を 0x00010000番地に格納した例

アドレス Big Endian Little Endian... ...

...0x0000ffff

0x00010000 0x12 0x78

0x00010001 0x34 0x56

0x00010002 0x56 0x34

0x00010003 0x78 0x12

0x00010004...

......

図 5: 多バイト長データのメモリへの格納法の違い

メモ

2.4 アドレス変換機構

機械語命令の指示に従って CPUがメモリにアクセスする際には、その機械語命令で指定されたア

ドレスが、そのままメモリモジュールに伝わるとは限りません。パソコンやスマートフォンなど

に使われる CPUでは、複数のプロセスが同時に実行されますが、このとき使用されるメモリに競

合が起きないようにするために、各プロセスが使用しているアドレスを、プロセスごとに異なるア

ドレスに変換してメモリモジュールに伝えるためのアドレス変換機構が内蔵されています。各プ

ロセスが使用する変換前のアドレスを仮想アドレスと呼び、変換機構によって変換されてメモリモ

ジュールに伝達される変換後のアドレスのことを物理アドレスと呼びます。

CPU内に用意されるアドレス変換機構には、それぞれセグメント方式とページング方式と呼ば

れる 2つの代表的な方式が存在し、オペレーティングシステムがこれらを管理します。

2 – 7

Page 8: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

メモ

セグメント方式 セグメント方式では、各プロセスの仮想アドレス空間をセグメントと呼ばれるい

くつかの部分に分割し、それぞれのセグメントを物理アドレス空間の別の部分に対応させます11。

セグメント方式では、各セグメントに対して

(1) セグメントの開始仮想アドレス

(2) セグメントの大きさ (あるいは終了仮想アドレス)

(3) アドレス変換後の開始物理アドレス

の 3つの情報12を記憶した表を用意しておき、その表に基づいて、CPUがアドレスの変換を行いま

す。仮想アドレス空間でのアクセスの種別 (機械語命令を実行しようとしているのか、データの読

み書きをしようとしているのかなどの違い)によって、同じ仮想アドレスが異なるセグメントとし

て扱われる場合もあります。

メモ

ページング方式 仮想アドレス空間や物理アドレス空間を、ページと呼ばれる数 KiBの大きさ (た

とえば 4096 byte)の区画に分割し、ページごとに仮想アドレス空間のページ (仮想ページ)が物理

アドレス空間のどのページ (物理ページ)に対応するかを表にして管理します13。

メモ

11必ずしも仮想アドレス空間内のすべてのアドレスが、いずれかのセグメントに属するわけではありません。仮想アドレス空間の一部はどのセグメントにも属さず、したがって物理的なメモリが対応していない場合もあります。

12多くの場合、これらに加えて、そのセグメント内のデータを保護するための設定 (書き込み不可など)などが行われます。

13この表には、セグメント方式の場合と同様に、そのページの内のデータを保護するためにの設定などが記憶されるのが普通です。

2 – 8

Page 9: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

アドレス変換キャッシュ セグメント方式でもページング方式でも、アドレス変換を行うための表

は、通常メモリ中に記憶されますが、CPUがメモリへアクセスする度に、この表を見にいく (これ

もメモリへのアクセスとなります)のは非効率なので、表の (よく使用されている)一部は、そのコ

ピーが (ちょうどキャッシュメモリのように) CPU内に置かれるようになっており、高速なアドレ

ス変換ができるようになっています。ページング方式でのアドレス変換表の CPU内キャッシュは、

TLB (Translation Lookaside Buffer)と呼ばれます。

メモ

2 – 9

Page 10: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

2.5 付録: Intel Core i3-4330T プロセッサ

実際に使用されている CPUの例として、情報実習室の PCに搭載されている Intel社の Core i3-

4330Tプロセッサについて紹介します。Core i3-4330Tプロセッサは、コアを 2つ14搭載した CPU

です。それぞれのコアは、Intel 64アーキテクチャと呼ばれる基本設計に基づいた 64 bit CPU と

して動作することができます。Intel 64アーキテクチャは、同社の PC 向け 32 bit CPU で採用さ

れている IA-32アーキテクチャと呼ばれる基本設計を 64 bit CPU向けに拡張したもので、Intel 64

アーキテクチャに基づく 64 bit CPU は、IA-32アーキテクチャの 32 bit CPU としても動作する

こともできます。Intel 64アーキテクチャでは、IA-32の部分を含めて、リトルエンディアンのバ

イトアドレッシングが採用されています。

IA-32アーキテクチャ

IA-32アーキテクチャは Intel 社の PC 向け 32 bit CPU で採用されている基本設計で、このアー

キテクチャに基づく CPU は、次の 3つの動作モードを持っています。

プロテクトモード (protected mode) 32 bit CPUとして動作する場合の最も基本的な動作モー

ドです。4 GiB (32 bit)の物理アドレス空間を持ち、46 bit 長の仮想アドレスがセグメント

方式によって、まずリニアアドレスと呼ばれる 32 bit 長の中間的なアドレスに変換され、そ

れをさらにページング方式によって 32 bit長の物理アドレスに変換する仕組みを持っていま

す。情報実習室のWindows上のアプリケーションプログラムの一部はこの動作モードで実

行されています。

リアルアドレスモード (real-address mode) 同社が 1978年に発表した 16bit CPUである 8086

ファミリのプロセッサ相当の動作をするモードで、古いプログラムを実行するために使用さ

れます。1 MiB (20 bit)の物理アドレス空間を持っていて、セグメントという概念はありま

すが、仮想アドレスから物理アドレスへの対応は固定されていて変更することはできません。

システム管理モード (system management mode) CPU 自体の過熱やハードウェアの障害に

対応したり、電源管理などの処理のため、現在実行中のプログラムを中断して、迅速に行わな

ければならない処理を行うプログラムを実行させるための動作モードです。この動作モード

特有のアドレス変換が行われます。

IA-32 の内部構成の概要 IA-32アーキテクチャの CPUは、クロック周波数やキャッシュメモリ

の大きさや構成、それぞれの機械語命令を実行するために必要なクロック数などが異なっていて

も、基本的にはどれも同じ命令セットを持っており、同じ機械語プログラムを実行することができ

ます。これらの CPUは、大きく分けると次の 3つの部分の機能で構成されています。

基本実行部 8 bit、16 bit、32 bitのデータの転送命令、整数演算命令、ビット演算命令、分岐命令、

セグメント関連の命令など、基本的な機械語命令を実行します。

浮動小数点演算部 (FPU) 80 bit の浮動小数点演算を行います。

14機械語プログラムから見ると、4つの (仮想的な)コアが存在しているように動作することができます。このことを指して、物理コアが 2個、論理コアが 4個、と言うことがあります。

2 – 10

Page 11: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

SIMD命令実行部 SIMD は Single Instruction Multiple Data の略で、複数のデータに対して同

時に同じ演算を行う命令を実行します。たとえば、32 bit の単精度浮動小数点データを 4つ

並べた 128 bit 長のデータに対して一度に演算を行うといったことができます。FPU のレ

ジスタを使用する MMXと呼ばれる命令群と、128 bit長の専用のレジスタ (XMMレジスタ

群)を使用する SSE (やその拡張である SSE2や SSE3、. . . など)と呼ばれる命令群がありま

す15。

図 6は IA-32のレジスタ群を図示したものです16。

基本実行部

汎用レジスタ群 (32 bit)31 0

EAXEBXECXEDXEDIESIEBPESP

状態フラグレジスタ (32 bit)31 0

EFLAGS

プログラムカウンタ (32 bit)31 0

EIP

セグメントレジスタ (16 bit)15 0

CSDSSSESFSGS

浮動小数点演算部 (FPU)

浮動小数点レジスタ群 (80 bit)79 0

R0R1R2R3R4R5R6R7

15 0FPU 制御レジスタFPU 状態レジスタFPU タグレジスタ

10 0FPU 命令レジスタ

47 0FPU 命令ポインタFPU データポインタ

SIMD 命令実行部

XMMレジスタ群 (128 bit)127 0

XMM0XMM1XMM2XMM3XMM4XMM5XMM6XMM7

31 0MXCSR

図 6: IA-32のレジスタ群

Intel 64アーキテクチャ

64 bit CPU の基本設計である Intel 64アーキテクチャでは、IA-32の 3つの動作モードの他に、

IA-32e と呼ばれる動作モードが追加されています。この動作モードには、64 bit モードと呼ばれ

15新しい CPUでは、256 bit 長のデータを処理できるものがあり、その命令群も IA-32に取り込まれています。16256 bit の SIMD命令に使用される YMMレジスタ群は省略されています。

2 – 11

Page 12: 計算機システム II 2 年 月 日 プロセッサる機械語プログラムを読み取り、その指示に従って、四則演算などの計算や、各装置の制御、装置

る 64 bit CPU として動作するモードと、互換モードと呼ばれる IA-32のプロテクトモードとし

て動作するモードが含まれています。64 bitモードでは、図 7のように、汎用レジスタやプログラ

ムカウンタなどは 64 bit長となり、汎用レジスタや XMMレジスタの個数も、それぞれ 16個に増

加しています。少なくとも 64GiB (36 bit)17の物理アドレス空間を持ち、64 bit長18の仮想アドレ

スを (基本的にはセグメント方式のアドレス変換機構を使用せずに)ページング方式によって物理

アドレスに変換する仕組みとなっています。情報実習室のWindows や Linux、さらに、そこで実

行される多くのアプリケーションプログラムはこの動作モードで実行されています。また、互換

モードでは、旧来の IA-32向け 32 bit アプリケーションプログラムをそのまま実行することが可

能です。

基本実行部

汎用レジスタ群 (64 bit)63 0

RAXRBXRCXRDXRDIRSIRBPRSPR8R9R10R11

......R15

状態フラグレジスタ (64 bit)63 0

RFLAGS

プログラムカウンタ (64 bit)63 0

RIP

セグメントレジスタ (16 bit)15 0

CSDSSSESFSGS

浮動小数点演算部 (FPU)

浮動小数点レジスタ群 (80 bit)79 0

R0R1R2R3R4R5R6R7

15 0FPU 制御レジスタFPU 状態レジスタFPU タグレジスタ

10 0FPU 命令レジスタ

63 0FPU 命令ポインタFPU データポインタ

SIMD命令実行部

XMMレジスタ群 (128 bit)127 0

XMM0XMM1XMM2XMM3

......

XMM15

31 0MXCSR

図 7: 64 bit モードのレジスタ群

計算機システム II・第 2回・終わり

17CPUごとに異なり、たとえば Core i3-4330T の物理アドレス空間は 512 GiB (39 bit)となっています。18実際に使用できるアドレスは CPUによって異なり、たとえば Core i3-4330T の場合、48 bit 長に相当します。

2 – 12