Procesory FPGA, jak znaleźć maksymalną prędkość?


14

Właśnie wchodzę w układy FPGA i jeśli dobrze rozumiem, łączysz bramki logiczne za pomocą kodu. Więc jeśli zaprojektuję procesor w Verilog, powinien połączyć ze sobą niektóre bramki logiczne i działać, ale skąd mam wiedzieć, jak szybko może działać mój własny procesor? Od czego to zależy?


12
@KingDuken Jestem ciekawy alternatywy dla Verilog do projektowania czegoś takiego jak procesor, który masz na myśli (nie VHDL, jak sądzę :))?
Eugene Sh.

1
@KingDuken Nie mam takiego problemu, już wykonałem swój procesor i jego architekturę na płycie montażowej i chcę przenieść go na układ FPGA. Moje pytanie brzmi: jak obliczyć, jaka byłaby maksymalna częstotliwość taktowania dla mojego procesora, co ją ogranicza?

4
Możesz chcieć znaleźć w Google „statyczną analizę czasową”
The Photon

14
@KingDuken Jako ktoś, kto zaprojektował dwa procesory, tak naprawdę nie zajmuje to dużo czasu. Możesz mieć działający procesor w ciągu 1-2 miesięcy, jeśli wiesz, co robisz.
user110971,

2
@KingDuken Ciekawostka: Sun / Oracle wydało kod źródłowy Verilog dla swoich procesorów UltraSPARC T1 i T2. Zdarzyło mi się zobaczyć kilka osobiście i wszyscy zadziałali. Do Twojej wiadomości, wygrali nawet SPECint_rate2006! : D To wyraźnie pokazuje, jak niemożliwe jest projektowanie procesorów w Verilog lub innych HDL. Zrobiłem to sam kilka razy jako hobby, i to naprawdę nie jest nic niemożliwego (jak raz to zrobisz, jak zwykle)
Richard the Spacecat

Odpowiedzi:


29

Prędkość projektu jest ograniczona przez kilka rzeczy. Największym najprawdopodobniej będzie opóźnienie propagacji w logice kombinatorycznej w twoim projekcie, zwane ścieżką krytyczną . Jeśli używasz szybkiej FPGA i piszesz HDL bardzo ostrożnie, prawdopodobnie możesz trafić 700 MHz na coś w rodzaju Virtex Ultrascale +. W przypadku niższych układów FPGA, na przykład Spartan 6, rozsądna liczba to prawdopodobnie około 250 MHz. Wymaga to potokowania wszędzie, więc masz absolutną minimalną ilość logiki kombinatorycznej między stanowymi komponentami (minimalizacja poziomów logiki), niską liczbę rozrzutów (minimalizacja obciążenia elementów logicznych) i brak zatłoczonych gniazd szczurów (efektywne ścieżki trasowania).

Logika tkaninowa różnych układów FPGA będzie miała różne parametry czasowe. Szybsze, droższe układy FPGA będą miały mniejsze opóźnienia, w wyniku czego mogą osiągnąć wyższe częstotliwości taktowania z tym samym projektem lub uruchomić bardziej złożony projekt lub projekt z mniejszą liczbą potoków na tej samej częstotliwości. Wydajność w ramach określonego procesu może być podobna - na przykład Kintex Ultrascale i Virtex Ultrascale są tworzone w tym samym procesie i mają podobne opóźnienia komórek i routingu. Nie da się powiedzieć, jak szybko dany projekt będzie przebiegał bez przepuszczenia go przez łańcuch narzędzi i spojrzenia na raporty czasowe z analizy statycznej synchronizacji.

Robiąc łańcuch narzędzi w celu ustalenia maksymalnej prędkości zegara, należy pamiętać, że narzędzia są sterowane taktowaniem: będą próbować spełnić określone ograniczenia czasowe. Jeśli nie zostaną określone ograniczenia czasowe, wynik może być bardzo słaby, ponieważ narzędzia nie będą próbowały zoptymalizować projektu pod kątem szybkości. Zasadniczo narzędzia będą musiały być uruchamiane kilka razy z różnymi ograniczeniami okresu zegara, aby znaleźć maksymalną osiągalną częstotliwość zegara.

Jeśli możesz zoptymalizować swój projekt, aby ścieżka krytyczna nie była granicą, napotkasz ograniczenia w generowaniu i dystrybucji zegara (PLL, DCM, bufory zegara i globalne sieci zegarowe). Limity te można znaleźć w arkuszach danych części, ale zbliżanie się do nich za pomocą nietrywialnego projektu jest trudne. Pracowałem na Virtex Ultrascale przy 500 MHz, ale była to tylko garść liczników, które dostarczały sygnały wyzwalające do innych komponentów.


22

Syntetyzujesz swój projekt w technologii docelowej (konkretny FPGA) i pozwalasz statycznym narzędziom do analizy taktowania powiedzieć ci, jaki jest minimalny okres zegara.

Lub, w pierwszej kolejności, dodajesz ograniczenia do projektu, a następnie narzędzia dadzą ci znać, czy zostały spełnione.


Co spowodowałoby, że ograniczenia nie byłyby spełnione? Co ogranicza okres zegarowy? Czy to zależy od FPGA, którego używam, czy też jest takie samo dla całej rodziny FPGA? (A może dla każdego istniejącego FPGA?)

3
To zależy od szybkości FPGA i od tego, ile logiki kombinatorycznej umieściłeś pomiędzy FF w swoim projekcie.
Dave Tweed

9
@ appmaker1358, czy próbowałeś przeczytać arkusz danych FPGA? Ocena prędkości jest jednym z najważniejszych parametrów wymienionych w arkuszu danych.
Photon,

2
Szybkość będzie ograniczona najdłuższą ścieżką czasową, która będzie najdłuższym opóźnieniem propagacji poprzez logikę i routing między dwoma stanowymi elementami (przerzutniki, pamięci RAM itp.). Różne układy FPGA będą miały różne parametry czasowe, a zatem konstrukcja osiągnie różne prędkości dla różnych układów FPGA. Niektóre części FPGA są jednak ograniczone częstotliwościami - komponenty dystrybucji zegara i PLL zwykle mają ograniczenia, ale trudno jest napisać HDL, który zbliża się do tych dla nietrywialnych projektów.
alex.forencich 15.07.19

3
Ponadto zawsze musisz dodać ograniczenia czasowe. Umieszczenie i routing uwzględniają ograniczenia i starają się je spełnić. Jeśli nie dodasz żadnych ograniczeń, narzędzia nie będą się bardzo starać i nie uzyskasz bardzo optymistycznej liczby.
alex.forencich

13

Szybkość, z jaką Twój procesor będzie działał, będzie oparta na twoim najdłuższym opóźnieniu między flopami w twoim syntezowanym projekcie. Opóźnienie od flopa do flopa obejmie od zegara do Q, routing, logikę / LUT i czas konfiguracji flopa. Te dodane razem tworzą krytyczną ścieżkę pomiaru czasu, którą można sprawdzić w raporcie wyjściowym raportu czasu za pomocą narzędzia Place-and-Route.

Istnieją całe dyscypliny projektowe poświęcone tworzeniu architektur, które minimalizują to opóźnienie w celu maksymalnego wykorzystania danego procesu - tworzenie potoków, wykonywanie równoległe, wykonywanie spekulacyjne i tak dalej. To fascynujące, wymagające zadanie, wyciskanie ostatniej uncji wydajności z FPGA (lub, w tym przypadku, ASIC).

To powiedziawszy, dostawcy FPGA podadzą różne stopnie prędkości dla swoich części, które odpowiadają maksymalnej częstotliwości MHz. Na przykład Xilinx Artix -2 to z grubsza część „250 MHz”, chociaż jest zdolna do wyższych częstotliwości taktowania w przypadku projektów o dużej potokowości.

Kiedy wchodzisz w interakcję z narzędziami do syntezy FPGA i narzędziami do wyznaczania trasy, musisz dać ograniczenia dla swojego projektu. Informują one narzędzie o docelowym opóźnieniu między flopami, które próbujesz osiągnąć. W Quartus (Altera) i Vivado (Xilinx) ograniczenia te używają składni o nazwie SDC, co oznacza ograniczenia projektowe Synopsys. SDC pochodziła początkowo ze świata ASIC i została również przyjęta przez przemysł FPGA. Poznaj SDC - pomoże ci uzyskać pożądane wyniki.

Altera i Xilinx mają społeczności online, które pomagają w użyciu składni SDC i wielu innych tematów.

To powiedziawszy, jeśli zależy ci na szybkości, powinieneś rozważyć układ FPGA z twardym makrem procesora, takim jak Zynq.


-2

Procesor nie będzie działał szybciej niż zegary globalne, więc ustaliłoby to górną granicę szybkości jego działania. Zazwyczaj informacje o maksymalnej częstotliwości taktowania są wymienione w arkuszach danych FGPA.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.