Logo Xilinx

Przewodnik po szacowaniu wydajności Xilinx DDR2 MIG 7

Xilinx_DDR2_MIG_7_Produkt-szacowania wydajności

Ważna uwaga: Ten plik PDF z zapisem odpowiedzi do pobrania ma na celu zwiększenie jego użyteczności i czytelności. Należy pamiętać, że rekordy odpowiedzi są Weboparte na treściach, które są często aktualizowane w miarę pojawiania się nowych informacji. Przypominamy o odwiedzeniu pomocy technicznej Xilinx Webstrona i review (Xilinx Answer 63234), aby uzyskać najnowszą wersję tej odpowiedzi.

Wstęp

Ze względu na sposób konstrukcji pamięci DDR2 i DDR3 oraz konstrukcję kontrolera serii MIG 7, wydajność nie jest oczywista.
Wymaga to zrozumienia różnych parametrów rozrządu Jedec i architektury kontrolera, a w celu uzyskania szacunków konieczne będzie przeprowadzenie symulacji.
Ogólna zasada określania wydajności jest taka sama, ale ten dokument przedstawia łatwy sposób uzyskania wydajności przy użyciu MIG exampprojekt le za pomocą stanowiska testowego i bodźca filejest tutaj załączony.

Efektywna przepustowość

Magistrala danych DRAM osiąga niemal szczytową przepustowość tylko podczas impulsów odczytu i zapisu, a jej obciążenie obniża efektywną szybkość transmisji danych.
Kilku byłychampmniejsze koszty ogólne to:

  • czas wstępnego ładowania przy dostępie do wierszy w tym samym banku (adres dostępu nie znajduje się w tym samym trafieniu na stronę wiersza)
  • czas odzyskiwania zapisu, aby zmienić dostęp z zapisu na dostęp do odczytu
  • czas pracy magistrali umożliwiający zmianę dostępu z odczytu na zapis

Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 28
Efektywna przepustowość = szczytowa przepustowość * wydajność 

Generacja projektów MIG

Szczegółowe informacje na temat MIG IP i ex. można znaleźć w rozdziale 586 UG1ampgeneracja projektów le.
Przed uruchomieniem symulacji wydajności urządzeń MIG 7 Series wykonaj poniższe czynności, aby upewnić się, że środowisko symulacyjne działa prawidłowo. Otwórz plik MIG exampzaprojektuj plik i zmapuj odpowiednie biblioteki, uruchom symulację i upewnij się, że w transkrypcji widać komunikat „test zaliczony”.
Aby zademonstrować przepływ, wygenerowałem adres IP MIG dla xc7vx690tffg1761-2 i wywołałem exampprojekt.
Należy zwrócić uwagę na dwie rzeczy: bity adresu pamięci i wybór mapowania adresu pamięci.
Na przykładample, wybrałem MT41J128M8XX-125 w opcjach rozwijanych części pamięci.Xilinx DDR2 MIG-7-Oszacowanie-wydajności-rys.-1

Dla wybranej części pamięci z rysunku 1 wiersz = 14, kolumna = 10 i bank = 3, więc app_addr_width = wiersz + kolumna + bank + ranga = 28 Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 2

Możesz wybrać kolumnę BANK_ROW_COLUMN lub ROW BANK.
Opuściłem kolumnę ROW BANK, która jest domyślnym mapowaniem adresu.

Example design Symulacja z syntezowalnym stanowiskiem testowym

W ustawieniach symulacji wybierz opcję QuestaSim/ModelSim Simulator i przejdź do lokalizacji skompilowanych bibliotek.
Szczegółowe informacje na temat wskazywania ścieżki instalacji narzędzi innych firm, wybierania docelowego symulatora oraz kompilowania i mapowania bibliotek można znaleźć w (UG900) Podręcznik użytkownika Vivado Design Suite Symulacja logicznaOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 3

Uruchom symulację za pomocą GUI (kliknij zakładkę Uruchom symulację w menedżerze projektu) i upewnij się, że w transkrypcji widzisz komunikat „test zaliczony”.

Modyfikacje RTL symulacji wydajności

  1. Kliknij prawym przyciskiem myszy zakładkę źródła, wybierz „dodaj lub utwórz źródła symulacji” i przejdź do pliku mig7_perfsim_traffic_generator.sv file i kliknij Zakończ, aby go dodać.
  2. Kliknij prawym przyciskiem myszy kartę źródła, wybierz „dodaj lub utwórz źródła symulacji”, przejdź do pliku perfsim_stimulus.txt i kliknij Zakończ, aby go dodać.
  3. Skomentuj byłegoampInstancja le_top w pliku sim_tb_top.v file.
  4. Dodaj poniższe linie RTL do sim_tb_top,v
  • parametr lokalny APP_ADDR_WIDTH = 28;
  • parametr lokalny APP_DATA_WIDTH = 64;
  • parametr lokalny APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
  • parametr lokalny MEM_ADDR_ORDER = „BANK_ROW_COLUMN”;
  • parametr lokalny BANK_WIDTH = 3;
  • parametr lokalny RANK_WIDTH = 1;
  • przewód [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • przewód [2:0] c0_ddr3_app_cmd;
  • przewód c0_ddr3_app_en;
  • przewód [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • przewód c0_ddr3_app_wdf_end;
  • przewód [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • przewód c0_ddr3_app_wdf_wren;
  • przewód [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • przewód c0_ddr3_app_rd_data_end;
  • przewód c0_ddr3_app_rd_data_valid;
  • przewód c0_ddr3_app_rdy;
  • przewód c0_ddr3_app_wdf_rdy;
  • przewód c0_data_compare_error;
  • drut ui_clk;
  • przewód ui_clk_sync_rst;
  • drut app_sr_req = 0;
  • przewód app_ref_req = 0;
  • drut aplikacja_zq_req =0;
  • przewód c0_app_wdf_mask =0;

Tworzenie instancji kontrolera pamięci FPGA

mig_7series_0_mig u_mig_7series_0_mig (
// Porty interfejsu pamięci

  • .ddr3_addr (ddr3_addr_fpga),
  • .ddr3_ba (ddr3_ba_fpga),
  • .ddr3_cas_n (ddr3_cas_n_fpga),
  • .ddr3_ck_n (ddr3_ck_n_fpga),
  • .ddr3_ck_p (ddr3_ck_p_fpga),
  • .ddr3_cke (ddr3_cke_fpga),
  • .ddr3_ras_n (ddr3_ras_n_fpga),
  • .ddr3_reset_n (ddr3_reset_n),
  • .ddr3_we_n (ddr3_we_n_fpga),
  • .ddr3_dq (ddr3_dq_fpga),
  • .ddr3_dqs_n (ddr3_dqs_n_fpga),
  • .ddr3_dqs_p (ddr3_dqs_p_fpga),
  • .init_calib_complete (init_calib_complete),
  • .ddr3_cs_n (ddr3_cs_n_fpga),
  • .ddr3_dm (ddr3_dm_fpga),
  • .ddr3_odt (ddr3_odt_fpga),

// Porty interfejsu aplikacji

  • .app_addr (c0_ddr3_app_addr),
  • .app_cmd (c0_ddr3_app_cmd),
  • .app_en (c0_ddr3_app_en),
  • .app_wdf_data (c0_ddr3_app_wdf_data),
  • .app_wdf_end (c0_ddr3_app_wdf_end),
  • .app_wdf_wren (c0_ddr3_app_wdf_wren),
  • .app_rd_data (c0_ddr3_app_rd_data),
  • .app_rd_data_end (app_rd_data_end),
  • .app_rd_data_valid (c0_ddr3_app_rd_data_valid),
  • .app_rdy (c0_ddr3_app_rdy),
  • .app_wdf_rdy (c0_ddr3_app_wdf_rdy),
  • .app_sr_req (app_sr_req),
  • .app_ref_req (app_ref_req),
  • .app_zq_req (app_zq_req),
  • .app_sr_active (app_sr_active),
  • .app_ref_ack (app_ref_ack),
  • .app_zq_ack (app_zq_ack),
  • .ui_clk (ui_clk),
  • .ui_clk_sync_rst (ui_clk_sync_rst),
  • .app_wdf_mask (c0_ddr3_app_wdf_mask),

// Porty zegara systemowego

  • .sys_clk_i (sys_clk_i),

// Referencyjne porty zegara

  • .clk_ref_i (clk_ref_i),
  • .sys_rst (sys_rst)
  • );

Tworzenie instancji generatora ruchu wydajnościowego

mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (RANK_WIDTH),
.BANK_WIDTH (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK ),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)

u_traffic_gen
(
.clk (ui_clk ),
.rst (ui_clk_sync_rst ),
.init_calib_complete (init_calib_complete),
.cmp_error (c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy ),
.app_rd_data_valid (c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy (c0_ddr3_app_rdy),
.app_cmd (c0_ddr3_app_cmd),
.app_addr (c0_ddr3_app_addr ),
.app_en (c0_ddr3_app_en ),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.app_wdf_data (c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);

  • 5. Zmodyfikuj APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH i BANK_WIDTH zgodnie z wyborem części pamięci.
    Wartości można uzyskać z _mig.v file.
  • Podświetlona na żółto nazwa instancji mig_7series_0_mig może się różnić w zależności od nazwy komponentu podczas tworzenia adresu IP. Sprawdź, czy wybrałeś inną nazwę i odpowiednio ją zmień.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 4
  • Po wygenerowaniu adresu IP otwórz plik _mig.v file i sprawdź krzyżowo wszelkie różnice w nazwach sygnałów LHS i popraw je.
  • app_sr_req, app_ref_req i app_zq_req należy zainicjować na 0.
  • jako eksample_top.v został skomentowany i nowy files zostaną dodane, prawdopodobnie zobaczysz „?” obok
    mig_7series_0_mig.v file w źródłach symulacyjnych.
    Aby zmapować prawidłowe file, kliknij prawym przyciskiem myszy mig_7series_0_mig.v, wybierz „Dodaj źródła”, Przeglądaj
    /mig_7seria_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    i dodaj plik mig_7series_0_mig_sim.v file.
  • Jeśli zobaczysz "?" dla podstawy files, dodaj wszystkie RTL files w folderach clocking, kontroler, ip_top, phy i UI.
  • Po wprowadzeniu zmian RTL i wszystkich wymaganych files zostaną dodane do źródeł symulacji, hierarchia powinna być podobna do tej na rysunku 5.
    Ten files podświetlone na czerwono są nowo dodane, a „?” jest oczekiwany w modułach powiązanych z ECC, ponieważ w wybranej konfiguracji pamięci opcja ECC jest wyłączona.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 5

Bodziec File Opis
Każdy wzór bodźca ma 48 bitów, a format opisano na rysunkach 6-1 do 6-4.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 6

Kodowanie adresu (adres [35:0])

Adres jest kodowany w bodźcu zgodnie z rysunkami 7-1 do ryc. 7-6. Wszystkie pola adresowe należy wprowadzić w formacie szesnastkowym. Wszystkie pola adresowe mają szerokość podzielną przez cztery i można je wprowadzić w formacie szesnastkowym. Stanowisko testowe wysyła tylko wymagane bity pola adresowego do kontrolera pamięci.
Na przykładample, w konfiguracji z ośmioma bankami, do kontrolera pamięci wysyłane są tylko bity banku [2:0], a pozostałe bity są ignorowane. Dodatkowe bity w polu adresu umożliwiają wprowadzenie adresu w formacie szesnastkowym.
Należy potwierdzić, że wpisana wartość odpowiada szerokości danej konfiguracji.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 7

  • Adres kolumny (Kolumna[11:0]) – Adres kolumny w bodźcu ma maksymalnie 12 bitów, ale należy to rozwiązać w oparciu o parametr szerokości kolumny ustawiony w projekcie.
  • Adres wiersza (wiersz[15:0]) – Adres wiersza w bodźcu ma maksymalnie 16 bitów, ale należy to rozwiązać w oparciu o parametr szerokości wiersza ustawiony w projekcie.
  • Adres banku (Bank[3:0]) – Adres banku w bodźcu składa się z maksymalnie czterech bitów, ale należy to rozwiązać w oparciu o parametr szerokości banku ustawiony w projekcie.
  • Adres rangi (Ranga [3:0]) – Adres rangi w bodźcu jest podawany w postaci maksymalnie czterech bitów, ale należy to rozwiązać w oparciu o parametr szerokości rangi ustawiony w projekcie.
    Adres jest tworzony na podstawie najwyższego poziomu parametru MEM_ADDR_ORDER i wysyłany do interfejsu użytkownika

Powtórzenie polecenia (Powtórzenie polecenia [7:0])
Liczba powtórzeń poleceń to liczba powtórzeń danego polecenia w interfejsie użytkownika. Adres dla każdego powtórzenia zwiększa się o 8. Maksymalna liczba powtórzeń wynosi 128.
Stanowisko testowe nie sprawdza granicy kolumny i zawija, jeśli podczas przyrostów zostanie osiągnięty maksymalny limit kolumny.
128 poleceń wypełnia stronę. W przypadku dowolnego adresu kolumny innego niż 0 liczba powtórzeń wynosząca 128 kończy się przekroczeniem granicy kolumny i zawijaniem do początku adresu kolumny.

Wykorzystanie autobusu
Wykorzystanie magistrali jest obliczane w interfejsie użytkownika, biorąc pod uwagę całkowitą liczbę odczytów i zapisów, i stosuje się następujące równanie:

Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 8

  • BL8 zajmuje cztery cykle zegara pamięci
  • end_of_stimulus to czas, w którym wszystkie polecenia zostaną wykonane.
  • calib_done to czas zakończenia kalibracji.

Example Wzory
Te byłeamppliki są oparte na MEM_ADDR_ORDER ustawionym na BANK_ROW_COLUMN.

Wzór pojedynczego odczytu
00_0_2_000F_00A_1 – Ten wzór jest pojedynczym odczytem z 10. kolumny, 15. rzędu i drugiego banku.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 9Pojedynczy wzór zapisu
00_0_1_0040_010_0 – Ten wzór to pojedynczy zapis w 32. kolumnie, 128. wierszu i pierwszym banku.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 10Pojedynczy zapis i odczyt pod tym samym adresem
00_0_2_000F_00A_0 – Ten wzorzec to pojedynczy zapis do 10. kolumny, 15. wiersza i drugiego banku.
00_0_2_000F_00A_1 – Ten wzór to pojedynczy odczyt z 10. kolumny, 15. rzędu i drugiego bankuOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 11

Wiele zapisów i odczytów pod tym samym adresem
0A_0_0_0010_000_0 – Odpowiada to 10 zapisom o adresach zaczynających się od 0 do 80, które można zobaczyć w kolumnie.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 12

0A_0_0_0010_000_1 – Odpowiada to 10 odczytom z adresami zaczynającymi się od 0 do 80, które można zobaczyć w kolumnie.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 13

Zawijanie strony podczas zapisu
0A_0_2_000F_3F8_0 – Odpowiada to 10 zapisom z adresem kolumny zawiniętym na początek strony po jednym zapisie.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 14

Symulacja generatora ruchu wydajnościowego

W tym momencie skończyłeś z MIG exampsymulacja projektu. Oznacza to, że konfiguracja symulacji jest gotowa, dokonano modyfikacji RTL symulacji wydajności, nowa hierarchia symulacji jest prawidłowa i zrozumiałeś wzorce bodźców. Uruchom symulację jeszcze raz z 16 zapisami i odczytami w pliku perfsim_stimulus.txt.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 15

Wykonaj run-all, poczekaj, aż sygnał init_calib_complete zostanie potwierdzony, a będziesz mógł zobaczyć proponowaną liczbę zapisów i odczytów. Symulacja zostanie wówczas zatrzymana. Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 16

Gdy zostaniesz poproszony o zakończenie symulacji, wybierz Nie i przejdź do okna transkrypcji, w którym będziesz mógł zobaczyć statystyki wydajności. Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 17

Jeśli wybierzesz „wyjdź z symulacji” statystyki wydajności zostaną zapisane w pliku a file nazwany mig_band_width_output.txt znajdujący się w pliku sim_1/behave falcówka.

Exampścieżka katalogu le:-
/mig_7seria_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 18

Można się zastanawiać, dlaczego procenttagWykorzystanie magistrali wynosi tylko 29. Uruchom ponownie symulację z tymi samymi ustawieniami IP, ale zmieniając jedynie bodziec file do 256 zapisów i 256 odczytów

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Zobaczysz teraz procenttage jako 85, co oznacza, że ​​DDR3 zapewnia lepsze wykorzystanie magistrali w przypadku długich sekwencji zapisu i odczytu. Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 19

Ogólne sposoby poprawy wydajności

Czynniki wpływające na efektywność można podzielić na dwie sekcje:

  1. Specyficzne dla pamięci
  2. Specyficzny dla kontroleraOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 20

Rysunek 9 daje Ci przewagęview terminów specyficznych dla pamięci.
W przeciwieństwie do pamięci SRAM i pamięci blokowych wydajność DDR2 lub DDR3 to nie tylko maksymalna szybkość transmisji danych.

Zależy to od wielu czynników czasowych, w tym:

  • tRCD: Opóźnienie polecenia wiersza (lub opóźnienie ras do cas).
  • tCAS(CL): Opóźnienie strobowania adresu kolumny.
  • TRP: Opóźnienie wstępnego ładowania rzędu.
  • TRAS: Czas aktywności wiersza (aktywuj, aby dokonać wstępnej zmiany).
  • tRC: Czas cyklu wiersza. tRC = tRAS + tRP
  • tRAC: Opóźnienie w dojeździe do Radomia. tRAC = tRCD + tCAS
  • tCWL: Opóźnienie zapisu Cas.
  • TZQ: Czas kalibracji ZQ.
  • tRFC: Czas cyklu odświeżania wiersza
  • TWTR: Opóźnienie zapisu do odczytu. Ostatnia transakcja zapisu do czasu polecenia odczytu.
  • TWR: Napisz czas odzyskiwania. Ostatni zapis transakcji do czasu wstępnego ładowania

Czas wszystkich wymienionych parametrów zależy od rodzaju używanej pamięci i stopnia szybkości części pamięci.
Więcej szczegółów na temat definicji i specyfikacji taktowania można znaleźć w DDR2 DDR3 JEDEC lub w dowolnym arkuszu danych urządzenia pamięci.

Wydajność zależy głównie od sposobu dostępu do pamięci. Różne wzorce adresów dają różne wyniki wydajności.

Narzuty taktowania pamięci

  1. Czas aktywacji i czas wstępnego ładowania przy zmianie na nowe banki/wiersze lub zmianie wierszy w tym samym banku. Zatem jeśli zmniejszysz liczbę zmian wierszy, może to spowodować usunięcie tRCD i tRP.
  2. Wysyłaj ciągłe polecenia zapisu lub odczytu - Utrzymanie taktowania tCCD.
  3. Minimalizuj zmianę poleceń zapisu na odczyt i odczytu na zapis – Czas przywracania zapisu w celu zmiany dostępu do odczytu, czas realizacji magistrali w celu zmiany z odczytu na zapis
  4. Ustaw odpowiedni interwał odświeżania.
    • DDR3 SDRAM wymaga cykli odświeżania w średnim okresowym odstępie tREFI.
    • Można wcześniej wydać maksymalnie 8 dodatkowych poleceń odświeżania („wciągniętych”). Nie zmniejsza to liczby odświeżeń, ale maksymalny odstęp między dwoma otaczającymi poleceniami Odśwież jest ograniczony do 9 × tREFIOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 21
  • Skorzystaj ze wszystkich banków – Preferowany jest odpowiedni mechanizm adresowania.
    • Kolumna wiersza-banku: W przypadku transakcji zachodzącej w sekwencyjnej przestrzeni adresowej rdzeń automatycznie otwiera ten sam wiersz w następnym banku urządzenia DRAM, aby kontynuować transakcję po osiągnięciu końca istniejącego wiersza. Dobrze nadaje się do zastosowań wymagających przesyłania dużych pakietów danych do kolejnych lokalizacji adresowych.
    • Kolumna wiersza banku: Po przekroczeniu granicy wiersza bieżący wiersz zostanie zamknięty i otwarty zostanie kolejny wiersz w tym samym banku. MSB to adres banku, za pomocą którego można przełączać się między różnymi bankami. Nadaje się do krótszych, bardziej losowych transakcji do jednego bloku pamięci na pewien okres czasu, a następnie przeskoku do innego bloku (banku)
  • Długość serii
    • BL 8 jest obsługiwany dla DDR3 w serii 7. BC4 ma bardzo niską sprawność, która wynosi mniej niż 50%. Dzieje się tak, ponieważ czas wykonania BC4 jest taki sam jak BL8. Dane są po prostu maskowane wewnątrz komponentu.
    • W przypadkach, gdy nie chcesz zapisywać w trybie pełnej serii, można rozważyć maskę danych lub zapis po odczycie.
  • Ustaw odpowiedni interwał ZQ (tylko DDR3)
    Sterownik wysyła zarówno polecenia kalibracji ZQ Short (ZQCS), jak i ZQ Long (ZQCL).
    • Przestrzegaj standardu DDR3 Jedec
    • Kalibrację ZQ omówiono w sekcji 5.5 normy JEDEC Spec JESD79-3 DDR3 SDRAM
    • Kalibracja ZQ kalibruje zakończenie matrycy (ODT) w regularnych odstępach czasu, aby uwzględnić różnice w VT
    • Logika jest zawarta w bank_common.v/vhd
    • Parametr Tzqcs określa szybkość, z jaką polecenie kalibracji ZQ jest wysyłane do pamięci
    • Można wyłączyć licznik i ręcznie wysłać za pomocą app_zq_req, jest to podobne do ręcznego wysyłania odświeżenia.
      Aby uzyskać szczegółowe informacje, zobacz (odpowiedź Xilinx 47924).Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 22

Koszty ogólne kontrolera

  1. Odczyty okresowe – patrz (Odpowiedź Xilinx 43344) Więcej szczegółów.
    • Nie zmieniaj okresu odczytu
    • Pomiń okresowe odczyty podczas zapisów i podaj liczbę pominiętych odczytów przed prawdziwym odczytem
  2. Zmiana kolejności – patrz (Odpowiedź Xilinx 34392) Więcej szczegółów.
    W przypadku projektów interfejsu użytkownika i interfejsu AXI zaleca się włączenie tej opcji.
    • Zmiana kolejności to logika, która przewiduje kilka poleceń i zmienia kolejność poleceń użytkownika, tak aby polecenia inne niż pamięć nie zajmowały prawidłowego pasma. Wydajność dotyczyła także rzeczywistego wzorca ruchu.
    • W oparciu o wzorzec adresu, zmiana kolejności pomaga pominąć wstępne ładowanie i aktywację poleceń oraz sprawia, że ​​tRCD i tRP nie zajmują szerokości pasma danych.Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 23
  3. Spróbuj zwiększyć liczbę automatów bankowych.
    • Większość logiki kontrolera znajduje się w maszynach bankowych i odpowiadają one bankom DRAM
    • Dany automat bankowy zarządza pojedynczym bankiem DRAM w danym momencie.
    • Przypisanie automatu bankowego jest dynamiczne, więc nie jest konieczne posiadanie automatu bankowego dla każdego banku fizycznego.
    • Urządzenia bankowe można konfigurować, ale jest to kompromis między obszarem a wydajnością.
    • Dopuszczalna liczba bankomatów wynosi od 2 do 8.
    • Domyślnie 4 urządzenia bankowe są konfigurowane za pomocą parametrów RTL.
    • Aby zmienić automaty bankowe, należy wziąć pod uwagę parametr nBANK_MACHS = 8 zawarty w memc_ui_top Exampplik dla 8 automatów bankowych – nBANK_MACHS = 8

Znasz już czynniki wpływające na wydajność.
Rozważ aplikację nadrzędną, która zapewnia 512 bajtów danych na pakiet i musisz zapisać je w różnych lokalizacjach pamięci. Ponieważ 512 bajtów danych równa się 64 seriom danych DDR3, uruchom ponownie example design z bodźcem file zawierający 512 zapisów, 512 odczytów i przełączanie wierszy na każde 64 zapisy lub odczyty:

  • 3f_0_0_0000_000_0
  • 3f_0_0_0001_000_0
  • 3f_0_0_0002_000_0
  • 3f_0_0_0003_000_0
  • 3f_0_0_0004_000_0
  • 3f_0_0_0005_000_0
  • 3f_0_0_0006_000_0
  • 3f_0_0_0007_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_0_0001_000_1
  • 3f_0_0_0002_000_1
  • 3f_0_0_0003_000_1
  • 3f_0_0_0004_000_1
  • 3f_0_0_0005_000_1
  • 3f_0_0_0006_000_1
  • 3f_0_0_0007_000_1

Pod koniec symulacji zobaczysz, że wykorzystanie autobusów wynosi 77 procent. Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 24

Rysunek 11: Statystyki wydajności dla 512 zapisów i 512 odczytów – przełączanie wierszy dla 64 zapisów i odczytów. 

Możesz teraz zastosować wiedzę zdobytą w poprzedniej sekcji, aby poprawić wydajność. Z view aby wykorzystać wszystkie banki, zamiast zmieniać wiersz, zmodyfikuj wzorzec adresu, aby zmienić bank, jak pokazano poniżej.
Jest to równoznaczne z ustawieniem ROW_BANK_Column w ustawieniu mapowania adresów pamięci w interfejsie graficznym MIG.

  • 3f_0_0_0000_000_0
  • 3f_0_1_0000_000_0
  • 3f_0_2_0000_000_0
  • 3f_0_3_0000_000_0
  • 3f_0_4_0000_000_0
  • 3f_0_5_0000_000_0
  • 3f_0_6_0000_000_0
  • 3f_0_7_0000_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_1_0000_000_1
  • 3f_0_2_0000_000_1
  • 3f_0_3_0000_000_1
  • 3f_0_4_0000_000_1
  • 3f_0_5_0000_000_1
  • 3f_0_6_0000_000_1
  • 3f_0_7_0000_000_1

Pod koniec symulacji zobaczysz, że wcześniejsze 77% wykorzystania autobusów wynosi teraz 87! Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 25

Jeśli nadal potrzebujesz wyższej wydajności, możesz wybrać duże pakiety o rozmiarze 1024 lub 2048 bajtów lub rozważyć ręczne odświeżenie.

Notatka: Xilinx nie zachęca do pomijania odświeżania kontrolera, ponieważ nie jesteśmy pewni, czy uda Ci się dotrzymać czasu automatycznego odświeżania Jedec, co wpływa na niezawodność danych.
Od strony kontrolera możesz zmienić nBANk_MACH i zobaczyć poprawę wydajności.
Może to jednak mieć wpływ na czas projektowania, patrz (Odpowiedź Xilinx 36505) aby uzyskać szczegółowe informacje na temat nBANk_MACHOszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 26

Otwórz plik core_name_mig_sim.v file i zmień parametry nBANK_MACHS z 4 na 8 i ponownie uruchom symulację. Aby wartość parametru zaczęła obowiązywać na sprzęcie, należy zaktualizować plik core_name_mig.v file.
Użyłem tego samego schematu, w którym wykorzystanie autobusu wynosiło 87% (rysunek -12).
Przy ustawieniu nBANK_MACHS na 8, wydajność wynosi teraz 90%. Oszacowanie wydajności Xilinx DDR2 MIG 7 – rys. 27

Należy również pamiętać, że kontrolery ½ i ¼ negatywnie wpływają na wydajność ze względu na opóźnienia.
Na przykładample, ponieważ możemy wysyłać polecenia tylko co 4 cykle CK, czasami konieczne jest dodatkowe dopełnienie przy przestrzeganiu minimalnych specyfikacji taktowania pamięci DRAM, co może zmniejszyć wydajność w stosunku do teoretycznej.
Wypróbuj różne sterowniki, aby znaleźć taki, który odpowiada Twoim wymaganiom w zakresie wydajności.

Odniesienia

  1. Zynq-7000 AP SoC i układy FPGA serii 7 MIS v2.3 [UG586]
  2. Centrum rozwiązań Xilinx MIG http://www.xilinx.com/support/answers/34243.html

Historia rewizji
13 – Pierwsze wydanie

Ściągnij PDF: Przewodnik po szacowaniu wydajności Xilinx DDR2 MIG 7

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *