
Bellek ya da bilgisayar belleği (İngilizce: computer memory), bir bilgisayarın o anda yürüttüğü programları ve bu programların işlediği verileri, işlemcinin doğrudan ulaşabileceği biçimde saklayan bileşendir. İşlemcinin getirdiği buyruklar ile bu buyrukların okuyup yazdığı veriler bellekte durur. Bu anlamdaki belleğe ana bellek (İngilizce: main memory) da denir.:6, 24 1946'da Arthur Burks, Herman Goldstine ve John von Neumann'ın yazdığı ve programı bellekte saklayan bilgisayarın mantıksal tasarımını anlatan raporda bellek, makinenin ayrı bir "organı" olarak ele alınır ve tasarımın büyük bölümünün bellek biriminin seçimiyle belirlendiği vurgulanır.:7
Çağdaş bilgisayarlarda bellek yarı iletken yongalardan kurulur. Ana bellek çoğunlukla devingen RAM (DRAM) yongalarından, işlemcinin içindeki önbellekler ise daha hızlı ama bit başına çok daha pahalı durağan RAM (SRAM) devrelerinden yapılır.:5-7 Bu iki tür uçucudur, güç kesildiğinde içeriklerini kaybeder. Yarı iletken belleklerin salt okunur bellek ve flaş bellek gibi kalıcı türleri ise güç kesildiğinde de içeriklerini korur.
Bellek, ikincil bellek denen disk gibi büyük ama yavaş saklama ortamlarından çok daha hızlıdır; ikincil bellek ise çok büyük miktarda veriyi elektronik bellekten çok daha ucuza saklar.:13:10-11 Bu yüzden bilgisayarlar farklı hız ve kapasitedeki bellekleri katmanlar hâlinde birleştiren bir bellek hiyerarşisi kullanır.:13 Belleği programlar arasında paylaştırmak, onları birbirinden korumak ve fiziksel bellekten büyük bir adres uzayı sunmak işletim sisteminin görevlerindendir.:5-6
Bir bilgisayarın saklama birimleri iki ana gruba ayrılır. Ana bellek işlemcinin buyruklarla doğrudan okuyup yazdığı bellektir. RISC-V'in temel tamsayı buyruk kümesi RV32I gibi yükle-sakla mimarilerinde bellekteki veriye yalnızca yükleme ve saklama buyrukları erişir, aritmetik buyruklar ise yalnızca yazmaçlar üzerinde çalışır.:24 İkincil bellek (İngilizce: secondary storage) ise sabit disk sürücüsü ya da katı hâl sürücüsü gibi, verileri uzun süre saklayan ama erişimi büyüklük mertebeleriyle daha yavaş olan aygıtlardır. Ulrich Drepper'ın belirttiğine göre, programın çalışma kümesinin RAM'e sığmayan bölümü bu aygıtlarda tutulur ve disklere erişim DRAM'e erişimden bile büyüklük mertebeleriyle yavaştır.:13

İki tür belleğe erişim yolu da birbirinden farklıdır. İşlemci ana belleğe bir bellek yolu üzerinden bağlıdır; bir yükleme ya da saklama buyruğunun verdiği adres bu yoldan belleğe gider ve veri aynı yoldan geri gelir. Disk gibi yavaş aygıtlar ise sistemin daha uzaktaki giriş-çıkış yollarına (PCI, SATA, USB gibi) bağlanır.:1-2 İşlemci bu aygıtlarla, aygıtın yazmaçlarına ya özel giriş-çıkış buyruklarıyla ya da bellek eşlemeli G/Ç ile komut ve veri göndererek konuşur. Bu buyruklar çoğunlukla ayrıcalıklıdır: aygıtları işletim sistemi yönetir ve onlarla doğrudan konuşabilen tek yazılım odur.:7-8 Bu yüzden bir program diskteki veriyi bir yükleme buyruğuyla okuyamaz. Programın yaptığı read() gibi bir sistem çağrısı, işletim sisteminin dosya sistemi ve öbek katmanından geçerek aygıtın aygıt sürücüsüne ulaşır.:8-9 Büyük aktarımlarda işlemci veriyi sözcük sözcük kopyalamaz; işletim sistemi doğrudan bellek erişimi (DMA) denetleyicisine verinin bellekteki yerini ve boyutunu bildirir, denetleyici aktarımı yapar ve iş bitince bir kesme üretir.:6-7 Ana bellekteki veriye bir buyrukla ulaşılırken ikincil bellekteki veri işlenmeden önce bu yolla ana belleğe getirilir.
Bu ayrım bilgisayarın ilk tasarımlarında da vardı. Burks, Goldstine ve von Neumann, istenen kapasitede ve hızda tek bir belleğin fiziksel olarak yapılamayacağını, bu yüzden "her biri bir öncekinden daha büyük kapasiteli ama daha yavaş erişilen" bellekler hiyerarşisi kurmak gerektiğini yazmıştı.:7 Aynı raporda ikinci düzey bellek için teleks şeritleri, manyetik tel ya da bantlar ve film gibi ortamlar tartışılır; delikli kartlar ise verinin makineye sırasız biçimde geri okunması gerektiğinde elverişsiz sayılır.:10-11 Ana bellek ile ikincil bellek arasındaki aktarımı işletim sistemi yönetir ve gerektiğinde sayfaları diskteki takas alanına çıkarır.:2

Bir programın buyrukları ile işlediği veriler aynı bellekte de ayrı belleklerde de tutulabilir. Burks, Goldstine ve von Neumann 1946 raporunda sayıların saklanması ile buyrukların saklanmasını kavram olarak iki ayrı bellek biçimi diye ele alır; ama buyruklar sayısal bir kodla yazılır ve makine sayıyı buyruktan ayırt edebilirse aynı bellek organının ikisini birden saklayabileceğini söyler.:bölüm 1.2-1.3 Bu yaklaşıma dayanan von Neumann düzeninde buyruklar da veriler de tek bir bellekte ve tek bir adres uzayında durur, işlemciye aynı yoldan gelir. John Backus 1977 Turing Ödülü konuşmasında, işlemciyi belleğe bağlayan ve bir seferde tek bir sözcük taşıyabilen bu yola von Neumann darboğazı (İngilizce: von Neumann bottleneck) adını verdi. Backus'a göre bu yoldan geçen trafiğin büyük bölümü işe yarayan veri değil; verilerin adları, başka bir deyişle adresleri, ve yalnızca bu adresleri hesaplamak için kullanılan işlemler ile verilerdir.:613, 615-616
Harvard düzeninde ise buyruk belleği ile veri belleği ayrıdır ve her biri kendi adres uzayına sahiptir. Bu düzen bugün özellikle küçük mikrodenetleyicilerde yaşar. Örneğin AVR ailesinde program flaş bellekte, veriler RAM'de tutulur ve ikisinin adres uzayları ayrıdır. C dili buyruk ile verinin aynı adres uzayında bulunduğu von Neumann makineleri için tasarlandığından, bu işlemciler için yazılan derleyiciler sabit verileri program belleğine koyup oradan okumak için dile standart dışı anahtar sözcükler ya da ayrı işlevler eklemek zorunda kalır.
Genel amaçlı işlemcilerde ana bellek tektir ve buyruklar ile veriler aynı adres uzayını paylaşır; ayrım yalnızca işlemciye en yakın katmanda yapılır. Birinci düzey önbellek, buyruklar için bir buyruk önbelleği (L1i) ve veriler için bir veri önbelleği (L1d) olarak ikiye bölünür, ikinci ve üçüncü düzey önbellekler ise ikisi için ortaktır.:14-15, 20 Önbellek düzeni programcıya görünmez;:15 yazılımın gördüğü makine tek adres uzaylı bir makinedir, donanım ise her çevrimde buyruk ve veri için iki ayrı yol kullanabilir.
İlk elektromekanik ve elektronik hesap makinelerinde sayılar röleler ve elektron tüpleri gibi devre elemanlarında tutuluyordu. 1941'de tamamlanan Konrad Zuse'nin Z3 makinesi 2.300 röle kullanıyordu ve 22 bitlik bir sözcük uzunluğuna sahipti. 1946'da tanıtılan ENIAC yaklaşık 18.000 vakum tüpü kullanıyordu. Burks, Goldstine ve von Neumann 1946'da elektrik devrelerindeki en yaygın saklama biçimlerini flip-flop ya da tetikleme devresi, gazlı tüp ve elektromekanik röle olarak sayar. Bunlarla 40 bitlik n sözcükten oluşan bir bellek kurmak, seçme devreleri dışında yaklaşık 40n eleman gerektirecekti.:7-8

İkinci Dünya Savaşı'ndaki radar çalışmaları, gecikme hattı belleğini (İngilizce: delay-line memory) doğurdu. Bu bellekler veri bitlerini ses dalgalarına çevirir, onları bir ortamın içinden geçirir ve öbür uçta yeniden bite dönüştürürdü; bitler bilgisayar onları değiştirene dek bu döngüde dolaşırdı. Cıva dolu tüplerin uçlarında bitleri üreten ve alan dönüştürücüler vardı; manyetostriktif gecikme hatlarında ise bir elektromıknatıs uzun bir teli bir yöne ya da öbür yöne burarak birleri ve sıfırları temsil ederdi. Bütün gecikme hattı belleklerinde bit akışı sürekli dolaşır ve yalnızca tek bir noktada erişilebilirdi. Maurice Wilkes'in ekibinin Cambridge Üniversitesi'nde 1949'da yaptığı, programı bellekte saklayan EDSAC cıvalı gecikme hattı belleği kullanıyordu. UNIVAC I'in cıvalı gecikme hattı belleği 72 bitlik 1.000 sözcük tutuyordu.

İlk yüksek hızlı ve tümüyle elektronik bellek, Manchester Üniversitesi'nde Freddie Williams ile Tom Kilburn'ün geliştirdiği ve 1947'de denenen Williams-Kilburn tüpüdür. Tüp, bitleri bir katot ışınlı tüpün ekranında noktalar olarak saklıyordu; her nokta saniyenin bir kesri içinde söndüğünden bilgi sürekli yenileniyordu ve bir metal toplayıcı levha elektrik yükündeki değişimi algılayarak bilgiyi okuyordu. Elektrostatik tüpler ekranda 512 ile 2.048 bit arasında veri tutabiliyordu. 21 Haziran 1948'de bu belleği sınamak için yapılan Small-Scale Experimental Machine, programı bellekte saklayan sayısal elektronik bir bilgisayarda çalışan ilk programı yürüttü. Teknolojinin güvenilirliği düşüktü. Computer History Museum'un sergi anlatımına göre IBM 701'de güvenilmez Williams-Kilburn tüpü belleği yüzünden arızaya kadar geçen ortalama süre 15 dakika dolayındaydı; müze bu teknolojinin sonunda bir çıkmaz sokak olduğunu da yazar.

Dönen manyetik ortamlar da ana bellek olarak kullanıldı. ABD Donanması için Engineering Research Associates'in (ERA) yaptığı ve 1950'de tamamlanan Atlas bilgisayarı, yüzeyi ferromanyetik bir malzemeyle kaplı dönen bir silindir ile çevresinde sabit duran okuma-yazma kafalarından oluşan tambur belleği kullanıyordu.

Manyetik çekirdek bellekte her küçük manyetik halka bir bit saklar; halka bir yönde mıknatıslandığında 0'ı, öbür yönde mıknatıslandığında 1'i temsil eder ve halkaların içinden geçen teller mıknatıslanmayı hem algılayıp hem değiştirebilir. Çekirdek bellek için Frederick Viehe 1947'de, An Wang 1949'da, RCA'dan Jan Rajchman 1950'de ve MIT'den Jay Forrester 1951'de patent başvurusunda bulundu. Forrester, bilginin çekirdeğe nasıl yazılıp okunacağını belirleyen "eş akım" (İngilizce: coincident current) yöntemini geliştirdi. Computer History Museum'a göre bu yöntem bilgisayarlar için ilk güvenilir yüksek hızlı rastgele erişimli belleği olanaklı kıldı. Müzeye göre güvenilir, ucuz, rastgele erişimli ve hızlı elektronik bellek niteliklerinin hepsi ancak 1950'lerin başında bir araya gelebildi.
MIT'nin Whirlwind bilgisayarı önce katot ışınlı tüp belleğe göre tasarlanmıştı; bu belleğin yavaşlığı ve güvenilmezliği Forrester'ı çekirdeğe yöneltti ve Whirlwind 1953'te çekirdek bellek kullanan ilk bilgisayar oldu. İlk çekirdeklerin çapı 1/16 inçti, bunlara 5 mikrosaniyede erişilebiliyordu ve bit başına maliyetleri yaklaşık 1 dolardı; sonraki çekirdekler dört kat küçüldü, on kat hızlandı ve yüz kat ucuzladı. Çekirdek bellek 1953'ten sonra rakip teknolojileri hızla saf dışı bıraktı ve 1970'lere dek ana bellek teknolojisi olarak kaldı.
Yarı iletken bellekler önce hız gerektiren küçük yardımcı bellekler için kullanıldı. Fairchild Semiconductor'dan Robert Norman yarı iletken bir durağan RAM tasarımı için 1963'te patent başvurusu yaptı; patent 1971'de verildi. 1965'te Ben Agusta ile Paul Castrucci, IBM System/360 Model 95 için 16 bitlik SP95 belleğini geliştirdi. Fairchild'da John Schmidt 1964'te 64 bitlik, p kanallı bir MOS durağan RAM tasarladı. IBM'in yarı iletken ana bellek kullanan ilk ticari bilgisayarı olan System/370 Model 145, 1971'de teslim edildi ve aynı veriyi çekirdek belleğin kapladığı yerin yarısında saklıyordu.

Bilgiyi sığaçlardaki yükte tutan ve bu yüzden belirli aralıklarla yenilenmesi gereken devingen bellekler 1960'ların sonunda ortaya çıktı. Honeywell'den Bill Regitz'in önerdiği üç transistörlü hücreyle yapılan 1.024 bitlik Intel 1103, bit başına yaklaşık 1 sente satılıyordu ve 1970'ten sonra bilgisayarların ana belleğinde manyetik çekirdeğin yerini hızla aldı. Bugünkü DRAM'lerin temelindeki tek transistörlü hücre IBM'de doğdu. IBM'in tarihçesine göre Robert H. Dennard düşünceyi 1966'da buldu; o güne dek kullanılan tasarım bir bit için altı transistör gerektiriyordu. Dennard'ın patent başvurusu 14 Temmuz 1967'de yapıldı ve patent 4 Haziran 1968'de verildi. Mostek 1976'da çıkardığı 16 Kbit'lik MK4116'da bu tek transistörlü hücreyi kullandı. Computer History Museum'a göre yarı iletken bellek 1980 dolaylarında baskın teknoloji oldu.
Yarı iletken salt okunur bellek (ROM) yongaları 1965'te ortaya çıktı. Bu yongalarda veri üretim sırasında kalıcı olarak yazılır: satır ve sütun hatları arasına yerleştirilen diyotlardan hangilerinin bağlanacağını üretimin son maske adımı belirler. Bu yüzden ROM, mikroprogram kodu, arama tabloları ve karakter üretimi gibi sistemin ömrü boyunca değişmeyecek bilgiler için kullanılır. 1970'te Radiation Inc., kullanıcının metal sigorta bağlantılarını dışarıdaki bir programlama birimiyle yakarak bir kez programlayabildiği 512 bitlik bir PROM çıkardı. Bell Laboratuvarları'ndan Dawon Kahng ve Simon Sze 1967'de bir MOS aygıtının bağlantısız kapısının (İngilizce: floating gate) yeniden programlanabilir bir ROM hücresi olarak kullanılabileceğini gösterdi. Intel 1971'de Dov Frohman'ın tasarladığı, içeriği morötesi ışıkla silinip yeniden yazılabilen 2.048 bitlik EPROM 1702'yi duyurdu.
Hughes Microelectronics'te Eli Harari 1976-1978 arasında morötesi ışıkla silmeye gerek bırakmayan, ince oksitli, bağlantısız kapılı ve elektrikle silinebilen bir PROM (EEPROM) hücresi gösterdi; George Perlegos bu yöntemi 1978'de Intel'in ilk EEPROM'unda kullandı. Toshiba'da Fujio Masuoka 1980'de EEPROM mimarisini değiştirmeye başladı, 1987'de ise daha ucuz bir NAND yapısı geliştirdi. Flaşı EEPROM'dan ayıran özellik, büyük miktarda verinin bir defada silinebilmesidir; Toshiba'nın bellek bölümünden doğan Kioxia'nın kronolojisine göre bellek bu özelliği yüzünden 1984'te "flaş" diye adlandırıldı ve aynı yıl duyuruldu. Adı Masuoka'nın çalışma arkadaşı Shoji Ariizumi önermişti; Masuoka NOR yapılı ilk flaş hücresini 1984'te IEDM toplantısında sundu, ama Toshiba bu ilk buluşu doğrudan ticari ürüne dönüştürmedi. Aynı kronolojiye göre NAND flaş 1987'de bulunup duyuruldu, ilk ticari NAND flaş ürünü ise 1991'de çıktı. Computer History Museum'un zaman çizelgesi de Masuoka'nın flaş belleği bulduğu yılı 1984 olarak verir.
JEDEC'in tanımına göre uçucu bellek (İngilizce: volatile memory), güç verilmediğinde veri içeriği kaybolan bellektir; kalıcı bellek (İngilizce: nonvolatile memory) ise güç kesildiğinde de içeriğini koruyan bellektir. Çağdaş bilgisayarlarda iki tür birlikte kullanılır: çalışan programlar ve verileri uçucu RAM'de, kalıcı olarak saklanması gereken bilgiler ise flaş bellek ve disk gibi kalıcı ortamlarda tutulur. Uçucu bellekte de güç kesilince içerik hemen yok olmaz. Halderman ve arkadaşlarının 2008'de gösterdiğine göre, yaygın kanının aksine çoğu bilgisayarda kullanılan DRAM'ler güç kesildikten sonra oda sıcaklığında da içeriklerini birkaç saniye boyunca ancak yavaş yavaş yitirir. Bu veri kalıntısı (İngilizce: remanence) DRAM'i kalıcı bellek yapmaz, ama şifreleme anahtarlarının bellekten çalınmasına olanak verir.:45
JEDEC, rastgele erişimli belleği (İngilizce: random-access memory, RAM) adres konumlarından herhangi birine istenen sırayla ve her konum için benzer bir erişim süresiyle ulaşılabilen bellek olarak tanımlar; terimin yaygın kullanımı ise sınırsız sayıda yeniden yazılabilen, okuma ve yazma süreleri birbirine yakın bir okuma-yazma belleğini anlatır.
Durağan RAM (SRAM), yaygın biçiminde her biti, birbirine çapraz bağlı iki evirici oluşturan dört transistör ile iki erişim transistöründen oluşan altı transistörlü (6T) bir hücrede tutar; dört transistörlü çeşitleri de vardır. Hücre besleme sürdükçe durumunu korur, okunduğu anda veriyi verir ve yenileme gerektirmez.:5 SRAM, DRAM'den çok daha hızlıdır ama hem üretimi hem kullanımı çok daha pahalıdır; bu yüzden çağdaş bilgisayarlarda işlemcinin önbelleklerinde ve kırmık üzerindeki küçük yapılarda kullanılır.:5, 7
Devingen RAM (DRAM) her biti bir transistör ve bir sığaçtan oluşan bir hücrede saklar. Sığaçtaki yük kısa sürede sızdığı için hücrenin sürekli yenilenmesi gerekir; çoğu DRAM yongasında her hücre 64 milisaniye içinde yenilenmelidir. Bu süre bütün yonganın tek bir işlemle yenilendiği aralık değildir; bellek denetleyicisi satırları bu pencereye yayılan çok sayıda yenileme komutuyla sırayla yeniletir.:5-6, 10 Yenilenen bankaya yenileme sürerken erişilemez. Bütün bankaları yenileyen olağan komut bütün bankaların boşta olmasını gerektirirken DDR5'in aynı numaralı bankaları yenileme (İngilizce: same-bank refresh) komutu yalnızca her banka grubundaki bir bankayı bekletir, öteki bankalara erişim sürebilir.:2 Buna karşılık DRAM hücresi SRAM hücresinden kat kat küçüktür ve hücrelerin düzenli yapısı onları kırmık üzerinde sık dizmeyi kolaylaştırır; ağ yönlendiricileri gibi özel donanımlar dışında bilgisayarların ana belleği bu yüzden DRAM'den kurulur.:6 SDRAM bu türün bir saat sinyaline bağlı çalışan arayüzlü biçimidir; DDR SDRAM kuşakları ise veriyi saat sinyalinin iki kenarında aktarır.:8-10
JEDEC'e göre salt okunur bellek (İngilizce: read-only memory, ROM), içeriğinin olağan çalışmada değiştirilmeyip yalnızca okunması amaçlanan bellektir; başka bir nitelik verilmedikçe ROM'un içeriği belleğin yapısıyla belirlenir ve değiştirilemez. Maskeli ROM'un içeriği üretimde yazılır. Computer History Museum, ilk yarı iletken ROM yongalarını anlatırken diyodun olabilecek en küçük bellek hücresi yapısı olduğunu ve bu yüzden ROM'un yüksek yoğunluk sunduğunu yazar. PROM yalnızca bir kez programlanabilir; EPROM'un içeriği morötesi ışıkla silinip yeniden yazılabilir, EEPROM ise elektrikle silinip yeniden programlanır.
Flaş bellek (İngilizce: flash memory), EEPROM'un bir türüdür ve bitleri bir transistörün içinde tutulan yük miktarı olarak saklar. Hücre başına tek bit saklayan yongalara tek düzeyli hücre (İngilizce: single-level cell, SLC), yük düzeylerini ayırarak hücre başına iki bit saklayanlara çok düzeyli hücre (İngilizce: multi-level cell, MLC) denir.:1 Katı hâl sürücülerinde kullanılan NAND flaşta yonga silme birimlerine (İngilizce: erase block), silme birimleri de birkaç KB'lık sayfalara bölünür; Arpaci-Dusseau'ların verdiği tipik silme birimi boyutu 128 ya da 256 KB'tır. Bir sayfa birkaç on mikrosaniyede okunabilir. Sayfa ancak silinmiş durumdayken programlanabilir, silme ise yalnızca bütün silme birimi için yapılır. Bu yüzden programlanmış bir sayfanın içeriğini değiştirmek için önce onu içeren bütün silme biriminin silinmesi gerekir; silinmiş bir silme biriminin sayfaları ise yeniden silme gerekmeden birer birer programlanabilir.:2-4
Flaşın en büyük güvenilirlik sorunu aşınmadır: bir silme birimi çok sık silinip programlanırsa kullanılamaz hâle gelir. Arpaci-Dusseau'ların aktardığına göre üreticiler MLC silme birimlerinin ömrünü 10.000, SLC silme birimlerininkini ise genellikle 100.000 programlama-silme çevrimi olarak verir.:4-5 Bu sayılar ürüne ve üretim teknolojisine göre değişir; National Instruments örneğin düzlemsel MLC için yaklaşık 3.000 çevrim verir. Katı hâl sürücülerindeki flaş çeviri katmanı, yazmaları silme birimlerine olabildiğince eşit dağıtarak bütün silme birimlerinin aşağı yukarı aynı sürede aşınmasını sağlar; bu işe aşınma dengeleme (İngilizce: wear leveling) denir.:6-7 Flaş bellek USB bellekler, katı hâl sürücüleri, cep telefonları ve fotoğraf makinelerinde yaygın olarak kullanılır.
Hem RAM'e yakın bir hızı hem de güç kesildiğinde içeriği korumayı birleştirmeyi amaçlayan birkaç kalıcı bellek türü geliştirilmiştir. Bunlardan biri manyetorezistif RAMdir (İngilizce: magnetoresistive random-access memory, MRAM). Electronic Design'a göre Freescale Semiconductor'ın 2006'da duyurduğu 4 Mbit'lik MR2A16A, ticari olarak satışa sunulan ilk MRAM'dir; 16 bitlik 256K sözcük olarak düzenlenen yonganın okuma ve yazma çevrimi 35 ns'dir ve üretici MRAM'in SRAM'in başarımını flaşın kalıcılığıyla birleştirdiğini belirterek bu yongayı pille beslenen SRAM'in yerine önermiştir.
Ferroelektrik RAM (İngilizce: ferroelectric random-access memory, FeRAM ya da FRAM) Texas Instruments'ın teknik raporuna göre kurşun zirkonat titanat (PZT) kristalindeki zirkonyum ve oksijen atomlarının oluşturduğu elektrik dipolünün yönünde bilgi saklar; uygulanan bir elektrik alanı malzemeyi kutuplar ve kutuplanma alan kaldırıldıktan sonra da korunur. Faz değiştiren bellek (İngilizce: phase-change memory, PCM) ise kalkojenit bir malzemenin düşük dirençli kristal evresi ile yüksek dirençli amorf evresi arasındaki direnç farkını kullanır. Hücre kısa ve büyük bir akım darbesiyle eritilip hızla soğutularak amorf evreye, daha uzun ve orta büyüklükte bir darbeyle de kristal evreye geçirilir; okuma, durumu bozmayacak kadar küçük bir akımla direnç ölçülerek yapılır.:2202-2203
Daha hızlı RAM yapmak olanaksız değildir ama ekonomik değildir: işlemci çekirdeği kadar hızlı bir RAM, herhangi bir DRAM'den büyüklük mertebeleriyle daha pahalıdır. Bu yüzden bilgisayarlarda büyük miktarda DRAM'in yanına az miktarda hızlı SRAM konur. Bu SRAM, işletim sisteminin ya da kullanıcının yönettiği ayrı bir bellek bölgesi olarak değil, işlemcinin kendiliğinden kullandığı bir önbellek olarak çalışır ve ana bellekteki, yakında kullanılması beklenen verilerin geçici kopyalarını tutar.:13
Katmanlar arasındaki hız farkı büyüktür. Intel'in Pentium M işlemcisi için verdiği erişim süreleri, bir yazmaç için en çok 1, birinci düzey veri önbelleği için yaklaşık 3, ikinci düzey önbellek için yaklaşık 14, ana bellek için ise yaklaşık 240 işlemci çevrimidir.:16 İstenen veri üst düzeydeki bellekte varsa buna bulma (İngilizce: hit), yoksa ve bir alt düzeyden getirilmesi gerekiyorsa bulamama (İngilizce: miss) denir. Bulma ve bulamama sayıları bilindiğinde, her erişimde önce üst düzeye başvurulan yalın modelde bir programın ortalama bellek erişim süresi, üst düzeye erişim süresine bulamama olasılığı ile bulamamanın getirdiği ek sürenin (alt düzeye erişim süresinin) çarpımı eklenerek hesaplanır.:1
İkincil belleğin de bu hiyerarşinin en alt katmanı sayılması, işletim sisteminin sanal bellek ile ana belleği diskin bir tür önbelleği gibi kullanmasından gelir: işletim sistemi diskteki takas alanına sayfa büyüklüğünde parçalar yazıp okur ve bir program kendi adres uzayından büyük bir belleği varmış gibi kullanabilir.:1-2 Ne var ki katmanlar arasındaki aktarımı yapan düzenek aynı değildir. Önbellek ile ana bellek arasındaki kopyalamayı işlemci donanımı yazılımdan habersiz biçimde kendisi yapar.:13 Ana bellekte bulunmayan bir sayfaya erişildiğinde ise donanım yalnızca bir sayfa hatası üretip denetimi işletim sistemine bırakır; sayfayı diskten getiren, bir giriş-çıkış işlemi başlatan ve beklerken başka bir süreci çalıştıran işletim sistemidir.:4 Bu yüzden hiyerarşinin üst katmanları arasındaki bulamama birkaç ya da birkaç yüz işlemci çevrimine mal olurken diske düşen bir bulamama bir giriş-çıkış işlemi gerektirir.:16
Hiyerarşinin işe yaraması programların yerellik göstermesine dayanır. Kısa bir süre içinde aynı kod ya da veri yeniden kullanılır (zamanda yerellik) ve kullanılan veriler çoğu zaman bellekte birbirine yakın konumlardadır (alanda yerellik).:13-14 Peter Denning'e göre yerellik ilkesi, sanal bellek sistemlerini iyi çalıştırma çabalarından doğdu ve sonradan önbelleklerden ağ sistemlerine uzanan geniş bir alanda uygulandı. Denning zamanda yerelliği son ya da sonraki erişime kadar geçen süre gibi bir zaman uzaklığıyla, alanda yerelliği ise bir dizide kaç adres ötede olmak gibi bir uzay uzaklığıyla tanımlar.:19, 23
Bellek, her biri bir bellek adresiyle seçilen konumlardan oluşan bir dizi olarak düzenlenir. Her konum için ayrı bir seçme hattı kullanmak olanaksızdır; her bayta ayrı bir adres verilen 4 GiB'lık (232 bayt) bir bellek için 232 hat gerekirdi. Bu yüzden adres ikili bir sayı olarak gönderilir ve bellek yongasının içinde bir kod çözücü ile çözülür; N girişli bir kod çözücünün 2N çıkışı vardır, başka bir deyişle N bitlik bir adres 2N konumdan birini seçebilir.:6 DRAM yongalarında hücreler satırlar ve sütunlar hâlinde dizilir ve adres iki parça hâlinde gönderilir: önce satır, sonra sütun seçilir. Böylece dışarıdaki adres hattı sayısı yarıya iner.:7 Eş zamansız DRAM'lerde adresin bu iki parçası, satır adresi örnekleme (İngilizce: row address strobe, RAS) ve sütun adresi örnekleme (İngilizce: column address strobe, CAS) sinyalleriyle yongaya alınır.:1135
Çağdaş mimarilerde adresin gösterdiği en küçük birim genellikle bayttır. Örneğin RISC-V'te bütün bellek erişimleri için 2XLEN baytlık, bayt adresli tek bir adres uzayı vardır; burada XLEN yazmaç genişliğidir. Aynı belirtimde bellekte bir sözcük 32 bit (4 bayt), yarım sözcük 16 bit, çift sözcük 64 bittir.:6 Birden çok bayttan oluşan bir değerin baytlarının bellekte hangi sırayla duracağını bayt sıralaması belirler. Küçüğü başta (İngilizce: little-endian) düzende değerin en az anlamlı baytı en küçük adrese, büyüğü başta (İngilizce: big-endian) düzende ise en anlamlı baytı en küçük adrese yazılır.:24 Bir değerin adresi o değerin boyutunun katıysa erişim doğal olarak hizalanmıştır. RISC-V belirtimine göre doğal olarak hizalanmış yükleme ve saklamalar hizalama hatası doğurmaz; hizalanmamış erişimlerin donanımda mı yazılımda mı karşılanacağı ise yürütme ortamına bırakılmıştır.:24-25
Aynı anda birçok programın çalıştığı sistemlerde belleği paylaştırmak işletim sisteminin işidir. Arpaci-Dusseau ve Arpaci-Dusseau'nun anlatımına göre işletim sistemi her çalışan programa büyük, seyrek ve yalnızca kendisine ait bir adres uzayı sunar. Program bu uzaydaki sanal adreslerle çalışır; her sanal adres, gerçek belleğe gönderilecek bir fiziksel adrese çevrilir.:5-6 Olağan erişimlerde bu çeviriyi donanım yapar; işletim sistemi ise donanımı doğru çeviriler yapılacak biçimde kurar, belleğin hangi bölümlerinin kullanıldığını izler ve bir program izinsiz bir adrese eriştiğinde devreye girer.:1
Sanal bellek ilk kez Manchester Üniversitesi'nin Atlas bilgisayarında geliştirildi. Manchester Üniversitesi'nin kayıtlarına göre Atlas projesi 1956-1962 arasında yürüdü, Ferranti 1959'da projeye katıldı ve ilk Atlas 7 Aralık 1962'de açıldı. Denning'e göre Atlas'ı yapanlar bilgisayarların her zaman en azından bir ana bellek ve bir ikincil bellekten oluşan bir hiyerarşiye sahip olacağını gördüler ve bu hiyerarşiyi yönetmeyi kolaylaştırmak için saklama ve aktarma birimi olarak sayfayı getirdiler; Atlas'ın sanal belleği 1959'da geliştirildi.:19 Computer History Museum ise kavramın Tom Kilburn'ün yönettiği ekipten 1962'de çıktığını yazar ve sanal belleğin zaman paylaşımı için temel bir gereksinim olduğunu belirtir.
Sayfalamada adres uzayı sabit boyutlu sayfalara, fiziksel bellek de aynı boyuttaki sayfa çerçevelerine bölünür.:1 İşletim sistemi her sanal sayfanın fiziksel bellekte nerede durduğunu, çalışan her program için ayrı tutulan bir sayfa tablosunda kaydeder.:3 Çeviriyi hızlandırmak için işlemcinin bellek yönetim birimi (İngilizce: memory management unit, MMU) son yapılan çevirileri etkin sayfalar önbelleği (İngilizce: translation lookaside buffer, TLB) adı verilen küçük bir donanım önbelleğinde tutar.:1 Diskte ayrılan takas alanı sayesinde sistem, birden çok programa toplamda fiziksel bellekten büyük bir sanal bellek sunabilir.:2 Çalışan programların etkin çalışma kümeleri, başka bir deyişle etkin olarak kullandıkları sayfalar birlikte fiziksel belleğe sığmadığında sistem sürekli sayfa aktarmak zorunda kalır; aşırı sayfalama (İngilizce: thrashing) denen bu durumda bilgisayar zamanının çoğunu iş yapmak yerine sayfaları disk ile bellek arasında taşımakla geçirir.:14:19
Bellek koruması, bir programın kendi adres uzayının dışındaki belleğe, başka bir programın ya da işletim sisteminin belleğine erişememesini veya onu değiştirememesini sağlar. Böylece programlar birbirinden yalıtılır ve hatalı ya da kötü niyetli bir program ötekilere zarar veremez.:5-6 Bunun en yalın donanım biçimi, 1950'lerin sonundaki ilk zaman paylaşımlı makinelerde ortaya çıkan taban ve sınır yazmaçlarıdır. İşlemci her bellek erişiminde programın ürettiği adresin sınır içinde olup olmadığını denetler; adres sınırın dışındaysa bir kural dışı durum oluşturur ve program büyük olasılıkla sonlandırılır.:5, 7 Geçersiz bir adrese yapılan bu tür erişime yaygın olarak bölütleme hatası (İngilizce: segmentation fault) denir; ad, bölütlemeli makinelerde geçersiz bir adrese yapılan erişimden gelir ve bölütleme desteği olmayan makinelerde de kullanılmaya devam eder.:4
Programın çalışırken ayırdığı belleğin yanlış yönetilmesi, yazılım hatalarının ve güvenlik açıklarının yaygın nedenlerindendir. Arpaci-Dusseau ve Arpaci-Dusseau, C dilindeki malloc() ve free() gibi arayüzlerle açıkça yönetilen yığın belleğinin birçok hatanın kaynağı olduğunu belirtir.:2
Bellekte saklanan bitler çeşitli nedenlerle bozulabilir. Bianca Schroeder, Eduardo Pinheiro ve Wolf-Dietrich Weber'in sınıflandırmasına göre yumuşak hatalar (İngilizce: soft error) bitleri rastgele bozar ama kalıcı fiziksel hasar bırakmaz; kalıcı hatalar (İngilizce: hard error) ise fiziksel bir kusurdan doğar ve bitleri yinelenebilir biçimde bozar. Bellek hataları elektriksel ya da manyetik girişimden, örneğin kozmik ışınlardan, donanım sorunlarından ya da başka bileşenlerden gelen bozulmalardan doğabilir.:193 JEDEC yumuşak hatayı, aygıtın olağan işlevlerinden biri ya da birkaçı yerine getirilerek düzeltilebilen hatalı bir sinyal olarak tanımlar; hataya "yumuşak" denmesinin nedeni, düzeltmeden sonra aygıtın yine olağan biçimde çalışmasıdır. Schroeder ve arkadaşları, DRAM'lerde alfa parçacıklarının yol açtığı yumuşak hataları açıklayan ilk çalışmalardan birinin T. C. May ile M. H. Woods'a ait olduğunu belirtir.:202
Richard Hamming 1950'de, çok sayıda işlemi tek bir hata olmadan yapması gereken büyük hesap makinelerini düşünerek tek hatayı algılayan, tek hatayı düzelten ve tek hatayı düzeltip çift hatayı algılayan kodlar tanımladı.:147, 149 Bunların en yalını, veriye bir sayısı çift olacak biçimde eklenen tek bir denetim bitidir; herhangi bir tek bitlik hata bir sayısını tek yapacağı için algılanır. Hamming bu türden denetime eşlik denetimi (İngilizce: parity check) adını verir.:149-150 Bu amaçla eklenen bite eşlik biti denir. Bellek sistemlerinde yaygın olan, her bellek sözcüğüne hata kodu taşıyan ek bitler katılmasıdır. Sıradan sunucularda kullanılan kodlar SECDED türündedir.:194 Hamming'in tanımladığı bu kodlar tek bitlik hataları düzeltir, çift bitlik hataları ise yalnızca algılar.:153-154 Google'ın sunucu filosunda 2006-2008 arasında toplanan verilere göre DIMM'lerin yüzde 8'inden fazlası yılda en az bir hata görür ve hatalara yumuşak hatalar değil kalıcı hatalar egemendir.:193 Aynı çalışmada yan yana birden çok biti düzeltebilen chipkill kodlarını kullanan platformlarda düzeltilemeyen hata oranı, SECDED kullananlara göre 4 ile 10 kat daha düşük bulunmuştur.:203 DDR5 kuşağıyla birlikte hata düzeltme, bellek yongasının içine de taşınmıştır.:5 Yonga içindeki bu kod, 128 veri bitine 8 eşlik biti ekleyen ve yalnızca tek bitlik hataları düzelten bir koddur; okunan veriyi yongadan çıkmadan önce düzelterek sistem düzeyindeki hata düzeltmenin yükünü azaltır.:4 Bellek denetleyicisiyle yonga arasındaki kanalda oluşan hataları kapsamadığı için sistem düzeyindeki hata düzeltmenin yerini tutmaz, onunla birlikte kullanılır.
Kişisel bilgisayarlarda ve sunucularda DRAM yongaları, anakarttaki yuvalara takılan bellek modülleri üzerinde kullanılır. SDRAM ve DDR modüllerinin veri yolu 64 bit genişliğindedir; DDR modülleri, yolun saat sıklığıyla iki kenarlı aktarımın ve 8 baytlık genişliğin çarpımından elde edilen aktarım hızıyla adlandırılır. DDR2-667 modülleri bu yolla PC2-5300 diye adlandırılır.:8, 10-11 Saat dönemi 3 ns, saat sıklığı yaklaşık 333 MHz olan 64 bitlik bir DDR2-667 modülünün en yüksek kuramsal aktarım hızı saniyede yaklaşık 5.333 MB'tır. JEDEC'in 2020'de yayımladığı DDR5 standardı, DDR4'e göre iki kat bant genişliği öngörür; standart yayımlandığında DDR5'in 4,8 Gbps ile, DDR4'ün son hızı olan 3,2 Gbps'den yüzde 50 yüksek bir hızla piyasaya çıkması bekleniyordu.
Bellek başarımı iki temel ölçüyle anlatılır: gecikme (İngilizce: latency) ve bant genişliği (İngilizce: bandwidth). Cuppu ve arkadaşları DRAM mimarilerindeki yenilikleri bellek gecikmesi ve bant genişliği sorunlarına etkileriyle değerlendirmiş ve dönemin gelişmiş DRAM teknolojilerinin bant genişliği sorununa çözüm getirdiğini, gecikme sorununa ise getirmediğini bulmuştur.:1133 SDRAM'de satır ve sütun seçildikten sonra yonganın veriyi aktarmaya hazırlanması için geçen süreye CAS gecikmesi (İngilizce: CAS latency, CL) denir. Veri yolunda belirtilen aktarım hızı ise art arda aktarımdaki en yüksek hızdır ve sürekli olarak elde edilemez.:8 Drepper'ın 2007'de belirttiğine göre 1990'ların başından beri işlemci çekirdeğinin saat sıklığı hızla artmış, bellek yolunun sıklığı ve RAM yongalarının başarımı ise aynı oranda artmamıştır.:13 Sonraki yıllarda işlemcilerin saat sıklığındaki artış sınırlı kalmış, başarım kazanımları çok çekirdekli mimarilere geçişle sürmüştür; Micron'a göre çekirdek sayısı arttıkça çekirdek başına düşen bellek bant genişliği de sınırlanmaktadır.:2 Bu açığın sonuçları bellek duvarı adıyla anılır.