I/O, IRQ, DMA ve Plug-and-Play

Yazan: Serdar Aytekin

Bu yazımızda sizlere I/O, IRQ , DMA ve Plug-and-Play gibi sık sık karşılaştığımız terimlerin ne anlam ifade ettiğini ve sistem yapılandırılması sırasında dikkat edilmesi gereken bazı hususlar hakkında bilgiler sunmaya çalışacağız. Ayrıca sık rastlanılan I/O, IRQ ve DMA değerlerine ait tablolar bulacaksınız. Şayet her sistem yapılandırması sırasında sık sık çakışmalarla karşılaşıyor, yeni bir kart alıp sisteminize taktıktan sonra bir çok sorunla uğraşmak zorunda kalıyorsanız yazımızı dikkatlice okumanızı tavsiye ederiz. Sanırım diğer terimlerin daha kolay anlaşılabilmesi için işe I/O ile başlamakta fayda var.

I/O Nedir ?

Bilgisayarımızın patronu olan CPU' nun çevre aygıtlarıyla ve devre kartları (Ses Kartı, Ethernet Kartı vs.) ile iletişim kurmak ve bu aygıtları birbirinden ayırt edebilmek için kullandığı Giriş/Çıkış (Input/Output) adresleridir. Bu adresler "port adresleri" veya "donanım adresleri" olarak da bilinir. Zaten CPU' nun dış dünya ile iletişim kurmak için kullandığı iki yol vardır denilebilir. Bunlardan biri bilgisayarımızın ana belleğinin adresleri diğeri de bahsedildiği üzere I/O adresleridir.

Çoğu aygıtın kullanabileceği tek bir I/O adresi vardır. Mesela CPU klavye ile iletişim kurarken 60 ile 64 arasındaki (Hexadecimal tabanda) adres değerlerini kullanır. Bu adres aralığı klavye denetleyicisine (Keyboard Controller) ayrılmıştır. Yine aynı şekilde COM1 portunun I/O adres aralığı da 3F8-3FF 'dir. Bu adres başka bir aygıt tarafından kullanılamaz. Ancak bazı örnekler vardır ki (Ses kartı gibi) varsayılan I/O adresini başka bir donanıma tahsis etmiş olsanız da kendisi, başka bir adresi kullanacak şekilde kartı ayarlamanıza izin verebilir. Aşağıda sık karşılaşılan bazı I/O adresleri ve bunların hangi aygıtlar tarafından kullanıldığına ilişkin bir tablo sunulmuştur.

Adres Aralığı (Hexadecimal)

Kullanan Aygıt Türü

00-0F DMA Denetleyicisi
20-21 Programlanabilir Kesme Denetleyicisi - IRQ 0-7
60-64 Klavye Denetleyicisi
A0-A1 Programlanabilir Kesme Denetleyicisi - IRQ 8-15
1F0-1F8 Birinci sabit disk denetleyicisi
220-22F Wav aygıtı (Sound Blaster varsayılan)
278-27F LPT2
2E8-2EF COM4 seri port
2F8-2FF COM2 seri port
300-30F Ethernet Kartı (Standart değil)
330-33F MIDI portu (Standart değil)
378-37F LPT1 Yazıcı portu
3D0-3DF Grafik adaptörü
3E8-3EF COM3 portu
3F0-3F7 Disk denetleyicisi
3F8-3FF COM1 seri portu

I/O Adres Çakışmaları

Daha öncede belirttiğimiz gibi çoğu çevre birimi ve kartlar tek bir I/O adres aralığını kullanır. En basit şekliyle klavyenizin kullandığı I/O adres aralığını başka bir kart kullanmaya kalkarsa, bu kart çalışmayacak, bununla birlikte klavyenizde devre dışı kalacaktır. Zaten kart üretilirken klavyenin I/O adresini kullanacak bir kart tasarımı yapılmaz. Çünkü bu adres sabitdir ve klavye denetleyicisi tarafından kullanılmaktadır ve bir standart haline gelmiştir. Kartlar üretilirken bunlar göz önünde bulundurulan önemli kriterlerdir. "Peki o zaman I/O çakışmaları nasıl olabilir?" diye bir soru gelebilir aklınıza. Tablodan da görüleceği üzere bazı I/O değerleri standart değildir sorunlarda zaten bu aralık değerlerini kullanan kartlarda görülmektedir. Şayet aynı adresi birden fazla kart için ayarlarsanız çakışmaya sebep olacağı için kartlar görevlerini yapamayacaktır. Sistemde fazlalık olmaktan öteye gidemeyecektir. Fakat şunu da belirtmekte fayda var güncel sistemler ve işletim sistemlerinin "Plug and Play" (Tak ve Çalıştır) özelliğine sahip olması sebebiyle sistem yapılandırması eskisi kadar zor değildir. Eğer şansınız yaver giderse ilk seferde tüm ayarlar sizin için işletim sisteminiz tarafından yapılacaktır. İsterseniz şimdi "Plug and Play" teknolojisi ile ilgili bir kaç önemli noktaya değinelim.

Plug and Play Teknolojisi 

Bu teknoloji ile sistem yapılandırılması kabus olmaktan biraz olsun çıkmış ve donanım ayarları daha kolay yapılır hale gelmiştir. Bir PnP (Plug and Play) aygıtını konfigüre etmesi için kullanıcının yapması gereken aygıtı fiziksel olarak bilgisayara yüklemesidir. Bilgisayarınızı açtığınız zaman işletim sisteminiz (Windows 95/98 gibi) yeni aygıtı otomatik olarak teşhis edecek ve gerekli ayarları sizin için yapacaktır. Ama her zaman işler bu kadar kolay olmayabilir. İşte o zaman iş size düşecek ve sistem konfigürasyonunu bu yazımızda belirtilen kriterlere dikkat ederek yapmanız gerekebilecek.

Plug and Play İçin Gerekenler

PnP' ın işlev görebilmesi için üç şeye ihtiyacı vardır.

  • PnP destekli bir işletim sistemi
  • PnP destekli bir anakart
  • PnP destekli aygıt

Güncel çoğu anakart ve aygıt PnP desteğine sahiptir. Bununla birlikte, işletim sistemlerinde durum biraz farklıdır. Windows 95/98, Windows 2000 işletim sistemleri PnP'yi destekler. Windows NT 4.0 ve Linux ise PnP'yi sadece ISA kartlar için desteklerler.

NOT: Plug and Play bir işletim sistemi kullanıyorsanız, sistem BIOS'undaki "Plug and Play Operating System" veya benzeri ("PnP OS Installed" gibi) bir ayarı mutlaka devreye sokun. Tüm sistemlerde bu tür bir ayar yoktur. Şayet BIOS'unuzda  bu tür bir ayar yoksa endişelenmeyin. 

Plug and Play Nasıl Çalışır ?

Plug and Play her şeyden önce Plug and Play uyumlu bir anakartla başlar. Bu anakartımızın Plug and Play' ı anlayan bir BIOS' u vardır. Artık günümüzde üretilen kartların hemen hemen hepsi Plug and Play uyumlu olarak üretilmektedir.

Windows 95/98 her başlatıldığında Configuration Manager adındaki bir yazılım ögesi, sisteminizde bulunan tüm kartlara hangi kaynaklara gereksinimi olduğunu ve hangi kaynak arasını kabul edeceğini sorar. Her aygıtın Windows' a ne tip bir aygıt olduğunu nasıl ayarlaması gerektiğini söyleyen bir tanımlayıcısı (sürücüsü) vardır. Configuration Manager daha sonra kartlara gerekli kaynakları atayarak çakışmalarını önler. Bunları kurarken, her aygıtın kurulum ile bilgisini de Registry' de saklar.

Her yeniden başlatılma sırasında Windows 95/98 sahip olması gereken bütün Play and Play aygıtların mevcut olup olmadığına bakar ve yeni eklenen bir aygıtın olup olmadığını araştırır.

Windows 'da Device Manager 'ın Kullanılması

Windows 'da donanım bilgilerine Control Panel/System Properties/Device Manager 'dan veya masaüstünde bulunan "My Computer" ögesinin üzerinde mouse'unuzun sağına tıklayıp "Properties" seçeneğinden "Device Manager" tablosuna ulaşabilirsiniz. Burada Windows 'un çalışırken RAM 'de tüm aygıtlar için oluşturduğu donanım bilgileri mevcuttur. Bu kısımdan birçok aygıt ayarını istediğiniz şekilde düzenleyebilirsiniz.

"Device Manager" sizin donanımla ilgili ayarlamalar yapmanıza olanak sağlarken aynı zamanda size yol gösterici bilgiler sunar. Örneğin bir aygıtın sistemle uyumlu olup olmadığını, sistemle aygıtın çakışıp çakışmadığının analizini yapar.

Şekilde görüldüğü üzere ünlem işareti, Windows 'un o aygıtın düzgün çalışmadığına inandığının bir göstergesidir. Windows tarafından size sunulan problemin ne olduğunu öğrenmek için ünlem işareti olan aygıtın üzerine çift tıklayabilirsiniz ya da aygıt seçili iken "Properties" butonuna basarak Windows 'un size çakışmanın sebebi ile igili sunduğu bilgilere ulaşabilirsiniz. Soruna uygun olarak hemen gerekli düzeltmeleri ve ayarları yapabilirsiniz. Her zaman olmasa bile sorunu çözme olasılığınız var.

"Device Manager" ile yapabileceğiniz herşeyi Registry ile de yapmak mümkün. Ancak Registy editörü tarafından sağlanan ayrıntılı denetim genellikle donanım ayarları için kullanışlı değildir.

Plug and Play aygıtları, artık günümüzde çoğunlukla yazılım yardımıyla kaynak-düzenlemeli (Resource-Configurable) olarak çalışır. Yine bazı kartlarda I/O, DMA ve IRQ gibi ayarların Jumper' lar veya DIP anahtarları ile yapılabilir. Ama belirttiğimiz gibi bunun sayısı gitgide azalmaktadır.

IRQ Nedir ?

IRQ (Interrup Request), Türkçe karşılığı olarak kesme talebi anlamındadır. Donanım kesmeleri ve Yazılım kesmeleri olmak üzere iki kısımda incelemek mümkün ancak biz bu yazımızda sizlere hep donanım kesmelerinden bahsediyor olacağız. Bilgisayarımızın merkezi işlem ünitesi olaran CPU çevre birimleri ile olan tüm iletişimleri de başlatır, onların yönetimini elinde tutar. Peki herhangi bir çevre birimi CPU' nun kendisi ile ilgilenmesini nasıl sağlayacak, onun dikkatini nasıl çekecek. İşte bu noktada IRQ (Donanım Kesmeleri) devreye girer. IRQ, çevre birimlerininin dikkat çekmek için kullandığı iki yöntemden bir tanesidir. Diğer yöntem ise Polling (Oylama) olarak bilinir. Bu yöntemden de yazımızın ilerleyen kısmında bahsedilecektir. Aşağıdaki şekilde benim sistemime ait olan IRQ dağılımları görülmektedir.

Konunun tam olarak anlaşılabilmesi için isterseniz bir örnek üzerinde IRQ 'nün işlevine bakalım. Çevre birimi olarak yazıcımızı ele alalım. CPU, -yazımızın I/O kısmında öğrendiğimiz üzere- yazıcımız ile iletişimi 378 nolu I/O adresi üzerinden sağlar. Şimdi yazıcımıza yazdırılmak üzere birtakım veriler gönderdiğimizi düşünelim. Yazıcıya gönderdiğimiz veriler basıldıktan sonra yazıcının kendisine gelen verileri yazdırdığını yeni bir görev için hazır olduğunu bildiren bir sinyal yollaması gerekir ki CPU verilerin devamını da yollayabilsin. Çok görevli bir işletim sisteminde aynı anda bir kaç işin yapılabilmesi için CPU' nun artık yazıcı ile ilgilenmesini bırakıp sistemin diğer işlerini yapması gerekli. Şayet tek görevli bir işletim sisteminde çalışıyorsanız (DOS gibi) CPU' nun zaten yapacak bir işi olmayacaktır. Bu ancak çok görevli işletim sistemlerinde bizim için çok büyük bir kazanç olacaktır. İşte IRQ ile yazıcı, CPU' nun dikkatini çekerek, görevinin bittiğini yeni görev için hazır olduğunu söyler. Bu yöntem çevre birimlerinin dikkat çekmek için kullandığı en iyi yöntemdir. Diğer yönteme gelince...

Polling (Oylama)

Bu yöntemi kesmelerden ayıran en büyük özellik CPU' nun aynı anda birden fazla işi yapabilmesine izin vermemesidir. Bu durumda işletim sisteminizin çok görevli (Windows 95/98 gibi) veya tek görevli (DOS gibi) olmasıda bir şeyi değiştirmeyecektir. Önceki örnekte yazıcı işini bitirdiği zaman CPU' yu uyaran bir sinyal göndererek işini bitirdiğini bildirir demiştik. İşte burda tüm yük CPU' ya kalıyor. CPU yazıcıyı sürekli gözetleyerek, işini bitirip bitirmediğini öğrenmeye çalışır. İlk etapda gönderdiği verilerin basılıp bittiğini anlayınca yeni veriler göndermeye devam eder. Çok görevli işletim sistemlerinin yaygın olarak kullanıldığı günümüzde bu yöntemin kullanılmamasının sebebi sanırım anlaşılmıştır.

Kesmeler (IRQ) Nasıl Çalışır ?

Bilgisayarımızdaki kesmeler Intel 8259 öncelikli kesme denetleyicisi (PIC) tarafından sağlanır. Önceleri ayrı bir çip olarak bulunan bu kesme denetleyicisi, günümüz bilgisayarlarında anakartın çip setinde yerleşik olarak bulunmaktadır. Bir kesme talebi geldiğinde 8259 Cpu' yu elindeki işi geçici olarak durdurmaya ve hemen bu kesmeyi yönetmesine olanak sağlayan bir programı çalıştırmaya iter. CPU kesme hizmet programına dallanırken dönüş adresini yığın hafızada saklar ve işi bitince tekrar kaldığı işleme yine kaldığı yerden devam eder. Bir çok aygıt aynı anda kesme hizmeti isteyebilir. Sistem tarafından belirlenmiş öncelik sırasına göre talepler karşılanır. Genelde kesme hizmet programı yüksek önceliğe sahip bir işlem tarafından kesilebilir. Ama daha öncelikli veya eşit seviyedeki bir cihazdan kesme talebi gelirse o anki kesme programı bitene kadar bu istek saklanır.

Kesmelerin (IRQ) Seçilmesi

Intel 8259' da sekiz adet IRQ hattı bulunur. Bunların bir tanesi zamanlayıcı diğeri de klavye için ayrıldığı zaman geriye altı adet (IRQ 3-7) IRQ hattı kalmaktaydı. Bu bilgisayarların konfigüre edilmesinde daha sonraları yetmemeye başladı ve ikinci bir 8259' un daha kullanılmasını gerekli kıldı. Bu sayede IRQ seviyeleri onaltıya ulaşmış oldu. Aşağıdaki tabloda sık kullanılan IRQ seviyeleri açıklamalarıyla birlikte sunulmakta.

Kesme Hattı Aygıt Açıklama
0 Sistem zamanlayıcısı Çevre Birimleri tarafından Erişilemez
1 Klavye Çevre Birimleri tarafından Erişilemez
2 8-15 numaralı IRQ'lar İkinci 8259 için
3 Com2 Aynı zamanda Com4. Ancak sadece biri
4 Com1 Aynı zamanda Com4. Ancak sadece biri
5   Genellikle serbesttir
6 Disket Denetleyicisi  
7 LPT1  
8 Gerçek zaman saati Çevre Birimleri tarafından Erişilemez
9   Yönlendirilmiş IRQ2
10   Genellikle serbesttir
11   Genellikle serbesttir
12 PS/2 tipi fare portu Muhtemelen IRQ12 yi kullanır
13 Ek işlemci  
14 Birinci sabit disk arabirimi Birincil PCI EIDE arabirimi (HD)
15 İkincil sabir disk arabirimi İkincil PC EIDE arabirimi (Ayrılmış)


Bir kart taktığınız zaman IRQ ya gereksinim duyuyorsa yapacağınız en iyi şey ilk önce IRQ 9, 10, 11 veya 5' i belirtilen sırada aramaktır. Şayet Paralel portu kullanmıyorsanız LPT1 ' i devre dışı bırakarak IRQ 7 'yi de kullanabilirsiniz. Eğer bir tane sabit disk ve CD-ROM sürücünüz varsa IRQ 'den tasarruf etmek için bunları aynı EIDE arabirimini kablosuna bağlayabilirsiniz. Daha sonra ikinci EIDE birimini devre dışı bırakarak, ikincil EIDE birimi için ayrılmış olan IRQ 15 'i de kullanma imkanınız doğacaktır. Ancak şunu söylemek gerekir ki tüm sistemler ikinci EIDE birimini devre dışı bırakmanıza izin vermeyebilir.

DMA Kanalları

Bu kanallar sistem belleğine bazı aygıtların (Ses kartı, Ethernet kartı gibi) erişimini hızlandırmak için kullanılırlar. Bir sabit disk disk denetleyicisi sabit diskten bazı verileri aldıktan sonra bunları RAM' e depolamak ister. Aynı şekilde yerel iletişim ağı (Ethernet kartı) kartından da veri geldiğinde bunların RAM' e depolanması gerekebilir. Bunları I/O adresleri üzerinden CPU'ya oradan da RAM' e göndermek yerine bazı kartların kullabildiği DMA (Direct Memory Access - Direk Bellek Erişimi) kanalları vasıtasıyla daha hızlı ve CPU' yu da meşgul etmeden direk RAM' e ulaştırmak mümkün. Bu sayede CPU meşgül edilmemiş olacak vede bizim isteğimiz daha hızlı bir şekilde yerine getirilmiş olacaktır.Tekrar özetlersek DMA verileri bir çevre biriminden RAM' e veya RAM' den çevre birimini CPU' nun müdahalesine gerek kalmadan aktarabilmeyi sağlar. Çevre birimlerinin birbirine direk ulaşmasına imkan sağlayamaz. Sisteminize DMA kullanmak üzere kaç tane kart takılabileceği sınırlıdır.

Günümüz sistemlerinde iki adet 8237A DMA denetleyici çipi vardır. Birbirine seri bağlı olan bu iki çip toplam 7 adet DMA kanalının kullanılmasına olanak sağlar. Buna ilişkin tablo aşağıda verilmiştir.

Kanal Kullanımı Genişlik
0 Dinamik RAM Güncelleme 8-bit
1 Genelde Ses kartları kullanır 8-bit
2 Disket denetleyicisi 8-bit
3 Ayrılmış 8-bit
4 DMA1-DMA2 seri bağlantısı -
5 Ayrılmış 16-bit
6 Ayrılmış 16-bit
7 Ayrılmış 16-bit

Günümüzde kullanılan PCI veri yolu için yapılmış çoğu kart Cpu' ya gerek duymadan veri yolunun desteklediği maksimum hızda veri transferi yapabilir. Onun için veri yolu yönetimi DMA' nın ciddi bir alternatifi olarak karşımıza çıkmakta.

02.04.2000