Jakie są zalety korzystania z układów FPGA nad TTL w architekturze komputera wprowadzającego?


24

Uczę jedynego kursu architektury komputerowej na uniwersytecie sztuk wyzwolonych. Kurs jest wymagany dla kierunków informatycznych głównych i mniejszych. Nie mamy kursów z inżynierii komputerowej, elektrotechniki, innego sprzętu itp. Moim głównym celem w tym kursie jest, aby studenci zrozumieli aż do poziomu bramy, jak działają komputery, które, jak sądzę, najlepiej uczą się w laboratorium sprzętowym i nie tylko poprzez podręcznik ( Organizacja i projektowanie komputerówHennessy i Patterson). Moim drugorzędnym celem jest ekscytowanie ich architekturą komputerową i zwiększenie ich ekscytacji informatyką. Przygotowanie ich bezpośrednio do przemysłu nie jest celem, choć motywuje ich do studiowania większej architektury architektury. Studenci na ogół nie mieli doświadczenia w budowaniu czegokolwiek ani w kursie laboratoryjnym na poziomie uczelni. Zazwyczaj 10-15 studentów bierze udział w semestrze.

Uczę tego kursu od 1998 r. W sposób podobny do tego, jak uczyłem się architektury komputerowej i cyfrowej elektroniki pod koniec lat 80. na MIT: z wykorzystaniem układów DIP TTL na zasilanych płytkach chlebowych. Podczas pierwszego zadania w laboratorium sprzętowym uczniowie budują pełny sumator. Mniej więcej w połowie semestru zaczynają budować prosty komputer z 8-bitowym zestawem instrukcji. Aby zredukować okablowanie, zapewniam im płytkę drukowaną z niektórymi elementami elektronicznymi (dwa przerzutniki D, dwa 4-bitowe ALU LS 181 połączone ze sobą tak, aby działały jak 8-bitowe ALU oraz bufor trójstanowy). W pierwszym z tych laboratoriów uzyskują (bardzo proste) sygnały sterujące dla dwóch formatów instrukcji i budują obwód, wprowadzając instrukcje dotyczące przełączników i odczytując wyniki ze świateł. W drugim z laboratoriów dodają licznik programów (2 LS163) i EPROM (którymoje pierwotne pytanie dotyczyło, zanim zmieniłem sposób, w jaki powinienem uczyć architektury intro). W ostatnim laboratorium dodają instrukcję gałęzi warunkowej. Podczas gdy uczniowie spędzają sporo czasu na okablowaniu i debugowaniu, wydaje mi się, że tam właśnie odbywa się duża część nauki, a uczniowie wyjeżdżają z prawdziwym poczuciem spełnienia.

Ludzie na tym forum mówili mi jednak, że powinienem przejść na układy FPGA, z którymi wcześniej nie pracowałem. Jestem inżynierem oprogramowania, a nie informatykiem i od jakiegoś czasu jestem poza szkołą, ale jestem w stanie się uczyć. Nie byłbym w stanie zdobyć dużo pieniędzy ( może nawet kilku tysięcy dolarów) za zastąpienie naszych obecnych cyfrowych trenerów. Mamy jeden analizator logiki.

Biorąc pod uwagę moje cele i ograniczenia, czy polecilibyście EE, aby trzymałem się mojego obecnego podejścia do przejścia na podejście oparte na układach FPGA? Jeśli to drugie, czy możesz podać mi jakieś wskazówki do materiałów, z których mogę się uczyć?

Zgodnie z życzeniem, tutaj jest link do sylabusa i zadań laboratoryjnych .

Dodatek: Tak, to także kurs logiki cyfrowej. Kiedy dostałem się na studia, studenci musieli wziąć jeden semestr architektury komputerowej i logiki cyfrowej i połączyłem je w jeden semestr. Oczywiście jest to stwierdzenie dotyczące przeszłości, a nie przyszłości.


Czy możesz zamieścić lub zamieścić link do swojego programu nauczania / programu?
Kevin Vermeer,

Czy mogę zasugerować alternatywne podejście? Co powiesz na korzystanie z mikrokontrolerów takich jak Arduinos w swoich laboratoriach?
JonnyBoats,

7
@JonnyBoats: ... jak by to pasowało? Mówi o konstruowaniu komputerów z bram sprzętowych.
darron,

Aby odpowiedzieć na twoje pytanie - praktycznie nikt nie buduje bram sprzętowych, kupuje chipy z bramami już zaimplementowanymi. W FPGA nie buduje się bram sprzętowych, ustawia je w oprogramowaniu.
JonnyBoats,

1
@JonnyBoats: FPGA konstruują cyfrowe projekty z bram sprzętowych (LUT są bramkami programowalnymi). Bramy istnieją jako sprzęt, a twój projekt działa w całkowicie fizyczny sposób. Dzięki TTL nie „budujesz bram” według tego standardu… to też bramy fabryczne. Jedyną różnicą jest to, że funkcje bramek są programowalne, routing jest programowalny (ale nadal fizyczny), a jest ich o wiele rzędów wielkości więcej. Nadal nie rozumiem, jak Arduino w ogóle pasuje do kursu projektowania logiki cyfrowej. (Chyba że chciałeś, żeby zmieniła cel samego kursu?)
darron

Odpowiedzi:


16

Biorąc pod uwagę cele klasy, myślę, że podejście TTL jest w porządku i mówię to jako „facet FPGA”. Układy FPGA to morze logiki i można z nimi robić różne fajne rzeczy, ale w semestrze jest tylko tyle rzeczy, które po ludzku można zrobić.

Patrząc na twój program nauczania, twoja klasa stanowi połączenie logiki projektowania i kursów „konstrukcji maszyn”, które odbyłem na studiach. (Plus, to dotyczy kierunków CS. Jestem zwolennikiem kierunków CS, które muszą zmierzyć się z prawdziwym sprzętem - pozwalanie im na pisanie kodu wydaje się krokiem wstecz.) Na tym wstępnym poziomie, gdzie omawiasz instrukcje montażu są podzielone, nie widzę żadnej realnej korzyści z tego, że uczniowie robią różne rzeczy w kodzie w porównaniu do ręcznie. Wykonanie HDL oznacza naukę HDL, naukę pisania syntezowalnego HDL i naukę IDE. Jest to o wiele bardziej złożona koncepcja i re-abstrakcja. Dodatkowo musisz poradzić sobie z problemami z oprogramowaniem.

Ogólnie rzecz biorąc, kurs wykorzystujący układy FPGA polega na ćwiczeniu tworzenia logiki, która jest przydatna - przydatna w rozmowach z urządzeniami peryferyjnymi, szeregowymi komunikatorami, pamięcią RAM, generatorami wideo itp. Jest to cenna wiedza, ale wydaje się, że jest bardzo zakres twojego kursu. Bardziej zaawansowane zajęcia z architektury komputerowej polegają na tym, że uczniowie wdrażają zaawansowane procesory w układach FPGA, ale znowu wydaje się to poza zakresem kursu.

Przynajmniej poświęciłbym wykład FPGA. Przeprowadź kilka pokazów z tablicą programistów i pokaż im przebieg pracy. Skoro jesteś na Mills, być może skontaktować się z ludzi, którzy działają w Berkeley CS 150 / 152 i iść zobaczyć jak robią rzeczy.


Mogę powiedzieć, że na początku lat 90. CS150 nauczono w zasadzie, w jaki sposób OP opisuje jej zajęcia na MIT - głównie bramki 74xx, których kulminacją jest budowa prostego 8-bitowego (lub 4-bitowego?) Procesora. Mieliśmy krótki projekt z wykorzystaniem układów FPGA zaprojektowanych w narzędziu do przechwytywania schematów (bez HDL). Wygląda na to, że obecny program opiera się głównie na HDL.
Photon

Dobrze, że klasa jest połączeniem logiki i konstrukcji maszyn. Kiedy dodałem do opisu pytania, istniały dwa osobne kursy, które połączyłem w jeden. Bardzo dziękuję za pomoc. Zbadam układy FPGA i przynajmniej dodam wykład na ich temat. W UCB Dave Patterson stworzył nowe podejście do architektury intro, które jest znacznie wyższe. Pilnuję tego, ale nie planuję tak wielkiej zmiany.
Ellen Spertus,

Zastanawiałem się nad złożonością środowisk FPGA i być może tak naprawdę nie zgadzam się, że może to być zbyt wiele jak na kurs wprowadzający. Wydaje się po prostu wstydem, że nie uczy się w nowoczesnych obiegach pracy. Sam grałem z TTL i dopiero po wejściu w układy FPGA zacząłem naprawdę rozumieć, jak działają (stosunkowo proste) komputery. Zajęcia wyglądają lepiej niż to, z czym musiałem pracować, więc może lepiej rozumie pojęcia. Jednak z punktu widzenia układów logicznych TTL „prawdziwy” procesor wygląda bardzo daleko. Po FPGA można sobie wyobrazić.
darron

Przez „jak działają komputery” mam na myśli to, jak je zbudować, a nie niewyraźną koncepcję „zegarów i klap”… do czego oczywiście wystarcza TTL. (i znowu, jej zajęcia wyglądają tak, jakby mogły dobrze tego nauczyć ... moim problemem jest nauczanie pojęć na sprzęcie, który prawie nie ma żadnej rzeczywistej aplikacji, zamiast nauczania na sprzęcie, który jest faktycznie używany)
darron

@darron, TTL jest w zasadzie przestarzałe, ale jest koncepcyjnie czyste - nie ma języka ani IDE, które mogłyby skomplikować rzeczy, tylko diagramy i okablowanie punkt-punkt. Robi się bałagan, gdy zwiększa się rozmiar słowa, ale 8-bitowe rzeczy nie są takie złe. Gdyby klasa poszła dalej lub gdyby była klasa kontynuacyjna, układy FPGA miałyby sens, ale myślę, że byłoby to niepotrzebną komplikacją, biorąc pod uwagę omawiany materiał.
mng

6

Bardzo się zgadzam z Photonem. Korzystanie z układów FPGA ma wiele zalet. Oto kilka interesujących punktów do rozważenia:

1) Łatwa platforma do bardzo szybkiego wypróbowania projektu bramy, bez godzin lub potencjalnie dni pracy. Układy FPGA dość łatwo umożliwiają potencjalnie bardzo złożone projekty cyfrowe. (DUŻO więcej teorii, mniej pracy)

2) Znaczące części pracy studenta można wykonać w symulacji poza laboratorium.

3) Środowisko oprogramowania jest bezpłatne (zazwyczaj zawiera symulator).

4) Istnieje wiele stosunkowo tanich platform FPGA. Ceny akademickie powinny pomóc. Coś takiego jak Terasic DE0-Nano kosztuje 59 USD za komplet (i wygląda całkiem nieźle). 50-60 USD wygląda na zakres, na który będziesz patrzeć.

5) Istnieje wiele naprawdę fajnych rzeczy związanych z układami FPGA. Istnieją strony takie jak OpenCores, które zapewniają setki wstępnie zbudowanych modułów do użytku z układami FPGA. Jest FPGA4Fun , który ma wiele samouczków i projektów. Aby zapewnić czystą rozrywkę, FPGA Arcade jest przeznaczona do tworzenia gier z FPGA. W zależności od konfiguracji układów FPGA może to być naprawdę fajna klasa.

6) Niektóre płyty mają klasy projektowania cyfrowego, które najwyraźniej są dla nich gotowe: wprowadzenie do projektowania cyfrowego (ostrzeżenie: duże pobranie) przy użyciu nieco starej płyty Xilinx Spartan 3E. (Chociaż ten oparty jest na ActiveHDL, osobiście wolałbym bardziej standardowy VHDL lub Verilog). Główni dostawcy FPGA mają również programy uniwersyteckie: Xilinx University Program , Altera University Program , Lattice University Program .

7) Przepływ pracy jest znacznie bliższy temu, jak obecnie przebiegają profesjonalne prace projektowe. Praktyczna wiedza na temat rozwoju FPGA to umiejętność, którą można natychmiast wprowadzić na rynek.


Dziękuję bardzo. Na pewno je wypróbuję. FWIW, gdybym miał drugi semestr laboratorium sprzętowego, zdecydowanie zrobiłbym z nimi FPGA lub Arduino.
Ellen Spertus,

5

Myślę, że obecnie, jeśli masz do czynienia z rzeczami na poziomie bramy, nie pracujesz w obszarze „architektury komputerowej”, po prostu robisz podstawową elektronikę cyfrową. Ale nie możesz uczyć wszystkiego, co trzeba wiedzieć, od cyfrowej elektroniki na poziomie bramki po algorytmy buforowania, architektury obliczeń równoległych, SIMD, sieci itp. Itp. W jednym semestrze.

Tak naprawdę sprowadza się to do tego, czego chcesz uczyć. Jeśli chcesz skupić się na cyfrowej elektronice na poziomie bramki, wówczas praca z chipami na poziomie bramki zapewni uczniom praktyczną pracę i lepsze zrozumienie tego materiału. Ale jeśli chcesz uczyć architektury komputerowej, prawdopodobnie muszą one pracować na znacznie wyższym poziomie abstrakcji niż bramki AND i OR.

Przynajmniej prawdopodobnie jesteś winien sobie nauczenie się HDL i wdrożenie projektu opartego na FPGA lub dwóch, abyś (jako ekspert w dziedzinie edukacji) mógł ocenić, w jaki sposób te umiejętności pasują do twoich celów dla twoich uczniów. Spodziewam się, że inne odpowiedzi dadzą wiele wskazówek dla tanich i bezpłatnych materiałów, które pozwolą Ci szybko zacząć projektować układy FPGA. (Wskazówka: zarówno Xilinx, jak i Altera oferują bezpłatne narzędzia do projektowania oprogramowania i symulatory, a także mnóstwo notatek aplikacyjnych i innych materiałów dydaktycznych).


Nie zgadzam się z tym, że taka klasa nie uczy architektury komputerowej. Uczniowie uczą się, jak wdrożyć ISA, która jest zdecydowanie częścią architektury komputerowej, a także uczę o potokach i pamięciach podręcznych. Zgadzam się, że architektura to coś więcej niż to, czego uczę na jednym kursie. Jako student wziąłem kilka innych kursów architektury, prowadziłem badania akademickie i branżowe w architekturze itp. Doceniam zachętę do przyjrzenia się HDL i FPGA.
Ellen Spertus,

5

Jedną z zalet korzystania z TTL byłoby to, że w przypadku bardzo elementarnych obwodów szczegóły HDL maskowałyby rzeczywisty zespół obwodów, a większość studentów po prostu spędzała większość czasu na pisaniu i uczeniu się HDL. Myślę, że TTL dla pierwszej części, a następnie FPGA dla części architektury byłoby lepsze, ponieważ tak naprawdę trudno jest stworzyć programowalny system z TTL.


+1 HDL ukrywa obwód. Istnieje kilka różnych sposobów pisania multiplekserów w HDL, a większość z nich ma bardzo mało lub nie ma nic wspólnego z tym, jak układa się bramki, aby utworzyć multiplekser.
ajs410,

To jest kluczowa kwestia - zbyt łatwo jest napisać kod dla FPGA bez faktycznego zrozumienia na podstawowym poziomie jego działania. Istnieją sposoby, aby tego uniknąć, np. IDE Altera zawiera schemat wejścia, który może pomóc Ci skoncentrować się na projekcie poziomu bramki, ale pozostając przy tym, nie będziesz w stanie w pełni wykorzystać mocy układów FPGA, więc nie czy rzeczywiście jest jakiś punkt zmiany?
Jules

1

W pełni doceniając znaczenie niektórych praktycznych doświadczeń związanych z fizycznym montażem obwodów, myślę, że ważne jest również, aby zdawać sobie sprawę, że nie można objąć nowoczesnych praktyk komputerowych bez pewnego poziomu czegoś, co „przypomina” symulację lub zbyt dużą abstrakcję, więc najlepiej jest wykonać trochę pracy na każdym poziomie przed dodaniem wystarczającej ilości abstrakcji, aby umożliwić podjęcie następnego poziomu złożoności. Na przykład kurs MIT, do którego się odwołujesz, w pewnym momencie rozpoczął symulację oprogramowania 32-bitowej maszyny RISC działającej na szczycie 8-bitowej mikroprogramowanej maszyny, która została fizycznie „zbudowana”. W tym momencie twierdzę, że bardziej efektywne jest po prostu zaimplementowanie takiej maszyny w FPGA (podejrzewam, że od tego czasu prawdopodobnie to zrobili).

W związku z tym moją pokusą będzie próba włączenia zarówno fazy chipów i przewodów wcześnie, jak i fazy FPGA w dalszej części kursu. Ponieważ masz już zestawy do układania płytek, możesz po prostu utrzymać na tym etapie wczesne laboratoria i użyć albo płyty FPGA, a może modułu FPGA do układania płytek w późniejszych laboratoriach. Zbudowanie hybrydowej maszyny, w której układ FPGA zależy od pewnej zewnętrznej cyrkulacji, implementowałoby część procesora, ale byłoby to bardzo sztuczne - przełączanie technologii całkowicie w punkcie, w którym złożoność przekracza jeden kawałek płyty, może być najbardziej realistyczne.

Powinieneś być w stanie pozyskać istniejące samodzielne karty FPGA za mniej niż 100 USD / szt. W cenach edukacyjnych.

Inną opcją może być zbudowanie własnego w ramach klasy, być może zbudowanie interfejsu ładowania szeregowego FPGA jako pierwszej części projektu. Zaletą tego jest to, że koszt byłby na tyle niski, że uczniowie mogliby zatrzymać swoje tablice zamiast oddawać je pod koniec semestru, co, miejmy nadzieję, spowodowałoby ciągłe zainteresowanie i świadomość wśród garstki.


Dziękuję bardzo. Byłem świadom zmiany w MIT. W rzeczywistości zacząłem w mojej obecnej instytucji ze starymi zestawami laboratoryjnymi 6.004 / 6.111, których MIT już nie potrzebował. Moi studenci nie są jednak studentami MIT i nie mogą wchłonąć tak dużo w semestrze, więc muszę być wybiórczy. (Właściwie odkryłem na MIT, że większość studentów nie jest w stanie wchłonąć tyle, ile na nich rzucono, ale to kolejna dyskusja.) Niższy koszt płyt FPGA jest zdecydowanie atrakcyjny.
Ellen Spertus,

1

Myślę, że właściwym podejściem byłoby zacząć od zbudowania kilku bramek z przekaźników, które są łatwe do zobaczenia i zrozumienia, ale oczywiście są zbyt wolne i wymagają dużej mocy do nowoczesnych zastosowań. Następnie pokaż, w jaki sposób tranzystory mogą być używane do robienia tego samego bardziej kompaktowo, szybciej i wydajniej, a pakowane bramki [np. „Quad nand”] mogą to zrobić jeszcze lepiej. Kiedy już do tego dojdziesz, sugeruję, abyś pokazał, jak zbudować takie urządzenia, jak multipleksery i zatrzaski z bram, a następnie, w jaki sposób można zbudować nieco większe struktury z zapakowanych multipleksów, zatrzasków itp. Nikt nie będzie aby zbudować komputer w dzisiejszych czasach przez fizyczne lutowanie niezliczonych tysięcy dyskretnych tranzystorów, ale wewnętrzna praca komputera jest bardzo podobna do tranzystorów, z tym wyjątkiem, że wszystko jest znacznie mniejsze.

Jedną z głównych korzyści, które, moim zdaniem, uczniowie mogliby uzyskać z tego rodzaju instrukcji, jest zrozumienie, dlaczego wiele rzeczy działa tak, jak oni. Na przykład, jeśli ktoś „symuluje” zestaw instrukcji, który nie musi mieć praktycznej realizacji fizycznej, nie byłoby potrzeby, aby instrukcja „pamięci obciążenia” zajmowała trzy cykle, podczas gdy większość innych instrukcji brała jeden. Niektóre rzeczy można zrozumieć bez schodzenia do poziomu tranzystora, ale kilka nie może (np. Znaczenie wejść synchronicznych w porównaniu z asynchronicznymi).

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.