IA-32

続 FPU

挙げられている参考書が読みたいと思っても既に絶版になってる本ばっかり。どうしようもないのか。

FPU

とりあえずマニュアルを読んでみる。三角関数とか対数なんてすっかり忘れてるなぁ。浮動小数点やアーキテクチャについては紫川:x86CPUの数値演算機構が非常に参考になった。

Digital Travesia

インテル・アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 日本語版ってまだ Web から取得できたのね…。 上巻 中巻 下巻

続々々 No-Execute bit

各エントリの最上位にある NX ビットが実行不許可フラグで、このビットが立っているページから命令を取得しようとするとページフォルトが発生する。 NX ビットを有効にする為には、PAE = 1 (64bit エントリが必要だから) かつ EFER(Extended Feature Enable …

続々 No-Execute bit

ページサイズ 4Kbyte の場合、各テーブルのエントリ構造。 ○ Page-Map Level-4 Table Entry (PML4E) 63 62 52 51 32 +--+-----------------------------+-----------------------------------------+ |NX| Available |Page-Directory-Pointer ベース物理アド…

続 No-Execute bit

long mode でのアドレス変換の図、初めて見たとき思わず笑っちゃったよ。 ページサイズ 4Kbyte の場合。 Virtual Address 63 48 47 39 38 30 29 21 20 12 11 0 +-------------+----------------+----------------+----------------+----------------+-------…

No-Execute bit

AMD64 には実行不許可にできる機構が導入されている様なので調べてみた。

TLB flush

TLB が無効化される範囲とトリガー。 非グローバル全エントリ無効化 CR3 更新、32bit タスクスイッチ。 全エントリ無効化 PE, PG ビットが変更される CR0 更新、PSE, PGE, PAE ビットが変更される CR4 更新、INVD、WBINVD。 実効アドレスで指定したページを…

続 TLB

Pentium の Instruction TLB は 4KB and 4MB で 4-way set associative だよ…。

TLB

4KB ページと 4MB ページを一緒にキャッシュする TLB のインデックス決定ってどーなってるんだと思ったら、そういった TLB は全部 fully set associative であった。そりゃそうだ。真面目に考えて損した。

TLB エントリ数

TLB のエントリ数って幾つだったっけ、とかで調べてみた。 i486 combine (I/D) TLB 4KB Pages, 4-way set associative, 32 entries Pentium Instruction TLB 4KB and 4MB Pages, 4-way set associative, 32 entries Data TLB 4KB Pages, 4-way set associati…

PTE

NetBSD の src/sys/arch/i386/include/pte.h の冒頭にあるコメントを適当に訳してみた。ちなみに元の文章には書いてない事もあるので注意しろ>未来の自分。 i386 MMU ハードウェア構造:i386 MMU は二階層テーブル構造をした MMU で 4GB の仮想メモリをマッ…

GDTR

うわぁ、GDTR に設定されるアドレスってリニアアドレスだったのか…物理アドレスだと思い込んでた。 物理アドレスが設定されるのは CR3 だけか。 と思ったら 4K ページサイズ時の PDE 内の PTE ベースアドレスも物理アドレスだ。