# How much Page Tables / PTEs are needed for xyz amount of memory?

TL;DR; For m bytes virtual memory (up to 256T), you need 1 + m/2M + m/1G + m/512G pagetables on all levels, each taking 4K in space. Pagetables take roughly 1/512 proportion to virtual memory size.

base: we suppose we have:

• 4K page.
• 48bits Virtual Address, 4 level paging.
• Each pagetable takes exactly one page and is page aligned.
• Each pagetable entry (or translation table descriptor) takes 8 bytes.
• i.e. Each pagetable has exactly 512 entries.
• we name the translation phrases from L0 to L3 (see below)
• Notations: ⌊x⌋ and ⌈x⌉ are integer floor and ceiling of x, repectively.
|     9    |     9    |     9    |     9    |    12       |
+----------+----------+----------+----------+--------------
| L0 index | L1 index | L2 index | L3 index | in page idx |

Calculations

For `n` pages (i.e. `n * 4KiB` memory):
---------------------------------------

L3 Entries :   n
L3 Tables  : ⌈ n/512     ⌉

L2 Entries : ⌈ n/512     ⌉
L2 Tables  : ⌈ n/(512^2) ⌉

L1 Entries : ⌈ n/(512^2) ⌉
L1 Tables  : ⌈ n/(512^3) ⌉

L0 Entries : ⌈ n/(512^3) ⌉
L0 Tables  :    1           # per 48bit address space
# Memory Size increment in 4K
----------------------------------------------------------------
V Mem(m)| [4K,2M]  (2M,1G]      (1G,512G]         (512G,256T]
----------------------------------------------------------------
#L3 ENT | [1,512]  (512,512^2]  (512^2, 512^3]    (512^3, 512^4]
#L3 TBL |  1       (1  ,512  ]  (512,   512^2]    (512^2, 512^3]
----------------------------------------------------------------
#L2 ENT |  1       (1  ,512  ]  (512,   512^2]    (512^2, 512^3]
#L2 TBL |  1        1           (1,     512  ]    (512  , 512^2]
----------------------------------------------------------------
#L1 ENT |  1       1             1                (512  , 512*2)
#L1 TBL |  1       1             1                (1    , 512  ]
----------------------------------------------------------------
#L0 ENT |  1       1             1                (1    , 512  ]
#L0 TBL |  1       1             1                 1
----------------------------------------------------------------
#SUMTBLs| 4        3 + m/2M      2+m/2M+m/1G       1 + m/2M + m/1G + m/512G
#SZTBLs | 16K      (16K,2060K]   (2060K, 1050632K] (262658K, 537921544K]
~1026M              ~513G
the comment system on this blog works via email. The button