Térképregisztrálások

A DMA-t végrehajtó illesztőprogramok három különböző címteret használnak, az alábbi ábrán látható módon.

fizikai, logikai és virtuális címleképezések.

Bármely Windows-platformon az illesztőprogramnak hozzáférése van a processzor által támogatott teljes virtuális címtérhez. Egy 32 bites processzoron a virtuális címtér négy gigabájtot jelöl. A CPU a virtuális címtérben lévő címeket laptábla használatával lefordítja a rendszer fizikai címterében lévő címekre. Minden laptáblabejegyzés (PTE) egy virtuális memóriaoldalt képez le egy fizikai memória lapjára, ami szükség esetén lapozási műveletet eredményez. Az MDL (memórialeírók listája) hasonló leképezést biztosít az illesztőprogram DMA-műveleteihez társított pufferhez.

Az eszközök különböző mértékben férnek hozzá a rendszer teljes virtuális címteréhez. Az eszközök a logikai (eszköz-) címtérben lévő címeket használják. Minden HAL térkép-regisztereket használ, hogy egy eszköz vagy logikai címet fizikai címmé (egy fizikai RAM-beli helyre) alakítson át. Az eszköz hardvere esetében a térképregisztrálások ugyanazt a funkciót hajtják végre, amelyet az MDL (és az oldaltábla) a szoftver (illesztőprogramok) esetében végez: a címeket fizikai memóriába fordítják le.

Mivel ezek a címterek külön vannak megcímezve, az illesztőprogramok nem használhatnak mutatót a virtuális címtérben a fizikai memória egy helyének kezeléséhez, és fordítva. Az illesztőnek először fizikai címre kell lefordítania a virtuális címet. Hasonlóképpen, az eszköz nem használhat logikai címet a fizikai memória közvetlen eléréséhez. Az eszköznek először le kell fordítania a címet.

A HAL-nak olyan adapterobjektumokat kell beállítania, amelyek támogatják a DMA-t a különböző számítógépeken futó DMA-eszközökhöz és I/O-buszokhoz. A legtöbb ISA DMA-vezérlőnek, alárendelt eszköznek és busz-főeszköznek például nincs elegendő címvonala ahhoz, hogy hozzáférjen egy 32 bites processzor teljes négy gigabájtos fizikai címteréhez (vagy egy 36 bites PAE módban futó x86 processzor 64 gigabájtos rendszer fizikai címéhez). Ezzel szemben a PCI DMA-eszközök általában több mint elegendő címsort használnak a teljes rendszer fizikai címterének eléréséhez a 32 bites processzorokban. Ezért minden HAL megfeleltetést biztosít a DMA-eszközök által elérhető logikai címtartományok és az egyes számítógépek fizikai címtartományai között.

Minden adapterobjektum egy vagy több térképregisztrálóhoz van társítva az átvitt adatok mennyiségétől és a rendelkezésre álló memória mennyiségétől függően. A DMA-átvitelek során a HAL minden térképregisztert arra használ, hogy egy eszköz által elérhető logikai lapot aliasként rendeljen hozzá a processzor fizikai memóriájának egy lapjához. A térképregisztrációs adatbázisok tulajdonképpen pont/gyűjtési támogatást biztosítanak a DMA-t használó illesztőprogramok számára, függetlenül attól, hogy az eszközeik rendelkeznek-e pont/gyűjtési képességekkel.

Az alábbi ábra egy olyan fizikai-logikai címleképezést mutat be egy ISA DMA-eszköz illesztőprogramja számára, amely nem rendelkezik scatter/gather képességekkel.

ISA DMA-eszköz mintájának címleképezése.

Az előző ábrán a következő típusú leképezések láthatók:

  1. Minden térképregiszter egy fizikai címtartományt képez le (folyamatos vonallal jelezve) alacsony sorrendű logikai címekre (szaggatott vonallal jelezve) egy ISA DMA-eszköz esetében.

    Ebben három térképregisztert használnak a rendszer fizikai memóriájában található három lapozott adattartomány hozzárendelésére egy ISA DMA-eszköz alacsonyabb szintű logikai címtartományainak három lap méretű részéhez.

  2. Az ISA-eszköz a leképezett logikai címekkel fér hozzá a rendszermemóriához a DMA-műveletek során.

    Hasonló PCI DMA-eszköz esetén három térképregisztrátort is használna három oldalméretű adattartományhoz. A leképezett logikai címtartományok azonban nem feltétlenül azonosak a megfelelő fizikai címtartományokkal, így a PCI-eszközök logikai címeket is használnának a rendszermemória eléréséhez.

  3. Az MDL minden bejegyzése egy fizikai címhez rendel egy helyet a virtuális címtérben.

Figyelje meg a térképregiszter és az MDL virtuális-fizikai bejegyzése közötti kapcsolatot:

  • Az MDL-ben lévő összes térképregisztrálás és virtuális bejegyzés legfeljebb egy teljes fizikai adatoldalt képez le egy DMA átviteli művelethez.

  • Az MDL-ben lévő minden egyes leképezési regiszter és minden egyes virtuális bejegyzés kevesebb adatot leképezhet, mint egy teljes oldal. Az MDL kezdeti virtuális bejegyzése például megfeleltethető a fizikai oldalhatár eltolásának, ahogyan az a Fizikai, Logikai és Virtuális címleképezések ábrán korábban látható.

  • Minden térképregisztrálás és minden virtuális bejegyzés egy MDL-térképen legalább egy bájt.

Olvasási vagy írási műveletet kérő IRP-ben az Irp-MdlAddress> átlátszatlan illesztőprogramok közötti MDL-ben lévő összes virtuális bejegyzés egy oldalhatárt jelöl a rendszer fizikai memóriájában egy felhasználói puffer számára. Hasonlóképpen, minden egyes további térképregiszter, amelyre egyetlen DMA-átvitelhez szükség van, az eszköz által elérhető logikai címtartomány egy oldalhatárát jelzi, amely megfelel a rendszer fizikai memóriájának.

Minden Windows-platformon minden adapterobjektumhoz tartozik egy vagy több térképregisztráció, amely egy platformspecifikus (és átlátszatlan) alapcímen található. A járművezetők szempontjából a minta ISA DMA eszköz címleképezését szemléltető ábrán látható térkép-regiszter alap egy fogantyú a térkép-regiszterek halmazához, amelyek lehetnek hardverregiszterek egy chipben, egy rendszer DMA-vezérlőben vagy egy busz-mester adapterben, vagy akár a rendszermemóriában HAL által létrehozott virtuális regiszterek.

Az adapterobjektumokkal elérhető térképregisztrálások száma eltérő lehet a különböző eszközök és Windows-platformok esetében. A HAL például több térképregisztrációs funkciót is elérhetővé tehet a rendszer DMA-t használó illesztőprogramok számára bizonyos platformokon, mint más platformokon, mivel a különböző Windows-platformok DMA-vezérlői különböző képességekkel rendelkeznek.