Veri yolu (bilgisayar)

Veri yolu, bilgisayar yapısında, bilgisayarın içindeki parçalar arasında ya da bilgisayarlar arasında verileri ya da gücü transfer eden bir alt sistemdir ve genellikle aygıt yürütme (device driver) yazılımı tarafından kontrol edilir. Nokta- nokta bağlantısının (point- to point connection) tersine, veri yolu, birçok çevresel aygıtı aynı takım kablo ile mantıksal olarak bağlayabilir. Her bir veri yolu kendi bağlayıcılarını fiziksel fiş aygıtlarına, kartlara veya kabloların tümüne karşı tanımlar.

İlk bilgisayar veri yolları, tam olarak paralel elektriksel veri yollarıydı, fakat bu terim şimdilerde paralel elektiriksel veri yolu ile aynı mantıkta işlevsellik sağlayan herhangi bir fiziksel düzenleme için kullanılıyor. Modern bilgisayar veri yolları hem paralel hem de kısa-seri (bit-serial) bağlantılarını kullanabilir, ya multidrop (elektiriksel paralel) ya da DAISY CHAIN topoloji elektrik tesisatı ile donatılabilir ya da USB’de olduğu gibi, çevrilmiş hareket noktası ile bağlanabilir.

İlk bilgisayar veri yolları belleğe ya da çevresel aygıtlara bağlanmış tel yumaklarıydı. Bunlar, elektiriksel veri yollarının ya da elektrik bağlama çubuklarının ardından isimlendirilmiştir. Neredeyse her zaman, bellek için bir veri yolu ve çevresel aygıtlar için başka bir veri yolu vardır ve bunlar farklı talimatlarla, tamamen farklı zamanlama ve protokol ile giriş yaparlar.

Birinci engel, kesilmeler (interrupts) kullanmaktı. İlk bilgisayarlar çevresel aygıtların hazır olması için bir halka içinde bekleyerek I/O (input/output) görevini gerçekleştirirlerdi. Bu da başka görevler de yapmak zorunda olan programlar için zaman kaybı olurdu. Ayrıca, eğer program diğer görevleri yapmak için girişimde bulunursa, programın tekrar kontrol etmesi çok uzun sürebilirdi ve verilerin kaybolmasıyla sonuçlanabilirdi. Bu nedenle mühendisler merkezi işlem birimi (MİB) ile arasını açmak için çevresel aygıtları hazırladılar. Kesilmeler öncelikli olmak zorundaydı, çünkü MİB bir seferde sadece bir çevresel aygıtın üstesinden gelebilir ve bazı aygıtlar diğerlerinden daha kritik zamanlı olabilirdi.

Bundan bir süre sonra, bazı bilgisayarlar bellek ile birkaç MİB arasında paylaşıma başladı. Bu bilgisayarlarda buna ek olarak veri yoluna ulaşım öncelikli hale getirilmeliydi.

İki veri yoluna sahip DEC, küçük, kütle oluşturan bilgisayarlar ve bellek veri yolunu içindeki klasör oluşturmuş çevresel aygıtlar için gereksiz ve pahalı görünüyordu; öyle ki aygıtlar bellek yerleri gibi algılanıyordu. Zamanında, bu çok cesaret isteyen bir tasarımdı. Yalnız kendi menfaatini düşünen kimseler başarısızlığın habercisiydi.

Ilk mikrobilgisayar veri yolu sistemleri gerçekte MİB’nin bacaklarına (pins) bağlı pasif arka planlardı. Bellek ve diğer aygıtlar aynı adres ve MİB’nin kendisinin kullandığı veri bacakları kullanılarak, paralel bağlanarak veri yoluna eklendi. Bazı örneklerde, IBM PC gibi, talimatlar hala MİB’nden, gerçek I/O veri yolu gerçekleştirmekte kullanılabilir ve sinyaller oluşturur.

Birçok mikrodenetleyicilerde ve gömülü sistemlerde, I/O veri yolu hala yoktur. İletişim MİB tarafından kontrol edilir, bunlar bellek blokları gibi aygıtlardan gelen verileri okur ve yazar, bunların hepsi MİB’nin hızını kontrol eden bir merkezi saat tarafından zamanlanmıştır. Aygıtlar diğer MİB bacaklarına işaret vererek bakım ister, tipik olarak kesilmelerin bazı formlarını kullanırlar.

Örneğin, bir disk sürücü denetleyicisi yeni verinin okunmaya hazır olduğunu MİB’ne işaret eder, bu noktada MİB belleği okuyarak, disk sürücüsünün uygun yerine gönderir. Neredeyse tüm ilk bilgisayarlar, ALTAİR’in içindeki S-100 veri yolundan başlayarak, 1980'ler deki IBM PC’ye kadar bu tarzda üretilmişlerdir.

Bu basit veri yolu sistemlerinin genel-amaç bilgisayarları için ciddi dezavantajları vardı. veri yolunun üzerindeki her donanımın aynı hızda olması gerekir, bu nedenle tek bir saati paylaşırlar.

MİB’nin hızını artırmak kolay bir iş değildir, çünkü buna ek olarak tüm aygıtların da hızı artırılmak zorundadır. Bu genellikle garip bir duruma yol açar, çok hızlı MİB'leri bilgisayardaki diğer aygıtlarla iletişim kurabilmek için yavaşlamak zorundadır. Embedded sistemler kısa süre kabul edilebilir olsa da, bu problem kâr amaçlı bilgisayarlarda uzun süre tolere edilemez.

Diğer bir problem de, MİB her işlem için gereklidir, bu nedenle eğer MİB başka işlerle meşgulse, veri yolu tarafından üretilen gerçek iş çarpıcı bir şekilde değer kaybedebilir.

Bu tip veri yolu sistemlerinin yapılandarılması, sıradan bir aygıt tarafından yapılğı zaman, zordur. Tipik olarak, her eklenen PC board’u bellek adreslerini, I/O adreslerini, öncelikli kesilme(interrupt) ve kesilme numaralarını belirlemek için, birçok geçici olarak kullanılan bağlantı teline gereksinim duyulur.

‘İkinci nesil veri yolu sistemleri Nuveriyolu gibi bu problemlerin bazılarına hitap eder. Bunlar tipik olarak bilgisayarı iki farklı ‘dünya’ya böler, aralarında bir veri yolu denetleyicisi ile, MİB ve bellek bir tarafta, çeşitli aygıtlar diğer tarafta. Bu; veri yolunu etkilemeden MİB’nin hızını artmasını sağlar. Bu aynı zamanda bilgilerin MİB’nden kartlara ve denetleyicilere dağılması yükünün çoğunu kaldırır, böylece veri yolunun üzerindeki aygıtlar MİB’nin müdahalesi olmadan birbirleriyle iletişim kurabilirler. Bu ‘gerçek dünya’ performansının daha iyi olmasını sağlar, bunun yanı sıra çok daha kopleks kartlara ihtiyaç duyar. Bu veri yolları aynı zamanda, veri yolunun boyut olarak daha büyük olması nedeniyle hız konularına da hitap etmektedir, ilk nesildeki 8-bitlik paralel veri yollarından, ikinci nesilde 16 ya da 32-bit e doğru artar, buna ek olarak geçici olarak kullanılan bağlantı tellerinin (jumpers) yerine geçmek için yazılım planı eklenir (şimdilerde Plug-n-play olarak standardize edilmiştir).

Ama bu yeni sistemler eski benzerleri gibi bir özellik taşır, bu da veri yolunun üzerindeki her şeyin aynı hızda iletişim kurma zorunluluğudur. MİB şimdilerde diğerlerinden ayrılmış ve korkusuzca hızını artırabilse de, MİB’leri ve bellek hızlarını iletişim içinde bulundukları veri yollarından daha süratle arttırır. Bunun sonucu da veri yolu, modern sistem için gerekli olandan çok daha yavaş bir şekilde hızlanır ve mekanizma verilerden yoksun kalır. Bu probleme en genel örnek, PCI gibi yeni veri yolu sistemlerinde bile video kartları çabucak biter ve bilgisayarlar sadece video kartını okumak için AGP(accelerated graphics port) bulundurmaya başladılar. 2004'ten beri high-end video kartları ile hızla büyüyen AGP PCI Express veri yolunun yerini aldı.

Artan sayıdaki dış aygıtlar ek olarak kendi veri yolu sistemleriyle çalışmaya başladılar. Disk sürücüsü ilk kez tanıtılırken, makineye veri yolundaki bir kart fişi ile eklenir, bu nedenle veri yolunun üzerinde çok sayıda slot vardır. Fakat 1980 ve 1990 dan itibaren, SCSI(small computer system interface) ve IDE(integrated drive electronics) gibi yeni sistemler bu ihtiyacı karşılamak için ortaya çıktı ve modern sistemlerde birçok slotun boş kalmasını sağladı. Şimdilerde tipik bir makinede farklı aygıtları destekleyen yaklaşık 5 farklı veri yolu vardır.

Daha sonra yaralı bir ayrım popüler olmaya başladı; çevresel(external) veri yoluna karşılık yerel (local) veri yolu kavramı. Yerel veri yolu sistemleri içerideki aygıtlarda kullanılmak için, örneğin, grafik kartları, çevresel veri yolu ise tarayıcı(scanner) gibi dış aygıtların eklenmesi için tasarlandı. ‘Yerel‘ aynı zamanda VL-veri yolu ve PCI işlemcisi ISA’dan daha yakındır anlamına da gelir. IDE kullanılış şekline göre bir çevresel veri yoludur fakat daima makinenin içinde bulunur. ‘yerel’

HyperTransport ve InfiniBand dahil olmak üzere ‘üçüncü nesil’ veri yolları şimdilerde markete gelme aşamasında. Bunlar hafıza ve video kartlarını besleyebilmek için gerekli çok yüksek hızlara çıkabilen özelikler kapsar, bunun yanı sıra disk sürücüleri gibi daha yavaş aygıtlarla iletişim kurarken yavaşlarlar. Aynı zamanda fiziksel bağlantılarında çok esnek olmaya yatkındır, ve bu hem dahili(internal) veri yollarında hem de farklı makineleri birbirine bağlamada kullanılmasına olanak sağlar. Farklı istekleri karşılamaya çalışırken, kompleks problemlere yol açabilir, bu nedenle bu sistemlerdeki işin büyük bölümü donanım’ın(hardware) kendisinin tersine yazılım(software) tasarımı ile alakalıdır. Genel olarak, üçüncü nesil veri yolları network gibi görünmeye veri yolunun orijinal kavramından daha yatkındır, ilk sistemlerden daha yüksek protokole ihtiyaç duyarlar , böylece birçok aygıtın veri yolu aynı zamanda kullanmasına olanak sağlar.

Diğer bir yol, entegre devreler daha önceden tasarlanmış mantıkla tasarlanır, ‘entelektüel özellik’. Wishbone gibi veri yolları entegre devrelerin birbirleriyle iletişimine olanak sağlayacak şekilde geliştirilmiştir.

Bir zamanlar ‘veri yolu’ elektriksel paralel sistem, MİB üzerindeki pinler ile aynı ya da benzer elektrik ileticileri, anlamına gelmekteydi. Şu anda durum bu şekilde değil, modern sistemler veri yolları ve ağlar arasında veri yolları yaymaktadır.

Veri yolları verileri birçok veri yoluna dağıtan paralel veri yolu ya da verileri bit-serial biçimde dağıtan seri veri yolları olabilir. Fazladan güç ve kontrol bağlayıcıları, diferansiyel sürücüler, ve her yönde veri bağlayıcılarının eklenmesi, birçok seri veri yolunun I²C seri veri yolunda kullanılan minimum ikiden daha fazla iletkene sahip olduğu anlamına gelir. Veri hızı arttıkça, zamanlamada çarpıklık ve veri yollarının karışması gibi problemlerin üstesinden gelmek daha zorlaşır. Bu probleme kısmi çözüm, veri yolunda çifte pompa yapmaktır. Çoğunlukla, daha az elektiriksel bağlantısı olmasına rağmen, seri veri yolu daha yüksek veri derecelerinde paralel veri yoluna oranla daha iyi iş görür. Çünkü doğal olarak seri veri yollarında zamanlamada çarpıklık ve veri yollarının karışması ile karşılaşılmaz. Buna örnek olarak USB, FireWire, ve Serial ATA verilebilir. Multidrop bağlantılar hızlı seri veri yollarıyla çok iyi çalışmaz, bu nedenle birçok modern seri veri yolu DAİSY CHAİN veya HUB modelini kullanır.

Birçok bilgisayar hem dahili(internal) hem de çevresel(external) veri yoluna sahiptir. Dahili(Internal) veri yolu bilgisayarın tüm dahili(internal) parçalarını ana boarda bağlar. ( ve bu nedenle, MİB ve dahili (internal) bellek). Bu tip veri yolları yerel(local) veri yolu olarak da adlandırılabilir, çünkü bunlar diğer makinaları veya bilgilgisayarın çevresel(external) aygıtlarını değil, yerel(local) aygıtlarını bağlarlar. Çevresel (external) veri yolu çevresel (external) kısımları ana boarda bağlar.

Aradaki farkın büyük çoğunluğu pratik yerine kavramsal olsa bile, Ethernet gibi Network bağlantıları genellikle veri yolu olarak kabul edilmez. InfiniBand ve HyperTransport gibi teknolojilerin gelmesi, networkler ve veri yolları arasındaki sınırı bulandırdı. Veri yolunda dahili(internal) ve çevresel(external) arasındaki çizgi bazen belirsizleşti, I²C hem dahili(internal) hem de çevresel(externall) veri yolu olarak kullanılabilir (erişim(access) veri yolu olarak da bilinir), ve InfiniBand hem PCI gibi dahili(internal) veri yolunun hem de Fibre Channel gibi çevresel(external) veri yolunun yerine geçebilir.

Kişisel bilgisayarlara genellikle laptoplara modern eğilim, modem jack, Cat5, USB, headphone jack, ve opsiyonel VGA veya FireWire dışındaki tüm çevresel(external) bağlantıları çıkarma yönünde ilerlemekte.

Ağ (Network)'da esas programcı veri trafiğini kontrol eder. Veriler transfer edilirken bilgisayar programcıya mesaj gönderir bu da istekleri sıraya koyar. Bu mesaj ağ (network) noktalarının her birine yayılan tanıtma kodu içerir. Programcı öncelikleri yapar ve veri yolu mevcut olduğu sürece alıcıya bildirir.

Tanıtılan nokta mesajı alır ve iki bilgisayar arasında veri transferini yapar. Veri transferini tamamlayınca, programcının sıralamasında bir sonraki istek için veri yolu serbest kalır.

Veri yolunun avantajı: Bilgisayara direkt olarak ulaşılabilir ve mesaj çok basit ve hızlı bir yolla iletilebilir. Dezavantaj: sıklık ve öncelik trafiğini organize edebilmek için programcıya ihtiyacı vardır.