CPU ram bilgisini nasıl yazıyor?


10

Sorum şu: CPU ram'a nasıl veri yazıyor?

Anladığım kadarıyla, modern CPU'lar ram erişimini hızlandırmak için farklı önbellek seviyeleri kullanıyor. RAM bilgi için bir komut alır ve daha sonra CPU'ya gerekli verileri (ve CPU'nun istediği adrese yakın bir sürü ekstra veri) depolayan bir veri patlaması gönderir, CPU daha sonra kademeli olarak sorar farklı önbellekler, daha sonra doğrudan bir CPU kaydına okunan düzey 1 önbelleğine gelene kadar önbellek düzeylerine daha küçük ve daha küçük veri parçaları göndermek için.

CPU belleğe yazdığında bu işlem nasıl çalışır? Bilgisayar önbellek düzeylerinde geriye doğru gidiyor mu (okumaya göre ters sırada)? Öyleyse, farklı önbellekteki bilgileri ana bellekle senkronize etmeye ne dersiniz? Ayrıca, bir yazma işleminin okunan bir işlemle karşılaştırıldığında hızı nedir? Bir kova türünde olduğu gibi sürekli olarak RAM'e yazıyorsam ne olur?

Şimdiden teşekkürler,

-Faken

Düzenleme: Hala tam olarak kabul edebileceğim bir cevap alamadım. Özellikle RAM yazmanın senkronizasyon kısmı hakkında bilmek istiyorum. L1 önbelleğine doğrudan CPU'dan yazdığımızı ve farklı önbellek düzeylerini senkronize ederken verilerin önbellek seviyelerini düşürdüğünü ve sonunda ana RAM'in en yüksek katman önbelleğiyle senkronize edildiğini biliyorum. Ancak, bilmek istiyorum ne zaman önbellekleri senkronize ve ana RAM ile scynocronize yapmak ve okuma komutları ile ilgili hızları ne kadar hızlı olduğunu.

Yanıtlar:


11

Ah, bu gerçekten karmaşık cevapları olan basit sorulardan biri. Basit cevap, yazmanın nasıl yapıldığına ve ne tür bir önbellekleme olduğuna bağlıdır. İşte önbelleklerin nasıl çalıştığı hakkında yararlı bir astar .

CPU'lar çeşitli şekillerde veri yazabilir. Herhangi bir önbellekleme olmadan, veriler bellekte hemen saklanır ve CPU yazma işleminin tamamlanmasını bekler. Önbellekleme ile CPU genellikle verileri program sırasına göre kaydeder, yani program önce A adresine sonra B adresine yazarsa, önbellekten bağımsız olarak A belleği B belleğinden önce yazılacaktır. Önbellek yalnızca fiziksel bellek güncellendiğinde etkilenir ve bu, kullanılan önbellek türüne bağlıdır (yukarıdaki bağlantıya bakın). Bazı CPU'lar ayrıca verileri geçici olmayan bir şekilde saklayabilir, yani, bellek bant genişliğinden en iyi şekilde yararlanmak için yazma işlemleri yeniden sipariş edilebilir. Böylece, A'ya, sonra B'ye yazmak, sonra (A + 1) A'ya, sonra A + 1'e tek bir patlamada, sonra B'ye yazmak için yeniden sıralanabilir.

Başka bir komplikasyon, birden fazla CPU'nun mevcut olmasıdır. Sistemin tasarlanma şekline bağlı olarak, bir CPU tarafından yapılan yazma işlemleri diğer CPU'lar tarafından görülmez, çünkü veriler hala ilk CPU önbelleğinde (önbellek kirli). Birden fazla CPU sisteminde, her CPU'nun önbelleğinin fiziksel bellekte bulunanlarla eşleşmesi önbellek tutarlılığı olarak adlandırılır. Bunun gerçekleştirilmesinin çeşitli yolları vardır.

Tabii ki, yukarıdakiler Pentium işlemcilere yöneliktir. Diğer işlemciler işleri başka şekillerde yapabilirler. Örneğin, PS3'ün Hücre işlemcisini ele alalım. Bir Hücre CPU'nun temel mimarisi, birkaç Hücre çekirdeğine sahip bir PowerPC çekirdeğidir (PS3'te, bir tanesi verimleri iyileştirmek için her zaman devre dışı bırakılan sekiz hücre vardır). Her hücrenin kendi yerel belleği vardır, hiçbir zaman sistem RAM'ına yazılmamış bir L1 önbelleği vardır. DMA (Doğrudan Bellek Erişimi) aktarımları kullanılarak bu yerel RAM ile sistem RAM'i arasında veri aktarılabilir. Hücre, sistem RAM'ına ve normal okunan ve yazılan gibi görünen diğer hücrelerin RAM'lerine erişebilir, ancak bu sadece bir DMA aktarımını tetikler (bu nedenle yavaştır ve gerçekten kaçınılmalıdır). Bu sistemin arkasındaki fikir, oyunun sadece bir program olmadığı,

Özetlemek gerekirse, CPU hızının RAM hızıyla eşleştiği günlerde RAM'e yazmak gerçekten basitti, ancak CPU hızı arttıkça ve önbellekleri tanıtıldığında, süreç birçok farklı yöntemle daha karmaşık hale geldi.

SkizZ


2

Evet, önbellek düzeylerine geri gider ve belleğe kaydeder, ancak önemli not Çoklu İşleme sisteminde önbellek 2 veya daha fazla işlemci (çekirdek) arasında paylaşılır ve veriler tutarlı olmalıdır, bu tüm çoklu işlemciler için paylaşılan önbellek yaparak yapılır veya farklı bir önbellek ancak Kritik bölüm kullanarak tutarlılığı kaydedin (bir önbellekteki veriler değiştiyse onu belleğe yazmaya ve diğer önbelleği güncellemeye zorlar)

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.