Zacznę od najniższego poziomu, który może być istotny (mogę zacząć od jeszcze niższego poziomu, ale prawdopodobnie są one zbyt mało istotne), począwszy od Atomu, przez elektryczność, do tranzystorów, bramek logicznych, do układów scalonych (chip / procesor) ) i kończy się na Zgromadzeniu (zakładam, że znasz wyższe poziomy).
Na początku
Atom
Atom jest strukturą złożoną z elektronów, protonów i neutronów (które same składają się z cząstek elementarnych ). Najciekawszą częścią atomu dla komputerów i elektroniki są elektrony, ponieważ elektron jest mobilny (tzn. Może poruszać się stosunkowo łatwo, w przeciwieństwie do protonów i neutronów, które są trudniejsze do poruszania się) i mogą one same unosić się swobodnie, nie będąc w środku atom.
Zwykle każdy atom ma taką samą liczbę protonów i elektronów, nazywamy to stanem „neutralnym”. Tak się składa, że atom może stracić lub zyskać dodatkowe elektrony. Mówi się, że atomy w tym niezrównoważonym stanie są odpowiednio atomem „naładowanym dodatnio” (więcej protonu niż elektrony) i atomem „naładowanym ujemnie” (więcej elektronu niż protonu).
Elektrony są nie do zbudowania i niezniszczalne (nie w mechanice kwantowej, ale nie ma to znaczenia dla naszych celów); więc jeśli atom traci elektron, jakiś inny atom w pobliżu musiał otrzymać dodatkowe elektrony lub elektron musiał uwolnić się w swobodnym swobodnym elektronie, i odwrotnie, ponieważ elektron jest niemożliwy do zbudowania, aby uzyskać dodatkowy elektron, atom musiał wyssać go z pobliskich atomów lub z swobodnego swobodnego elektronu. Mechanika elektronów jest taka, że jeśli w pobliżu dodatnio naładowanego atomu znajduje się ujemnie naładowany atom, wówczas niektóre elektrony będą migrować, aż oba atomy będą miały taki sam ładunek.
Elektryczność
Elektryczność to po prostu przepływ elektronów z obszaru o bardzo dużej liczbie ujemnie naładowanych atomów do obszaru o bardzo dużej liczbie dodatnio naładowanych atomów. Pewne reakcje chemiczne mogą stworzyć sytuację, w której mamy jeden węzeł z dużą ilością ujemnie naładowanych atomów (zwany „anodą”), a drugi węzeł z dużą ilością dodatnio naładowanych atomów (zwany „katodą”). Jeśli połączymy drutem dwa przeciwnie naładowane węzły, masy elektronów przepłyną od anody do katody, a przepływ ten nazywamy „prądem elektrycznym”.
Nie wszystkie druty mogą przenosić elektrony równie łatwo, elektrony płyną znacznie łatwiej w materiałach „przewodzących” niż w materiałach „odpornych”. Materiał „przewodzący” ma niski opór elektryczny (np. Druty miedziane w kablach), a materiał „odporny” ma wysoką rezystancję elektryczną (np. Gumowa izolacja kabla). Niektóre interesujące materiały nazywane są półprzewodnikami (np. Silikony), ponieważ mogą one łatwo zmieniać swoją rezystancję, w pewnych warunkach półprzewodnik może działać jako przewodnik, aw innych warunkach może przekształcić się w rezystor.
Elektryczność zawsze woli przepływać przez materiał o najmniejszym oporze, więc jeśli katoda i anoda są połączone dwoma drutami, jeden o bardzo wysokiej rezystancji, a drugi o bardzo niskiej rezystancji, większość elektronów przepłynie przez kabel o niskiej rezystancji i prawie żaden nie przepływa przez materiał o wysokiej odporności.
Wiek średni
Przełączniki i tranzystory
Przełączniki / przerzutniki są jak zwykłe włączniki światła, między dwoma kawałkami drutu można umieścić przełącznik, aby odciąć i / lub przywrócić przepływ prądu. Tranzystory działają dokładnie tak samo, jak włącznik światła, z tym wyjątkiem, że zamiast fizycznie podłączać i odłączać przewody, tranzystor łączy / odłącza przepływ prądu, zmieniając jego rezystancję w zależności od tego, czy w węźle bazowym jest prąd, i, jak można się już domyślić / Wiem, tranzystory są wykonane z półprzewodników, ponieważ możemy zmienić półprzewodnik, aby stał się rezystorem lub przewodnikiem do łączenia lub odłączania prądów elektrycznych.
Jeden wspólny typ tranzystora, NPN Bipolar Junction Transistor (BJT), ma trzy węzły: „podstawowy”, „kolektor” i „emiter”. W NPN BJT energia elektryczna może przepływać z węzła „emitera” do węzła „kolektora” tylko wtedy, gdy węzeł „bazy” jest naładowany. Gdy węzeł podstawowy nie jest naładowany, praktycznie żaden elektron nie może przepływać, a gdy węzeł podstawowy jest naładowany, wówczas elektrony mogą przepływać między emiterem a kolektorem.
Zachowanie tranzystora
(Gorąco sugeruję przeczytanie tego przed kontynuowaniem, ponieważ może to wyjaśnić lepiej niż ja dzięki interaktywnej grafice)
Załóżmy, że mamy tranzystor podłączony do źródła elektrycznego u podstawy i kolektora, a następnie podłączamy kabel wyjściowy w pobliżu jego kolektora (patrz rysunek 3 w http://www.spsu.edu/cs/faculty/bbrown/web_lectures / tranzystory / ).
Kiedy przykładamy energię elektryczną do bazy lub kolektora, wówczas nie może ona w ogóle przepłynąć, ponieważ nie ma elektryczności, o której można by mówić:
B C | E O
0 0 | 0 0
Kiedy przykładamy elektryczność do kolektora, ale nie do podstawy, elektryczność nie może przepłynąć do emitera, ponieważ podstawa staje się materiałem o wysokiej rezystancji, więc elektryczność ucieka do drutu wyjściowego:
B C | E O
0 1 | 0 1
Kiedy przykładamy energię elektryczną do podstawy, ale nie do kolektora, również energia elektryczna nie może przepływać, ponieważ nie ma różnicy w ładunku między kolektorem a emiterem:
B C | E O
1 0 | 0 0
Kiedy przykładamy elektryczność zarówno do podstawy, jak i do kolektora, dostajemy elektryczność przepływającą przez tranzystor, ale ponieważ tranzystor ma teraz niższy opór niż drut wyjściowy, prawie żaden prąd nie przepływa przez drut wyjściowy:
B C | E O
1 1 | 1 O
Bramki logiczne
Kiedy podłączamy emiter jednego tranzystora (E1) do kolektora innego tranzystora (C2), a następnie podłączamy wyjście w pobliżu podstawy pierwszego tranzystora (O) (patrz rysunek 4 w http://www.spsu.edu / cs / faculty / bbrown / web_lectures / tranistors / ), wtedy dzieje się coś ciekawego. Powiedzmy również, że zawsze przykładamy prąd do kolektora pierwszego tranzystora (C1), więc bawimy się tylko podstawowymi węzłami tranzystorów (B1, B2):
B1 B2 C1 E1/C2 | E2 O
----------------------+----------
0 0 1 0 | 0 1
0 1 1 0 | 0 1
1 0 1 0 | 0 1
1 1 1 1 | 1 0
Podsumujmy tabelę, aby zobaczyć tylko B1, B2 i O:
B1 B2 | O
---------+-----
0 0 | 1
0 1 | 1
1 0 | 1
1 1 | 0
I oto , jeśli znasz Boolean Logic i / lub Logic Gates, powinieneś zauważyć, że jest to dokładnie brama NAND. A jeśli znasz Boolean Logic i / lub Logic Gates, możesz również wiedzieć, że NAND (jak również NOR) jest funkcjonalnie kompletny , tj. Używając tylko NAND, możesz skonstruować wszystkie pozostałe bramki logiczne i resztę prawdy stoły Innymi słowy, możesz zaprojektować cały układ komputerowy przy użyciu samych bramek NAND.
W rzeczywistości większość procesorów jest (czy była kiedyś?) Projektowana przy użyciu tylko NAND, ponieważ jest tańsza w produkcji niż przy użyciu kombinacji NAND, NOR, AND, OR itp.
Pozyskiwanie innych operatorów logicznych z NAND
Nie opisałbym, jak zrobić wszystkie operatory logiczne, tylko bramkę NOT i AND, resztę można znaleźć gdzie indziej.
Biorąc pod uwagę operator NAND, możemy zbudować bramę NOT:
Given one input B
O = NAND(B, B)
Output O
Biorąc pod uwagę operator NAND i NOT, możemy zbudować bramkę AND:
Given two inputs B1, B2
C = NAND(B1, B2)
O = NOT(C) // or NAND(C,C)
Output O
W podobny sposób możemy zbudować inne bramki logiczne. Ponieważ bramka NAND jest funkcjonalnie ukończona , możliwe jest również zbudowanie bramek logicznych z więcej niż 2 wejściami i więcej niż 1 wyjściem, dlatego nie zamierzam tutaj omawiać, jak zbudować takie bramki logiczne.
Wiek oświecenia
Budowanie maszyny Turinga z Boolean Gates
Procesor to po prostu bardziej skomplikowana wersja maszyny Turinga. Rejestry procesora to stan wewnętrzny maszyny Turinga, a pamięć RAM to taśma maszyny Turinga.
Maszyna Turinga (CPU) potrafi trzy rzeczy:
- odczytać 0 lub 1 z taśmy (odczytać komórkę pamięci z RAM)
- zmień jego stan wewnętrzny (zmień jego rejestry)
- przesuń w lewo lub w prawo (odczyt wielu pozycji z pamięci RAM)
- zapisz 0 lub 1 na taśmie (napisz do komórki pamięci do RAM)
W naszym celu budujemy 2-stanową 3-symbolową maszynę Turinga Wolframa z wykorzystaniem logiki kombinatorycznej (nowoczesne procesory wykorzystywałyby mikrokod, ale są one bardziej złożone niż jest to konieczne do naszych celów).
Tabela stanu maszyny Turinga Wolframa (2,3) jest następująca:
A B
0 P1,R,B P2,L,A
1 P2,L,A P2,R,B
2 P1,L,A P0,R,A
Chcemy ponownie zakodować powyższą tabelę stanów jako tabelę prawdy:
Let I1,I2 be the input from the tape reader (0 = (0,0), 1 = (0,1), 2 = (1,0))
Let O1,O2 be the tape writer (symbol encoding same as I1,I2)
Let M be connected to the machine's motor (0 = move left, 1 = move right)
Let R be the machine's internal state (A = 0, B = 1)
(R(t) is the machine's internal state at timestep t, R(t+1) at timestep t+1)
(Note that we used two input and two outputs since this is a 3-symbol Turing machine.)
R 0 1
I1,I2
(0,0) (0,1),1,1 (1,0),0,0
(0,1) (1,0),0,0 (1,0),1,1
(1,0) (0,1),0,0 (0,0),1,0
The truth table for the state table above:
I1 I2 R(t) | O1 O2 M R(t+1)
-------------+--------------------
0 0 0 | 0 1 1 1
0 0 1 | 1 0 0 0
0 1 0 | 1 0 0 0
0 1 1 | 1 0 1 1
1 0 0 | 0 1 0 0
1 0 1 | 0 0 1 0
Tak naprawdę nie zamierzam budować takiej bramki logicznej (nie jestem pewien, jak narysować ją w SE i prawdopodobnie będzie dość duża), ale ponieważ wiemy, że brama NAND jest funkcjonalnie ukończona , więc mamy sposób znaleźć serię bramek NAND, które wdrożą tę tabelę prawdy.
Ważną właściwością maszyny Turinga jest to, że można emulować komputer z programem przechowywanym za pomocą maszyny Turinga, która ma tylko stałą tabelę stanów. Dlatego dowolna uniwersalna maszyna Turinga może odczytać swój program z taśmy (RAM) zamiast konieczności zapisywania instrukcji w wewnętrznej tabeli stanów. Innymi słowy, nasza (2,3) maszyna Turinga może odczytać instrukcje z pinów I1, I2 (jako oprogramowanie) zamiast być zakodowana na stałe w implementacji bramki logicznej (jako sprzęt).
Mikrokody
Z powodu rosnącej złożoności współczesnych procesorów, zbyt trudne staje się używanie samej logiki kombinatorycznej do projektowania całego procesora. Współczesny procesor jest zwykle zaprojektowany jako interpreter instrukcji mikrokodów; mikrokod to mały program osadzony w CPU, który jest wykorzystywany przez CPU do interpretacji rzeczywistego kodu maszynowego. Ten interpreter mikrokodu jest na ogół zaprojektowany przy użyciu logiki kombinatorycznej.
Zarejestruj się, pamięć podręczna i pamięć RAM
Zapomnieliśmy czegoś powyżej. Jak coś pamiętamy? Jak wdrażamy taśmę i pamięć RAM? Odpowiedź znajduje się w elemencie elektronicznym o nazwie Kondensator. Kondensator jest jak akumulator, który po naładowaniu zachowa dodatkowe elektrony i może również zwrócić elektrony do obwodu.
Aby zapisać na kondensatorze, wypełniamy kondensator elektronem (zapis 1) lub drenujemy wszystkie elektrony w kondensatorze, aż będzie pusty (zapis 0). Aby odczytać wartość kondensatora, staramy się go rozładować. Jeśli, gdy próbujemy rozładować, nie przepływa prąd, wówczas kondensator jest pusty (odczyt 0), ale jeśli wykryjemy prąd, wówczas kondensator musi zostać naładowany (odczyt 1). Można zauważyć, że odczyt kondensatora wyczerpuje jego magazyn elektronów, nowoczesne pamięci RAM mają układ okresowego ładowania kondensatora, aby mogli zachować pamięć tak długo, jak długo jest prąd.
Istnieje wiele rodzajów kondensatorów używanych w procesorze, rejestry procesora i pamięci podręczne procesora wyższego poziomu są tworzone przy użyciu bardzo szybkich „kondensatorów”, które faktycznie są zbudowane z tranzystorów (dlatego prawie nie ma „opóźnienia” do odczytu / zapisu z im), nazywane są statyczną pamięcią RAM (SRAM); podczas gdy główna pamięć RAM jest wykonana przy użyciu mniejszej mocy, ale wolniejszych i znacznie tańszych kondensatorów, są one nazywane dynamiczną pamięcią RAM (DRAM).
Zegar
Bardzo ważnym elementem procesora jest zegar. Zegar to składnik, który „tyka” regularnie w celu synchronizacji przetwarzania. Zegar zazwyczaj zawiera kwarc lub inne materiały o dobrze znanym i stosunkowo stałym okresie oscylacji, a zespół zegarowy utrzymuje i mierzy tę oscylację, aby zachować swoje poczucie czasu.
Operacje procesora są wykonywane między taktami zegara, a tykania odczytywania / zapisywania są wykonywane w taktach, aby zapewnić, że wszystkie komponenty poruszają się synchronicznie i nie depczą do siebie w stanie pośrednim. W naszej (2,3) maszynie Turinga między tyknięciami zegara prąd przepływa przez bramki logiczne, aby obliczyć moc wyjściową (I1, I2, R (t)); a w tyknięciach zegara zapisujący taśmę zapisze O1, O2 na taśmie, silnik będzie poruszał się w zależności od wartości M, a rejestr wewnętrzny jest zapisywany z wartości R (t + 1), a następnie czytnik taśm odczyta bieżącą taśmę i włoży ładunek do I1, I2, a rejestr wewnętrzny zostanie ponownie odczytany z powrotem do R (t).
Rozmowa z urządzeniami peryferyjnymi
Zwróć uwagę, w jaki sposób (2,3) maszyna Turinga współpracuje z silnikiem. Jest to bardzo uproszczony widok tego, w jaki sposób procesor może współpracować z dowolnym sprzętem. Arbitralny sprzęt może nasłuchiwać lub zapisywać na określonym przewodzie dla wejść / wyjść. W przypadku maszyny Turinga (2,3) jej interfejs z silnikiem jest tylko pojedynczym drutem, który instruuje silnik, aby obrócił się w prawo lub w lewo.
W tej maszynie nie zostało powiedziane, że silnik musiał mieć inny „zegar”, który działa synchronicznie z wewnętrznym „zegarem” maszyny, aby wiedzieć, kiedy rozpocząć i zatrzymać pracę, więc jest to przykład synchronicznej transmisji danych . Druga powszechnie stosowana alternatywna transmisja asynchroniczna wykorzystuje inny przewód, zwany linią przerwania, do komunikacji punktów synchronizacji między CPU a urządzeniem asynchronicznym.
Era cyfrowa
Kod maszynowy i montaż
Język asemblera to czytelny dla człowieka mnemonik kodów maszynowych. W najprostszym przypadku istnieje odwzorowanie jeden na jeden między zestawem a kodem maszynowym; chociaż w nowoczesnych językach asemblerowych niektóre instrukcje mogą być mapowane na wiele kodów operacyjnych.
Język programowania
Wszyscy wiemy, czyż nie?
Uff, w końcu skończyłem, napisałem to wszystko w zaledwie 4 godziny, więc jestem pewien, że gdzieś jest błąd (jestem przede wszystkim programistą, a nie inżynierem elektrykiem ani fizykiem, więc może być kilka rzeczy, które są rażąco złe). Jeśli znajdziesz błąd, nie wahaj się dać @yell lub naprawić go samodzielnie, jeśli masz przedstawiciela lub udzielisz uzupełniającej odpowiedzi.