PL230129B1 - Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA - Google Patents

Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA

Info

Publication number
PL230129B1
PL230129B1 PL407040A PL40704014A PL230129B1 PL 230129 B1 PL230129 B1 PL 230129B1 PL 407040 A PL407040 A PL 407040A PL 40704014 A PL40704014 A PL 40704014A PL 230129 B1 PL230129 B1 PL 230129B1
Authority
PL
Poland
Prior art keywords
clb
block
access
clbs
memory
Prior art date
Application number
PL407040A
Other languages
English (en)
Other versions
PL407040A1 (pl
Inventor
Rafał Kiełbik
Piotr AMROZIK
Piotr Amrozik
Andrzej Napieralski
Grzegorz Jabłoński
Piotr ZAJĄC
Piotr Zając
Igor Zarzycki
Original Assignee
Politechnika Lodzka
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Politechnika Lodzka filed Critical Politechnika Lodzka
Priority to PL407040A priority Critical patent/PL230129B1/pl
Publication of PL407040A1 publication Critical patent/PL407040A1/pl
Publication of PL230129B1 publication Critical patent/PL230129B1/pl

Links

Landscapes

  • Logic Circuits (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Opis wynalazku
Przedmiotem wynalazku jest układ elektroniczny typu FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie typu FPGA.
Układy typu FPGA (ang. Field Programmable Gate Array) to reprogramowalne układy logiczne. Układy tego typu zawierają macierz (ang. Cell Array) konfigurowalnych bloków logicznych CLB (ang. Configurable Logic Block). Poszczególne bloki są łączone ze sobą za pośrednictwem linii przebiegających wewnątrz poziomych i pionowych traktów połączeniowych (ang. routing channels) oraz programowalnych matryc kluczy połączeniowych umieszczonych w miejscu krzyżowania się traktów. Na obrzeżach matrycy bloków logicznych znajdują się programowalne bloki IOB (wejściowo-wyjściowe). Układy tego typu mogą być wykorzystywane jako elementy składowe rekonfigurowalnych procesorów, jako koprocesory, czy jako systemy dedykowane do różnego typu zadań.
W znanych dotychczas rozwiązaniach mechanizmy dostępu bloków CLB do pamięci zewnętrznej ograniczały możliwości swobodnej konfiguracji układu FPGA w sposób uniemożliwiający dowolne przyporządkowanie bloków CLB do odrębnych partycji (mechanizm podziału bloków na partycje zostanie omówiony w dalszej części opisu), z których każda miałaby swobodny dostęp do pamięci zewnętrznej.
Patent US 7237091 przedstawia architekturę komputera wieloprocesorowego, zawierającą wiele układów FPGA, z których każdy jest przystosowany do wykonywania określonych algorytmów. Rozwiązanie to nie umożliwia realizacji w ramach jednego układu FPGA odrębnie konfigurowalnych algorytmów, które miałyby zapewniony niezależny dostęp do pamięci.
Patent US 7282951 przedstawia podejście, w którym problem dostępu fragmentów układu FPGA do pamięci jest rozwiązany na poziomie technologicznym, poprzez nałożenie - w jednym układzie scalonym - struktury FPGA na strukturę pamięci i połączenie ich gęstą siecią przelotek. Rozwiązanie to, choć bardzo efektywne w przypadku, gdy każdy fragment układu FPGA pracuje na niezależnym obszarze pamięci, nie zapewnia blokom CLB (a więc i tworzonym przez nie partycjom) swobodnego dostępu do całej pamięci zewnętrznej.
Celowym byłoby opracowanie takiego układu FPGA i sposobu sterowania dostępem do pamięci zewnętrznej w układzie FPGA, które umożliwiłyby większy poziom swobody w przyporządkowaniu bloków CLB do odrębnych partycji, tak aby partycje te miały dostęp do pamięci zewnętrznej.
Przedmiotem wynalazku jest układ FPGA zawierający macierz konfigurowalnych bloków logicznych CLB charakteryzujący się tym, że zawiera kontroler pamięci przystosowany do zapewniania niezależnego dostępu do pamięci zewnętrznej dla dowolnego bloku CLB, należącego do dowolnej partycji. Bloki CLB mają w swej pamięci wydzielony rejestr przystosowany do przechowywania danych i/lub adresu, i/lub statusu tak, że blok CLB w partycji może pełnić rolę bloku CLB Danych i/lub bloku CLB Adresu, i/lub bloku CLB Dostępu. Układ ponadto zawiera blok konfigurujący przystosowany do określania przynależności poszczególnych bloków CLB do partycji i do określania roli poszczególnych bloków CLB w danej partycji.
Korzystnie, kontroler pamięci jest dedykowanym układem odrębnym od macierzy konfigurowalnych bloków logicznych CLB.
Korzystnie, kontroler pamięci jest zbudowany z wydzielonej grupy bloków logicznych CLB.
Korzystnie, kontroler pamięci jest połączony za pomocą linii żądań dostępu oraz linii danych z rejestrami bloków CLB.
Korzystnie, kontroler pamięci zawiera interfejs wymiany deskryptorów konfiguracji partycji z blokiem konfigurującym.
Korzystnie, kontroler pamięci jest połączony z blokiem konfigurującym linią do przesyłania deskryptorów konfiguracji partycji.
Korzystnie, kontroler pamięci współdzieli z blokiem konfigurującym obszar pamięci do przechowywania deskryptorów konfiguracji partycji.
Korzystnie, kontroler pamięci zawiera: blok Analizy Żądań przystosowany do określania, od których bloków CLB Dostępu mogą pochodzić żądania dostępu i do przesyłania deskryptorów tych bloków CLB do bloku Odczytu Statusu; blok Odczytu Statusu połączony z blokiem Analizy Żądań linią do odczytu deskryptorów oraz połączony liniami danych z rejestrami bloków CLB do weryfikacji żądań i określania rodzaju żądanego dostępu do pamięci; blok Pobierania Adresu połączony z blokiem Odczytu Statusu linią do odczytu deskryptorów bloków CLB Adresu oraz liniami danych z rejestrami bloków CLB do określania adresu pamięci, którego dotyczy żądanie dostępu do pamięci; blok Wymiany Danych połączony z blokiem Pobierania Adresu linią do odczytu adresu pamięci i lokalizacji bloku CLB Danych oraz liniami danych z rejestrami bloków CLB do przesyłania danych pomiędzy pamięcią zewnętrzną a blokiem CLB
PL 230 129 B1
Danych; blok Modyfikacji Statusu przystosowany do modyfikowania rejestru bloku CLB Dostępu po zakończeniu realizacji żądania i do przesyłania informacji do bloku Analizy Żądań o finalizacji żądania pochodzącego od danego bloku CLB Dostępu.
Przedmiotem wynalazku jest ponadto sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA zawierającym macierz konfigurowalnych bloków logicznych CLB i kontroler pamięci, charakteryzujący się tym, że za pomocą kontrolera pamięci udostępnia się niezależny dostęp do pamięci zewnętrznej dowolnemu blokowi CLB lub dowolnej grupie bloków CLB.
Korzystnie, w pamięci każdego bloku CLB wydziela się rejestr przystosowany do przechowywania danych i/lub adresu, i/lub statusu i za pomocą bloku konfigurującego określa się przynależność poszczególnych bloków CLB do partycji i określa się rolę pewnych bloków CLB w danej partycji jako bloku CLB Danych i/lub bloku CLB Adresu, i/lub bloku CLB Dostępu.
Korzystnie, kontroler pamięci otrzymuje od bloku konfigurującego deskryptory konfiguracji partycji, a od bloków CLB otrzymuje sygnały dostępu do pamięci.
Korzystnie, w kontrolerze pamięci: za pomocą bloku Analizy Żądań określa się, od których bloków CLB Dostępu mogą pochodzić żądania dostępu do pamięci i przesyła się deskryptory tych bloków CLB do bloku Odczytu Statusu; za pomocą bloku Odczytu Statusu połączonego liniami danych z rejestrami bloków CLB Dostępu weryfikuje się żądanie dostępu do pamięci oraz określa się rodzaj tego żądania; za pomocą bloku Pobierania Adresu połączonego z blokiem Odczytu Statusu linią do odczytu deskryptorów bloków CLB żądających dostępu do pamięci oraz liniami danych z rejestrami bloków CLB, określa się adres pamięci, którego dotyczy żądanie dostępu do pamięci; za pomocą bloku Wymiany Danych połączonego z blokiem Pobierania Adresu linią do odczytu adresu pamięci i lokalizacji bloku CLB Danych oraz liniami danych z rejestrami bloków CLB, przesyła się dane pomiędzy pamięcią zewnętrzną a blokiem CLB Danych; za pomocą bloku Modyfikacji Statusu po zakończeniu realizacji żądania modyfikuje się rejestr bloku CLB Dostępu i przesyła się informacje do bloku Analizy Żądań o finalizacji żądania pochodzącego od tego bloku CLB Dostępu.
Dzięki temu, że w rozwiązaniu według wynalazku za pomocą kontrolera pamięci umożliwia się dostęp do pamięci zewnętrznej dowolnemu blokowi CLB lub dowolnej grupie bloków CLB, możliwe jest dowolne przyporządkowanie bloków CLB do odrębnych partycji, z których każda będzie miała dostęp do pamięci zewnętrznej.
Przedmiot wynalazku został przedstawiony w przykładzie wykonania na rysunku, na którym:
Fig. 1 przedstawia schemat układu rekonfigurowalnego mikroprocesora REuP;
Fig. 2 przedstawia schemat pojedynczego bloku CLB;
Fig. 3 przedstawia schematycznie dwa typy połączeń realizowane przez blok komutacyjny SWITCH;
Fig. 4 przedstawia schemat bloku CLB układu REuP z wyszczególnionym rejestrem danych DREG;
Fig. 5A, 5B przedstawiają przykładowe konfiguracje regionów;
Fig. 6 ilustruje propagację żądań dostępu do pamięci i współdzielenie linii sygnałowych w ramach jednego regionu R.n;
Fig. 7 ilustruje propagację danych i współdzielenie linii danych w ramach jednego regionu R.n;
Fig. 8 przedstawia przykład wykonania kontrolera pamięci MEM CTRL;
Fig. 9 przedstawia w sposób uproszczony komponenty biorące udział w wymianie danych między blokami CLB i pamięcią zewnętrzną.
Poniższy opis przedstawi mechanizm dostępu do pamięci na przykładzie układu rekonfigurowalnego procesora REuP (ang. REconfigurable Processor), należy jednak pamiętać że mechanizm ten może zostać zastosowany również w innych urządzeniach, takich jak koprocesory czy układy dedykowane, opartych na układach typu FPGA. Przykładowy układ typu REuP został opisany w publikacji: KIEŁBIK R., JABŁOŃSKI G., ŚWIERCZ B., AMROZIK P. „Instructionless processor architecture using dynamically reconfigurable logic”, Proceedings of the 17th International Conference „Mixed Design of Integrated Circuits and Systems” MIXDES’2010, Wrocław, Poland 24-26 czerwca 2010, str. 112-116.
Fig. 1 przedstawia schemat układu rekonfigurowalnego mikroprocesora REuP. Jest to układ typu FPGA (ang. Field Programmable Gate Array), którego zasadniczą częścią jest macierz (ang. Cell Array) identycznych, konfigurowalnych bloków logicznych CLB (ang. Configurable Logic Block).
Każdy blok CLB, zwany powszechnie „celką” (ang. celi), może być dynamicznie (bez przerywania pracy innych bloków) konfigurowany w celu osiągnięcia jego pożądanej funkcjonalności. Za konfigurację bloków odpowiada dedykowany blok konfigurujący (CONF CTRL), który pobiera z zewnętrznej pamięci niezbędne do konfiguracji dane (ang. bitstreams) i zapisuje je w wybranej grupie bloków CLB, tworząc w ten sposób tzw. partycję. Partycja jest więc podzbiorem bloków CLB zdolnym do realizacji określonych
PL 230 129 B1 przez jego konfigurację zadań. Rozmiar partycji zależy od złożoności zadania, jakie ta partycja ma realizować. Po wykonaniu zadania partycja może zostać usunięta z układu, to znaczy tworzące ją bloki CLB mogą zostać przekonfigurowane w celu utworzenia innej lub innych partycji. W układzie może jednocześnie pracować kilka partycji, a blok konfigurujący może przygotowywać (konfigurować) następne.
Fig. 2 przedstawia schemat pojedynczego bloku CLB. Blok CLB zawiera blok pamięci MEM, blok kombinacyjny COMB, blok wyboru zegara CLK SEL i blok komutacyjny SWITCH.
Blok pamięci MEM zawiera rejestry, których głównym zadaniem jest przechowywanie konfiguracji bloku CLB. Od zawartości tych rejestrów zależy to, jak połączone są między sobą wszystkie zas oby bloku CLB, w tym również zasoby samego bloku pamięci. Dzięki temu niektóre rejestry, oprócz swojej podstawowej funkcji mogą też pełnić funkcje dodatkowe, to znaczy przez odpowiednią konfigurację pewnych rejestrów konfiguracyjnych inne rejestry nie są już traktowane jako rejestry konfigurujące bloku CLB, ale służą jako rejestry danych przetwarzanych przez blok CLB.
Blok kombinacyjny COMB jest odpowiedzialny za realizację funkcji logicznych. Blok kombinacyjny COMB zawiera układy typu LUT (ang. Look-Up Table), podobnie jak inne typowe układy FPGA. Blok kombinacyjny COMB przedstawianego układu REuP może być zaprojektowany pod kątem efektywnej realizacji funkcji logicznych 32-bitowych zmiennych, choć, podobnie jak w typowych układach FPGA, można w nim przetwarzać również zmienne 1-, 2-, 3- i 4-bitowe. Jednak łatwość wyznaczania wartości funkcji logicznych dla 32-bitowych argumentów predestynuje układ REuP do realizacji za jego pomocą tych samych zadań, które obecnie realizowane są za pomocą procesorów ogólnego przeznaczenia. Dotyczy to również procesorów 64-bitowych, gdyż architektura bloków CLB układu REuP pozwala na ich wygodne łączenie w celu przetwarzania danych o w zasadzie dowolnej liczbie bitów.
Maksymalna częstotliwość taktowania dowolnej partycji, a więc też każdego bloku CLB należącego do tej partycji, zależy od jej złożoności, to znaczy maksymalnej długości ścieżek kombinacyjnych. Ponieważ każdy blok CLB może być częścią rozmaitych partycji, to aktualna częstotliwość taktującego go zegara jest ustalana w czasie konfiguracji partycji. Na podstawie wartości odpowiednich bitów konfiguracyjnych w bloku MEM, blok wyboru zegara CLK SEL doprowadza do rejestrów bloku CLB odpowiedni sygnał zegarowy.
Za wymianę danych między komponentami różnych bloków CLB odpowiada blok komutacyjny SWITCH. Fig. 3 przedstawia schematycznie dwa typy połączeń realizowane przez blok komutacyjny SWITCH:
- połączenia lokalne, realizowane w ramach jednego bloku CLB (na Fig. 3 zaznaczone dla bloku CLB w lewym górnym rogu),
- połączenia globalne - dotyczące wymiany danych między blokami CLB (na Fig. 3 zaznaczone dla centralnego bloku CLB).
Należy zaznaczyć, że połączenia globalne mogą mieć charakter czysto tranzytowy, to znaczy blok CLB bierze udział w propagacji danych, choć sam z tych danych nie korzysta.
Bloki CLB układu REuP mogą przetwarzać dane zapisane w specjalnie do tego celu skonfigurowanych rejestrach konfiguracyjnych, pracujących w takim wypadku jako N-bitowy rejestr danych DREG, co przedstawiono schematycznie na Fig. 4. Zawartość rejestru danych DREG może być inicjalizowana w procesie konfiguracji lub może być wynikiem wykonanych w układzie operacji. Często jednak istnieje potrzeba, by zwartość ta była wypełniana wartością pobraną z pamięci zewnętrznej (proces odczytu danej z pamięci zewnętrznej) lub by zawartość ta została zapisana pod określonym adresem w pamięci zewnętrznej (proces zapisu danej w pamięci zewnętrznej). Poniżej zostanie przedstawiona architektura systemu pozwalająca na taką wymianę danych między macierzą bloków CLB a pamięcią zewnętrzną.
Mechanizm wspomnianej wymiany danych jest nadzorowany przez kontroler pamięci MEM CTRL widoczny na Fig. 1. Podobnie jak w typowych procesorach, ta wymiana danych może odbywać się za pośrednictwem pamięci podręcznej (ang. Cache Memory).
W ogólnym przypadku, realizacja pojedynczego dostępu do pamięci (dotyczącego jednej lokalizacji danych wewnątrz macierzy bloków CLB, z możliwością wielokrotnego zapisu/odczytu tej lokalizacji) może wymagać różnej liczby bloków CLB. Liczba ta zależy od dostępnych w każdym bloku zasobów.
W szczególnym przypadku przykładowa realizacja takiego dostępu może wykorzystywać trzy bloki CLB:
a. blok CLB Danych - w nim zapisywane są dane z pamięci lub z niego odczytywane są dane, które mają trafić do pamięci. Zapis/odczyt dotyczy rejestru DREG (Fig. 4) służącego w tym wypadku jako rejestr zapisywanych lub odczytywanych danych;
PL 230 129 B1
b. blok CLB Adresu - definiujący adres, którego dotyczyć ma operacja zapisu/odczytu. Adres zawarty jest w rejestrze DREG (Fig. 4) służącym w tym wypadku jako rejestr adresu;
c. blok CLB Dostępu - określający kiedy wymagany jest dostęp do pamięci i jakiego typu ma to być dostęp (zapis/odczyt). Informacje te zawarte są w rejestrze DREG (fig. 4) służącym w tym wypadku jako rejestr statusu.
W takiej sytuacji każdy blok CLB układu może pełnić rolę bloku CLB Danych, bloku CLB Adresu lub bloku CLB Dostępu. Te bloki CLB nie muszą leżeć w swoim bezpośrednim sąsiedztwie. Alternatywnie, jeden blok CLB może pełnić jednocześnie wybrane dwie lub wszystkie trzy wspomniane powyżej role. W przypadku, gdy bloki CLB pełnią odrębne role, kontroler pamięci udostępnia dostęp do pamięci takiej grupie bloków CLB, w której znajdują się łącznie bloki CLB pełniące rolę bloku Danych, Adresu i Dostępu. W przypadku, gdy jeden blok CLB pełni wszystkie trzy role, kontroler pamięci MEM CTRL udostępnia dostęp do pamięci takiemu pojedynczemu blokowi CLB. Tak więc, blok dostępu do pamięci MEM CTRL udostępnia niezależny dostęp do pamięci wszystkim blokom CLB lub grupom bloków CLB.
Zawartość dowolnego rejestru DREG służącego jako rejestr danych, rejestr adresu lub rejestr statusu może być modyfikowana w trakcie pracy układu (partycji, w której te rejestry występują), generując w ten sposób odpowiednie żądania zapisu/odczytu wymaganych danych w/z określonej lokalizacji.
Wszystkie bloki CLB macierzy mogą być podzielone na regiony, a bloki CLB należące do tego samego regionu mogą współdzielić ze sobą linie sygnałowe, za pomocą których realizowany jest mechanizm dostępu do pamięci. Liczba regionów oraz ich kształty mogą być różne. Fig. 5A przedstawia pierwszą przykładową konfigurację regionów - podział na regiony o takiej samej liczbie kolumn i wierszy. Fig. 5B przedstawia drugą przykładową konfigurację regionów - podział kolumnowy. Wskazany jest taki podział macierzy bloków CLB na regiony, który zapewnia porównywalną długość i obciążenie linii sygnałowych współdzielonych w ramach jednego regionu.
Fig. 6 ilustruje rozpoczęcie operacji wymiany danych między blokiem CLB Danych a pamięcią zewnętrzną. Wymiana ta rozpoczyna się zgłoszeniem żądania takiej operacji. Żądanie to generuje blok CLB Dostępu za pomocą dedykowanych linii sygnałowych łączących wszystkie bloki CLB z Kontrolerem Pamięci MEM CTRL. W celu minimalizacji liczby tych linii mogą być one współdzielone przez kilka bloków CLB w danym regionie, to znaczy jedna linia biegnąca wzdłuż wiersza (kolumny) bloków CLB może być wykorzystywana do zgłaszania żądania dostępu do pamięci przez wszystkie bloki CLB w tym wierszu (kolumnie).
Dostęp do rejestru DREG w bloku CLB Danych, bloku CLB Adresu lub bloku CLB Dostępu realizowany jest za pomocą dedykowanych, N-bitowych linii danych łączących każdy blok CLB w macierzy z Kontrolerem Pamięci. Do każdego bloku CLB mogą być doprowadzone dwie takie linie, jak przedstawiono na Fig. 7: jedna (LOUT) do odczytu, a druga (LIN) do zapisu rejestru DREG. Linie te mogą być współdzielone przez bloki CLB należące do tego samego regionu. Alternatywnym rozwiązaniem jest zastosowanie jednej dwukierunkowej linii danych służącej zarówno do odczytu, jak i zapisu rejestru DREG.
Fig. 8 przedstawia przykład wykonania kontrolera pamięci MEM CTRL, w którym można wyróżnić następujące bloki funkcjonalne (Fig. 8):
- blok Analizy Żądań (DT),
- blok Odczytu Statusu (SR),
- blok Pobierania Adresu (AR),
- blok Wymiany Danych (DE),
- blok Modyfikacji Statusu (SW),
- Arbiter (ARB).
W przedstawionym na Fig. 8 przykładzie blok ARB odpowiada za przełączanie między blokami (DT, SR, AR, DE, SW) linii sygnałowych S(R.1) - S(R.4) reprezentujących w sposób uproszczony zarówno sygnały zgłoszenia żądań dostępu do pamięci, jak i linie danych pochodzących z regionów R.1 - R.4.
Ponieważ każdy blok CLB układu może pełnić rolę bloku CLB Danych, bloku CLB Adresu lub bloku CLB Dostępu i te bloki CLB nie muszą leżeć w swoim bezpośrednim sąsiedztwie, Kontroler Pamięci MEM CTRL musi znać ich lokalizacje w układzie. Informacja o tej lokalizacji - w postaci deskryptorów D(CONF) z Fig. 8 - jest przekazywana do Kontrolera Pamięci z bloku CONF CTRL w trakcie konfiguracji partycji, której wspomniany blok CLB Danych, blok CLB Adresu i blok CLB Dostępu jest częścią. Oprócz lokalizacji bloków CLB odpowiedzialnych w danej partycji za dostęp do pamięci zewnętrznej, deskryptory D(CONF) mogą zawierać również inne informacje niezbędne do realizacji tego dostępu, takie jak identyfikator partycji czy priorytet dostępu.
Na podstawie zgromadzonych deskryptorów D(CONF) i odebranych od macierzy bloków CLB żądań dostępu, blok Analizy Żądań (DT) jest w stanie wstępnie określić, od których bloków CLB Dostępu
PL 230 129 B1 te żądania mogą pochodzić. W dowolnej chwili żądanie dostępu może być wygenerowane przez kilka bloków CLB Dostępu. Dodatkowo, ponieważ linie sygnałowe do propagacji żądań mogą być współdzielone przez kilka bloków CLB w danym regionie, żądania wygenerowane przez różne bloki CLB Dostępu mogą być nierozróżnialne, to znaczy na podstawie samego żądania blok DT nie może jednoznacznie określić, który blok CLB Dostępu je wygenerował, a jedynie który mógł je wygenerować. Informacja o tych potencjalnie aktywnych blokach CLB Dostępu - w postaci deskryptorów D(DT) z Fig. 8 - jest przekazywana do bloku Odczytu Statusu (SR).
Przekazanie deskryptorów z bloku DT do bloku SR, podobnie jak przekazywanie deskryptorów pomiędzy pozostałymi blokami, może być zrealizowane na wiele sposobów. Jednym z możliwych rozwiązań jest kolejka FIFO (z ang. First Input First Output) zaproponowana na Fig. 8. Rozwiązanie to jest szczególnie korzystne z tego powodu, że zapewnia dużą płynność wymiany danych między blokiem DT i SR oraz zachowuje kolejność przekazywanych deskryptorów. Możliwe są również inne rozwiązania, takie jak wymiana danych bez bloków pośredniczących czy zastosowanie stosu typu LIFO (z ang. Last Input First Output).
W sytuacji, kiedy aktualny stan na liniach żądań dostępu wskazuje na możliwość generacji żądań przez więcej niż jeden blok CLB Dostępu - bez względu na to czy jest to efektem niejednoznaczności spowodowanej współdzieleniem linii, czy też jednoczesnej generacji kilku żądań - blok DT może przekazać blokowi SR informację o wszystkich lub tylko wybranych blokach CLB Dostępu podejrzewanych o generację żądań. W tym drugim przypadku wybór bloków CLB może się opierać o mechanizm priorytetów dostępu przypisanych poszczególnym blokom CLB Dostępu. Mechanizm taki powinien dokonywać redukcji priorytetu dla tych bloków CLB Dostępu, których żądania zostały ostatnio zrealizowane i okresowej inkrementacji priorytetu dla tych bloków CLB Dostępu, których żądania przez pewien określony czas nie zostały zrealizowane.
Na podstawie deskryptorów D(DT) blok Odczytu Statusu (SR) dokonuje odczytu rejestru DREG (rejestr statusu) wstępnie wyselekcjonowanych bloków CLB Dostępu. Określa w ten sposób, o jaki rodzaj dostępu chodzi (zapis/odczyt, z adresowaniem pośrednim/bezpośrednim itp.) oraz weryfikuje, czy wstępnie wyselekcjonowane przez blok DT bloki CLB rzeczywiście oczekują na dostęp do pamięci. Deskryptory D(SR) odpowiadające tylko tym oczekującym blokom CLB są przekazywane do bloku pobierania adresu (AR). Deskryptory pozostałych, nieaktywnych bloków CLB są przez blok SR ignorowane i porzucane.
Ponieważ wstępna selekcja potencjalnie aktywnych bloków CLB Dostępu realizowana przez blok DT jest pierwszym krokiem wieloetapowego procesu realizacji żądań i nie powoduje natychmiastowej dezaktywacji tych bloków CLB (i ich żądań), blok DT powinien przechowywać informację o wyselekcjonowanych blokach CLB i pomijać te bloki CLB w kolejnych analizach do momentu aż ich żądania zostaną w pełni zrealizowane lub rozpoznane przez blok SR jako nieaktywne. W przeciwnym razie może dojść do wielokrotnej obsługi tego samego żądania.
Jeżeli blok DT wykorzystuje mechanizm priorytetów dostępu i redukcji priorytetu dla tych bloków CLB Dostępu, których żądania zostały ostatnio zrealizowane, zalecane jest, aby blok SR generował dla bloku DT informację zwrotną o porzuconych deskryptorach żądań, które zostały błędnie wyselekcjonowane. Dzięki tej informacji blok DT nie będzie dekrementował priorytetu tych żądań, które zostały wyselekcjonowane, ale nie zostały zrealizowane.
Na podstawie deskryptorów D(SR) blok Pobierania Adresu (AR) dokonuje odczytu rejestru DREG (rejestru adresu) odpowiednich bloków CLB Adresu. Określa w ten sposób adres pamięci, którego dotyczy dane żądnie i przekazuje go - wraz z innymi niezbędnymi danymi takimi jak lokalizacja bloku CLB Danych - do bloku Wymiany Danych (DE). Blok DE na podstawie tych informacji oraz odczytanego przez blok SR statusu dostępu dokonuje wymaganego transferu danych z pamięci zewnętrznej do odpowiedniego bloku CLB Danych lub z bloku CLB Danych do pamięci. Po zakończeniu tej operacji przekazuje blokowi Modyfikacji Statusu (SW) deskryptor zrealizowanego właśnie żądania (D(DE) z Fig. 8). Blok SW modyfikuje odpowiednio rejestr DREG (rejestr statusu) właściwego bloku CLB Dostępu (na przykład: zeruje przerzutnik wysterowujący linię żądania dostępu), informując go w ten sposób o zakończeniu realizacji żądania. Jednocześnie blok SW powinien poinformować blok DT o finalizacji żądania pochodzącego od tego bloku CLB Dostępu, aby uwrażliwić ten blok na jego kolejne żądanie i ewentualnie zredukować jego priorytet.
Informacje wymieniane pomiędzy blokami (DT, SR, AR, DE, SW), to znaczy deskryptory (D(DT), D(SR), D(AR), D(DE), D(SW)) mogą się od siebie znacząco różnić i zawierać tylko te informacje, które są niezbędne na danym etapie przetwarzania żądania. W szczególnym przypadku deskryptory te mogą być adresami pamięci podręcznej, w której zapisane są wszelkie informacje niezbędne do realizacji żądania.
PL 230 129 B1
W celu osiągnięcia jak największej wydajności mechanizmu dostępu do pamięci, bloki (DT, SR, AR, DE, SW) powinny pracować współbieżnie, operując na różnych regionach bloków CLB. Blok ARB powinien odpowiadać za to, który z bloków (DT, SR, AR, DE, SW) w danym momencie operuje na blokach CLB z danego regionu, tak aby zminimalizować ewentualne konflikty i związane z nimi przestoje. Wydajność takiego arbitrażu może zostać zwiększona przez nadanie tym blokom odpowiednich priorytetów dostępu do regionów. Przydział każdemu z bloków priorytetu zapewniającego największą efektywność całego systemu może zależeć od wielu czynników charakterystycznych dla tego systemu, w tym również od sposobu wymiany danych między blokami (DT, SR, AR, DE, SW). Dla przykładu przedstawionego na Fig. 8, przesłanką do doboru priorytetów może być na przykład możliwie najszybsze opróżnianie kolejek FIFO łączących poszczególne bloki. Dla takiej przesłanki uporządkowanie bloków według malejącego priorytetu powinno wyglądać następująco: SW (najwyższy priorytet), DE, AR, SR, DT (najniższy priorytet). Warto zauważyć, że przypisanie blokowi SW najwyższego priorytetu zapewnia przy okazji najwcześniejsze rozpoczęcie pracy tych bloków CLB, które wymieniły już dane z pamięcią zewnętrzną.
W celu osiągnięcia maksymalnej wydajności systemu, kontroler pamięci MEM CTRL powinien być dedykowanym modułem zrealizowanym techniką projektowania full-custom lub semi-custom, odrębnym od macierzy konfigurowalnych bloków logicznych CLB. Alternatywnie, kontroler pamięci MEM CTRL może być zaimplementowany za pomocą odpowiednio skonfigurowanych bloków logicznych CLB wydzielonych z macierzy bloków CLB.
Fig. 9 przedstawia w sposób uproszczony komponenty biorące udział w wymianie danych między blokami CLB i pamięcią zewnętrzną. W przedstawionym przykładzie w macierzy bloków CLB zaimplementowane są dwie partycje. W partycji 1 znajduje się jedna, a w partycji 2 występują dwie grupy bloków CLB odpowiedzialne za realizację dostępu do pamięci. Pamięć podręczna (cache) jest opcjonalna. Sygnały do komunikacji między kontrolerem pamięci a pamięcią podręczną i pamięcią zewnętrzną zostały przedstawione w sposób uproszczony (brak sygnałów sterujących). Podobnie, dla uproszczenia pominięto linie danych i linie żądań wewnątrz macierzy bloków CLB.
W przedstawionym tu rozwiązaniu nie traktuje się układu FPGA jako niepodzielnego komponentu większego systemu (jak przykładowo w US 7237091), lecz pozwala się na dynamiczną implementację w układzie FPGA różnych, współbieżnie pracujących komponentów, z których każdy korzysta z tego samego, uniwersalnego mechanizmu dostępu do pamięci. Należy przy tym zauważyć, że przedstawiony mechanizm jest niezależny od szczegółów technologicznych, tzn. od sposobu realizacji fizycznych połączeń pomiędzy macierzą bloków CLB a pamięcią zewnętrzną (jak przykładowo w US 7282951).

Claims (12)

1. Układ FPGA zawierający macierz konfigurowalnych bloków logicznych CLB, znamienny tym, że
- zawiera kontroler pamięci (MEM CTRL) przystosowany do zapewniania niezależnego dostępu do pamięci zewnętrznej dla dowolnego bloku CLB, należącego do dowolnej partycji,
- bloki CLB mają w swej pamięci (MEM) wydzielony rejestr (DREG) przystosowany do przechowywania danych i/lub adresu, i/lub statusu tak, że blok CLB w partycji może pełnić rolę bloku CLB Danych i/lub bloku CLB Adresu, i/lub bloku CLB Dostępu,
- zawiera blok konfigurujący (CONF CTRL) przystosowany do określania przynależności poszczególnych bloków CLB do partycji i do określania roli poszczególnych bloków CLB w danej partycji.
2. Układ według zastrz. 1, znamienny tym, że kontroler pamięci (MEM CTRL) jest dedykowanym układem odrębnym od macierzy konfigurowalnych bloków logicznych CLB.
3. Układ według zastrz. 1, znamienny tym, że kontroler pamięci (MEM CTRL) jest zbudowany z wydzielonej grupy bloków logicznych CLB.
4. Układ według zastrz. 1, znamienny tym, że kontroler pamięci (MEM CTRL) jest połączony za pomocą linii żądań dostępu oraz linii danych z rejestrami (DREG) bloków CLB.
5. Układ według zastrz. 1, znamienny tym, że kontroler pamięci (MEM CTRL) zawiera interfejs wymiany deskryptorów D(CONF) konfiguracji partycji z blokiem konfigurującym (CONF CTRL).
6. Układ według zastrz. 5, znamienny tym, że kontroler pamięci (MEM CTRL) jest połączony z blokiem konfigurującym (CONF CTRL) linią do przesyłania deskryptorów D(CONF) konfiguracji partycji.
PL 230 129 B1
7. Układ według zastrz. 5, znamienny tym, że kontroler pamięci (MEM CTRL) współdzieli z blokiem konfigurującym (CONF CTRL) obszar pamięci do przechowywania deskryptorów D(CONF) konfiguracji partycji.
8. Układ według zastrz. 1, znamienny tym, że kontroler pamięci (MEM CTRL) zawiera:
- blok Analizy Żądań (DT) przystosowany do określania, od których bloków CLB Dostępu mogą pochodzić żądania dostępu i do przesyłania deskryptorów D(DT) tych bloków CLB do bloku Odczytu Statusu (SR),
- blok Odczytu Statusu (SR) połączony z blokiem Analizy Żądań (DT) linią do odczytu deskryptorów D(DT) oraz połączony liniami danych z rejestrami (DREG) bloków CLB do weryfikacji żądań i określania rodzaju żądanego dostępu do pamięci,
- blok Pobierania Adresu (AR) połączony z blokiem Odczytu Statusu (SR) linią do odczytu deskryptorów D(SR) bloków CLB Adresu oraz liniami danych z rejestrami (DREG) bloków CLB do określania adresu pamięci, którego dotyczy żądanie dostępu do pamięci,
- blok Wymiany Danych (DE) połączony z blokiem Pobierania Adresu (AR) linią do odczytu adresu pamięci i lokalizacji bloku CLB Danych oraz liniami danych z rejestrami (DREG) bloków CLB do przesyłania danych pomiędzy pamięcią zewnętrzną a blokiem CLB Danych,
- blok Modyfikacji Statusu (SW) przystosowany do modyfikowania rejestru (DREG) bloku CLB Dostępu po zakończeniu realizacji żądania i do przesyłania informacji do bloku Analizy Żądań (DT) o finalizacji żądania pochodzącego od danego bloku CLB Dostępu.
9. Sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA zawierającym macierz konfigurowalnych bloków logicznych CLB i kontroler pamięci (MEM CTRL), znamienny tym, że za pomocą kontrolera pamięci (MEM CTRL) udostępnia się niezależny dostęp do pamięci zewnętrznej dowolnemu blokowi CLB lub dowolnej grupie bloków CLB.
10. Sposób według zastrz. 9, znamienny tym, że w pamięci (MEM) każdego bloku CLB wydziela się rejestr (DREG) przystosowany do przechowywania danych i/lub adresu, i/lub statusu i za pomocą bloku konfigurującego (CONF CTRL) określa się przynależność poszczególnych bloków CLB do partycji i określa się rolę pewnych bloków CLB w danej partycji jako bloku CLB Danych i/lub bloku CLB Adresu, i/lub bloku CLB Dostępu.
11. Sposób według zastrz. 10, znamienny tym, że kontroler pamięci (MEM CTRL) otrzymuje od bloku konfigurującego (CONF CTRL) deskryptory D(CONF) konfiguracji partycji, a od bloków CLB otrzymuje sygnały dostępu do pamięci.
12. Sposób według zastrz. 11, znamienny tym, że w kontrolerze pamięci (MEM CTRL):
- za pomocą bloku Analizy Żądań (DT) określa się, od których bloków CLB Dostępu mogą pochodzić żądania dostępu do pamięci i przesyła się deskryptory D(DT) tych bloków CLB do bloku Odczytu Statusu (SR),
- za pomocą bloku Odczytu Statusu (SR) połączonego liniami danych z rejestrami (DREG) bloków CLB Dostępu weryfikuje się żądanie dostępu do pamięci oraz określa się rodzaj tego żądania,
- za pomocą bloku Pobierania Adresu (AR) połączonego z blokiem Odczytu Statusu (SR) linią do odczytu deskryptorów D(SR) bloków CLB żądających dostępu do pamięci oraz liniami danych z rejestrami (DREG) bloków CLB, określa się adres pamięci, którego dotyczy żądanie dostępu do pamięci,
- za pomocą bloku Wymiany Danych (DE) połączonego z blokiem Pobierania Adresu (AR) linią do odczytu adresu pamięci i lokalizacji bloku CLB Danych oraz liniami danych z rejestrami (DREG) bloków CLB, przesyła się dane pomiędzy pamięcią zewnętrzną a blokiem CLB Danych,
- za pomocą bloku Modyfikacji Statusu (SW) po zakończeniu realizacji żądania modyfikuje się rejestr (DREG) bloku CLB Dostępu i przesyła się informacje do bloku Analizy Żądań (DT) o finalizacji żądania pochodzącego od tego bloku CLB Dostępu.
PL407040A 2014-02-01 2014-02-01 Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA PL230129B1 (pl)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PL407040A PL230129B1 (pl) 2014-02-01 2014-02-01 Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PL407040A PL230129B1 (pl) 2014-02-01 2014-02-01 Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA

Publications (2)

Publication Number Publication Date
PL407040A1 PL407040A1 (pl) 2015-08-03
PL230129B1 true PL230129B1 (pl) 2018-09-28

Family

ID=53723644

Family Applications (1)

Application Number Title Priority Date Filing Date
PL407040A PL230129B1 (pl) 2014-02-01 2014-02-01 Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA

Country Status (1)

Country Link
PL (1) PL230129B1 (pl)

Also Published As

Publication number Publication date
PL407040A1 (pl) 2015-08-03

Similar Documents

Publication Publication Date Title
CA3125707C (en) Virtualization of a reconfigurable data processor
US9503093B2 (en) Virtualization of programmable integrated circuits
US6522167B1 (en) User configurable on-chip memory system
US10924430B2 (en) Streaming platform flow and architecture for an integrated circuit
US10725942B2 (en) Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
JP7492511B2 (ja) ストリーミングプラットフォームフローおよびアーキテクチャ
US11336287B1 (en) Data processing engine array architecture with memory tiles
CN112084729A (zh) 用于逻辑器件的粗粒度可编程路由网络
JP2008532131A (ja) マイクロプロセッサアーキテクチャ
JP4359490B2 (ja) データ伝送方法
JP2004535613A (ja) データ処理方法およびデータ処理装置
US9720879B2 (en) Reconfigurable circuit having rows of a matrix of registers connected to corresponding ports and a semiconductor integrated circuit
JP2006018452A (ja) 半導体装置
US11482264B2 (en) Memory module adapted to implementing computing functions
PL230129B1 (pl) Układ FPGA i sposób sterowania dostępem do pamięci zewnętrznej w układzie FPGA
JP6432348B2 (ja) 演算装置及び演算方法
US11853235B2 (en) Communicating between data processing engines using shared memory
JP2005078177A (ja) 並列演算装置
EP2189909A1 (en) Information processing unit and method for controlling the same
WO2004099981A1 (ja) プログラムのロード方法、ロードプログラムおよびマルチプロセッサ
KR20170026130A (ko) 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법
Chuang A virtualized quality of service packet scheduler accelerator
Nutt Integrating Architecture and Operating Systems; CU-CS-104-77
JP2009217619A (ja) 動作合成装置、動作合成方法、及び、プログラム