ROM (Read Only Memory) Bellekler ve Özellikleri

Bilgisayar sistemlerini incelediğimizde olmazsa olmaz iki temel unsur karşımıza çıkmaktadır. Bunlardan biri mikroişlemci ünitesi diğeri ise hafıza birimidir. Bu hafıza birimleri de RAM (Random Access Memory) ve ROM (Read Only Memory) olarak ikiye ayrılır. Bu iki bellek cinsi merkezi işlem birimi (CPU) tarafından kullanılsa da görevleri ve yapıları oldukça farklıdır. RAM ve ROM belleklerin yapısını şu şekilde canlandırmamız mümkündür. Biz beyin (işlemci) olarak bir çalışma yapmak için masa başına oturduk. Fakat yapacağımız çalışmadaki bilgileri harici bir kaynaktan almamız gereklidir. Örneğin bir ödev yaptığımız zaman masamızda kitap ve ansiklopedileri bulundururuz. Bunlar kalıcı bilgi olup sadece iş esnasında ortaya çıkan ve kullanılan bilgi değildir. Fakat elimizin altında bir karalama kağıdı ve not defteri de bulundururuz. Çalışma esnasında okuduğumuz bilgileri, yorumlarımızı ve notlarımızı bu kağıda yazarız. Bu kağıtlar müsvedde kağıdı olarak çalışma sonunda pek kıymet görmeyecektir. Nihai çalışmamızı ise yine çıktı alarak veya yazarak kalıcı hale getiririz. ROM bellekler bu örnekteki ansiklopedi, kitap ve ödev dosyasını temsil ederken RAM bellek müsvedde kağıtlarını temsil etmektedir.

ROM belleklerin kalıcı hafıza birimi olmaları sayesinde bilgiler kaybolmaz ve bilgi birikimi de söz konusu olur. ROM belleklerin en önemli görevi bilgisayar sisteminde çalıştırılacak programı kayıtta tutmalarıdır. Böylelikle her defasında baştan program yazma zahmetinden kurtulmuş oluruz.  Biz burada ROM bellekleri kalıcı kayıt elemanı değil dijital sistemlerde kullanılan entegreler olarak ele alacağımız için kaset, CD, disket gibi kalıcı hafıza birimlerinden bahsetmeyeceğiz. Prensip olarak bunlar da ROM gibi çalışmaktadır.

Mikroişlemcinin (CPU) bilgiyi işleme ve kaydetme üzerine çalıştığını AVR mimarisi derslerimizde bahsetmiştik. İleride mikroişlemci konusunu oldukça tafsilatıyla anlatacağız. ROM bellekler işlemciye kalıcı veri sağlamakta kullanılmaktadır. Bu veriler her zaman olduğu gibi ikilik sistemde olup belli adres ve veri hücrelerinde muhafaza edilir. Bunu çizgili defterin her satırını numaralandırmaya benzetebilirsiniz. Her satırın belli bir numarası vardır ve işlemci hangi numarayı çağırırsa oradaki veriler veri yolu vasıtasıyla işlemciye gönderilir. Öncelikle işlemci adres ayaklarından ikilik formatta adres değerini girer. Bu adres değeri bazen programcı tarafından programa yazılarak belirtilir. Örneğin 0x01 adresindeki veriyi almak için öncelikle adres ayaklarına veri yazılır. Bu “00000001” şeklinde olur ve ROM belleğin ayaklarına böyle yazılır. Sonra aynı SPI’da cihaz seçiminde olduğu gibi çipe bağlı olan okuma sinyali etkinleştirilir ve entegrenin veri ayaklarından veri işlemci tarafından okunur. Entegrenin veri ayaklarında veri örneğin “01100110” şeklinde belirir. Bunu işlemci alarak yazmaçlarına kaydeder ve onun üzerinden işlem yapar.

İkinci okuma yolu ise program sayacı vasıtasıyla olmaktadır. Bir işlemcinin içerisinde sayaç adı verilen bir yazmaç bulunur ve bu her satır kod işlendiğinde birer birer artar. “Program counter” adı verilen bu birimin görevi ROM’dan okunacak program verisinin adresini içinde bulundurmasıdır. Bir çizgili defteri birinci sayfa ve birinci satırdan itibaren satır satır okuduğumuzu belirtelim. Kimse içindekiler kısmına göz gezdirmeden kitabın ortasından okumaya başlamaz. Sayfa atlanacağı zaman da yine ilk sayfadaki bilgilere göre bu “atlama” işlemi gerçekleştirilir. Bu atlama işlemini daha sonra bahsedeceğimiz için işlemciyi her zaman ilk sayfayı açıp ilk satırdan okumaya başlayan bir okur olarak düşünelim. İşlemci otomatik olarak satır numaralarını okuma işlemi bittikten sonra artıracaktır. Dikkat ederseniz işlemci eline hangi kitap ve defter geçerse geçsin ilk önce ilk sayfadan ve ilk satırdan okumaya başlıyor ve satır atlamadan birer birer okuyor. Bu işlemcinin değişmez davranışıdır. Hafızalar ise bu davranışa göre şekillenmek zorundadır. Örneğin ilk satırdan okumaya başladığı için ilk yürütülecek programları daima en başa yazmamız gereklidir. Biz programlama yaparken neden yukarıdan aşağıya doğru yazdığımızı şimdi daha iyi anlamış olmalısınız. Bu özellik insan davranışında olduğu gibi mikroişlemci davranışında aynı şekilde tasarlanmıştır.

İşlemcinin bağlı bulunduğu her birim için iki ayrı yol (bus) bulunmaktadır. Bunlardan biri adres yolu (address bus) öteki ise veri yoludur (data bus). Öncelikle adresleme yapılır ve sonrasında veri işlemi yürütülür. Adresi olmayan veri bizim için kayıt noktasında bir şey ifade etmez. Hatta işlem yapılan verilerin bile yazmaçlarda adresi bulunmaktadır. Örneğin R1 yazmacındaki veriyi R2 yazmacı ile topladığımızda elde edilen sonucun hangi yazmaçta saklandığını bilmek oldukça önemlidir. Ayrıca hangi yazmaçları birbiriyle toplayacağımız da bu adrese bağlıdır. Yani adresi olmayan düz veri bizim için anlam ifade eder değildir. Verinin neyin verisi olduğunu bulunduğu adres göstermektedir. Çünkü verinin içeriği sadece bir ve sıfırlardan oluşmaktadır ve mikroişlemci verinin niteliğini anlayacak bir zekaya sahip değildir. O yüzden program yazarken tanımladığımız bütün değişkenler ve fonksiyonlar hafızadaki bir adresi işaret etmektedir. Örneğin int sayi=4; adında bir değişken tanımladığımızda 4 değerinin sayı olduğu değil sayı diye tanımlanan adresteki değerin dört olduğu anlaşılır. C’de çok zor olduğu söylenen Pointer (İşaretçi) meselesini de hafıza adreslerini bu şekilde anladığınızda oldukça kolay çözebilirsiniz. Üst seviye çalışırken alt seviye unsurları anlamamanın çözümü teorik bilgidedir.

ROM bellekler farklı yapılarda olduğu için farklı adlarla adlandırılmıştır. Gelişen teknoloji ile beraber ROM belleklerin yapısı değiştiği için adları da değişmiştir. Biz en ilkel olandan başlayarak her kitapta olduğu gibi sırayla anlatalım.

PROM (Programmable ROM)

Resimde AMD firmasının üretmiş olduğu AM27C512 PROM belleği görmekteyiz. Şekil itibariyle normal bir entegreden farkı olmasa da içindeki teknolojiden dolayı bir fark söz konusudur. PROM bellekler bir defaya mahsus programlanabilir özelliktedir. Boş olarak aldığımız entegreyi bir defalığına programlarız ve bir daha silme veya değiştirme şansımız asla olmaz. Her bit için bir sigorta bulunmaktadır ve bu sigortalar programlama sırasında fiziksel olarak yanmaktadır. CDlerden alışık olduğunuz “burn” tabiri buradan gelmektedir. Eğer yazılan veri hatalı ise yeni bir çipi programlayıp eldeki çipi çöpe atmamız gerekecektir. Bit defa programlanabildiği için OTP (One Time Programmable) bellek adı da verilir. PROMların maliyeti oldukça düşük olduğu için büyük hacimli seri üretimde kullanılabilir.  Entegrelerin adlarına baktığımızda eğer 27 ile başladığını görürsek bunların ROM bellek olduğunu düşünebiliriz. ROM bellekleri üreten pek çok firma bulunmaktadır. Şu bağlantıdan göreceğiniz üzere aynı entegreyi onlarca firma üretmektedir.

http://www.alldatasheet.com/view_datasheet.jsp?Searchword=27C51

Şimdi datasheetten entegrenin ayak yapısına bakalım ve buradan daha ayrıntılı inceleme imkanı bulalım.

Görüldüğü gibi besleme ayaklarından başka A ve Q adlı iki ayrı ayak dizisi bulunmaktadır. Bazen Q yerine D olarak da gösterilir. A ile başlayan ayaklar adres ayakları olup 16 bite kadar adres verisini içinde barındırır. Yani bu durumda adresler 64K’ya kadar çıkabilmektedir. Q ile ifade edilen ayaklar ise veri ayağı olup buradan 8 bitlik veri okunur. 8 bit olduğunu 0-7 arasında numaralandırıldığı için anlıyoruz. Adres ile çarpınca 64K x 8 yani 512K bit değeri elde ediyoruz. ROM bellekler kilo bit olarak sınıflandırılır. İşlenirken bayt olarak ele alsak da teknik özelliği olarak toplam bit değeri yazılmaktadır. 512K dediğimizde asla 512 kilo bayt anlamamak gerekir. 512 kilo bit 8 bitlik veri yoluyla bölününce 512 / 8 yani 64KB kapasite elde edilmiş olur. Bu entegrede örneğin E ayağını görmekteyiz. Bu Enable yani etkinleştirme anlamına gelmektedir. Önce mikroişlemci A ile numaralandırılmış ayaklara sırasıyla (A0’dan A15’e kadar) okunacak adres değerini yazar. E ayağı aktifleştirildiğinde Q ayaklarında veri belirir ve bu veri okuması yapılır. Neden etkinleştirme ayağının olduğunu da az çok anlamış olmalısınız. Birden fazla çipi aynı adres ve veri yoluna bağlayabilmek için çiplerin harici bir “kontrol” yolu ile denetlenmesi gerekir. Okunacak çipin hangisi olduğunu ise E ayağı ile seçmekteyiz. Görüldüğü gibi prensibi oldukça basit.

EPROM

Gelişen teknoloji ile beraber PROMların büyük bir eksikliği olan geri dönüşü olmayan bir defa programlanabilme kısıtlamasını ortadan kaldırma yoluna gidilmiştir. Bir mikrodenetleyicide programı denemek için belki onlarca defa program yüklememiz ve denememiz gereklidir. Bir defa programlanabilir entegrelerle bunu yapmaya kalksak zamanla binlerce entegreyi çöpe atmak zorunda kalacaktık. O yüzden silinip tekrar kullanılabilen bir hafıza birimini kullanmak şarttır. Bunun için mor ötesi ışıkla silinebilen bir malzemeyle yapılan EPROM (Erasable Programmable ROM) bellekler geliştirilmiştir. Biraz geriye baktığımızda PIC mikroişlemcilerin de zamanında bu şekilde olduğunu görmekteyiz. EPROM belleklerle beraber binlerce defa silinip programlanabilen bellekler ortaya çıkmıştır. EPROM bellekleri yine aynı şekilde programlayıcı vasıtasıyla kullanabilsek de bunların silinmesi oldukça zahmetlidir.

Şekilde görüldüğü gibi EPROM bellek PROM bellekten farklı olarak çekirdeğin üst kısmında kuvars pencereye sahiptir. Bu pencere vasıtasıyla uygulanan mor ötesi ışık doğrudan çekirdek üzerine düşmektedir. Buradaki malzeme fiziksel olarak ışıkla sıfırlandığından veriler de sıfırlanmış olur. Aynı demir tozu ve mıknatıs kullanan oyuncak yazı tahtalarının silinmesi gibi düşünebiliriz. Bu silme işlemi için özel bir ışık odası gereklidir. Mor ötesi ışık uygulamakla basitçe silebilsek de entegreyi devreden çıkarmak ve ışık odasına koyup 20 dakikaya kadar beklemek gereklidir. Böyle olduğunda yine zamandan ve emekten kaybımız olmaktadır. Ayrıca entegrenin üzeri açık kaldığı zaman güneş ışığı almakla bile içindeki veriler silinebilmektedir. O yüzden silindikten sonra mutlaka bant ile kapatılıp programlanması gereklidir. EPROM hafızalarda belli bir hücreyi veya kısmı silme seçeneği yoktur. Işık uygulandığında veriler geri dönüşü olmayacak şekilde tamamen silinmektedir.

Belleklerin teknolojiye göre erişim hızları da artmaktadır. 2764 EPROM belleğin erişim hızı hücre başına 250 nano saniyedir.

EEPROM

EEPROM’un EPROM’a göre birçok avantajı bulunmaktadır. Bunlardan en önemlisi silme işleminin elektriksel olmasıdır. EEPROM’un açılımı elektrik ile silinip programlanabilen sadece okunabilir bellek anlamına gelmektedir. EPROM’un silinmesi için ışık odası ve uzun bir zaman gerektiğini söylemiştik. EEPROM ise teknolojisine göre saniyeler içerisinde tamamen silinebilmektedir. Üstelik bu silme ve yazma işlemi çip üzerinde yapılabilmektedir. Çipi söküp takma zahmetinden de kurtulmuş oluyoruz. EEPROM’u programlamak için de harici bir programlama ve silme aygıtına ihtiyacımız yoktur. Diğer bellekler yüksek gerilim ile programlanabilirken EEPROM çalışma gerilimi ile programlanıp silinebilmektedir.

Şekilde görüldüğü gibi EEPROMların kılıfı küçülmekte ve seri, I2C, SPI ve diğer protokolleri desteklemektedir. Önceleri Adres ve veri hattında paralel iletişim yapılırken artık seri iletişimle devre maliyetleri oldukça azalmıştır. Yukarıda piyasada en sık kullanılan EEPROM çiplerinden birini görmekteyiz. Ayrıca EEPROM bellekler birçok mikrodenetleyicinin içerisinde gömülü olarak gelmektedir.

Flash EEPROM (Flash Hafıza)

90ların başlarında yeni bir bellek çeşidi olarak Flash hafıza teknolojideki yerini almıştır. Buna Flash denmesinin sebebi çok hızlı olmasından dolayıdır. Şu an Flash hafızaları SSD olarak bilgisayarlarda sabit disk yerine bile kullanmaktayız. Aynı zamanda USB bellekler, telefon hafızaları ve SD kartlar Flash hafızaya birer örnektir. Flash hafızalar elektronikte de çip şeklinde alıp kullanabileceğimiz yapıdadır. Üstelik PIC, AVR gibi mikroişlemcilerin program hafızaları Flash hafızadan oluşmaktadır. Flash hafızanın en önemli farkı eğer aygıt silinirse tamamı silinmektedir. EEPROMdaki gibi bayt bayt silme imkanımız yoktur. Bazen Flash hafıza sayfa adı verdiğimiz veri bloklarına ayrılmış olup blok blok silinebilmektedir. AVR’deki bootloader (ön yükleyici) de böyle çalışmaktadır. EPROMların yazıp silme ömrü 1000 kadar iken bu EEPROM ve Flash hafızalarda 100.000’e kadar çıkmaktadır. Bütün bu hafızaların teknolojisi gelişse de belli prensipleri hep aynı kalmıştır. O yüzden kullanım noktasında teorisini anladıktan sonra fazla zorluk çekmezsiniz.

 

İlerleyen zamanlarda temel bilgileri vermeye devam edeceğiz.  Bir sonraki makalede görüşmek üzere.

UYARI!!

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.