RAM olmadan bir bilgisayar mı çalıştırıyorsunuz? [çiftleme]


14

CPU getirme zamanı hakkında okuyordum , burada CPU'ların sabit diske erişmeye kıyasla RAM'den verilere erişmek için çok daha az zaman aldıklarını ve RAM'in programın bilgilerini ve verilerini depolamak için mevcut olduğunu buldum.

Sonra sadece sabit disk kullandığımızda RAM yokken ne olacağını merak ettim.



1
@Cornelius Cevabınız için teşekkürler i check it out :)
akash ujjwal

12
Olan şey bazı bip seslerinden sonra ekran kararır.
arch-abit

1
Sorum şu: En azından bir grafik kartının çalışıp çalışmadığını test edebilir miyim? Video var mı yoksa monitör minimal mi çalışıyor?
marshal zanaat

Yanıtlar:


27

Bir noktada bu, "RAM" olarak neyin bile sayıldığı sorusuna girer. Ayrı RAM yongaları olmadan küçük işletim sistemlerini çalıştırmak için çok sayıda çipte belleğe sahip birçok CPU ve mikrodenetleyici vardır. Aslında, bu aslında gömülü sistemler dünyasında nispeten yaygındır. Yani, sadece ayrı bir RAM yongalarının takılı olmamasından bahsediyorsanız, evet, bunu birçok yerleşik yonga ile, özellikle de gömülü dünya için tasarlanmış olanlarla yapabilirsiniz. İş yerinde kendim yaptım. Bununla birlikte, adreslenebilir yonga bellek ve ayrı RAM yongaları arasındaki tek gerçek fark sadece konum (ve açıkçası, gecikme) olduğundan, yonga üzerindeki hafızanın kendisine RAM olduğunu düşünmek kesinlikle mantıklıdır. Bunu RAM olarak sayıyorsanız, akım sayısı,

Normal bir PC'ye atıfta bulunuyorsanız, hayır, ayrı RAM çubukları takılı olmadan çalıştıramazsınız, ancak bunun nedeni yalnızca BIOS'un takılı RAM olmadan önyükleme yapmayacak şekilde tasarlanmasıdır ( Modern PC işletim sistemleri, RAM'in çalışmasını gerektirir, çünkü özellikle x86 makineleri genellikle yongadaki belleği doğrudan ele almanıza izin vermez; yalnızca önbellek olarak kullanılır.)

Son olarak, Zeiss'in dediği gibi, birkaç kayıt dışında bir bilgisayarı RAM olmadan çalışacak şekilde tasarlayamamanın teorik bir nedeni yoktur. RAM yalnızca çipli bellekten daha ucuz ve disklerden daha hızlı olduğu için var. Modern bilgisayarlar, büyük fakat yavaştan çok hızlı, ancak küçük bir anı hiyerarşisine sahiptir. Normal hiyerarşi şöyle bir şeydir:

  • Kayıtlar - Çok hızlı (doğrudan CPU talimatları ile çalıştırılabilir, genellikle ek gecikme olmadan), ancak genellikle çok küçük (64 bit x86 işlemci çekirdeği, örneğin her biri bir 64 bitlik tek bir sayıdır.) Yazma boyutları genellikle küçüktür, çünkü yazmaçlar bayt başına çok pahalıdır.
  • CPU Önbellekleri - Hala çok hızlı (genellikle 1-2 döngü gecikme süresi) ve kayıtlardan önemli ölçüde daha büyük, ancak normal DRAM'den çok daha küçük (ve çok daha hızlı). CPU önbelleği, bayt başına DRAM'den çok daha pahalıdır, bu yüzden genellikle çok daha küçüktür. Ayrıca, çoğu CPU aslında önbellek içinde bile hiyerarşilere sahiptir. Daha büyük ve daha yavaş önbelleklere (L3.) Ek olarak genellikle daha küçük, daha hızlı önbelleklere (L1 ve L2) sahiptirler.
  • DRAM (çoğu insanın 'RAM' olarak düşündüğü şey) - Önbellekten çok daha yavaş (erişim gecikmesi düzinelerce ila yüzlerce saat döngüsü olma eğilimindedir), ancak bayt başına çok daha ucuzdur ve bu nedenle genellikle önbellekten çok daha büyüktür. DRAM yine de disk erişiminden çok daha hızlıdır (genellikle yüzlerce ila binlerce kez daha hızlıdır).
  • Diskler - Bunlar yine DRAM'den çok daha yavaştır, ancak genellikle bayt başına çok daha ucuzdur ve bu nedenle çok daha büyüktür. Ayrıca, diskler genellikle geçici değildir, yani bir işlem sona erdikten sonra bile (ve bilgisayar yeniden başlatıldıktan sonra) verilerin kaydedilmesine izin verir.

Bellek hiyerarşilerinin tüm nedeninin sadece ekonomi olduğunu unutmayın. Bir CPU ölümünde terabayt uçucu olmayan kayıtlara sahip olamamanın teorik bir nedeni (en azından bilgisayar bilimi dahilinde değil) yoktur. Sorun şu ki, inşa etmek delicesine zor ve pahalı olacak. Küçük miktarlarda çok pahalı bellekten büyük miktarlarda ucuz belleğe kadar hiyerarşilere sahip olmak, yüksek hızları makul maliyetlerle korumamızı sağlar.


Şimdi son olarak ihtiyacım olanı alıyorum. Thank you very much :)
akash ujjwal

Aslında, bilgisayarların RAM olmadan önyükleme yapmamasının nedeni BIOS'tur, BIOS kodu RAM'de bir yer değiştirme adresi bulamazsa iptal eder. Duyacağınız tek şey, güç kaynağının uğultusu ve fanların ve belki de dönen disklerin gürültüsüdür - ancak bilgisayar temelde beyin ölüdür. CPU hiçbir zaman bu işi yapamaz. Yani evet, RAM oldukça önemli.
arch-abit

@ arch-abit evet doğru, ama RAM bir bilgisayarı çalıştırmak için gerekli bileşen mi?
akash ujjwal

2
@Reirab'ın söylediklerine ek olarak, talimatları yürütme anlamında DRAM olmadan bir 'PC' çalıştırmak mümkündür - bu, DRAM denetleyicisi başlatılmadan önce sistemin çalıştığı moddur (BIOS / EFI / Coreboot vb. Tarafından yapılır ). Ancak, çoğu bileşen muhtemelen DMA kullandığından faydalı bir şey yapabilmeniz pek olası değildir .
Maciej Piechotka

1
32 bit x86 cpu kayıtları 64 değil sadece 32 bittir ve 64 bit x86 cpus 8 yerine 32 bittir.
psusi

23

Olacağını teorik olarak aslında Conway Yaşam uygun şekilde geniş / hızlı uygulanmasında oluşturulabilir - (çok az (bir kaç sicil değerinde) veya hiç RAM ile çalışır bir Turing makinesinin tanımı aramak için bir bilgisayar tasarlamak mümkündür simülasyonu).

Tüm gerçek dünya bilgisayarlarının RAM kullanmasının nedeni, ilk olarak, tarihseldir: çekirdek bellek (RAM için prototip, sadece yarı uçucu) manyetik tambur veya disk gibi yığın depolamayı büyük ölçüde önler (zımba kartları ve kağıt banttan sonra gelmesine rağmen - birincisi ilkel haliyle 1801'e kadar uzanır (evet, 19. yüzyılın başlangıcı; Jakarlı tezgahlar, Babbage Diferansiyel Motorları veya Hollerith tablolarından önce bile rastgele karmaşıklık renk desenini otomatik olarak örmek için delikli kartlar kullandı; RAM (çekirdek bellek gibi), elektronik olmak, verileri bir okuma / yazma mekanizmasına sunmak için depolama ortamının fiziksel hareketine bağlı olan herhangi bir cihazdan çok daha hızlıdır.

RAM olmadan çalışan modern bir Windows veya Linux bilgisayarına (gerçek bir Turing makinesine benzer şekilde) sahip bir sistem veya benzer bir karmaşıklık, sadece başlamak için günler ve modern çözünürlüklerde bir grafik arayüzü için ekranı güncellemek için saatler sürebilir. CP / M veya DOS'un ilk sürümleriyle karşılaştırılabilir salt metin bir işletim sisteminin bile ilk komut istemine ulaşması çok uzun zaman alacaktır .


4
Sanırım bazı DSP'leri (dijital sinyal işlemcileri) ve benzer mikroişlemcileri, sürekli veri akışı üzerinde hesaplamalar yaptıkları için RAM olmadan çalışan bilgisayarlar olarak düşünebilirsiniz.
jamesqf

1
Bence bir "sadece sanal bellek" makinesinin yavaşlığına ilişkin tahminleriniz biraz abartılı ama prensipte doğru.
leftaroundabout

1
Disk RAM'den 1.000.000'dan daha yavaş olduğu için, tahminin herhangi bir şey varsa, düşük tarafta olduğunu düşünüyorum.
Dancrumb

2
@Dancrumb 1.000.000 (kez?) Nereden geldiğinden emin değilim. DDR3 SDRAM size 10 GB / sn'lik bir sipariş verebilirken , dönel 7200 rpm'lik bir HDD bile yaklaşık 100 MB / sn'lik (0,1 GB / sn) ardışık sıraya sahip olacaktır. Bu 100 faktörü; kesinlikle önemli, ama 1.000.000 kez çok uzak bir ağlama. RAM, bir HDD'den büyük ölçüde daha iyi performans gösteriyorsa, gecikme süresine sahiptir, ancak bir SSD kullanarak bunu büyük ölçüde hafifletebilirsiniz. DDR3'ün 10 ns bölgesinde gecikme süresi vardır ve hızlı bir SSD'nin 10.000 ns bölgesinde (100k IOPS) gecikme süresi 1000 faktör olabilir; hala 1.000.000'dan çok ağlıyor.
CVn

1
@PeterCordes Düzenlendi, bu yüzden Win / Linux'un RAM olmadan çalışabileceğini iddia etmiyorum.
Zeiss Ikon

10

Bunu yapabilirsiniz, çünkü bir x86 CPU başlatıldığında, L2 önbellek başlangıçta önbellek olarak kullanılmadan önce bir SRAM olur. Böylece RAM'i başlatmak için kendi biosunuzu yazabilir ve CPU içinde L2 / L3 önbellek yerine yalnızca az miktarda SRAM'ı RAM olarak kullanabilirsiniz.

CPU üreticilerinin BIOS yönergelerini okuyun.


4
Bunu belirtmek için +1. Aslında, her x86 sistemi (bilgisayar) "ram kullanmadan" başlar. Bios kodu önce herhangi bir koç olup olmadığını algılar ve hiç olmadığı takdirde bip sesi çıkarır. Bu kod ram olmadan çalışabilir;) (ofc çok fazla ram olmadan yapılamaz, emin olun kayıtlar HDD'yi işlemek ve "ram" olarak kullanmak için yeterli olmaz)
Sebi

10

TÜM modern, standart, genel amaçlı CPU'lar temel olarak şu şekilde çalışır:

  • CPU, adres alanında bir sonraki talimata işaret eden bir kayıt tutar
  • CPU bu adres alanında ne varsa alır ve kaydeden artışlar
  • Talimatın bir hedef adres veya başka bir işlenen gibi ek bilgilere ihtiyacı varsa,
  • CPU talimatı yürütür
  • Komut bir atlama, çağrı, geri dönüş, kesintiden dönüş veya dal ise, bir sonraki talimatı gösteren kaydı değiştirebilir.
  • Tekrar et

CPU bu adres alanında ne varsa alır ve kaydeden artışlar

Bir adres alanında ne yaşayabilir?

  • Hiçbir şey (sıfırlar, rastgele veriler döndürebilir veya CPU'nun kilitlenmesine neden olabilir)
  • RAM (anakart RAM, grafik adaptörü gibi bir PCI aygıtından gelen RAM, vb.)
  • ROM
  • Bir G / Ç aygıtının kayıtları (buna CPU'nun yerel APIC'si gibi "dahili G / Ç aygıtları" dahildir)
  • Modern CPU'lar "RAM olarak önbelleğe" izin verir, böylece CPU önbelleğinin bir kısmı adres alanında görünebilir

"Sabit disk" in listede olmadığına dikkat edin. Sabit disk doğrudan CPU'ya bağlı değil. Veriler, sabit diske CPU'ya bağlı bir G / Ç aygıtı (SATA ana bilgisayar adaptörü) aracılığıyla gelir.

G / Ç aygıtı sabit diske veri yüklemek / sabit diskten veri kaydetmek / kaydetmek için DMA kullanır. Bu, G / Ç aygıtının CPU müdahalesi olmadan doğrudan RAM'i okuduğu / yazdığı ve RAM'in orada bulunmasına da bağlı olduğu anlamına gelir. Ancak veriler G / Ç aygıtı tarafından RAM'e yüklenmediyse, CPU'nun bunu görme şansı yoktur.

Böylece CPU'nun talimatları doğrudan sabit diskten getirmesini sağlayamazsınız.


Sayfa hatası sırasında ne olur:

  • CPU, yerel CPU sayfa tablolarında yer değiştirmiş olarak işaretlenmiş bir bellek sayfasına (her zaman RAM'de bulunur) erişmeye çalışır.
  • Bu erişim CPU'da bir sayfa hatası istisnasına neden olur.
  • Şimdi çekirdek modunda olan CPU, diğer işlemin erişmeye çalıştığı sayfaya bakar.
  • Çekirdek, bir kullanıcı işleminin takas edilmiş bir sayfaya erişmeye çalıştığını fark eder ve bu sayfayı diskten geri takmak için normal G / Ç işlemini çağırır. Bu, diskten başka bir veri yüklenirken / kaydedilirken kullanılacak işlemle aynıdır. CPU değiş tokuş edilen bellekte sayfalama yaptığından farklı değil.
  • CPU daha sonra kontrolü hiçbir şey olmamış gibi devam eden kesintili işleme geri döndürür.

Bu yüzden bellek değiştirildiği için diskten veri alması gereken CPU farklı değildir.


2
+1burada gerçek sorunla ilgilenen tek cevap olduğu için, sadece ne olacağı değil , aynı zamanda neden olduğu da .

@ultrasawblade neden cpu veri görme şansına sahip değil, bir sayfa (bilgi) için cpu talebi ve ram'da (birincil bellek) mevcut olmasa bile, o zaman sayfa hatası oluşuyor, sonra hardisk'e cpu talebi istenen veri. Bu, cpu'nun son olarak gerekli bilgiler için sabit diske gitmesi gerektiği anlamına gelir.
akash ujjwal

2
Düzenlemelere bakın. Değiştirilen bellekteki çekirdek disk belleği, bir program yüklenmesinden veya diske okuma / yazma programından farklı değildir. Sadece çekirdeğin içinde ve bir kullanıcı işleminin perde arkasında olur, ancak çekirdeğin perde arkasında olmaz.
LawrenceC

En azından x86'nın önbellek dolgusuz modda RAM olarak kullanılabileceğini , ancak daha sonra bazı yerleşik RAM ile birlikte gelen mikro denetleyicilerle aynı teknede olduğunuzu unutmayın. CPU'yu yalnızca ROM ile ve yazılabilir adres alanı olmadan çalıştırmak mantıklıdır (tüm durumunuz kayıtlara sığarsa ve en son x86 CPU'larda otuz iki 512b ZMM vektör kaydı bulunduğunu unutmayın ...) kod için okunabilir adres alanı (ve GDT / LDT / IDT ve x86 için diğer tablolar).
Peter Cordes

7

Kişisel bir bilgisayarın çalışması için RAM gerekir. Sabit diskten başlatılan her uygulama yürütülmeden önce RAM'e kopyalanacaktır.

Bilgisayarınızda RAM yoksa, bilgisayarınız açılmaz, muhtemelen yüklü RAM olmadığını bildirmek için birkaç uyarı sesi verir.


5
Sonra alnına vur ve "Bu RAM çubuklarını 27 Aralık'ta Kuzey Yarıkürede% 10'dan daha az nemli bir halıya kurmaya çalışmamalıydım?" Evet?
arch-abit

@LPCop neden ana amacı nedir Ram saklanır. Sistemi hızlı hale getirmek veya erişim süresini azaltmak için, bunu yapmak için dahili bir önbellek vardır. Ben doğru muyum, yanlış mıyım?
akash ujjwal

1
RAM hızlı bellek depolama, disk erişimi yavaş, kalıcı bellek depolama ve CPU önbelleği başka nedenlerle var.
Fiasco Labs

1
@FiascoLabs Aslında, CPU önbelleği RAM ile aynı nedenden dolayı var: Gerçekten hızlı depolama. RAM'den çok daha hızlı, ancak bayt başına daha pahalıdır.
reirab

Ve bir bilgisayar üzerinde tek başına çalışmaz, bu nedenle "diğer nedenler"
Fiasco Labs

5

Bilgisayar çalışmaz. RAM, anakarttan başarılı bir gönderinin önemli bir parçasıdır. RAM mevcut olmadığında veya hasar görmediğinde, çoğu anakart genellikle sorun gidermede nereye bakılacağını belirtmek için bip sesi kodları verir.


Evet, mıknatıslanıp manyetikliği giderilecek küçük metal halkalardı. en.wikipedia.org/wiki/Magnetic-core_memory (Silinen eski vakum tüplü bilgisayarlar hakkında yorumuna yanıt olarak)
Fiasco Labs

2

Aslında, en az iki durumda teknik olarak RAM olarak adlandırılan bir bilgisayarı çalıştırabilirsiniz.

  1. İlk eski mekanik "bilgisayarlar" (Konrad Zuse'un yapısı ve Charles Babbage'ın bilgisayarı, bilgisayar adı verilen RAM arestili olmayan mekanik cihazlardır)

  2. RAM içermeyen modern bir bilgisayar ve sadece kayıtları olan bir işlemci (çip) . Çoğu durumda işlemcide SRAM (önbellek) bulunur, ancak en hızlı bilgisayar belleği yonga üzerinde bulunan kayıtlar olarak adlandırılır ve teknik olarak yongadaki kayıtlar RAM değildir.


1
Bu cevap için teşekkürler - Zuse ve onun erken elektromekanik bilgisayarlarını ilk kez duyduğumu hatırlıyorum (bilgisayarlar hakkında hatırladığım en erken okumalar, anahtarlama üniteleri olarak her zaman "rölelerden" bahsetmiş olsa da, diğer tüm eski bilgisayarlar vakum tüpleri kullanıyor gibi görünüyor ).
Zeiss Ikon

1

Sadece koşmayacak. Anakart büyük olasılıkla alışılmadık bir şekilde bip sesi çıkaracak ve kapanacaktır. Yeterli RAM'iniz yoksa, Windows XP için 128MB bile olsa, yüklemeyi reddeder (aslında eski bir bilgisayarla denedi; yongalardan biri doğru yerleştirilmedi). Yani, mevcut kurulumlarla imkansız. Anakart kontrollerini devre dışı bırakabilseniz bile, CPU verileri doğrudan sabit diskten okuyamaz ve her işlem için RAM'e ihtiyaç duyar.

Sanırım, teorik olarak, çok az RAM kullanan veya hiç RAM kullanmayan bir makine inşa etmek mümkün olurdu, ancak verimsiz olurdu.

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.