Bilgisayar Mimarisinde Doğrudan Bellek Erişimi (DMA)

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bir bilgisayar programının çalıştırılması için, bir bilgisayarın birden fazla bileşeninin eşzamanlı çalışmasını gerektirir. Örneğin, İşlemciler - gerekli kontrol bilgilerini, adresleri vb. Sağlamak, otobüsler - bilgileri ve verileri hafızaya ve hafızadan G / Ç cihazlarına aktarmak için… vb. Sistemin ilginç faktörü, işlemci, bellek ve I / O aygıtları arasında bilgi aktarımını işleme biçimi olacaktır. Genellikle işlemciler, aktarımın başlatılmasından hedefteki verilerin depolanmasına kadar tüm veri aktarım sürecini kontrol eder. Bu, işlemciye yük ekler ve çoğu zaman ideal durumda kalarak sistemin verimliliğini düşürür. G / Ç cihazları ile bellek arasındaki veri aktarımını hızlandırmak için, DMA kontrolörü istasyon yöneticisi olarak hareket eder. DMA denetleyicisi, işlemcinin minimum müdahalesiyle verileri aktarır.

DMA Denetleyicisi nedir?

DMA terimi, doğrudan bellek erişimi anlamına gelir. Doğrudan bellek erişimi için kullanılan donanım aygıtına DMA denetleyici denir. DMA kontrolör bir kontrol ünitesidir , I / O cihazının parçası arayüz devresi , işlemciden minimum müdahale ile G / Ç aygıtları ile ana bellek arasında veri bloklarını aktarabilen.




Bilgisayar Mimarisinde DMA Denetleyici Şeması

DMA kontrolörü, veriyolu ve giriş-çıkış cihazları arasında bir arayüz sağlar. İşlemcinin müdahalesi olmadan veri aktarmasına rağmen işlemci tarafından kontrol edilmektedir. İşlemci, başlangıç ​​adresini, veri bloğundaki kelime sayısını ve veri aktarım yönünü göndererek DMA kontrolörünü başlatır. G / Ç aygıtlarından belleğe veya ana bellekten G / Ç aygıtlarına. DMA kontrol cihazına birden fazla harici cihaz bağlanabilir.

Bilgisayar Mimarisinde DMA

Bilgisayar Mimarisinde DMA



DMA kontrolörü, adresler oluşturmak ve aktarım için I / O cihazını seçmek için bir adres birimi içerir. Ayrıca, aktarılan blok sayısının sayımlarını tutmak ve verilerin aktarım yönünü göstermek için kontrol birimini ve veri sayısını içerir. Aktarım tamamlandığında, DMA bir kesinti yükselterek işlemciyi bilgilendirir. DMA kontrolörünün tipik blok şeması aşağıdaki şekilde gösterilmektedir.

DMA Denetleyicisinin Tipik Blok Şeması

DMA Denetleyicisinin Tipik Blok Şeması

DMA Denetleyicisinin Çalışması

DMA denetleyicisinin veri aktarımını yapmak için veri yolunu işlemci ile paylaşması gerekir. Veriyolunu belirli bir zamanda tutan aygıta, veri yolu yöneticisi denir. G / Ç cihazından belleğe veya tam tersi bir aktarım yapılması gerektiğinde, işlemci mevcut programın çalışmasını durdurur. program sayacı, verileri yığın üzerinden taşır ve ardından adres veriyolu üzerinden DMA denetleyicisine bir DMA seçim sinyali gönderir.

DMA kontrolörü serbest ise, veri yolu talep sinyalini yükselterek işlemciden veri yolunun kontrolünü talep eder. İşlemci, veri yolu izin sinyalini yükselterek, veri yolunu denetleyiciye verir, artık DMA denetleyicisi veri yolu yöneticisidir. İşlemci, bellek adreslerini, aktarılacak veri bloklarının sayısını ve veri aktarım yönünü göndererek DMA denetleyicisini başlatır. Veri aktarımı görevini DMA denetleyicisine atadıktan sonra, ideal olarak veri aktarımının tamamlanmasını beklemek yerine, işlemci yığından talimatları aldıktan sonra programın yürütülmesine devam eder.


Bilgisayarda DMA Tarafından DMA Tarafından Verilerin Aktarımı

Bilgisayardaki Verilerin DMA Denetleyicisi Tarafından Aktarılması

DMA denetleyicisi artık veri yollarının tam denetimine sahip ve CPU'dan bağımsız olarak bellek ve G / Ç aygıtlarıyla doğrudan etkileşime girebilir. Veri transferini işlemcinin aldığı kontrol talimatına göre yapar. Veri aktarımının tamamlanmasından sonra, veri yolu talep sinyalini devre dışı bırakır ve CPU, veri yolu izin sinyalini devre dışı bırakır, böylece veri yollarının kontrolünü CPU'ya taşır.

Bir G / Ç cihazı aktarımı başlatmak istediğinde, DMA denetleyicisine, denetleyicinin boş olup olmadığını onayladığı bir DMA istek sinyali gönderir. Daha sonra kontrolör işlemciden veri yolu talebinde bulunur ve veri yolu talep sinyalini yükseltir. Veriyolu onay sinyalini aldıktan sonra, verileri cihazdan aktarır. N kanallı DMA kontrolörü için n sayıda harici cihaz bağlanabilir.

DMA, verileri aşağıdakileri içeren üç modda aktarır.

için) Seri Çekim Modu : Bu modda DMA, veri yollarını yalnızca tüm veri aktarımı tamamlandıktan sonra CPU'ya aktarır. Bu arada, CPU veri yoluna ihtiyaç duyarsa, ideal kalması ve veri aktarımını beklemesi gerekir.

b) Döngü Çalma Modu : Bu modda, DMA her bayt transferinden sonra veri yollarının kontrolünü CPU'ya verir. Sürekli olarak veri yolu kontrolü için bir istek yayınlar, bir baytlık transfer yapar ve veri yolunu geri döndürür. Bu CPU sayesinde, daha yüksek öncelikli görev için bir veri yoluna ihtiyaç duyarsa uzun süre beklemek zorunda kalmaz.

c) Şeffaf Mod: Burada DMA, verileri yalnızca CPU veri yollarının kullanımını gerektirmeyen talimatı yürütürken aktarır.

8237 DMA Denetleyicisi

  • 8237, kanal sayısını artırma esnekliğinin yanı sıra 4 I / O kanalına sahiptir.
  • Her kanal ayrı ayrı programlanabilir ve 64k adres ve veri kapasitesine sahiptir.
  • Zamanlama kontrol bloğu, Program komut kontrol bloğu, Öncelikli Kodlayıcı Bloğu, 8237A'nın üç ana bloğudur.
  • Dahili zamanlama ve harici kontrol sinyalleri, zamanlama kontrol bloğu tarafından çalıştırılır.
  • Mikroişlemci tarafından DMA'ya verilen çeşitli komutların kodu, program komut kontrol bloğu tarafından çözülür.
  • Hangi kanala en yüksek önceliğin verilmesi gerektiği, önceliğe göre belirlenir kodlayıcı bloğu .
    8237A'nın 27 dahili kaydı vardır.

8237A iki döngüde çalışır - İdeal döngü ve aktif döngü, burada her döngü, her biri bir saat periyodundan oluşan 7 ayrı durum içerir.

S0- Denetleyicinin veri yolu için talepte bulunduğu ve işlemciden onay beklediği ilk durum.

S1, S2, S3, S4, gerçek veri transferinin gerçekleştiği 8237A'nın çalışma durumları olarak adlandırılır. Transfer bekleme durumları için daha fazla zaman gerekiyorsa, bu durumlar arasına SW eklenir.

Bellekten belleğe aktarım için bellekten okuma ve belleğe yazma aktarımlarının yapılması gerekir. Tek transfer için sekiz durum gereklidir. S11, S12, S13, S14 aboneliklerine sahip ilk dört durum bellekten okuma aktarımını gerçekleştirir ve sonraki dört S21, S22, S23, S24 belleğe yazma aktarımı içindir.

DMA, hiçbir kanal hizmet talep etmediğinde ve SI durumunu gerçekleştirdiğinde ideal duruma geçer. SI, DMA'nın bir istek alana kadar etkin olmadığı bir durumdur. Bu durumda, DMA, işlemcinin DMA'yı programlayabileceği program durumundadır.

DMA ideal durumda olduğunda ve başka kanal talebi almadığında, işlemciye bir HRQ sinyali çıkarır ve burst modu, döngü çalma modu veya şeffaf mod ile veri aktarımını başlatabileceği Aktif duruma girer.

8237 PinDiagram

8237 Pin Diyagramı

8257 DMA Denetleyicisi

Tek Intel 8212 G / Ç bağlantı noktası aygıtıyla eşleştirildiğinde, 8257 DMA denetleyicisi tam bir 4 kanal oluşturur DMA denetleyicisi . Bir transfer talebi alındığında 8257 kontrolör-

  • İşlemciden sistem veri yolu üzerindeki denetimi alır.
  • En yüksek öncelikli kanala bağlanan çevre birimi onaylandı.
  • Bellek adresinin en önemsiz bitleri, sistem veriyolunun A0-A7 adres hatları üzerinde hareket ettirilir.
  • En anlamlı 8 bit bellek adresinin% 50'si veri hatları üzerinden 8212 I / O portuna sürülür.
  • Çevre birimleri ve adreslenmiş bellek konumları arasında veri aktarımı için uygun kontrol sinyallerini üretir.
  • Belirtilen bayt sayısı aktarıldığında, kontrolör terminal sayımı (TC) çıkışını etkinleştirerek CPU aktarımının sonunu bildirir.

Her kanal için 8257 iki 16 bitlik kayıtlar - 1) DMA adres kaydı ve 2) Bir kanal etkinleştirilmeden önce başlatılması gereken terminal sayısı kaydı. Erişilecek ilk hafıza konumunun adresi DMA adres kaydına yüklenir. Terminal sayım yazmacına yüklenen değerin alt sıra 14 biti, Terminal sayım çıktısının etkinleştirilmesinden önceki DMA döngülerinin sayısını eksi bir gösterir. Bir kanal için işlem türü, Terminal sayım kaydının en önemli iki biti ile gösterilir.

8257 Pin Diyagramı

8257 Pin Diyagramı

DMA Denetleyicisinin Avantajları ve Dezavantajları

DMA denetleyicisinin avantajları ve dezavantajları aşağıdakileri içerir.

Avantajları

  • DMA, CPU'nun katılımını atlayarak bellek işlemlerini hızlandırır.
  • CPU üzerindeki aşırı iş yükü azalır.
  • Her aktarım için yalnızca birkaç saat döngüsü gereklidir

Dezavantajları

  • Veri aktarımı için DMA kullanıldığında, önbellek tutarlılığı sorunu görülebilir.
  • Sistemin fiyatını yükseltir.

DMA ( Doğrudan bellek erişimi ) denetleyici grafik kartlarında, ağ kartlarında, ses kartlarında vb. kullanılıyor… DMA, çok çekirdekli işlemcilerde yonga içi aktarım için de kullanılıyor. Üç modundan birinde çalışan DMA, işlemcinin yükünü önemli ölçüde azaltabilir. DMA'nın hangi modlarında çalıştınız? Düşündüğünüz modlardan hangisi daha etkili?