Większość rzeczy w komputerze jest stosunkowo łatwa do zrozumienia: pamięć RAM, pamięć masowa, urządzenia peryferyjne i oprogramowanie współpracują ze sobą, tworząc funkcję komputera. Ale serce twojego systemu, procesor, wydaje się magiczne nawet dla wielu techników. Tutaj zrobimy co w naszej mocy, aby to rozbić.
Większość badań do tego artykułu pochodzi z witryny „Ale skąd to wiedzieć?” J. Clark Scott. To fantastyczna lektura, o wiele głębsza niż ten artykuł i jest warta kilku dolarów na Amazon.
Jedna uwaga, zanim zaczniemy: nowoczesne procesory są o rzędy wielkości bardziej złożone niż to, co tutaj opisujemy. Jedna osoba jest prawie niemożliwa do zrozumienia każdego niuansu chipa z ponad miliardem tranzystorów. Jednak podstawowe zasady dotyczące tego, jak to wszystko do siebie pasują, pozostają takie same, a zrozumienie podstaw zapewni lepsze zrozumienie nowoczesnych systemów.
Zaczynając od małych
Komputery działają w dwójkowy . Rozumieją tylko dwa stany: włączony i wyłączony. Aby wykonać obliczenia binarne, używają tak zwanego tranzystora. Tranzystor umożliwia przepływ prądu źródłowego do drenu tylko wtedy, gdy przez bramkę przepływa prąd. Zasadniczo tworzy to przełącznik binarny, który odcina przewód w zależności od drugiego sygnału wejściowego.
ZWIĄZANE Z: Co to jest plik binarny i dlaczego komputery go używają?
Współczesne komputery używają miliardów tranzystorów do wykonywania obliczeń, ale na najniższych poziomach wystarczy kilka, aby utworzyć najbardziej podstawowe elementy, zwane bramkami.
Bramki logiczne
Ułóż odpowiednio kilka tranzystorów, a otrzymasz coś, co nazywa się bramką logiczną. Bramki logiczne pobierają dwa wejścia binarne, wykonują na nich operację i zwracają wyjście. Na przykład bramka OR zwraca prawdę, jeśli jedno z wejść jest prawdziwe. Bramka AND sprawdza, czy oba wejścia są prawdziwe, XOR sprawdza, czy tylko jedno z wejść jest prawdziwe, a warianty N (NOR, NAND i XNOR) są odwróconymi wersjami ich bramek podstawowych.
Matematyka z Gatesem
Za pomocą zaledwie dwóch bramek możesz wykonać podstawowe dodawanie binarne. Powyższy diagram przedstawia pół sumator utworzony przy użyciu Logicznie , darmowy internetowy plac zabaw dla bramek logicznych. Bramka XOR włączy się tutaj, jeśli tylko jedno wejście będzie włączone, ale nie oba. Bramka AND włączy się, jeśli oba wejścia są włączone, ale pozostanie wyłączona, jeśli nie ma wejścia. Więc jeśli oba są włączone, XOR pozostaje wyłączony, a bramka AND włącza się, dochodząc do poprawnej odpowiedzi dwóch:
Daje nam to prostą konfigurację z trzema różnymi wyjściami: zero, jeden i dwa. Ale jeden bit nie może przechowywać niczego więcej niż 1, a ta maszyna nie jest zbyt przydatna, ponieważ rozwiązuje tylko jeden z najprostszych możliwych problemów matematycznych. Ale to tylko pół sumatora, a jeśli połączysz dwa z nich innym wejściem, otrzymasz pełny sumator:
Pełny sumator ma trzy wejścia - dwie liczby do dodania i „przeniesienie”. Przenoszenie jest używane, gdy ostateczna liczba przekracza to, co można zapisać w jednym bicie. Pełne sumatory zostaną połączone w łańcuch, a przeniesienie jest przekazywane z jednego sumatora do drugiego. Przeniesienie jest dodawane do wyniku bramki XOR w sumatorze pierwszej połowy, i jest dodatkowa bramka OR do obsługi obu przypadków, gdy tak musiałaby być włączona.
Gdy oba wejścia są włączone, przenoszenie włącza się i wysyła do następnego pełnego sumatora w łańcuchu:
A to jest tak złożone, jak tylko dodawanie. Przejście do większej liczby bitów oznacza po prostu więcej pełnych sumatorów w dłuższym łańcuchu.
Większość innych operacji matematycznych można wykonać z dodawaniem; mnożenie jest po prostu powtórzeniem dodawania, odejmowanie można wykonać za pomocą fantazyjnej inwersji bitów, a dzielenie jest po prostu powtórzeniem odejmowania. I chociaż wszystkie nowoczesne komputery mają rozwiązania sprzętowe, które przyspieszają bardziej skomplikowane operacje, technicznie można to wszystko zrobić za pomocą pełnego dodatku.
Autobus i pamięć
W tej chwili nasz komputer to nic innego jak kiepski kalkulator. Dzieje się tak, ponieważ niczego nie pamięta i nic nie robi ze swoimi wynikami. Powyżej pokazano komórkę pamięci, która może to wszystko zrobić. Pod maską wykorzystuje wiele bramek NAND, aw rzeczywistości może być całkiem różny w zależności od techniki przechowywania, ale jego funkcja jest taka sama. Dajesz mu pewne dane wejściowe, włączasz bit „zapisu”, a on zapisze dane wejściowe wewnątrz komórki. To nie jest tylko komórka pamięci, ponieważ potrzebujemy również sposobu na odczytanie z niej informacji. Odbywa się to za pomocą aktywatora, który jest zbiorem bramek AND dla każdego bitu w pamięci, wszystkie powiązane z innym wejściem, bitem „odczytu”. Bity zapisu i odczytu są często nazywane również „ustawieniem” i „włączeniem”.
Cała paczka jest umieszczona w tak zwanym rejestrze. Rejestry są podłączone do magistrali, która jest wiązką przewodów biegnących wokół całego systemu, podłączonych do każdego elementu. Nawet nowoczesne komputery mają magistralę, chociaż mogą mieć wiele magistral, aby poprawić wydajność wielozadaniowości.
Każdy rejestr nadal ma bit zapisu i odczytu, ale w tej konfiguracji wejście i wyjście są tym samym. To jest naprawdę dobre. Na przykład. Gdybyś chciał skopiować zawartość R1 do R2, włączyłbyś odczytany bit dla R1, który wypchnąłby zawartość R1 na magistralę. Gdy bit odczytu jest włączony, należy włączyć bit zapisu dla R2, który skopiowałby zawartość magistrali do R2.
Rejestry są również używane do tworzenia pamięci RAM. Pamięć RAM jest często układana w siatce, a przewody biegną w dwóch kierunkach:
Dekodery pobierają binarne wejście i włączają odpowiedni ponumerowany przewód. Na przykład „11” to 3 binarnie, najwyższa liczba 2-bitowa, więc dekoder włączy najwyższy przewód. Na każdym skrzyżowaniu jest rejestr. Wszystkie są podłączone do magistrali centralnej i do centralnego wejścia do zapisu i odczytu. Zarówno wejście do odczytu, jak i do zapisu włączą się tylko wtedy, gdy dwa przewody przecinające rejestr są również włączone, skutecznie umożliwiając wybór rejestru, z którego chcesz zapisywać i czytać. Ponownie, nowoczesna pamięć RAM jest znacznie bardziej skomplikowana, ale ta konfiguracja nadal działa.
Zegar, silnik krokowy i dekoder
Rejestry są używane wszędzie i są podstawowym narzędziem do przenoszenia danych i przechowywania informacji w CPU. Co więc każe im przenosić rzeczy?
Zegar jest pierwszym elementem rdzenia procesora i będzie wyłączał się i włączał w ustalonych odstępach czasu, mierzonych w hercach lub cyklach na sekundę. To jest prędkość, którą reklamuje się obok procesorów; chip 5 GHz może wykonać 5 miliardów cykli na sekundę. Szybkość zegara jest często bardzo dobrym wskaźnikiem szybkości procesora.
Zegar ma trzy różne stany: zegar bazowy, zegar włączający i zegar nastawiony. Zegar bazowy będzie włączony przez pół cyklu i wyłączony przez drugą połowę. Zegar włączający służy do włączania rejestrów i będzie musiał być włączony dłużej, aby upewnić się, że dane są włączone. Ustawiony zegar zawsze musi być włączony w tym samym czasie co zegar włączający, w przeciwnym razie mogą zostać zapisane nieprawidłowe dane.
Zegar jest podłączony do steppera, który będzie liczył od jednego do maksymalnego kroku, a po zakończeniu resetuje się z powrotem do jednego. Zegar jest również podłączony do bramek AND dla każdego rejestru, w którym procesor może zapisywać:
Te bramki AND są również podłączone do wyjścia innego komponentu, dekodera instrukcji. Dekoder instrukcji przyjmuje instrukcję taką jak „SET R2 TO R1” i dekoduje ją na coś zrozumiałego dla procesora. Posiada swój własny rejestr wewnętrzny, zwany „rejestrem instrukcji”, w którym przechowywana jest bieżąca operacja. Jak dokładnie to robi, sprowadza się to do systemu, na którym pracujesz, ale po zdekodowaniu włączy właściwy zestaw i uaktywni bity dla odpowiednich rejestrów, które zostaną uruchomione zgodnie z zegarem.
Instrukcje programu są przechowywane w pamięci RAM (lub pamięci podręcznej L1 w nowoczesnych systemach, bliżej procesora). Ponieważ dane programu są przechowywane w rejestrach, tak jak każda inna zmienna, można nimi manipulować w locie, aby przeskakiwać po programie. W ten sposób programy uzyskują swoją strukturę, z pętlami i instrukcjami if. Instrukcja skoku ustawia bieżącą lokalizację w pamięci, z której dekoder instrukcji czyta, do innej lokalizacji.
Jak to wszystko się łączy
Teraz nasze rażące uproszczenie sposobu działania procesora jest zakończone. Główna magistrala obejmuje cały system i łączy się ze wszystkimi rejestrami. Pełne sumatory wraz z kilkoma innymi operacjami są umieszczane w jednostce arytmetycznej lub jednostce ALU. Ta jednostka ALU będzie miała połączenia z magistralą, a także będzie miała własne rejestry do przechowywania drugiego numeru, na którym działa.
Aby wykonać obliczenia, dane programu są ładowane z systemowej pamięci RAM do sekcji sterowania. Sekcja sterująca odczytuje dwie liczby z pamięci RAM, ładuje pierwszą do rejestru instrukcji jednostki ALU, a następnie ładuje drugą na magistralę. W międzyczasie wysyła do ALU kod instrukcji informujący, co ma robić. Następnie jednostka ALU wykonuje wszystkie obliczenia i zapisuje wynik w innym rejestrze, z którego CPU może odczytać, a następnie kontynuować proces.
Źródło zdjęcia: Rost9 / Shutterstock