Buraya kadar dış cihazla mikrobilgisayar arasında veri transferine ilişkin iki yöntem incelendi. Programlı G/Ç yöntemi, düşük işlem verimine rağmen, mikroişlemciyi dış cihaza senkronlar. Kesmeli G/Ç yöntemi ise en doğal yöntemdir ve mikroişlemci yalnız istek gelince cevap verir. Bu yöntem büyük yazılım olmadan, mikroişlemciyi en verimli biçimde kullanır. Programlı G/Ç yöntemine göre daha kısa cevap süresine sahiptir, ama veri transfer oranı yine düşüktür. Bunun üç sebebi vardır.
1. CPU kesme isteğini algıladığı zaman, program sayıcı içeriğinin korunması ve kesmenin onaylanması için bazı mikroemirler koşar. Fırın sıcaklığı denetimi örneğinde olduğu gibi, eğer her sıcaklık verisi için bu işlemin yapıldığını ve bu veri transferinin çok sık tekrarlanıldığı varsayılırsa, bu tür işlemler CPU’nun oldukça uzun zamanını alır.
2. Fırın örneğinde olduğu gibi, kesme servis programı verileri dış cihazdan mikrobilgisayara transfer edecekse, veri sayıcıya bellek adresini yükleyen, G/Ç kapısından akümülatöre veri taşıyan, ve daha sonra veri sayıcı ile adreslenen bellek alanına akümülatör içeriğini saklayan emirler içerir.
3. Birinci maddede anlatılanların tersine uygulanmasını, yani CPU kaydedici içeriklerinin yığından çağrılmasını gerektirir.
Bu kadar çok işlemin örneğin bir baytlık bilginin transferi için yapılması, çok sayıda CPU saat periyodunu alacaktır. Veri transferini bir veya birkaç saat periyodunda gerçekleyebilecek başka bir yöntem olmalıdır.
Veri transferinde kullanılan üçüncü yöntem doğrudan bellek erişimidir (direct memory access). DMA kullanıldığı zaman, dış cihaz mikroişlemciye değil ana belleğe senkronlanır. Bellek erişim süresi çok kısa olduğundan, transfer oranı çok yüksek olabilir.
DMA kavramını anlayabilmek için, veri transferinde gerçek darboğazın mikroişlemcinin kendisi olduğu bilinmelidir. Fınn örneğinde, her veri transferinde CPU’nun yaptığı iş veri bellek adresini güncelleştirmek, yani bir artırmaktır. Bu kadar basit iş için CPU’nun aracı olmasına gerek yoktur.
DMA yönteminde CPU dışlanarak dış cihazın ana belleğe erişimine izin verilir, yani doğrudan bellek erişimi yapılır. Eğer bellek her 200ns de yeni bir bayt alabiliyor veya verebiliyorsa, veri transfer oranı 5 milyon bayt/sn değerine yükselmiş olur.
G/Ç kapılan ile bellek arasında veri taşıma görevi yapan yeni bir lojik kurulacaktır. DMA denetleyici adını alan bu yeni lojik görevini, CPU lojiğini bastmp uygun veri transferini sağlayacak işaret dizisini yaratarak yapar.
CPU bir saat işareti ile sürüldüğünden, geçici olarak CPU lojiğini bastırmak kolaydır. Saat işaretini durdurarak CPU susturulabilir. Bu amaçla Şekil 5.33’te gösterildiği gibi, CPU’nun denetim yoluna yeni iki hat ilave edilecektir, bunlar BUSRQ yol isteme hattı ve BUSAKyol onaylama hattıdır. El sıkışma hatlan sadece CPU ile DMAC arasında değil aynı zamanda DMA denetleyici (DMAC) ile dış cihaz arasında da olmalıdır. Dış cihaz MEŞGUL/HAZIR bayrağını kullanarak DMA denetleyiciye DMARQ hattı üzerinden veri transfer isteğini gönderir. DMA denetleyici dış cihazın bu isteğini BUSRQ hattını aktif yaparak CPU’ya iletir. CPU ise mevcut makina periyodunu tamamladıktan sonra BUSAK hattını aktif yaparak bu yol isteğine cevap verir. CPU aynı zamanda veri, adres, ve denetim yollarını yüksek-Z durumuna sokar. DMA denetleyici bu durumu DMACK hattını aktif yaparak dış cihaza bildirir.
Şimdi bellek ve G/Ç cihazları kendilerini DMA denetleyici ile yüzleşmiş olarak bulur. İki sınıf DMA vardır. Ardışık DMA çalışmada DMA denetleyici okuma işlemi yaparak veriyi DMAC’a getirir. Daha sonra yazma işlemi yapılarak bu veri G/Ç kapısına transfer edilir. G/Ç kapısından okuyup belleğe yazma şeklinde tersine bir çalışma da mümkündür.
1. CPU kesme isteğini algıladığı zaman, program sayıcı içeriğinin korunması ve kesmenin onaylanması için bazı mikroemirler koşar. Fırın sıcaklığı denetimi örneğinde olduğu gibi, eğer her sıcaklık verisi için bu işlemin yapıldığını ve bu veri transferinin çok sık tekrarlanıldığı varsayılırsa, bu tür işlemler CPU’nun oldukça uzun zamanını alır.
2. Fırın örneğinde olduğu gibi, kesme servis programı verileri dış cihazdan mikrobilgisayara transfer edecekse, veri sayıcıya bellek adresini yükleyen, G/Ç kapısından akümülatöre veri taşıyan, ve daha sonra veri sayıcı ile adreslenen bellek alanına akümülatör içeriğini saklayan emirler içerir.
3. Birinci maddede anlatılanların tersine uygulanmasını, yani CPU kaydedici içeriklerinin yığından çağrılmasını gerektirir.
Bu kadar çok işlemin örneğin bir baytlık bilginin transferi için yapılması, çok sayıda CPU saat periyodunu alacaktır. Veri transferini bir veya birkaç saat periyodunda gerçekleyebilecek başka bir yöntem olmalıdır.
Veri transferinde kullanılan üçüncü yöntem doğrudan bellek erişimidir (direct memory access). DMA kullanıldığı zaman, dış cihaz mikroişlemciye değil ana belleğe senkronlanır. Bellek erişim süresi çok kısa olduğundan, transfer oranı çok yüksek olabilir.
DMA kavramını anlayabilmek için, veri transferinde gerçek darboğazın mikroişlemcinin kendisi olduğu bilinmelidir. Fınn örneğinde, her veri transferinde CPU’nun yaptığı iş veri bellek adresini güncelleştirmek, yani bir artırmaktır. Bu kadar basit iş için CPU’nun aracı olmasına gerek yoktur.
DMA yönteminde CPU dışlanarak dış cihazın ana belleğe erişimine izin verilir, yani doğrudan bellek erişimi yapılır. Eğer bellek her 200ns de yeni bir bayt alabiliyor veya verebiliyorsa, veri transfer oranı 5 milyon bayt/sn değerine yükselmiş olur.
G/Ç kapılan ile bellek arasında veri taşıma görevi yapan yeni bir lojik kurulacaktır. DMA denetleyici adını alan bu yeni lojik görevini, CPU lojiğini bastmp uygun veri transferini sağlayacak işaret dizisini yaratarak yapar.
CPU bir saat işareti ile sürüldüğünden, geçici olarak CPU lojiğini bastırmak kolaydır. Saat işaretini durdurarak CPU susturulabilir. Bu amaçla Şekil 5.33’te gösterildiği gibi, CPU’nun denetim yoluna yeni iki hat ilave edilecektir, bunlar BUSRQ yol isteme hattı ve BUSAKyol onaylama hattıdır. El sıkışma hatlan sadece CPU ile DMAC arasında değil aynı zamanda DMA denetleyici (DMAC) ile dış cihaz arasında da olmalıdır. Dış cihaz MEŞGUL/HAZIR bayrağını kullanarak DMA denetleyiciye DMARQ hattı üzerinden veri transfer isteğini gönderir. DMA denetleyici dış cihazın bu isteğini BUSRQ hattını aktif yaparak CPU’ya iletir. CPU ise mevcut makina periyodunu tamamladıktan sonra BUSAK hattını aktif yaparak bu yol isteğine cevap verir. CPU aynı zamanda veri, adres, ve denetim yollarını yüksek-Z durumuna sokar. DMA denetleyici bu durumu DMACK hattını aktif yaparak dış cihaza bildirir.
Şimdi bellek ve G/Ç cihazları kendilerini DMA denetleyici ile yüzleşmiş olarak bulur. İki sınıf DMA vardır. Ardışık DMA çalışmada DMA denetleyici okuma işlemi yaparak veriyi DMAC’a getirir. Daha sonra yazma işlemi yapılarak bu veri G/Ç kapısına transfer edilir. G/Ç kapısından okuyup belleğe yazma şeklinde tersine bir çalışma da mümkündür.