Bellek modüllerini kullanarak bayt organize ve Word organize bellek


5

Şu anda bir CPU'nun donanım seviyesinde nasıl çalıştığını öğreniyorum ve sürekli gelişen bir şey de bellek organizasyonu. Öğrendiklerime göre (ve lütfen, doğru olmayan herhangi bir şey için beni düzeltin), aşağıdaki iki yolla düzenlenmiş bir hafızanız olabilir:

Bayt organize hafızası: Adres veriyolu üzerindeki her adres bir bayt'ın (8 bit) depolandığı bir hafıza konumuna işaret eder.

Word organize hafızası: Adres veri yolu üzerindeki her adres, bir kelimenin (8 bit'in birden fazla) depolandığı bir hafıza konumuna işaret eder.

Başka bir deyişle, bir bayt organize hafızası bir bayt sınırı olan herhangi bir hafıza konumuna erişebilirken, bir kelime organize hafızası sadece bir kelime sınırı olan hafıza konumlarına erişebilir.

Şimdi burada bir sorunum var. Bir ara sınav için çalışıyorum ve geçmiş dönemdeki ödevlere bakıyorum ve şu soru ortaya çıkıyor:

20 bit adres ve 8 bit veri arayüzüne sahip bir dizi bellek modülü verildi. 16 bitlik bir veri mimarisi işlemcisi için 4 MB'lık bir bayt organize ana bellek oluşturmamız gerekiyor.

Şimdi verilen bellek modüllerini kullanarak bir ana bellek oluşturmamız gerektiğini biliyorum. Başlamak için, her bir bellek modülünün kapasitesini bulmalıyız,

2 ^ m * n, burada m, bit olarak adres veriyolu ve n, bit olarak veri veriyoludur. Bu, her bellek modülü için 2 ^ 20 * 8 = 1 MByte kapasite verir.

Şimdi kaç bellek modülünün gerekli olduğunu bulmamız gerekiyor. Bu oldukça kolaydır ve şu şekilde bulunur: 4MB / 1MB = 4 modül.

Şimdi anlayamadığım kısım, hafızanın bayt düzenlenmesi gerekiyor, fakat ana hafızadaki veri yolu 16 bit. Her erişim bir kelime verirse, bayt organize bir belleği nasıl tasarlayabilirim? Bayt organize edildiğinde, bir adres verildiğinde, bellekteki o belirli bayta erişmenin mümkün olacağı anlamına gelmiyor mu? Bellek modülleri, 16 bitlik bir veri yolu sağlayacak şekilde tasarlanması gerektiğinde bu nasıl mümkün olabilir? İşte sorunun çözümü. Lütfen ana belleğin neden bu şekilde tasarlandığını ve her bir bayta ayrı ayrı erişmenin nasıl mümkün olduğunu ayrıntılı olarak açıklayın.

Cevap: enter image description here

Teşekkür ederim.


Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü bu bellek yönetimi ayrıntı düzeyi bir bilgisayar için daha uygun.
Carl Witthoft

Hayır, bu bir soru electronics.stackexchange.com . Tekrar sormalısın. Btw, cevabı dış dünya ile ram modülünüz arasında bazı dönüşüm elektroniğine ihtiyaç duymanızdır. Tüm kelime okumaları ve kelime yazmaları bu elektronik tarafından iki byte okumaya ve byte-yazıya çevrilmelidir. Zamanlama kısıtlamaları varsa, her zaman mümkün değildir, ancak yine de devre çok karmaşık değildir.
peterh

1
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü SE Electronics için daha uygun
Fred

Soru CPU mimarisiyle ilgili ve bilgisayar donanımıyla ve dolayısıyla bilgisayar mühendisliği ile ilgili. Bu yüzden sorunun doğru bölümde olduğuna inanıyorum.
John

Yanıtlar:


4

Dikkat ederseniz, 1 MB bayt modüllerine erişmek için 20 bit gerekir.

Byte module

Fakat işlemciniz kelime hizalı. Böylece 2 1Mb byte modül 2Mb kelime modülünü oluşturur. Nasıl çalıştığını anlamanın anahtarı, alttaki Hizalama.

Misalignment of Word addressed modules

Belirli bayt hizalı belleğe erişmek için 20 bit gerekir, ancak her konum bir veya iki bayttır. Böylece A0'yı (Adres biti 0) bellek kod çözme işleminden çıkarırsınız. Bu çizimin altında gösterilmiştir.

A20 - A1 (bit 1 .. 20), 1Mb kelime sıralı bellek konumlarınızı seçin. Yanlış hizalama, işlemcide, yüksek bayt D15-D8 ve düşük bayt D7-D0'da olduğu gibi telafi edilir.

İkinci bir banka eklediğinizde, A21 üst veya alt bankaları seçer. Diyagramdan yanıltıcı olan. Her iki bankaya da erişilebilir ve aralarında bankaya erişilen A21 multipleksleri bulunur.

Diğer seçenek, A21 çip seçimini etkinleştirerek iki banka arasında seçim yapmasıdır. Uygun banka, verileri doğrudan veri yoluna yerleştirir.

Aynı yaklaşım 32, 64 veya 128 bellek veri yolu için de geçerlidir. Gereksiz yapılan düşük adres bitlerini dışarıda bırakın.


OP yorumunu netleştirmek için düzenleyin.

Bu yüzden, mantığınızla, her bir bayta fiziksel olarak erişebilmelisiniz. Böylece zaten işlemci içinde olanı çoğaltır.

8Gbayt belleğe sahip bir 64 bit işlemci, 8 bayt / erişim, yani 1G 64 bit konumlar getirir. Her byte'a ayrı ayrı erişilebilmesi için kod çözmeyi genişletmeli miyiz?

Peki ya booleanlar? Bit üzerinden erişiyor muyuz? 64 veya 128 bit yüzer. İşlemciden iş hacmini optimize etmesi gereken donanım ve veri yapılarının fiziksel yapısına sahipsiniz.

Diyelim ki bir bool, byte, 16 bit tam sayı, byte ve 64 bit kayan bir yapı oluşturdunuz. 16 bit işlemci için bir derleyici, float (4 inç), int (birleştirilmiş 2 ayrı bayt), int ve int (bool - 15 bit boşa) olarak tahsis edebilir. 7 inç.

Yapıyı bir diziye çevirirseniz, derleyici her üyeye 8 inç olarak tahsis edebilir, bu nedenle yüzer ve inçler için doğal hizalama yapısı bozulmaz. Harcanan başka bir int.


Cevabınız için teşekkürler, ama bir sorum var. İşlemcinin ana hafızasının bayt organize olduğunu söylediklerinde, bu bir adres vererek herhangi bir belirli bayta erişebilmeniz gerektiği anlamına gelmiyor mu? Diyelim ki hafıza adresine 0 erişmek istiyorum. Diyelim 0 ve bayt 1'i temsil eden bir kelime alacağım. Eğer adres 1'e erişmek istersem, bayt 1 ve bayt 2 değil, bayt 2 ve bayt 3'ü verecektir Bu bellek kelimesini düzenli ve baytlı yapmaz mı?
John
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.