Bilgisayarda Ne Nasıl Çalışır 1 (Ram)

PC'lerimizdeki bellekler, sistemde yer alan işlemci ve grafik kartları gibi veri yaratan ve işleyen birimlerin ortaya çıkardığı verilerin uzun ya da kısa süreli olarak saklandığı işlevsel birimlerdir. Sabit disk sürücüler, sistem RAM'leri, işlemcilerin içindeki cache diye tabir edilen bellekler, BIOS'un saklandığı EPROM'lar, grafik kartlarının üzerindeki RAM'ler, CD'ler, disketler v.s. hepsi PC'lerde yer alan bellek türleridir.

Bellek kavramı bu derece geniş bir konu olmasına rağmen bu yazıda konumuz olan bir çoğumuzun oldukça aşina olduğu, hep daha fazla olmasını hayal ettiğimiz ve hatta yeri geldiğinde overclock denemelerimize bile dahil ettiğimiz sistem RAM'i denilen bellekler. Peki RAM ne demek? RAM, İngilizcesi Random Access Memory, Türkçesiyle Rastgele Erişilebilir Bellek kelimelerinin başharflerinden oluşan bir kısaltma. Bu noktada, belleklerin RAM'ler ve Sadece Okunabilir Bellekler yani ROM'lar (Read Only Memory) şeklinde sınıflandırıldığını hatırlatmak isteriz. RAM'ler veriyi saklamak için beslemeye yani elektrik enerjisine ihtiyaç duyduğu halde ROM'lar besleme olmasa bile veriyi saklayabilirler. Ayrıca, ROM'lar genellikle, kısaltmanın açılımından da anlaşıldığı gibi sadece okuma amacıyla kullanılırlar. Üzerlerinde saklı verinin kullanıcı tarafından kolayca değiştirilmemesi hedeflenir.
RAM'lerin en başta gelen özelliklerinden birisi – ki RAM ismini almalarından sorumlu olan da budur - sakladıkları verilere manyetik teyplerdeki ya da CD-ROM’lardaki sıralı erişimin aksine, sırasız ve hızlı bir şekilde rastgele erişime imkan vermeleridir. Erişimde sağladıkları hız, RAM'lerin sistemde bu denli önemli ve performansı belirleyici olmalarında en önde gelen etkendir. Veri barındırma kapasiteleri ve hız konusunda, merkezi işlemci üzerindeki düşük kapasiteli ancak çok hızlı bir RAM olan cache belleklerle, kapasiteleri günümüzde inanılmaz boyutlara ulaşmış olan sabit disk sürücüler arasında yer alırlar ve bir çeşit tampon görevi görürler. İşletim sistemi, sabit sürücünün yavaşlığını gizlemek amacıyla, yakın gelecekte ihtiyaç duyulabilecek veriyi henüz ihtiyaç durumu ortaya çıkmadan sabit diskten sistem RAM'leri üzerine yükler ve gerektiğinde hızlı bir şekilde işlemcideki cache belleğe iletilmesini sağlar.

RAM'lerin sistem içindeki yerlerini tanımladıktan sonra simdi de teknolojinin ve erişim protokollerinin ortaya çıkardığı RAM türlerini inceleyelim.

RAM Çeşitleri

RAM'lerin, fiziksel yapıları ve çalışma prensipleri itibariyle mikroişlemcilerden hiç bir farkı yok. Tıpkı mikroişlemciler gibi, silikon üzerine işlenmiş çok sayıda transistörün, bu defa ağırlıklı olarak veri erişiminin kontrolü ve verinin saklanmasıyla ilgili belli işlevleri yerine getirmek amacıyla birbirine bağlanmasıyla ortaya çıkmış ve nispeten daha az karmaşık olan elektronik yapılar. Bu yüzden mikroişlemci teknolojileriyle RAM teknolojilerini ilgilendiren konular tamamıyla ortak. RAM teknoljilerini süren hedef, mikroişlemcilerde olduğu gibi, daha küçük transistörler üretmek, bu sayede aynı büyüklükte bir silikon parçasına daha fazla transistör yani daha fazla işlev sığdırmak ve silikonun daha hızlı çalışmasını sağlamaktır. Bu amaca ulaşma yolunda karşılaşılan engellerin çoğu üretim teknolojilerindeki gelişmelerle aşılmakta olup geri kalan kısım ise geliştirilen daha akıllı algoritmalar ve protokollerle çözülüyor. İşte RAM türlerini bu protokoller belirliyor.
Çoğumuz, SDR-RAM, DDR-RAM, DDR II RAM, RDRAM ve hatta artık mazi de kalmış olsa da EDO RAM gibi kısaltmaları duymuşuzdur. Bu kısaltmalar, RAM'e erişmek, yani RAM'den veri okumak ya da RAM'e veri yazmak için kullanılan protokol hakkında bize bilgi verir. Örnek olarak, günümüzde en popüler RAM türü olan DDR bellekleri verebiliriz. Buradaki DDR (Double Data Rate) kısaltması, çift veri hızlı bellekler anlamında kullanılıyor. Bir önceki nesil bellek türlerine isim veren SDR (Single Data Rate) kısaltması ise tek veri hızlı RAM'leri simgeliyor. Bu kısaltmaları daha detaylı açıklayabilmek için sonraki bölümlerde değineceğimiz bazı kavramları anlamak gerekiyor. Bu noktada, ön bilgi olarak söyleyebileceğimiz, DDR ve SDR kavramlarının senkron olarak çalışan, yani veri akışının bir saat işaretiyle düzende tutulduğu tip RAM'lerde, bir saat periyodu içinde gerçekleşen veri akış hızını belirttikleri olacaktır. RD-RAM ise RAMBUS firması tarafından geliştirilen RAMBUS veriyolu üzerinde çalışan, bazı yönlerden DDR'a benzeyen, İngilizce'deki 'RAMBUS Direct' kelimelerinin baş harflerinden ismini alan bir RAM türüdür.
Anakartlarımızdaki bellek soketlerine yerleştirdiğimiz baskı devreleri, anakarta bağlandıkları veri yolunun genişliğine göre DIMM (Dual Inline Memory Module) ve SIMM (Single Inline Memory Module) gibi kısaltmalarla adlandırıyoruz; sanırız bunun da haklı bir sebebi var (!). Bugünlerde en popüler olanı, üzerinde genellikle bant genişliği yüksek ve dolayısıyla daha geniş veriyoluna ihtiyaç duyan DDR bellek yongalarını barındıran DIMM'ler. Dizüstü bilgisayarlarda kullanılan DIMM'ler fazla yer kaplamamaları için küçük olduklarından SO-DIMM (Small Outline Dual Inline Memory Module) yani küçük izdüşümlü RAM adını alıyorlar. DIMM’lere baktığımızda, genellikle 4,8 ya da 16 gibi belli sayılarda bellek yongaları, dirençler ve kondansatörlerin yanısıra SPD (Serial Presence Detect) denilen bir ROM yongası bulunduğunu görebiliriz.
SPD yongası üzerinde, yazımızın ilerleyen bölümlerinde daha detaylı değineceğimiz, baskı devre üzerindeki bellek yongalarıyla ilgili çeşitli parametreler saklanır. Bu parametrelerin zamanlamayla ilgili olanları (örn. CAS gecikmesi), üretimden sonra yapılan perfromans testleri sonucunda modülün kararlı olarak çalışabileceği en üst performansı gerçekleyecek şekilde belirlenir ve SPD üzerine işlenir. Bellek modülü anakarta yerleştirildikten sonra, SPD üzerindeki bu parametreler boot esnasında BIOS tarafından okunur ve sistemin bellek kontrolüyle ilgili kısımları (yonga seti) gerektiği şekilde haberdar edilir, böylece bellekle olan iletişim sağlanmış olur. Bellek modülünün üreticisi olan firmanın kodu, modülün üretim tarihi, seri numaralrı, bellek yongalarının kapasiteleri ve erişimleriyle ilgili bilgiler SPD yongasında saklanan diğer bilgiler arasında yer alır.

Bizi ilgilendiren asıl kısım ise bellek yongaları. Bunlar, tıpkı mikroişlemciler gibi, kılıflanmış tümleşik devreler. Üretim teknolojisi yani transistörlerin minyatürleştirilmesi bakımından bazı durumlarda işlemcilerden bir nesil önde gidenlerine rastlamak bile mümkün. Yonga üzerinde yer alan ve milyonlarcasının bir araya gelerek bellek dizisini oluşturduğu temel yapı, verinin en temel hali olan bir bitlik veriyi yani ikilik düzendeki 0 veya 1 bilgisini saklamakla sorumlu RAM hücresidir. Bir yongada bu hücreden milyonlarcası kullanıldığından, tasarım ve üretimde çalışan mühendisleri meşgul tutan ve para kazanmalarını sağlayan konuların başında bu bellek hücresini en az yer kaplayacak, en az fireyle en verimli şekilde üretilebilecek şekilde tasarlamak yer alır.

Bellek yongasının nasıl çalıştığını anlamak için önce bu tümdevrenin yapısını inceleyelim. Elimizde bir bellek dizini var. Bu dizini belli sayıda satır ve sütünlardan oluşan iki boyutlu bir tablo olarak düşünebiliriz. Tablomuzun yapıtaşları ise bahsettiğimiz RAM hücreleri. Bu tablo üzerindeki herhangi bir hücreye erişmek (yazmak ya da okumak) için o hücrenin tablodaki konumunu, yani, hangi satır ve sütünun kesişim noktasında bulunduğunu vermemiz gerekir. Bu konum bilgisine adres diyoruz. Erişimi kolaylaştırmak için genelde bellek tablomuz yonga üzerinde daha küçük alt tablolara bölünmüştür. Bu alt tablolara banka (bank) deniyor. Günümüzde bellek yongaları genelde 4 bankalı olarak tasarlanıyor. Kısaca, adresimiz satır ve sütün numaralarının yanısıra bir banka numarasını da içeriyor. Bu sayede bellek yongası hangi bankanın kaçıncı satırındaki kaçıncı sütunundaki hücreye erişim yapılmak istendiğini biliyor. İşlemcilerin belleğe erişirken kullandığı en küçük veri birimi tek bir bit yerine 8 bitten oluşan bayt (byte)'tır. Bu yüzden bellek yongalarında erişilebilen en küçük veri birimi de byte olarak düzenlenmiştir. Böylece bellek tablomuz satır, sütun ve banka adres bilgileriyle erişilen byte'lardan oluşuyor. Diğer bir deyişle bir byte'ı oluşturan ve tablomuzda yanyana konumlanmış olan 8 RAM hücresi aynı anda okunuyor ya da yazılıyor. Bu aslında gerçekte olanın basitleştirilmiş hali. Kullandığımız bellek modüllerinde anakarta bağlantıyı sağlayan veri yolunun genişliği göze önüne alındığında - ki bu DIMMlerde 128 bittir - aynı anda çok sayıda byte okumak mümkün (128bit/8bit=16 byte).

Sanıyorum ki bu noktada bir bankanın yapısını ve nasıl işlediğini incelemek yerinde olacaktır. Bu kısımda günümüzde en popüler olan SDR-RAM ve DDR-RAM bellek tiplerinin temel çalışma prensibi olan dinamik RAM nasıl çalışır hep birlikte göreceğiz. Bahsettiğimiz gibi, banka, esas olarak belli sayıda satır ve sütunlardan oluşan bir byte tablosu. Bu tablodan byte'larımızı okumak için satır ve sütun numarasını yani adresini vermemiz yeterli. Simdi byte’larımızı oluşturan bitlerimize yani RAM hücrelerimize döndüğümüzde nasıl oluyor da bu hücrelerde saklanan veri ile dışarı dünya arasında iletişim sağlanıyor biraz daha yakından bakalım

RAM hücremizi dışarıya bir vanayla bağlı olan bir hazne olarak düşünelim. Verimizi yani hücrelerde saklanan 0 veya 1 değerlerinden birini saklayan bitlerimizi de haznemizin boş ya da dolu olma durumu olarak, suyu ise yine aktığını varsayabileceğimiz elektriksel yük yani elektronlar olarak modelleyelim. Buna modele göre, RAM hücrelerimiz, yani küçük su hazneciklerimiz, saklayacakları veri 0 ise boş, 1 ise dolu oluyor. Bellek tablomuzda bir sütunda yer alan yani dikey olarak komşu olan haznelerin tümü ortak bir boruya bağlı. Her sütunda bulunan bu ortak borunun elektronikteki karşılığı bit hattı. Bit hattına her okuma veya yazma işleminden önce ayrı bir vana üzerinden su dolduruluyor. Buna birazdan daha detaylı deyineceğiz. Bu boruların bir ucunda, borudaki su seviyesini algılayan algı yükselticisi denilen birimler bulunuyor. Erişim sırasında, önce adresin gösterdiği satırdaki bütün hazneleri bulundukları sütunlardaki ana boruya bağlayan küçük vanalar aynı anda açılıyor ve tüm satırın sakladığı veri okunuyor. Sıra geliyor bu satırın hangi sütununun ayıklanacağına. Bunun için, bir kısmı satırla ilgili işlemlere eş zamanlı olarak, adresin gösterdiği sütun numarası çözümleniyor, o sütuna ait byte’ın algılayıcılarına algıla komutu veriliyor ve o byte okunmuş oluyor.

Hazne 0 mı yoksa 1 mi saklıyor bilmek istediğimizde, yani hücremizi okumak istediğimizde, haznemizi bit hattına bağlayan vanasını açıyoruz. Haznemiz boş ise önceden ağzına kadar suyla dolu olan borudaki (bit hattı) suyun haznemizin alabileceği kadar kısmı haznemizin içine doluyor ve ana borumuzdaki su biraz eksiliyor. Bit hattımızın ucunda yer alan su seviyesi algılayıcısı (algı yükselticisi), boru tamamen su doluysa 1, bir hazne kadar su eksilmişse 0 veriyor. Her sütunun altında o sütunun ana borusuna bağlı bir algılayıcı yer alıyor. Tekrar okuma işlemine geri dönersek, haznemiz okuma öncesi haznemiz boş ise yani 0 saklıyorsa vanası açıldığında ana borudaki su içine doluyor, ana borudaki su seviyesi düşüyor ve algılayıcımız 0 veriyor yani hücremizde saklanan veriyi doğru olarak dışarı aktarıyor. Haznemiz okuma öncesi zaten dolu ise (1 saklanıyorsa) haznemizin vanası açıldığında hiçbir su akışı olmuyor ve algılayıcımız dışarıya 1 değerini doğru olarak iletiyor. Bu noktada önemli bir konuyu açıklamak gerekiyor ki eminim bazı okuyucularımızın dikkatinden kaçmamıştır. Haznemiz 0 saklıyorsa yani boşsa, okuma işleminden sonra içine su doluyor, dolayısıyla içeriği bozuluyor ve bir anda 1 saklıyormuş durumuna geliyor. Aynı olay 1 saklama durumunda gerçekleşmiyor. Peki bu pratikte nasıl engelleniyor? Unutmayalım ki amacımız hazneyi, içeriğini bozmadan okuyabilmek. Basit bir fikir olarak, okuma işleminden sonra algılayıcımızın algıladığı değeri hücremize tekrar yazmak aklımıza gelebilir ancak bu performans açısından büyük kayıp olur. Düşünsenize, 0 olan her bit için her okuma sonrası bir de yazma işlemi için bekle. Gerçekte olay çok daha basit: Haznemiz ana borudaki suyun içine akmasına izin veriyor ancak bu suyu içinde saklamıyor, bunun yerine bir bakıma kanalizasyon diye nitelendirecegimiz çok daha büyük ve bellekteki her hazne tarafından paylaşılan başka bir hazneye başka bir kanalla boşaltıyor. Hücremizi kanalizasyona bağlayan kanal yine bir vana tarafından kontrol ediliyor. Haznemiz doluyken, kendi içindeki bir geri beslemeyle bu vana kapalı tutuluyor ve böylece hazneden kanalizasyona su kaçışı engelleniyor. Hazne boşken ise bu vana açılıyor. Bu kanalizasyonun elektronikteki karşılığı toprak. Böylece boşsa yine boş kalarak ama yapması gerektiği gibi bağlı olduğu sütunun bit hattındaki yani ana borusundaki suyun seviyesini azaltarak sakladığı verinin algılayıcı tarafından doğru olarak algılanmasını sağlıyor.
Okuma işlemini biraz olsun açıklığa kavuşturduktan sonra bakalım yazma işlemi nasıl gerçekleşiyor. Yazma işleminde amacımız haznemizin içeriğini gereken durumlarda değiştirmek. Gereken durumlardan kastettiğimiz, hücremize yazmak istediğimiz değer, hücremizin hali hazırda sakladığıyla aynıysa, herhangi bir değişikliğe gerek olmaması. Mekanizma, okumayla hemen hemen aynı. Yazma işlemi öncesi tıpkı okumada olduğu gibi sütuna ait ana boru suyla dolduruluyor. Bunun yapılma sebebi, önceden gerçekleşmiş bir yazma veya okuma işlemi nedeniyle ana borudaki su seviyesinde azalma olduysa bu eksiği tamamlamak, çünkü gördüğümüz gibi bu temel çalışma prensiplerinden birisi. Yazma işlemi sırasında istenilen hücrenin (haznenin) vanası açılıyor ve yazmak istediğimiz verinin 0 ya da 1 olmasına göre algılayıcıların bulunduğu ucundan ya haznenin bağlı bulunduğu sütundaki ana borudan yüksek basınçla su emiliyor (0) ya da boruya yüksek basınçta su basılıyor (1). Haznemiz boşsa vanası açılınca bir ucundan zaten ana borudan su emildiği için yine boş kalıyor, içine su dolmuyor. Aynı şekilde haznemiz doluysa ve 1 yazılmak isteniyorsa boruya basınçlı bir şekilde su basıldığı için haznemiz yazma işlemi sırasında yine dolu kalıyor. Öte yandan, haznemiz boş ise ve 1 yazılacaksa, yani dolması isteniyorsa, vanası açıldığında ana borudaki basınçlı su, hücrenin kanalizasyona olan su akışını bastırarak dolmasını sağlıyor ve hazne dolunca da geri besleme mekanizmasıya kanalizasyona açılan vana kapanıyor, haznemiz dolu kalıyor ve böylece sakladığı yeni veri 1 olarak değişmiş oluyor. Benzer şekilde, haznemiz dolu ise ve 0 yazılmak yani boşaltılmak isteniyorsa, yazma işlemi sırasında borunun ucundan basınçla su emiliyor, haznemizin vanası açıldığında emme gücüyle dolu olan haznemizdeki su da ana boruya çekilerek emiliyor. Hazne boşaldığında kanalizasyona olan bağlantı da boşalma işlemine destek olarak açılıyor ve işlem sonunda ana boruya bağlantı vanası kapandığımnda hücremiz boş olarak yeni verisi olan 0'ı saklamış oluyor.
Bir seviye üste çıktığımızda, bankaların ortak bir veri hattına birarada bağlanmasıyla ana bellek tablomuzun oluştuğunu görürüz. Bellek tablosunun yanında, adreste gösterilen banka numarasını çözen, yongayı gerektiğinde güç tasarrufu gibi nedenlerle kapatıp açılmasını, belirli komutların çalıştırılmasını kontrol eden kontrol yazmaçları (mode register) ve saat sinyalinin alınıp bankalara dağıtılmasını sağlayan sürücü devreleri bellek yongasını oluşturur
Tekrar su benzetmesinden elektronların dünyasına dönecek olursak, bazı kavramları anlamızın kolaylaştığını göreceğiz.

PRECHARGE: Bu kelimeyi çoğumuz duymuşuzdur. Özellikle BIOS'ta RAM'lerle ilgili parametrelerle oynayıp bellek modüllerinden son performans damlasını sıkarak çıkartmaya çalışanlarımız RAS-to-Precharge Delay gibi terimlerle karşılaşmıştır. PRECHARGE'ın karşılığı, sütunlara ait ana boruların okuma ve yazma öncesinde doldurulmasıdır. Gerçekte benzetmemizdeki borular yerine metal hatları su yerine elektronlarla yani elektriksel yükle doldurduğumuz için 'PRE-CHARGE' yani 'ÖN YÜKLEME' terimi kullanılmıştır.

CAS: Diğer bir parametre olan ve CAS diye tabir edilen Column Access Strobe yani Sütun Erişim Darbesi de aynı mekanizmayla kolayca açıklanabilir. Okuma sırasında hücremiz sütuna ait borudan su emerek borudaki su seviyesini azaltmaya çalışırken, seviyedeki bu azalma, hücremizin boyutları önceden belirttiğimiz az yer kaplaması amacıyla küçük tasarlanması sonucu hücremizi ana boruya bağlayan vananın bulunduğu hat dar olduğu ve hücremizin emiş gücü de boyutlarıyla orantılı olarak düşük olduğundan, yavaş gerçekleşmektedir. Dolayısıyla ana borudaki su seviyesi algılayıcının bu azalmayı alglılayabileceği seviyeye ulaşması ve algılma işleminin başlatılabilmesi için belli bir süre beklenilmesi gerekiyor. Aynı zamanda adreste belirtilen sütun numarasının da çözümlenmesi bankadaki sütun sayısına bağlı olarak zaman alıyor. İşte bu süreye CAS gecikmesi (CAS Latency - kısaca CL) deniyor. Bu gecikme genellikle belleği kontrol eden ana saat sinyalinin periyodu cinsinden verilir. Örneğin, CL=2 demek okuma başladıktan yani haznenin vanası açıldıktan itibaren algılama komutu verilinceye kadar 2 saat periyodu süresince beklemek gerekiyor. Dolayısıyla CL değeri büyük olan bellekler, daha uzun beklemeleri gerektiğinden daha yavaş çalışırlar.

RAS: Adreste belirtilen satır numarasının çözümlenmesi ve belleğimizde o satırda yer alan bütün hücrelere ait vanaların açılabilmesi için beklenmesi gereken süreye RAS (Row Access Strobe) yani Satır Erişim Darbesi deniyor. RAS da CAS gibi saat periyodu cinsinden belirtiliyor. Dolayısıyla RAS'ı küçük lan bellekler daha hızlı oluyorlar.
-----------------------------------------------------------------------
RAS-TO-CAS DELAY: Erişim sırasında, bildiğimiz gibi, önce bankadaki ilgili satır okunmaya başlıyor, bit hattını temsil eden borudaki su yani yük seviyesi ilgili hazneler tarafından algılanabilir seviyeye çekilene kadar bekleniyor, ardından ilgili sütun belirleniyor ve o sütuna ait algılayıcılara ‘algıla’ komutu veriliyor. İşte satırdaki haznelerin açılmasından bit hatlarındaki yük miktarının (gerilim olarak ta düşünebiliriz) algılanabilir seviyeye ulaşmasına kadar beklenilmesi gereken süreye RAS-TO-CAS DELAY (Satır Erişim Darbesi-Sütun Erişim Darbesine Arası Gecikme) deniyor. Anlaşılacağı üzere bu parametre ne kadar düşük olursa bellek o kadar hızlı demektir. Diğer parametreler gibi bu da saat işaretinin periyodu cinsinden ifade edilir.

RAS-TO-PRECHARGE DELAY: Bildiğimiz gibi her okuma ve yazma işlemi 'öncesinde', diğer bir bakışla, (her yazma ve okuma öncesi başka okuma ve yazma işlemleri gerçekleştiği düşünüldüğünde) 'sonrasında' sütunlara ait ana hatlar suyla dolduruyor yani PRECHARGE ediliyor. Eğer bu işlem, herhangi bir okuma ve yazma işlemi sırasında açılan ve hazneleri sütuna ait boruya bağlayan vanalar kapanmadan yapılırsa aynen 1 yazma işleminde olduğu gibi yüksek basınçla boş olan hazneyi boşaltabilir ve verinin bozulmasına neden olabilir. Bunu engellemek ve vanalar açıkken PRECHARGE işlemine başlamayı engellemek için belli bir süre beklenmesi gerekiyor. Bu da elbette takip eden okuma ve yazma işlemlerine başlamayı geciktirerek (unutmayalım ki boruların erişim öncesi tamamen dolu olması gerekiyor) performansı azaltıyor. Bu gecikme de saat periyodu cinsinden ifade ediliyor ve küçük bir sayı olması hızlı bellek olduğuna işaret ediyor.

SAAT FREKANSI: Önceden tanımladığımız CAS, RAS gibi gecikme süreleri işte bu ana saat sinyalinin periyodu cinsinden belirtiliyor.


PERİYOD=1/FREKANS

eşitliğine göre, saatin frekansı ne kadar yüksekse periyodu o kadar kısa oluyor, dolayısıyla CAS gibi saat periyodu cinsinden ifade edilen bekleme süreleri kısaltılmış oluyor. Bu süre belleğin kaldırabileceğinden fazla kısaltılırsa, önceden belirtildiği gibi, veri kayıpları oluyor, bellek hatalı çalışıyor ve sonuçta PC'ler ya boot etmiyor ya da etse dahi çalışma sırasında beklenmedik kilitlenmelere yol açıyor. Kısaca, RAS ve CAS gibi, birimi zaman olan parametreler saat frekansıyla doğrudan etkileniyor. Mesela, 133 MHz saat frekansında CAS=2'de çalışabilen bir bellek 166 MHZ'de ancak CAS=2.5 ya da 3'te çalışabiliyor. İdeal olanı, belleğin yüksek saat frekanslarında ve düşük CAS, RAS gibi parametrelerle çalışabiliyor olması.

Saat işareti basitçe bir kare dalga biçiminde; periyodun yarı süresi aralıklarla periyodik olarak bir yükseliyor, bir düşüyor. Saat işaretinin değiştiği bu bölgelere düşen ve yükselen kenarlar deniyor. Saat frekansının belirlediği aralıklarla gelen bu kenarlar, yonga üzerindeki bellek bankalarının ve diğer devrelerin eş zamanlı olarak (senkronize bir şekilde) çalışmasını sağlar. Örneğin sütunlarda yer alan algı yükselticilerine 'algıla' komutu ya da okunmak istenen veriyi bankalardan alarak yonganın dışına süren sürücülere 'sür' komutu bu kenarlar aracılığıyla verilir. SDR belleklerde komutlar yükselen kenarlarda verilirken DDR belleklerde bu hem yükselen hem de düşen kenarlarda gerçekleşir. Bu sayede, DDR belleklerdeki veri çıkışı SDR'ların teorik olarak iki katıdır çünkü bir saat periyodu içinde iki kere (hem yükselen hem düşen kenarda) veri çıkışı olur.

ADDITIVE LATENCY: 'Ekli Gecikme' denilen ve sadece DDR-II tipi bellekler için geçerli olan bu gecikme süresi CAS'in üzerine ekleniyor ve CAS'i arttırma yani belleği yavaşlatma etkisi yapıyor. Elbette ki istenilen bu değerin düşük olması. DDR-II bellekleri henüz PC'lerde sistem RAM'i olarak görmeye başlamadıysak ta bir süredir ekran kartlarında kullanılmaktalar. Ama sizleri şimdiden bu tip parametreleri BIOS'larda görmeye hazırlayalım diye düşündük.

BURST ve BURST LENGTH: Burst kelimesinim tam Türkçe karşılığını bulmak zor ancak illa da yakın sayılabilecek bir terim bulalım dersek sanıyorum Ardışıl Veri Aktarımı diye nitelendirmek yerinde olur. Erişim sırasında biliyoruz ki bankadaki bütün satır aynı anda okunuyor ya da yazılıyor. İşte bu noktada BURST kavramı devreye giriyor: Aynı satırdaki komşu byte’lar, veri yolunun elverdiği ölçüde, saat işaretinin birbirini takip eden ilgili kenarlarında ardı sıra dışarıya sürülüyor ya da içeri alınıyor. Okunmak ya da yazılmak istenilen veri bellekte aynı satırda yer alıyorsa, bu şekilde CAS ve RAS gecikmelerini beklemeksizin ardışıl konumdaki veri grubu, bellek yongası ve anakart arasında hızlıca taşınabiliyor. Burst olayının ardışıl olarak kaç saat periyodu süreceği ya da diğer bir deyişle ne kadar verinin burst yoluyla taşınacağını belirten parametre ise BURST LENGTH (Burst Uzunluğu). Verinin ardışıl konumda olduğu durumlarda burst uzunluğunun büyük tutulması performansı arttırır ancak tersine bir durumda yani verini bellek tablosu içinde farklı satırlara dağıldığı (bir bakıma sabit sürücülerdeki fragmente olma durumu gibi) burst az da olsa performansı olumsuz etkileyen bir etken olarak karşımıza çıkabilir. Sanıyoruz ki en akıllıcası, BURST uzunluğunu orta bir seviyede tutmak olacaktır.

BESLEME GERİLİMİ: İşlemci ve bellek, daha genel haliyle her yonga, çalışabilmesi için bir besleme gerilimine ihtiyaç duyar. Besleme gerilimi, suyu, vanaları ve boruları kullandığımız benzetmemizde suyun kaynaklarındaki (emme ya da basma) akış hızına ya da bir bakıma basıncına denk gelir. Su ne kadar basınçlıysa bit hatlarında gerçekleşen precharge ve hazneye olan su akışı o derece hızlı gerçekleşir dolayısıyla bellek belli bir görevi daha hızlı yerine getirir, beklemesi gereken süreler kısalır ve böylece ya aynı saat frekansında daha küçük RAS,CAS v.s. değerleriyle ya da aynı RAS, CAS değerleriyle daha yüksek saat frekanslarında çalışmaya devam edebilir. Overclock’la uğraşanlarımız bilir ki işlemcileri yüksek frekanslarda çalıştırmanın en etkili yolu besleme gerilimini arttırmaktır. Bu konuya overclocking hakkında bilinmeyenleri açıklamaya çalıştığımız makalemizde detaylı olarak deyinmiştik. Bellek yongaları da işlemciler gibi birer tümdevre olduklarından aynı prensiplere tabidirler ve dolayısıyla besleme geriliminin arttırılması bellek yongalarının aynı işi daha kısa sürede tamamlamalarına yardımcı olacağından daha yüksek saat frekanslarında çalışmalarına imkan tanıyacaktır.

Voltaj seviyelerinin yeni nesillerde giderek düşmesine rağmen performansın artması çelişkisinin yanıtı, üretim teknolojileri geliştikçe küçülen transistörlerin aynı hızda çalışabilmeleri için daha az gerilimle beslenmeye ihtiyaç duymalarında ve bellek mimarilerindeki ilerlemelerde yatmaktadır.
Ekrandaki Görüntü Nasıl Oluşur?

Monitörünüze yeteri kadar yakından bakarsanız görüntünün çok küçük noktalardan oluştuğunu görürsünüz. İşte bu noktlara görüntünün en küçük birimi olan piksel diyoruz. Her pikselin kendine ait renk ve yoğunluk bilgileri vardır. Daha genel bir tanımla piksel için ekranın bağımsız olarak kontrol edilebilir en küçük parçası olduğunu söyleyebiliriz. İşte bu piksellerden binlercesi bir araya gelerek ekrandaki görüntüyü oluşturuyor.

Çözünürlük

Çözünürlüğün görüntü kalitesini belirleyen en önemli faktör olduğunu söyleyebiliriz. Çözünürlük, ekrandaki görüntünün kaç pikselden oluşacağını belirler ve yatay ve dikey piksel cinsinden belirtilir (800x600,1024x768 gibi). Çözünürlük arttıkça görüntü birbirinden bağımsız olarak kontrol edilebilen daha çok pikselden oluşur ve görüntü kalitesi de yükselir.

Windows 95 ile hayatımıza giren "scaleable screen objects" teknolojisi sayesinde çözünürlük arttıkça ekrandaki kullanılabilir alan da artar. Windows ekranında çözünürlük ne olursa ekrandaki nesneleri oluşturan piksel sayısı değişmez. Çözünürlük arttıkça pikseller de küçüleceği için nesneler daha az yer kaplar ve masaüstündeki kullanılabilir alan çözünürlükle doğru orantılı olarak artar.

Çözünürlük arttıkça yükselen görüntü kalitesinin de bir bedeli var tabi ki: Çözünürlük yüseldikçe kontrol edilmesi gereken piksel sayısı ve dolayısıyla da gerekli işlem gücü, ayrıca bu piksellerin bilgilerini tutmak için gerekli bellek miktarıyla onların transferi için gereken bellek bant genişliği artar. Bu yüzden de performans düşer. Kullanmak istediğiniz çözünürlüğü hem ekran kartınız desteklemeli, hem de monitörünüz fiziksel olarak gerekli sayıda pikseli ekranda oluşturabilmeli.

Renk Derinliği

Piksellerin kendilerine ait renklerinden bahsetmiştik, piksellerin alabileceği renkler kırmızı, yeşil ve maviden türetilir. İşte renk derinliği bu renklerin miktarını belirler. Renk derinliği ne kadar artarsa her pikselin alabileceği renk sayısı artar, renkler gerçeğe daha yakın olur.

Renk derinliği bit cinsinden belirtilir, işlemcilerle ilgili yazımızda bitlere kısaca değinmiştik. Her bit 1 ve 0 olarak iki değer alabilir. 8 bit kullanıldığında bu bitlerden 28 = 256 kombinasyon üretilir. Aynı şekilde 8 bit renk derinliğinde de her piksel için 256 renk kullanılabilir.

İnsan gözünü aldatıp ekrandaki görüntüyü gerçek gibi göstermek için kullanılan üç rengin de (kırmızı, yeşil ve mavi) 256`şar tonu gereklidir, bu da renk başına 8 bitten 24 bit yapar. Bu moda True Colour (Gerçek Renk) adı verilir. Fakat çoğu güncel ekran kartı görüntü belleğini kullanma yöntemleri yüzünden pikselleri bu modda göstermek için 32 bite ihtiyaç duyarlar. Kalan 8 bit alpha kanalı (piksellerin saydamlık bilgisini tutar) için kullanılır.

High Colour (16 bit) modunda ise yeşil için altı ve maviyle kırmızı için de beşer bit kullanılır. Yeşil için 64, maviyle kırmızı için de renk başına 32 farklı yoğunluk vardır bu modda. Renk kalitesinde 32 bite göre çok az fark olsa da piksel başına 4 yerine 2 byte (8 bit = 1 byte) hafıza gerekeceğinden 32 bite göre performans avantajı sağlar.

256 renk (8 bit) modu ilk duyuşta size renk fakiri izlenimi verebilir fakat renk paleti denen bir yöntemle bu 8 bit olabilecek en verimli şekilde kullanılarak renk kalitesi biraz arttırılır. Renk paletinin mantığı söyledir: Kullanılacak 256 renk gerçek renk modundaki 3 bytelık renklerden seçilir ve bu renklerden bir renk paleti oluşturulur. Her program ilgili paletteki 256 renkten istediğini seçip kullanabilir. Böylece örneğin kırmızı için iki, mavi ve yeşil için de üçer bit kullanılarak elde edilen renklerden daha canlı renkler elde edilebilir ve elimizdeki 8 bit en verimli şekilde kullanılmış olur.

En çok kullanılan üç renk modunu tanıdık, peki ekran kartımız üretemediği renklere ne yapıyor? Sistemimizin 256 renge ayarlı olduğunu fakat 16 bitlik bir resim dosyası açtığımızı varsayalım. Bu durumda hazırdaki renklerin değişik kombinasyonları kullanılarak üretilemeyen renge yakın bir renk oluşturulur ve bu renk üretilmesi gereken rengin yerine gösterilir. Buna dithering denir. Tabi ki dithering yöntemiyle elde edilmiş bir resmin kalitesi orjinal resme göre göre çok daha düşüktür.
Önceleri ekrandaki piksellerin adreslenmesi için bir standart olmadığından üreticiler de programcılar da (dolayısıyla son kullanıcılar da) sorun yaşıyorlardı. Bu sorunu çözmek için üreticiler VESA (Video Electronics Standarts Association) adında video protokollerini standartlaştırmayı amaçlayan bir konsorsiyum oluşturdular. VGA ile beraber geriye uyumluluk da sağlanarak çözünürlük sürekli arttı. VGA öncesindekiler de dahil standartlara kısaca bir göz atalım:

-MDA (Hercules): Monochrome Display Adapter, 1981 yılındaki ilk IBM PC`deki ekran kartı. Ekranda yerleri önceden belirlenmiş olan 256 özel karakteri gösterebilyordu sadece. 80 kolona 25 satırlık bir ekranda gösterebildiği yazı karakterlerinin boyutları da önceden belirlenmişti ve grafik görüntülemek mümkün değildi. IBM, bu kartlara ekstra slot masrafından kurtulmak için bir de yazıcı bağlantı noktası eklemişti.
-CGA: Bu arayüzde ekran kartları RGB monitörlerle çalışıp ekranı piksel piksel kontrol edebiliyorlardı. 320x240 çözünürlüğündeki bir ekranda 16 renk üretilebiliyor fakat aynı anda bunlardan sadece 4 tanesi kullanılabiliyordu. 640x200`lük bir yüksek çözünürlük modu vardır ama bu modda sadece 2 renk gösterilebiliyordu. Görüntü kalitesi kötü olsa bile en azından grafik çizilebiliyordu. Zaman zaman piksellerin gidip gelmesi ve ekranda rastgele noktalar oluşmasına rağmen bu standart çok uzun bir süre kullanıldı.
-EGA: CGA`dan birkaç yıl sonra sırada Enhanced Graphics Adapter vardı. CGA ile VGA arasındaki bu kartlar 1984`ten IBM`in ilk PS/2 sistemlerini ürettiği 1987`ye kadar kullanıldı. EGA monitörle kullanıldığında üretilen 64 renkten aynı anda 16 tanesi kullanılabiliyordu. Yüksek çözünürlük ve monochrome modları da vardı ,ayrıca eski CGA ve monochrome monitörlerle de uyumluydu. Bu kartlardaki bir yenilik de bellek genişletme kartlarıydı. 64K bellekle satılan bu kartları bellek genişletme kartıyla 128K`ya upgrade etmek mümkündü. Ek olarak satılan IBM bellek kitiyle bir 128K daha eklemek de mümkündü. Sonraları bu kartlar standart olarak 256K bellekle üretilmeye başlandı.
-PGA: IBM`in 1984`te piyasaya sürdüğü Professional Graphics Array adını hitap ettiği pazardan alıyordu. 5000 dolara satılıyor ve entegre 8088 işlemcisiyle mühendislik ugulamarıyla diğer alanlardaki bilimsel çalışmalar için 640x480 çözünürlükte 256 renkte saniyede 60 kare hızla 3 boyutlu animasyonları çalıştırabiliyordu. Fiyatı yayılmasını engelledi ve fazla kullanılamadan piyasadan kalktı.
-MCGA: 1987`de piyasaya sürülen MultiColor Graphics Array standardındaki ekran kartları teknolojide büyük bir sıçrama yaparak VGA ve SVGA`ya kadar gelen bir gelişimi başlattı. IBM`in Model 25 ve Model 30 PS/2 PC`lerinde anakarta entegre halde geliyordu. Uygun bir IBM monitörle kullanıldığında bütün CGA modlarını da destekliyordu fakat TTL yerine analog sinyallerle çalıştığından daha önceki standartlarla uyumlu değildi. TTL (Transistor – to –Transistor Logic) mantığında voltaj seviyesine göre transistörler açılıp kapanır ve sadece 1 ve 0 değerleri oluşur bunu sonucunda. Analog sinyallerdeyse bu kısıtlama yoktur. Analog sinyalleşmenin de sağladığı avantajla MCGA arayüzüyle 256 renk üretilebiliyordu. Bu arayüzle beraber 9 pinlik monitör bağlantısından halen kullanılmakta olan 15 pinlik bağlantıya geçildi.
-8514/A: IBM`in MCA veriyoluyla kullanmak için ortaya attığı bu arayüz zamanla yüksek tazeleme hızlarına çıktı. VGA ile aynı monitörü kullanmasına rağmen VGA`dan farklı çalışıyordu. Bilgisayar ekran kartına ne yapması gerektiğini söylüyordu ama ama ekran kartı onu nasıl yapacağını kendisi ayarlıyordu. Örneğin ekrana bir çember çizileceği zaman VGA`daki gibi işlemci görüntüyü piksel piksel hesaplayıp ekran kartına yollamıyordu. Bunun yerine ekran kartına çember çizileceğini söylüyordu ve ekran kartı da çemberi çizmek için piksel hesaplarını kendisi yapabiliyordu. Bu yüksek seviyeli komutlar standart VGA ile komutlarından çok farklıydı. Bu standart çıktığı zamanın daha ilerisindeydi ve VGA`dan daha kaliteli görüntü sonuyordu ama fazla destek bulamadığı için yayılma imkanı bulamadan piyasan kalktı. IBM üretimi durdurup aynı daha daha fazla renk gösterebilen XGA üzerine yoğunlaştı. XGA 1990`da piyasaya çıktıktan sınra MicroChannelplatformları için standart oldu.
-VGA: 2 Nisan 1987`de, MCGA ve 8514/A ile aynı günde IBM tarafından tanıtılan Video Graphics Array aradan sıyrılarak masaüstü için standart olmayı başardı. IBM yeni bilgisayarlarında bu chipleri anakarta entegre ederken eski bilgisayarlarda da kullanılabilmeleri için 8 bitlik bir arayüzle anakarta bağlanabilen bir ayrı bir kart halinde de geliştirdi. IBM üretimi durdurduktan sonra bile değişik firmalar üretime devam ettiler. VGA ile 262144 renklik bir paletten seçilen 256 renk aynı anda kullanılabiliyordu. 640x480`lik standart çözünürlükte aynı anda 16 renk gösterilebiliyordu. Ayrıca 64 renk gri tonlama ile siyah beyaz monitörlerde renk siğmilasyonu yapabiliyordu.
-SVGA: Super VGA ilk SVGA kartlardan güncel kartlara kadar çok fazla kartı kapsayan geniş bir standart. SVGA ile birlikte ekran kartları için aygıt sürücüsü kavramı ortaya çıktı. Kartların yanında verilen sürücülerle ilşetim sistemleri kartların tüm özelliklerini kullanabiliyorlardı. SVGA ile milyonlarca renk değişik çözünürlüklerde gösterilebiliyor fakat bunun sınırları karta ve üreticiye bağlı. SVGA değişik şirketler tarafından kullanılan ortak bir kavram olduğundan başlarda eski standartlar gibi çok katı sınırları yoktu. Bunun üzerine VESA bir SVGA standardı belirledi. VESA BIOS Extension adında standart bir arayüz belirlendi ve bu sayede programcılar her kart için ayrı kod yazma zahmetinden kurtuldular. Üreticiler bu arayüzü benimsemek istemediler ve başlarda kartların yanında verilen ve her boot işleminden sonra çalıştırılan bir programla kartlarını bu BIOS uzantılarıyla uyumlu hale getirdiler fakat sonunda bunu kartların BIOS`larına entegre ettiler. SVGA ile 800x600 çözünürlüğe çıkıldı.
SVGA'dan sonra IBM XGA ile 1024x768 çözünürlüğe geçerken sonraki basamak olan 1280x1024`e de bir VESA standardı olan SXGA ile geçildi. Sonra da UXGA ile de 1600x1200 çöznürlüğe geçildi. Çözünürlükteki 4:3 oranı sadece SXGA ile bozuldu, bu standartta oran 5:4`tür
AGP

VLB, ISA, PCI erken sonunda ekran kartlarının da işlemciyle direk haberleşmek için kullanabilecekleri yüksek bant genişliğine sahip slotları oldu. PCI 2.1 spesifikasynlarıyla belirlenen AGP, PCI gibi 33 değil daha yüksek bant genişliği için 66 MHz`te çalışır.
------------------------------------------------------------------
AGP de tıkpkı PCI gibi 32 bit genişliğindedir ama 66 MHz`te çalıştığı için en en düşük hız modunda bile 254.3 MB/s bant genişliğine sahiptir. Bunun dışında kendine özel bir sinyalleşmeye 2X, 4X ve 8X hızlarında bu bant genişliği 2`ye, 4`e ve 8`e katlanır. Bu slotun başka bir avantaji da PCI veriyolundaki gibi bant genişliğinin paylaşılmaması, AGP`nin bütün bantgenişliği ekran kartına aittir.

Bu değerler kulağa hoş gelebilir ama uygulamalarda CPU, ekran kartı dışında pekçok parçaya daha ulaşmak zorundadır. AGP bantgenişliği yüksek olsa bile pratikte değişik AGP modları arasında sistemdeki diğer darboğazlar yüzünden beklenilen performans farkı olmaz çoğu zaman.

AGP, pipeliningi(İş bölümü) de desteklediği için sistem kaynaklarını daha verimli kullanabilir, pipeliningin ne olduğunu merak edenler İşlemcilerle ilgili yazımıza göz atabilirler. AGP'nin bir diğeravantajı da ana belleği görüntü belleğiyle paylaşabilmesidir. Bu sayede çok yüksek miktarda görüntü belleğine ihtiyaç duyulmadan gerektiğinde ana bellek görüntü belleği olarak kullanılabilir.

API Kavramı

Ekran kartları büyük bir hızla gelişiyor ve hemen her kartın farklı özellikleri var. Programcıların da her kart için ayrı kod yazmaları mümkün olmadığına göre bütün kartların ve yazılımın anlaşabileceği ortak bir platforma ihtiyaç var.

İşte bu boşluğu API (Application Programming Interface, Uygulama Programlama Arayüzü) dolduruyor. API, uygulamalarla onları çalıştıran donanımın anlaşmasını sağlıyor. Programlar kodlarını direk donanıma aktarmadan standart biçimde API`ye aktarıyorlar. Ekran kartının sürücü yazılımı da API`den aldığı bu standart kodları kartın kullanabilceği şekle çevirip karta ulaştırıyor. Oyunlarda en sık kullanılan iki API OpenGL ve Direct3D`dir.

OpenGL

1992`de Unix tabanlı X terminaller için genel bir CAD ve 3B API`si olarak Silicon Graphics`in IrisGL kütüphanesinden türettiği OpenGL önceleri sadece iş uygulamalarıyla kıstılanmıştı (mekanik tasarım ve bilimsel analiz gibi). 1996`da Windows versiyonunun geliştirlimesinden sonra oyun yapımcıları tarafından çok tutuldu ve halen yaygın olarak kullanılıyor.

OpenGL gelişmiş pekçok tekniği destekler, texture mapping (yüzeyleri bir grafik dosyasıyla kaplamaya yarar), antialiasing, saydamlık, sis, ışıklandırma, smooth shading (bir yüzeyden yansıyan ışık yüzey boyunca farklı etkilerde bulunsa bile shading yapılabilmesini sağlar), motion blur (hareket eden görüntü arkasında iz bırakır) ve modelling transformation (nesnelerin sanal uzaydaki büyüklüklerini, yer ve perspektiflerini değiştirmeye yarar) gibi.

Özellikleri bakımından Direct3D`ye benzese de 3B bir sahnenin basit elemanları ve bunlara uygulanacak efekler üzerinde çok etkili bir kontrol sağlar.

OpenGL, donanım tarafından iki seviyede desteklenebilir. ICD (installable client drivers) ışıklandırma, dönüşüm ve rasterizationı (bakış açımıdaki pikselleri tanımayı sağlayan bir algoritma) desteklerken MCD (mini client drivers) sadece rasterization desteği vardır. MCD sürücüleri yazmak daha kolaydır ama performans konusunda ICD çok daha üstündür.

Direct 3D

Direct3D`nin donanımdan bağımsız yazılım geliştirilmesine izin veren kısmı HAL`dır (Hardware Abstraction Layer). HAL, genel olarak desteklenen özellikler için bir arayüz oluşturur ve sürücülerin kendisi üzerinden donanıma erişmesinze izin verir.
Bir ekran kartı temel olarak 3 bileşenden oluşur: Grafik işlemcisi, bellek ve RAMDAC.

Grafik İşlemcisi: Güncel kartlar için grafik işlemcisi görüntü hesaplamalarını yapmak için ekran kartının üzerine oturtulmuş bir CPU`dur dersek yanlış olmaz. Son zamanlarda grafik işlemcileri yapı ve karmaşıklık bakımından CPU`ları solladılar ve işlev bakımından da görüntü üzerine yoğunlaşmış bir CPU niteliğine kavuştular. CPU`ya neredeyse hiç yük bindirmeden üç boyutlu işlemcleri tek başlarına tamamlayabiliyorlar artık. Bu yüzden de güncel grafik işlemcileri GPU (Graphics Processing Unit - Grafik İşlemci Birimi) adıyla anılıyorlar.
Görüntü Belleği: Ekran kartının üzerinde bulunur ve görüntü hesaplamalarıyla ilgili veriler burada saklanır. Sisteminizdeki ana bellek gibi çalışır, yalnız burada bu belleğin muhattabı CPU değil görüntü işlemcisidir. Önceleri ekran kartlarının ayrı bellekleri yoktu fakat görüntü işlemcileri hızlanıp geliştikçe ekran kartları sistemden yavaş yavaş bağımsızlıklarını ilan etmeye başladılar. Bellek miktarı kadar ekran kartının sıkıştırma algoritmalarıyla bu belleği ne kadar verimli kullanabildiği de önemlidir.
RAMDAC: Monitörlerdeki analog sinyallerden bahsetmiştik, işte RAMDAC (RAM Dijital-to-Analog Converter) görüntü belleğindeki verileri analog RGB (Red Green Blue, monitörde renklerin bu üç renkten türetildiğini yazmıştık) sinyallerine çevirerek monitör çıkışına verir. Monitörde kullanılan üç ana renk için de birer RAMDAC ünitesi vardır ve bunlar her saniye belirli bir sayıda görüntü belleğini tarayıp oradaki verileri analog sinyallere dönüştürürler. RAMDAC`in bu işlemi ne kadar hızlı yapabildiği ekran tazeleme hızını belirler. Bu hız Hz cinsinden belirtilir ve ekrandaki görüntünün saniyede kaç kere yenilendiğini gösterir. Örneğin monitörünüz 60 Hz`te çalışıyorsa gördüğünüz görüntü saniyede 60 kere yenilenir. Ekran tazeleme hızını mümkün olduğu kadar 85 Hz`in altına çekmemenizi öneririm, daha düşük tazeleme hızları göz sağlığınız için zararlı olabilir. Tabi bu gözünüzün ne kadar hassas olduğuna da bağlı, bazı gözler 75 ve 85 Hz arasındaki farkı hissedemezken bazıları ilk bakışta bunu anlayabilir. RAMDAC`in iç yapısı ve özellikleri hangi çözünürlükte ne kadar rengin gösterilebileceğini de belirler.

LCD ekranlar yapıları gereği dijtal olduklarından RAMDAC`ten değil de direk görüntü belleğinden görüntü bilgisini alıp kullanabilirler. Bunun için DVI (Digital Video Interface) adında özel bir bağlantı kullanırlar. Bu konuya ileride "Monitörler Nasıl Çalışır?" yazısında detaylı olarak değineceğiz.
BIOS: Ekran kartlarının da birer BIOS'ları vardır. Burada ekran kartının çalışma parametreleri, temel sistem fontları kayıtlıdır. Ayrıca bu BIOS sistem açılırken ekran kartına ve onun belleğine de küçük bir test yapar.

Artık bütün masaüstü sistemlerde en az bir hard disk bulunuyor. Hatta VCR cihazlarından camcorderlara ve mp3 playerlara kadar pek çok elektronik alette de hard diskleri görmeye yavaş yavaş alışıyoruz. Nerede kullanılırsa kullanılsın bütün hard diskler tek bir amaç için üretilir: Sayısal bilgileri kalıcı şekilde depolamak.

Bir hard disk bilgisayarlarımızda kullandığımız ana belleğin aksine güç kesilse bile içindeki bilgileri korur ve bu özelliğiyle bilgisayarımıza "hatırlama" yeteneği kazandırır. Hard diskinize bir kez kaydettiğiniz bir dosyaya bilgisayarınızı defalarca açıp kapatsanız bile onu silmediğiniz sürece ulaşabilirsiniz

Bütün hard diskler temelde aynı yapıdadır. Bir hard disk en basit haliyle şu parçalardan oluşur: Bilgilerin manyetik olarak depolandığı bir veya daha fazla sayıda plaka (platter), okuma yazma kafaları, plakalarla okuma yazma kafalarının hareketini sağlayan motorlar ve diskin kontrolünden sorumlu devreleri üzerinde barındıran kontrol kartı.


Şimdi bu parçaları ve bir hard diskin nasıl çalıştığını inceleyelim.

Plakalar

Bilgileri saklamak için kullanılan plakalar alümünyum, cam gibi manyetik duyarlılığı olmayan maddelerden yapılır. Plakalarda daha uygun ısı direnci özellikleri ve daha ince yapıda kullanılabildiği için temel madde olarak modern disklerde alüminyum yerine cam kullanılır ve cama kırılmasını engelleyecek kadar da seramik karıştırılır. Daha sonra bu plakaların yüzeyleri manyetik duyarlılığı olan bir filmle kaplanır.

Eskiden plakaların yüzeylerine temel maddesi demir oksit olan bir sıvı dağıtılarak sürülürdü fakat hard disklerin kapasitelerinin artmasıyla bu teknolojinin sınırlarına ulaşılması çok sürmedi. Ayrıca okuma/yazma kafasının plakaya çarpması durumunda da bu yöntemle üretilen plakalar kurtulamıyordu ve diski değiştirmekten başka çare yoktu. Günümüzdeyse electroplating denen bir yöntemle plakaların yüzeyi kobalttan oluşan bir filmle kaplanır. Son olarak da bu filmin üzerine kafa çarpmalarına karşı bir miktar koruma sağlayan bir tabaka daha çekilir.

Bilgiler plakalarda sektörler (sector) ve izler (track) halinde saklanır. Her sektör 256, 512 gibi belirli bir sayıda byte içerir ve plaka boyunca yanyana duran bütün sektörlerin oluşturduğu yapılara da iz denir. Diskin kendisi veya işletim sistemi sektörleri gruplayarak onları cluster denen yapılar halinde topluca işler. Low level formatting denen işlemle plakalar üzerinde sektörler ve izler oluşturulur, bunların başlangıç ve bitiş noktaları plakalar üzerinde belirlenir. Daha sonra da high level formatting yapılarak dosya depolama yapıları oluşturulur ve dosyaların palakarda oluşturulan sektörlere ve izlere hangi düzende yazılacağı belirlenir. Low ve high level formatting işlemleri sonrasında plakalar okuma/yazmaya hazır hale gelir. Aşağıdaki şekilde mavi renkle bir sektör, sarıyla da bir iz gösteriliyor.

Plakar üzerinde veri depolanan noktalar moleküler boyutta olduklarından hard diskin içindeki bir toz tanesi bile plakaları çizerek onlara zarar verebilir. Bunun için hard diskler tozsuz ortamda üretilir ve üretildikten sonra kapatılır. İç basınçla dış basıncın dengelenmesi için de çok iyi filtrelenmiş bir havalandırma deliği bulunur.

Plakalar ortalarından geçen bir mil üzerine belirli aralıklarla yerleştirilirler ve bu mil etrafında bir motor tarafından belirli bir hızda sürekli döndürülürler. Böylece plakanın üzerinde duran okuma/yazma kafası plakanın yaptığı bu dönme hareketi sayesinde bir iz boyunca işlem yapabilir.

Bir hard diskin nasıl çalıştığını öğrendikten sonra bir hard disk hakkında yorum yapabilmek için bilmemiz gerekenlere kısaca bir göz atalım.

Hard disklerde kapasiteyi plakalardaki veri yoğunluğu ve plaka sayısı belirler. Modern disklerde çift yüzlü ve 80 GB`a kadar veri depolayan plakalar kullanılır. Bir hard diskin performansı hakkında yorum yaparken kullandığımız en önemli kavramlar plakaların dönüş hızı, erişim süresi ve veri aktarım hızıdır.

- Dönüş Hızı: Plakarın dönüş hızıdır. Plakalar masaüstü sistemlerimizde kullandığımız IDE disklerde genelde 5400 veya 7200 RPM (Rotates Per Second, dakikadaji dönüş hızı) hızında dönerken SCSI disklerde bu hız 15000 RPM`ye kadar çıkabilir.

- Erişim Süresi: Okuma/yazma kafasının disk üzerindeki bir noktaya ulaşması için geçen süre. Ortalama erişim süresi modern IDE disklerde 10 ms`nin altındayken SCSI disklerde daha da düşüktür.

- Veri Aktarım Hızı: Hard diskin saniyede aktarabildiği veri miktarıdır. Kullanılan arabirime ve diskin özelliklerine göre değişir.

Arabirimler

Günümüzde hard diskler için en çok kullanılan arabirimler masaüstü sistemlerimizde görmeye alışıtığımız IDE ve sunucularla iş istasyonları pazarına hakim olan SCSI`dir.

IDE bir donanım standardı değil, işlemciyle hard disk arasındaki veri akışının kontrolüyle ilgili bir standarttır. IBM`in Advanced Technology (AT) arabiriminden geliştirilen Paralel ATA (AT Attachment) arayüzüyle arabirim için bir komut seti tanımlanarak hard disk ve bilgisayar arasındaki haberleşme için evrensel bir standart oluşturuldu. IDE arabirimin yaratılış amacı uygun fiyat ve uyumluluktur, bu yüzden de masaüstü sistemlerde kısa zamanda en yaygın arabirim haline geldi. Paralel ATA arayüzü sürekli gelişerek günümüzde Ultra ATA/133`le 133 MB/s hızına ulaştı ve bundan sonra da yerini Serial ATA`ya bırakması bekleniyor.

Serial ATA`da veri iletimi paralel değil seri olarak yapılıyor, Paralel ATA`ya göre avantajlarını kısaca aşağıdaki gibi sıralayabiliriz:
Daha az pin ve daha düşük voltaj.
Daha ince bağlantı kablosu (Belki de biz son kullanıcıların ilgisini en çok çeken özellik, bu sayede kasa içi hava akımını düzenlemek çok daha kolay olacak).
Daha gelişmiş hata bulma ve düzeltme olanakları.
SCSI arabirimiyse günümüzde profesyonel uygulamar için sunucularda ve iş istasyonlarında kullanılır. SCSI arabirminin maliyeti IDE`ye göre oldukça yüksektir. SCSI arabiriminin IDE arabirimine göre en büyük avantajı asenkron çalışmasıdır, yani IDE aygıtlarda olduğu gibi aynı kontrolcüye bağlı SCSI aygıtlar birbirlerinin performansından ve veri aktarımından çalmazlar. Ayrıca SCSI arabirimi için kullanılan “SCSI Host Adapter” kartlar üzerlerinde veri aktarımını düzenlemek için ayrı bir işlemci ve çoğu zaman da tampon olarak kullanmak için ek bir bellek bulundururlar ve bu yüzden SCSI aygıtlar sisteme IDE aygıtlara göre çok daha az yük bindirirler. Paralel ATA ile kanal başına sadece iki aygıt kullanılabilirken SCSI arabirimiyle her kanala 15 taneye kadar cihaz bağlanabilir. Bu sayı stanadart masaüstü sistemlerin ihtiyaçlarının çok üstünde olsa da özellikle sunucuların ihtiyaçlarını düşünürsek onlar için bir gerekliliktir.

IDE arabirimini kullanan disklerin aksine, SCSI diskler uzun yıllar boyunca sorunsuz çalışmak için üretilirler ve çalışma ömürleri IDE disklerden çok daha uzundur, sunucular için bu da bir gerekliliktir. Ayrıca sisteme bindirdiği yükün fazla olmaması ve erişim süresinin de daha az olmasından dolayı özellikle video montajı gibi sisteme çok ağır yük bindiren ve verilerin sabit bir hızda kesintiye uğramadan su gibi akması gereken uygulamalarda SCSI diskler IDE disklerden çok daha üstündür. SCSI disklerin bir avantajı da yapıları gereği çoklu erişim için uygun olmalarıdır. Bir IDE diskte bir dosyaya aynı anda iki kaynak ulaşmak isterse performans çok düşer ama SCSI disklerde bu performans düşüşü IDE disklerdeki gibi abartılı boyutlarda olmaz ki bu da sunucular için hayati öneme sahiptir. Eğer evinizde bir ağınız varsa ağdan kopyalanmakta olan bir dosyayı siz de kullanmaya çalıştığınızda bunu açıkça görebilirsiniz.
CPU'nun (Central Processing Unit, Merkezi İşlem Birimi), bilgisayarlarımızın temel parçası olduğunu rahatlıkla söyleyebiliriz. Bir sistemdeki herhangibir parça ne işe yararsa yarasın mutlaka işlemciye bağımlı olarak çalışır. Klavyedeki tuşlara her basışınız, yaptığınız her fare hareketi bile bir şekilde işlemciye uğrar. Kullandığınız işlemci, herşeyden önce sisteminizin performansını ve kullanabileceğiniz işletim sistemlerini belirler. Hatta çoğumuz bilgisayar alırken ilk önce işlemciyi belirleriz.

Hangi işlemciyi kullanırsanız kullanın çalışma prensibi aynıdır: Bir işlemci elektriksel sinyalleri 0 ve 1 (ikili sistemle çalışan bilgisayarlarımız için anlamlı olan tek değerler) şeklinde alır ve verilen komuta göre bunları değiştirerek sonucu yine 0'lardan ve 1'lerden oluşan çıktılar halinde verir. Sinyal yollandığı zaman ilgili hatta bulunan voltaj o sinyalin değerini verir. Örneğin 3.3 voltla çalışan bir sistemde 3.3 voltluk bir sinyal 1, 0 voltluk bir sinyal de 0 değerini üretir.

İşlemciler aldıkları sinyallere göre karar verip çıktı oluştururlar. Karar verme işlemi her biri en az bir transistörden oluşan mantık kapılarında yapılır. Transistörler, girişlerine uygulanan akım kombinasyolarına göre devreyi açıp kapayabilen ve bu sayede de elektronik bir anahtar görevi gören yarıiletken devre elemanlarıdır. Modern işlemcilerde bu transistörlerden milyonlarca tanesi aynı anda çalışarak çok karmaşık mantık hesaplarını yapabilirler. Mantık kapıları karar verirken (yani akımın geçip geçmeyeceğini belirlerken) Boolean Mantığı'nı kullanırlar. Temel Boolean operatörleri AND (ve), OR (veya) ve NOT'tır (değil). Bu temel operatörlerle birlikte bunların değişik kombinasyonları kullanılır, NAND (not AND) gibi.

Bir AND kapısının 1 değerini verebilmesi (yani akımı iletebilmesi için) iki girişindeki değerin de 1 olması (yani iki girişinde de akım olması) gerekir. Aksi takdirde 0 değerini verecek; yani akımı iletmeyecektir. OR kapısında ise akımın iletilmesi için girişlerin ikisinde de akım olmalı veya ikisinde de akım olmamalıdır. NOT kapısı ise girşindeki değerin terisini çıkışına verir.


Alıntıdır