Linux'u RAM'den daha hızlı bir şeyle çalıştırabilir miyiz?


21

Bu belki saçma bir soru ve yanlış anlaşılmanın sonucu olabilir. Şu an CPU'yu ve özellikle de hafızasını inceliyorum. SRAM'in DRAM'den ne kadar hızlı olduğunu ama daha pahalı olduğunu okuyordum. SRAM çok pahalı: Bir parça alışveriş yaptım ve yaklaşık 400 $ 'lık bir batarya ile çalışan 16 MB'lık bir SRAM kartı buldum.

Geçenlerde bir arkadaşım RAM'de köpek yavrusu linux işlettiğini ve hızlı olduğunu söyledi. Yine de, küçük çekirdekli linux'un 8 MB kadar küçük olabileceğini fark ettim! Bu beni düşündürdü: SRAM’da linux kullanabilir miyiz? Bu soru bile iyi şekillenmiş mi?

Google'ın bu sorusu etkisiz kalmıştır, ancak daha fazla soru ortaya atmıştır. Biri L3 Önbellekte linux çalıştırabilir mi? Intel Core i7, 8 MB’ye sığacak kadar büyük bir L3 Önbelleğe sahip olabilir ... ancak kategorik bir hata mı yapıyorum? Bu ve 'gömülü' linux arasındaki fark nedir?

Soru şu: SRAM veya L3 Önbellekte linux çalıştırabilir miyiz? Daha hızlı bir şey var mı? Ne kadar hızlı linux yapabiliriz?

z.


3
Gömülü linux'lar genellikle ram veya geçici olmayan bellekte çalıştırılır. Gömülü linux'lar yalnızca belirli bir donanımda çalışmak için sık sık aşağı sıyrılır veya düşük gecikme süresi gibi daha az yaygın olan çekirdek seçeneklerini kullanır
Journeyman Geek

2
Acaba bu soru için pratik bir kullanım var mı?
Robert Niestroj

4
"Linux" ı fiil olarak kullanmak için +1 (son cümlede)!
Vorac

Yanıtlar:


20

Linux veya başka bir işletim sistemi RAM'in nasıl çalıştığını bilmiyor. Bellek denetleyicisi uygun şekilde yapılandırıldığı sürece (örn. SRAM dışı ayarlanan yenileme hızları), işletim sistemi umursamıyor, düz dinamik bellekte (düz RAM), hızlı sayfa modu RAM'inde (FP RAM, C64-ish) çalışıyor kez), Genişletilmiş veri çıkışı modu RAM (EDO), senkron RAM (SDRAM), herhangi bir çift veri hızı SDRAMS (DDR 1/2/3) herhangi biri.

Bunların hepsi rastgele yerlerden okuma ve yazmayı destekliyor. Hepsi işe yarayacak.

Şimdi önbellek biraz farklı. İçeriğin değişmesi için buna yazmak zorunda değilsiniz. Bu şekilde olacak. Yine de, biraz kullanılabilir. Coreboot'un önbellek önyükleme sırasında bellek denetleyicisi düzgün bir şekilde yapılandırılmadan önce bir çeşit bellek kullandığını biliyorum. (Ayrıntılar için FOSDEM 2011’deki ana görüşmelerdeki videolara göz atın).

Yani teoride evet, onu kullanabilirsiniz.

AMA : Pratik işler için 1 GB 'normal' 'orta hızlı' belleğe sahip bir sistem yalnızca birkaç MB süper hızlı belleğe göre çok daha iyi performans gösterir. Yani üç seçeneğiniz var:

  1. İşleri normal 'ucuz' yolla inşa et. Daha fazla hıza ihtiyacınız varsa birkaç düzine fazla bilgisayar ekleyin (tümü 'yavaş' belleğe sahip)
  2. Ya da bir düzine kat daha ucuz, tek düzine daha düşük performans gösteren tek bir bilgisayar oluşturun.

Çok nadir durumlarda, sonuncusu mantıklı değildir.


6
Çoğu CPU, CPU'nun modele özgü kayıtları (MSR'ler) aracılığıyla "RAM-önbellek" modunu destekler. Ayrıca, SRAM'ın DRAM'den daha fazla güç harcadığını ve bunun bir tasarım faktörü olduğunu unutmayın. İşlemcinin önbelleği yeterince büyükse veya çekirdek yeterince küçükse, RAM olarak önbellek modunu etkinleştirebilir ve CPU üzerinde tamamen SRAM'de çalışmasını sağlayabilirsiniz. Ancak programları çalıştırmak için sınırlı miktarda RAM'iniz olabilir. çünkü AFAIK RAM olarak önbellek ve normal mod aynı anda çalışmayacak. Bununla ilgili yanılmış olabilirim. Olsa bile, bugünlerde bir CPU'nun hızının çoğunda L2, L3 önbellek kullanılması gerekir.
LawrenceC

@Hennes, Linux'un sadece (haritalanmış) bellek adresleriyle ilgilendiğini mi gösteriyor?
Alvin Wong,

SDRAM, Senkronize D (ynamic) RAM'dir, SRAM ise Statik RAM'dir. İlk paragrafta hangisine atıfta bulunmak istediğinizi bilmiyorum ve "önemsiz" düzenlemeler yapacak temsilcim yok, ama belki bunu düzeltebilirsiniz? Bunun dışında iyi cevap.
CVn

Netleştirmeyi umursamıyorum, ama neyi netleştirmek istediğinden emin değilim. Bunu bir yoruma ekleyebilir misiniz, ben de onu düzenleyeceğim.
Hennes

Bu yorumu ilk okuduğumda, “Linux ya da herhangi bir işletim sistemi RAM'in nasıl çalıştığını bilmeden ölüyor” gördüm. Arızanız iyi bir şey: Sanırım bunun "daha iyi" olacağı konusunda hiçbir fikrim yoktu. Sadece yapılıp yapılamayacağını merak ettim.
Ziggy

8

Evet, yapabilirsiniz ve bu aslında zaten böyle yapılır, otomatik olarak. RAM'in en sık kullanılan parçaları önbellekte kopyalanır. Toplam RAM kullanımınız önbellek boyutunuzdan küçükse (sandığınız gibi), mevcut önbellek mekanizması RAM'deki her şeyi kopyalamış olacaktır.

Önbelleğin normal RAM'e geri kopyalanacağı tek zaman, PC S3 uyku moduna girdiğinde gerçekleşir. Bu gereklidir, çünkü önbellek S3 modunda kapatılır.


1
Hepsi kopyalanamaz / kopyalanamaz. Intel / x86 önbellek yapısı için: 256KiB önbelleğim ve 1024KiB önbelleğim varsa, 0 adresini okuyabilirim. 0 konumundaki önbellekte depolanır. Daha sonra 1. adresi okuyabilir ve 1 numaralı konumdaki önbellekte depolanır. Ancak adresi (256Kib + 1) 'den okursam, bu da önbellekteki 1. adrese kaydedilir. Önbellek, ikisinden hangisinin saklandığını belirtmek için fazladan bir (etiket) SRAM kullanır. Bu, önbellek büyüklüğünün katlarından okuma işleminin iyi sonuç vermeyeceği anlamına gelir. (Bunun nadir bir şey olacağını ve genellikle göz ardı edilebileceğini unutmayın).
Hennes

Bu anlayışlı! Yapılması gereken en iyi şeyi belirlemesini ve bir işlemciyi bu en uygun şeyi yapması için programlamama izin verdiğimde neden L3 Önbelleğinde önemli olduğunu düşündüğüm şeyi beceriksizce doldurdum. Sağ?
Ziggy

3

Çoğu CPU önbelleğin RAM olarak kullanılmasına izin verir. Örneğin, daha yeni olan x86 işlemcilerin çoğu, belirli bölgeleri, MTRR'ler üzerinden okuma yapılmayacak şekilde okuma yazma olarak yapılandırabilir. Bu adres alanının bir bölgesini - etkin - ram olarak önbellek olarak belirtmek için kullanılabilir.

Bunun faydalı olup olmayacağı bir başka sorudur - çekirdeği RAM'e kilitler, ancak aynı zamanda önbelleğin etkin boyutunu da azaltır. Bunu daha da yavaşlatacak yan etkiler (sistemin geri kalanı için önbelleğe almayı devre dışı bırakmak gibi) olabilir.


2

"Lux Önbellekte linux çalıştırabilir miyiz?"

Hayır , önbellek hafızası doğrudan / doğrusal olarak adreslenmediğinden bu mümkün değildir.
Önbellek tasarlama biçiminden dolayı, CPU Program Sayacı (IP) kayıt defteri , önbellek içindeki bir konumu gösteremez.

Bir CPU önbelleğinin kendine ait bir "birliği" vardır ve bu ilişkilendirme, "normal" belleğin önbellekle "eşlendiğini" tanımlar. Önbellek bu özelliği, önbellek hatıralarının bu kadar hızlı olmasının sebeplerinden biridir.


1

"Lux Önbellekte linux çalıştırabilir miyiz?"

Hayır, Önbellek, program verilerini ve işlemcinin ihtiyaç duyacağı zamanları hazır tutma talimatlarını tutmak için belirli bir iş için var. İşletim sistemini yine de önbellekte bulacaksınız çünkü sürekli kullanılıyor. Tüm işletim sistemlerini önbelleğe yüklemek, çekirdekteki her kod yolunu aynı anda kullanmadığınız için etkili olmaz.

"Linux'u SRAM'da çalıştırabilir miyiz?"

Kesinlikle batarya destekli SRAM'ı önyükleme bölümünüz olarak kullanabilirsiniz, daha sonra gömülü yürütme bayrağını yerinde kullanabilirsiniz. Bu daha hızlı önyükleme sürelerine ve biraz daha hızlı işlemlere neden olabilir. Bununla birlikte, ana faktör L3 Önbellek ile çekirdeğin bulunduğu bant genişliğidir (bir önyükleme sürücüsü veya RAM).

"Daha hızlı bir şey var mı? Ne kadar hızlı linux yapabiliriz ??"

Genel olarak donanım üreticileri ve işletim sistemleri geliştiricileri, olabildiğince hızlı işlem yapmak için çalışıyor. Ancak sorunuz çok genel, önyükleme zamanlarını hızlandırmak, dosya sistemi erişimini optimize etmek, hesaplamaları hızlandırmak veya başka bir şey yapmak ister misiniz? Daha spesifik bir sorunuz olduğunda, tıkanıklığı bulmaya başlayabilir ve kaldırabilirsiniz. SRAM sürücünüz kesinlikle önyükleme işleminizi hızlandırır. Bir GUI'ye 3 saniye içinde ulaşmak görmek çok güzel olurdu.


1

486'lı günlerde, RAM'in tamamının SRAM olduğu makineler vardı. 8 MB çok büyük olduğunda bu geri döndü, ancak sınırlamalarınıza uyuyor gibi görünüyor. Eminim ki 8 MB SRAM şimdi olduğundan çok daha ucuz.

Böylece, eğer makine böyle yapsaydı Linux'u SRAM'da çalıştırabilirsin. Teorik değil; yapıldı.

Ancak, önbellekte değil. Önbellek farklı şekilde kablolanmıştır ve daha da önemlisi farklı şekilde ele alınmıştır. Aynı şekilde konuşamazsınız. Topaklar, sürekli bir yığın olarak değil, farklı şekilde eşlenir. İçindekiler mutlaka diskte gördüğünüz şeyler değildir - daha yeni Intel çipleri, mikro işlemlerin eşyalar olduğu yerde "derleme" (bir CISC => RISC-micro-op yeniden kodlaması) türünde Bu önbellekte sona erecek. Kısacası, önbellekte olan şey, programınız değil, değiştirilmiş bir görünümdür, bu nedenle programı artık programınızın hafıza temsili olarak kullanamazsınız.

Soru, neden? "Çünkü yapabilirim" dışında bunun için fazla bir sebep yok. Önbellek sistemi, hız avantajının çoğunu maliyetin çok daha azını alır. Ve maliyetin sadece dolar olmadığını hatırlayın .... SRAM daha fazla transistör alır, yani daha fazla elektrik demektir.

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.