Bellek Nasil çalişir

Elektronik bölümünde yer alan bu konu SüKuN tarafından paylaşıldı.

  1. SüKuN

    SüKuN Harbi Aktif Üye

    Daha önce, belleğin veriyi nasıl taşıdığından ve işlemci ile birlikte nasıl çalıştığından bahsetmiştik. Şimdi bu süreci biraz daha detaylı olarak inceleyeceğiz.

    BELLEK İŞLEMCİ ile BİRLİKTE NASIL ÇALIŞIR?




    Bir bilgisayarın ana bileşenleri.

    İşlemci - CPU bilgisayarın beyni olarak kabul edilen kısmıdır. Tüm veri işleme işlemleri burada yapılır.

    Yongaseti - Chipset işlemciyi destekler. İçerdiği çeşitli kontrolörler ile işlemci ve sistemdeki diğer bileşenler arasındaki veri alışverişinin nasıl yapılacağını belirler. Bazı sistemlerde birden fazla yonga seti bulunur.

    Bellek kontrolörü - yonga setinin bir parçasıdır ve bu kontrolör bellek ile işlemci arasında bilgi akışını düzenler.

    Veriyolu - Bus
    , bilgisayar içerisinde bulunan ve işlemci - CPU, bellek ve tüm input/output cihazların bağlı olduğu birbirine paralel çeşitli kablolardan oluşan yapıya verilen addır. Veriyolunun tasarımı yada veriyolu mimarisi - bus architecture, verinin anakart boyunca hangi hız da ve hangi miktarda veri akabileceğini belirtir. Sistem üzerinde çeşitli veriyolu tipleri bir arada bulunur bunun sebebi farklı bileşenler için farklı hızda veriyolu olmasının gerekmesidir. Bellek veriyolu - memory bus, bellek kontrolörü ile bilgisayarın bellek soketleri arasında çalışır. Yeni sistemlerde iki ayrı kısımdan oluşan bir bellek mimarisi kullanılır. Frontside bus (FSB) adı verilen kısım işlemci CPU ile ana bellek arasında ve backside bus (BSB) adı verilen kısım bellek kontrolörü ile L2 cache arasında çalışır.

    BELLEK HIZI

    İşlemci, bellek üzerindeki bir bilgiye ihtiyaç duyduğunda; bellek kontrolörü tarafından düzenlenen bir komut oluşturur. Bellek kontrolörü komutu belleğe gönderir ve işlemciye bilgininin ne zaman iletileceğini bildiren bir veri gönderir. İşlemci, bellek ve bellek kontrolörü arasında sürekli devem eden bu döngü, veriyolu hızı ve diğer faktörlerin yanısıra bellek hızına da bağlıdır.

    Bellek hızı bazen Megahertz (MHz) olarak, bazen de nanosaniye(ns) ile ifade edilen erişim zamanı - access time ( verinin iletilmesi için gereken zaman) birimleriyle ölçülür. Ne şekilde ifade ediliyor olursa olsun, Megahertz yada nanosaniye, bellek hızı, belleğin kendisine iletilen komuta ne kadar hızlı yanıt verebildiğini gösterir.

    ACCESS TIME - ERİŞİM ZAMANI (NANOSANİYE)


    Erişim zamanı belleğin kendisinden istenen veri için gelen komuta yanıt verme süresidir. Bellek yongaları ve modüllerin erişim zamanları 50ns ile 80ns arasında değişmektedir. Erişim zamanı değerlerinde (bu değerler nanosaniye cinsindendir), düşük değerler yüksek hızları göstermektedir.

    Aşağıdaki örnekte, bellek kontrolörünün bellekten veri istemesi ve belleğin bu isteğe yanı vermesi 70ns sürmekte. İşlemci veriyi ortalama olarak 125ns'de almakta. Sonuç olarak işlemcinin bir veri için istem yapması ile bu verinin işlemciye iletilmesi arasında geçen toplam süre - 70ns'lik bir bellek kullanıldığında - 195ns'dir. Bu süre içerisinde bellek kontrolörü bilgi akışını düzenlemekte ve gerekli veri işlemci ile bellek arasında veriyolu üzerinde iletilmektedir.

    MEGAHERTZ (MHZ)

    Synchronous DRAM teknolojisinin ilk kullanıldığı dönemlerde, bellek yongalarında kendilerini bilgisayarın sistem saati - system clock ile senkronize biçimde çalıştırma yetenekleri vardı. Bu da hızın, megahertz yada saniyedeki milyon devir cinsinden ölçülmesini kolaylaştırıyordu. Çünkü bu hız sistemin herhangi bir işlem yapmadığı durumlardaki hız ile aynıydı. Böylece farklı bileşenlerin hızlarını karşılaştırmak ve işlemlerini senkronize hale getirmek de oldukça kolay hale geliyordu. Hız konusunu daha iyi anlayabilmek için sistem saati - system clock kavramının anlaşılması gerekmektedir.

    SYSTEM CLOCK - SİSTEM SAATİ


    Bilgisayarın sistem saati anakart üzerinde bulunur. Bilgisayarın tüm bileşenlerine aynı ritimde sinyaller gönderir, tıpkı bir metronom gibi. Bu ritim aşağıda çizildiği gibi karesel olarak ifade edilebilecek dalgalar biçimindedir:

    Gerçekte ise bu sinyaller osiloskop ile gözlendiğinde aşağıda çizildiği gibi görünmektedir:
    Resimdeki her dalga bir saat devrini - clock cycle göstermektedir. Eğer bir sistem 100Mhz'de çalışıyorsa bunu anlamı saniyede 100 milyon saat devri yapıldığıdır. Bilgisayarda yapılan tüm işlemler saat devri ile ölçülür ve her işlemin belirli saat devirleri sürelerinde yapılmaktadır. Örneğin bir bellek istemi işlenirken; bellek kontrolörü işlemciye istenilen verinin altı saat devri içerisinde iletileceğini bildirir.

    İşlemci yada diğer cihazlar; sistem saatinden daha hızlı yada daha yavaş çalışıyor olabilirler. Farklı hızlardaki bileşenlerin bir arada senkronize biçimde çalışması için bir çarpan yada bölen faktörü kullanılır. Örneğin 100MHz'lik sistem saati 400MHz'lik işlemci ile çalışıyorsa, her cihaz; bir saat devrinin işlemcide gerçekleşen dört saat devrine göre gerçekleştiğini kabul eder. Ve işlemlerini senkronize etmek için dört çarpan faktörünü kullanırlar.

    Bir çok kişi işlemcinin hızının bilgisayarın hızı olduğunu kabul eder. Ama çoğu kez sistem veriyolu ve diğer bileşenler farklı hızlarda çalışır.

    EN YÜKSEK PERFORMANSI ELDE ETMEK

    Bilgisayar işlemcilerinin hızları son yıllarda büyük bir hızla artmıştır. İşlemci hızının artması elbette bilgisayarın performansı arttırmaktadır. Ancak işlemci bilgisayarın parçalarından yalnızca biridir ve çalışabilmek için diğer bileşenlere ihtiyaç duymaktadır. Çünkü işlemci tarafından işlenecek veri mutlaka bellek tarafında yazılmalı yada okunmalıdır. Sistem performansı; bilgilerin işlemci ve bellek arasındaki iletim hızına bağlıdır.

    Bu yüzden hızlı bellek teknolojileri tüm sistem performansı etkilemektedir. Ancak artan bellek hızları çözümün sadece bir parçasıdır. İşlemci ile bellek arasındaki bilginin alışverişi sırasında geçen süre genellikle işlemcinin bu işlemi yapma süresinden daha uzundur. Bu bölümde anlattığımız teknoloji ve yöntemler bellek ile işlemci arasındaki bilgi alışverişini daha hızlı hale getirmek için tasarlanmışlardır.

    ÖN BELLEK - CACHE MEMORY


    Ön bellek - Cache memory, işlemcinin hemen yanında bulunan ve ana belleğe oranla çok düşük kapasiteye (genellikle 1MB'dan az) sahip olan bir yapıdır. Cache bellek işlemcinin sık kullandığı veri ve uygulamalara en hızlı biçimde ulaşmasını sağlamak üzere tasarlanmıştır. İşlemcinin ön belleğe erişmesi, ana belleğe erişmesine oranla çok kısa bir süredir. Eğer aranan bilgi ön bellekte yoksa işlemci ana belleğe başvurur. Yani önce ön belleğe bakmak çok kısa bir zaman alır. Bunu şöyle açıklayabiliriz, yiyecek bir şeyler almak için markete gitmeden önce buzdolabını kontrol edersiniz, eğer istediğiniz yiyecek dolapta varsa markete gitmezsiniz, yoksa bile olup olmadığını anlamak sizin bir anınızı alır.

    Önbellek kullanımında tüm programlar,bilgiler ve veriler için geçerli olan temel prensip "80/20" kuralıdır. %20 oranındaki hemen kullanılan veri ve işlem zamanının %80'ini kullanır. (Bu %20'lik veri e-posta silmek yada göndermek için şifre girme, sabit diske dosya kaydetme yada klavyede hangi tuşları kullanmakta olduğunuz gibi bilgileri içermektedir. Bunun tersi olarak geri kalan %80'lik veri de işlem zamanının %20'sini kullanır. Ön bellek sayesinde, işlemci tekrar tekrar yaptığı işlemler için zaman kaybetmez.

    ÖN BELLEK - CACHE MEMORY NASIL ÇALIŞIR


    Ön bellek adeta işlemcinin "top 10" listesi gibi çalışır. Bellek kontrolörü işlemciden gelen istemleri önbelleğe kaydeder, işlemci her istemde bulunduğunda ön belleğe kaydedilir ve en fazla yapılan istem listenin en üstüne yerleşir buna "cache hit" adı verilir. Önbellek dolduğunda ve işlemciden yeni istem geldiğinde; sistem, uzun süredir kullanılmayan (listenin en altındaki) kaydı siler ve yeni istemi kaydeder. Böylece sürekli kullanılan işlemler daima önbellekte tutulur ve az kullanılan işlemler önbellekten silinir.

    ÖN BELLEK SEVİYELERİ

    Günümüzde birçok önbellek işlemci yongası üzerine yerleştirilmiş olarak satılmaktadır. Bunun yanı sıra önbellek, işlemci üzerinde, anakart üzerinde ve/veya anakart üzerinde işlemci yakınında bulunan, ön bellek modülünü barındıran ön bellek soketi halinde de bulunabilir. Ne şekilde yerleştirilmiş olursa olsun, ön bellek işlemciye yakınlığına göre farklı seviyeler ile adlandırılır. Örneğin, işlemciye en yakın ön bellek Level 1 (L1) Cache bir sonraki L2, sonraki L3 biçiminde adlandırılır. Bilgisayarlarda önbellekler dışında da, önbelleğe alma işlemi yapılır. Örneğin; sistem bazen, belleği sabit disk sürücüsü için bir ön bellek gibi kullanabilir. Ancak elbette bizim şu anda anlattığımız bu tür bir uygulama değil. Anlatmaya çalıştığımız "cache" teriminin bellek ve diğer depolama teknolojileri için de kullanılan bir terim olduğudur.

    Şimdi şunu merak ediyor olabilirsiniz, önbellek madem bu kadar yararlı bir yapı neden bütün belleklerde kullanılmıyor. Bunun bir tek sebebi var, ön belleklerde SRAM bellek yongaları kullanılır, bu yongalar hem çok pahalıdırlar hem de belleklerde şu anda kullanılan DRAM'e kıyaslandığında aynı hacimde daha az veri depolayabilmektedir. Önbellek istemin performansını artırır ancak bu işlevi belli bir noktaya kadar sürdürebilir. Önbelleğin sisteme asıl faydası, sık yapılan işlemleri kaydetmektir. Daha yüksek kapasiteli önbellek, daha fazla veri depolayabilecektir; ancak sık kullanılan işlemlerin sayısı sınırlıdır. Yani belli bir seviyeden sonra önbelleğin geri kalan kapasitesi arada sırada kullanılan işlemleri depolamak için kullanılır. Bunun da sisteme ve kullanıcıya hiçbir faydası olmaz.


    ANAKART YERLEŞİMİ


    Sizin de anladığınız gibi bellek modüllerinin anakart üzerinde bulundukları yer ve yerleşimleri sistem performansını doğrudan etkilemektedir. Çünkü bellek, işlemcinin çalışması sırasında gerekli verileri iletir bu verilerin iletim hızı da tüm sistem performansını etkilemektedir. Ve işlemci ile bellek arasındaki veri alışverişi oldukça karmaşık bir yapıda gerçekleşir, işlemci ile bellek arasındaki mesafe bu karmaşık sürecin zamanını doğrudan etkiler. Bu nedenle işlemci ile bellek arasındaki mesafe sistem performansını etkileyen önemli bir faktördür.

    GİRİŞİKLEME - INTERLEAVING


    Girişikleme - interleaving terimi işlemcinin iki yada daha fazla bellek bankı ile iletişime geçtiği süreci ifade etmek için kullanılır. Interleaving teknolojisi genellikle sunucu ve işistasyonları gibi büyük sistemlerde kullanılır. Bu teknoloji şu şekilde çalışır: işlemci bir bellek bankını her defasında adreslediğin de bellek bankının kendini "sıfırlaması - reset" için bir saat devrine ihtiyacı vardır. İşlemci ilk bellek bankı kendini sıfırlarken ikinci bellek bankını adresleyerek işlem süresini kısaltır. Interleaving işlemi, performansı arttırmak için bellek yongaları içerisinde de gerçekleşebilir. Örneğin SDRAM yongaları içindeki bellek hücrelerinin eşzamanlı olarak çalışan iki ayrı "hücre bankı - cell bank" oluğunu kabul edelim. İki hücre bankı arasında gerçekleşen interleaving işlemi kesintisiz bir veri akışı sağlar. Bu da bellek devrinin süresini kısaltarak veri iletim hızını arttırır.

    BURSTING

    Bursting, zaman kısaltma amaçlı bir diğer teknolojidir. Bursting'in amacı işlemciye istediği verinin yanı sıra isteyebileceği verileri de sunmaktır. Böylece işlemci belleğe bir kez eriştiğin de ihtiyacı olan bilgiler dışında bu verinin ardından ihtiyaç duyacağı bir grup veri de ardışık olarak işlemciye verilir. Bu sayede zamandan tasarruf edilmiş olur, çünkü işlemcinin istediği veririn hemen ardından hangi veriyi isteyebileceği istatistiksel olarak bellidir. Böylece işlemci ardışık veriler için her defasında belleğe başvurmak zorunda kalmaz. Bursting, farklı bellek tiplerinde veri okuma ve yazma sırasında kullanılabilir.

    PIPELINING

    Pipelining, bir görevin farklı aşamalara bölünerek her aşamada bir kısmının tamamlandığı bir bilgisayar işlemi sürecidir. Karmaşık bir görevin küçük görevlere bölünerek yapılması olarak da açıklanabilecek pipelining, bu işlemin yapılmadığı süreçlere göre daha yüksek bir performans artışı sağlamaktadır. Ardışık düzenleme de diyebileceğimiz pipeline işlemi başladığında, aşama sayısı ne kadar fazla olursa olsun bu işlemin yapılmadığı uygulamalara göre daha hızlı bir süreçtir.

    Bursting ve pipelining yöntemleri , EDO teknolojisinin gelişmesi ile popüler hale geldiler. Bu yöntemleri kullanan EDO yongalarına "Burst EDO" yada "Pipeline Burst EDO" yongaları adı verilir.