Vad är direktminnesåtkomst (DMA) och hur fungerar det? [MiniTool Wiki]
What Is Direct Memory Access
Snabb navigering:
Du kan anta RDMA teknik för att göra det möjligt för datorer i ett nätverk att utbyta data i huvudminnet utan att involvera processor, cache eller operativsystem på någon dator. Men du kan också använda DMA-funktionen för att direkt skicka data från en ansluten enhet till minnet på datorns moderkort. Detta inlägg från MiniTool talar främst om DMA.
Definitionen av direkt minnesåtkomst
Först och främst, vad är direktminnesåtkomst? Direktminnesåtkomst kan förkortas till DMA, vilket är en funktion i datorsystem. Det gör att in / ut-enheter (I / O) kan komma åt huvudminnet i systemet ( slumpmässigt åtkomstminne ), oberoende av den centrala processorenheten (CPU), som påskyndar minnesoperationer.
Dricks: Du kanske är intresserad av det här inlägget - 8 användbara lösningar för att fixa din processor 100% i Windows 10 .
Utan direktminnesåtkomst, när processorn använder programmerade in- / utgångar, är den vanligtvis helt upptagen under hela läs- eller skrivoperationen, så den kan inte utföra andra uppgifter. Med DMA initierar CPU först överföringen, utför sedan andra operationer medan överföringen pågår och får slutligen ett avbrott från DMA-styrenheten (DMAC) när operationen är klar.
Direktminnesåtkomst är användbar när CPU inte kan hålla jämna steg med dataöverföringshastigheten eller när CPU behöver utföra arbete i väntan på relativt långsam I / O-dataöverföring.
Flera hårdvarusystem använder direktminnesåtkomst, till exempel hårddiskstyrenheter, grafikkort, nätverkskort och ljudkort. DMA används också för dataöverföring på chip i processorer med flera kärnor. Jämfört med datorer utan direktminneskanaler kan datorer med DMA-kanaler överföra data mellan enheter med mycket mindre CPU-omkostnader.
Direktminnesåtkomst kan också användas för 'minne till minne' för att kopiera eller flytta data i minnet. Det kan överföra dyra minnesoperationer (som stora kopior eller scatter-samlingsoperationer) från CPU till en dedikerad DMA-motor. DMA är viktigt i nätverks-on-chip och minnesdatorarkitekturer.
Hur fungerar direktminnesåtkomst?
Hur fungerar då direktminnesåtkomst? Standard direktminnesåtkomst (även kallad DMA från tredje part) antar en DMA-styrenhet. DMA-styrenheten kan producera minnesadresser och starta läs- eller skrivcykler för minne. Det täcker flera hårdvaruregister som kan läsas och skrivas av CPU: n.
Dessa register består av ett minnesadressregister, ett byteräkningsregister och ett eller flera styrregister. Beroende på funktionerna som tillhandahålls av Direct Memory Access-styrenheten kan dessa kontrollregister bestämma en kombination av källa, destination, överföringsriktning (läs från eller skriv till I / O-enhet), överföringsenhetens storlek och / eller antalet byte att överföra i en serie.
För att utföra ingångs-, utdata- eller minne-till-minne-operationer initierar värdprocessorn DMA-styrenheten med antalet ord som ska överföras och den minnesadress som ska användas. Därefter kommandon CPU den perifera enheten att börja dataöverföring.
Då erbjuder direktminnesåtkomstkontrollerna adresser och läs / skriv-kontrollinjer till systemminnet. Varje gång en byte av data förbereds för överföring mellan den perifera enheten och minnet, ökar DMA-styrenheten sitt interna adressregister tills ett fullständigt datablock överförs.
Driftlägen
Direct Memory Access fungerar annorlunda i olika driftsätt.
Burst-läge
I burst-läge sänds hela datablocket i en kontinuerlig sekvens. När CPU: n tillåter DMA-styrenheten att få åtkomst till systembussen kommer DMA-styrenheten att överföra alla byte av data i datablocket innan de släpper kontrollen över systembussarna tillbaka till CPU: n, men det kommer att få CPU att lång tid. Detta läge kallas också 'Block Transfer Mode'.
Cykel stjälningsläge
Cykelståläget används i ett system där CPU inte kan inaktiveras under den tid som krävs för burst-överföringsläget. I cykelstjälningsläget får DMA-styrenheten åtkomst till systembussen genom att använda signalerna BR (Bus Request) och BG (Bus Grant), vilka är desamma som burst-läget. Dessa två signaler styr gränssnittet mellan CPU och DMA-styrenhet.
Å ena sidan, i cykelstjälningsläget, är datablockens överföringshastighet inte lika snabb som i burst-läget, men å andra sidan är CPU-inaktivitetstiden inte lika lång som i burst-läget.
Transparent Mode
Det transparenta läget tar längst tid att överföra datablock, men det är också det mest effektiva läget när det gäller systemets totala prestanda. I transparent läge överför Direct Memory Access-kontrollen data endast när CPU: n utför operationer som inte använder systembussarna.
Den största fördelen med transparent läge är att CPU aldrig slutar köra sina program, och direktminnesöverföringar är gratis i termer av tid, medan nackdelen är att hårdvaran behöver bestämma när CPU inte använder systembussarna, vilket kan vara komplicerad. Detta kallas också “dolt DMA-dataöverföringsläge”.