5. GİRİŞ / ÇIKIŞ BİRİMLERİ
5.1. Genel G/Ç Modeli
Bir giriş ve bir çıkış cihazı olan BBB’ın (Basit Bir Bilgisayar) G/Ç yapısı Şekil 5.1’de gösterilmektedir. BBB, veri giriş hatları (DIL – Data Input Lines) ve veri çıkış hatları (DOL – Data Output Lines) aracılığıyla çevre birimleriyle iletişim kurar. Giriş ve çıkış olmak üzere iki kontrol hattı vardır. Kontrol ünitesindeki data Flip-Flop’u, G / Ç etkinliklerini koordine etmek için kullanılır.
Şekil 5.2, BBB G/Ç yapısının birden çok G/Ç cihazını içerecek şekilde genelleştirilmesini göstermektedir. Birden fazla cihazı adreslemek için bir cihaz numarası (veya adresi) gereklidir. Bu cihaz adresi, RWD (Read a Word into ACC) ve WWD (Write a Word from ACC) komutlarının 8 bitlik işlenen alanında gösterilebilir. Bu komutların indisi ve dolaylı alanları kullanılmadığından, 11 bit kadar büyük cihaz adresleri kullanılabilir. Şekil 5.2’de, cihaz adresini temsil etmek için sadece 4 bit kullanıldığı varsayılmaktadır. Böylelikle 16 giriş ve 16 çıkış cihazını BBB’ye bağlamak mümkündür. RWD ve WWD komut döngüleri sırasında giriş çıkış cihazlarından birini seçmek için, cihaz adres bitlerine bağlı 4 -16 decoder etkinleştirilir. INPUT kontrol hattı aktifse, seçilen giriş cihazı verileri işlemciye gönderir. OUTPUT kontrol hattı etkinse, seçilen çıkış cihazı verileri işlemciden alır.
Şekil 5.3, pratikte kullanılan genelleştirilmiş G / Ç yapısını göstermektedir. Burada, cihaz adresi adres veri yolunda taşınır ve her cihaz tarafından kodu çözülür. Yalnızca adresi adres veri yolundaki ile eşleşen cihaz, giriş veya çıkış işlemine katılır. Data veri yolu çift yönlüdür. Kontrol veri yolu, kontrol sinyallerini taşır (GİRİŞ, ÇIKIŞ, vb). Ek olarak, cihaz ara yüzünden kaynaklanan çeşitli durum sinyalleri (CİHAZ MEŞGUL ve HATALAR gibi) da kontrol veri yolunun bir parçasını oluşturur.
Şekil 5.3’te gösterilen yapıda bellek, bir bellek veri yolu (adres, data ve kontrol / durum hatlarından oluşan) aracılığıyla merkezi işlem birimine (CPU) bağlanır ve çevre birimler G/Ç bus üzerinden CPU ile iletişim kurar. Bu mod izole G/Ç mod olarak adlandırılır. Bazı sistemlerde, hem bellek hem de G/Ç aygıtları, Şekil 5.4’te gösterildiği gibi aynı veri yolu üzerinden CPU’ya bağlanır. Bu G/Ç modu, bellek eşlemeli G/Ç olarak bilinir.
Bellek eşlemeli G/Ç’nin avantajları, ayrı G/Ç komutlarına gerek olmamasıdır; dezavantajları, bellek adres alanının bir kısmının G/Ç tarafından kullanılması ve bir programdaki bellek ve G/Ç işlemlerini birbirinden ayırt etmenin zor olabilmesidir.
İzole G / Ç modu tanımını gereği sistem yapısında iki ayrı veri yolunu ima etse de, pratikte böyle olması gerekmez. İki işlemi birbirinden ayırmak için kontrol hatlarını kullanırken aynı veri yolu üzerinde bellek ve G / Ç adreslerini kullanmak mümkündür.
Şekil 5.5, bir cihaz ara yüzünün işlevsel ayrıntılarını gösterir. Her cihaz, veri gösterimi ve okuma-yazma karakteristikleri açısından benzersiz olduğundan, cihaz ara yüzleri her cihaz için benzersizdir. Cihaz ara yüzü, CPU’dan komutlar (kontrol sinyalleri) alan ve cihazın durumunu CPU’ya bildiren bir kontrol cihazından oluşur. Cihaz örneğin bir şerit okuyucuysa, tipik kontrol sinyalleri şu şekildedir: CİHAZ MEŞGULMÜ?, İLERİ SAR, GERİ SAR vb. Tipik durum sinyalleri: CİHAZ MEŞGUL, VERİ HAZIR, CİHAZ ÇALIŞMIYOR vb. Transduser, G/Ç ortamında temsil edilen verileri (şerit, disk, vb.) ikili biçime dönüştürür ve cihaz bir giriş cihazı ise veri arabelleğinde saklar. Bir çıkış cihazı olması durumunda, CPU verileri arabelleğe gönderir ve dönüştürücü bu ikili verileri harici ortama çıkış için uygun bir formata dönüştürür (örneğin, manyetik bir bant veya diske 0/1 bit yazma formatı, ASCII desenleri bir yazıcı vb. için).
Şekil 5.6, CPU ile bir manyetik bant birimi arasındaki bir ara yüzün işlevsel ayrıntılarını gösterir. Ara yüz çok basitleştirilmiştir ve yalnızca ana işlevleri gösterir. ADRES veri yolundaki aygıt adresi teyp aygıtınınkine karşılık geldiğinde, CİHAZ SEÇ sinyali aktif hale gelir. CPU, ADRES GEÇERLİ kontrol sinyalini üretir ve bu, AYGIT HAZIR Flip-Flop’u saat girişi için kullanılır. Kod çözücünün çıktısı sıfır olduğunda AYGIT HAZIR Flip-Flop’u sıfırlanır. AYGIT HAZIR Flip-Flop’unun Q’ çıkışı, bant sonraki karakter konumuna ilerletilirken AYGIT MEŞGUL durum sinyali olur. Konuma ulaşıldığında, bant mekanizması AYGIT HAZIR Flip-Flop’unu (eşzamansız ayar girişi aracılığıyla) ayarlayan ve karşılığında CPU için VERİ HAZIR sinyalini oluşturan ŞERİT POZİSYON SİNYALİ üretir. Veri okuma işlemi sırasında, INPUT sinyali aktiftir, cihaz veriyi teypten okur, ara belleğe yükler ve veri yoluna açar. VERİ HAZIR durumuna yanıt olarak, CPU veri yolunu akümülatörüne geçirir.
Veri yazma sırasında, CPU veriyi veri yolu üzerinden cihaz ara belleğine gönderir, OUTPUT kontrol sinyalini ayarlar, adres veri yolunu cihaz adresine ayarlar ve ADRES GEÇERLİ sinyalini üretir. AYGIT HAZIR Flip-Flop’unun çalışması, veri okuma işlemi sırasındaki ile benzerdir. VERİ HAZIR sinyali aktif hale geldiğinde veriler banda yazılır. VERİ HAZIR aynı zamanda CPU’nun verileri ve adresi ilgili veri yollarından kaldırdığı yanıt olarak CPU için veri kabul sinyali olarak görev yapar.
5.2. G/Ç İşlevi
Bir cihaz ara yüzünün ana işlevleri şunlardır:
1. Zamanlama
2. Kontrol
3. Veri dönüştürme
4. Hata tespiti ve düzeltmesi
Zamanlama ve kontrol, veri transferini sağlamak için kontrol ve durum sinyallerinin manipülasyonudur. Ek olarak, CPU ile cihaz arasındaki çalışma hızı farkı ara yüz tarafından karşılanmalıdır. Genel olarak, her cihaz (veya verilerin temsil edildiği ortam) verileri temsil etmek için farklı bir kod kullanabildiğinden, bir koddan diğerine veri dönüşümü gereklidir. İletim sırasında oluşan hatalar ara yüz tarafından tespit edilmeli ve mümkünse düzeltilmelidir.
5.2.1. Zamanlama
Şimdiye kadar CPU’nun veri yolunu kontrol ettiğini varsaydık (veri yolu yöneticisi – bus master). Genel olarak, veri yoluna birkaç aygıt bağlandığında, CPU dışındaki bir aygıtın bus mater olması mümkündür. Böylelikle, veri yolunda veri aktarımına dahil olan iki cihazdan biri bus master ve diğeri de slave (bağımlı) olacaktır. Bir aygıtın veri yolu yöneticisi olması için gereken işlem sırası bu bölümün ilerleyen kısımlarında açıklanmaktadır.
Veri yolu üzerinde iki cihaz arasındaki veri aktarımı senkron (eşzamanlı) veya asenkron (eş zamansız) olabilir. Şekil 5.7, tipik bir senkron veri yolu aktarımı için zamanlama diyagramını gösterir. Saat, tüm sinyaller için zamanlama referansı olarak görev alır. Yükselen ya da düşen kenar kullanılabilir. Şekil 5.7a’da gösterilen okuma işlemi sırasında, bus master READ sinyalini etkinleştirir ve slave aygıtın (verileri okumaya çalıştığı aygıt) ADRESİNİ veri yoluna yerleştirir. Veri yolu üzerindeki tüm aygıtlar adresi çözer ve adresi veri yolu üzerindeki adresle eşleşen aygıt, veriyi birkaç saat döngüsü sonra veri yoluna yerleştirerek yanıt verir. Slave birim ayrıca master’a DURUM bilgileri (hata, hata yok, vb.) sağlayabilir. Bunun için gereken saat döngüsü (bekleme döngüleri) sayısı, master ve slave aygıtların göreceli hızlarına bağlıdır. Slave aygıtın veri yolundaki verilerin geçerliliğini belirtmesi için bir kontrol sinyali (ACKNOWLEDGE – kısaltılmış ACK veya DATA HAZIR) üretmesi gerekir. Master ACK’yi algıladıktan sonra, verileri kendi dâhili registerlarına işler.
Şekil 5.7b, senkron bir YAZMA işlemi için zamanlamayı göstermektedir. Bus master burada WRITE kontrol sinyalini etkinleştirir ve slave cihazının adresini veriyolunun adres hatlarına yerleştirir. Cihazlar adresin kodunu çözerken, master da verileri DATA veriyoluna yerleştirir. Slave birim, master birimin veriyi ve YAZMA kontrol sinyalini veri yolundan kaldırmasına karşılık, bir bekleme süresinden sonra veriyi arabelleğine alır ve ACK’yı (DATA KABUL) veri yoluna yerleştirir.
Daha önce açıklanan tüm işlemlerin saat ile senkronize olduğunu unutmayın. Asenkron bir aktarım modunda, işlemlerin sırası, saatin olmaması dışında yukarıdakiyle aynıdır.
Şekil 5.8, kaynak ve hedef cihazlar arasındaki asenkron aktarım için zamanlama diyagramlarını gösterir. Şekil 5.8a’da, kaynak veri yoluna veri yerleştirerek ve DATA HAZIR ayarını yaparak aktarımı başlatır. Hedef, DATA HAZIR sinyali kaldırıldığında yanıt olarak ACK’lar, ardından ACK kaldırılır. Veriler yalnızca ACK alındıktan sonra veri yolundan kaldırılır. Şekil 5.8b’de hedef cihaz, kaynağın veriyi veri yoluna koymasına karşılık aktarımı başlatır (talep eder).
Çevre birimleri genellikle CPU’yu kontrol eden saat tarafından kontrol edilmediklerinden CPU’ya göre asenkron çalışırlar. İki cihaz arasında veri transferini sağlamak için gereken olayların sırasına protokol veya el sıkışma (handshake) denir.
5.2.2. Kontrol
Veri aktarımı protokolü sırasında, bazı olaylar veri yolu yöneticisi tarafından, bazıları da bağımlı cihaz tarafından gerçekleştirilir. Veri aktarımı, programlanmış G/Ç modunda tamamen CPU tarafından kontrol edilir. Bu G/Ç modu protokolü Tablo 5.1’de gösterilmektedir. Hem giriş hem de çıkış işlemleri için protokoller birleştirilmiştir. Böylece bir cihaz herhangi bir zamanda ya giriş ya da çıkış modunda çalışabilir.
Bu durum, her aktarımda tekrarlanır. CPU ile aygıt arasındaki hız farkı, bu G/Ç modunu etkisiz hale getirir.
Bir alternatif, kontrol faaliyetlerinin bir kısmını aygıt kontrolcüsüne dağıtmaktır. Şimdi, CPU, veri girişi veya çıkışı için aygıt kontrolcüsüne bir komut gönderir ve işleme faaliyetine devam eder. Kontrolcü, verileri cihazdan alır (veya verileri gönderir) ve CPU’ya bir kesme gönderir. CPU, veri aktarımı tamamlandıktan sonra aygıtın bağlantısını keser ve kesmeye uğradığı anda ki işlemine geri döner. Kesme modu G/Ç protokolü olay dizisi Tablo 5.2’de gösterilmektedir.
Protokol, CPU’nun her zaman veri aktarımını başlattığını kabul eder. Uygulama da bir çevre birimi önce CPU’yu kesmeye uğratabilir ve aktarım türü (giriş veya çıkış) CPU-çevre birimi handshake sırasında belirlenir. Veri girişinin sadece CPU tarafından başlatılmasına gerek yoktur. Kesme modu G/Ç, CPU bekleme süresini azaltır ancak programlanmış G/Ç modundakinden daha karmaşık bir aygıt kontrolcüsü gerektirir.
Kontrol ve zamanlama sorunları, veri bağlantısının özelliklerine göre ortaya çıkar. Veri bağlantısı simplex (tek yönlü), half-duplex (her iki yönde, ancak bir seferde tek yönlü), full duplex (aynı anda her iki yönde), seri veya paralel olabilir. Seri iletim, senkronizasyon sorunlarını önlemek için veri iletimi boyunca sabit bir saat hızının korunmasını gerektirir. Paralel iletimde, hatların farklı elektriksel özellikleri nedeniyle verilerin veri yolu hatlarına farklı zamanlarda gelebilmesinden dolayı bozulmasından kaçınmaya özen gösterilmelidir.
CPU’nun yakınında bulunan çevresel cihazlarla veri aktarımı genellikle paralel modda gerçekleştirilirken CPU’ya uzak cihazlar CPU ile seri modda iletişim kurarlar. Aşağıdaki bölümlerde paralel mod transferi olduğu kabulünü yapacağız.
5.2.3. Veri Dönüşümü
G/Ç ortamlarındaki veri temsilleri her ortam için kendine özeldir. Örneğin, bir manyetik bant, verileri temsil etmek için ASCII veya EBCDIC kodunu kullanır. CPU bir ikili veya BCD gösterimi kullanabilir. Buna ek olarak, ara yüz bağlantısı, bit dizileri, karakter dizileri (yarı-paralel) veya sözcük dizileri (tamamen paralel) olarak düzenlenebilir. Bu nedenle, ara yüz ile çevresel birimden bağlantı biçimine ve bağlantıdan CPU biçimine dönüştürme şeklinde iki düzeyde veri dönüşümü gerçekleştirilir.
5.2.4. Hata Denetimi ve Düzeltme
İki cihaz arasında veri aktarımı gerçekleştirildiğinde hatalar oluşabilir. Eşlik bitleri olarak bilinen bir veya daha fazla ekstra bit, hata algılama ve düzeltmeyi kolaylaştırmak için veri temsilinin bir parçası olarak kullanılır. Eşlik bitleri, verilerde hâlihazırda mevcut değilse, iletimden önce ara yüz tarafından veri akışına dâhil edilir ve varış yerinde kontrol edilir. Eşlik bitlerinin sayısına bağlı olarak, çeşitli seviyelerde hata tespiti ve düzeltmesi mümkündür. Dış ortama maruz kalan çevre birimleri hataya açık olduğundan G/Ç’da hata tespiti ve düzeltmesi oldukça önemlidir. Hatalar mekanik aşınma, sıcaklık ve nem değişimleri, yanlış monte edilmiş depolama ortamı, yanlış veri aktarım dizileri (protokoller) ve benzerlerinden kaynaklanabilir.
Şekil 5.9, 8 bitlik bir veri akışına dâhil edilen bir eşlik bitini gösterir. Tek eşlik kullanılıyorsa P Eşlik biti 1’dir (1lerin toplam sayısı tek sayıdır), çift eşlik kullanılıyorsa 0’dır (toplam 1 sayısı çifttir). Bu 9 bitlik word iletildiğinde, alıcı eşlik bitini hesaplar. Hesaplanan eşlik ile P eşleşirse iletimde hata yoktur, hata tespit edilirse veriler yeniden aktarılır.
5.3. Kesmeler
İşlemci, birçok durumda normal işlem faaliyetinden kesmeye uğrayabilir. Bu durumlardan bazıları:
1. Bir sensör tarafından tespit edilen elektrik arızası
2. Overflow ve Underflow gibi aritmetik koşullar
3. Kural dışı veri veya talimat kodu
4. Veri aktarımı ve saklamadaki hatalar
5. Yazılım kaynaklı kesintiler (kullanıcı tarafından amaçlandığı şekilde)
6. Asenkron bir aktarımın normal tamamlanması
Bu koşulların her birinde, işlemci o an ki faaliyetini durdurmalı, kesmeyi işleme almalı ve (mümkünse) kesinti sona erdiğinde faaliyetine kaldığı yerden devam etmelidir. İşlemcinin, kesintiye işleme aldıktan sonra normal işlemeye devam edebilmesi için, en azından, kesinti servis moduna girmeden hemen önce yürütülecek talimatın adresinin kaydedilmesi gereklidir. Ek olarak, akümülatörün ve diğer tüm registerların içeriği kaydedilmelidir. Tipik olarak, bir kesinti alındığında, işlemci mevcut talimatı tamamlar ve bir interrupt servis rutinine (interrupt service routine) atlar. Interrupt servis rutini, aşağıdaki işlevleri gerçekleştiren makine belleğine önceden yüklenmiş bir programdır:
1. Sonraki kesmeleri devre dışı bırakır (geçici olarak)
2. İşlemci durumunu kaydeder (tüm registerlar)
3. Sonraki kesmeleri aktif eder
4. Kesmenin nedenini belirler
5. Kesmeyi işleme alır
6. Kesmeleri devre dışı bırakır
7. İşlemci durumunu geri yükler
8. Sonraki kesmeleri aktif eder
9. Kesmeden döner
İşlemci, bir süre boyunca sonraki kesmeleri devre dışı bırakarak Interrupt servis rutini dönüşünde önceki işlemine devam edebilmek anlık durumunu kaydeder. İşlemci durumu genellikle program counter ve program status word dâhil olmak üzere tüm registerların içeriğini kapsar. “Servis ” kelimesi kesmenin kaynağı ile ilgilenilmesi anlamına gelir. Bir G/Ç kesmesi, veri aktarımına karşılık gelir, elektrik arızası durumu güç geri geldiğinde işlemin normal şekilde yeniden başlaması için registerların ve durumunun kaydedilmesidir, bir aritmetik koşul olıştuğunda, önceki işlemi kontrol eder veya aritmetik hatayı belirtmek için basitçe bir flag ayarlar.
Kesme hizmeti tamamlandığında, işlemci durumu geri yüklenir. Yani, tüm registerlar 2. adımda kaydedilen değerlerle yüklenir. Bu geri yükleme süresi sırasında kesmeler devre dışı bırakılır. Bu, kesme hizmetini tamamlar ve işlemci normal işleme moduna döner.
5.3.1. Basit Bir Bilgisayarın Kesme Mekanizması
Bir kesme herhangi bir zamanda meydana gelebilir. Kesmeler yalnızca işlemci tarafından mevcut talimatın yürütülmesinin sonunda tanınır. Kesmenin daha önce tanınması gerekiyorsa (örneğin, bir getirmenin sonunda, yürütmeden önce), işlemci durumunun önceki komutun yürütülmesinin sonuna geri döndürülmesi gerektiğinden daha karmaşık bir tasarım gerekir. BBB’da (basit bir bilgisayar) kontrol ünitesine bir kesme girişi (INT) olduğunu varsayalım.
BBB için aşağıdaki kesme şemasında, bir seferde yalnızca bir kesme olacağını, yani mevcut kesme tam olarak işleme alınıncaya kadar başka kesme olmayacağını varsayıyoruz. (Bu kısıtlamayı daha sonra kaldıracağız.) Bellek konumu 6 ve sonrasında bulunan kesme servis rutinine girmeden önce registerları (PC, ACC, index registerları ve PSR) kaydetmek için 0’dan 5’e kadar bellek konumlarını ayıracağız (bkz. Şekil 5.10). Son olarak aşağıdaki gibi komutlarımız olduğunu varsayalım:
1. SPS (PSR’yi bir bellek konumunda depola)
2. LPS (PSR’yi bir bellek konumundan yükle)
3. Interrupt ‘ı devreye al ve
4. Interrupt’ı devre dışı bırak
BBB 32 olası işlem kodundan (opcode) yalnızca 16’sını kullanır. Kalan 16 işlem kodundan herhangi biri bu yeni talimatlar için kullanılabilir.
Getirme sırası artık aşağıdaki gibi olur:
T1 : IF (EĞER) INT = 1 THEN (İSE) MAR0 ELSE (YOKSA) MARPC, READ:
T2 : IF INT = 1 THEN MBRPC, WRITE ELSE PCPC +1:
T3 : IF INT = 1 THEN PC6 ELSE IRMBR:
T4 : IF INT = 1 THEN STATE F ELSE (önceki gibi):
INT=1 ise kesme rutinine girmek için bir makine döngüsü kullanılır (PC’yi konum 0’da saklar; PC = 6 yapar). Servis rutininin ilk bölümü (Şekil 5.10’da) tüm registerları depolar. Daha sonra, kesme üreten cihazı bulmak için aygıtlar sorgulanır. Kesmeye devreye alınır ve kesmeden çıkmadan önce registerlar geri yüklenir.
Bu kesme işleme şeması, getirme döngüsü sırasında INT hattının 1’de olmasını gerektirir. Yani, INT hattı herhangi bir zamanda 1 olabilmesine rağmen, CPU tarafından tanınması için bir sonraki getirme döngüsünün sonuna kadar 1’de kalmalıdır. Ayrıca, T4‘ün sonunda 0’a gitmesi gerekir. Aksi takdirde, kesme modunda başka bir getirme döngüsü başlatılır. INT hattındaki bu zamanlama gereksinimi, Şekil 5.11’de gösterildiği gibi, kontrol ünitesine bir kesme etkinleştirme (enable) flip-flop’u ve bir kesme flip-flop’u (INTF) dâhil ederek ve INT hattını T1‘de INTF’ye yönlendirerek basitleştirilebilir. Bu değişiklikleri barındıran getirme dizisi aşağıdaki gibidir:
T1 : IF INTF = 1 THEN MAR0 ELSE MARPC, READ:
T2 : IF INTF = 1 THEN MBRPC, WRITE ELSE PCPC+1:
T3 : IF INTF = 1 THEN PC 7 ELSE IRMBR:
T4 : IF INTF = 1 THEN STATE F, DISABLE INTE, RESET
INTF, ACKNOWLEDGE ELSE (önceki gibi):
Kesme dizisinin artık T4‘teki kesmeleri devre dışı bıraktığını ve dolayısıyla Şekil 5.10’daki konum 6’da DEVRE DIŞI kesme komutunu gerektirmediğine dikkat edin. Daha sonra kesme servis rutini yürütmesi konum 7’de başlar. Bir interrupt enable komutu gereklidir. Bu komut, interrupt enable flip-flop’unu setler ve sonraki kesmeye izin verir. Ayrıca, kesmenin algılandığını harici cihazlara belirtmek için T4 sırasında CPU tarafından bir kesinti onay sinyali (ACK) üretilir. Bu şemada, kesmenin tanınması için kesme hattı bir sonraki getirme döngüsüne kadar 1’de tutulmalıdır. Bir kesme algılandığında, kesmeler etkinleştirilmedikçe başka kesmelere izin verilmez.
5.3.2. Çoklu Kesmeler
Önceki kesme şemasında, kesme hizmeti sırasında başka bir kesme meydana gelirse, işlemci tarafından tamamen yok sayılır. Uygulamada, bir kesme hizmeti sırasında diğer kesmeler de önceliklerine göre işleme alınırlar. Bunu sağlamak için Şekil 5.10’daki kesme servis rutininde, registerları kaydettikten sonra konum 12’ye interrupt-aktif komutu ekleyerek ve yeniden kayıt register bloğu komutlarından hemen önce interrupt-devre dışı komutu eklenir. Bu değişiklikle, kesme işlemi sırasında başka bir kesme meydana geldiğinde, 0–5 arasındaki bellek konumlarının üzerine yazılır ve böylece ilk kesmeden dönüş için gereken işlemci durum bilgisi bozulur.
İşlemci durumu, önceki şemada yapıldığı gibi, ayrılmış bellek konumlarından ziyade bir yığın üzerine kaydedilmişse, birden çok kesintiye hizmet verilebilir. İlk kesmede, durum 1 yığına yerleştirilir, ikinci kesmede durum 2 yığının en üstüne yerleştirilir. İkinci kesme hizmeti tamamlandığında, durum 2 yığından çıkar, böylece ilk kesmeden dönüş için yığındaki durum 1 bozulmadan kalır. Böylelikle bir yığın, kesintilerin “iç içe geçmesine” izin verir.
5.3.3. Polling (Yoklama-Sorgulama)
Bir kesme algılandığında, CPU her kesme koşulu için uygun kesme servis rutinini çağırmalıdır. Kesme modu G/Ç düzeninde, CPU kesmeye neden olan aygıtı tanımlamak için her aygıtı sorgular. Polling, yazılımsal veya donanımsal olarak uygulanabilir. Yazılımsal uygulamasında, polling rutini sırayla her bir G/Ç cihazının durumunu okur. Kesmeye neden olan bir durum ile karşılaşıldığında, o cihaza karşılık gelen servis rutini yürütülür. Polling, cihazlar arasında bir öncelik sırası oluşturur, önce en yüksek öncelikli cihaz adreslenir ve bunu daha düşük öncelikli cihazlar takip eder.
Şekil 5.12, bir donanım polling şemasını göstermektedir. Binary counter (İkili sayaç), başlangıçta ilk aygıtın adresini tutar ve CPU polling modundaysa her saat darbesinde yukarı sayar. Sayma kesme üreten aygıtın adresine ulaştığında, interrupt istek (IRQ) flip-flop’u setlenir ve saatin ikili sayacı artırması engellenir. Böylece kesme üreten cihazın adresi ikili sayaçta tutulur.
5.3.4. Vektörlü Kesmeler
Polling yöntemine ek olarak kesme algılamanın diğer bir yolu Şekil 5.13’te görüldüğü gibi vektörlü bir kesme yapısı kullanmaktır. Bu yöntemde, CPU bir kesmeye yanıt olarak bir onay (ACK) sinyali üretir. Bir cihaz kesme üretiyorsa (yani, kesme flip-flop’u set ise), cihaz ara yüzündeki ACK flip-flop’u ACK sinyali tarafından setlenir ve cihaz CPU tarafından tanınmak için veri yoluna bir vektör gönderir. Bu vektörün içeriği cihaz adresi ya da o cihaz için kesme servis rutininin başladığı bellek konumunun adresidir. Cihaz tanımlandıktan sonra, CPU o cihaza adreslenmiş ikinci bir ACK gönderir ve böylece cihazın ACK ve interrupt flip-floplarını sıfırlanır. (ikinci ACK için devre Şekil 5.13’te gösterilmemiştir). Şekil 5.13’ün yapısında, tüm kesme üreten cihazlar, vektörlerini ilk ACK’ya yanıt olarak eşzamanlı olarak veri yoluna gönderir. Bu durumda CPU, cihazlar arasında ayrım yapamaz. Bunu önlemek ve yalnızca kesme üreten cihazın vektörünü almak için, G/Ç cihazları, ilk olarak en yüksek öncelikli cihazın ACK’yı aldığı ve ardından daha düşük öncelikli cihazların aldığı bir daisy-chain yapısında bağlanır. Zincirdeki ilk kesme cihazı, ACK sinyalinin sonrakine ilerlemesini engeller. Şekil 5.14, tipik bir daisy-chain ara yüzünü gösterir.
5.3.5. Kesme Yapısı Türleri
Şekil 5.13’te gösterilen kesme yapısında, tüm cihazların kesme hatları OR’landığı için herhangi bir cihaz CPU’yu kesmeye uğratabilir. CPU’nun kesmeye uğratılması durumunda tüm cihazlar eşit öneme sahiptir. Buna tekil öncelikli yapı denir. Tekil öncelikli yapılar da kesme üreten cihazı tanımlamak için polling veya vektörleme kullanılabilir. Sürekli sorgulama yapıldığı ve genellikle yazılım tarafından gerçekleştirildiği için tekil öncelikli sorgulama yapısı, en az karmaşık ancak en yavaş kesme yapısıdır. Tekil öncelikli vektörlü bir yapıda, CPU bir kesmeye yanıt olarak bir ACK sinyali gönderir ve kesme cihazı, uygun servis rutinini yürütmek için CPU tarafından kullanılan bir vektörü geri gönderir. Bu yapı, sorgulamalı yapıdan daha hızlı çalışır ancak daha karmaşık bir cihaz denetleyicisi gerektirir.
Şekil 5.15’teki ileri daisy-chain yapısı, birçoklu öncelik yapısıdır. CPU’nun kesmeye uğraması kesmeyi üreten cihazın önceliğine bağlıdır. Bu yapıda her zaman en yüksek öncelikli cihaz CPU’yu kesintiye uğratabilir. CPU daha düşük öncelikli bir cihazdan gelen kesmeyi işlerken daha yüksek öncelikli bir cihaz, bu işlemi kesintiye uğratabilir. Daha düşük öncelikli bir cihazdan gelen bir kesmenin, daha yüksek öncelikli bir cihaza hizmet verirken CPU’ya ulaşması engellenir. Bir kesme CPU tarafından algılandığında, kesmeye uğratan cihazın tanınması ya polling ya da vektörler kullanılarak yapılır. Çoklu öncelikli vektörlü yapı, kesme yapılarının en hızlı ve en karmaşık olanıdır. Tablo 5.3, bu kesme yapılarının özelliklerini özetlemektedir.
Gerçek sistemlerde, çok seviyeli bir donanım yapısı şeklinde CPU’da birden fazla kesme giriş hattı olur. Her seviyeye bir öncelik atanır ve cihazlar daisy-chain yapısında bağlanabilir. Cihazların öncelikleri dinamik olarak da değiştirilebilir (sistem çalışması sırasında). Şekil 5.16, bu tür dinamik öncelik işlemleri için bir maskeleme şemasını göstermektedir. MASK registeri, kesme üretmeye izni olan seviyeleri temsil etmesi için CPU tarafından setlenir (seviye 2 ve 3 maskelenir, seviye 1 ve 4 etkinleştirilir). Bir INT sinyali yalnızca etkinleştirilen seviyeler de üretilir, yani maskelenen seviyeler CPU’yu kesintiye uğratamaz. Bu şemada da görüldüğü üzere bir cihaz birden fazla seviyeye bağlanabilir (D1, seviye 1 ve 2’ye bağlıdır). Şekil 5.16’daki her seviye CPU’dan kendi ACK sinyalini alır. ACK devresi gösterilmemiştir.
5.4. Genel Giriş Çıkış Cihazları
Bilgisayarlarla iletişim kurmak için çeşitli G/Ç cihazları kullanılır. Genel olarak aşağıdaki kategorilere ayrılabilirler:
1. İşlemci ile etkileşimli modda iletişim kuran terminaller gibi çevrimiçi cihazlar
2. İşlemci ile etkileşimsiz modda iletişim kuran yazıcılar gibi çevrimdışı cihazlar
3. Gerçek zamanlı veri toplama ve iletimine yardımcı olan cihazlar (analogdan dijitale ve dijitalden analoğa dönüştürücüler)
4. Bantlar ve diskler gibi G / Ç cihazları olarak da sınıflandırılabilen depolama cihazları
Bu bölümde yukarıda ki cihazları hakkında çok kısa açıklamalar yapılacaktır. Bilgisayar sistemleri teknolojisi alanı çok hızlı değişmekte, daha yeni ve çok yönlü cihazlar günlük olarak duyurulmaktadır. Bu nedenle, güncel cihazlar hakkında yeni bilgileri araştırmak okuyucuya bırakılmaktadır.
5.4.1. Terminal
Tipik bir terminal, bir monitör, bir klavye ve bir fareden oluşur. Günümüzde çok çeşitli terminaller mevcuttur.
Katot ışın tüpü (CRT – cathode ray tube) tabanlı monitörler, günümüzde yerlerini panel ekranlara bırakmıştır. Bu ekranlar likit kristal ekran (LCD – liquid crystal display) teknolojisini kullanır. Ekranlar, karakter eşlemeli veya bit eşlemeli olabilir. Karakter eşlemeli monitörler tipik olarak ekranı bir karakter matrisi (bayt) olarak ele alırken, bit eşlemeli monitörler ekranı açık veya kapalı olabilen bir dizi resim öğesi (piksel) olarak ele alır ve her piksel 1 bit bilgi gösterir. Ekran teknolojisi, neredeyse her gün ekranlara eklenen yeni yeteneklerle hızlı bir değişim yaşamaktadır. Günümüzde gelişmiş alfanümerik ve grafik ekranlar, dokunmatik ekran özelliği yaygın olarak mevcuttur. Dokunmatik ekranlar giriş mekanizması olarak kullanılabilir.
Birçok çeşit klavye mevcuttur. Kişisel bilgisayarlarla kullanılan tipik bir klavye 102 tuştan oluşur.
Fare, zemin üzerindeki hareketiyle ekrandaki herhangi bir alana işaret etmeyi sağlar. Üzerinde ki düğmeler, ekranda seçilen noktadaki bilgilere göre çeşitli işlemleri gerçekleştirmek için kullanılır.
Tipik bir terminalin bu üç bileşenine ek olarak, joystick (kumanda kolu), mikrofonlar (doğrudan ses girişi için), hoparlörler (ses çıkışı için) ve kameralar (video girişi için) gibi çeşitli cihazlar yaygın olarak kullanılan G / Ç cihazlarıdır.
5.4.2. Mouse
Fare, günümüzün en yaygın giriş cihazıdır. Genellikle iki düğmesi ve bir kaydırma tekerleği vardır. Kaydırma tekerleği, ekrandaki görüntünün kaydırılmasına izin verir ve düğmeler, fare zemin üzerinde hareket ettirilirken ekrandaki belirli bir konumun seçilmesine izin verir. Sol düğme imleç konumunu seçer ve sağ düğme tipik olarak seçilen imleç konumundaki olası işlemlerin menüsünü sağlar. Daha önce fareler, farenin altındaki bir topun konumunu mekanik olarak izlemek için kullanıyordu. Günümüz de optik fareler yaygın olarak kullanılır.
Apple Computer’ın kablosuz Mighty Mouse’un izleme motoru, standart optik izlemeden 20 kat daha fazla performans sunan ve daha fazla yüzeyde daha fazla doğruluk ve yanıt veren lazer teknolojisine dayanmaktadır. Tek bir parmakla sorunsuz bir şekilde yuvarlanmak için mükemmel şekilde konumlandırılmış 3608 kaydırma özelliği sunar. Üst yüzeyinin altında kullanılan dokunmaya duyarlı teknoloji, nereye tıkladığımızı algılar. Kablolu ve kablosuz versiyonları mevcuttur.
5.4.3. Yazıcılar
Yazıcılar, 1980’lerin gürültülü daisy-wheel ve dot-matrix yazıcılarından sonra uzun bir yol kat etti. Bugün, canlı, gerçekçi renkler ve keskin metin içeren herhangi bir belgeyi hayal edebileceğimiz herhangi bir yazı tipinde yazdırabiliriz. Günümüzde evlerde bulunan en yaygın yazıcı türü inkjet yazıcıdır. Bu yazıcı, mürekkebi istenen şekle yönlendiren mıknatıslanmış plakalar ile kâğıt üzerine iyonize mürekkebi püskürterek çalışır. Mürekkep püskürtmeli yazıcılar, daha maliyetli lazer yazıcıların basma kalitesine yaklaşan siyah beyaz veya renkli olarak yüksek kaliteli metin ve görüntüler üretme yeteneğine sahiptir. Günümüzde birçok mürekkep püskürtmeli yazıcı, fotoğraf kalitesinde görüntüler basabilmektedir. Lazer yazıcılar en yüksek kalitede metin ve görüntüler sağlar. Bir tambur üzerinde elektrik yüklü bir görüntü oluşturmak için bir lazer ışını kullanarak çalışırlar, bu daha sonra bir toner haznesi boyunca yuvarlanır. Toner, tamburun elektrik yüklü kısımları tarafından alınır ve bir ısı ve basınç kombinasyonu yoluyla kâğıda aktarılır. Tam renkli lazer yazıcılar mevcut olsa da, siyah beyaz versiyonlardan çok daha pahalı olma eğilimindedirler ve yüksek çözünürlüklü görüntüler üretmek için büyük miktarda yazıcı belleği gerektirirler.
Taşınabilir bir yazıcı, bir evrak çantasına sığan, çok hafif ve pil gücüyle çalışabilen kompakt bir mobil mürekkep püskürtmeli yazıcıdır. Hem mürekkep püskürtmeli hem de lazer püskürtmeli modellerde bulunan bu kablosuz yazıcılar, bir el cihazından, dizüstü bilgisayardan veya dijital kameradan yazdırmamıza olanak tanır. Bunun olmasını sağlayan kablosuz kısa menzilli radyo teknolojisine bluetooth denir. Yazıcı, tarayıcı, fotokopi makinesi ve faksın işlevlerini tek bir makinede birleştiren hepsi bir arada cihazlar (mürekkep püskürtmeli veya lazer tabanlı) artık mevcuttur.
5.4.4. Tarayıcılar
Tarayıcılar, basılı bir belgenin içeriğini makine belleğine aktarmak için kullanılır. Taranmış veriler işlenebilir (küçültme, büyütme, döndürme vb.). Görüntü, sözcük işlenebilir bir belge olarak değerlendirilecekse, tarama yapıldıktan sonra optik karakter tanıma (OCR) gerçekleştirilir.
5.4.5. A/D ve D/A Dönüştürücüler
Şekil 5.18, bir analog aygıtı kontrol eden dijital bir işlemciyi göstermektedir. Burada, cihaz tarafından üretilen analog sinyal, A/D dönüştürücü tarafından dijital bit modeline dönüştürülür. İşlemci dijital veri çıktısı verir ve bu çıktılar D/A dönüştürücü tarafından analog forma dönüştürülür. D/A dönüştürücüler, n-bit dijital bilgi girişlerini karşılık gelen analog voltaj düzeyine dönüştüren birimlerdir.
Bölüm Özeti
Bu bölümde G/Ç cihazları ile CPU arasındaki çeşitli veri aktarım modları tartışılmıştır. Donanım teknolojisindeki gelişmeler ve donanımın düşen fiyatları, uygun maliyetli ve çok yönlü G/Ç yapılarının uygulanmasını mümkün kılmıştır. G/Ç cihazlarının CPU ile ara yüzlenmesi geniş kapsamlı bir iştir. Bununla birlikte, G/Ç transfer protokollerini standartlaştırma konusundaki son çabalar ve standart veri yollarının ortaya çıkışı, bu işin zorluklarını azaltmıştır. Bir üretici tarafından üretilen bir G/Ç cihazına veya CPU’ya başka bir üreticinin uyumlu cihazlarıyla kolayca ara yüz oluşturmak artık mümkündür. Modern bilgisayar yapıları tipik olarak, bazıları ihtiyaç duyulduğunda G/Ç görevlerine atanabilen birden fazla genel amaçlı işlemci içerir. Uygulamadaki mimarilerde G/Ç sistem performansını artırmak için çeşitli teknikler kullanılmaktadır. Her sistem kendi mimari özellikleriyle benzersizdir. Bu bölümde tanıtılan kavramlar, pratik mimarileri değerlendirmeye yardımcı olan temel özellikleri oluşturur.
Kaynakça
Amdahl, G.M., ‘‘Validity of the single processor approach to achieving large scale Comput- ing capabilities,’’ Proceedings of AFIPS Spring Joint Computer Conference, April 1967, pp. 483–485.
Apple Computers, http://www.apple.com=mightymouse=index.html
Core Logic for the SA-110 Microprocessor Data Sheet, Santa Clara, CA: Intel, 1998.
Baron, R.J. and Higbie, L., Computer Architecture, Reading, MA: Addison Wesley, 1992. Computer, Los Alamitos, CA: IEEE Computer Society, Published monthly.
Cramer, W. and Kane, G., 68000 Microprocessor Handbook, Berkeley, CA: Osborne McGraw-Hill, 1986.
DiGiacomo, J., Digital Bus Handbook, New York, NY: McGraw-Hill, 1990.
EDN, Reed Business Information, http://www.edn.com
Hill, M.D., Jouppi, N.P. and Sohi, G.S., Readings in Computer Architecture, San Francisco, CA: Morgan Kaufmann, 1999.
IEE=ANSI 796 Standard, New York, NY: IEEE, 1983.
IEE=ANSI 1296 Standard, New York, NY: IEEE, 1988.
Microtek, http://reviews.cnet.com=Microtek_ScanMaker_i900=4505-3136_7-30822156.html MC68000 Users Manual, Austin, TX: Motorola, 1982.
Patterson, D.A. and Hennessey, J.L., Computer Architecture: A Quantitative Approach, San Mateo, CA: Morgan Kaufmann, 1990.
Shiva, S.G., Advanced Computer Architectures, Boca Raton, FL: Taylor & Francis, 2006. Simple Multibus II I/O Replier, Mountainview, CA: PLX Technology, 1989.
Williams, R., Computer Systems Architecture: A Networking Approach, Harlow, England: Addison-Wesley, 2001.
Comments