Pada arsitektur x86, mengapa ada lebih sedikit bit untuk ruang alamat virtual daripada fisik?

11

Saya membaca artikel ini tentang komputasi 64 bit, dan disebutkan:

Sebagai contoh, arsitektur AMD64 pada 2011 memungkinkan 52 bit untuk memori fisik dan 48 bit untuk memori virtual

Saya akan berpikir bahwa akan lebih masuk akal untuk memungkinkan lebih banyak memori virtual daripada memori fisik, jadi mengapa sebenarnya sebaliknya?

Pertanyaan bonus: Apa artinya "mengizinkan" untuk 52 atau 48 bit pada arsitektur 64 bit? Untuk apa bit-bit lain digunakan?

dougvk
sumber
Untuk x86, bit VA yang tidak digunakan harus merupakan ekstensi tanda MSbit dari VA. (ARM AArch64 menyediakan opsi untuk memungkinkan 8 MSbits diabaikan oleh perangkat keras sehingga mereka dapat dengan mudah digunakan untuk tag. Azul Systems Vega prosesor - bagian dari alat Java - menyediakan 16 bit VA untuk digunakan untuk tag.) Dalam tabel halaman, bit PA yang dicadangkan harus nol (terutama untuk memastikan bahwa perangkat lunak tidak berusaha menggunakannya dan merusak kompatibilitas dengan perangkat keras yang lebih baru).
Paul A. Clayton

Jawaban:

11

Ini adalah gambar tabel halaman AMD64 (dari Panduan Program Arsitektur AMD, Vol. 2, Rev 3.23, 2013, halaman 132).

Tabel halaman AMD64 Longmode

Ukuran "alami" dari halaman dalam arsitektur AMD64 adalah 2 12 = 4096 byte. (Ada mode di mana Anda dapat memiliki 2 21 = 2Mbyte halaman, tapi kami akan mengabaikannya untuk saat ini.)

Setiap Entri Halaman-Tabel (PTE) (atau, tergantung pada level yang disebut PDE, PDPE atau PML4E) adalah 64 bit = 2 3 byte. Jadi ada 2 9 entri per halaman. Jadi 4 level tabel halaman memberi Anda 4x9 + 12 = 48 bit alamat virtual per proses. Berjalan dengan tabel halaman itu mahal, sehingga mereka tidak akan meluas ke level 5 atau 6 kecuali / sampai ada permintaan konsumen.

Saya tidak yakin mengapa mereka memutuskan batas alamat fisik 52-bit. Ini dapat diperpanjang hingga 63-bit di masa depan. Pada harga Oktober 2013 (sekitar 1US $ / Gigabit untuk chip 4Gbit) akan memakan biaya lebih dari 32.000.000,00 US $ untuk membangun memori 2 52 byte, sehingga akan diperlukan beberapa saat sebelum ada permintaan yang signifikan untuk meningkatkan batas alamat fisik. Ada berbagai macam alasan mengapa Anda ingin menyimpan alamat fisik sekecil mungkin: tag TLB dan cache harus menyimpan alamat fisik, misalnya.

Ini tidak selalu mundur bahwa ada lebih banyak memori fisik daripada virtual. Memori virtual adalah per proses sementara memori fisik dibagi oleh semua proses. Jadi server dengan alamat virtual 48-bit dan 2 52 byte memori dapat mendukung 16 proses simultan dan masih menjamin tidak perlu menukar.

Logika Pengembaraan
sumber
Mungkin perlu dicatat bahwa arsitek komputer telah belajar untuk meminta bit atas untuk digunakan oleh perangkat keras, biasanya dengan tanda ekstensi agar sesuai dengan penggunaan umum alamat negatif untuk OS ("Apa bit lain yang digunakan untuk?"). Juga, dengan caching entri direktori Ln, tabel 5 tingkat tidak perlu sepenuhnya berjalan sebagian besar waktu. Bit PTE 52:62 dicadangkan untuk perangkat lunak, jadi tidak dapat digunakan untuk alamat fisik tanpa melanggar kompatibilitas, membatasi halaman 4KiB hingga 52-bit PA. Juga, Linus Torvalds terkenal marah terhadap PAE (VA> PA tampaknya menyederhanakan desain OS "tradisional").
Paul A. Clayton
"Ini dapat diperpanjang hingga 63-bit di masa depan." Yah, tidak, bukan tanpa mengubah struktur tabel halaman. Seperti itu, bit 52 hingga 62 dari PxE dicadangkan untuk penggunaan sistem operasi. Dan OS menggunakannya (Windows menggunakan bidang itu untuk "indeks set daftar kerja"), sehingga arsitek prosesor tidak bebas untuk memperluas bidang PFN ke dalamnya. Tentu saja mungkin untuk memiliki opsi seperti PAE di masa depan yang akan mengubah struktur PT sehingga memungkinkan lebih banyak bit PFN, tetapi itu akan menjadi perubahan arsitektur yang signifikan.
Jamie Hanrahan
3

Beberapa hal yang perlu dipertimbangkan, RAM fisik mahal. Tentu 16 GB lebih murah sekarang karena 4GB hanya beberapa tahun yang lalu, tetapi 2 ^ 64 (16 exabytes) sangat besar.

Jadi ekstensi AMD dari x86 untuk x64 "diizinkan" hingga 2 ^ 52 dengan membatasi register . Ini melakukan dua hal, menurunkan biaya prosesor dan meningkatkan kinerja. Lebih banyak register yang tidak digunakan berarti bahwa ada banyak ruang kosong yang masih harus diperhitungkan selama operasi.

Dan, jika Anda bukan seorang pria matematika ... Perbedaan antara tiga ukuran sangat besar! Saya bukan guru matematika, tetapi dengan desimal 52 bit sekitar 0,02% dari 64bit. 48 bit adalah 6% dari 52. (seseorang memeriksa matematika saya?)

Adapun mengapa AMD mengizinkan lebih banyak RAM fisik daripada virtual, artikel itu menyatakan itu karena AMD memikirkan server. Server membutuhkan jumlah RAM fisik yang besar. RAM virtual terlalu lambat untuk mendukung aplikasi server rata-rata untuk ratusan atau ribuan karyawan.

Pikiran saya sendiri: Kami telah meninggalkan waktu ketika RAM kecil, dan hard drive harus mendukung RAM. Harga dalam RAM telah jatuh ke titik di mana rata-rata persona dapat memasukkan lebih dari cukup RAM. Ambil aplikasi biasa, seperti Office yang membutuhkan 1-2GB RAM. Komputer saya 7 tahun yang lalu bisa mengatasinya. Meskipun dengan kecepatan baca dan tulis ke disk, saya berharap saya tidak pernah harus mengambil file 7GB dari memori virtual (menggunakan filosofi PM * 2.5 lama).

Saya juga hanya dapat berasumsi AMD ingin meninggalkan ruang untuk register yang menggunakan register RAM fisik, seperti RAM pada GPU terintegrasi.

Austin T French
sumber