Bilgisayarımdaki RAM Kaç Bellek Adresi Tutabilir?

Jun 18, 2025
Donanım

Bazı günler bilgi işlem deneyiminin yüzey düzeyine bakmak eğlencelidir ve diğer günlerde doğrudan iç işleyişe dalmak eğlencelidir. Bugün bilgisayar belleğinin yapısına ve bir RAM çubuğuna ne kadar malzeme sığdırabileceğinize bakıyoruz.

Bugünün Soru-Cevap oturumu bize, topluluk odaklı bir Soru-Cevap web siteleri grubu olan Stack Exchange'in bir alt bölümü olan SuperUser'ın izniyle geliyor.

Soru

SuperUser okuyucu Johan Smohan, işlemci türü ve bellek boyutunun birlikte nasıl çalışarak toplam adres sayısı elde ettiğiyle boğuşuyor. O yazıyor:

32 bit işlemci ve 1 GB ram ile kaç tane bellek adresi, 64 bit işlemci ile kaç tane bellek adresi alabiliriz?

Sanırım bunun gibi bir şey:

Bellek adreslerinin sayısını elde etmek için 1GB ram, 32 bit 4 bit (?)

Wikipedia'da 1 bellek adresinin 32 bit genişliğinde veya 4 sekizli (1 sekizli = 8 bit) olduğunu okudum, 1 bellek adresi veya 1 tamsayının 64 bit genişliğinde veya 8 sekizli olduğu 64 bitlik bir işlemciye kıyasla. Ama ben de doğru anladığımı bilmiyorum.

Meraklı bir ineği geceleri uyanık tutabilecek türden sorular bunlardır. Johan’ın varsayımsal sistemlerinin her birinin altında kaç adres mevcuttur?

Cevap

SuperUser katılımcısı Gronostaj, RAM'in nasıl bölündüğü ve kullanıldığı hakkında bazı bilgiler sunuyor:

Kısa cevap: Mevcut adreslerin sayısı şunlardan küçük olanına eşittir:

  • Bayt cinsinden bellek boyutu
  • CPU'nun makine kelimesine kaydedilebilecek en büyük işaretsiz tam sayı

Yukarıdakilerin uzun cevabı ve açıklaması:

Hafıza baytlardan (B) oluşur. Her bayt 8 bitten (b) oluşur.

1 B = 8 b

1 GB RAM aslında 1 GiB'dir (gigabayt değil gibibayt). Fark şudur:

1 GB = 10 ^ 9 B = 1000000000 B
1 GiB = 2 ^ 30 B = 1.073 741824 B

CPU makine kelimesi ne kadar büyük olursa olsun, her bellek baytının kendi adresi vardır. Örneğin. Intel 8086 CPU 16 bitti ve belleği bayt olarak adresliyordu, modern 32 bit ve 64 bit CPU'lar da öyle. İlk sınırın nedeni budur - bellek baytından daha fazla adresiniz olamaz.

Bellek adresi, CPU'nun aradığı adrese ulaşmak için belleğin başından itibaren atlaması gereken bayt sayısıdır.

  • İlk bayta erişmek için 0 baytı atlaması gerekir, bu nedenle ilk baytın adresi 0'dır.
  • İkinci bayta erişmek için 1 baytı atlaması gerekir, yani adresi 1'dir.
  • (ve benzeri…)
  • Son bayta erişmek için CPU 1073741823 baytı atlar, dolayısıyla adresi 1073741823'tür.

Şimdi 32 bitin gerçekte ne anlama geldiğini bilmelisiniz. Daha önce de bahsettiğim gibi, bu bir makine kelimesi boyutundadır.

Makine kelimesi, CPU'nun sayıları tutmak için kullandığı bellek miktarıdır (RAM, önbellek veya dahili kayıtlarda). 32 bit CPU, sayıları tutmak için 32 bit (4 bayt) kullanır. Bellek adresleri de sayılardır, bu nedenle 32 bitlik bir CPU'da bellek adresi 32 bitten oluşur.

Şimdi şunu düşünün: eğer bir bitiniz varsa, ona iki değer kaydedebilirsiniz: 0 veya 1. Bir bit daha ekleyin ve dört değeriniz olur: 0, 1, 2, 3. Üç bitte sekiz değer kaydedebilirsiniz : 0, 1, 2… 6, 7. Bu aslında bir ikili sistemdir ve şu şekilde çalışır:

İkili Ondalık
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

Tam olarak normal toplama gibi çalışır, ancak maksimum rakam 9 değil 1'dir. Ondalık 0 0000 , sonra 1 ekler ve 0001 , bir tane daha ekleyin ve 0010 . Burada olan ondalık sayıya benzer 09 ve bir ekleme: 9'u 0'a değiştirir ve sonraki rakamı artırırsınız.

Yukarıdaki örnekten, her zaman sabit bit sayısı olan bir sayı içinde tutabileceğiniz maksimum bir değer olduğunu görebilirsiniz - çünkü tüm bitler 1 olduğunda ve değeri 1 artırmaya çalıştığınızda, tüm bitler 0 olur ve böylece numara. Buna tamsayı taşması denir ve hem kullanıcılar hem de geliştiriciler için pek çok hoş olmayan soruna neden olur.

11111111 = 255
+ 1
-----------
  100000000 = 0 (burada 9 bit, yani 1 kırpılır)
  • 1 bit için en büyük değer 1'dir,
  • 2 bit - 3,
  • 3 bit - 7,
  • 4 bit - 15

Olası en büyük sayı her zaman 2 ^ N-1'dir; burada N, bit sayısıdır. Daha önce de söylediğim gibi, hafıza adresi bir sayıdır ve aynı zamanda bir maksimum değere sahiptir. Bu nedenle makine kelimesi boyutu aynı zamanda mevcut bellek adreslerinin sayısı için bir sınırdır - bazen CPU'nuz daha fazla belleği ele alacak kadar büyük sayıları işleyemez.

Yani 32 bit üzerinde 0'dan 2 ^ 32-1'e kadar sayıları tutabilirsiniz ve bu 4 294 967 295'tir. Bu 1 GB RAM'deki en büyük adresten daha fazladır, bu nedenle özel durumunuzda RAM miktarı sınırlayıcı faktör olacaktır.

32 bit CPU için RAM sınırı teorik olarak 4 GB (2 ^ 32) ve 64 bit CPU için 16 EB'dir (eksabayt, 1 EB = 2 ^ 30 GB). Başka bir deyişle, 64-bit CPU tüm İnternet'i adresleyebilir… 200 kez;) ( WolframAlpha ).

Bununla birlikte, gerçek hayattaki işletim sistemlerinde 32 bit CPU'lar yaklaşık 3 GiB RAM'i adresleyebilir. Bunun nedeni işletim sisteminin dahili mimarisidir - bazı adresler başka amaçlar için ayrılmıştır. Bu sözde hakkında daha fazla bilgi edinebilirsiniz Wikipedia'da 3 GB bariyer . Bu sınırı şununla kaldırabilirsiniz: Fiziksel Adres Uzantısı .

Hafıza adreslemeden bahsetmişken, bahsetmem gereken birkaç şey var: sanal bellek , segmentasyon ve çağrı .

Sanal bellek

@Daniel R Hicks'in başka bir cevapta belirttiği gibi, işletim sistemleri sanal bellek kullanır. Bunun anlamı, uygulamaların gerçekte gerçek bellek adreslerinde değil, işletim sistemi tarafından sağlananlarda çalıştığıdır.

Bu teknik, işletim sisteminin bazı verileri RAM'den sözde Pagefile (Windows) veya Swap (* NIX) olarak adlandırılan bir dosyaya taşımasına izin verir. HDD, RAM'den birkaç kat daha yavaştır, ancak nadiren erişilen veriler için ciddi bir sorun değildir ve OS'nin uygulamalara gerçekte yüklediğinizden daha fazla RAM sağlamasına izin verir.

Çağrı

Şimdiye kadar bahsettiğimiz şeye düz adresleme şeması deniyor.

Sayfalama, normalde düz modeldeki bir makine kelimesiyle yapabileceğinizden daha fazla belleği adreslemenizi sağlayan alternatif bir adresleme şemasıdır.

4 harfli kelimelerle dolu bir kitap hayal edin. Her sayfada 1024 numara olduğunu varsayalım. Bir numaraya hitap etmek için iki şeyi bilmeniz gerekir:

  • Söz konusu kelimenin yazdırıldığı sayfa sayısı.
  • Aradığınız kelime o sayfadaki hangi kelime.

İşte tam da modern x86 CPU'ların belleği işleme şekli. 4 KiB sayfasına (her biri 1024 makine kelimesi) bölünmüştür ve bu sayfaların numaraları vardır. (aslında sayfalar 4 MiB büyük veya 2 MiB olabilir. PAE ). Hafıza hücresini adreslemek istediğinizde, o sayfadaki sayfa numarasına ve adrese ihtiyacınız vardır. Her bellek hücresine, segmentasyon için geçerli olmayacak şekilde tam olarak bir çift sayı ile başvurulduğunu unutmayın.

Segmentasyon

Bu, sayfalandırmaya oldukça benziyor. Intel 8086'da sadece bir örnek vermek için kullanıldı. Adres gruplarına artık sayfalar değil bellek bölümleri deniyor. Aradaki fark, segmentlerin üst üste gelebilmesi ve çok fazla örtüşmesidir. Örneğin 8086'da çoğu bellek hücresi 4096 farklı segmentte mevcuttu.

Bir örnek:

Diyelim ki, 255'e eşit olan 4. bayt dışında tümü sıfır tutan 8 bayt belleğimiz var.

Düz bellek modeli için örnek:

_____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

Sayfalanmış bellek için örnek 4 bayt sayfalarla:

SAYFA0
 _____
| 0 |
| 0 |
| 0 | SAYFA 1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

Parçalı bellek için örnek 4 baytlık segmentler 1 kaydırılmış:

SEG 0
 _____ SEG 1
| 0 | _____ SEG 2
| 0 | | 0 | _____ SEG 3
| 0 | | 0 | | 0 | _____ SEG 4
| 255 | | 255 | | 255 | | 255 | _____ SEG 5
 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6
         ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7
                 ----- | 0 | | 0 | | 0 | | 0 | _____
                         ----- | 0 | | 0 | | 0 | | 0 |
                                 ----- ----- ----- -----

Gördüğünüz gibi, 4. bayt dört şekilde adreslenebilir: (0'dan itibaren)

  • Segment 0, ofset 3
  • Segment 1, ofset 2
  • Segment 2, ofset 1
  • Segment 3, ofset 0

Her zaman aynı hafıza hücresidir.

Gerçek hayattaki uygulamalarda, segmentler 1 bayttan fazla kaydırılır (8086 için 16 bayttı).

Segmentasyonla ilgili kötü olan şey, karmaşık olmasıdır (ama bunu zaten biliyorsunuzdur;) İyi olan, modüler programlar oluşturmak için bazı akıllı teknikler kullanabilmenizdir.

Örneğin, bir segmente bir modül yükleyebilir, ardından segmentin gerçekte olduğundan daha küçük olduğunu varsayabilir (modülü tutacak kadar küçük), ardından bu sözde küçük olanla çakışmayan ilk segmenti seçip sonrakini yükleyebilirsiniz. modül vb. Temel olarak, bu şekilde elde ettiğiniz şey değişken boyutlu sayfalardır.


Açıklamaya eklemek istediğiniz bir şey var mı? Yorumlarda sesi kapatın. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla yanıt okumak ister misiniz? Tartışma dizisinin tamamına buradan göz atın .

How Many Memory Addresses Can We Get With A 32-bit Processor And 1gb Ram? (5 Solutions!!)

Memory Addresses, Computer Science Lecture | Sabaq.pk |

Q. 7.8: (a) How Many 32K * 8 RAM Chips Are Needed To Provide A Memory Capacity Of 256Kbytes? (b) How

How Computer Memory Works - Kanawat Senanan

Assembly Program - Obtaining Memory Addresses

What Is Virtual Memory? – Gary Explains

The Fetch-Execute Cycle: What's Your Computer Actually Doing?

256KB Memory Design Using 64KB Ram Blocks-Microprocessors Example

How Much RAM Do You ACTUALLY Need? (2020)

Registers And RAM: Crash Course Computer Science #6

Lesson 9.3 : Pointers Containing Memory Addresses Of Multi Byte Variables


Donanım - En Popüler Makaleler

Hoparlörler ve Kulaklıklar İçin Hz-KHz Aralığı Ne Anlama Geliyor?

Donanım Sep 5, 2025

Yüksek kaliteli kulaklıklara veya hoparlörlere baktıysanız, teknik özellikler sayfasında "20Hz-20KHz" gibi bir şey okuyan sayılar fark etmişsinizdir. Bu sayılar ne anlama..


Automatic Pro'yu Alexa'ya Bağlama ve Arabanızla Konuşma

Donanım Jun 20, 2025

BAĞLANMAMIŞ İÇERİK Çoğumuz yok kendi kendine giden arabalar henüz, ama yine de gelecekte yaşayabiliriz. Bir ile Otomatik Pro OBD-II adaptörü ..


Bilgisayarım Neden Erken Uyanıyor?

Donanım Jul 4, 2025

Bilgisayarınızı uyku moduna almak, enerjiden tasarruf etmenin harika bir yoludur ve yine de işinize hızla devam edebilmenizi sağlar. Peki PC'niz sürekli kendi kendin..


Kullanmadığım Zaman Chromecast'imi Çıkarmalı mıyım?

Donanım Sep 29, 2025

Yeni cihazlar yeni sorulara yol açıyor ve Chromecast'in (ve diğer akışlı HDMI çubuklarının) yükselişi, birkaç kişiyi kullanmadıkları zaman fişten çekip çekmemeleri..


Bir Sabit Disk Yalnızca Zaten Döndüğünde Tanınırsa Ne Yaparsınız?

Donanım Sep 3, 2025

BAĞLANMAMIŞ İÇERİK Bilgisayarınız sabit sürücünüzü yalnızca zamanın bir kısmını tanıdığında ne yaparsınız? Bu sadece sabit sürücünün arızalanması mese..


Kablosuz Yönlendirici Sorunları Nasıl Giderilir

Donanım Jul 30, 2025

İnternet bağlantınız veya Wi-Fi ile ilgili bir sorun mu yaşıyorsunuz? Sorun ne olursa olsun - kesintili bir bağlantıdan Wi-Fi sorunlarına veya hatta İnternet'e hiç erişi..


Hazırda Bekletme Neden Hala Kullanılıyor?

Donanım Oct 15, 2025

BAĞLANMAMIŞ İÇERİK Hızlı katı hal sabit sürücülerin artan yaygınlığıyla, neden hala sistem hazırda bekletme modumuz var? Bugünün Soru-Cevap oturumu..


Daha Verimli Yazdırarak Nakit, Mürekkep ve Kağıt Tasarrufu Yapma

Donanım Sep 16, 2025

BAĞLANMAMIŞ İÇERİK Yazıcınızın maruz kaldığı maliyetler sizi şaşırttıysa - kim değildir? - o zaman bu kılavuz tam size göre. Baskı rutininizde ve baskı ayarla..


Kategoriler