Bilgisayar mimarisi

**Bilgisayar mimarisi**, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

* Merkezî işlem biriminin mimarisinin tasarımı
* Komut kümesinin tasarımı.
* Adresleme yöntemlerinin tasarımı.
* Genel donanım mimarileri.

## Bilgisayar organizasyonu ve mimarisi
Belgelenen ilk bilgisayar mimarisi, Charles Babbage ile Ada Lovelace arasındaki Analitik Makine'yi anlatan yazışmaların içeriğindeydi. Konrad Zuse 1936 yılında Z1 adını verdiği bilgisayarı geliştirirken gelecekteki projeleri için yaptığı iki patent başvurusunda, daha sonra Neumann mimarisi'nde göreceğimiz üzere makine talimatlarının veriler için kullanılan aynı depolama alanında saklanabileceğini anlattı.1937 yılında Howard-Aiken, ilk otomatik hesap makinesi olan MARK-I ‘i, 1943 yılında ise J.&nbsp;P.&nbsp;Erkert ilk işlevsel bilgisayar olan ENIAC (**')'ı yaptı. 1971 yılında [[Intel]] firması; tüm bileşenleri kendi üzerinde olan dört bitlik 4004 isimli mikroişlemciyi, 1972 yılında sekiz bitlik 8008 işlemcisini, 1974 yılında ise 8080 işlemcisini üretti. 8080 işlemcisi, Intel firmasının ilk genel amaçlı mikroişlemcisiydi. Mikroişlemcilerin getirdiği en önemli avantaj programlanabilirlik özelliğiydi. Çünkü bu sayede aynı işlemci üzerinden farklı işlemler yapılabiliyordu. (Örneğin: Bir gün matematiksel işlemlerin yapıldığı bir işlemci üzerinden, diğer gün alfabetik kelime işlemlerinin yapılabilmesi). 8080 ev bilgisayarlarında da kullanılan ilk işlemcidir. 1979 yılında IBM PC, Intel'in 8088 işlemcisini kullanmaya başladı. 8088'den sonra 80286, 80386, 80486, Pentium, Pentium II, Pentium III, Pentium IV serisi ile kullanıma devam edildi. Günümüz mikroişlemcileri 8088'den çok hızlıdır.
Bugünkü bilgisayarların mimarisinin modeli ENIAC üzerinde çalışmış olan [[John von Neumann]] tarafından geliştirilmiştir ve von Neumann modelinde mantıksal olarak bilgisayar sistemi tam olarak tanımlanmıştır. Bilgisayar sisteminin; bellek, veriyolu, giriş, çıkış ve merkezî işlem biriminden ibaret olduğu düşünülmüştür. Von Neumann mimarisine sahip bilgisayarlarda gerçekleştirilen adımlar: program sayacının gösterdiği adresten komut getirilir, program sayacı 1 arttırılır, kontrol birimi getirilen kodun komutunu çözer ve tekrar ilk adıma dönülür.



Bilgisayar mimarisi tasarımı iki yaklaşım üzerinde yoğunlaşmıştır. Bunlardan birisi az önce bahsettiğimiz Von Neuman mimarisi, diğeri ise Harvard mimarisidir. Harvard mimarili bilgisayar sistemlerinde veri ve buyruklar ayrı belleklerde tutulurlar. Komutla beraber veri farklı iletişim yollarını kullanarak ilgili belleklerden alınıp işlemciye getirilebilir. Getirilen komut işlenip gerekli verisi veri belleğinden alınırken sıradaki komut, komut belleğinden alınıp getirilebilir. Bu da hızı arttıran bir etkendir.

Günümüz bilgisayarlarında, önbellek kullanılarak bellekle tek yoldan iletişim ve buyrukla verinin aynı bellekte bulunma sorunu çözülmüştür. Önbelleğin kapasitesine göre anabellekten veriler önbelleğe alınır. Komut ve veriler önbellek denetleyicisi tarafından ayrılır ve ilgili birimlere yerleştirilir. Önbellek miktarı ne kadar fazla olursa o kadar iyi olur ancak önbelleklerin pahalı olması bir sorundur.

Bilgisayarı oluşturan beş ana bileşen vardır. Bunlar:
* Veriyolu
* Denetim
* Bellek
* Giriş aygıtları
* Çıkış aygıtları

<div style="text-align: center;">

</div>
Bilgisayar mimarisini ise dört şekilde incelemek mümkündür:
İşlemci ve komut seti mimarisi, bellek mimarisi, giriş-çıkış sistemi, veriyolu sistemi.

Bilgisayarlar yazılım ve donanım olmak üzere iki kısımdan oluşurlar. Yazılım bilgisayarı çalıştırmaya yarayan fiziksel olmayan kısımdır. Donanım ise bilgisayarın fiziksel ve elektronik yapısını oluşturan ana ve çevre birimlerin tümüdür. Monitör, kasa, klavye, fare bilgisayarın donanım elemanlarıdır.

== Donanım ==
=== Anakart ===

İşlemci, RAM, [[ses kartı]], [[ekran kartı]] gibi üzerine takılan aygıtlar ile DVD sürücü, hard disk gibi dahili aygıtları bir araya getirip, bunlar arasındaki haberleşmeyi kontrol eden bilgisayarın en önemli parçalarından biridir. Bilgisayara hangi tür işlemciler takılabileceği, en fazla bellek kapasitesinin ne kadar olabileceği, hangi yeni donanım teknolojilerinin desteklenebileceği, anakart üzerindeki elektronik bileşenler sayesinde belirlenir.

=== Yonga takımı ===

Anakartın beynini oluşturur ve veri akışını denetler.

=== Veriyolu ===

Bilgisayarın bir bileşeninden diğerine veri aktarmak için kullanılan devrelerdir. Adres veriyolu ve standart veriyolu olmak üzere iki bölümden oluşurlar. Adres veriyolu verilerin nereye gideceğini belirlerken, standart veriyolu bilgisayar yapılan işlemlerle ilgili veri aktarırken kullanılır.

=== Önbellek ===

Dosyaların daha hızlı bulunması ve işlenmesi amacıyla kullanılır. Bu yüzden bilgisayarda sık kullanılan bilgiler bu belleğe aktarılır, gerektiği zaman da buradan okunur.

=== Mikroişlemciler (Merkezî İşlem Birimi, MİB) ===

Bilgisayarın kalbidir. İşlemcinin görevi, buyrukların bellekten getirilmesi, çözülmesi ve çalıştırılması, sonuçların gözlenmesi, program işlenirken diğer donanım birimlerinden gelen kesme isteklerine cevap vermesi gibi işlemlerdir. 
* Buyrukların yakalanması: Buyrukların programın saklandığı yerden alınması
* Buyrukların çözülmesi: Gerekli işlemlerin ve buyruğun büyüklüğünün belirlenmesi
* İşlenenlerin okunması: İşlem yapılacak verinin bulunması ve alınması
* Yürütme: Sonucun ya da durumun hesaplanması
* Sonucun saklanması: Sonuçların daha sonra yeniden kullanılmak üzere saklanması
* Sonraki Buyruk: Bir sonraki buyruğun okunması için program sayacının değiştirilmesi

=== Bellek ===

ROM ve RAM olmak üzere 2 çeşit bellek vardır. ROM üzerindeki bilgiler kalıcıdır, RAM üzerindeki bilgiler ise istenildiği zaman okunabilir ve yazılabilir. Elektrik kesintilerinde RAM üzerindeki tüm bilgiler silinir. RAM bellekler de SRAM ve DRAM olmak üzere 2 çeşittir. SRAM çok pahalı ve hızlıdır, önbellek olarak kullanılırlar.

=== Sabit Diskler ===


=== Ses Kartları ===

Herhangi bir uygulamadan gelen verileri işleyerek, insan kulağının duyabileceği bir frekanstaki sese dönüştüren bileşendir.

=== Modemler ===

Bilgisayarın ağ ile veya başka bir bilgisayar ile telefon hattı üzerinden iletişim kurmasını sağlayan aygıttır.

=== CD-ROM sürücüsü ===

Veri taşımaya uygun, ucuz ve hızlı erişimli birimlerdir.

=== DVD-ROM sürücüsü ===

DVD-ROM lar disk üzerinde daha fazla noktaya bilgi yazılabilmesinden dolayı CD-ROM lardan daha fazla bilgi bulundururlar.

=== Ekranlar (monitörler) ===

Kullanıcının bilgisayar ile iletişim kurmasını sağlayan ekran.

=== Klavyeler ===

Bilgisayarın en önemli giriş aygıtıdır.

=== Fareler ===

Fare de klavyenin yanında önemli bir giriş aygıtıdır.

== Bilgisayar mimarisi ==
''Bilgisayar Mimarisi''&nbsp;en az 3 ana alt kategoriden oluşur. Bu alt kategorileri şu şekilde sıralayabiliriz:

=== 1.[[Komut kümesi|Komut Kümesi Mimarisi]] (Instruction Set Architecture veya ISA) ===
-&nbsp;Komut Kümesi Mimarisi (ISA) bir bilgisayar donanımının, alt düzey programcıya (sistem programlarına) görünen yüzüdür.

-&nbsp;Bilgisayarlar üst düzey programlama dillerini (Java, C++, vb..) anlamazlar. İşlemcinin bu dilleri anlaması için bazı yazılım araçlarına (örnek olarak derleyiciler) ihtiyacı vardır. Bu araçlar üst düzey programlama dillerinde yazılan kodları işlemcinin anlayabileceği hale getirir.

=== 2.[[Bilgisayar organizasyonu|Mikro Mimari]] (Micro Architecture) ===
- Mikro Mimari ya da bilgisayar organizasyonu işlemcinin komut kümesi mimarisini nasıl uygulayacağını açıklar.&nbsp;Komut kümesi mimarisi birçok şekilde uygulanabildiğinden

birçok durum oluşur. (Enerji verimliliği, performans gibi)

=== 3.Sistem Tasarımı (System Design) ===
- Sistem Tasarımı diğer bütün donanımsal bileşenleri içerir. Bunlar;

- Bilgisayar Bus'larını ve Switch'lerini Sisteme bağlamak

- Memory kontrolcüsü ve hiyerarşileri

- CPU off load mekanizmasının bazı memory'lre direkt girişi

-&nbsp;Mullti-Processing gibi önemli noktalar.

Bilgisayar mimarisi çoğunlukla bilgisayar organizasyonunun tanımı ile karıştırılır. Her ikisi de bilgisayar sistemini tarif etmek için kullanılan temel esaslardır. Bilgisayar mimarisi, bir programın mantıksal çalışmasına doğrudan etki eden bir özelliktir. Komut kümesi, değişik şekillerdeki veri tiplerini temsil etmek için kullanılan bit sayısı, bellek adresleme teknikleri ve giriş-çıkış mekanizmasının dahil olduğu bilgisayar tasarımı bilgisayar mimarisine girmektedir. Bilgisayar organizasyonu daha çok yazılımla donanım arasındaki bağdaştırmayla ilgilidir. Çevre elemanları, kullanılan bellek teknolojisi gibi kullanıcıya ayrıntılarıyla açıkça görünen özellikler ise bilgisayar organizasyonuna aittir. Yani bilgisayar mimarisi tanımı daha düşük seviye teknoloji, organizasyon tanımı ise daha kullanıcıya yönelik üst düzey özellik taşımaktadır. Mimari, buyruk kümesi mimarisi ve donanım sistemi mimarisi olmak üzere iki farklı yaklaşımla tanımlanmaktadır. Buyruk kümesi mimarisi, bilgisayarın hesaplama karakteristiklerini belirleyen komut kümesinin mimarisi; donanım sistemi mimarisi ise, MİB (Merkezî İşlem Birimi), depolama ve giriş-çıkış sistemlerinin dâhil olduğu alt sistem ve bunların bağlantı şeklidir. Programcının bu elemanlara yön verecek programı yazması halinde nasıl bir kabul göreceği ise yine buyruk kümesi mimarisidir.

Buyruk kümesi mimarisi yazılım ile donanım arasındaki iletişimi sağlar. Yazılımdaki komut ne kadar karmaşık olursa, donanım da o kadar karmaşık olur. Bu yüzden komut kümesi ne çok karmaşık ne de çok yalın olmalıdır. Buyruk kümesi mimarisinin yazılım ve donanımla ilişkisi aşağıdaki şekilde görülmektedir.

Programcılar özel bilgisayar sistemleri için, özel donanıma göre kod yazmaktaydılar. Bu yüzden bir makine için yazılan program diğer makinelerde çalışmamaktaydı ve her yeni makine için yeni kodlar yazılmak durumundaydı. IBM firması bu sorunu çözmek için buyruk kümesi mimarisi(ISA) ve mikrokod motoru denilen bir yöntem geliştirdi.

===Donanımsal yaklaşım===
Mikrokod kullanılarak ISA sisteminin yürütülmesi, komutlarını başlangıçta doğrudan çalıştıran sistemlere göre daha yavaştır. Bu aksaklığı gidermek için komutların doğrudan donanım elemanları tarafından yorumlanarak sistemin denetlendiği bir mimari yaklaşımı üzerinde çalışılmıştır. Komutların anlaşılır standartta bir boyuta getirilerek çalıştırıldığı RISC modeli sisteminde küçük ve hızlı komut kümesiyle donanım üzerinde hakimiyet mikrokoda göre daha kolaydır. RICS tasarımcıları da ürünlerinde ISA kavramını değiştirmeden kullanmışlardır.

===Programsal yaklaşım===

Sistem tasarımcıları performansı artırmak için bazı program işlevlerini sık sık mikrokodlara(firmware) aktardılar. Donanımı devreye sokacak buyruk kümesinin yer aldığı bu yere mikrokod motoru denilmektedir. Mikrokod motoru, ROM bellek sayesinde işlemci içerisine yerleştirilmiştir ve programcının yazdığı kodları işlemcinin daha çabuk anlayıp çalıştırabileceği küçük mikrokodlara dönüştürür. CISC tipi işlemcilerde mikrokodun temel işlevi, alt düzey komut kümesiyle, programcının çalıştığı üst düzey komutlar arasında soyutlamalar olusturmaktadır. İşlemci üreticileri, mimariyi meydana getiren elemanların işlevleri ve bu elemanların devreye nasıl sokulacağı konularında düşünerek sistem tasarımı yaparlar. Elemanları devreye sokmak için program yazmak gereklidir ve donanım mimarisini programcıya aktarabilmek için kullanıcıya komut kümesini hazır olarak vermek en iyi yoldur. Günümüz bilgisayarlarında hala mikroprogramlama esasına göre çalışan bilgisayarlar vardır. Intel ve AMD gibi işlemci üreticileri ürünlerinde ISA x86 buyruk kümesinin tüm özelliklerini yeniliklerle beraber kullanmaktadırlar.

== Bilgisayar mimarisi çeşitleri ==
* Kuantum bilgisayarları
* Vektör bilgisayarlar
* Numa bilgisayarlar
* von Neumann bilgisayarları

== Bilgisayar mimarisine etki eden etmenler ==

* Teknoloji (Transistör büyüklüğü vs. etkiler)
* Programlama Dilleri(Hangi dilde yazıldığı vs. etkiler)
* Uygulama
* İşletim Sistemleri (İşletim sistemi üzerine yazılan kod ona özgü olduğu için etkiler)
* Geçmiş(Geçmişte yapılan komutların çalışması zorunlu olduğu için etkiler)

== Başarım ==

Bilgisayarın başarımı sıklıkla saat hızı terimleriyle tanımlanır (genellikle [[MHz]] ya da [[GHz]] olarak). Bu [[CPU]]'nun ana saatinin saniyedeki döngüleriyle ilgilidir. Ancak bu ölçüm, bir şekilde yanlış yönlendirse de yüksek saat hızlı bir makine olarak mutlaka daha yüksek bir performansı olmayabilir. Sonuç olarak [[AMD]] gibi yapımcılar saat hızını bir performans göstergesi olarak almamaktadırlar. Çağdaş [[CPU]]'lar birden fazla emri bir saat döngüsünde gerçekleştirirler ve böylece programın hızı oldukça artar. Veriyolu hızları, kullanılabilir bellek ve programlardaki emirlerin tipi ve sırası gibi hızı etkileyen bileşenler de çalışır.

Hızın iki ana tipi vardır: gecikme (**') ve **'. Kısaca gecikme, bir işlemin başlangıcı ve sonuçlanması arasındaki süredir. **' ise belli bir zamanda yapılan işin miktarını belirtir. Kesilme gecikmesi sistemin bir elektronik olaya (disk sürücüsünün bilgi aktarımını bitirmesi gibi) vereceği garanti edilmiş en fazla yanıt zamanıdır. Bu sayı çok geniş sıralı bir tasarım seçenekleri tarafından etkilenir. Örneğin; önbellek eklemek gecikmeyi yavaşlatırken, throughput iyileşir. Mekanizmayı yöneten bilgisayarlar genellikle düşük kesilme gecikmelerine gerek duyarlar. Bu bilgisayarlar gerçek zaman diliminde işlem yaparlar ve bu işlem belirlenen sürede bitmezse işlem başarısız olur.

Bilgisayarın performansı, uygulama tanım alanına bağlı olarak diğer ölçümler kullanılarak da hesaplanabilir. Sistem **' (sayısal hesaplamalarda), **' (Web sunucusu uygulamalarında) veya **' (video düzenlemelerde) olabilir. Güç tüketimi sunucu ve diz üstü bilgisayarlar gibi taşınabilir cihazlar için önemli hale gelir. 
Ölçütleme (**) bilgisayar bu test program serisini çalıştırırken kullandığı süreyi ölçerek bütün bunları bir hesaba aktarmaya çalışır. Ölçütleme gücü yüksek gösterse de bu bilgisayar seçmede yardımcı olmayabilir. Sıklıkla ölçülen makineler farklı ölçümlere ayrılır. Örneğin; bir sistem bilimsel uygulamaları hızlıca idare ederken, diğeri popüler video oyunlarını kolayca oynatabiliyordur. Dahası yazılım veya donanımlara değişik özellikler eklemek isteyen tasarımcılar özel bir ölçüte izin verirler. Böylece hızlı kontrol sağlanır fakat diğerleriyle, çoğunlukla genel işlevlerle benzer avantajlara sahip olmazlar. En iyilemenin (''') genel planı bilgisayarın farklı taraflarındaki değerleri bulmak içindir. Denge içindeki bir bilgisayar sisteminde bilgi hızı bütün bölümler için sabit olacaktır ve değer bunu garantiye almak için eşit olarak dağıtılacaktır. Bilgisayar sisteminin kesin formu en iyi şekilde belirlenmiş baskı ve amaçlara bağlı olacaktır.

## Kaynakça

* William Stallings(2003) Computer Organization&Architecture, Pearson Education.ISBN 0-13-049307-4
* Yrd. Doç. Dr. Feza Buzluca ders notları
* İTÜ Ninova Açık Ders Malzemeleri , Bilgisayar mimarisi
* Arş Gör. Gürcan ÇETİN ders notları
* Yrd. Doç. Dr. Oğuz ERGİN ders notları
* PC
* Architect 
* http://www.science.smith.edu/~jcardell/Courses/CSC103/ 
* https://web.archive.org/web/20071012021907/http://enformatik.balikesir.edu.tr/donanim/bolum_a/bil_tar.htm
* Bilgisayar mîmârisi (İngilizce)