GİRİŞ-ÇIKIŞ (INPUT / OUTPUT) ORGANİZASYONU GİRİŞ / ÇIKIŞ ARA YÜZEYİ (I/O ARA YÜZEYİ) G/Ç ara yüzeyi bilgisayarda bulunan bilgilerin dış G/Ç aletleri arasında aktarmanın yapılması için bir yöntem sunar. Bilgisayara bağlanan çevre aletleri MİB ne bağlanmaları ve onunla haberleşmeleri için özel haberleşme bağlantısına gerek duyarlar. Bu bağlantının amacı merkezi bilgisayar ile her bir çevre aleti arasındaki farkların ayrı ayrı çözülmesi ve giderilmesidir. En büyük farklar şunlardır. 1. Çevre aletleri elektromekanik ve elektromanyetik aletlerdir. MİB (CPU) ve bellek ise elektronik aletlerdir. Bu yüzden çalışma şekilleri çok farklıdır. Sinyal değerlerinin dönüştürülmesi gerekebilir. 2. Çevre aletinin aktarım oranı MİB nin aktarım oranından çok yavaştır. Bu yüzden eş zamanlama mekanizması gerekir. 3. Veri kodları ve biçimleri çevre aletlerde farklı, MİB ve bellekte farklıdır. 4. Çevre aletlerin her birinin çalışma kipleri birbirinden farklıdır. Bu yüzden her biri birbirlerinin çalışmalarını bozmasın diye denetlenir. Bu farkları ortadan kaldırmak için MİB ile çevre aletleri arasında özel donanımlar bulunur. Bu donanım G/Ç aktarımlarını yönetir ve eş zamanlı yapar. Bu bileşenlere ara yüzey birimleri adı verilir. Bunlar işlemci veri yolu ile çevre aleti arasında aracılık yapar ve ayrıca her bir çevre aletinin kendi kontrol birimi vardır. Bu birim çevre aleti içindeki işlemleri denetler. G/Ç Veri Yolu ve Ara yüzey Modülleri Şekil 1. G/Ç aletleri ile G/Ç veri yolunun (bus) bağlantısı 1
G/Ç veri yolu veri hatları, adres hatları ve denetim hatlarından oluşur. Her ara yüzey adres tellerinden aldığı adresi çözer ve denetim sinyali yardımıyla bunu icra eder (veya icra edilir hale getirir). Ayrıca çevre aletleri denetim birimlerine sinyaller gönderir. Aynı zamanda veri akışını senkronize eder ve işlemci ile çevre aleti arasındaki aktarımı yönetir. Denetim birimler çevre aletinden ayrı veya onunla bütünleşik olabilir. İşlemciden gelen G/Ç veri yolu (I / O Bus), çevre aletinin ara yüzlerine bağlanmıştır. Bu birimle haberleşmek için, işlemci aletin adresini adres veri yoluna yazar. Her ara yüzeyde bir adres çözücü vardır. Ara yüzey adres veri yolunda kendi adresini görünce, kendi denetiminde olan aletle veri yolu hatları arasını aktif hale getirir. Adresin, adres veri yoluna yazılmasıyla birlikte işlemci denetim hatlarına bir fonksiyon yazar. Seçilen ara yüzey bu fonksiyonu alır ve bunu icra eder. Bu fonksiyon koduna G/Ç komutu (I / O Komutu) denir. Ara yüze gönderilen 4 tip komut vardır. Bunlar; 1. Denetim (Kontrol) Komutu; Çevre aletinin aktif hale getirilmesi ve ona ne iş yapacağının bildirilmesi işidir. Komutlar çevre birimlere göre değişiklik gösterir. 2. Durum (Status) Komutu; Çevre aleti ve ara yüzeydeki muhtelif durumları test etmek için kullanılır. Örneğin bilgisayar aktarım yapmadan önce çevre aletinin durumunu bilmek isteyebilir. Aktarım sırasında bir veya fazla hata olabilir. Hatalar ara yüzey tarafından bulunmaktadır. Bu hatalar durum bitlerinin set edilmesiyle belli olur. İşlemci bu bitleri belli aralıklarla okur. 3. Veri Çıkış (Data Output) Komutu; Veri yolu içindeki verinin ara yüzey yazaçlarından birine aktarılmasını sağlar. 4. Veri Giriş (Data Input) Komutu; Veri çıkış komutunun tersidir. Bu komutta ara yüzey çevre aletinden veri alır ve onu kendi buffer yazacına yazar. İşlemci, durum komutuyla verinin hazır olup olmadığına bakar, sonra veri giriş komutu gönderir. Ara yüzey veriyi veri hatlarına aktarır. İşlemci G/Ç ile haberleşmenin yanı sıra bellek ile de haberleşmek durumundadır. Tıpkı G/Ç veri yolu gibi, bellek veri yolu da veri, adres ve oku/yaz denetim hatlarından oluşur. Bellek ve G/Ç ile haberleşmede kullanılan veri yolları için 3 yol vardır. 1. Bellek ve G/Ç için ayrı 2 veri yolu kullanmak. 2. Tek bir veri yolu kullanmak fakat denetim hatlarının farklı olması. 3. Hepsinin ortak olması. 2
1. Bellek ve G/Ç için ayrı 2 veri yolu kullanmak: Bu yöntemde veriler, adresler ve denetimler ayrı ayrıdır. Birisi bellek diğeri G/Ç içindir. Bu olay, G/Ç işlemi için ayrı bir işlemcisi bulunan bilgisayarlarda vardır. Bellek, MİB ve GÇİ (G/Ç işlemcisi) ile bellek veri yolu aracılığıyla haberleşir. GÇİ aynı zamanda bütün G/Ç birimleriyle ayrı ve bağımsız bir veri yolu ile haberleşir. GÇİ yönteminin amacı çevre aletleriyle belleğin bağımsız bir biçimde haberleşebilmesi ve verilerin aktarılabilmesidir. Bu yönteme data channel da denmektedir. 2. Tek bir veri yolu kullanmak fakat denetim hatlarının farklı olması (Yalıtılmışa Karşı Bellek- Haritalanmış G/Ç Memory-Mapped I /O): Birçok bilgisayar, bellek veya G/Ç ile işlemci arasında ortak veri yolu kullanılır. Bellek ve G/Ç aktarımları arasındaki ayırım ayrı oku/yaz hatları yardımıyla olur. MİB, verdiği adresin bir bellek kelimesini mi yoksa bir G/Ç ara yüzeyi mi gösterdiğini mümkün oku/yaz hatlarını seçerek belirtir. G/Ç oku ve yaz hatları sadece G/Ç aktarımı sırasında aktif tutulur. Diğer durumlarda disable (devre dışı) durumundadır. Bu yönteme G/Ç adreslerini bellek adreslerinden ayırdığı için ortak veri yolunda(bus) yalıtım yöntemi de denir. 3. Hepsinin ortak olması (Bellek Haritalanmış-Memory Mapped): Bu yöntem, bellek ve G/Ç adreslerini birbirinden yalıtır, bu yüzden bunlar birbirinden etkilenmez. Bir tek oku ve bir tek yaz hattı bulunmaktadır. Dolayısıyla bellekle, G/Ç adresleri arasında bir ayırım yapılmaz. Buna bellek-haritalanmış G/Ç adı verilir. Bu yöntemde bellek ile çevre birimler için farklı adresler kullanılır. Özel I/O instruction ları yoktur. CPU, çevre birimleri de bellekmiş gibi görerek bellek için kullandığı instruction ları I/O arayüzlerindeki verileri okumak ya da yazmak için kullanır. 3
G/Ç Ara Yüzey Örneği: Şekil 2. G/Ç ara yüzey birim örneği Arayüzeyde CPU dan ya da çevre birimlerden gelen bilgilerin yazılabileceği 2 data registerı bulunur. CPU dan gelen kontrol komutlarının aktarıldığı Kontrol Registerı ve aktarma sırasında oluşan bilgilerin tutulduğu Durum Registerı. CPU dan gelen adresi tüm arayüzeyler çözdüğünde adres bus ındaki değer hangi çevre birime ait ise chip seçim teli set edilir. Arayüzey adresinin genellikle en önemsiz 2 biti arayüzeydeki registerlardan hangisi ile işlem yapılacağını belirler. Bu registerlara okuma mı yazma mı yapılacağı uygun tel set edilerek belirlenir. Kontrol registerı kontrol bilgilerini CPU dan alır, uygun bitlerin kontrol registerına gelmesiyle arayüzey ve ona bağlı çevre birim farklı modlara geçirilebilir. Status registerındaki bitler durum şartlarını belirlemekte ve data aktarımı sırasında kayıt hatalarını tutmakta kullanılır. Arayüzey registerları CPU ile çift yönlü data bus ını kullanarak haberleşirler. 4
ASENKRON (EŞ ZAMANLI OLMAYAN) VERİ AKTARIMI Sayısal bir sistemde iç işlemler saat vuruşu yardımıyla senkron (eş zamanlı) olarak yapılır. Saat vuruşları bir birim içindeki bütün yazaçlara gönderilir. İç yazaçlar arasındaki bütün veri aktarımları bir saat vuruşu anında hep birden oluşur. MİB ve G/Ç ara yüzeyi gibi iki birim birbirlerinden ayrı olarak tasarlanmıştır. Eğer ara yüzdeki yazaçlar ile MİB deki yazaçlar ortak bir saati paylaşırlarsa bu iki birim arasındaki aktarım senkron (eş zamanlı) dur denir. Birçok durumlarda herbir birimin iç zamanlaması diğerinden farklıdır. Ayrıca herbir birim kendi iç yazaçları için kendi saatini kullanır. Böyle bir durumda iki birim birbirine asenkron (eş zamanlı olmayan) dur denir. Birçok bilgisayar sisteminde bu yaklaşım kullanılır. İki bağımsız birim arasında asenkron (eş zamanlı olmayan) veri aktarımı, verinin aktarıldığını ve aktarma zamanını bildiren sinyallerin iki birim arasında gönderilmesini gerektirir. Bunun bir yolu birimlerden birinin başla vuruşudur (strobe pulse). Diğer bir yöntem de gönderici birimin veri ile beraber veriyi gönderdim diye bir sinyal göndermesi, alıcı birimin de veriyi aldıktan sonra veriyi aldım diye bir sinyal göndermesidir. Buna Handshaking (el sıkışma) denir. Asenkron veri aktarımı sırasında kontrol yapılırken aktarımın kaynak tarafından mı yoksa hedef tarafından mı başlatıldığına bakılması gerekir. STROBE (BAŞLA) KONTROL Bu yöntem, asenkron (eş zamanlı olmayan) aktarımda her bir aktarım için tek bir denetim teli kullanır. Aktarım kaynak veya hedef tarafından çalıştırılabilir. Tipik olarak veri yolu, tüm byte veya word (kelimeyi) taşımak için yeterli hatta sahiptir. a-) Veri aktarımı için kaynaktan çalıştırılan strobe 5
Başla (strobe) tek bir hattır. Hedef birimini uyarır, bu uyarma veri yolunda geçerli veriler olduğu anlamına gelmektedir. Kaynak önce veriyi veri yoluna yerleştirir. Kısa bir gecikmeden sonra kaynak başla vuruşunu aktifler. Kısa gecikmenin sebebi veri yoluna yerleştirilen veriler ile veri yolunun kararlı bir değer durumuna gelmesidir. Veri yolundaki veri ve başla vuruşu, hedef birimin veriyi alması için yeterli bir zaman kadar aktif kalırlar. Genellikle hedef birim, veriyi kendi iç yazaçlarından birine almak için başla vuruşunun iniş kolunu bekler. Başla vuruşunun bitmesinden kısa bir süre sonra kaynak, veri yoluna veri verme sürecini durdurur bir başka deyişle veri çıkış uçlarını kapatır. Gerçekte kaynak veri yolu içindeki bilgilerini değiştirmez. Başla sinyalinin kesilmesi sadece veri yolundaki verilerin artık geçersiz olduğunu bildirir. Yeni veriler ancak başla vuruşunun gönderilmesinden sonra hedef birim için hazır demektir. b-) Veri aktarımı için hedeften çalıştırılan strobe (başla) Hedef tarafından başlatılan veri aktarımında ise hedef başla vuruşunu çalıştırır ve kaynağa veri vermesini söyler. Kaynak birimi cevap olarak istenen ikilik veriyi veri yoluna yerleştirir. Veriler, alıcının bu verileri almasına yetecek bir zaman kadar veri yolunda geçerli olmalıdır. Başla vuruşunun inen kolu bu işi başlatır. Hedef birimi bundan sonra başlayı seçilmez kılar. Kaynak, önceden tayin edilmiş bir süre kadar sonra veri yolundaki veriyi kaldırır. (Beslemeyi keser). HANSHAKING (EL SIKIŞMA) Strobe yönteminin dezavantajı aktarımı kaynak birim başlatıyorsa gönderdiği, yani veri yoluna yerleştirdiği veriyi hedef birimin gerçekten alıp almadığını bilmemesidir. Benzer şekilde eğer hedef aktarımı başlatıyorsa kaynağın veriyi, veri yoluna yerleştirip, yerleştirmediğini bilmez. Handshaking yöntemi ikinci bir denetim sinyali yollayarak bu sorunu çözer. Yöntemin temel prensibi şöyledir; Denetim hatlarının birisi veri akışı ile aynı yöndedir ve kaynaktan hedefe gider. Kaynak birimi tarafından kullanılır ve hedefin veri yolu üzerinde geçerli veri bulunup bulunmadığını anlamasını sağlar. Diğer denetim hattı aksi yöndedir ve kaynağa veriyi alıp alamadığını bildirir. Denetim sırası aktarımı başlatan birimce yapılır. 6
a-) Handshaking Yöntemi Kullanılan Kaynak Başlangıçlı Aktarım Kaynak tarafından başlatılan handshaking aktarımında İki onaylama hattından biri veri geçerli hattı olup kaynak tarafından, diğeri veri algılandı hattı olup hedef tarafından üretilen sinyalleri taşır. Zaman şeması iki birimce alışverişi yapılan sinyalleri göstermektedir. Sistem herhangi bir anda bu 4 temel durumdan birinde bulunur. Kaynak birimi, veriyi veri yoluna yazarak ve veri geçerli sinyalini göndererek aktarmayı başlatır. Hedef, veriyi alınca, veri algılandı sinyalini yollar. Bundan sonra kaynak veri göndermeyi keser ve veri geçerli sinyalini durdurur. Bu sinyal kesilince hedef veri algılandı sinyalini durdurur. Sistem ilk durumuna döner. Veri algılandı sinyalinin kesilmesi hedefin yeni veri almaya hazır olduğunu belirtir. Bu sistemde rastgele gecikmeler olabilir veya böylece her birimin kendi hızına göre iş görmesi sağlanmış olur. Aktarım, hızı veya oranı en yavaş olan birime uygun olarak (onun hızıyla) gerçekleşir. 7
b-) Handshaking Yöntemi Kullanılan Hedef Başlangıçlı Aktarım Hedef tarafından başlatılan handshaking aktarımında hedef tarafından gönderilen sinyalin adı veri için hazır olarak değişir. Bu durumda kaynak birimi veri için hazır sinyalini almadan veriyi veri yoluna yazmaz. Handshaking yöntemi kaynak başlatmalıda olduğu gibi devam eder. Her iki yöntemde birbirinin aynıdır. Sadece veri için hazır sinyali yerine veri algılandı sinyali isim olarak değişir. TIMEOUT (ZAMAN AŞIMI) Handshaking yöntemi yüksek derecede esneklik ve güvenilirlik sağlar. Çünkü her iki birimde aktif olarak kullanılır. Ancak eğer birimlerden birisi bozuk ise aktarım gerçekleşmez. Böyle bir hata timeout (zaman bitti) mekanizmasınca fark edilir. Belli bir zaman içinde aktarım tamamlanmazsa bir alarm gönderir. Zaman bitti mekanizması iç saat tarafından denetlenir. Onaylama hatlarından biri çalıştığında saat saymaya başlar. Eğer belli bir zaman içinde karşı sinyal gelmezse, bir hata olduğuna karar verilir. Zaman bitti sinyali işlemciyi durdurmak ve hatayı düzeltmek için bir servis yordamı çalıştırmakta kullanılır. 8
ASENKRON (EŞ ZAMANLI OLMAYAN) SERİ AKTARIM İki birim arasında aktarım paralel veya seri olarak yapılabilir. Paralel veri aktarımında mesajın her biti kendi özel yolundan gider. Tüm mesaj aynı anda hedefine ulaşır. Bunun anlamı n bit mesajın n farklı yolla yollanmasıdır. Seri veri aktarımında her bir bit bir zaman sırasıyla yollanmalıdır. Bunun için bir tek hat kullanılır. Paralel aktarım hızlıdır, fakat çok hat ister. Kısa mesafeler için kullanılır. Seri aktarım yavaştır, fakat ucuzdur. Bir çift iletkene gereksinimi vardır. Senkron (Eş Zamanlı); Senkron seri aktarımda iki birim ortak saat frekansına sahiptir. Bitler sürekli bir biçimde aktarılır. Aktarım saat hızıyla olur. Uzun mesafeli seri aktarımda her bir birim ayrı saatler tarafından denetlenmektedir. Fakat saatler aynı frekansta çalışabilir. Senkronizasyon sinyalleri iki birim arasında belli sürelerle gönderilir ve her iki birimin saati eş zamanlı olarak çalıştırılır. Asenkron (Eş Zamanlı Olmaya); Asenkron aktarımda binary bilgiler hazır olunca gönderilir. Gönderilecek bilgi olmayınca hat boş kalır. Asenkron seri veri aktarımında özel bitler kullanılır. Bunlar karakter kodunun başına ve sonuna eklenmiştir. Bu yöntem ile her bir karakter 3 parçadan oluşur. Başlama (start) biti, Karakter bitleri, Bitiş (stop) biti. Başlangıç biti daima 0, bitiş biti ise daima 1 dir. ŞEKİL. Asenkron Seri Aktarım 9
Aktarılan karakter, alıcı tarafından aktarım kuralları ile bulunur. Kurallar şöyledir; 1. Bir karakter yollanmadığında hat 1 durumunda tutulur. 2. Karakter aktarımının başlangıcı daima 0 olana başlangıç bitinden anlaşılır. 3. Karakter başlangıç bitinin hemen arkasından gelir. 4. Karakterin son bitinin aktarılmasından sonra bitiş biti gelir, hat 1 değerine döner. Bu kurallar yardımıyla alıcı başlangıç bitini hattın 1 den 0 a geçişinden anlar. Alıcının saati hattı uygun bit zamanlarında inceler. Çünkü alıcı bitlerin aktarılma hızını bilir. Alınacak karakter bit sayısını bilir. Karakterin gönderilmesinin bitişinden sonra 1 veya 2 bitiş biti gönderilir. Bitiş bitleri daima 1 dir. Bitiş biti karakterin sonunu ve bekleme başlangıcını belirler. Karakterden sonra hat 1 veya 2 zaman kadar 1 durumunda tutulur. Böylece iki birim gönderici ve alıcı eş zamanlı yapılır. Bu bir veya iki bitlik süre aletlerin eş zamanlanması için gerekli olan süre olarak seçilir. Eski terminaller 2 bit kullanırken yeni terminaller 1 bit kullanmaktadır. 10