SORU
19 Aralık 2008, Cuma


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
19 Aralık 2008, Cuma


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

Struct Layout

İş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:

Packed Struct

İ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!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011