# Veriyolu (bilgisayar)
Veriyolu, 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, veriyolu, birçok çevresel aygıtı aynı takım kablo ile mantıksal olarak bağlayabilir. Her bir veriyolu kendi bağlayıcılarını fiziksel fiş aygıtlarına, kartlara veya kabloların tümüne karşı tanımlar.


## Tarihçe.
İlk bilgisayar veriyolları, tam olarak paralel elektriksel veriyolularıydı, fakat bu terim şimdilerde paralel elektiriksel veriyolu ile aynı mantıkta işlevsellik sağlayan herhangi bir fiziksel düzenleme için kullanılıyor. Modern bilgisayar veriyolları 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 veriyolları belleğe ya da çevresel aygıtlara bağlanmış tel yumaklarıydı. Bunlar, elektiriksel veriyolularının ya da elektrik bağlama çubuklarının ardından isimlendirilmiştir. Neredeyse her zaman, bellek için bir veriyolu ve çevresel aygıtlar için başka bir veriyolu 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 veriyoluna ulaşım öncelikli hale getirilmeliydi.
Kesilmeleri ya da veriyoluna ulaşımı öncelikli hale getirmenin klasik ve basit yolu DAİSY CHAİN'di.
İki veriyoluna sahip DEC, küçük, kütle oluşturan bilgisayarlar ve bellek veriyolunu 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 veriyolu 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 veriyoluna eklendi. Bazı örneklerde, IBM PC gibi, talimatlar hala MİB'nden, gerçek I/O veriyolu gerçekleştirmekte kullanılabilir ve sinyaller oluşturur.
Birçok mikrodenetleyicilerde ve gömülü sistemlerde, I/O veriyolu 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 veriyolundan başlayarak, 1980'ler deki IBM PC'ye kadar bu tarzda üretilmişlerdir. 
Bu basit veriyolu sistemlerinin genel-amaç bilgisayarları için ciddi dezavantajları vardı. veriyolunun ü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, veriyolu tarafından üretilen gerçek iş çarpıcı bir şekilde değer kaybedebilir.
Bu tip veriyolu 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.
‘İkinci nesil veriyolu sistemleri Nuveriyolu gibi bu problemlerin bazılarına hitap eder. Bunlar tipik olarak bilgisayarı iki farklı ‘dünya’ya böler, aralarında bir veriyolu denetleyicisi ile, MİB ve bellek bir tarafta, çeşitli aygıtlar diğer tarafta. Bu; veriyolunu 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 veriyolunun ü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 veriyolları aynı zamanda, veriyolunun boyut olarak daha büyük olması nedeniyle hız konularına da hitap etmektedir, ilk nesildeki 8-bitlik paralel veriyoluları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 veriyolunun ü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ı veriyolularından daha süratle arttırır. Bunun sonucu da veriyolu, 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 veriyolu 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 veriyolunun yerini aldı.
Artan sayıdaki dış aygıtlar ek olarak kendi veriyolu sistemleriyle çalışmaya başladılar. Disk sürücüsü ilk kez tanıtılırken, makineye veriyolundaki bir kart fişi ile eklenir, bu nedenle veriyolunun ü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ı veriyolu vardır. 
Daha sonra yaralı bir ayrım popüler olmaya başladı; çevresel(external) veriyoluna karşılık yerel (local) veriyolu kavramı. Yerel veriyolu sistemleri içerideki aygıtlarda kullanılmak için, örneğin, grafik kartları, çevresel veriyolu ise tarayıcı(scanner) gibi dış aygıtların eklenmesi için tasarlandı. ‘Yerel‘ aynı zamanda VL-veriyolu ve PCI işlemcisi ISA'dan daha yakındır anlamına da gelir. IDE kullanılış şekline göre bir çevresel veriyoludur fakat daima makinenin içinde bulunur. ‘yerel’


## Üçüncü nesil.
HyperTransport ve InfiniBand dahil olmak üzere ‘üçüncü nesil’ veriyolları şimdilerde markete gelme aşamasında. Bunlar hafıza ve video kartlarını besleyebilmek için gerekli çok yüksek hızlara çıkabilen özellikler 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) veriyoluları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 veriyolları network gibi görünmeye veriyolunun orijinal kavramından daha yatkındır, ilk sistemlerden daha yüksek protokole ihtiyaç duyarlar, böylece birçok aygıtın veriyolu 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 veriyolları entegre devrelerin birbirleriyle iletişimine olanak sağlayacak şekilde geliştirilmiştir.


## Tanım.
Bir zamanlar ‘veriyolu’ 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 veriyolları ve ağlar arasında veriyolları yaymaktadır. 
veriyolları verileri birçok veriyoluna dağıtan paralel veriyolu ya da verileri bit-serial biçimde dağıtan seri veriyolları 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 veriyolunun I²C seri veriyolunda kullanılan minimum ikiden daha fazla iletkene sahip olduğu anlamına gelir. Veri hızı arttıkça, zamanlamada çarpıklık ve veriyolularının karışması gibi problemlerin üstesinden gelmek daha zorlaşır. Bu probleme kısmi çözüm, veriyolunda çifte pompa yapmaktır. Çoğunlukla, daha az elektiriksel bağlantısı olmasına rağmen, seri veriyolu daha yüksek veri derecelerinde paralel veriyoluna oranla daha iyi iş görür. Çünkü doğal olarak seri veriyolularında zamanlamada çarpıklık ve veriyolularının karışması ile karşılaşılmaz. Buna örnek olarak USB, FireWire ve Serial ATA verilebilir. Multidrop bağlantılar hızlı seri veriyolularıyla çok iyi çalışmaz, bu nedenle birçok modern seri veriyolu DAİSY CHAİN veya HUB modelini kullanır. 
Birçok bilgisayar hem dahili(internal) hem de çevresel(external) veriyoluna sahiptir. Dahili(Internal) veriyolu bilgisayarın tüm dahili(internal) parçalarını ana boarda bağlar. (ve bu nedenle, MİB ve dahili (internal) bellek). Bu tip veriyolları yerel(local) veriyolu 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) veriyolu ç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 veriyolu olarak kabul edilmez. InfiniBand ve HyperTransport gibi teknolojilerin gelmesi, networkler ve veriyolları arasındaki sınırı bulandırdı. veriyolunda dahili(internal) ve çevresel(external) arasındaki çizgi bazen belirsizleşti, I²C hem dahili(internal) hem de çevresel(externall) veriyolu olarak kullanılabilir (erişim(access) veriyolu olarak da bilinir) ve InfiniBand hem PCI gibi dahili(internal) veriyolunun hem de Fibre Channel gibi çevresel(external) veriyolunun 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.


## Veriyolu yapısı.
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 veriyolu 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 veriyolu serbest kalır.
veriyolunun 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.