Hafıza uyum amaçlı
Kuşkusuz anlamıyorum. 1 byte uzunluğunda bir bellek kelime ile bir bellek var. Neden uyumlu adresleri ile dava olarak tarafsız bir adres tek bir bellek erişim(4 değil bölünebilen yani 4 byte uzunluğunda bir değişken erişebilir mi?
CEVAP
Modern bir işlemci hafıza alt parçalı bellek erişim ve word boyutuna uyum sınırlıdır; bu nedenden ötürü böyledir.
Hız
Modern işlemciler veri ile çekilmiş olmalıdır önbellek birden çok düzeyi vardır; tek bir bayt okuma destekleyen ağır işlemci (sabit diskler için PİO modu sanırım) bellek sınırlayın.
CPUher zamanokur onun kelime boyutu (4 bayt üzerinde bir 32-bit işlemci), yani ne zaman ne şekilde tarafsız adresi erişim — işlemci destekler — işlemci okuyacak birden fazla kelime. CPU istenen adresinizi yayılan bellek her kelimeyi okur. Bu bellek işlemleri istenen veri erişimi için gerekli 2X numarasını bir yükselmeye neden olur.
Bu nedenle, çok kolay dörtten iki bayt okumak için daha yavaş olabilir. Örneğin, bu gibi görünüyor bellekte bir yapı var ki:
struct mystruct {
char c; // one byte
int i; // four bytes
short s; // two bytes
}
32-bit işlemci büyük olasılıkla burada gösterildiği gibi hizalanmış olur
İşlemci bir işlem bu üyelerin her biri okuyabilir.
Say yapı dolu bir versiyon, iletim verimliliği için tıklım tıklımdı nerede ağdan belki de vardı; şöyle bir şey olabilir:
İlk bayt okuma aynı olacak.
Ne zaman sordun işlemci ver 16 bit 0x0005 olacak okumak için bir kelime gelen 0x0004 ve sola kayma 1 byte yer 16-bit kayıt; fazladan bir iş, ama en can işleyen bir döngü.
0x0001 32 bit için sorduğunuzda 2X bir büyüme elde edersiniz. İşlemci olacak okuma 0x0000 sonucu kayıt ve sola kayma 1 bayt, sonra okumak daha 0x0004 içine bir geçici kayıt, sağa kaydır 3 bayt, OR
ile sonucu kaydı.
Aralığı
İçin herhangi bir adres alanı, mimari düşünün ki 2 LSBs her zaman 0 (örneğin, 32-bit makineler) sonra erişim 4 kat daha fazla bellek (2 kayıtlı biti temsil eder 4 ayrı Birleşik Devletleri) ya da aynı miktarda bellek ile 2 bit için bir şey gibi bayraklar. 2 LSBs adresi kalktıktan 4 baytlık bir verecek; ayrıca 4 bayt stride olarak anılacaktır. Adresi etkili bit 2 bit, yani 0, son 2 bit değil artan olduğunu artırılır her zaman, her zaman 00
olmaya devam edecektir.
Bu bile sistemin fiziksel tasarımı etkileyebilir. Eğer Adres otobüsü 2 daha az bit gerekiyorsa, CPU, ve 2, devre üzerinde daha az iz üzerinde 2 iğne daha az olabilir.
Atom oranı
CPU bellek atomik hizalanmış bir kelime, başka bir bilgisayar ya da çalışmasını engellemek anlam çalışabilir. Bu kilidi serbest veri yapıları ve diğer birçok eşzamanlı bilgisayar paradigmalar doğru çalışması için çok önemlidir.
Sonuç
Bellek sistemi işlemci biraz daha karmaşık ve yer Daha tarif burada; Eğer isterseniz daha ayrıntılı bir tartışma nasıl bir x 86 işlemci aslında adreslerini hafıza bakmak this article.
this IBM article okuyabilirsiniz bellek uyumu uymaları gereken daha birçok faydası vardır.
Daha önce başka bir (örneğin) bu konu 64 K, ama hangi önbellek hatlarda uyumu başka bir soru için üstü kapalı söz söylediğim için performans uyumu!
jQuery DOM hafıza temizleme ile sızınt...
ECMA:JavaScript derleyici / ES6 Uyum...
Yerel bir değişken'in hafıza kaps...
Neden geliştirme amaçlı WEBrick yerine...
Android emülatörü hafıza 8 ayıramadı...