Bilgisayar Sistemleri #2 — Büyük Resme Bakmak -II-

Herkese merhabalar, bilgisayar sistemleri konulu olacak bir yazı dizisinin ikinci bölümü ile birlikte sizleri selamlıyorum. İlk yazıya buradan ulaşabilirsiniz. Bu yazının konusu bir bilgisayar sisteminin genel işleyişine detaya girmeden dahil olmaktır yani büyük resme bakmaktır. Belki bu yazı dizisinin sonrasında büyük resmin küçük parçalarını detayları ile birlikte elimden geldiğince sizlerle paylaşabilirim. Eğer ilginizi yeterince çektiyse hadi devam edelim


Bir Sistemin Donanım Organizasyonu

hello programı çalıştırıldıktan sonra ne olduğunu anlamak için tipik bir sistemin donanım organizasyonunu anlamamız gerekir.

Buses:

Sistem boyunca çalışan ve bus adı verilen, elektrikli kanalların biraraya getirilmesidir. Bunlar, bileşenler arasında ileri ve geri byte bilgi taşırlar. Bir bus tipik olarak word diye bilinen sabit boyutlu bayt parçalarını aktarmak üzere tasarlanmıştır. Bir wordiçerisindeki byte sayısı temel sistem parametresidir. Günümüzdeki birçok makinede word size 8 byte olarak belirlenmiştir.

I/O Device:

I/O cihazları sistemin dış dünya ile bağlantısını sağlar. Örneğin, klavye ve mouse girdi almaya, monitör çıktı vermeye ve disk uzun süreli veri ve program tutmaya yarar. Her bir I/O cihazı bir adaptör veya controller ile I/O bus’a bağlanmıştır. Controllercihazın kendisinde ya da anakart üzerinde bulunan bir chipset, adaptör ise cihazı anakartın bir slotuna bağlayan karttır. Her ikisi de I/O cihazı ve I/O bus arasında ileri ve geri bilgi taşımayı amaçlar.

Main Memory:

İşlemci programı gerçeklerken programı ve verileri geçici olarak tutan depolama cihazıdır. Fiziksel olarak, dynamic random access memory(DRAM) çiplerinin koleksiyonunu içerir. Doğrusal bir byte dizisi olarak organize edilmiştir. 0’dan başlayarak herbirinin kendi eşsiz adresleri(array index) vardır.

Processor:

CPU, main memory(ana bellek) içerisinde tutulan talimatları yorumlayan veya gerçekleyen bir motordur. Özünde, program counter(PC) adı verilen bir word büyüklüğünde depolama aygıtı bulunur. PC herhangi bir zamanda, ana bellekteki bazı makine dili talimatlarına işaret eder(adresini içerir). İşlemci PC tarafından işaret edilen talimatları bellekten okur, talimat içerisindeki bitleri yorumlar ve sonraki talimat için PC’yi updateeder. İşlemciler sahip oldukları instruction set architecture(talimat seti mimarisi) tarafından verilen basit işleri yaparlar ancak modern instruction set architecture’lar daha komplekstir.


hello Programını Yürütme

Basit bir şekilde donanım organizasyonu ve operasyonları hakkında bilgi sahibi olduğunuza göre hello programının yürütüldüğünde ne olacağı konusuna başlayabiliriz. Yazılara devam edersem daha sonra doldurmayı planladığım pek çok ayrıntıyı geçiyoruz ve şimdilik sadece büyük resme odaklanıyoruz.


Önbellekler

Yukarıdaki basit hello örneğinde bile işlemler için zamanın büyük kısmı, birşeylerin bir yerden başka bir yere taşınması ile tüketilmektedir. Bir programcının bakış açısıyla, bu taşıma ve kopyalama işi gerçek işin büyük kısmını zamansal olarak kaplamaktadır. Bu sebeple, bir sistem tasarımcısının en büyük amacı bu kopyalama operasyonlarını mümkün olduğunca hızlı yapmaktır.

Tipik bir register dosyası, ana bellekteki milyarlarca byte aksine ancak birkaç yüz byte bilgi depolayabilir. Ancak işlemciler veriyi register dosyalarından ana belleğe göre 100 kat hızlı okuyabilir. Sistem tasarımcıları bu örnekten yola çıkarak cache(önbellek) denilen küçük ve hızlı depolama alanları dahil ettiler. Bir cache, işlemcinin yakın zamanda ihtiyaç duyacağı bilgi için geçici depolama alanı sunar.

İşlemci çipi üzerindeki L1 cache, register dosyası hızlıca erişebilsin diye onbinlerce byte tutabilir. Daha büyük olan L2 cache işlemciye bağlı milyonlarca byte tutabilir ve bunlar özel bus ile taşınır. L1 cache erişimi L2 cache erişimine göre 5 kat hızlıdır. L2 cache erişimi de main memory erişimine göre 5–10 kat hızlıdır. L1 ve L2 cache donanım teknolojisi içerisinde static random access memory(SRAM) olarak bilinir. Buradan alınacak en önemli ders, uygulama geliştiricilerinin cache memories kullanımı ile programlarının performanslarını büyük ölçüde artırabilecekleridir.


Depolama Cihazlarının Hiyerarşisi

Her bilgisayar sisteminde depolama cihazları(caches, main memory) bir hiyerarşi oluşturur. Hiyerarşinin tepesinden aşağıya doğru cihazlar yavaşlar, büyür ve byte başına fiyatları ucuzlar. Bir bellek hiyerarşisinin ana fikri, bir seviyedeki depolamanın bir sonraki alt seviyedeki depolama için önbellek görevi görmesidir. Örneğin register file, L1 cache için önbellek görevi görürken, L1 ve L2 cache L3 cache için önbellek görevi görür o da main memory için önbellektir.


“Büyük Resme Bakmak” isimli kısa yazı dizisinin ikinci bölümünü de burada bitiriyorum. Sonraki yazıda işletim sisteminden ve onun donanımı nasıl yönettiğinden vs. bahsedeceğiz.

Bir sonraki yazıda görüşmek üzere. İlk derlemede çalışan hatasız programlar dilerim :D

Daha fazlası için https://gokhanyahyatorba.wordpress.com/


Bu metinde başta “Computer Systems: A Programmer Perspective 2nd Edition, Bryant O’Hallaron” olmak üzere pek çok farklı kaynaktan faydalanılmıştır.

Bu metinde kullanılan görseller “Computer Systems: A Programmer Perspective 2nd Edition, Bryant O’Hallaron” adlı kaynaktan alıntıdır.

    Gökhan Yahya Torba

    Written by

    Yazılımcı, teknoloji tutkunu, blogger. Hobi olarak askeri teknolojiler ve robotikle ilgileniyor.

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade