Konvenční paměť RAM je pro procesory dostupná v reál modu. Tato paměť je limitována šířkou sběrnice I8086 tj. 20bity - což představuje 1MB. Rozšíření paměti nad tuto hranici umožňuje adaptér Expanded Memory Specification. Jde o kombinaci hardwarových a softwarových prostředků. Tento adaptér vyhradí v paměti (obvykle od adr 640kB -A0000H do adr 896kB - DFFFFH prostor 4x 16kB, tzv. rám stránky ve kterém nemohou být instalovány žádné jednotky RAM ani ROM. V adaptérech je to provedeno automaticky při instalaci programu. Nelze v ní spouštět aplikace a ani není průběžně adresovaná nad 1MB. Slouží jako odkládací prostor umístěný mimo souvislou paměťovou oblast. Tato oblast je rozdělena po 16kB na stránky. Pro práci s těmito stránkami je určen prostor 64kB v oblasti 640kB až 896kB. Data do této oblasti nejsou ve skutečnosti kopírovány, ale pouze se transformuje adaptérem adresa, takže rozšíření paměti pracuje se stejnou rychlosti (pokud jsou stejné vybavovací doby). V rozšířené (Enhanced EMS) verzi je tento prostor zvětšen z 64kB na 1024kB, tj. na 64 stránek. Aktivace EMS je možná pouze u těch programů, které jsou pro použití EMS speciálně napsány. Poněvadž se zde využívá paměť nad 1MB, je tento režim možný u I80286 a vyšších procesorů pracujících v tzv. protected mode - v chráněném modu. Při práci se tabulkou přepisuje adresa na vymezený prostor, takže se data jeví jako by byla zapsána tomto prostoru, ale ve skutečnosti jsou na svém původním místě a je jen změněna adresace.
Procesor I80386 má integrovaný adaptér- segmentovací i stránkovací mechanismus, který přemění pomocí memory manageru EMM386 s parametrem EMS Extened paměť na expanded.
(PC tunning)
Extended Memory je umístěna od adresy 10000:0000 (1MB) výše. Tuto paměť XMS umí adresovat až procesory typu 286 a výše v protected modu (chráněném režimu). V chráněném režimu se dá takto zpřístupnit až 64MB ( HIMEM.SYS od Microsoftu zpřístupní pouze 16MB). MS DOS vyžaduje práci pouze se základní pamětí. Při využití XMS v protected modu během Windows, Lotus 1-2-3, CAD a pod. je nutné vždy při návratu ke službám DOS přepnut procesor do real modu. Ve virtuálním modu mohou procesory 386 a 486 adresovat prostor až 4GB. Využití tohoto prostoru umožňuje DOS extender.
Dnes se dává přednost rychlejším extended pamětem, neboť přístup k nim se děje po rámcích.
Procesor 286 může v reálném modu adresovat jen pomocí 20 vodičů prostor 1MB. Jeho AB se svými 24 vodiči má ale k dispozici přímo přístupných 16MB paměti. V režimu ochrany pomocí tabulky deskriptorů může využít plné fyzické 24 bitové adresy. V režimu ochrany pak mocí virtuální adresace adresový prostor 1GB. Mechanizmus adresování je realizován pomocí hardwarových segmentových registrů.
extended blocks
1024+64kB
High Memory Area
0FFFFF 1024 kB
ROM BIOS
0F0000H 960kB
BIOS pro intgr MAINBOARD + BIOS pro OS/2 a SETUP
0E0000H
EMS Page 64kB mezi adr 0C000, 0F0000
Frame 64kB Vyrovnávací paměti
0D0000H
adapter ROM+DESK.TAB (ROM pro VGA) UPPER
0C0000H 768kB
VIDEO RAM MEMORY EGA+text, CGA
0B8000H
Monochrom,Accelerátory
0B0000H
EGA+ grafika
0A0000H
Mapované řadiče
9FFF0H 640 kB
transientní část
COMMAND.COM
programy
rezidentní část
COMMAND>COM
rezidentní
programy
![]()
![]()

File Controls Blocks
Disk Buffers
DOS Tables
![]()
MSDOS.SYS cca 3k
700H
BIOS (IO.SYS) 1k (527)
500H
ROM BIOS Tables 271
400H
Interrupts Vectors 1k
0
BOOT sector se natahuje na adr 0000:7C00 kam se předá řízení.
Start systému je na adr 0FFFF:FFF0
Volný prostor UMB
A0000 - CFFFF
D4000 - DFFFF
100000 - FFFFFF
Obsazené Prostory UMB
D0000 - D3FFF
E0000 - FFFFF
je okopírovaná pomalá paměť (např.ROM), která je takto přístupná celou šíří sběrnice.
Některé služby BIOSU počítají s pomalou pamětí a tak použití stínové paměti může vést k potížím. Stínování pamětí dělá Windows nestabilní.
Přístup k extended paměti v protected modu u 286. Adresa v chráněném režimu, stejně jako v reálném, je složena ze dvou 16ti bitových složek. I složka offset má stejnou funkci. Druhá složka má ale jiný význam. Tuto složku nazýváme Segment Selector. Adresa složená ze selektoru a offsetu je virtuální adresa. Selector je 16ti bitové slovo obsahující 13 bitů pro index (8192 kombinací) Descriptor Table- tabulky popisovačů lokálního nebo globálního prostoru. Zbývající bity určují, zda se jedná o globální nebo lokální prostor (TI), a (2bity RPL) určují úroveň oprávnění přístupu k danému segmentu. Tyto bity RPL tedy určují 4 úrovně přístupu k záznamům. Úroveň 0 je označen operační systém, který řídí obvodové funkce mikroprocesoru a spravuje paměť. Některé instrukce - privilegované - mohou pracovat pouze na této úrovni ochrany. Úroveň 1 obsahuje všechny rutiny pro správu systému pomocí OS. Úroveň 2 je určena pro zpracování knihoven, kartoték apod. Úrovní 3 jsou přístupny jen uživatelské programy. Globální prostor je prostor, ve kterém jsou obvykle programy nebo proměnné přístupné více uživatelům. Ochranná funkce tedy zaručuje oddělení systémového a uživatelského software,kontrolu typu dat a oddělení jednotlivých úloh. Ochranné atributy jsou společné pro celý segment. Srovnání probíhá současně s překladem adresy. Lokální prostor je obvykle určen jen pro umísťování jedinečných dat.
Virtuální adresa má tedy 32 bitů a je z ní u 286 vytvářena fyzická 24 bitová adresa.
VIRTUÁLNÍ (logická)ADRESA REÁLNÁ PAMĚŤ
Selektor TI RPL OFFSET
![]()
![]()
15 Index 3 2 1
0 15 0
GDT (LDT) 16MB
1023
16
![]()
![]()
13 24 24
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Lineární adresa
GDTR (fyzická adresa)
![]()
![]()
![]()
báze segmentu
31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 0
![]()
![]()
![]()

![]()
![]()
base 24 = 31 AV seg.lim p DPL S
type base 16 = 23
386 386
![]()
baze limit
TABULKA DESKRIPTORŮ
GDT nebo LDT
Položka tabulky deskriptorů má 8 bytů, které určují 24bitovou začáteční adresu segmentu, jeho délku (16bitů), a přístupová práva 8bitů.
U 32 bitových procesorů je virtuální adresa vytvářená procesorem 48bitová ( 16bitový index(zde descriptor) a 32bitový offset). Tabulka deskriptorů má 1024 položek obsahuje 4bajtovou bázi segmentu, tříbajtovou délku segmentu a atributy přístupu.
Stránkování do Expanded memory v Real modu je pomocí 4 bank v upper memory, které transformují adresu pro EMS. Každá banka zabírá prostor 16kB a určuje adresu zpracovávaného segmentu. Vhodnou volbou interleave lze provádět tuto činnost bez zdržování dekódací.Velikost stránky je 4kB.
U 32 bitových procesorů v protected modu je stránkovací mechanizmus řízen pomocí dvouúrovňové tabulky - stránkovacího adresáře a stránkovací tabulky. Segmentování a stránkování lze použít i současně. Při stránkování lze využít 1M stránek.
Virtuální adresa ( Logická adresa)
![]()
![]()

Adresář Tabulka Offset
![]()
![]()
31
22 12 0
Fyzická

1023 1023
10 10 paměť
stránkový stránkovací
adresář tabulka
12
![]()
![]()
![]()
![]()
20 32
>
![]()
![]()
![]()
![]()
20
![]()
![]()
0 31
0 31 0
20
DBAR
Formát
stránkovací tabulky
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Adresa rámce A V L x x D A 0 0 U R P
31 12 0
Formát
stránkovacího adresáře
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Adresa rámce A V L x 0 0 A 0 0 U R P
31 12 0
kde AVL - volné pro systém. programátora
x - rezerva - musí být 0
D - dirty - zápis
00 - rezerva
A - zápis nebo čteni do str. tabulky nebo paměti
U - user
R - writeable
P - present - tabulka je obsazena (exist. zápis ve fyz. paměti)
Režim V86 se zapíná bitem VM v příznakovém registru. Neexistuje přímo instrukce na ovládání tohoto bitu. Bit se nastavuje z IRET v chráněném režimu při úrovni oprávnění 0. Tento režim nemá žádné ochrany a proto je isolován od chráněného režimu. V režimu VM je úroveň oprávnění 3. při přerušení obslužnou rutinou je režim VM přerušen a činnost se vrací do chráněného režimu, vektor přerušení není čten z adr 000:000 , ale z IDP (interrupt deskrip. table)
Režim V86 může pracovat bez zapnutého stránkování,tj. shodný s 8086, a to pouze pro jeden task. Při zapnutém stránkování je lineární adresa z prostoru do 1MB přiřazena pro každý proces(task) oblast paměti o velikosti 1MB. Tím lze dosáhnout spouštění více procesů současně.
je totožný s Real módem 8086.
umožňuje segmentováni i stránkování paměti.
Logická adresa se skládá z 16bitového segment selektoru (13bitový index+TI+RPL a z 32 bitového offsetu. Každá adresa je zkoumána na přístupová práva. Tato adresa je transformována na lineární adresu sečtením bázové adresy segmentu získané z GDT nebo LDT a offsetu. Z celkového počtu segmentů může být aktivních současně pouze 6. (CS, SS, DS, ES, FS, GS). Lineární adresa je v případě stránkování transformována na fyzickou, jinak je lineární adresa rovná fyzické.
Deskriptor tabulky má 8 bytů. Počáteční adresa tabulek je uložena v speciálním registru GDTR resp. LDTR, IDTR. Každý tento registr má 6 bytů. (4= bázová adresa,2 = limit)
Každý ze segmentových registrů ;má svou 32 bitovou viditelnou část (ovládanou instrukcemi) registrů do které se zapisuje selektor, a 64 bitovou neviditelnou, která se naplní obsahem deskriptoru tabulek (8bytů).
Logická adresa
Selektor TI RPL OFFSET
![]()
![]()
15 Index 3 2 1
0 31 0
GDT


32
![]()
13 32 32
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Lineární adresa
GDTR (fyzická adresa)
![]()
31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 0
![]()
![]()
![]()
![]()
![]()
![]()
![]()

![]()
![]()
base 24 = 31 G D 0 AV seg.lim p DPL S type
base 16 = 23
B L
![]()
base 0 - 15 seg: limit 0 - 15
AVL - uživatelsky softw. Přístupný
BASE - base segmentu
D/B 0 - 16 bitový segment
1 - 32 bitový segment
DPL Přístupová úroveň Deskriptoru (descriptor privilege level)
G Granularity - zrnitost 0 - v bytech
1 - po 4kBytech
LIM segment limit
P segment present ( využitý)
S typ deskriptoru 0 - system, 1 - aplikace
Type 16 typu segmentu: RO,R/W, Executable,atd.
1. Flat Model (jednoduchý model) vhodný pro UNIX, který nepodporuje segmentaci, ale pouze stránkování. Tento model je užívám i u jednoduchých krátkých úloh, které eliminují far-point a jsou prováděny samostatně. Proto každý segment má počáteční adresu 0, a limit 4GB. V rámci segmentu je kód zapisován na vrchol paměti (od 4GB dolů), a data od adresy 0 nahoru. Velmi rychlý mód, protože se nepřepočítává segment.
2. Protected Flat Model vhodný pro nestránkované paměti, protože poskytuje minimum chránění v paměti. Délka segmentu již odpovídá délce použité paměti. Kontroluje délku segmentu a tím zpomaluje chod, ale zároveň chrání před vyjímkou zásahu do prázdné paměti.
3. Multisegment Mode Každý program má svou vlastní tabulku segment descriptorů a vlastní segmenty. Naráz je k dispozici 6 segmentů (volány z CS, ES, SS, DS, FS a GS registru).
Pro GDT a IDT speciální registry GDTR a IDTR obsahují 32 bitovou bázi tabulky a 16ti bitový limit. To znamená, že skutečná délka tabulky je 8*limit-1. Pro čtení a zápis do těchto registrů slouží instrukce SGDT, LGDT, SIDT, LIDT.
Registr LDTR pro LDT má stejnou strukturu jako položka této tabulky. Ovládací instrukce jsou SLDT a LLDT.
Vzhledem k tomu, že paměti mohou dosahovat řádově Gbytů, je nutné lineární adresu převádět ve stránkovacím režimu na fyzickou, a tím tuto velkou paměť simulovat malou pamětí (virtuální paměť).
Při stránkování je převáděna lineární adresa podle dvoustupňových tabulek na fyzickou. Pokud tato tabulka převod neumožní, je vyvolána vyjímka (přerušení), které swapuje stránku z disku za jinou, nepoužívanou stránku v paměti, a pak je vyvolána znovu instrukce, která způsobila vyjímku.
Není li zapnuto stránkování (31.bit -PG registru CR0) pak je lineární adresa považována za fyzickou.
Lineární adresa
![]()
![]()
31
22 12 0
DIR- (adresář) TABLE OFFSET
10bitů 10bitů 12bitů
umožňuje stránkování po 4kB. Vytváření fyzické adresy je shodné s popisem uvedeným výše pro I286.
Formát tabulek je doplněn o další bity.
stránkovací tabulky
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Adresa rámce A V L x x D A C T U W P
31 12 0
Format
stránkovacího adresáře
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Adresa rámce A V L x 0 0 A C T U W P
31 12 0
kde AVL - volné pro systém. programátora
x - rezerva - musí být 0
D - dirty - zápis
00 - délka stránky 00=4kB
A - zápis nebo čteni do str. tabulky nebo paměti
U - user
W - writable
P - present - tabulka je obsazena (exist. zápis ve fyz. paměti)
C - PCD - Cace disable
T - PWT Write Through
Každý segment má svou stránkovací tabulku.
Používá se tam, kde software není psán pro segmentaci. 32bitové procesory nemají bit pro vypnutí segmentace. Stejný efekt má však namapování SS,CS a DS na stejný segment. Pak je k dispozici 4GB lineární paměť.
Při nezapnutém stránkování musí být celý segment uložený v paměti. Při zapnutém stránkování stačí, aby byla v paměti pouze jediná stránka.
Logická adresa
Selektor TI RPL OFFSET
![]()
![]()
15 Index 3 2 1
0 31 0
GDT
32
![]()
13 32 32
![]()
![]()
![]()
![]()
![]()
![]()
Lineární adresa
GDTR ![]()
![]()
![]()

![]()
![]()
Adresář Tabulka Offset
![]()
![]()
31
22 12 0
Fyzická
1023 1023
10
10 paměť
stránkový stránkovací
adresář tabulka
12
![]()
![]()
![]()
![]()
![]()
![]()
![]()
20 32
![]()
![]()
![]()
>
0 31 0 31 0
DBAR
Segmenty mohou být menší než je stránka. Pak při stránkování je zbytečně plýtváno s pamětí (Např. jednobytové semafory).
V chráněném režimu musí fungovat i práce s porty a bránami. Proto pro gate je obdobná tabulka, která je vyvolávána pouze selektorem.
Práce s více tasky je obdobná jako při volání procedur, ale je nutné si zapamatovat více informací.
Procesor neukládá všechny informace do stacku, ale do vyčleněné paměti nazývané Task State Segment.
Procesor
1. přepíná tásky do interruptů a automaticky i zpět.
2. Při přepínání tásků přepíná i LDT.
Task State Segment dynamicky ukládá
· registry
· čítač instrukcí
· selektor pro *Task State Table.
Staticky ukládá (do prostoru vytvořeném při spuštění daného tásku)
· selektor pro task LDT
· CR3
· logickou adresu Stack u pro úroveňń ochrany 0,1,2.
· debbug trap bit
· base adresu mapy I-O povolení a interruptů
Procesor vyhledává v IDT ofset a selector pro GTD k určení adresy obslužné procedury. V IDT hledá adresu, která je osminásobek čísla přerušení (descriptor IDT má opět 8Bytů).
IDT Destination CODE
SEGMENT

![]()
![]()
![]()
![]()
![]()
![]()

Interrupt
offset Procedura
![]()
![]()
![]()
INTERRUPT OR + Přerušení
![]()
![]()
![]()
![]()
![]()
vektor TRAP GATE
![]()
![]()
![]()
![]()
segment selector
![]()
GDT nebo
LDT base

addres
![]()
![]()
![]()
![]()
![]()
Segment
![]()
Descriptor
![]()
![]()
![]()
![]()
![]()
Zásadní myšlenkou virtuálních pamětí je využít levnější sekundární paměti pro účely paměti primární. Sekundární paměť je pro tyto účely rozdělena na rámce -frame, které jsou podle potřeby přesouvány (swap) do operační paměti. V případě, že počet volných stránkových rámců se blíží k nule, procesor automaticky uvolní ty rámce, které nejdéle nepotřeboval. To znamená, že tyto rámce opět uloží na původní místo na disku. Pro uživatele se tak vytváří dojem, že operační paměť má velikost celé sekundární paměti (do 4GB).
Ovladače pro V86: 386MAX, QEMM386, NetRoom, EMM386.
- Extended Memory XMS lze využít u procesorů 286 a vyšších. Využívá se jako RAM disk (ovladač RAMDRIVE.SYS). Ačkoliv procesory mohou adresovat paměť nad 1MB přímo v tzv. protected modu, pro MS DOS je potřeba použít ovladače Extended paměti (XMS), protože operační systém DOS může běžet jen v real modu, to znamená, že všechny procesory emulují 8086.
Ovladačem pro XMS je HIMEM.SYS (verze 2.77 je kompatibilní s WINDOWS V3.0 nikoliv s WINDOWS/386 V2.x), který umožňuje přesunout část OS do High Memory a tam s ním také operovat. Po jeho instalaci OS a tento ovladač zabírají v zákl. paměti prostor 1kB.
Má-li počítat RAM velikosti 1MB, pak 640kB je v základní části a zbytek (384kB) na adrese vyšší než 1MB.
K Expanded Memory - EMS se přistupuje opět pomocí ovladače. Tato paměť je stránkovaná. Vždy 4 stránky po 16kB jsou mapovány v prostoru nad 640KB.
Ovladač EMM386.EXE umožňuje 80386 emulovat expanded Memory (EMS) v Extended Memory (XMS). Nutný pro režim V86. Umožňuje organizaci a využití UMB.
V oblasti UPPER Memory je uložena VRAM, rozšíření BIOSu, ROM BIOS< ROM Basic, shadow ROM.
Záleží na pořadí instalace v CONFIG.SYS
1. HIMEM.SYS - vždy <MDB>první,
2. ovladač EMS (není-li součástí DOSu),
3. ovladač RAMDRIVE.SYS pro XMS,
4. EMM386.EXE ( emuluje EMS z XMS a umožňuje přístup do Upper Memory,
5. ovladače využívající EMS,
6. ovladače pro Upper Memory
7. ostatní ovladače
Operační paměť DRAM na 30 pinových SIMM modulech (max 4MB/modul) jsou nahrazovány 72 Pin moduly (od 4MB). tyto moduly jsou 32bitové.
Další technologie je <MDB>vertical wafer integration.<MD>První produkty - paměť 128MB je očekávána na jaře 1995.
Paměti PCMCIA I (flash) jsou do 128MB.
Nová technologie DRAM: Extended Data Out - EDO - rozšířený výstup dat - hyper-page mode - hyperstránkový režim <MD>urychluje paměti až o 30% tím, že umožňuje, aby jeden cyklus začal dříve než skončí předešlý.
(podrobněji viz RAM.doc)
Synchronní vyrovnávací paměť SRAM burst cache pracující v zřetězeném režimu.
Operační paměť EDO RAM, rychlá s dvojnásobnou rychlostí přístupu. Tato paměť je schopna současně vysílat data a nastavovat další adresu.
Parametry
Efektivní vybavovací doba je díky Refresh asi 1,8 násobně větší. Nejefektivnější je použití vyrovnávací paměti. Jiná možnost zrychlení je nastavení Page Mode, neboli stránkový režim. V rámci jedné stránky matice paměťového moduluje je totiž možné v krátkém sledu data přečíst bez refresh. Řádky několika spojených modulů vytvářejí paměťovou stránku (page) která má 4kB.
PC WORLD 3/95
založené na proteinových molekulách, které mění svůj tvar, pokud jsou vystaveny světlu. Absorpcí zeleného světla se mění struktura molekuly přesunem protonu. Pak pomocí přesně zaměřeného červeného světla, detektor zachytí světlé a tmavé vzorky indikující stav 1 a 0. Tato paměť je vyvíjena od r. 1970 a předpokládá se, že první vzorky o velikosti 24GB se objeví v roce 2003. Tyto paměti jsou rychlé (rychlost mezi RAM a vysokorychlostními pevnými disky). Zápis do paměti je jednoduchý, ale čtení je obtížné. Lze tak sestavit 3-D paměti. Otázkou dnes je ještě jejich životaschopnost.