Bir 64bit makine bir kerede ne kadar bellek adresleyebilir?


32

Bellek byte adreslenebilir ise, olmamalıdır

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Genel bir Google araması en fazla 8GB veya 16GB diyor.

Bu nasıl doğru? Ayrıca, İşletim Sistemine nasıl bağlı?


İş makinem 12 GB olduğundan ve hepsine hitap edebildiğinden, 8 GB'lık bir miktar video RAM'in yanı sıra tüm donanıma ve tüm sanal belleğime para cezası verildiği için 8 GB açık bir şekilde duvarın dışına çıkıyor.

Newegg, bir bilgisayar için tasarlanmış 32GB'lık bir paket ram satıyor. 32-bit, 3.2GB destekli ve 128-bit, milyonlarca terabaytı destekleyecektir, bu yüzden 64-bit'in 32-bit'in iki katından fazla olduğunu düşünüyorum.
tkbx

Yanıtlar:


53

Birden fazla harmanlayıcı faktör var.

Her şeyden önce, asla 2, 64 byte (16 exibyte) fiziksel RAM olan bir sistemi bir araya getiremezsiniz.

İkincisi, bir mimarinin 64-bit işaretçiler kullanması, bu işaretçilerin tüm bitlerinin gerçekten kullanıldığı anlamına gelmez. Özellikle, mevcut x86-64 CPU'lar (AMD64 ve Intel'in mevcut 64-bit yongaları) aslında 48-bit adres satırları (AMD64) ve 42-bit adres satırları (Intel) kullanır (bkz. Http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), teorik olarak 256 terabayt fiziksel RAM'e izin verir.

İkincisi, anakartların hem fiziksel hem de mantıksal olarak ne kadar RAM destekleyebilecekleri konusunda kendi sınırları vardır. Fiziksel olarak, RAM için yalnızca bu kadar çok alan olacak. "Mantıksal" sınırlar gelince, bunun neden hala x86-64 (işlemcinin kendisine işlemden çok zaman geçtiği bellek denetleyicisi) için böyle bir durum olduğunu tam olarak anlamıyorum, ama işte orada. Muhtemelen tasarım ve imalatta birkaç kuruş tasarruf etmek için adres hatlarında köşeler kesiliyor.

Üçüncüsü, bir işletim sisteminin, ne kadar RAM'i verimli bir şekilde destekleyebileceği konusunda iç sınırlamaları olabilir. Kısmen, bu aslında orada olmayan hafızanın kullanımının izini sürmek için aşırı büyük veri yapılarına ihtiyaç duymamaktır. Son kontrol ettiğimde Linux x86-64'te işlem başına 128 TB sanal adres alanına izin veriyor ve 64 TB fiziksel RAM'i teorik olarak destekliyor.

Dördüncüsü, bazı işletim sistemleri (örn. Windows), daha fazla RAM istiyorlarsa kullanıcıların daha pahalı sürümlere yükseltmelerini sağlamak için RAM'in taktik olarak ne kadar kullanılabileceğini yapay olarak sınırlayacaktır (Windows 7 Starter 2GB ile sınırlıdır, Home Basic ile 8, Home Premium 16 ve Professional ve üstü 192GB’dır ve Windows Server sürümleri çok daha yüksek sınırlara sahiptir).


1
Bitlik mimarilerde bir adres kaydında tipik olarak << bit sayısının bulunduğu fiziksel adres satırlarından bahsetmek için +1
Paul R

3
42 bitlik adres satırları için bir kaynak (adsız düzenlemeyle eklenir) takdir edilecektir. O zamana kadar şahsen bu bilgiyi güvenilir bulmuyorum.
Bob

21
Asla asla Deme. En son duyduğum Moore Yasası hala yürürlüktedir, bu nedenle 16 exabyte RAM'li sistemler yaşamlarımızda iyi görünebilir. O zaman hepimiz 128 bit işletim sistemlerine
Michael Hampton

Fiziksel adresler, ayrıca TLB'lerde fiziksel adresler için sağlanan bit sayısı (ve fiziksel adres etiketleme verilen önbellek etiketlerinin boyutu) ve sayfa tablosu girişlerindeki fiziksel adresler için kullanılabilen bit sayısı ile sınırlıdır (eğer 4KiB sayfalarla 52 bit fiziksel adres alanını destekleyen x86-64'te olduğu gibi mimari). İkincisi daha sağlam (mimari olmayan uygulamaya dayalı) bir sınırdır, ancak mimariler bile değiştirilebilir.
Paul A. Clayton

2
@MichaelHampton - NecroReply, ancak dayanamadı :) Her 2 yılda bir (son trendlerden daha hızlı olan) iki katına çıkmak 16GB'tan 16EB'ye ulaşmak 60 yıl alacaktı. O zamana kadar silikon transistörlerle ilgili "yasaların" herhangi bir alaka düzeyine sahip olduğundan şüpheliyim;)
MatBailie

9

MS Windows kullanıyorsanız, maksimum bellek işletim sistemi tarafından sınırlandırılır.

Windows 7 için, maksimum değerler:

  • Başlangıç: 2GB
  • Ev Temel: 8GB
  • Ev Premium: 16GB
  • Profesyonel: 192GB
  • Kurumsal: 192GB
  • Nihai: 192GB

Windows Server 2008, giriş seviyesi için 8 GB ile hattın en üstünde 2 TB arasında değişmektedir.

Tam bir liste için bkz. Http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx .

Bu sınırlar öncelikle pazarlama sebepleri içindir. Daha ucuz sürümleri kısıtlayarak üst uç sürümleri (nispeten) daha çekici hale getirirler.

Bence son Linux, 32TB RAM ile çalışmakta, ancak her donanım bunu desteklememektedir.


4
Bunlar gerçekten teknik sınırlar değil. Bunlar ticari nedenlerle getirilen yapay sınırlardır.
kasperd

8

64 bitlik bir makinenin adreslenebilen en fazla 2 64 adres alabilmesi gerekir (son birkaç on yıl boyunca tasarlanan mimarilerde, adreslenebilir birimler kaçınılmaz şekilde bayt, aka oktet şeklindedir). Bir "gigabayt" ı, 2 30 adreslenebilir birim olarak tanımlarsanız , evet, 2 34 gigabayt, aynı sayımı ifade etmenin başka bir yolu olacaktır.

Hangi Google araması, bu saçma minik sonuçları üretti? Belki de bulduğun sayfa, belli bir modelin makul fiyatlı ucuz kutularından satın alabileceğiniz RAM miktarlarından bahsediyordu - kesinlikle çok pahalı olmaktan uzak kutularda bile (elbette adreslenebilir) .

İşletim sistemleri kesinlikle adreslenebilir bellek miktarını sınırlayabilir ve sınırlayabilir (örneğin, sayfa tablolarının boyutunu sınırlandırarak, belki de işletim sistemini yeniden derleyerek veya başka bir şekilde yeniden yapılandırarak ayarlanabilen bazı yapılandırılabilir maksimum değerlerle sınırlandırarak yapabilirler) bazı odaklanmadan daha spesifik spesifik işletim grubu).


Neden 2 ^ 30 adreslenebilir birim 1 GB? Her adres birimi 1 bit saklar, yani 2 ^ 30 adres birimi, 0.134217728 gigabayt olan bu kadar çok bit saklar. Neyi kaçırıyorum?
Darshan Chaudhary

1
@DarshanChaudhary 2 ^ 30, farklı adreslerin sayısıdır. Her adres bir bit değil, bir bayt hafızayı tanımlar.
David Moles

3

İstediğiniz kadar RAM'e sahip olabilirsiniz, ancak bunların tümü işletim sistemine ve çalıştırdığınız uygulamaya - bir başkasının belirtmiş olduğu gibi bağlıdır.

Sabit diskiniz gibi diğer donanımlar için de yoğun olan aç bir CPU yoğun uygulaması kullanıyorsanız, tamamen ayrı bir makinede ikinci bir CPU'yu düşünebilirsiniz. Örneğin, her iki ayrı makinede bir veritabanı uygulaması ve e-posta sunucusu çalıştırmak.

Ne kadar hafızanız olduğu önemli değil - bugünün piyasasında tüm sistem durma noktasına gelecektir. Tekli CPU'lar çoklu görevi beklediğiniz gibi idare edemiyorlar.

Belleği yüklü olan tek bir makine için, aynı sistemde çalışan birden fazla uygulamanız varsa, takılı bellek miktarına bakılmaksızın, bu daha iyi bir işlem değildir. Bu, büyük şirketlerin daha fazla belleği ele almak için yalnızca 64bit mimarisini kullanmasının yanı sıra, tüm lotu iki veya daha fazla sunucu ile dengelemelerinin nedenidir.

Performans konusunda gerçekten ciddi iseniz, o zaman kesinlikle 64 bit gidin, ancak ikinci bir sunucuyla yük dengelemeyi de göz önünde bulundurun.

Bu yolda bulundum - maksimum RAM ile tek bir makine yapılandırıyordum. Ancak birden fazla uygulamayı çalıştırırken hala bir köpek gibi çalışır. Bunun sebebi CPU'nun sadece üstesinden gelememesidir.

Tavsiyem paranın karşılığını tasarruf etmek ve ikinci bir sunucu satın almak ve sonra ikisini yüklemek. Çok daha basit bir artı - bir kez elinize geçtikten sonra - daha fazla işlem gücüne ve hızına ihtiyacınız olduğunda genişletmek kolaydır.

Ayrıca, bir 64bit mimari makine 32bit yazılımla başa çıkabilir, ancak bir 32 bit makine ile işletim sistemi de dahil olmak üzere sadece 32 bit veya daha az uygulama ile sınırlandırılmış olursunuz.

Hem donanım hem de yazılım açısından tüm pazar 64bit gittiğinden, uzun vadede 64bit gitmenizi öneririm, ancak tek bir makineye kova dolusu bellekle ezme fikrini unutun çünkü hayal kırıklığına uğrayacaksınız.

Eğer "yük dengeleme" nin ne olduğundan emin değilseniz google.


2

Ben bir exabyte "EB" den daha fazlasını alabilir düşünüyorum.

Bu 32-bit işlemciye 2 32 B = 4 GB alabilir, ancak en fazla 3 GB alır çünkü "ters adresler için 1 GB'dir"

Bu, 64 bit işlemcinin 2 64 B = 16 EB alabileceği anlamına gelir , ancak ters çevrilmiş olarak kullanılan adreslerin nasıl kullanıldığını bilmiyorum. 64-bit işlemcinin 1 EB'den fazlasını aldığını söyleyebiliriz. ve bu spesifikasyon, PC’nin kullandığı işletim sistemine veya modeline bağlı değildir.


1
Uygulamada, 64 bit işlemciler genellikle 256 terabayt bellek için yeterli olan 48 bit adres alanına sahiptir.
465544

Sana ortalama düşünüyorum exbibyte değil exabayt .
martineau

1

Örnek olarak bir Intel veya AMD işlemciyi ele alarak, hem fiziksel hem de sanal belleğin birkaç sınırlaması vardır. Diğer insanlar, donanım pin-out ve anakart sınırlamaları hakkında konuştular, fakat aynı zamanda iç sınırlamalar da var.

MMU’daki bir terminal sayfası tablosu girişi 52 önemli bit adres içerir ve teorik olarak 4096 TB fiziksel RAM’i haritalayabilir.

MMU, üst seviyesi 512 × 512 GB girişlerden oluşan 4 seviyeli bir sayfa tablosu uygular. Yani sanal bellek 256 TB ile sınırlıdır.

Bildiğim kadarıyla, tüm 64 bit işletim sistemleri, süper kullanışlı olan bir DMAP (doğrudan harita) uyguluyor. Bununla birlikte, sanal bellek 256 TB ile sınırlı olduğundan, DMAP'ın boyutu da sınırlıdır. Tipik olarak 128 TB, kullanıcı modu için ve 128 Çekirdek için ayrılmıştır. Çekirdek için bu 128 TB'nin yarısı kadarı DMAP için ayrılabilir. DMAP’ın kullanışlılığı nedeniyle, işletim sistemleri genellikle fiziksel belleği DMAP’ın kullanabileceği ile sınırlar.

Yani çoğu (tümü?) Intel / AMD için 64-bit işletim sistemleri, desteklenen fiziksel belleğin 64 TB civarında olduğu ve genel çekirdek sanal bellek için 64 TB, kullanıcı sanal bellek için 128 TB olduğu sınırlı.

-

CPU içinde, CPU önbellekleri ayrıca depoladıkları fiziksel adres bitlerinin sayısı konusunda da bir sınırlamaya sahiptir, çünkü her ek adres biti önbellek etiketine daha fazla transistör yer. DRAM denetleyici pin sınırlamaları mutlaka son söz değildir, çünkü bellek DMI bağlantıları aracılığıyla da adreslenebilir.

Farklı CPU mimarileri (örneğin, ARM, PowerPC vb.) Farklı sınırlamalara sahip olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.