You will appreciate the space optimization of multi-level page tables when we go into the 64-bit address space.
Assume you have a 64-bit computer ( which means 64 bit virtual address space ), which has 4KB pages and 4 GB of physical memory. If we have a single level page table as you suggest, then it should contain one entry per virtual page per process.
One entry per virtual page β 264 addressable bytes / 212 bytes per page = 252 page table entries
One page table entry contains: Access control bits ( Bits like Page present, RW etc ) + Physical page number
4 GB of Physical Memory = 232 bytes.
232 bytes of memory/212 bytes per page = 220 physical pages
20 bits required for physical page number.
So each page table entry is approx 4 bytes. ( 20 bits physical page number is approx 3 bytes and access control contributes 1 byte )
Now, Page table Size = 252 page table entries * 4 bytes = 254 bytes ( 16 petabytes ) !
16 petabytes per process is a very very huge amount of memory.
Now, if we page the pagetable too, ie if we use multi level page tables we can magically bring down the memory required to as low a single page. ie just 4 KB.
Now, we shall calculate how many levels are required to squeeze the page table into just 4 KB. 4 KB page / 4 bytes per page table entry = 1024 entries. 10 bits of address space required. i.e 52/10 ceiled is 6. ie 6 levels of page table can bring down the page table size to just 4KB.
6 level accesses are definitely slower. But I wanted to illustrate the space savings out of multi level page tables.