Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Conventional memory
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== 640 KB barrier == <!-- This section is linked from [[IBM PC compatible]] --> {| class="wikitable floatright" |+ IBM PC, [[IBM Personal Computer XT|PC/XT]], [[IBM 3270 PC|3270 PC]] and [[IBM PCjr|PCjr]] memory blocks<ref name="Norton_1986"/><ref name="Patent4926322"/> |- |0-block||align="right"|1st 64 KB||Ordinary user memory to 64 KB (low memory area) |- |1-block||align="right"|2nd 64 KB||Ordinary user memory to 128 KB |- |2-block||align="right"|3rd 64 KB||Ordinary user memory to 192 KB |- |3-block||align="right"|4th 64 KB||Ordinary user memory to 256 KB |- |4-block||align="right"|5th 64 KB||Ordinary user memory to 320 KB |- |5-block||align="right"|6th 64 KB||Ordinary user memory to 384 KB |- |6-block||align="right"|7th 64 KB||Ordinary user memory to 448 KB |- |7-block||align="right"|8th 64 KB||Ordinary user memory to 512 KB |- |8-block||align="right"|9th 64 KB||Ordinary user memory to 576 KB |- |9-block||align="right"|10th 64 KB||Ordinary user memory to 640 KB |- |A-block||align="right"|11th 64 KB||Extended video memory ([[Enhanced Graphics Adapter|EGA]]) |- |B-block||align="right"|12th 64 KB||Standard video memory ([[IBM Monochrome Display Adapter|MDA]]/[[Color Graphics Adapter|CGA]]) |- |C-block||align="right"|13th 64 KB||ROM expansion (XT, EGA, 3270 PC) |- |D-block||align="right"|14th 64 KB||other use (PCjr cartridges, [[Expanded memory|LIM EMS]]) |- |E-block||align="right"|15th 64 KB||other use (PCjr cartridges, LIM EMS) |- |F-block||align="right"|16th 64 KB||System ROM-BIOS and ROM-BASIC |} The '''640 KB barrier''' is an architectural limitation of [[IBM PC compatible]] PCs. The [[Intel 8088]] CPU, used in the [[IBM Personal Computer|original IBM PC]], was able to address 1 MB (2<sup>20</sup> bytes), since the chip offered 20 [[address line]]s. In the design of the PC, the memory below 640 KB<!-- not 64 KB! --> was for [[random-access memory]] on the motherboard or on expansion boards, and it was called the conventional memory area. {{anchor|Low}}The first memory segment (64 KB<!-- not 640 KB! -->) of the conventional memory area is named '''lower memory''' or '''low memory area'''. The remaining 384 KB beyond the conventional memory area, called the [[upper memory area]] (UMA), was reserved for system use and optional devices. UMA was used for the [[ROM BIOS]], additional [[read-only memory]], BIOS extensions for fixed disk drives and video adapters, video adapter memory, and other [[memory-mapped I/O|memory-mapped input and output devices]]. The design of the original IBM PC placed the [[Color Graphics Adapter]] (CGA) memory map in UMA. The need for more RAM grew faster than the needs of hardware to utilize the reserved addresses, which resulted in RAM eventually being mapped into these unused upper areas to utilize all available addressable space. This introduced a reserved "hole" (or several holes) into the set of addresses occupied by hardware that could be used for arbitrary data. Avoiding such a hole was difficult and ugly and not supported by [[DOS]] or most programs that could run on it. Later, space between the holes would be used as upper memory blocks (UMBs). To maintain compatibility with older operating systems and applications, the 640 KB barrier remained part of the PC design even after the 8086/8088 had been replaced with the [[Intel 80286]] processor, which could address up to 16 MB of memory in [[protected mode]]. The 1 MB barrier also remained as long as the 286 was running in [[real mode]], since DOS required real mode which uses the segment and offset registers in an overlapped manner such that addresses with more than 20 bits are not possible. It is still present in IBM PC compatibles today if they are running in real mode such as used by DOS. Even the most modern Intel PCs still have the area between 640 and 1024 [[kilobyte|KB]] reserved.<ref name="Yao"/><ref name="Russinovich"/> This however is invisible to programs (or even most of the operating system) on newer operating systems (such as [[Microsoft Windows|Windows]], [[Linux]], or [[Mac OS X]]) that use [[virtual memory]], because they have no awareness of physical memory addresses at all. Instead they operate within a virtual address space, which is defined independently of available RAM addresses.<ref name="Richter"/> Some motherboards feature a "Memory Hole at 15 Megabytes" option required for certain VGA video cards that require exclusive access to one particular megabyte for video memory. Later video cards using the [[Accelerated Graphics Port|AGP]] (PCI memory space) bus can have 256 MB memory with 1 GB [[Aperture (computer memory)|aperture size]]. === Additional memory === One technique used on early [[IBM XT]] computers was to install additional RAM into the video memory address range and push the limit up to the start of the [[Monochrome Display Adapter]] (MDA). Sometimes software or a custom [[address decoder]] was required for this to work. This moved the barrier to 704 KB (with MDA/HGC) or 736 KB (with CGA).<ref name="Atkinson"/><ref name="Paul_1997_NWDOSTIP"/> [[DOS memory management|Memory manager]]s on [[Intel 80386|386-based]] systems (such as [[QEMM]] or MEMMAX (+V) in [[DR-DOS]]) could achieve the same effect, adding conventional memory at 640 KB and moving the barrier to 704 KB (up to segment B000, the start of MDA/HGC) or 736 KB (up to segment B800, the start of the CGA).<ref name="Paul_1997_NWDOSTIP"/> Only CGA could be used in this situation, because [[Enhanced Graphics Adapter]] (EGA) video memory was immediately adjacent to the conventional memory area below the 640 KB line; the same memory area could not be used both for the [[frame buffer]] of the video card and for transient programs. All Computers' piggy-back add-on [[memory management unit]]s ''AllCard'' for XT-<ref name="Petzold_1986_Allcard"/><ref name="PCW_1986_AllCard"/> and ''Chargecard''<ref name="Zerbe_1987_AllCharge"/> for 286/386SX-class computers, as well as MicroWay<!--, Inc.-->'s ECM (Extended Conventional Memory) add-on-board<ref name="Petzold_1986_ECM"/> allowed normal memory to be mapped into the A0000βEFFFF ([[hexadecimal|hex]]) address range, giving up to 952 KB for DOS programs. Programs such as [[Lotus 1-2-3]], which accessed video memory directly, needed to be [[patch (computing)|patched]] to handle this memory layout. Therefore, the 640 KB barrier was removed at the cost of hardware compatibility.<ref name="Zerbe_1987_AllCharge"/> {{anchor|Console redirection}}<!-- Redirecting here for now, as there is no better target. A standalone Console redirection article is needed. -->It was also possible to use '''console redirection'''<ref name="Kontron_2021"/> (either by specifying an alternative console device like [[AUX:]] when initially invoking [[COMMAND.COM]] or by using [[CTTY (DOS command)|CTTY]] later on) to direct output to and receive input from a [[dumb terminal]] or another computer running a [[terminal emulator]]. Assuming the [[System BIOS]] still permitted the machine to boot (which is often the case at least with BIOSes for embedded PCs), the video card in a so called [[headless computer]] could then be removed completely, and the system could provide a total of 960 KB of continuous DOS memory for programs to load. Similar usage was possible on many DOS- but not IBM-compatible computers with a non-fragmented memory layout, for example [[Seattle Computer Products|SCP]] [[S-100 bus]] systems equipped with their [[Intel 8086|8086]] CPU card CP-200B and up to sixteen SCP 110A memory cards (with 64 KB RAM on each of them) for a total of up to 1024 KB (without video card, but utilizing console redirection, and after mapping out the boot/BIOS ROM),<ref name="Paterson_2007_SCP"/> the [[Victor 9000]]/[[Sirius 1]] which supported up to 896 KB, or the [[Apricot PC]]<!-- the figure for the Apricot PC is not currently known, except for that it was more than 640 KB --> with more continuous DOS memory to be used under its custom version of MS-DOS.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)