Spisu treści:

Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL: 4 kroki
Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL: 4 kroki

Wideo: Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL: 4 kroki

Wideo: Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL: 4 kroki
Wideo: Wózek widłowy wielokierunkowy czterokierunkowy Hubtex 2024, Czerwiec
Anonim
Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL
Projekt prostego czterokierunkowego asocjacyjnego kontrolera pamięci podręcznej w VHDL

W mojej poprzedniej instrukcji widzieliśmy, jak zaprojektować prosty bezpośrednio mapowany kontroler pamięci podręcznej. Tym razem idziemy o krok do przodu. Będziemy projektować prosty czterokierunkowy kontroler asocjacyjnej pamięci podręcznej. Korzyść ? Mniej miss rate, ale kosztem wydajności. Podobnie jak mój poprzedni blog, projektowalibyśmy i emulowali cały procesor, pamięć główną i środowisko pamięci podręcznej, aby przetestować nasz kontroler pamięci podręcznej. Mam nadzieję, że uznacie to za przydatne odniesienie do zrozumienia koncepcji i projektowania własnych kontrolerów pamięci podręcznej w przyszłości. Ponieważ model procesora (stół testowy) i system pamięci operacyjnej są dokładnie takie same, jak na moim poprzednim blogu, nie będę ich więcej wyjaśniał. Proszę zapoznać się z poprzednią instrukcją, aby uzyskać szczegółowe informacje na ten temat.

Krok 1: Specyfikacje

Specyfikacje
Specyfikacje

Szybki przegląd specyfikacji kontrolera pamięci podręcznej przedstawionych tutaj:

  • Four-way Set Associative Cache Controller (przejdź do tego łącza, jeśli szukasz Direct Mapped Cache Controller).
  • Jednobankowa, blokująca pamięć podręczna.
  • Zasady dotyczące zapisów dotyczących trafień związanych z zapisem.
  • Zasady dotyczące zapisywania w przypadku chybionych zapisów.
  • Polityka zastępowania pseudo-LRU drzewa (pLRU).
  • Tablica tagów w kontrolerze.
  • Konfigurowalne parametry.

Domyślne specyfikacje pamięci podręcznej i pamięci głównej są takie same, jak w przypadku mojej poprzedniej instrukcji. Proszę odnieść się do nich.

Krok 2: Widok RTL całego systemu

Widok RTL całego systemu
Widok RTL całego systemu

Pełna reprezentacja RTL modułu górnego jest pokazana na rysunku (bez procesora). Domyślne specyfikacje autobusów to:

  • Wszystkie magistrale danych są magistralami 32-bitowymi.
  • Szyna adresowa = Szyna 32-bitowa (ale tylko 10 bitów jest tutaj adresowanych przez pamięć).
  • Blok danych = 128 bitów (szyna szerokopasmowa do odczytu).
  • Wszystkie komponenty są sterowane tym samym zegarem.

Krok 3: Wyniki testu

Moduł Top został przetestowany na stanowisku testowym, które po prostu modeluje procesor bez potoku, tak jak zrobiliśmy to w poprzedniej instrukcji. Stanowisko testowe często generuje żądania odczytu/zapisu danych do pamięci. To kpi z typowych instrukcji „Load” i „Store”, wspólnych dla wszystkich programów wykonywanych przez procesor.

Wyniki testów pomyślnie zweryfikowały funkcjonalność kontrolera pamięci podręcznej. Poniżej znajdują się zaobserwowane statystyki testu:

  • Wszystkie sygnały odczytu/zapisu chybienia i trafienia zostały wygenerowane poprawnie.
  • Wszystkie operacje odczytu/zapisu danych zakończyły się pomyślnie na wszystkie cztery sposoby.
  • Algorytm pLRU został pomyślnie zweryfikowany pod kątem wymiany linii pamięci podręcznej.
  • Nie wykryto problemów z niespójnością/niespójnością danych.
  • Projekt został pomyślnie zweryfikowany w czasie dla Maxm. Częstotliwość taktowania = 100 MHz w płytce Xilinx Virtex-4 ML-403 (cały system), 110 MHz dla samego Cache Controllera.
  • Dla pamięci głównej wywnioskowano blokowe pamięci RAM. Wszystkie inne macierze zostały zaimplementowane na LUT.

Krok 4: Załączone pliki

Do tego bloga dołączone są następujące pliki:

  • Pliki. VHD kontrolera pamięci podręcznej, tablicy danych pamięci podręcznej, głównego systemu pamięci.
  • Stanowisko testowe.
  • Dokumentacja kontrolera pamięci podręcznej.

Uwagi:

  • Przejrzyj dokumentację, aby w pełni zrozumieć specyfikacje kontrolera pamięci podręcznej przedstawione tutaj.
  • Wszelkie zmiany w kodzie są zależne od innych modułów. Tak więc zmiany powinny być dokonywane rozsądnie.
  • Zwróć uwagę na wszystkie komentarze i nagłówki, które podałem.
  • Jeśli z jakiegoś powodu blokowe pamięci RAM nie są wywnioskowane dla pamięci głównej, ZREDUKUJ rozmiar pamięci, a następnie zmiany szerokości szyn adresowych w plikach i tak dalej. Aby ta sama pamięć mogła być zaimplementowana na LUT lub rozproszonej pamięci RAM. Oszczędzi to czas i zasoby routingu. Lub przejdź do odpowiedniej dokumentacji FPGA i znajdź kompatybilny kod dla bloku RAM i odpowiednio go edytuj, używając tych samych specyfikacji szerokości magistrali adresowej. Ta sama technika dla FPGA Altera.

Zalecana: