|   | 
Einstieg | 
 
 
 
UMBPCI.SYS ist ein Upper-Memory-Treiber, und damit ein teilweiser Ersatz für EMM386. UMBPCI funktioniert unter MS-DOS ab Version 5.0, also auch mit dem DOS 7.x das unter Windows 95 und 98 liegt. 
Da Windows ME die CONFIG.SYS ignoriert wenn es nicht von Diskette gebootet wird, kann UMBPCI hier erst gar nicht geladen werden, es sei denn, man reaktiviert die CONFIG.SYS mit einem Patch. 
Windows XP basiert nicht auf MS-DOS - UMBPCI hat hier ausgedient.
UMBPCI erweitert den XMS-Treiber HIMEM.SYS um die Funktion 'Request XMS-UMB' (Das sind die 160 Bytes die im Speicher bleiben). Das ist genau das, was EMM386 macht, wenn er mit dem Parameter 'RAM' oder 'NOEMS' geladen wird.
 
UMBPCI 'mißbraucht' für die UMBs Speicher, der für's Shadow-RAM gedacht und normalerweise abgeschaltet
ist, also brachliegt. Er selbst belegt nur o.g. 160 Bytes - das ist alles. 
EMM386 holt sich den Speicher für die UMBs dagegen vom Exteded Memory, braucht selbst noch gut 150K XMS, 4K unteren DOS-Speicher, sowie 7K UMBs und schaltet die CPU in den Protected
Mode, um die Memory Management Unit (MMU) der >386-CPUs benutzten zu können:
 
 
 
 Diagramm by Ralf Buschmann
UMBPCI ist abhängig vom Chipsatz bzw. der CPU des Rechners und bringt etliche Einschränkung mit sich. Ohne Not oder akute Langeweile sollte man UMBPCI nicht einsetzen, schon gar nicht auf Boot-Medien, die auf verschiedenen Rechnern funktionieren sollen.
 
UMBPCI kann nur den Bereich C800-EFFF
nutzen, jedoch NICHT B000-B7FF, weil in diesem Bereich keine ROMs vorgesehen
sind und die Chipsätze deshalb dort kein Shadow-RAM anbieten.
 Da der von UMBPCI nutzbar gemachte
Speicher als Shadow-RAM und nicht für UMBs gedacht ist, gibt es hier
verschiedene Probleme:
 Suspend to disk funktioniert nicht, weil die UMBs nicht mit gesichert werden.
 Mal geht kein ISA-DMA, mal kein PCI-Busmastering, mal ist der
L2-Cache hier schreibgeschützt und mal gehts es einfach gar nicht...
 
Wegen der Probleme mit ISA-DMA könnte
SMARTDRVs Floppy-Cache nicht funktionieren, wenn es hochgeladen wird. Das
hat aber nichts mit PCI-Busmastering zu tun. 
PCI-Busmastering funktioniert auf AMDs K7/K8 nicht. Das betrifft dann Festplatten,
die unter DOS mit Busmastering betrieben werden. Das ist bei einigen wenigen
Boards mit AMI-BIOS der Fall, aber auch bei PCI-IDE-Contorllern mit eigenem BIOS,
wie die von Promise, Silicon Image, Highpoint usw. Abhilfe schafft manchmal das Setzen von DoubleBuffer=1 in der MSDOS.SYS (Windows 95 und höher). Bei älteren DOS-Versionen hilft beim Hochladen nur der Umweg über eine Ramdisk. 
 
Treiber von Netzwerkkarten, die mit PCI-Busmastering arbeiten, kann man auf AMD K7 auch nicht hochladen.
 
Wenn UMBPCI auf einer Boot-Floppy
benutzt wird, sollten nur Bereiche benutzt werden, in denen ISA-DMA funktioniert.
Auf Intel-Chipsätzen der 430er und 440er-Serie (außer MX-Versionen)
ist der geeignete Parameter für UMBPCI /I=E000-EFFF. Auf Chipsätzen
die kein ISA-DMA in den UMBs beherrschen, sollte UMBPCI nicht auf Bootdisketten
eingesetzt werden. Konkret ist es nicht möglich, Programme von einer
Floppy per DEVICEHIGH, INSTALLHIGH oder LOADHIGH in einen UMB zu laden
in dem kein ISA-DMA funktioniert. Mit dem Treiber LOWDMA.SYS direkt nach UMBPCI
geladen, gehts dann doch... Bei komplexen Verzeichnis-Strukturen solls damit
aber Probleme geben.
 
Um die Funktion von ISA-DMA zu überprüfen
ist DMACHK.COM gedacht (Dank an Heiko Nocon). Dazu ist UMBPCI in
der CONFIG.SYS oder per CTLOAD zu laden.
DMACHK zeigt dann, in welchen Bereichen ISA-DMA funktioniert.
Das Programm ist mit in der UMBPCI.ZIP. Auf manchen Rechnern hängt
es... CTLOAD funktioniert nicht mit Windows ME - hier kann man
zu LOADSYS oder
DEVLOAD greifen.
 
Um sich ein Bild von der Speicherbelegung
unter DOS zu machen, ist MEM aus MS-DOS sicher nicht erste Wahl. Ich empfehle
MI.ZIP
(steht wohl für Memory Information).
 
Win9x bindet alle verbliebenen UMBs
in seine Speicherverwaltung als normalen Speicher ein. Wie oben beschrieben
ist der Speicher aber oft nicht ganz normal. 
So ist es denkbar, dass z.B.
der Treiber für eine ISA-Soundkarte oder die Floppy genau in einem
alten UMB landet, was nicht funktionieren kann, wenn dort kein ISA-DMA
funktioniert, oder irgendetwas geht auffallend langsam, weil es dort nicht
gecached wird.
 
Um Win9x von den UMBs fernzuhalten
habe ich UMBFILL geschrieben. Es belegt alle freien UMBs. Es sollte
ggf. nach allen residenten Programmen in der AUTOEXEC.BAT stehen. Es darf
selbst nicht hochgeladen werden. Falls das jemand so ändern kann,
dass man es hochladen kann - bitte melden...
 
Eine andere Möglichkeit Win9x
von den UMBs fernzuhalten, ist die Zeile LocalLoadHigh=1 im Abschnitt [386Enh]
der SYSTEM.INI, die dazu führt, dass nur noch ein kleiner Bereich
der UMBs von VMM32 belegt wird, was wohl unkritisch ist. Allerdings habe
ich dazu keine verläßlichen Informationen.
 
Auf Chipsätzen bei denen die
UMBs nicht cacheable sind, sollte man die DOS-Buffers unbedingt in den
unteren Speicher zwingen, da die sonst Win9x stellenweise massiv ausbremsen.
Normalerweise werden die von DOS automatisch hochgeladen. Um das zu verhindern,
muß DOS=high, umb, noauto gesetzt werden. Dann muß außer
HIMEM.SYS auch IFSHLP.SYS in der CONFIG.SYS stehen!
  | 
 | 
 
|   | 
 | 
 
 
 
|   | 
Chipsätze und ihre Probleme | 
 
  
AMDs K7 und K8 CPUs (alle Athlons, Durons, Semprons, Opterons, usw) steuern Shadow-RAM unabhängig vom Chipsatz. Deshalb sind K7- und K8-Chipsätze nicht in der Tabelle aufgeführt.
Die neuen Intel Core i7, i5 und i3 CPU kümmern sich auch auch unabhängig vom Chipsatz um das Shadow-RAM.
 
 
| 
 AMD K7, K8 CPUs (alle Athlons, Durons, Semprons, Opterons)
 | 
 kein ISA-DMA, kein PCI-Busmastering (DoubleBuffer=1 in der MSDOS.SYS setzen und keine Treiber von PCI-Netzwerkkarten hochladen)
 | 
Intel Core i3, i5, i7 CPUs
 | 
 keine Infos
 | 
 
 Intel 
 Saturn, Mercury, Neptune 
 430xX, 440xX 
 420EX, 4x0MX, 450xX 
 810 
 815, 820, 845, 845xG, 850 
 830MP, 840, 860, 865, 875 
 | 
  
 keine Probleme 
 ISA-DMA nur im E-Segment 
 kein ISA-DMA 
 kein ISA-DMA 
 keine Probleme 
 ungetestet 
  | 
 
 VIA bis VP2/97 
 VIA VP3, MVP3, MVP4 
 VIA Apollo Pro Serie 
 VIA P4X266, P4M266, P4N266, 
 P4X333, P4N333, P4X600 
 PT8xx 
  | 
 
 nicht cacheable, kein ISA-DMA 
 nicht cacheable 
 keine Probleme 
 keine Probleme 
  
  
  | 
 
 
 ALI II, III, IV, V 
 ALI Pro2-4 
  | 
 nicht cacheable 
 ISA-DMA ok 
 |  
 SiS 591/592/597 
 SiS andere Socket7 
 SiS Pentium2 
 SiS Pentium4 
  | 
 nicht cacheable 
 nicht cacheable, ISA-DMA ungetestet 
 ISA-DMA ungetestet 
 ungetestet 
 |  
 
Generell scheinen 486er mit PCI-Chipsatz nicht zu funktionieren, weil das Lesen
und Schreiben von PCI-Konfigurationsregistern durch deren PCI-BIOS nicht unterstützt
wird.
 
  | 
 | 
 
|   | 
 | 
 
 
 
|   | 
News | 
 
 V2.18
 - Support für SiS530 (ungetestet)
 V2.19
 - Support für VIA Apollo Pro und Pro Plus (ungetestet)
 V2.20
 - Support für ALI Aladdin V 
 - Support für ALI Aladdin III, IV und Pro2  (ungetestet)
 V2.21
 - Support für Intel 810 (ungetestet)
 - UMBs nicht mehr cacheable auf SiS 59x
 V2.22
 - Support für neue VIA MVP3 mit Southbridge 596 (buggy)
 V2.24
 - VIA MVP3 mit Southbridge 596 sollte jetzt funktionieren
V3.00
 - Autoscan nach freien Bereichen - kein Parameter mehr nötig
 - Speicher wird aktiviert wenn kein HIMEM da ist (für DR-DOS oder HIRAM.SYS)
 V3.01
 - Aufforderung zum Feedback bei ungetesteten Chipsätzen
 V3.02
 - Support für SiS 600 und 620 (ungetestet)
 V3.03
 - UMBs nicht mehr cacheable auf ALi III und ALi IV
 V3.04
 - i440BX/ZX nicht mehr als 'ungetestet' markiert - war ein Versehen in V3.03
 V3.05
 - ALi III und IV getestet (Dank an Robert Riebisch)
 V3.06
 - entfernt sich jetzt wirklich aus dem Speicher, wenn ohne HIMEM geladen
   (Dank an M.Eckel)
 V3.07
 - Ali Pro II getestet (Dank an Stuart Dunlop)
 V3.08
 - SiS 600 getestet
 V3.09
 - SiS 620 getestet (Dank an Robert Riebisch)
 V3.10
 - SiS 530 getestet
 V3.11
 - Intel 820, 840, 440MX (alle ungetestet, kein ISA-DMA)
 V3.12
 - VIA MVP4 (ungetestet), VIA KX133 (funktioniert nicht)
 V3.13
 - VIA KX133 entfernt -  funktionierte nicht
 V3.14
 - VIA MVP4 getestet
 V3.15
 - Intel 810-DC100 getestet
 V3.16
 - einige VIA-P2-Chips werden richtig erkannt und der Cache für die UMBs aktiviert
 - Anzeige von Vendor- und Device-ID wenn Chipsatz unbekannt
 V3.17
 - Support für SiS540 (ungetestet)
 V3.18
 - Intel Neptune mit EISA-Bridge (kein ISA-DMA) (Dank an Bernd Krueger-Knauber)
 - Intel 815 (ungetestet)
 - ordentliche Meldung auf nicht unterstützten PCI-Chipsätzen
 - Suche nach South-Bridge auf unbekannten Chipsätzen geändert
 V3.19
 - VIA Apollo PM601 und PM133 (ungetestet)
 - unbekannte VIA-Chipsätze werden nicht mehr als 'MVP3+' erkannt
 - ordentliche Meldung auf Nicht-PCI-Chipsätzen
 V3.20
 - VIA Apollo PM601 und PM133 getestet (Dank an Charles Wright)
 V3.21
 - Intel 815 getestet, ISA-DMA funktioniert (Dank an Robert Riebisch)
 V3.22
 - Intel 810E (getestet)
 V3.23
 - Intel 820 mit anderer device ID (ungetestet)
 V3.24
 - SiS 630 getestet  (Dank an Matjaz Pavel)
 V3.25
 - Liste der nicht unterstützen Chipsätze erweitert
 V3.26
 - Intel 820 getestet, ISA-DMA funktioniert (Dank an Marco Terno)
 V3.27
 - Intel 440MX getestet
 V3.28
 - Intel 810 und 815 mit anderen device IDs (z.T. ungetestet)
 V3.29
 - Intel 850 (ungetestet)
 V3.30
 - VIA MVP3 mit Device-ID 597h und South-Bridge 686
 V3.31
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.32
 - Intel 845 (ungetestet)
 V3.33
 - Intel 850 getestet (Dank an Dirk Reetz)
 V3.34
 - Intel 845 getestet (war aufgrund eines falschen Berichts - der i845 funktionierte nicht)
 V3.35
 - Intel 845 funktioniert und ist getestet incl. ISA-DMA 
   (Dank an Michael A. Shiels)
 - Intel 830MP (ungetestet, sollte aber funktionieren)
 V3.36
 - Intel 830MP getestet, ISA-DMA ok, DMACHK hängt 
   (Dank an Niklas Andersson)
 V3.37
 - VIA Apollo Pro mit Southbridge 586A getestet (Dank an Danijel Mehic)
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.38
 - Intel 860 getestet (Dank an Gary Zinn)
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.39
 - VIA P4X und P4M (ungetestet)
 V3.40
 - SiS 645 getestet (Dank an John Richardson)
 V3.41
 - Intel 845G getestet (Dank an Roland Zauner)
 V3.42
 - nicht veröffentlicht
 V3.43
 -ALi Aladdin II, getestet (Dank an Robert Riebisch und Jack Liu)
 -ALi Aladdin Pro V (ungetestet)
 -SiS 645DX
 V3.44
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.45
 - VIA MVP3 mit Device-ID 597h und South-Bridge 686 (jetzt wirklich...)
 V3.47
 - Intel E7201, E7205
 - Intel 875P (ungetestet)
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.48
 - Intel 865P/865G
 - VIA P4X266 getestet
 V3.49
 - VIA P4N266, P4X333, P4N333, P4X600
 - SiS 651
 V3.50
 - alle AMD K7 and K8 CPUs (Athlons, Durons, Opterons);
    vielen Dank an Sergei Shtylyov und Serg Svetlov; Sergei hatte
     mir 2001 geschrieben wie es funktioniert, aber ich habs nicht geglaubt :-(
    Von Serg habe ich jetzt funktionierenden Code bekommen :-)
 V3.51
 - Intel 855xx getestet
 V3.53
 - Intel E7500 (getestet)
 - VIA Apollo PLE133 (getestet)
 - SiS660,661,662,663 (ungetestet, eigenartige Berichte:
    RAM da, aber keine UMBs, mit /I=CC00-xxxx gehts...)
 - Erweiterte Liste nicht unterstützer Chipsätze
 - neue Version von DMACHK (friert nicht mehr ein)
 V3.54a
 - funktioniert mit VMware auf AMD K7 (VMware simuliert
    immer einen Intel-Chipsatz)
 V3.55
 - Intel 848P
 V3.56
 - Belegten Speicher von 240 auf 208 Bytes reduziert (so wie mit Vers. vor 3.x)
    (so wie mit Versionen vor 3.x - Dank an Nagatoshi Uehara)
 V3.60
 - 4K statt 16K-Blöcke auf AMD K7+K8 (Athlon/Opteron/Duron/Sempron) CPUs
    vielen Dank an Nagatoshi Uehara - er hat den entscheidenden Fehler
    in den 3.57betas gefunden
 - Belegten Speicher von 208 auf 160 Bytes reduziert - nochmal Dank an Nagatoshi Uehara)
 - Intel 915, 925
 V3.61
 - internen Fehler (RAM-Initialisierung) behoben (Dank an Nagatoshi Uehara)
 V3.62
 - Fehler beim Laden ohne HIMEM.SYS behoben (Dank an Robert Riebisch)
 - VIA EPIA-M getestet
 V3.63
 - i430FX funktioniert wieder
 V3.64
 - Suche nach freien Bereichen weniger tolerant
 - Intel 915GM, 7520, 7350
 - VIA PT880, PM880
 - SIS 655
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.65
 - Intel 945
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.66
 - Paramter /S zum Übergehen der Meldung 'Der Chipsatz ist unbekannt'
 - Intel 945GM, 955
 - Intel 7210, 7221, 7230, 7525
 - ein paar VIA P4 Chipsätze (ungetestet, funktionieren warscheinlich nicht)
 - SiS 656
 - ALi i1 CyberBlade (ungetestet)
 - ALi M1644 (ungetestet)
 V3.67
 - Intel 975
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.70
 - schreibt UMB-Tabelle für QXHIMEM wenn kein HIMEM gefunden wurde
 - neue Chipsatz-Erkennungs-Routine
 - Intel 965
 V3.71
 - Intel 946, 965M
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.72
 - Intel G/P 31, 33, 35
 V3.73
 - einige ALi-Chipsätze nicht mehr 'ungetestest'
 V3.74
 - Intel 945GME
 - Intel Q33, Q35, 3100 (funktionieren mglw. nicht wegen 'Trusted Platform' Funktionen)
 V3.75
 - Intel X38
 V3.76
 - Intel 4 series
 V3.77
 - SiS 671
 V3.78
 - Intel GM45
 V3.79
 - Intel Q4 Series
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.80
 - Intel X58 Chipsatz als 'nicht unterstützt' eingetragen (Speichercontroller sitzt in der Core i7 CPU)
 V3.81
 - Erweiterte Liste nicht unterstützer Chipsätze
 V3.83
 - Intel 5400, 7300
 - VIA CX700, VX800, VX820, VX855, VX875, VX900
 - möglicherweise einige Core i3/i5/i7 CPUs
 V3.84
 - Intel Core 3rd Gen CPUs
 V3.85
 - Intel Core 4th Gen CPUs
 
  | 
 | 
 
 |   | 
  | 
 
 
 
|   | 
Konditionen und Download | 
 
 
 
Dieser UMBPCI
basiert auf dem Quelltext,
den die c't 1995 veröffentlicht hat. Der sollte mit Intel-Chipsätzen
bis zum 430FX funktionieren, wobei genau der nicht funktionierte und die
Bugfixes aus 2/96 haben es nie bis auf den Heise-Server geschafft und sind
auch die letzte Erwähnug von UMBPCI in der c't. Auch Andreas Stiller
hatte UMBPCI unter dem Namen CTUMB.EXE weiterentwickelt. Den gab es eine Weile
auf der c't Sysinfo-Disk, an die man als normal-sterblicher c't-Alt-Abonnent
nicht so einfach herankam. Die letzte Version, die ich kenne ist V1.4, die
Intel-Chipsätze bis zum 440LX und VIA-Chipsätze bis zum VP2 kennt. Sie macht
die UMBs auf Pentium2/3-Maschinen nicht cacheable und ist wohl auch etwas buggy.
Dieser UMBPCI jedenfalls ist Freeware.
 
Download: 
http://www.uwe-sieber.de/files/umbpci.zip
 
 
Den Quelltext gibts auf Anfrage.
 
Bitte keine Kopien an anderer Stelle zum Download stellen. 
Wenn's unbedingt sein muß, bitte ständig dafür sorgen, dass es die aktuelle Version ist.
 
  | 
 | 
 
 |   | 
  | 
 
 
 
|   | 
Pläne | 
 
 
 Ein paar Sachen wollte ich eigentlich noch verwirklichen, im Moment habe ich aber
weder Zeit noch Lust:
 
- /X Parameter, um Bereiche bei der Suche auszuschließen
 
- /M Bei nicht unterstützten Chipsätzen trotzdem nach nutzbarem Speicher suchen
 
 
 | 
 | 
 
  | 
  | 
 
 
 
 
  
Counter seit 02/1998
 
 
  
letzte Änderung: 24.06.2013
 Uwe Sieber
 
Home: http://www.uwe-sieber.de/deutsch.html
  
  | 
   |