Extended a expanded memory

EMS a XMS

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ů.

Rozdělení paměti

 

 

 

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

Stínová paměť

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í.


 

 

Adresování v protected modu

 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.


 

 

Segmentace

 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í

 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 virtuální 8086

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ě.

Adresace u pentia

Real mode

je totožný  s Real módem 8086.

 

Protected mode

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.

Modely segmentace paměti

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).

Registry pro tabulky deskriptorů

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.

Stránkování

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

 

Kombinace segmentace a stránkování

Každý segment má svou stránkovací tabulku.

Flat model

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ěť.

 

Segment obsahující více stránek

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

 

 

Stránka obsahující více segmentů

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).

 

Gate Descriptors

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.

 

 

Protected multitasking Mode

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ů

 

 

Přerušení v protected modu

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

 

  

 

 

 

 


 

Virtuální paměť

 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.

Využití EMS a XMS.

- 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.

 

Pořadí instalace ovladačů.

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ý.

 

 

Typy RAM

(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

 

Trendy

 

Proteinové paměti

 

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.