Od wielu lat jestem kujonem komputerowym. Potrafię programować w kilku językach, a nawet je budować. Pewnego dnia usiadłem z kumplem i zapytałem, w jaki sposób komputer rzeczywiście pobiera prąd i coś z nim robi, i po prostu nie mogliśmy tego zrozumieć, a Google też niewiele pomógł.
Mam na myśli, w jaki sposób komputer pobiera stały przepływ prądu i zamienia go na 1 i 0, a następnie faktycznie robi coś z tymi 1 i 0 jak włączanie światła na 15 sekund?
Rozumiem bramy (I, LUB, NOR, NAND, NIE) i trochę o diodach , opornikach i tranzystorach , ale pomyślałem, że byłoby to idealne miejsce, aby wyjaśnić to w prawdziwych słowach świeckich!
Czy ktoś może wskazać mi właściwy kierunek lub podać krótkie wyjaśnienie?
computer-architecture
education
reference-question
chrześcijanin
źródło
źródło
Odpowiedzi:
To szerokie pytanie, na które nie ma łatwej odpowiedzi; to długa droga od elektronów wędrujących wzdłuż miedzianych drutów do renderowania strony internetowej w Firefoksie. Spróbuję dać ci przegląd od dołu do góry i wskażę odpowiednie rzeczy, na które można spojrzeć w górę.
Kodowanie liczb
Zauważ, że istnieje również wiele sposobów kodowania liczb w systemie binarnym. Po zbudowaniu pierwszego procesora zdajesz sobie sprawę z zalet robienia rzeczy w określony sposób. Popularnymi przykładami są dwa uzupełnienia i zmiennoprzecinkowe IEEE . Na początek ogranicz się do zwykłych liczb naturalnych.
Bramy
Załóżmy, że używamy kodowania binarnego. Pomyśl o tym, jak nauczyłeś się dodawania w szkole podstawowej i zapisz to samo dla liczb binarnych. Jak się okazuje, elementy składowe algebry boolowskiej są już dla ciebie dostępne; łatwo jest zbudować podstawowy sumator (i inne funkcje arytmetyczne) za pomocą bramek logicznych .
Jak zbudować takie bramy, nie wchodzi w zakres informatyki; inżynieria elektryczna dostarczyła wiele rozwiązań przy użyciu np. lamp lub tranzystorów . Udaj się do Elektrycznego Stos Exchange na pytania w tej sprawie.
Zegar i stan
Nie wszystkie bramki są równie szybkie i nie wszystkie części obliczeń mają tę samą liczbę bramek. Dlatego musimy szczególnie uważać, aby poszczególne operacje się nie wyprzedzały. Przydatne okazało się użycie zegara globalnego ; wynikiem danej sieci bramek jest stan przewodów wyjściowych na końcu cyklu (który może zmieniać się gwałtownie, gdy bramki kaskadowo zbliżają się do poszczególnych stanów końcowych).
Oznacza to, że wyniki jednego cyklu mogą wymagać zapisania aż do rozpoczęcia następnego cyklu, np. W przypadku podłączenia pętli. Istnieje wiele podstawowych elementów, których można użyć z różnym skutkiem, wszystkie gromadzone z bram; niektóre są nazywane klapkami . Są one również używane do budowania rejestrów , elementów przechowujących liczby dla tylu cykli zegara, ile potrzeba.
Architektura i polecenia
Teraz masz mnóstwo do wyboru. Jakie operacje arytmetyczne zapewnia twój procesor? Jak wyglądają twoje polecenia? Warto spojrzeć na architekturę MIPS, której wczesne formy są łatwe w porównaniu z innymi projektami. Spójrz na plany :
Oryginał z http://ube.ege.edu.tr/~erciyes/CENG311
Zasadniczo jest to pobieranie i dezasemblacja poleceń, zestaw rejestrów, ALU i kontrola. Polecenia kodują operację ALU, którą należy wykonać na których operandach (według numeru rejestru, w którym są przechowywane), jak manipulować licznikiem programu² lub który rejestr ładować / przechowywać z / do pamięci³.
Dalsze uwagi
Do tej pory masz działający procesor w nowoczesnym sensie, zakładając, że wymyśliłeś, jak zbudować pamięć i sposób, w jaki ją karmić. W drodze do nowoczesnej maszyny trzeba dokonać wielu wyborów. Oto niektóre:
Alternatywy
Na powyższe duży wpływ ma historia. W innym świecie o różnych umysłach komputery mogą działać inaczej. W rzeczywistości istnieje wiele modeli obliczeń , z których niektóre mają zalety, które czynią je przydatnymi jako abstrakcja dla prawdziwych maszyn w wielu przypadkach. Podejmowane są również próby naśladowania sposobu działania naszego mózgu, to znaczy umożliwienia obliczeń neuronowych , lub bardziej ogólnie, wykorzystania strategii rozwiązywania problemów i przechowywania informacji zaobserwowanych w naturze , w szczególności DNA i obliczeń kwantowych .
Więc może (mam nadzieję?) Powyższe informacje to cała starożytna historia za kolejne 50 lub 100 lat.
źródło
Pełny obraz jest dość skomplikowany. Istnieje wiele warstw ułożonych jedna na drugiej, które wspólnie realizują abstrakcje wysokiego poziomu nad napięciami elektrycznymi. Nie ma prostego wyjaśnienia, jak wszystko się składa, szczególnie biorąc pod uwagę, że sprzęt komputerowy i oprogramowanie zmieniły się dramatycznie w ciągu ostatnich pięćdziesięciu lat.
Jeśli chcesz zobaczyć, jak wszystko się składa, możesz sprawdzić The Elements of Computing Systems , książkę, która zaczyna się od bramek NAND i stopniowo buduje działającą implementację Tetris na podstawie kompilatora i systemu operacyjnego, który ty także budujesz. Każdy element komputera jest zbudowany na poprzednim, co może pomóc zobaczyć, jak wszystko działa.
źródło
Podcast Bezpieczeństwo teraz! napisałem serię na temat działania komputerów, zaczynając od podstawowych zasad.
Luki w liczbach wynikają z tego, że co drugi odcinek to odcinek opinii słuchacza, więc możesz też chcieć je obejrzeć. Również między 241 a 247 zrobili kilka epizodów na temat SSL ze względu na najświeższe informacje o krajach zmuszających CA do przyznania im certyfikatów root.
Również EP. 248 to „przenośny zabójca psów”, który nie zabija psów, ale broń wiązki dźwiękowej, którą Steve sam stworzył jako dziecko, aby pomóc w uczeniu psa sąsiada, aby nie podbiegł do linii ogrodzenia i nie próbował atakować ludzi na chodniku .
źródło
Komputer działa poprzez manipulowanie gradientami energii (które następnie interpretujemy jako 1 i 0) w spójny , zdefiniowany sposób. To spójność definiuje komputer, podczas gdy to definicja dzieli poszczególne procesory.
Dowiedz się również, w jaki sposób dwie bramki logiczne (OR i AND) są wystarczającymi elementami do zbudowania dowolnego komputera ogólnego przeznaczenia. Zobacz także Danny Hillis i komputer Tinkertoy.
źródło
Komputer jest duża synchroniczny układ logiczny , co oznacza, że
Ma wyspecjalizowane obwody do przechowywania informacji, dopóki komputer jest zasilany (pamięć RAM w dużych ilościach). Ma wyspecjalizowane obwody do wykonywania arytmetyki binarnej (w rzeczywistości bity są obsługiwane w grupach - zwykle w wielokrotnościach 8 - które łącznie reprezentują liczbę całkowitą). I ma wyspecjalizowane możliwości routingu oparte na adresach pamięci, które są niczym innym jak liczbami całkowitymi.
Wreszcie, nowoczesny komputer ma również program przechowywany w pamięci RAM, który jest listą instrukcji zakodowanych jako liczby całkowite, który jest wykonywany sekwencyjnie, zwykle pobierając dane z pamięci, wykonując pewną arytmetykę i wysyłając wyniki z powrotem do pamięci.
W twoim scenariuszu można pomyśleć o implementacji, w której upływ czasu jest przechowywany gdzieś w pamięci RAM, a program instruuje, aby
Zauważ, że wszystkie te elementy osiągają obecnie wysoki stopień wyrafinowania, a każde zdanie w tym bardzo krótkim przeglądzie zasługuje na kilka książek z wyjaśnieniami.
źródło
Istnieje kilka sposobów wykonania funkcji opóźnienia lub konwersji danych binarnych na dane dziesiętne lub siłę sygnału. Po wprowadzeniu wartości „15” komputer wyświetla na ekranie obraz bitmapowy liczby 15. Jest to w rzeczywistości wartość binarna, w tej chwili kod binarny twojej klawiatury jest również wysyłany do procesora. Będzie parsował dane, a następnie zamienił kod na jednostkę przetwarzającą ALU (arytmetyczna jednostka logiczna), aby przekształcić go w impuls na układ DAC. Sygnał analogowy kontroluje teraz częstotliwość (częstotliwość od kHz do Hz) obwodu przerzutnika. Teraz wyjście częstotliwości zostanie skierowane do pamięci RAM, a procesor odczyta pamięć RAM, aby dopasować, jeśli dane to „1111”. To 4 sekundy.
źródło