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.
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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).
źródło
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.
źródło
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.
źródło
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).
źródło