FPGA w serwerze

Hej!

Niedawno wspominałem ci o programowalnych układach FPGA. Okazało się, że ludzie z laboratoriów rozwoju firmy Microsoft chcą takie układy umieścić w serwerach swojej chmury obliczeniowej.

Człowiek za którym stoi cała koncepcja to Doug Burger. Uważa on, że w ciągu 5 lat przestanie się opłacać robić coraz mniejsze tranzystory w układach scalonych. Spowoduje to, że wzrośnie koszt mocy obliczeniowej. Zwykłe procesory marnują dużo tranzystorów na sprawy związane z interpretacją poleceń programu. To też jest koszt.

W układach FPGA można ustawić w kilka sekund całą strukturę na przetwarzanie konkretnego algorytmu, tak by realizował go sprzętowo z maksymalną wydajnością. Naukowcy szacują, że wydajność takiego układu w porównaniu z procesorem jest kilkaset razy większa. Czyli taki układ w przyszłości będzie znacznie tańszym rozwiązaniem w przeliczeniu na wydajność niż procesory.

Doug udzielił wywiadu portalowi Channel 9 w którym opowiada o swojej koncepcji serwerów.

Testy z wyszukiwarką Bing pokazały, że dzięki układom FPGA można przyśpieszyć 2x czas odpowiedzi na zapytanie.

Piszę o tym głównie do osób, które zastanawiają się nad specjalizacją swojego zawodu. Implementacja algorytmów w strukturze FPGA może przynieść w przyszłości niezłe kokosy i być świetną droga rozwoju. Decyzja należy do ciebie.

Oczywiście należy wziąć poprawkę na to, że już wiele razy próbowano spekulować koniec ery procesorów. Na razie Intel nie przewiduje problemów do rozmiaru 10 nm. W końcu nie takie bzdury mówili nawet najwięksi wynalazcy, by zwiększyć atrakcyjność swoich rozwiązań.

sprae

Arduinowe FPGA

FPGA to jakby niedokończone układy scalone. Mają w sobie pełno bramek logicznych, ale nie są one ze sobą połączone. Dopiero użytkownik programując je, łączy te bramki w potrzebne mu obwody.

Dawniej układy logiczne typu UCY74xx lub CD4xxx miały w sobie po kilka bramek. By zrobić na nich duże urządzenie potrzeba było kilkanaście albo kilkadziesiąt takich scalaków. Konkurencją dla nich były właśnie programowalne układy, mogące je zastąpić jednym układem.

Dziś programowalne układy zastępują raczej procesory. W ich programowalnej strukturze można zbudować z bramek sprzętowy algorytm, który działa szybciej niż jakby miał go interpretować uniwersalny procesor.

Ja spotkałem się z takimi zastosowaniami:

  • Sprzętowe emulatory starych komputerów
  • Tworzenie układów do generowania grafiki na ekranie telewizora, albo monitora
  • Sprzętowe algorytmy kompresji
  • Sprzętowe algorytmy sum kontrolnych i szyfrowania
  • Wydobywanie Bitcoinów

Jedną z najbardziej znanych propagatorek takiej zabawy elektroniką jest Jeri Ellsworth. Zbudowała ona jeden z pierwszych sprzętowych emulatorów Commodore C64, czym zyskała sławę.

Ten przydługi krapowaty wstęp piszę tylko dlatego, że na Kickstarterze są 2 ciekawe projekty zestawów FPGA promujące naukę ich programowania. 

Pierwszy nawiązuje budową płytki do Arduino. Jest o tyle fajny, że można go programować za pomocą bliźniaczego środowiska jak w Arduino IDE.
To co najbardziej mi się spodobało, to możliwość graficznego rysowania obwodów, które będą zaprogramowanie w układzie. Płytka ma także wbudowane Arduino Leonardo, które może współpracować z FPGA.

Drugi projekt przypomina raczej płytki Teensy, albo Arduino Mini/Micro. Jest mniejszy, ale za to ma wbudowane złącze HDMI i wejście na kartę SD.

Nic tylko kupować i uczyć się.

sprae