1. GİRİŞ
1.1. Bilgisayar Sistemleri Organizasyonu
Dijital bir bilgisayarın birincil işlevi, veri girişini işleyerek uygulama alanlarında kullanılabilecek sonuçları üretmektir. Örneğin, bir kavşakta trafik ışığını kontrol etmek için kullanılan dijital bir bilgisayarı düşünün. Girdi verileri, belirli bir süre boyunca kavşaktan geçen araçların sayısıdır; işlem, araba sayısının bir fonksiyonu olarak kırmızı-sarı-yeşil zaman periyotlarının hesaplanmasından oluşur ve çıktı, işlem sonuçlarına göre kırmızı-sarı-yeşil zaman aralıklarının varyasyonudur. Bu sistemde veri giriş cihazı, kavşakta bir arabanın geçişini algılayabilen bir sensör’dür. Trafik ışıkları çıkış cihazlarıdır. Araba sayısını takip eden ve kırmızı-sarı-yeşil zaman periyotlarını hesaplayan elektronik cihaz işlemcidir. Bu fiziksel cihazlar, sistemin donanım bileşenlerini oluşturur. İşleme donanımı, kırmızı-sarı-yeşil zaman periyotlarını hesaplamak için belirli kurallara göre programlanmıştır. Kurallar, belirli bir sorunu çözmek için kullanılan algoritmadır. Algoritma (bir problemi çözmek için mantıksal bir adım dizisi), işlemcinin problemi çözerken takip etmesi için bir programa (bir dizi talimat) çevrilir. Programlar, işleme donanımı tarafından “anlaşılabilir” bir dilde yazılır. Programlar, bilgisayar sisteminin yazılım bileşenini oluşturur.
Sümer 1 Rakamı. Tarihte rakamları ilk kullanan medeniyet sümerlerdir.
1.1.1. Donanım
Bir trafik ışığı kontrolcüsü, genel amaçlı bir bilgisayar sistemini oluşturan fiziksel donanım bileşenlerinden yalnızca birkaçını gerektiren çok basit, özel amaçlı bir bilgisayar sistemidir (bkz. Şekil 1.1). Genel amaçlı bir bilgisayar sisteminin dört ana donanım bloğu; bellek birimi (MU), aritmetik ve mantık birimi (ALU), giriş/çıkış birimi (IOU) ve kontrol birimidir (CU). Giriş / Çıkış cihazları bellek birimine veri giriş çıkışını sağlar. Bazı sistemlerde, G/Ç cihazları MU yerine ALU’ya veri gönderir ve alır. Programlar bellek biriminde bulunur. ALU, bellek biriminden (veya ALU’dan) alınan verileri işler ve işlenen verileri bellek birimine (veya ALU) geri depolar. Kontrol birimi, diğer üç birimin faaliyetlerini koordine eder. MU’da bulunan programlardan talimatları alır, bu talimatların kodunu çözer ve ALU’yu ilgili işlem adımlarını gerçekleştirmesi için yönlendirir. Ayrıca G/Ç işlemlerini de denetler.
Bazı temsili G/Ç cihazları Şekil 1.1’de gösterilmektedir. Günümüzde en yaygın giriş aygıtları klavye ve faredir. Monitör ve yazıcı, en yaygın çıktı aygıtlarıdır. Tarayıcılar, basılı kaynaklardan veri girmek için kullanılır. Konsol, bir bilgisayar operatörünün bilgisayar sistemiyle etkileşime girmesine izin veren özel amaçlı bir G/Ç cihazıdır. Modern bilgisayar sistemlerinde, konsol tipik olarak özel bir terminaldir.
1.1.2. Yazılım
Bir bilgisayar sisteminin donanım bileşenleri, temel bilgi biriminin bir elektronik sinyalin iki durumuna karşılık gelen 0 veya 1 olduğu elektronik cihazlardır. Örneğin, birçok donanım teknolojisinde 0, 0 V ile temsil edilirken, 1, 5 V ile temsil edilir. Bu nedenle programlar, 0 ve 1’den oluşan ikilik sistem kullanılarak ifade edilmelidir. Yalnızca ikili rakamlar kullanılarak yazılan programlar makine dili programlarıdır. Bu programlama seviyesinde, ADD ve SUBTRACT gibi işlemler 0’lar ve 1’ler ile temsil edilir. Bilgisayar donanımı ise bu dizileri yorumlamak için tasarlanmıştır. Bu seviyedeki programlama, programcının 0’lar ve 1’ler çalışması gerektiğinden ve bilgisayar yapısı hakkında çok ayrıntılı bilgiye sahip olması gerektiğinden oldukça zordur.
Makine dili programlamasının zorluğu, yazılacak 0’lar ve 1’ler yerine ADD ve SUB gibi semboller kullanılarak kısmen giderildi. Sembolik düzeyde programlama, assembly dili programlaması olarak adlandırılır. Bir assembly dili programcısının da yine makine yapısı hakkında ayrıntılı bilgiye sahip olması gerekir, çünkü assembly dilinde izin verilen işlemler ilkeldir ve yapılabilecekler makinenin donanım organizasyonuna bağlıdır. Assembly dili programlarını makine diline çevirmek için bir assembler programı kullanılır.
PYTHON, C#, C ve JAVA gibi yüksek seviyeli programlama dillerinin kullanılması, makine organizasyonu hakkında bilgi gereksinimini daha da azaltır. Yüksek seviyeli bir programlama dilini makine diline çevirmek için bir derleyici programına ihtiyaç vardır. Bilgisayar programlanmasında kullanılan her yüksek seviyeli dil için ayrı bir derleyici gereklidir. Assembler ve derleyici de bu dillerden birinde yazılmış olup, assembly veya daha yüksek seviyeli bir dil ile yazılan programı makine diline çevirirler.
Şekil 1.2, bir program geliştirildikten sonra gerçekleşen işlemlerin sırasını göstermektedir. Assembly dilinde veya yüksek seviyeli bir dilde yazılmış bir programa kaynak program denir. Bir assembly dili kaynak programı, assembler tarafından makine dili programına çevrilir. Bu makine dili programı, nesne kodudur. Derleyici, yüksek seviyeli dil kaynağını nesne koduna dönüştürür. Nesne kodu genellikle sabit disk gibi bir ara cihazda bulunur. Bir yükleyici programı, nesne kodunu ara aygıttan bellek birimine yükler. Programın gerektirdiği veriler ya bellekte mevcut olacak ya da programın yürütülmesi sırasında bir giriş cihazı tarafından sağlanacaktır. Son olarak program yürütmenin sonunda, işlenmiş veriler veya sonuçlar üretilir.
1.1.3. Sistem
Kaynağı nesne koduna çevirmek için uygun derleyiciyi seçmek, nesne kodunun bellek birimine yüklenmesi, bilgisayarın başlatılması ve durdurulması sistem tarafından otomatik olarak yapılır. Bu tür otomatik çalışan denetim programları genellikle bilgisayar sistemi üreticisi tarafından sağlanır. Ürün yazılımı (Firmware) adı verilen bu set, ihtiyaç duyduğu bilgileri kullanıcıdan bir dizi komut aracılığıyla alır ve bilgisayar sisteminin genel işleyişini yönetir. Sistemde kullanılan ürün yazılımı ve diğer yardımcı programlar, tipik olarak salt okunur olan bir bellek bloğunda bulunurlar. Bu programları salt okunur belleğe yazmak için özel cihazlara ihtiyaç vardır. Şekil 1.3, genel amaçlı bir bilgisayar sisteminin donanım-yazılım bileşenlerinin basit bir gösterimidir.
1.2. Bilgisayarların Gelişimi
İnsan her zaman hesaplama için mekanik yardım arayışında olmuştur. 3000 BC civarında abaküsün gelişimi ile sayı sistemlerinin notasyonu ortaya çıkmıştır. On yedinci yüzyıl Fransa’sında, Pascal ve Leibnitz, daha sonra masaüstü hesap makinelerine dönüştürülen mekanik hesap makineleri geliştirdiler. 1801’de Jacquard, dokuma tezgahlarına kumaş üzerine çeşitli desenleri dokuma talimatları vermek için delikli kartlar kullandı.
1822’de Charles Babbage, kollar ve dişlilerle ayarlanan ve bir dizi hesaplamayı gerçekleştiren mekanik bir cihaz olan fark motorunu geliştirdi. 1820’li yıllarda Babbage program girişi için bir dizi delikli kart, veri girişi için başka bir kart seti ve sonuçların çıktısı için üçüncü bir kart seti kullanan bir analitik motor önerdi. Mekanik teknoloji yeterince gelişmiş olmadığından analitik motor inşa edilemedi; yine de, tasarlandığı şekliyle analitik motor, kelimenin modern anlamıyla muhtemelen ilk bilgisayardı.
1880’de Amerika Birleşik Devletleri’nde Herman Hollerith tarafından nüfus sayımı uygulamaları da delikli kartlardaki verileri işlemek için birkaç kayıt makinesi geliştirildi. 1944’te ilk otomatik bilgisayar olan Mark I duyuruldu. Veri girişi ve çıkışı için delikli kartlar ve program saklama için kağıt bant kullanan elektromekanik bir cihazdı. Mark I’den daha hızlı hesaplamalar yapma arzusu, Amerikalı Eckert ve Mauchly liderliğindeki bir ekip tarafından vakum tüplerinden ve rölelerden oluşturulan ilk elektronik bilgisayar olan ENIAC’ın geliştirilmesiyle sonuçlandı. ENIAC, makine tarafından verilerin işlenmesinde kullanılmak üzere bellekte bir dizi talimatın depolandığı depolanmış program konseptini kullandı. ENIAC, programların bağlandığı bir kontrol panosuna sahipti. Her hesaplama dizisi için kontrol panosunun yeniden kablolanması gerekliydi.
Eckert-Mauchly ekibinin bir üyesi olan John von Neumann, program depolanabilen ilk bilgisayar olan EDVAC’ı geliştirdi. Aynı zamanda Wilkes, birincil ve ikincil bellek hiyerarşisi kavramını da ortaya çıkaran ilk depolanmış program makinesi olan EDSAC’ı geliştirdi. Von Neumann, 1945’teki ilk EDVAC taslağından başlayarak, depolanan program konseptini geliştirdiği için itibar kazandı.
EDVAC’ın depolanan program bilgisayar (von Neumann makinesi) organizasyonu şu şekildedir.
1. Veri ve talimatların girilebileceği bir giriş cihazı
2. Sonuçların girilebileceği ve talimatların ve verilerin alınabileceği bir depolama birimi
3. Verileri işlemek için aritmetik bir birim
4. Depodan talimatları almak, yorumlamak ve yürütmek için bir kontrol ünitesi
5. Sonuçları kullanıcıya iletmek için bir çıktı cihazı
Tüm çağdaş bilgisayarlar von Neumann makineleridir, ancak çeşitli alternatif mimariler gelişmiştir.
1.2.1. Von Neumann Model
Şekil 1.4, bellek birimi, ALU, kontrol birimi ve G/Ç biriminden oluşan tipik bir tek işlemcili bilgisayar sistemi olan von Neumann modelini göstermektedir. Bellek birimi, bir Hafıza Adres Registeri (MAR – Memory Address Register) ve Hafıza Veri Registeri (MDR – Memory Data Register) olarak da adlandırılan bir Hafıza Arabellek Registeri (MBR) içeren tek portlu bir cihazdır. Bilgisayar ortamında kelime (word) kavramı okunabilen veya yazılabilen veri birimi olarak kabul edilir. Bellek hücreleri birkaç bellek kelimesi şeklinde düzenlenmiştir. Hafızadaki tüm okuma ve yazma işlemleri hafıza portunu kullanır. ALU, akümülatör yazmacındaki (ACC) ve / veya MBR’ deki veriler üzerinde aritmetik ve mantık işlemleri gerçekleştirir ve ACC bu işlemlerin sonuçlarını tutar. Kontrol ünitesi, çalıştırılacak talimatın adresini içeren bir Program Counter (PC) ve yürütülmek üzere bellekten çekilen talimatları tutan bir Talimat Yazmacından (IR – Instruction Register) oluşur. Bu model de iki register bulunur. Bunlar, hesaplama sırasında verileri ve adres değerlerini tutmak için kullanılabilir. Kolayca anlaşılabilmesi için G/Ç alt sisteminin ALU alt sistemine giriş ve çıkış yaptığı gösterilmiştir. Pratikte G/Ç herhangi bir işlemci yazmacı kullanmadan doğrudan bellek ve G/Ç aygıtları arasında da gerçekleşebilir. Sistemin bileşenleri, veri ve adreslerin iletildiği çoklu veri yolu (multi-bus) yapısı ile birbirine bağlanır. Kontrol ünitesi, uygun kontrol sinyallerinin kullanılmasıyla bu akışı yönetir.
Şekil 1.5, günümüz mimarilerinin temsilcisi olan daha genelleştirilmiş bir bilgisayar sistemi yapısını göstermektedir. İşlemci alt sistemi (yani, merkezi işlem birimi – CPU) ALU ve kontrol birimi ile çeşitli işlemci registerlarından oluşur. İşlemci, bellek ve G/Ç alt sistemleri, veri, adres, kontrol ve durum hatlarından oluşan sistem veriyolu ile birbirine bağlanır.
Pratik sistemler, çoklu veri yolu ile yapılandırılmaları açısından Şekil 1e’deki tek veri yollu mimariden farklı olabilir. Örneğin, işlemciyi bellek alt sistemine bağlayan bir bellek veri yolu ve G/Ç aygıtlarını işlemciye bağlayan bir G/Ç veri yolu ile ikili veri yolu sistemi olabilir. Ayrıca, birden fazla G/Ç ı işlemciye ara yüzleyen bir kaç G/Ç veri yoluna sahip bir sistemi tasarlamak mümkündür. Burada her veri yolu işlemciye bir G/Ç cihazı ara yüzleyebilir. Çoklu veri yolu yapısı, veri yollarında eşzamanlı işlemlere izin verdiğinden, tek veri yolu mimarilerine kıyasla daha verimlidir, ancak çoklu veri yolu nedeniyle sistem karmaşıklığı artar.
Von Neumann modelini verimsiz yapan aşağıdaki özelliklerine dikkat etmek önemlidir:
1. Programlar ve veriler tek bir ardışıl bellekte depolanır ve bu da bir bellek erişimi “darboğazı” yaratabilir.
2. Bellekteki veri ve talimat gösterimleri arasında açık bir ayrım yoktur. Bu ayrım, programların yürütülmesi sırasında CPU tarafından gerçekleştirilmelidir.
3. Yüksek seviyeli programlama dilleri çeşitli veri yapıları (tek ve çok boyutlu diziler, bağlantılı listeler, vb.) kullanır. Tek boyutlu belleklerde bu tür veri yapılarının temsili için doğrusallaştırılması gerekir.
4. Veri temsili, veri türü hakkında herhangi bir bilgi tutmaz. Örneğin, kayan nokta verilerini temsil eden bir bit kümesi ile karakter dizisi temsil eden bit kümesini birbirinden ayıracak hiçbir şey yoktur. Bu tür bir ayrımın program mantığı tarafından yapılması gerekir.
Bu özelliklerden dolayı, von Neumann modeli aşırı derecede geneldir ve yüksek seviyeli dillerde yazılmış programlardan donanım tarafından yürütülebilir kod oluşturmak için derleyiciler tarafından aşırı haritalama gerektirir. Bu sorun anlamsal boşluk (semantic gap) olarak adlandırılır. Bu eksikliklere rağmen von Neumann modeli dijital bilgisayarlar için en pratik yapı olmuştur. Yıllar boyunca, anlamsal boşluğu yüksek seviyeli bir dil programlama ortamı için neredeyse yok denecek kadar azaltan birçok verimli derleyici geliştirilmiştir.
Şekil 1.4’deki von Neumann modelinin, CPU ile bellek arasında adresler için bir veri yolu ile veri ve talimatlar için ikinci bir veri yoluna sahip olduğuna dikkat edin. Bu modelin erken bir varyasyonu, Şekil 1.6’da gösterilen Harvard mimarisidir. Bu mimari de veri adresleri, veriler, talimat adresleri ve talimat veri yolları birbirinden bağımsızdır. Bu durum CPU’nun talimatlara ve verilere aynı anda erişmesine izin verir. Harvard mimarisi adı, Howard Aiken’in Harvard Üniversitesi’ndeki Mark-I den Mark-IV e olan bilgisayar çalışmalarına dayanmaktadır. Bu makinelerin veri ve talimatlar için ayrı depolaması vardı. Mevcut Harvard mimarileri, veri ve talimatlar için ayrı depolama alanı kullanmaz, ancak verilere ve talimatlara aynı anda erişmek için ayrı veri yollarına ve tamponlara sahiptir.
Von Neumann modelinin ilk geliştirmeleri temel donanım yapısının hızını artırmaya yönelikti. Donanım teknolojisi ilerledikçe, anlamsal boşluğu azaltmak için mümkün olduğunca çok sayıda yüksek seviyeli programlama dili özelliğini donanım ve aygıt yazılımına dahil etme çabaları gösterildi.
Tek başına donanım geliştirmeleri, istenen performansı elde etmek için yeterli olmayacaktır. Algoritma geliştirmeden programların yürütülmesine kadar uzanan genel bilgi işlem ortamının mimarisi, uygun donanım, yazılım ve bellenim yapılarına ulaşmak için analiz edilmelidir. Mümkünse, bu yapılar algoritmaların kendisindeki paralelliği kullanmalıdır. Bu nedenle, performans artışı paralel işlemin bir nedenidir. Paralel işleme yapılarını dikte eden güvenilirlik, hata toleransı, genişletilebilirlik, modüler geliştirme vb. gibi başka nedenler de vardır. Paralel işleme kavramlarını kitabın ilerleyen bölümlerinde tanıtacağız.
1.2.2. Bilgisayar Mimarisinin Nesilleri
Ticari bilgisayar sistemi gelişimi donanım teknolojisinin gelişimini izlemiştir ve genellikle dört nesilden oluşur:
1. Birinci nesil (1945–1955) – Vakum tüpü teknolojisi.
2. İkinci nesil (1955–1965) – Transistör teknolojisi.
3. Üçüncü nesil (1965–1980) – Tümleşik devre (IC) teknolojisi.
4. Dördüncü nesil (1980 – ??) – Çok Büyük Ölçekli Tümleşik (VLSI) devre teknolojisi.
Birinci nesle ait vakum tüplerinden yapılan UNIVAC 1 ve IBM 701 gibi makineler yavaş ve hantaldı. Ayrıca sınırlı sayıda G/Ç cihazı barındırıyorlardı. G/Ç aracı olarak manyetik bant kullanılırdı. Veri erişim süresi milisaniye cinsinden ölçülürdü.
İkinci nesil makinelerde (IBM 1401, 7090; RCA 501; CDC 6600; Burroughs 5500; DEC PDP-1) rastgele erişimli çekirdek bellekler, transistör teknolojisi, çok işlevli birimler ve çoklu işlem birimleri kullanıldı. Veri erişim süresi mikrosaniye cinsinden ölçülürdü. Assembler ve yüksek seviyeli diller geliştirildi.
IBM 360, UNIVAC 1108, ILLIAC-IV ve CDC STAR-100 gibi üçüncü nesil makinelerde kullanılan tümleşik devre teknolojisi, nano saniyelik veri erişimi ve işleme sürelerine katkıda bulundu. Çoklu programlama ve dizi gibi kavramlar ortaya çıktı.
Bilgisayar sistemleri, bir mini bilgisayar olan DEC PDP-8’in 1965 yılında piyasaya sürülmesine kadar genel amaçlı veri işlemcileri olarak görülüyordu. Mini bilgisayarlar, büyük ölçekli makinelere kıyasla sınırlı işleme kapasitesine sahip özel uygulama makineleri olarak kabul edilirdi. O zamandan beri, birkaç yeni mini bilgisayar piyasaya sürüldü. Mini ve büyük ölçekli makineler arasındaki bu ayrım, donanım ve yazılım teknolojisindeki gelişmeler nedeniyle daha da bulanıklaşmaktalar.
1970’lerin başında mikroişlemcilerin gelişmesi, üçüncü nesil bilgisayar sistemleri olan mikro bilgisayarlara önemli bir katkı sağlamıştır. Mikroişlemciler esasen, özel bir denetleyici veya işleme sistemi oluşturmak için kullanılan tümleşik bir devre yongası şeklinde bilgisayarlardır. Tümleşik devre teknolojisinde VLSI dönemine yol açan gelişmeler, mikro işlemcileri 1970’lerin mini bilgisayarlar kadar güçlü hale getirdi. VLSI tabanlı sistemler, performansları üçüncü nesil sistemlerden çok daha yüksek olduğu için dördüncü nesil sistemler olarak adlandırılır.
Modern bilgisayar sistemi mimarisi, donanım ve yazılım teknolojilerindeki ilerlemelerle birlikte gelişir. Donanımı çok daha ucuz hale getiren IC teknolojisindeki gelişmeler nedeniyle mimari eğilim, yüksek verimli bir sistem oluşturmak için birkaç işlemciyi birbirine bağlamak yönündedir.
Son zamanlarda beşinci nesil sistemlerin gelişimine tanık olduğumuz iddia edilmektedir. Beşinci nesil bilgisayarın ne olduğuna dair kabul edilmiş bir tanım yoktur. Amerika Birleşik Devletleri’ndeki beşinci nesil geliştirme çabaları, kapsamlı paralellik kullanan çok yüksek hesaplama kapasitesine, büyük bellek kapasitesine ve esnek çok işlemcili mimarilere sahip süper bilgisayarlar oluşturmayı içerir. Japon beşinci nesil faaliyetleri, çok yüksek sayısal ve sembolik işleme yeteneklerine, büyük hafızalara ve kullanıcı dostu doğal ara yüzlere sahip yapay zekâ tabanlı makineler oluşturmayı amaçlar. Bazı çevreler ise beşinci nesli biyolojiden ilham alan (sinir ağları, DNA) bilgisayarlar ve optik bilgisayar sistemleri olduğunu iddia eder.
Günümüz bilgisayar sistemleri nesli, yüksek performans sağlamak için algoritmalarda ve hesaplamalarda paralellikten yararlanır. Paralel mimarinin en basit örneği, aynı anda çalışan iki veri yolu kullanan Harvard mimarisidir. Paralel işleme mimarileri, eşzamanlı olarak çalışan çok sayıda işlemci ve bellek kullanır. Bu kitabın ilerleyen bölümlerinde çeşitli paralel ve pipe-lined mimari yapıları anlatacağız.
1.2.3. Moore Yasası
Mevcut VLSI dönemiyle sonuçlanan donanım teknolojisindeki ilerleme bize bir IC (yonga) üzerinde milyonlarca transistör üretme yeteneği verdi. Bu, büyük bellek sistemlerine sahip güçlü işlemci yapılarına sahip çipler oluşturmamızı sağladı. CDC 6600 gibi ilk süper bilgisayarlar yaklaşık 128 KB belleğe sahipti ve saniyede 10 milyon işlem gerçekleştirebiliyordu. Günümüzün süper bilgisayarları binlerce işlemci ve terabaytlarca bellek içerir ve saniyede trilyonlarca işlem gerçekleştirebilir. Tüm bunlar, transistörlerin boyutlarının son derece küçülmesi nedeniyle mümkündür. Peki bu küçülme ne kadar devam edebilir? 1965’te Gordon Moore (Intel Corporation’ın Kurucusu), bir IC’deki transistör sayısının her yıl ikiye katlanacağını belirtti. Günümüzde ise Moore yasası, yonga sayısının her 18 ay da ikiye katlanacağı şeklinde güncellenmiştir. Moore yasası 40 yıldan fazla bir süredir geçerliliğini korumakta ve birkaç on yıl daha geçerli olmaya devam edeceğine inanılıyor. Arthur Rock, Moore Yasasının bir sonucu olacak IC’leri üretmek için gereken sermaye ekipmanlarının maliyetinin her dört yılda bir ikiye katlanacağını öne sürdü. Gerçekten de, yeni IC üretim tesisleri inşa etmenin maliyeti 1960’larda yaklaşık 10.000 $ ‘dan 1990’larda 10 milyon $’ a yükseldi ve bugün yaklaşık 3 milyar $ ‘a çıkmıştır. Bu nedenle, teknoloji daha yoğun yongalar oluşturmaya izin verse bile maliyet engelleyici hale gelmektedir. Bu durumu aşabilmek için sürekli olarak yeni teknolojiler icat edilmektedir.
1.3. Organizasyon, Tasarım ve Mimari
Bilgisayar organizasyonu, bellek türleri ve kapasitesi, kontrol sinyalleri, register yapısı, komut seti, vb. gibi konuları ele alır. Bir programcının bakış açısından “Bir bilgisayar nasıl çalışır?” sorusuna cevap verir. Mimari, inşa etme sanatı veya bilimidir, bir inşa yöntemi veya tarzıdır. Böylece, bir bilgisayar mimarı, bilgisayar sisteminin çeşitli bileşenleri için performans özelliklerini geliştirir ve bunlar arasındaki bağlantıları tanımlar. Öte yandan bir bilgisayar tasarımcısı, bu bileşen özelliklerini iyileştirir ve bunları donanım, yazılım ve ürün yazılımı öğelerini kullanarak uygular.
Bir bilgisayar sistemi aşağıdaki soyut katmanlarla tanımlanabilir:
1. Katman 1, Kontrol Seviyesi, bir kontrol biriminin talimatların kodunun çözüldüğünden ve doğru şekilde yürütüldüğünden ve verilerin olması gereken yere ve ne zaman taşındığından emin olduğu yerdir. Kontrol ünitesi, kendisine aktarılan makine talimatlarını yukarıdaki seviyeden birer birer yorumlayarak gerekli işlemlerin gerçekleşmesini sağlar.
2. Katman 2, Komut Seti Mimarisi (ISA) veya Makine Seviyesi, bilgisayar sisteminin mimarisi tarafından tanınan makine dilinden oluşur. Bir bilgisayarın gerçek makine dilinde yazılan programlar, herhangi bir derleyici olmadan doğrudan elektronik devreler tarafından yürütülebilir. Komut seti katmanı, her komutun fonksiyonunun açıklandığı seviyedir. Bu seviyenin vurgusu, sistemin donanım yapısından ziyade sistemin davranışı üzerinedir.
3. Katman 3, Sistem Yazılım Seviyesi, işletim sistemi talimatlarıyla ilgilenir. Bu seviye, çoklu programlama, belleği koruma, senkronizasyon işlemleri ve çeşitli diğer önemli işlevlerden sorumludur. Genellikle, assembly dilinden makine diline çevrilen talimatlar bu seviyeden değiştirilmeden geçirilir.
4. Katman 4, Assembly Dil Düzeyi. Daha önce bahsedildiği gibi, derlenen yüksek seviyeli diller önce assembly’ye çevrilir ve daha sonra doğrudan makine diline çevrilir. Bu bire bir çeviridir, yani her assembly dili talimatı teker teker makine dili talimatına çevrilir.
5. Katman 5, Yüksek Seviye Dil Seviyesi, C, C ++, FORTRAN, Lisp, Pascal ve Prolog gibi dillerden oluşur. Bu diller (bir derleyici kullanılarak) makinenin anlayabileceği bir dile çevrilmelidir. Derlenen diller assembly diline çevrilir ve ardından makine koduna dönüştürülür. (Bir sonraki alt seviyeye çevrilirler.) Bu seviyedeki kullanıcı, alt seviyelerin çok azını görür. Bir programcının veri türleri ve bu türler için mevcut olan talimatları bilmesi gerekse de, bu türlerin gerçekte nasıl uygulandığını bilmesine gerek yoktur.
6. Katman 6, Kullanıcı Düzeyi, uygulamalardan oluşur ve herkesin en aşina olduğu düzeydir. Bu seviyede kelime işlemciler, grafik paketleri veya oyunlar gibi programları çalıştırıyoruz. Alt seviyeler, Kullanıcı Seviyesinden neredeyse görünmezdir.
İlk katmandan sonuncu katmana doğru ilerledikçe, makinenin davranışının bir donanım-yazılım yapısına dönüştüğü açıktır. Bir bilgisayar mimarı, daha önce açıklanan ilk iki seviyeye odaklanırken, bilgisayar tasarımcısı sistem tasarımını kalan seviyelere taşır.
1.4. Performans Değerlendirmesi
Bilgisayar sistemlerinin değerlendirilmesinde çeşitli performans ölçütleri kullanılır. Saniyede milyon talimat (MIPS), saniyede milyon işlem (MOPS), saniyede milyon kayan nokta işlemi (MFLOPS veya megaflop), saniyede milyar kayan nokta işlemi (GFLOPS veya gigaflop) ve saniyede milyon mantıksal çıkarım (MLIPS) en yaygın olanlarıdır. Saniyede trilyon kayan nokta işlemi (Teraflop) yapabilen makineler günümüzde mevcuttur. Tablo 1.1, bu ölçütler için kullanılan yaygın örnekleri göstermektedir. 10’un kuvvetleri güç, frekans, voltaj ve bilgisayar performansı ölçümleri için kullanılır. 2’nin kuvvetleri ise genellikle bellek, dosya ve register boyutları için kullanılır.
Bölüm Özeti
Bu bölümde, modern bilgisayar sistemleriyle ilişkili temel terminoloji tanıtılmıştır. Beş ortak mimari soyutlama katmanı, bilgisayar nesillerinin evrimi, performans sorunları ve ölçü birimleri kısaca tanıtıldı. Kitabın sonraki bölümleri, bu bölümde vurgulanan kavramlar ve konular üzerine inşa edilecektir.
Kaynakça
Burks, A.W., Goldstine, H.H. and Von Neumann, J., ‘‘Preliminary discussion of the logical design of electrical computing instrument,’’ U.S. Army Ordnance Department Report, 1946.
Goldstine, H.H., The Computer from Pascal to Von Neumann, Princeton, NJ: Princeton University Press, 1972.
Grace, R., The Benchmark Book, Upper Saddle River, NJ: Prentice-Hall, 1996.
Hill, M.D., Jouppi, N.P. and Sohi, G.S. Readings in Computer Architecture, San Francisco, CA: Morgan Kaufmann, 1999.
Price, W.J., ‘‘A benchmarking Tutorial,’’ IEEE Microcomputer, Oct 1989.
Schaller, R., ‘‘Moore’s Law: Past, Present and Future,’’ IEEE Spectrum, June 1997.
Shiva, S.G., Advanced Computer Architectures, Boca Raton, FL: CRC Taylor and Francis, 2005.
Comments