I'm having some hard time understanding PAE. I know it creates a 3rd level of indirection via the PDPT, so that the address translation goes from CR3 -> PDPT(4 entries) -> PD(512 entries) -> PT (512 entries) -> PAGE (4096). But the address is still 32 bits, how do you get 36 bit addresses from this scheme? I'd appreciate an example. How does adding another table "increases" the address space?
x86 address space calculation PAE to 36 bits
276 Views Asked by AudioBubble At
1
There are 1 best solutions below
Related Questions in MEMORY-MANAGEMENT
- Calling Dealloc method in sprite kit
- Allocating memory for pointers inside structures in functions
- Beginner iOS memory management
- Deleting a dynamically allocated 2D array
- DataTable does not release memory
- how to resize image properly without memory warning
- Application Verifier limits Heap Allocations by default?
- C++ assign const reference to instance variable (memory issues?)
- What memory issues may arise from a single page JavaScript/AJAX application when kept open over a period of months?
- How to increase PHP memory_limit in Debian Jessie?
- Is this correct point to free char*
- Using parse.com and having allocation memory issue
- Qt object ownership when using lambda as slot
- Any ideas why one object is not deallocated in objective-c ARC
- How do I set a buffer in a possibly recursive procedure?
Related Questions in X86
- Why do we need AX instead of MOV DS, data directly with a segment?
- Drawing circles of increasing radius
- Assembly print on screen using pop ecx
- How to add values from vector to each other
- Intel x64 instructions CMPSB/CMPSW/CMPSD/CMPSQ
- Compact implementation of logical AND in x86 assembly
- Can feenableexcept hurt a program performance?
- How do I display the result and remainder in ax and dx in Assembly (tasm)
- ASM : Trouble using int21h on real machine
- jmp instruction *%eax
- What steps are needed to load a second stage bootloader by name on a FAT32 file system in x86 Assembly?
- Assembly code to print a new line string
- Write System Call Argument Registers
- How to jump to an address saved in a register in intel assembly?
- Find middle value of a list
Related Questions in PAGING
- Paging data tables in jQuery
- datastax 4.7 The 'start' parameter is not allowed in c# driver with autopaging off
- URL not working ASP MVC in SMS function
- Horizontal Swipe in an activity
- Paging in .NET Web API
- How to hide DIV in paging
- On heap/stack and OS page swapping
- No result when Pagination with Servlet and JSP
- jqgrid paging on server side
- How can I do paging and sorting using spring data with Couchbase
- Using Paging Query Attribute in .NET Web API
- On x86, does enabling paging cause an "unconditional jump" (since EIP is now a virtual address)?
- Locally paging on Extjs 5 store of type ajax
- KendoUI Scheduler Page Events by Time
- Is there any way to add pagination to a table, which fetches data from database?
Related Questions in MEMORY-ADDRESS
- Is there exception to rule that if address can be find out using & it's lvalue?
- Open Watcom Inline assembly SEG and OFFSET operators
- Contiki: Address of a thread having unrecognized value
- `&` in function parameter list
- std::deque memory-address as array
- Print addresses of all local variables in C
- MIPS: accessing memory addresses with big/small endian
- Writing GDB scripts to collect data
- Looking into dynamic variables created using pointers?
- to declare a pointer variable, does memory assign to the pointer's name or pointer's address?
- how to read content of memory address 0xfeafe000 in c?
- How can I get the virtual address of a shared library by the use of computer architecture state?
- Gigabyte v/s Gibibyte & Gigabit v/s Gibibit
- What's the best way to get address difference between a class variable and the starting address of a class object?
- Extern variable seems to have two addresses?
Related Questions in PAGE-TABLES
- Effective Access Time
- Can a process have more then 1 page tables?
- Is a process' page table mapped to Kernel address space?
- Pages In Virtual Address Space Equation
- If a virtual memory page is executable, does it imply that it is readable?
- Let's say we have a 32-bit system, or 64-bit system, or even 128-bit system. What's the size of each page table entry?
- Will an x86_64 CPU notice that a page-table entry has changed to not-present while setting the dirty flag in the PTE?
- does a large, overcommitted mmap create many page table entries?
- How prompt is x86 at setting the page dirty bit?
- x86 cr3 and linux swqpper_pg_dir
- Operating System: Memory management multilevel paging concept
- aarch64 MMU translation table
- Find physical address from logical address given page table
- Total memory for page tables & Number of pages (from the movie The Social Network)
- How to update the PMD and PTE tables of page-table by allocating or relocating memory?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
PAE changes nothing about 32-bit virtual addresses, only the size of physical address they're mapped to. (Which sucks a lot, nowhere near enough virtual address space to map all those physical pages at once. Linus Torvalds wrote a nice rant about PAE: https://cl4ssic4l.wordpress.com/2011/05/24/linus-torvalds-about-pae/ originally posted on https://www.realworldtech.com/forum/?threadid=76912&curpostid=76973 / https://www.realworldtech.com/forum/?threadid=76912&curpostid=76980)
It also widens a PTE (Page Table Entry) from 4 bytes to 8 bytes, which means 2 levels aren't enough anymore; that's where the small extra level comes to translate the top 2 bits of virtual addresses via those 4 entries.
36-bit only happened to be the supported physical address size in the first generation of CPUs that implemented PAE, Pentium Pro There is no inherent 36-bit limit to PAE.
x86-64 adopted the PTE format, which has room for up to 52-bit physical addresses. Current x86-64 CPUs support the same physical address-size in legacy mode with PAE as they do in 64-bit mode. (As reported by CPUID). That limit is a design choice that saves bits in cache tags, TLB entries, store-buffer entries, etc. and in comparators involved with them. It's normally chosen to be more than the amount of RAM that a real system could actually use, given the commercially available DIMM sizes and number of memory controllers even in multi-socket systems, and still leave room for some I/O address space.
x86-64 came soon after PAE, or soon enough for desktop use to be relevant, so it's a common misconception that PAE is only 36 bits. (Because 64-bit mode is a vastly better way to address more memory, allowing a single process to use more than 2G or 3G depending on user/kernel split.)