Bellek eşlemeli G / Ç ve port eşlemeli G / Ç, G / Ç için iki tamamlayıcı yöntemdir.
Bellek Eşlemeli G / Ç
Bellek eşlemeli sistemlerde, G / Ç cihazına belleğin bir parçası gibi erişilir. Load
ve Store
komutlar G / Ç aygıtlarından okumak ve yazmak için, tıpkı hafıza için kullanıldığı gibi yürütülür (port eşlemesinde G / Ç için özel komutlar vardır). Bu, G / Ç aygıtlarının bellekle aynı adres yolunu kullandığı anlamına gelir; bu, CPU'nun adres değerini temel alarak belleği veya G / Ç aygıtını gösterebileceği anlamına gelir . Bu yaklaşım, adres alanında izolasyon gerektirir: yani, G / Ç için ayrılan adreslerin fiziksel belleğe uygun olmaması gerekir.
Aşağıda basit, basit bir bilgisayar sisteminin bir görüntüsü . Durum çağdaş sistemlerde çok daha karmaşık.
Port Haritalı G / Ç
Wikipedia'ya göre
Port eşlemeli G / Ç, genellikle G / Ç işlemi gerçekleştirmek için özel bir CPU talimatı sınıfı kullanır. Bu, Intel mikroişlemcilerinde, IN ve OUT yönergeleriyle bulunur. Bu talimatlar bir G / Ç aygıtına bir ila dört bayt okuyabilir ve yazabilir (çıkış, çıkış, çıkış). G / Ç aygıtları, işlemcinin fiziksel arabiriminde fazladan bir "G / Ç" pimi ile yapılan genel bellekten veya G / Ç'ye adanmış bir veriyolunun tamamıyla ayrı bir adres alanına sahiptir. G / Ç için adres alanı ana bellek için olandan izole edildiğinden, buna bazen yalıtılmış G / Ç olarak da adlandırılır.
Avantaj ve dezavantajlara gelince: çevresel aygıtlar bellekten daha yavaş olduğundan, veri ve adres veriyollarının paylaşılması bellek erişimini yavaşlatabilir. Öte yandan, G / Ç basitliği ile bellek haritalı sistemler, CPU'nun daha az dahili mantık gerektirmesini sağlar ve bu, daha hızlı, daha ucuz, daha az güç tüketen CPU'ların uygulanmasına yardımcı olur. Mantık, RISC sistemlerine benzer: karmaşıklığı azaltmak, örneğin gömülü sistemler için oldukça kullanışlı olan daha özel ve sağlam bir sistem elde etmek.
Aksine (yine Wiki'den):
Port eşlemeli G / Ç komutları genellikle çok sınırlıdır; çoğu zaman yalnızca CPU kayıtları ve G / Ç portları arasında basit yükleme ve saklama işlemleri sağlar; Talimatlar: portu bir CPU register'a oku, sabiti CPU register'a ekle ve sonucu tekrar portuna yaz.
Daha fazla bilgi için bu wiki makalesini okumanızı şiddetle tavsiye ederim.
Sorularınızdan birini cevaplamak için:
Hafızada değilse neye ya da nereye yazıyorum?
Veri yolu üzerinden I / O arayüzünün kayıt defterlerine yazıyorsunuz, daha sonra (hazır olduğunda) verileri gerçek I / O cihazına gönderiyor. Aşağıda örnek bir G / Ç cihaz arayüzünün bir görüntüsü bulunmaktadır.