x86 Paging Tutorial / PAE Updated 2025-07-16
Physical address extension.
With 32 bits, only 4GB RAM can be addressed.
This started becoming a limitation for large servers, so Intel introduced the PAE mechanism to Pentium Pro.
To relieve the problem, Intel added 4 new address lines, so that 64GB could be addressed.
Page table structure is also altered if PAE is on. The exact way in which it is altered depends on weather PSE is on or off.
PAE is turned on and off via the PAE bit of cr4.
Even if the total addressable memory is 64GB, individual process are still only able to use up to 4GB. The OS can however put different processes on different 4GB chunks.
Twin paradox Updated 2025-07-16
The key question is: why is this not symmetrical?
One answer is: because one of the twin accelerates, and therefore changes inertial frames.
But the better answer is: understand what happens when the stationary twin sends light signals at constant time intervals to each other. When does the travelling twin receives them?
By doing that, we see that "all the extra aging happens immediately when the twin turns around":
  • on the out trip, both twins receive signals at constant intervals
  • when the moving twin turns around and starts to accelerate through different inertial frames, shit happens:
    • the moving twin suddenly notices that the rate of signals from the stationary twin increased. They are getting older faster than us!
    • the stationary twin suddenly notices that the rate of signals from the moving twin decreased. They are getting older slower than us!
  • then when the moving twin reaches the return velocity, both see constant signal rates once again
Figure 1.
Twin paradox illustration with twins sending light signals at regular intervals
. Source.
Another way of understanding it is: you have to make all calculations on a single inertial frame for the entire trip.
Supposing the sibling quickly accelerates out (or magically starts moving at constant speed), travels at constant speed, and quickly accelerates back, and travels at constant speed setup, there are three frames that seem reasonable:
  • the frame of the non-accelerating sibling
  • the outgoing trip of the accelerating sibling
  • the return trip of the accelerating sibling
If you do that, all three calculations give the exact same result, which is reassuring.
Another way to understand it is to do explicit integrations of the acceleration: physics.stackexchange.com/questions/242043/what-is-the-proper-way-to-explain-the-twin-paradox/242044#242044 This is the least insightful however :-)
Bibliography:
History of the World Wide Web Updated 2025-07-16
Video 1.
Why web tech is like this by Steve Sanderson (2022)
Source.
MAC address Updated 2025-07-16
Hardcoded and unique network addresses for every single device on Earth.
Started with 48 bits (6 bytes), usually given as 01:23:45:67:89:AB but people now encouraged to use 64-bit ones.
How they are assigned: www.quora.com/How-are-MAC-addresses-assigned Basically IEEE gives out the 3 first bytes to device manufacturers that register, this is called the organizationally unique identifier, and then each manufacturer keeps their own devices unique.
Neon Updated 2025-07-16
Toffoli gate Updated 2025-07-16
x86 Paging Tutorial / PSE Updated 2025-07-16
Page size extension.
Allows for pages to be 4M (or 2M if PAE is on) in length instead of 4K.
PSE is turned on and off via the PSE bit of cr4.
x86 Paging Tutorial / Segmentation Updated 2025-07-16
In x86 systems, there may actually be 2 address translation steps:
  • first segmentation
  • then paging
like this:
(logical) ------------------> (linear) ------------> (physical)
             segmentation                 paging
The major difference between paging and segmentation is that:
  • paging splits RAM into equal sized chunks called pages
  • segmentation splits memory into chunks of arbitrary sizes
Paging came after segmentation historically, and largely replaced it for the implementation of virtual memory in modern OSs.
Paging has become so much more popular that support for segmentation was dropped in x86-64 in 64-bit mode, the main mode of operation for new software, where it only exists in compatibility mode, which emulates IA-32.
Magarena Updated 2025-07-16
Open source MtG engine implementation written in Java.
Seems to have an option to download art from internet as well.
Ciro Santilli wonders how legal it is. They very explicitly do not mention the words Magic: The Gathering anywhere.
Their UI does a good job at being self explanatory. Space is the shortcut to skip phases.
No online play.
TODO it appears to parse card functionality out of the human readable text! That's genius, as it helps automatically get new cards working, and squirt around legal issues.
Marc Verdiell Updated 2025-09-11
Marc Verdiell is a French electrical engineer born in 1963 or 1964[ref] and best known for being the creator and host of the CuriousMarc YouTube channel where he does mind blowing repairs and reverse engineering of vintage computers and other electronic equipment.
Marc sold his company LightLogic, an optoelectronics company he founded, to Intel in April 2001. This was just after the dot-com crash, but Intel apparently still correctly believed that the networking and the Internet would continue to grow and was investing in the area. His associate Frank Shum sued claiming he should be credited for some of the inventions sold but lost and Marc got it all.[ref][ref][ref]. Marc was then almost immediately appointed an Intel fellow at the extremelly early age of 37, and then stayed for a few years at Intel until 2006 according to his LinkedIn.[ref][ref]
Figure 1.
Marc Verdiell at the Computer History Museum
. Source. Location inferred from Marc's videos, but likely, he often frequents the place, and it looks a bit like that.
Marc's full name is actualy Jean-Marc Verdiell, but Ciro Santilli remembers there was one YouTube video where he mentions he gave up on "Jean" partly because anglophones would murder its pronounciation all the time.
Marc's PhD thesis is listed at: theses.fr/1990PA112048 and it is entitled:
Mise en phase de reseaux de lasers a semi-conducteur
which is translated into English as:
Phase locking of semiconductor laser arrays
but the full text is not available online.
Video 1.
Profile of Marc Verdiell by Gizmodo (2018)
Source.
youtu.be/ZgAreiFXhJk?t=253 lists some famous people who live there. It's like a micro heaven.
And a person who makes open educational content like Marc, truly deserves it.
Atherton managed to keep the entire place green and every house has a pool. Wikipedia comments web.archive.org/web/20220906010554/https://www.forbes.com/home-improvement/features/most-expensive-zip-codes-us/:
Atherton is known for its wealth; in 1990 and 2019, Atherton was ranked as having the highest per capita income among U.S. towns with a population between 2,500 and 9,999, and it is regularly ranked as the most expensive ZIP Code in the United States [(94027)]. The town has very restricting zoning, only permitting one single-family home per acre and no sidewalks. The inhabitants have strongly opposed proposals to permit more housing construction and Forbes confirms it for 2022: web.archive.org/web/20220906010554/https://www.forbes.com/home-improvement/features/most-expensive-zip-codes-us/, by far on top.
Marc has reached out to us and requested that some personal information be removed from this article, to which we complied.
This is how the memory could look like in a single level paging scheme:
Links   Data                    Physical address

      +-----------------------+ 2^32 - 1
      |                       |
      .                       .
      |                       |
      +-----------------------+ page0 + 4k
      | data of page 0        |
+---->+-----------------------+ page0
|     |                       |
|     .                       .
|     |                       |
|     +-----------------------+ pageN + 4k
|     | data of page N        |
|  +->+-----------------------+ pageN
|  |  |                       |
|  |  .                       .
|  |  |                       |
|  |  +-----------------------+ CR3 + 2^20 * 4
|  +--| entry[2^20-1] = pageN |
|     +-----------------------+ CR3 + 2^20 - 1 * 4
|     |                       |
|     .    many entires       .
|     |                       |
|     +-----------------------+ CR3 + 2 * 4
|  +--| entry[1] = page1      |
|  |  +-----------------------+ CR3 + 1 * 4
+-----| entry[0] = page0      |
   |  +-----------------------+ <--- CR3
   |  |                       |
   |  .                       .
   |  |                       |
   |  +-----------------------+ page1 + 4k
   |  | data of page 1        |
   +->+-----------------------+ page1
      |                       |
      .                       .
      |                       |
      +-----------------------+  0
Notice that:
  • the CR3 register points to the first entry of the page table
  • the page table is just a large array with 2^20 page table entries
  • each entry is 4 bytes big, so the array takes up 4 MiB
  • each page table contains the physical address a page
  • each page is a 4 KiB aligned 4 KiB chunk of memory that user processes may use
  • we have 2^20 table entries. Since each page is 4 KiB == 2^12, this covers the whole 4 GiB (2^32) of 32-bit memory

Unlisted articles are being shown, click here to show only listed articles.