Knowledge (XXG)

Expanded memory

Source 📝

611:
allocate movable windows to expanded storage within their own address space. There was also a "data mover" feature which could be invoked to move data between main memory (central storage) and expanded storage; later, an "Asynchronous Data Mover Facility" (ADMF) was introduced, which enabled applications to request data to be moved between the two in the background, while they performed other processing. By the mid-1990s, expanded storage had ceased to be a physically separate memory, and had become merely a logical division within the system memory enforced by firmware; but it was not until the November 2016 release of z/VM 6.4 that IBM finally removed all support for expanded storage from its mainframe operating systems.
158: 346: 33: 617:(AWE) is a conceptually similar feature in Microsoft Windows, used to enable 32-bit applications to access more memory than the 2–4GB that can fit in a 32-bit address space. Although still supported by current versions of Windows, its use has been superseded by 64-bit applications, which can access >4GB of memory directly. 525:
Certain emulation programs, colloquially known as LIMulators, did not rely on motherboard or 80386 features at all. Instead, they reserved 64 KiB of the base RAM for the expanded memory window, where they copied data to and from either extended memory or the hard disk when application programs
292:
In turn, EMS 3.2 was improved upon by a group of three other companies: AST Research, Quadram and Ashton-Tate, which created their own Enhanced EMS (EEMS) standard. EEMS allowed any 16 KiB region in lower RAM to be mapped to expanded memory, as long as it was not associated with interrupts or
265:
cooperated to develop the EMS standard (aka LIM EMS). The first publicly available version of EMS, version 3.0 allowed access of up to 4 MiB of expanded memory. This was increased to 8 MiB with version 3.2 of the specification. The final version of EMS, version 4.0 increased the maximum
610:
was a feature on IBM mainframes providing additional memory outside of the main system memory, first introduced with the IBM 3090 high-end mainframe series in 1985. Expanded storage could not be directly addressed by applications; an MVS feature known as "window services" enabled applications to
122:("AQA"); it could map any area of the lower 1 MiB. EEMS ultimately was incorporated in LIM EMS 4.0, which supported up to 32 MiB of expanded memory and provided some support for DOS multitasking as well. IBM, however, created its own expanded-memory standard called 293:
dedicated I/O memory such as network or video cards. Thus, entire programs could be switched in and out of the extra RAM. EEMS also added support for two sets of mapping registers. These features were used by early DOS multitasker software such as
284:
The first public version of the EMS standard, called EMS 3.0 was released in 1985; EMS 3.0, however, saw almost no hardware implementations before being superseded by EMS 3.2. EMS 3.2 used a 64 KiB region in the upper 384 KiB
421:. Its name was variable; the previously mentioned boards used REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT&T) and EMM.SYS (Intel) respectively. Later, the expression became associated with software-only solutions requiring the 328:. The expanded memory hardware interface used by XMA boards is, however, incompatible with EMS, but a XMA2EMS.SYS driver provided EMS emulation for XMA boards. XMA boards were first introduced for the 1986 (revamped) models of the 102:". LIM EMS had several versions. The first widely implemented version was EMS 3.2, which supported up to 8 MiB of expanded memory and uses parts of the address space normally dedicated to communication with peripherals ( 323:
IBM developed their own memory standard called Expanded Memory Adapter (XMA); the IBM DOS driver for it was XMAEM.SYS. Unlike EMS, the IBM expansion boards could be addressed both using an expanded memory model and as
245:
A first attempt to use a bank switching technique was made by Tall Tree Systems with their JRAM boards, but these did not catch on. (Tall Tree Systems later made EMS-based boards using the same JRAM brand.)
304:. The caveat was, however, that the standard did not specify how many register sets a board should have, so there was great variability between hardware implementations in this respect. 372:. Given the price of RAM during the period, up to several hundred dollars per MiB, and the quality and reputation of the above brand names, an expanded memory board was very expensive. 234:
scheme was devised, where only selected parts of the additional memory would be accessible at any given time. Originally, a single 64 KiB (2 bytes) window of memory, called a
914: 526:
requested page switches. This was programmatically easy to implement, but performance was low. This technique was offered by AboveDisk from Above Software and by several
457:
processor freely modeled the address space when running legacy real-mode software, making hardware solutions unnecessary. Expanded memory could be simulated in software.
735: 300:
A new feature added in LIM EMS 4.0 was that EMS boards could have multiple sets of page-mapping registers (up to 64 sets). This allowed a primitive form of DOS
353:
This insertion of a memory window into the peripheral address space could originally be accomplished only through specific expansion boards, plugged into the
311:
67h. Programs using EMS must first establish the presence of an installed expanded memory manager (EMM) by checking for a device driver with the device name
553:(2) of RAM – 4096 times the addressable space of the original 8086. DOS itself did not directly support protected mode, but Microsoft eventually developed 842: 269:
Microsoft thought that bank switching was an inelegant and temporary, but necessary stopgap measure. Slamming his fist on the table during an interview
603:
Other platforms have implemented the same basic concept – additional memory outside of the main address space – but in technically incompatible ways:
307:
The Expanded Memory Specification (EMS) is the specification describing the use of expanded memory. EMS functions are accessible through software
181:(MiB, or 2 bytes) of memory. It inherited this limit from the 20-bit external address bus (and overall memory addressing architecture) of the 491:
Software expanded-memory managers in general offered additional, but closely related functionality. Notably, they allowed using parts of the
500: 1047: 511: 1066: 937:"Effective utilization of IBM 3090 large virtual storage in the numerically intensive computations of ab initio molecular orbitals" 1019: 670: 1095: 1090: 354: 242:
between conventional memory and expanded memory could be adjusted to access different locations within the expanded memory.
238:, was used; later this was made more flexible. Programs had to be written in a specific way to access expanded memory. The 681: 614: 595:
supported protected mode "out of the box". These and similar developments rendered Expanded Memory an obsolete concept.
554: 533:
It is also possible to emulate EMS by using XMS memory on 286 CPUs using 3rd party utilities like EMM286 (.SYS driver).
515: 902: 519: 866: 687: 426: 1100: 838: 781: 731: 161:
A section of the lower 1 MiB address space provides a "window" into several megabytes of Expanded Memory
676: 563: 37: 659: 642: 301: 53: 391:-based computers implemented an expanded memory scheme that did not require add-on boards, notably the 289:
area) divided into four 16 KiB pages, which could be used to map portions of the expanded memory.
78:
is an umbrella term for several incompatible technology variants. The most widely used variant was the
472:. A popular and well-featured commercial solution was Quarterdeck's QEMM. A contender was Qualitas' 637: 362: 69: 469: 369: 297:. Released in 1987, the LIM EMS 4.0 specification incorporated practically all features of EEMS. 157: 277:! … But we're going to do it". The companies planned to launch the standard at the Spring 1985 1043: 956: 906: 828: 721: 664: 492: 434: 146: 45: 802: 771: 17: 948: 892: 717: 653: 607: 133:
in the late 1980s through the mid-1990s, but its use declined as users switched from DOS to
647: 507: 401: 325: 216: 200:, and the remaining 384 KiB of memory space was reserved for uses such as the system 227:
applications could run in it) meant that the market was still open for another solution.
1058: 1007: 620: 546: 254: 231: 220: 134: 87: 61: 345: 110:, an expanded-memory management standard competing with LIM EMS 3.x, was developed by 1084: 1003: 756: 414: 1036: 624: 558: 510:, expanded-memory emulation and DOS extenders ended up being regulated by the XMS, 392: 358: 286: 111: 103: 129:
The use of expanded memory became common with games and business programs such as
974: 266:
amount of expanded memory to 32 MiB and supported additional functionality.
833: 776: 726: 542: 477: 454: 422: 388: 381: 130: 119: 936: 584: 580: 481: 270: 235: 182: 166: 41: 32: 960: 910: 1015: 897: 870: 527: 395:. Typically, software switches determined how much memory should be used as 308: 281:, with many expansion-card and software companies announcing their support. 262: 208: 174: 95: 550: 413:
An expanded-memory board, being a hardware peripheral, needed a software
294: 186: 178: 142: 952: 874: 357:
expansion bus of the computer. Famous 1980s expanded memory boards were
572: 384: 329: 223:. The scarcity of software compatible with protected mode (no standard 115: 592: 568: 485: 473: 442: 438: 278: 274: 170: 196:
bytes) of address space for read-write program memory (RAM), called
1011: 576: 366: 344: 258: 212: 156: 138: 91: 31: 495:(UMA) (the upper 384 KiB of real-mode address space) called 588: 499:(UMBs) and provided tools for loading small programs, typically 465: 430: 201: 417:, which exported its services. Such a device driver was called 623:
creates the illusion of available memory using, for instance,
453:
Beginning in 1986, the built-in memory management features of
224: 65: 204:, video memory, and memory on expansion peripheral boards. 98:, so that this specification was sometimes referred to as " 545:
supported 24 bits of address space (16 MiB) in
541:
Expanded Memory usage declined in the 1990s. The IBM AT
185:. The designers of the PC allocated the lower 640  549:, and the 386 supported 32-bit addresses, or 4  215:
chip that could address up to 16 MiB of RAM as
867:"A General Tutorial on the Various Forms of Memory" 468:, available in September 1986 as a utility for the 1035: 361:RAMpage, IBM PS/2 80286 Memory Expansion Option, 27:System of bank switching in DOS memory management 712: 710: 708: 706: 704: 575:. In the early 1990s new operating systems like 1057:Borrett, Lloyd Robert (January–February 1989). 571:to run in protected mode while still using the 273:said of expanded memory, "It's garbage! It's a 561:were published based on it. DOS programs like 935:Sakaki, M.; Samukawa, H.; Honjou, N. (1988). 759:(Broschure). Tall Tree Systems. October 1983. 8: 886: 884: 476:. Functionality was later incorporated into 349:Emulex Persyst 4 MiB ISA memory board 106:) to map portions of the expanded memory. 700: 861: 859: 757:"Tall Tree Systems Product Datasheet" 7: 1038:PC System Programming for Developers 501:terminate-and-stay-resident programs 829:"EMS 4.0: The Standard That Wasn't" 460:The first software expanded-memory 445:in MS-DOS, PC DOS and DR-DOS. 250:Expanded Memory Specification (EMS) 64:that provided additional memory to 893:"3270 Demand Not Expected To Rise" 230:To make more memory accessible, a 86:), which was developed jointly by 25: 512:Virtual Control Program Interface 503:inside ("LOADHI" or "LOADHIGH"). 365:Expanded Memory Adapter and the 1069:from the original on 2020-02-08 1022:from the original on 2020-02-08 1004:"Expanded Memory Specification" 917:from the original on 2020-02-08 845:from the original on 2020-02-08 803:"The Most Memorable Tech Flops" 738:from the original on 2020-02-08 671:Global EMM Import Specification 399:and how much should be used as 211:, introduced in 1984, used the 809:. January 2008. pp. 88–89 1: 891:Welch, Marc J. (1986-04-14). 827:Rosch, Winn L. (1989-12-12). 770:Machrone, Bill (1985-05-14). 319:Expanded Memory Adapter (XMA) 80:Expanded Memory Specification 68:programs beyond the limit of 18:Expanded Memory Specification 1018:. October 1987. 300275-005. 901:. Vol. 8, no. 15. 837:. Vol. 8, no. 21. 780:. Vol. 4, no. 10. 730:. Vol. 8, no. 21. 682:Address Windowing Extensions 615:Address Windowing Extensions 516:DOS Protected Mode Interface 903:InfoWorld Media Group, Inc. 772:"Memory Scheme Breaks 640K" 520:DOS Protected Mode Services 1117: 975:"IBM: Configuring Storage" 688:Physical Address Extension 137:operating systems such as 1034:Tischer, Michael (1989). 839:Ziff Davis Publishing Co. 782:Ziff Davis Publishing Co. 732:Ziff Davis Publishing Co. 567:could use extenders like 219:, it could only do so in 40:are bank-switched in the 464:(emulation) program was 36:Several expanded-memory 1059:"Understanding EMS 4.0" 677:x86 memory segmentation 522:(DPMS) specifications. 425:processor, for example 419:expanded-memory manager 350: 162: 49: 1096:DOS memory management 1091:X86 memory management 660:Overlay (programming) 643:DOS memory management 348: 160: 54:DOS memory management 35: 1063:Technical Cornucopia 722:"A Slot Full of RAM" 506:Interaction between 376:Motherboard chipsets 953:10.1147/sj.274.0528 941:IBM Systems Journal 638:Conventional memory 497:upper memory blocks 198:conventional memory 70:conventional memory 841:pp. 174–175. 470:Compaq Deskpro 386 449:Software emulation 351: 177:could address one 163: 50: 718:Mendelson, Edward 665:Upper memory area 493:upper memory area 480:in 1989 and into 255:Lotus Development 169:processor of the 147:Microsoft Windows 46:upper memory area 16:(Redirected from 1108: 1101:Memory expansion 1077: 1075: 1074: 1053: 1041: 1030: 1028: 1027: 990: 989: 987: 986: 971: 965: 964: 932: 926: 925: 923: 922: 888: 879: 878: 873:. Archived from 863: 854: 853: 851: 850: 824: 818: 817: 815: 814: 799: 793: 792: 790: 789: 767: 761: 760: 753: 747: 746: 744: 743: 714: 654:High memory area 608:Expanded storage 599:Similar concepts 341:Expansion boards 207:Even though the 195: 194: 72:(640 KiB). 21: 1116: 1115: 1111: 1110: 1109: 1107: 1106: 1105: 1081: 1080: 1072: 1070: 1056: 1050: 1033: 1025: 1023: 1006:. Version 4.0. 1002: 999: 997:Further reading 994: 993: 984: 982: 973: 972: 968: 934: 933: 929: 920: 918: 890: 889: 882: 865: 864: 857: 848: 846: 826: 825: 821: 812: 810: 801: 800: 796: 787: 785: 769: 768: 764: 755: 754: 750: 741: 739: 734:pp. 169–. 716: 715: 702: 697: 648:Extended memory 634: 601: 539: 508:extended memory 482:DR DOS 5.0 451: 441:or the default 411: 402:extended memory 397:expanded memory 378: 343: 338: 336:Implementations 326:extended memory 321: 252: 217:extended memory 192: 190: 155: 76:Expanded memory 60:is a system of 58:expanded memory 28: 23: 22: 15: 12: 11: 5: 1114: 1112: 1104: 1103: 1098: 1093: 1083: 1082: 1079: 1078: 1054: 1048: 1031: 998: 995: 992: 991: 979:www.vm.ibm.com 966: 947:(4): 528–540. 927: 880: 877:on 2012-10-22. 855: 819: 794: 762: 748: 720:(1989-12-12). 699: 698: 696: 693: 692: 691: 685: 679: 674: 668: 662: 657: 651: 645: 640: 633: 630: 629: 628: 621:Virtual memory 618: 612: 600: 597: 557:, and several 547:protected mode 538: 535: 450: 447: 410: 409:Device drivers 407: 377: 374: 342: 339: 337: 334: 320: 317: 251: 248: 232:bank switching 221:protected mode 154: 151: 135:protected-mode 88:Lotus Software 62:bank switching 44:, part of the 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 1113: 1102: 1099: 1097: 1094: 1092: 1089: 1088: 1086: 1068: 1064: 1060: 1055: 1051: 1049:1-55755-036-0 1045: 1040: 1039: 1032: 1021: 1017: 1013: 1009: 1005: 1001: 1000: 996: 980: 976: 970: 967: 962: 958: 954: 950: 946: 942: 938: 931: 928: 916: 912: 908: 904: 900: 899: 894: 887: 885: 881: 876: 872: 868: 862: 860: 856: 844: 840: 836: 835: 830: 823: 820: 808: 804: 798: 795: 783: 779: 778: 773: 766: 763: 758: 752: 749: 737: 733: 729: 728: 723: 719: 713: 711: 709: 707: 705: 701: 694: 689: 686: 683: 680: 678: 675: 672: 669: 666: 663: 661: 658: 655: 652: 649: 646: 644: 641: 639: 636: 635: 631: 626: 622: 619: 616: 613: 609: 606: 605: 604: 598: 596: 594: 590: 586: 582: 578: 574: 570: 566: 565: 560: 559:DOS extenders 556: 552: 548: 544: 536: 534: 531: 529: 523: 521: 517: 513: 509: 504: 502: 498: 494: 489: 487: 483: 479: 475: 471: 467: 463: 458: 456: 448: 446: 444: 440: 436: 432: 428: 424: 420: 416: 415:device driver 408: 406: 404: 403: 398: 394: 390: 386: 383: 375: 373: 371: 368: 364: 360: 356: 347: 340: 335: 333: 331: 327: 318: 316: 314: 310: 305: 303: 298: 296: 290: 288: 282: 280: 276: 272: 267: 264: 260: 256: 249: 247: 243: 241: 237: 233: 228: 226: 222: 218: 214: 210: 205: 203: 199: 188: 184: 180: 176: 172: 168: 159: 152: 150: 148: 144: 140: 136: 132: 127: 125: 121: 117: 113: 109: 105: 101: 97: 93: 89: 85: 81: 77: 73: 71: 67: 63: 59: 55: 47: 43: 39: 34: 30: 19: 1071:. Retrieved 1062: 1037: 1024:. Retrieved 983:. Retrieved 981:. 2006-08-29 978: 969: 944: 940: 930: 919:. Retrieved 896: 875:the original 847:. Retrieved 832: 822: 811:. Retrieved 806: 797: 786:. Retrieved 775: 765: 751: 740:. Retrieved 725: 625:disk storage 602: 562: 540: 532: 524: 505: 496: 490: 484:in 1990, as 461: 459: 452: 418: 412: 400: 396: 393:NEAT chipset 380:Later, some 379: 352: 322: 312: 306: 302:multitasking 299: 291: 287:upper memory 283: 268: 253: 244: 239: 229: 206: 197: 164: 128: 123: 112:AST Research 107: 104:upper memory 99: 83: 79: 75: 74: 57: 51: 29: 905:p. 5. 834:PC Magazine 807:PC Magazine 777:PC Magazine 727:PC Magazine 543:Intel 80286 518:(DPMI) and 478:MS-DOS 4.01 455:Intel 80386 427:Quarterdeck 423:Intel 80386 389:Intel 80286 382:motherboard 370:Above Board 131:Lotus 1-2-3 120:Ashton-Tate 1085:Categories 1073:2020-02-08 1042:. Abacus. 1026:2020-02-08 985:2023-05-03 921:2020-02-08 849:2020-02-08 813:2020-09-05 788:2013-10-28 784:p. 33 742:2020-02-08 695:References 585:Windows NT 581:Windows 9x 530:programs. 462:management 271:Bill Gates 236:page frame 183:Intel 8086 153:Background 42:page frame 1016:Microsoft 961:0018-8670 911:0199-6649 898:InfoWorld 871:Microsoft 551:gigabytes 528:shareware 309:interrupt 263:Microsoft 209:IBM PC AT 175:IBM PC/XT 96:Microsoft 1067:Archived 1020:Archived 915:Archived 843:Archived 736:Archived 673:(GEMMIS) 632:See also 514:(VCPI), 435:Qualitas 385:chipsets 363:AT&T 313:EMMXXXX0 295:DESQview 179:megabyte 143:IBM OS/2 573:DOS API 537:Decline 330:3270 PC 116:Quadram 100:LIM EMS 1046:  959:  909:  593:BSD/OS 591:, and 569:DOS/4G 486:EMM386 443:EMM386 279:COMDEX 275:kludge 261:, and 240:window 171:IBM PC 145:, and 94:, and 1012:Intel 1008:Lotus 690:(PAE) 684:(AWE) 667:(UMA) 656:(HMA) 650:(XMS) 577:Linux 367:Intel 259:Intel 213:80286 139:Linux 92:Intel 38:pages 1044:ISBN 957:ISSN 907:ISSN 589:OS/2 564:Doom 555:DPMI 466:CEMM 431:QEMM 202:BIOS 173:and 167:8088 165:The 118:and 108:EEMS 949:doi 474:386 439:386 429:'s 387:of 359:AST 355:ISA 225:DOS 193:360 191:655 187:KiB 124:XMA 84:EMS 66:DOS 52:In 1087:: 1065:. 1061:. 1014:, 1010:, 977:. 955:. 945:27 943:. 939:. 913:. 895:. 883:^ 869:. 858:^ 831:. 805:. 774:. 724:. 703:^ 587:, 583:, 579:, 488:. 437:' 433:, 405:. 332:. 315:. 257:, 149:. 141:, 126:. 114:, 90:, 56:, 1076:. 1052:. 1029:. 988:. 963:. 951:: 924:. 852:. 816:. 791:. 745:. 627:. 285:( 189:( 82:( 48:. 20:)

Index

Expanded Memory Specification

pages
page frame
upper memory area
DOS memory management
bank switching
DOS
conventional memory
Lotus Software
Intel
Microsoft
upper memory
AST Research
Quadram
Ashton-Tate
Lotus 1-2-3
protected-mode
Linux
IBM OS/2
Microsoft Windows

8088
IBM PC
IBM PC/XT
megabyte
Intel 8086
KiB
BIOS
IBM PC AT

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.