Bir DMA denetleyicisi nasıl çalışır?


14

Bölüm 5.1.4 Modern İşletim Sistemlerinde Doğrudan Bellek Erişimi, Andrew S. Tanenbaum, Herbert Bos, 2014 ,

Açıklamayı basitleştirmek için, CPU'nun tüm cihazlara ve belleğe Şekil 5-4'te gösterildiği gibi CPU'yu, belleği ve G / Ç cihazlarını bağlayan tek bir sistem veri yolu üzerinden eriştiğini varsayıyoruz.

resim açıklamasını buraya girin

  1. DMA'nın nasıl çalıştığını açıklamak için, önce DMA kullanılmadığında disk okumalarının nasıl gerçekleştiğine bakalım.

    • İlk olarak disk denetleyicisi tüm bloğu denetleyicinin dahili arabelleğine gelinceye kadar bloğu (bir veya daha fazla sektör) sürücüden seri olarak yavaş yavaş okur.
    • Sonra, hiçbir okuma hatası oluşmadığını doğrulamak için sağlama toplamını hesaplar. Ardından denetleyici kesintiye neden olur. İşletim sistemi çalışmaya başladığında, her bir yineleme bir denetleyici aygıt kaydından bir bayt veya kelime okuyarak ve ana bellekte saklayarak , bir bloğu yürüterek denetleyicinin arabelleğinden bir bayt veya bir kelimeyi bir kerede disk bloğunu okuyabilir .

    S: ikinci adımda,

    • " denetleyicinin arabelleğinden " veriler ana belleğe aktarılmıyor mu? Neden hem " denetleyicinin arabelleğinden " hem de " denetleyici cihaz kaydından " diyor?

    • ikinci adımda, kontrolör cpu kesintiye uğratmadan ve OS'yi tekrar içermeden veriyi tampondan ana belleğe aktarabilir mi?

  2. DMA kullanıldığında, prosedür farklıdır.

    • İlk olarak CPU, nereye aktarılacağını bilecek şekilde kayıtlarını ayarlayarak DMA kontrolörünü programlar (Şekil 5-4'teki adım 1).
      Ayrıca disk denetleyicisine, diskten dahili arabelleğine veri okumasını ve sağlama toplamını doğrulamasını bildiren bir komut verir .
    • Disk denetleyicisinin arabelleğinde geçerli veriler olduğunda, DMA başlayabilir. DMA denetleyicisi, veri yolu üzerinden disk denetleyicisine bir okuma isteği göndererek aktarımı başlatır (adım 2). Bu okuma isteği başka herhangi bir okuma isteğine benzer ve disk denetleyicisi CPU'dan mı yoksa bir DMA denetleyicisinden mi geldiğini bilmez (veya önemsemez). Genellikle, yazılacak bellek adresi veri yolunun adres satırlarındadır, bu nedenle disk denetleyicisi bir sonraki sözcüğü dahili ara belleğinden aldığında, nereye yazacağını bilir. Belleğe yazma başka bir standart veri yolu çevrimidir (adım 3).
    • Yazma işlemi tamamlandığında, disk denetleyicisi, veri yolu üzerinden de DMA denetleyicisine bir onay sinyali gönderir (adım 4). DMA denetleyicisi daha sonra kullanılacak bellek adresini artırır ve bayt sayısını azaltır. Bayt sayısı hala 0'dan büyükse, sayım 0'a ulaşana kadar 2'den 4'e kadar olan adımlar tekrarlanır.
    • O zaman, DMA denetleyicisi aktarımın şimdi tamamlandığını bildirmek için CPU'yu keser. İşletim sistemi başladığında, disk bloğunu belleğe kopyalamak zorunda değildir; zaten orada.

    S: ikinci adımda, DMA denetleyicisi disk denetleyicisinden disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını ister. İlk adımda CPU, disk denetleyicisine diskten dahili arabelleğe veri okumasını söyleyen bir komut verir. Aynı zamanda, CPU, disk denetleyicisinin diskten disk denetleyicisinin arabelleğine veri aktarımını bitirdiğinde, disk denetleyicisine disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını söyleyebilir, böylece DMA denetleyicisi disk denetleyicisine disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını mı söyler? (Disk ve ana bellek arasında veri aktarımı için neden bir DMA denetleyicisine ihtiyacımız olduğunu anlayamıyorum, bu yüzden alıntıyı anlamak için önemli bir şeyi kaçırdığımı tahmin ediyorum).

  3. Bir cihazın cihaz kontrolörü cihazı kontrol eder ve cihaz üzerinde işlem gerçekleştirir. Bir DMA denetleyicisi hangi aygıtta işlemleri denetler ve gerçekleştirir?

Teşekkürler!


Anlayışınız, bu ders kitabında açıklanan DMA konseptinden daha modern olan Otobüs Mastering'e dayanıyor gibi görünüyor. Ders kitabındaki DMA kavramı daha ilkeldir.
rwong

Kitabın kullandığı basitleştirilmiş bir model için bir diyagram ekledim.
Tim

Diyagramdaki ok 3 metin açıklamasına uymuyor ... tebrikler. Hangisinin doğru olduğunu belirlemek için 3. adım için veriyolu zamanlama şemasına ihtiyaç duyulacaktır. Daha da önemlisi, 3. adımda veri sinyalini tutmaktan hangi cihazın sorumlu olduğunu bulması gerekir. Disk denetleyicisi önce verileri DMA denetleyicisine gönderir mi, ardından DMA denetleyicisi verileri tekrarlar (kendi voltajını veri yoluna koyarak) ) bellek?
rwong

4. adımdaki "Onay" da şüphelidir. DMA kopyalanacak bayt sayısını zaten bilmiyor mu?
rwong

Nasıl netleştirileceğinden emin değilim. İşletim sistemi ve mimarlık üzerine hangi kitapları okudunuz ya da en iyisi sizce?
Tim

Yanıtlar:


7

Q1

İlk adımda DMA kullanmıyoruz, bu yüzden disk denetleyicisinin içeriği işlemci tarafından parça parça okunur. İşlemci elbette (verilerin gerçekte bir şey için kullanılacağını varsayar ve sadece atılmaz) sistemin belleğinde saklar.

Bu durumda arabellek, sabit disk (denetleyici) üzerindeki bir bellek parçasıdır ve denetleyici cihaz, sabit diskin (denetleyici) kendisinin bir kontrol kaydını kaydeder.

İşletim sistemini (veya başka bir yazılımı) dahil etmemek, bir çeşit DMA işlemi gerektirecektir ve sorunuzun bu bölümünde tartıştığınız metin bölümü DMA kullanmıyor. Yani, hayır, bu durumda böyle olmayacak.

Q2

Bu nedenle, bir DMA denetleyicisinin bütün amacı "aygıtın dahili arabelleğinden ana belleğe bir şeyler depolamak için sıkıcı bir iştir". CPU hem DMA denetleyicisiyle hem de disk cihazıyla çalışacaktır. Disk bunu yapabilirse, bir DMA denetleyicisine gerek kalmaz.

Gerçekten de, modern sistemlerde DMA yeteneği genellikle kontrolör "veri yolu yönetimine" yetenekleri, kontrolör kendisi anlama geldiğini sahiptir anlamda, sabit disk denetleyicisi kendisi yerleşik IS cihaz için DMA denetleyicisi. Bununla birlikte, onlara iki ayrı cihaz olarak bakmak, tüm DMA kavramının anlaşılmasını biraz daha zor hale getirir.

Q3 (tür)

Sabit diski bir şantiyeye teslim edilen tuğla yığını olarak düşünürseniz ve işlemci, evi inşa etmek için tuğla döşeyen duvarcıdır. DMA kontrolörü, tuğlaları tuğla yığınından duvarcı için gerekli olan yere taşıyan işçidir, yani duvarcı ustası tuğla döşemenin asıl işini yapmaya konsantre olabilir (ki daha önce denediyseniz yetenekli bir iştir) kendiniz) ve "getirme ve taşıma" gibi basit işler daha az vasıflı bir işçi tarafından yapılabilir.

Anekdot kanıtı: Diskten belleğe DMA aktarımını ilk öğrendiğimde yaklaşık 1997 ya da daha fazla IDE denetleyicileri DMA kullanmaya başladığında ve IDE'nin DMA yapmasına izin vermek için bir "anakart IDE denetleyicisi" sürücüsü edinmeniz gerektiğinde ve o zaman , sabit diskten okumak CPU zamanının yaklaşık% 6-10'unu alır, burada aynı kurulumdaki DMA CPU zamanının yaklaşık% 1'ini kullanır. O zamandan önce, sadece SCSI disk denetleyicilerine sahip fantezi sistemler DMA kullanırdı.


5

Bu bir cevap değil; yorumlara sığmayacak kadar uzun bir açıklama talebidir.

Herkes bu soruya cevap vermeden önce, tartışılan bilgisayar sistemi mimarisini açıklamak gerekir. Yani:

  • Bu tanımda yer alan veri yolu sistemleri nelerdir?

    • Çoğu bilgisayar sisteminde bir bellek veri yolu vardır.
    • Çoğu bilgisayarda başka tür veri yolu sistemleri de vardır.
  • Disk IO bellek veri yolundan da geçiyor mu?

    • Başka bir deyişle, disk adresler için adres yolu hatlarını ve veri için veri yolu hatlarını kullanıyor mu?
  • Disk denetleyicisi bellek veri yolunu ...

    • Bir bellek veri yolu? Yani, bir bellek yongasıyla konuştuğunu düşünüyor; yani RAS (sıra erişim strobe), CAS (sütun erişim strobe), ...
    • Çok olası değil - bir bellek yongasıyla konuşmak, birinin DRAM zamanlamasına (gecikmeler) göre komut verme konusunda son derece hassas olmasını gerektirir - birkaç saat döngüsü çok erken veya çok geç, veri kaybı meydana gelir.
  • Peki ... disk denetleyicisi veri yolunun "gerçekte" olduğunu düşünüyor?

  • Çoğu bilgisayar sisteminde "Port I / O" adı verilen bir tür IO vardır.

    • Port G / Ç, bellek veriyoluna geri dönebilir veya başka bir özel veri yoluna sahip olabilir.
    • Port I / O'nun ayırt edici özelliği, tek bir (veya önceden tanımlanmış sabit sayıda) veri yolu döngüsünde işleri bitirebilmesidir - DRAM zamanlamalarının tehlikeleri konusunda endişelenmenize gerek yoktur.
  • Daha gelişmiş (yirmi yıl önce beri) sistemlerde, daha yeni veri yolu sistemleri vardır. Örneğin, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...


Şimdi, "tartışılan bilgisayar sistemi" ile ilgili pek çok belirsizlik ortaya çıktığında, sorunuz için neden net bir cevap alamayacağınızı anlayabilirsiniz.

Evet, bunun bir ders kitabından geldiğini biliyorum. Bir kopyanız var. Yapmıyorum. (Evde değil - ofiste bir tane var.) Bu nedenle, bir cevaba ihtiyacınız varsa, bazı diyagramlar göstermeniz ve bilgisayarınızın otobüs sisteminin neye benzediğini açıklamanız gerekecektir.


En alt satırda ise:

  • DMA programlanabilir bir cihazdır. Yani, CPU'nun DMA'ya ne yapması gerektiğini söyleme nihai sorumluluğu vardır . Tabii ki, DMA'nın sistemi devraldığı zaman diliminde, CPU, DMA'nın şovu yürütmesine izin vererek işbirliği yapacak.

  • CPU'nun (ve onu çalıştıran işletim sisteminin) kontrolü altında bir DMA, verilerin disk denetleyicisinden ana belleğe aktarılmasını kolaylaştırmak için bir veya daha fazla veri yolu (çoğul) için kontrolü devralma yeteneğine sahiptir .

  • DMA'nın veri yolunu devraldığı zaman dilimi (çoğul) sırasında, DMA o veri yolu üzerinden komutlar verir - yani her zamanki denetleyicisi yerine, yani DMA CPU'nun işini yapıyormuş gibi yapar.

  • Veri aktarımı iki farklı veriyolu içeriyorsa, DMA bunu farklı veri yoluna yapmak zorunda kalabilir.

  • Bir dizi baytı (kelimeler, vb.) Taşıyabilmek için DMA, kopyalanacak kalan veri miktarını takip etmek için bir döngü sayacı içerir.

  • Ana belleğe yazabilmek için DMA, CPU tarafından programlanabilen bir bellek adres kaydı içerir, böylece CPU DMA'ya verileri nereye yazacağını söyleyebilir.

  • Sistemin veri yolu tasarımına bağlı olarak, DMA DRAM zamanlama döngülerinin korkunç ayrıntılarıyla uğraşmak zorunda kalabilir veya olmayabilir.

  • Bir zamanlar, DMA icat edildikten bir süre sonra, bazı çevresel cihazlar DMA'yı kontrol cihazlarına önceden paketlemeye başlar - buna Bus Mastering denir . Yine de, DMA CPU paketinde, anakartta veya G / Ç kartında oturuyor olsun, nihayetinde CPU'nun kontrolü (programlama) altında olmalıdır, çünkü bir şekilde sistem veriyoluna (çoğul) erişim konusunda müzakere etmelidirler ve ana bellek.

  • Modern bilgisayar sistemleri, DRAM Denetleyici adı verilen özel bir alt sisteme sahiptir. Bir tane varsa, bu DRAM Kontrolörünün DMA'nın işlevselliğini de yerine getireceği neredeyse kesindir, yani programlanabilir bir "bayt kopyalama döngüsü" gibi görünüyor ve yukarıda belirtilen karmaşıklığın tamamı DRAM'ın silikonunun içinde gizlenmiş Denetleyici.


Çok kafa karıştırıcı bulursanız - Ben de kafa karıştırıcı buluyorum - diyagramlara ihtiyacınız olacak. Çok sayıda diyagram. Sistem diyagramları. Otobüs diyagramları. Zamanlama diyagramları. Durum geçiş diyagramları. vb.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.