Bir CPU sadece RAM olarak dahili önbelleği kullanarak, bir güç kaynağından ve bir ROM'dan başka bir şey yapmadan çalışabilir mi?


61

Çip üzerinde önbellek RAM'ı olan bir CPU (örneğin Intel i3 / i5 / i7 / Xeon gibi), herhangi bir harici bellek bankası takılı olmadan, sadece işlevsel RAM'i kullanabilir mi?

Veya harici RAM olmalı ve önbelleğe erişilemiyor veya yalnız kullanılamaz mı?

Modern masaüstü / sunucu CPU'ları çoğu zaman 1990'lardaki bilgisayarların tümünde sistem belleğinde olduğundan daha fazla dahili önbellek RAM'ına sahiptir, bu nedenle basit kodları çalıştırmak için yeterince orada bulunmalıdır.

6502 gibi önbellek varlığından önceki CPU'lar hiçbir şey yapamazdı, çünkü dahili CPU RAM, adres sayacı ve akümülatörler için sadece birkaç bayt olarak gerçekleşti.

Bu, herhangi bir modern işletim sistemi çalıştırma meselesi değil, özel bir ROM'a programlanmış veya hex giriş tuş takımı ile elle girilen basit kodu çalıştırma meselesidir.


1
Tamamen CPU'ya ve bazı CPU'larda RAM'leri yerleşik olduğundan ve harici yongalara ihtiyaç duymadığından "önbellek" ile tam olarak ne kastettiğinize bağlıdır.
PlasmaHH

42
Temel olarak, işlemcinin içine adreslenebilir bir bellek eklerseniz, mikrodenetleyici dediğimiz şeyi derlersiniz. Bunlar var.
Marcus Müller

1
Herhangi bir RAM'e ihtiyacınız olduğunu kim söylüyor?
Chris Stratton,

1
"Fonksiyon" u nasıl tanımladığınıza bağlıdır. Bahse girerim bir i7, yalnızca kendisine bağlı bir batarya ile ısı üretme kapasitesine sahiptir.
Dmitry Grigoryev

2
Birkaç kayıt ve ek RAM olmadan yapabileceğiniz birçok şey var. Örneğin, bir fonksiyon üreteci.
David Schwartz

Yanıtlar:


67

PC önyükleme sırasının bu son derece ayrıntılı hesabına bakın: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Bu noktada DRAM mevcut olmadığından, kod başlangıçta istifsiz bir ortamda çalışır. Çoğu modern işlemcide, bir yazılım yığını sağlamak üzere RAM olarak yapılandırılabilen bir dahili önbellek bulunur. RAM gibi önbellek özelliğini kullanırken geliştiricilerin çok sıkı bir kod yazması gerekir, çünkü tahliye, önyükleme sırasındaki bu noktada sisteme kabul edilemez olur; tutarlılığı koruyacak bir hafıza yok. Bu nedenle işlemciler, RAM önbellek bazında çalıştıklarında önyükleme işleminin bu noktasında "Tahliye Yok Modu" nda (NEM) çalışırlar. NEM'de, işlemcide kaçırılan bir önbellek satırı tahliyeye neden olmaz. Kullanılabilir bir yazılım yığınıyla kod geliştirmek çok kolaydır ve başlatma kodu genellikle DRAM başlatmadan önce bile bir yığın kullanmak için en az kurulumu gerçekleştirir.

RAM olmadan bir PC çalıştırarak bunu gözlemleyebilirsiniz: bir dizi bip sesi çıkarır. Bunları çalan program BIOS Flash ROM'dan çalıştırılır.

Bu davranışı bazı ARM işlemcilerde de gördüm. DRAM'yi bulan, numaralandıran ve yapılandıran bir program çalıştırmak için önbelleği önyükleme sırasında RAM olarak kullanmanıza izin veren SoC içinde yapılandırma kayıtları olacaktır.



2
Nasıl x86 yönettiği "cache-as-ram" (CAR) modunda çalışır hakkında daha fazla ayrıntı için kullanım örneği olarak o kadar getiren bir cevap, INVDpotansiyel üzerinde yerine belleğe yazılır yararsız verilere sahip önbelleğini geçersiz (zaman ARAÇ modundan çıktıktan, değerli bir şey).
Peter Cordes

DRAM mevcut olmadığında tahliyenin nesi yanlış? Sorun yazmaktan RAM'e yazmak yerine okumak değil mi?
Mehrdad,

14

Genel olarak, önbellek adreslenemez. Bir program kasıtlı olarak veri depolayamaz veya alamaz.


2
+1 Bu çok zekice bir cevap. Kaşelinler, neredeyse rasgele bir şekilde ana bellekten adreslenebilir erişimlerden istenirse yüklenir ve emekli edilir.
Ale..chenski

17
Evet, işte bu yüzden özel bir mod (pjc'nin cevabında olduğu gibi) veya bir tür özel hile gerektiriyor. Başka bir seçenek (kabul edilen cevabın yanı sıra) sistemin bazı DRAM'lar olduğunu düşünmesini sağlamak olabilir , ancak gerçek bellek yazarları sadece veriyi atıyor ve hepsi sıfır (veya bazı adres bölgeleri için bir ROM'dan gerçek veri) üretiyor. Tüm yükler önbellekte kaldığı sürece, sistem doğru şekilde davranır. Herhangi bir gerçek önbellek yıkamaya ihtiyaç duymadan 64-bit uzun moda geçmenin mümkün olup olmadığını x86'nın nasıl çizeceğini bilmesi için yeterli IDK.
Peter Cordes

3
Bununla birlikte, paket içi eDRAM önbelleğine sahip Skylake CPU'ları bellek tarafı önbellek olarak kullanır ( Broadwell'in aksine bellek denetleyicisi ve diğer her şey arasında), böylece DMA'nın CPU dışı sistem aygıtlarından veya CPU yüklerinden / CPU yüklerinden önbelleğe alınmasını önleyebilir "önlenemeyen" hafıza bölgelerine (L1 / L2 / L3 atlar) depolar.
Peter Cordes

3
@PeterCordes Ancak cevap sadece "özel" bir modun gerekli olduğu için "hayır" değildir - soru o zaman özel modun var olup olmadığıyla ilgilidir.
user253751

1
Asıl soru - önbelleği yine de kullanırsanız ve asla ıskalamamasını veya kızarmadığından emin olursanız ne olur - bir şeyin varolmayan RAM'deki bir adrese yazıldığı an adreslenebilir hale gelir, değil mi? Gerçek yazma yere düşüyor, ancak okuma yine de önbellekten sunuluyor?
rackandboneman

9

Bu, doğrudan soruda belirtilen işlemci ailelerine hitap etmese de, aşağıdaki şema önceki x86 işlemciler üzerinde çalışacaktı, bu yüzden evet, bu yaklaşım bazı yaratıcı programlama becerileri gerektirse de RAM veya önbellek olmadan çalışmak mümkündür.

1980'lerde , İngiltere'de yayınlanan MSF zaman sinyallerini deşifre eden bir radyo alıcısı tasarımıyla karşılaştım . Bu tasarım bir Z80 işlemci kullandı ve program saklama için yalnızca bir ROM'a sahipti. Tüm işlem ve veri depolama, işlemcideki dahili kayıtlar kullanılarak yapıldı. Bu, açık bir şekilde, hafızayı tutabilecek hafıza mevcut olduğundan alt rutin çağrılar olamayacağı anlamına geliyordu.

O zaman RAM'in maliyeti yüksekti ve bu hobi bir proje olduğundan, ilginç bir akademik uygulama olmasının dışında maliyetleri düşürmek önemliydi. Bu aynı zamanda yaygın olarak bulunan mikrodenetleyicilerin günlerinden önceydi (eprom maliyeti 100 sterlin IIRC'nin üstünde olan bir 8751).


Kendinizi kayıt defterlerinde tutulabilecek verilerle sınırlandırmak, gerçekleştirebileceğiniz yararlı işlevleri gerçekten sınırlar. Sanırım soru daha çok modern işlemcilerdeki önbellek hakkındaydı.
Mark Ransom

Tabii ki RAM kullanmamanın mümkün olan işlevselliği sınırladığını söylemeden geçiyor. Alıntılanan uygulama, çok sınırlı veri depolama kaynağı, bir radyo ön ucu ve bir LCD ekranla ne kadar mümkün olduğunu göstermektedir.
10'da

-3

Genellikle bir CPU harici bir saat gerektirir. Ama bununla, evet yapabilir.


1
Kullanıcı sorusunu neden açıklamak ve iyice cevaplamak uygun olacaktır. Bu cevap zayıf taraftadır.
Gerilim Spike
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.