Naprawdę bardzo staram się dowiedzieć o bardzo niskim poziomie komputerów. Patrzyłem na wiele stron z homebrew i jest całkiem sporo do wzięcia. Chodziłem na zajęcia z inżynierii elektronicznej na studiach, ale tak naprawdę nie zagłębiliśmy się w ten temat (była to informatyka, więc większość w rzeczywistości były to algorytmy i tym podobne).
W każdym razie, w jaki sposób zbudowano / zbudowano większość ALU ? Zdaję sobie sprawę, że to nie jedyna część komputera, ale nadal jest to ważna część.
I czy mógłbyś zbudować swój własny ALU przy użyciu bramek logicznych (do celów uczenia się)? Rozumiem, że to wydaje się głupie dla tych, którzy mają większą wiedzę, ale staram się to zrozumieć. (Cholera, nawet prosty dodatek byłby fajnym projektem.) Jeśli tak, to jak by to zrobić? Czy są jakieś przykłady sprzętu? (Rozejrzałem się po Google, ale nie mogę znaleźć niczego takiego, jak krok po kroku wyjaśnić różne rzeczy).
Odpowiedzi:
Możesz zbudować je całkowicie z podstawowych bramek logicznych , a rezultatem będzie fajne dzieło sztuki :-).
Seria logiczna 74xx zawiera także 74LS181 , 4-bitowy kawałek ALU , co znacznie upraszcza sprawę . Fragmenty bitowe ALU zostały użyte do zbudowania bardziej złożonych ALU (czytaj: dłuższe słowa), ale nowsze technologie sprawiły, że tego rodzaju układy scalone stały się przestarzałe.
Uwaga: TTL (74xx) to tylko jedna technologia stosowana do bramek logicznych. Rzadko używane. Potem był Low-Power Schottky: 74LSxx, ściśle mówiąc także forma TTL. Obecnie istnieją dziesiątki rodzin logicznych, wszystkie oparte na szybkich CMOS (74HCxx, 74HCTxx, 74ACxx, ...)
W dzisiejszych czasach właściwym sposobem na utworzenie ALU byłoby zrobienie tego w CPLD lub FPGA . Daje to wiele bram, a HDL (Hardware Description Language), którego używasz do projektowania ALU, jest o wiele łatwiejszy i mniej podatny na błędy niż próba wymyślenia, jak samemu wykonać połączenia z bramkami logicznymi. VHDL i Verilog to HDL dnia.
Alternatywną metodą utworzenia ALU (bez użycia bramek logicznych) byłby pojedynczy równoległy EEPROM / Flash . Używasz wejść A i B, a operacji jako wejścia (adresu), a wynik operacji jako wyjścia (danych). Wszystko, co musisz zrobić, to skompilować zawartość pamięci ROM, co oznacza, że musisz napisać pod każdym adresem, jaki będzie wynik operacji dla odpowiednich danych wejściowych A, B i operacji. Rozmiar słowa będzie ograniczony przez największy rozmiar ROM, jaki możesz znaleźć.
źródło
Możesz zbudować własny ALU, ale nawet stare komputery z dyskretnymi układami TTL wykorzystały do tego trochę integracji. Na przykład spójrz na układ 74x181. Jest to 4-bitowy wycinek ALU i został użyty w niektórych komputerach TTL do wdrożenia pełnej ALU przy użyciu jednego z tych układów dla każdego 4 bitów.
źródło
Najpierw zacznę od świata HDL. Napisz verilog, użyj symulatora lub icarus verilog, aby go zasymulować. Napisz kod w taki sposób, aby przypominał dyskretny i, lub, i nie bramek, a jeśli tak skłonny, znajdź jakieś części serii 74xx (poddane recyklingowi?) I złóż coś. LUB, istnieje wiele 50 $ plus lub minus CPLD i FPGA, które można mieć i możesz umieścić alu w jednym z tych, które mają jakiś interfejs na zewnątrz, aby zobaczyć, że działa. Twierdziłbym, że edukacja HDL jest taka sama, jak uczysz się podstaw sumatora itp. I multipleksujesz dane wejściowe, wyjściowe i operacyjne. Ale możesz to zrobić w łatwym w użyciu i przyjaznym środowisku przed przeniesieniem go na sprzęt. Bardzo podobnie jak ludzie robią to dzisiaj, projektuj i symuluj, a następnie wdrażaj.
źródło
W przypadku książek zdecydowanie popieram książki „Patterson i Hennessy” (IIRC są 3, przebrane za 3 wydania, ale w rzeczywistości zupełnie inne książki. Jeśli mówisz poważnie: zdobądź je wszystkie).
Jeśli chcesz wypróbować swoją podstawową konstrukcję ALU, a nawet procesora: zacznij eksperymentować z symulatorem logiki. Użyliśmy DigitalWorks do naszych zajęć, ale nie poleciłbym tego. Logisim ( http://sourceforge.net/projects/circuit/ ) wygląda obiecująco. Warunkiem jest opanowanie warstw: budowanie podstawowych bloków, takich jak sumator, selektor i flip-flop z bramkami, a następnie budowanie rejestrów, ALU, logika sekwencjonowania z tych bloków aż do procesora z pamięcią. Naprawdę nie jest tak trudno zbudować, powiedzmy, odpowiednik procesora PIC (rdzeń 14-bitowy), podłącz kilka diod LED i zaprogramuj go, aby wyświetlał ekran Kitt.
Potem będzie fajnie zrobić 32-bitowy rdzeń, podłączyć do niego GCC, zrealizować go w FPGA i uruchomić na nim Linuksa. Ale nie będziesz pierwszy ...
źródło
To wcale nie jest głupie pytanie. Strona Wikipedii pokazuje taki obwód poziomu bramki dla 2-bitowego ALU. Układy scalone ALU były zwykle dostępne w „plasterkach” - zwykle 4-bitowych, które można kaskadowo uzyskać w celu uzyskania większych szerokości magistrali (patrz : dzielenie bitów ).
Datasheet dla Texas 74181 4-BitSlice ALU ma również poziom schemat bramy.
źródło
Historia procesorów polega na rosnącej liczbie rzeczy na opakowanie.
Najwcześniejsze procesory zawsze używały szeregowych ALU zbudowanych z kilku przekaźników lub lamp próżniowych. Pierwszą tradycją tej tradycji był trąba powietrzna z 1947 roku.
Najwcześniejsze tranzystorowe procesory budowały wszystko z pojedynczych tranzystorów.
Komputer prowadzący Apollo (AGM), być może pierwszy komputer zbudowany z układów scalonych, używał tylko jednego rodzaju układu scalonego poza pamięcią: 3-wejściowe bramki NOR. ALU i każda inna część procesora została zbudowana w całości z dużej liczby układów scalonych bramki NOR. (O wiele szybszy) Cray 1 używał także tylko jednego rodzaju układu scalonego poza pamięcią: innego rodzaju bramki NOR.
Gdy ludzie wymyślili, jak wcisnąć więcej tranzystorów na chipie, później procesory wykorzystały (względnie) mniej chipów do wdrożenia ALU.
ALU można zbudować w całości z multiplekserów ( „Multipleksery: taktyczny Nuke of Logic Design” ), wykorzystując znacznie mniej układów niż implementacja NOR.
Dieter Mueller opublikował 8-bitowy układ ALU, który ma więcej funkcji niż dwa układy 74181 - 74181 nie może się przesunąć w prawo - zbudowany z jeszcze mniejszej liczby układów: 14 złożonych układów TTL: dwa 74283 4-bitowe sumatory, niektóre 4: 1 i multiplekser 2: 1.
Podobnie jak wiele historycznie ważnych komputerów komercyjnych, wiele domowych procesorów wykorzystuje pewną wersję 74181, pierwszego „kompletnego” ALU na jednym układzie.
Wiele z tych procesorów zbudowało 8-bitowy ALU lub 16-bitowy (lub oba) z kilku 74181 układów i kilku 74182 układów - każdy 74181 obsługuje tylko operacje 4-bitowe. Maszyny Homebrew zazwyczaj używają najprostszej możliwej rzeczy, która będzie działać - przeprowadzenie jednego 74181 zasilającego do wprowadzenia następnego, tworząc dodatek przenoszący tętnienia. Komercyjne maszyny, które używają układów 74181, zwykle używają generatora przenoszenia z wyprzedzeniem 74182, aby znacznie przyspieszyć dodawanie i odejmowanie.
Obecnie większość jednostek ALU jest ukryta w jakimś układzie scalonym - małej części procesora, innym układzie ASIC lub CPLD lub FPGA.
Nawet po udostępnieniu „komputerów jednoukładowych”, czasami ktoś zbuduje ALU kompatybilny z 74181 z GAL lub ALU, używając tylko prostszych bramek logicznych, a nawet pojedynczych tranzystorów lub przekaźników, do celów uczenia się.
Ludzie to zrobili, dlatego musi to być możliwe.
Przewodnik krok po kroku wyjaśniający projekt i implementację ALU wydaje się być naprawdę dobrym pomysłem. Pomóż nam napisać jeden na wikibooku Projektowanie mikroprocesów, być może w sekcjach „ALU” lub „Wire Wrap” .
źródło
Powinieneś przyjrzeć się elementom systemów komputerowych Nisana i Schockena.
źródło
Historycznie, niektóre prace ALU były wykonywane z dyskrecji (tak, tranzystory i tym podobne), a niektóre z bramkami, a wiele z 4-bitowymi „chipami” (TI SN74181 był wczesny, a Fairchild 29F01 miał swój dzień).
Ale DZISIAJ to kwestia zbudowania równań logicznych w języku bramek lub języku opisu logiki PLA. Istnieją komercyjnie dostępne wstępnie zmontowane moduły, które wpasują dowolną wybraną małą jednostkę logiczną do twojego projektu, wszystko, czego potrzeba, to pieniądze na licencję na „własność intelektualną”.
źródło