DMA (Direct Memory Access: Direkt Bellek Erişimi) belleğe veri aktarımını ve bellekten veri okumayı; Merkezi İşlem Birimi’ni veri transferi işleminde devre dışı bırakarak, sistemin çalışmasını hızlandıran ve işlemci yükünü azaltan bir yöntemdir.
Normal şartlardan bellekten(/belleğe) veri okumak(/yazmak) istediğimizde, veri ilk önce bellekten(/kaynaktan) okunur ve işlemciye taşınır. İşlemci üzerinden tekrar taşımak istediğimiz adrese; yani aygıta (RAM, HD vb) gönderilir. Buradaki sakınca şudur: Taşımak istediğimiz veride hiçbir değişik yapmasak bile işlemci bu transferlerde etkin rol oynar ve taşınan veri her seferinde işlemciye uğrar. Sistem kaynaklarını bu şekilde kullanmak; fazladan işlem gücü, zaman kaybı ve sistem yavaşlığı olarak sistem performansına yansır. Ayrıca bu taşıma sırasında işlemci yapabileceği diğer işlemleri de yapamaz. Eğer taşıdığımız veriler çok büyükse -örnek olarak veri görüntü kayıt kartından veya ağ kartından geliyorsa- bu işlemler sistemimizin performansını büyük ölçüde yavaşlatır.
Veri transferleri sırasında oluşacak bu negatif etkinin önüne geçmek için; işlemciyi bu akışın içinden çıkarmak ve veri transferi yapmak isteyen aygıta bellek erişimine izin verecek bir yöntem gereklidir. Çeşitli tipleri (mod’ları) olan bu yönteme genel olarak DMA diyoruz. Çalışma mantığını biraz daha açarsak iş akışı şöyle özetlenebilir.
Diyelim ki DMA ile kullanacağımız aygıt video kayıt kartı (frame grabber). Kameradan gelen görüntüleri algılayıp, gerekli işlemleri (filtreleme, analog-dijital çevrim-parlaklık vs) yaptıktan sonra oluşan görüntüyü -640*480 çözünürlük, 256 renk ve saniyede 25 frame ile bir saniyelik veri büyüklüğü 7.3MiB veri transferine eşittir- sistem belleğine atmak için DMA denetleyicinden veri yollarının kontorlünü alır. Bu aşamadan sonra işlemci veri transferlerine karışmaz ve transfer dışında kalan işlemleri yapmaya devam edebilir. Video kayıt kartımız (PCI olduğunu varsayarsak sn 133 MiB veri transferi şansı vardır. Bu da 7.3 MiB’lık veri için 50 ms sürer) görüntüyü belleğe attıktan sonra işlemciyi -genellikle kendine ayrılmış interrupt ile- veri transfer işleminin bittiğine dair uyarır ve veri yolunun kontrolünü bırakır. Bu yöntemle çok büyük veriler işlemcinin yaptığı işe ara vermesine gerek bıraktırmadan taşınabilir. Teorik olarak bu veri transferinin işlemciye yükü %0′dır.
Pratikte görebileceğimiz en iyi örnek ise CD*ROM’u DMA modundan PIO moduna alıp CD’den veri okumaya başladığımız durumdur. Bu durumda işlemci yükü %20′nin üstüne rahatlıkla çıkabilir. DMA’nın Multiword DMA, Ultra-DMA gibi farklı çeşitleri de vardır.
Ekim 9th, 2007 16:20
Merhaba..Yurtdisinda bilgisayar muhendisligi okuyorum.
Bazen daha iyi anlamak istedigim konulari google da turkce olarak arastiyorum.Paylasimlarinizin cok faydasi oluyor.
cok cok tesekkur ederim.
Mayıs 25th, 2008 15:54
ya çok teşekkür ederim ben lise 3 bilişim bölümü okuyorum ve bunlar benim işimi çok yarıyor.
Ekim 13th, 2008 18:53
ben bilişim teknolojileri örencisiyim gercekten paylasımlar chok işime yarıo tesekkür ederim
Kasım 6th, 2008 12:19
paylasimlariniz için tsk ederiz
Aralık 21st, 2008 20:45
ingilizce metinlerle boğuşmaktan gına geliyor anlatımınız çok anlaşılır teşekkürler sınava çalışıyorum beni iki saat metini anlamaya çalışmaktan kurtardınız:)
Ocak 27th, 2009 22:29
Bilgiler için teşekkürler. İşletim Sistemi dersimizde DMA yapısını anlamamıza yardımcı oldu.