DMA ???
1 отговора
93 прегледа
Re: DMA ???
Direct Memory Access
DMA ti dawa wuzmozhnost da prehuwrljash danni paralelno, i nezawisimo ot CPU-to. Neshto kato memcpy e - no ne blockira procesora.
Naprimer DMA pri PC-tata se izpolzwa (no ne vinagi) kogato trjabwa da se chete ot hard-diska, ili kogato trjabwa da se prehwurljat texturite kum grafichnata pamet, ili zwukowite danni kum audio-pametta.
Ima DMA kontroleri koito pozwoljawat dori chain-prehwurljane, i imat maluk ezik sus komandi - naprimer - sus edna operatzia (ili maluk kod) mozhe da opishesh prehwurljane na danni ot razlichni mesta i da gi suberesh na edno, ili obratnoto ot edno mjasto da gi razpredelesh na mnogo drugi. Sushto razni DMA API-ta pozwoljawat avtomatichno slice-wane na dannite. Naprimer ako imash dve zajawki - ednata da prehwurli 1MB pamet, drugata 32KB - i wtorata si ja pusnal sled purwata - to pak shte se poluchi blockirane... Ima shemi ili prosti algorithmi pri koito prehwurljaneto na tozi 1MB shte stane na parcheta (da kazhem po 4096 baita) i taka shte se osiguri i prehwurljaneto na tezi drugi 32KB, kakto i na razni drugi zajawki.
Edin problem se pojawjawa - ako CPU-to ima cache (L1,L2) - to trjabwa da se osigurish che pametta otkude/kum kadeto (source/dest) ne e w cache - tuj kato DMA-to ne minawa prez nego (L1 ili L2 ili drugi tam).
tirulirutatuutuu
DMA ti dawa wuzmozhnost da prehuwrljash danni paralelno, i nezawisimo ot CPU-to. Neshto kato memcpy e - no ne blockira procesora.
Naprimer DMA pri PC-tata se izpolzwa (no ne vinagi) kogato trjabwa da se chete ot hard-diska, ili kogato trjabwa da se prehwurljat texturite kum grafichnata pamet, ili zwukowite danni kum audio-pametta.
Ima DMA kontroleri koito pozwoljawat dori chain-prehwurljane, i imat maluk ezik sus komandi - naprimer - sus edna operatzia (ili maluk kod) mozhe da opishesh prehwurljane na danni ot razlichni mesta i da gi suberesh na edno, ili obratnoto ot edno mjasto da gi razpredelesh na mnogo drugi. Sushto razni DMA API-ta pozwoljawat avtomatichno slice-wane na dannite. Naprimer ako imash dve zajawki - ednata da prehwurli 1MB pamet, drugata 32KB - i wtorata si ja pusnal sled purwata - to pak shte se poluchi blockirane... Ima shemi ili prosti algorithmi pri koito prehwurljaneto na tozi 1MB shte stane na parcheta (da kazhem po 4096 baita) i taka shte se osiguri i prehwurljaneto na tezi drugi 32KB, kakto i na razni drugi zajawki.
Edin problem se pojawjawa - ako CPU-to ima cache (L1,L2) - to trjabwa da se osigurish che pametta otkude/kum kadeto (source/dest) ne e w cache - tuj kato DMA-to ne minawa prez nego (L1 ili L2 ili drugi tam).
tirulirutatuutuu