İçindekiler:

VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı: 4 Adım
VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı: 4 Adım

Video: VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı: 4 Adım

Video: VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı: 4 Adım
Video: VHDL İLE SAYISAL TASARIM VE FPGA UYGULAMALARI 04_7_segment 2024, Haziran
Anonim
VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı
VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı

Önceki talimatımda, basit bir doğrudan eşlenmiş önbellek denetleyicisinin nasıl tasarlanacağını gördük. Bu sefer bir adım öne geçiyoruz. Basit bir dört yollu küme ilişkisel önbellek denetleyicisi tasarlayacağız. Avantaj? Daha az kayıp oranı, ancak performans pahasına. Tıpkı önceki blogum gibi, önbellek denetleyicimizi test etmek için tüm işlemciyi, ana belleği ve önbellek ortamını tasarlıyor ve öykünüyor olacaktık. Umarım bunu kavramları anlamak ve gelecekte kendi önbellek denetleyicilerinizi tasarlamak için faydalı bir referans olarak bulursunuz. İşlemci modeli (test tezgahı) ve ana bellek sistemi önceki blogumla tamamen aynı olduğu için onları tekrar açıklamayacağım. Bununla ilgili ayrıntılar için lütfen önceki talimata bakın.

Adım 1: Özellikler

Özellikler
Özellikler

Burada sunulan Önbellek Denetleyicisinin özelliklerine hızlı bir bakış:

  • Dört Yönlü Set İlişkili Önbellek Denetleyicisi (Doğrudan Eşlenmiş Önbellek Denetleyicisi arıyorsanız bu bağlantıya gidin).
  • Tek Bankalı, Engelleme Önbelleği.
  • Yazma isabetlerinde Yazma Politikası.
  • Yazma kayıplarına ilişkin Etrafında Yazma Politikası.
  • Ağaç Sözde LRU (pLRU) Değiştirme Politikası.
  • Denetleyici içindeki Etiket Dizisi.
  • Yapılandırılabilir parametreler.

Önbellek ve Ana Bellek için varsayılan özellikler, önceki talimatımdakiyle aynıdır. Lütfen onlara bakın.

Adım 2: Tüm Sistemin RTL Görünümü

Tüm Sistemin RTL Görünümü
Tüm Sistemin RTL Görünümü

Üst Modülün tam RTL gösterimi Şekilde gösterilmektedir (işlemci hariç). Otobüsler için varsayılan özellikler şunlardır:

  • Tüm Veri Yolları 32 bit Veri Yollarıdır.
  • Adres Yolu = 32-bit Bus (Ancak burada sadece 10 bit Bellek tarafından adreslenebilir).
  • Veri Bloğu = 128 bit (Okuma için Geniş Bant Genişliği Veriyolu).
  • Tüm bileşenler aynı saat tarafından çalıştırılır.

Adım 3: Test Sonuçları

Üst Modül, tıpkı son talimatta yaptığımız gibi, basit bir şekilde ardışık düzenlenmemiş bir İşlemciyi modelleyen bir Test Tezgahı kullanılarak test edildi. Test Tezgahı, Belleğe sık sık Veri Okuma/Yazma istekleri üretir. Bu, bir işlemci tarafından yürütülen tüm programlarda yaygın olan tipik "Yükle" ve "Depola" talimatlarıyla alay eder.

Test sonuçları, Önbellek Denetleyicisinin işlevselliğini başarıyla doğruladı. Gözlemlenen test istatistikleri aşağıdadır:

  • Tüm Okuma/Yazma Iskalama ve Vuruş sinyalleri doğru şekilde oluşturuldu.
  • Tüm Okuma/Yazma Verileri işlemleri dört şekilde de başarılı oldu.
  • pLRU algoritması, önbellek satırlarının değiştirilmesi için başarıyla doğrulandı.
  • Veri tutarsızlığı/tutarsızlık sorunu tespit edilmedi.
  • Tasarım, bir Maxm için başarıyla zamanlama doğrulandı. Saat Çalışma Frekansı = Xilinx Virtex-4 ML-403 Board'da (tüm sistem) 100 MHz, yalnızca Önbellek Denetleyicisi için 110 MHz.
  • Ana Bellek için blok RAM'ler çıkarıldı. Diğer tüm diziler LUT'lerde uygulandı.

4. Adım: Ekli Dosyalar

Aşağıdaki dosyalar bu blogla birlikte buraya eklenmiştir:

  • Önbellek Denetleyicisi, Önbellek Veri Dizisi, Ana Bellek Sisteminin. VHD dosyaları.
  • Test tezgahı.
  • Önbellek Denetleyicisi ile ilgili belgeler.

Notlar:

  • Burada sunulan Önbellek Denetleyicisinin özelliklerini tam olarak anlamak için belgeleri inceleyin.
  • Koddaki herhangi bir değişikliğin diğer modüllere bağımlılığı vardır. Bu nedenle, değişiklikler makul bir şekilde yapılmalıdır.
  • Verdiğim tüm yorumlara ve başlıklara dikkat edin.
  • Herhangi bir nedenle, Ana Bellek için Blok RAM'ler çıkarılmazsa, belleğin boyutunu AZALTIN, ardından dosyalar arasındaki adres veriyolu genişliklerinde değişiklikler vb. Böylece aynı bellek LUT'larda veya Dağıtılmış RAM'de uygulanabilir. Bu, yönlendirme süresinden ve kaynaklardan tasarruf sağlayacaktır. Veya, belirli FPGA belgelerine gidin ve Blok RAM için uyumlu kodu bulun ve buna göre kodu düzenleyin ve aynı adres veri yolu genişliği özelliklerini kullanın. Altera FPGA'lar için aynı teknik.

Önerilen: