Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
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
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.