Harvard mimarisi

Harvard mimarisi, veri ve komutların Merkezi İşlem Birimine (MİB veya sık kullanılan ismiyle CPU) giden kanallarının ayrılması ile oluşturulmuş MİB mimarisidir. İsmini ilk kez bu mimariyi kullanan bilgisayar Harvard Mark I'den almıştır. Bu mimariyi kullanan makinalar, veriler ile komutlar arasında herhangi bir köprü bulundurmazlar. Veri adresi 8-bit iken program (komut) adresi genellikle 14-bittir.

Günümüz bilgisayarlarında tam anlamıyla kullanıldığı söylenilemez. Yine de Von Neumann mimarisi ve Harvard mimarisinden ortak özellikler günümüz teknolojisinde kullanılmaktadır.

Bellek adresleme
Harvard mimarisinde,  veriler ve komutların bellek adreslemeleri belleklerde farklı özellik gösterebilir. Komutlar okunabilir belleklerde genellikle tutulurken, veriler yapıları geneliyle okunur-yazdırılabilir belleklerde tutulur. Harvard mimarisi, adreslemelerde farklılıklara olanak tanır.

Diğer mimarilerle kıyaslanması

Von Neumann mimarisiyle kıyaslanması

Von Neumann mimarisinde, işlemcinin doğası gereği ya komutlarla ya da verilerle uğraşması zorunluluğu vardır. Çünkü ikisi de aynı belleği paylaşmaktadır. İkisinin aynı anda olması durumu söz konusu değildir. Harvard mimarisini kullanan bir bilgisayarda ise komut ve veriler ayrı tutulduğu için, işlemci aynı esnada hem komutları değerlendirip hem verileri işleyebilir. Bir önbelleğe de gerek yoktur. Bu Harvard mimarisine bir avantaj olsa da; Von Neumann mimarisinde komutlar verilerle bir tutulduğundan, program kendi kendine değişim gösterebilir. Harvard mimarisinde ise komutlar ile veriler arasında bir kanal yoktur bu yüzden kodların içine veri gömülmüş programlar çalıştırılırken veya kendi kendine değişim gösterilecek programlar için Von Neumann mimarisi baz alınır.

Ayrıca, bellek adresleri açısından Harvard mimarisi iki ayrı adres kullandığından; boş komut adresi boş veri adresinden de farklı olacaktır. Von Neumann mimarisinde ise ikisi aynı adresi paylaşır.

Değiştirilmiş Harvard mimarisi
Değiştirilmiş Harvard mimarisi, Harvard mimarisindeki veri-komut bağlantısının eksikliğini gidermesi amacıyla yapılan düzenlemelere verilen isimdir. İşlemci halen veri ve komut erişimine de sahip olsa da aralarında bağlantılar vardır. Bu düzenlemelerden en önemlisi aynı bellek adresi tarafından desteklenen ayrı iki önbellek kullanmaktır. Biri komutları, biri verileri tutar. Önbellekte işlem yapılırken alınırken Harvard mimarisinin, asıl bellekte işlem yapılırken Von Neumann mimarisinin uygulandığını söyleyebiliriz. Günümüz teknolojilerinde buna benzer mimariler sıkça kullanılmaktadır fakat isimlendirilmesinde ne Von Neumann ne de Harvard demek doğru değildir.

Ayrıca komutları, okunabilir verilermiş gibi göstermek de değiştirilmiş Harvard mimarisine örnek gösterilebilir. Günümüzdeki Atmel AVR mikrodenetleyiciler de dahil olmak üzere, mikrodenetleyicilerden bazıları bu şekilde çalışmaktadır. Bu konuda Atmel, C dilindeki kütüphanelerinde düzenlemelerde bulunmuş ve Harvard Mimarisine uygun olmayan bu işlemi mümkün hale getirmişlerdir.

Hız

Son yıllarda, işlemcilerin çalışma hızları çok büyük oranda ilerlerken belleklerde aynı oran görülmemektedir. Verilen her komutun bellekten bir veriyle çalışması gerektiğini düşünürsek, daha hızlı çalışan işlemciler belleklere daha sık erişimde bulunmak durumunda kalsalar da bellek bu duruma yeterince cevap veremez. Aynı durum Von Neumann mimarisinde daha büyük bir sorun oluşturur çünkü bu sefer işlemci belleği beklemek zorunda kalır.

Bu sorunun çözümü için bellek teknolojisinin hızlandırılması düşünülebilir fakat bu fiyat, güç ve benzeri nedenlerden dolayı mümkün değildir. Performansın düzeltilmesi adına işlemci ile bellek arasındaki bu gel gitlerin azaltılması gerekir. Bu yüzden bilgisayarlarda önbellek kullanımı artırılmıştır. Önbellek, son kullanılan verileri içinde barındırır ve işlemci bu verilere ihtiyaç duyduğunda belleğe ulaşmak zorunda kalmaz. Herhangi bir gecikmeye uğramadan işleme alınır.

Ayrıca bakınız
 Harvard vs von Neumann 
  Harvard vs Von Nuemann [sic] Architecture

Kaynakça

Bilgisayar türleri
Bilgisayar mimarisi