Down Memory Lane
The move from 32 bits to 64 bits matters most when it comes to these computers' ability to address memory. A program running on a 32-bit computer can easily address 4 gigabytes of memory-recall, 232 is roughly 4.3 billion. On the other hand, a program running on a 64-bit machine can address 264-that's 4 billion times 4 billion bytes, an astonishingly large number. Just do the numbers and it's clear that there is a lot more "headroom" on a 64-bit system. But these two facts are actually responsible for a lot of confusion, as we will see.
IBM's original personal computer used the Intel 8088 microprocessor-a funny little chip that was filled with weird engineering compromises. At its heart, the 8088 was a 16-bit processor: it had 16-bit math registers, allowing it to easily represent numbers between 0 and 65,535 (or between -32,768 and 32,767), and 16-bit address registers, allowing it to easily communicate with 64 kilobytes of main memory. Now, 64K wasn't enough to do much of anything, even in 1981 when the PC first shipped, so the 8088 had a set of segment registers that were shifted to the left 4 bits and added to the address register before memory addresses were actually read or written. As a result, the 8088 could easily access up to one megabyte of memory. A megabyte was a lot of RAM back in 1981. Indeed, computer designers back then couldn't imagine that a typical home or business user would need that much memory, let alone be able to afford it, for many years to come. So IBM's designers drew a line across the computer's memory map and put the memory for the video display right in the middle of the upper half, effectively limiting the early PCs to no more than 640 kilobytes of RAM. This was the genesis of the 640K limit that was imposed by IBM's computer on its DOS operating system.
A few years later, Intel introduced its next microprocessor, the 80286. (The 80186 never really made it into personal computers.) The 286 was the basis of IBM's PC/AT. It had an emulation mode (called "real mode") that let the 286 run the same software as the 8088, but it also had an advanced, "protected" mode that let it run with up to 16 megabytes of RAM. The vast majority of these machines were operated in real mode so that they could run Microsoft's DOS and all of the other programs that were written for the original IBM PC. Indeed, the 286 was far more popular at running 8088 software than the 8088 ever was, because the 286 was so much faster. When you get right down to it, very few 286 chips were actually run in their "protected" mode.
In 1985 Intel introduced the 80386 chip-the first 32-bit processor in the x86 family. Once again this microprocessor had a so-called "real mode" so that it could run DOS and the rest of 8088 software base. These machines could circles around the original 8088-not because they were 32-bit machines, but because they had faster clock rates and a more sophisticated internal design. There were also a number of companies selling "DOS extenders" that let programs loaded under DOS take advantage of the full 32-bit address space. These extenders flipped the computer into 32-bit mode for math, but returned the machine to 16-bit mode whenever the program needed to access the computer's hard drive. Nevertheless, 32-bit programs running on these 32-bit processors was the exception, not the rule.
Comments