HTG wyjaśnia, jak działa procesor?
Większość rzeczy w komputerze jest stosunkowo prosta do zrozumienia: pamięć RAM, pamięć masowa, urządzenia peryferyjne i oprogramowanie współpracują ze sobą, aby uzyskać funkcję komputera. Ale serce twojego systemu, procesor, wydaje się magią nawet dla wielu techników. Tutaj zrobimy co w naszej mocy, aby to zepsuć.
Większość badań tego artykułu pochodzi od "Ale jak to się dzieje?" J. Clarka Scotta. To fantastyczna lektura, idzie o wiele głębiej niż ten artykuł i jest warta pary dolarów na Amazon.
Jedna uwaga, zanim zaczniemy: współczesne procesory są o rząd wielkości bardziej złożone niż to, co tutaj opisujemy. Niemal niemożliwe jest, aby jedna osoba zrozumiała każdy niuans układu z ponad miliardem tranzystorów. Jednak podstawowe zasady dotyczące tego, jak to wszystko pasuje, pozostają takie same, a zrozumienie podstaw pozwoli lepiej zrozumieć współczesne systemy.
Począwszy od małej
Komputery działają w systemie binarnym. Rozumieją tylko dwa stany: włączanie i wyłączanie. Aby wykonywać obliczenia binarnie, używają tak zwanego tranzystora. Tranzystor zezwala tylko na przepływ prądu źródłowego przez odpływ do odpływu, jeśli prąd płynie przez bramę. Zasadniczo tworzy to przełącznik binarny, który odcina przewód w zależności od drugiego sygnału wejściowego.
Współczesne komputery używają miliardów tranzystorów do wykonywania obliczeń, ale na najniższych poziomach wystarczy garść, aby utworzyć najbardziej podstawowe komponenty, znane jako bramki.
Bramki logiczne
Ułóż odpowiednio kilka tranzystorów, a masz tak zwaną bramkę logiczną. Bramki logiczne pobierają dwa wejścia binarne, wykonują na nich operację i zwracają dane wyjściowe. Bramka OR na przykład zwraca wartość true, jeśli którekolwiek z danych wejściowych 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 podstawowych bramek.
Robi matematykę z bramkami
Za pomocą tylko dwóch bramek możesz zrobić podstawowy dodatek binarny. Powyższy diagram pokazuje pół sumatora, utworzonego za pomocą Logicly, darmowego placu zabaw online dla bramek logicznych. Bramka XOR zostanie włączona, jeśli tylko jedno z wejść jest włączone, ale nie obie. Bramka AND zostanie włączona, jeśli oba wejścia są włączone, ale pozostanie wyłączone, jeśli nie ma wejścia. Jeśli oba są włączone, XOR pozostaje wyłączony, a bramka AND włącza się, dochodząc do prawidłowej odpowiedzi dwóch:
To daje nam prostą konfigurację z trzema różnymi wyjściami: zero, jeden i dwa. Ale jeden bit nie może przechowywać niczego wyższego niż 1, a ten komputer nie jest zbyt użyteczny, ponieważ rozwiązuje tylko jeden z najprostszych problemów matematycznych. Ale to jest tylko połowa addera, a jeśli połączysz dwa z nich z innym wejściem, otrzymasz pełny sumator:
Pełny sumator ma trzy wejścia - dwa numery do dodania i "przenoszenie". Przenoszenie jest używane, gdy końcowa liczba przekracza to, co można zapisać w jednym bicie. Pełne sumatory zostaną połączone w łańcuch, a przeniesienie zostanie przeniesione z jednego sumatora do następnego. Nośnik jest dodawany do wyniku bramki XOR w sumatorze pierwszej połowy, i jest dodatkowa bramka OR do obsługi obu przypadków, kiedy to musi być włączone.
Gdy oba wejścia są włączone, przeniesienie zostaje włączone i wysyła je do następnego pełnego sumatora w łańcuchu:
A to jest tak skomplikowane, jak robi to dodawanie. Przesunięcie do większej liczby bitów oznacza po prostu więcej pełnych adderów w dłuższym łańcuchu.
Większość innych operacji matematycznych można wykonać za pomocą dodania; mnożenie jest po prostu powtarzanym dodawaniem, odejmowanie może być wykonane z pewną wymyślną inwersją bitów, a dzielenie jest właśnie powtarzanym odejmowaniem. I chociaż wszystkie nowoczesne komputery mają rozwiązania sprzętowe, które przyspieszają bardziej skomplikowane operacje, możesz to technicznie zrobić z pełnym sumatorem.
Magistrala i pamięć
W tej chwili nasz komputer to tylko zły kalkulator. Dzieje się tak dlatego, że nic nie pamięta, i nic nie robi z wyjściami. Powyżej pokazano komórkę pamięci, która może to wszystko zrobić. Pod maską korzysta z wielu bram NAND, w rzeczywistości może się różnić w zależności od techniki przechowywania, ale jego funkcja jest taka sama. Dajesz mu trochę wejść, włączasz bit "zapisu", a on będzie zapisywał dane wejściowe w komórce. To nie jest tylko komórka pamięci, ponieważ potrzebujemy również sposobu na odczytanie z niej informacji. Odbywa się to za pomocą elementu włączającego, który jest zbiorem bramek AND dla każdego bitu w pamięci, wszystkie powiązane z innym wejściem, bitem "odczytanym". Bity do zapisu i odczytu są często nazywane także "ustawieniem" i "włączeniem".
Cały ten pakiet jest zawarty w tak zwanym rejestrze. Rejestry te są podłączone do magistrali, która jest wiązką przewodów biegnących wokół całego systemu, połączoną z każdym komponentem. Nawet nowoczesne komputery mają magistralę, chociaż mogą mieć wiele magistrali, aby poprawić wydajność pracy wielozadaniowej.
Każdy rejestr ma jeszcze bit do zapisu i odczytu, ale w tym ustawieniu dane wejściowe i wyjściowe są tym samym. To jest naprawdę dobre. Na przykład. Jeśli chciałbyś skopiować zawartość R1 do R2, włączyłbyś czytany bit dla R1, który popchnął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 siatkę, a przewody biegną w dwóch kierunkach:
Dekodery pobierają dane binarne i włączają odpowiedni numerowany przewód. Na przykład "11" to 3 w binarnym, najwyższym 2-bitowym numerze, więc dekoder włączy najwyższy przewód. Na każdym skrzyżowaniu znajduje się rejestr. Wszystkie te są podłączone do magistrali centralnej i do centralnego zapisu i odczytu. Zarówno odczyt, jak i zapis, zostaną włączone tylko wtedy, gdy dwa przewody przecinające rejestr są również włączone, co pozwala na wybranie rejestru, z którego należy pisać i czytać. Ponownie, współczesna pamięć RAM jest znacznie bardziej skomplikowana, ale ta konfiguracja nadal działa.
Zegar, Stepper i dekoder
Rejestry są używane wszędzie i są podstawowym narzędziem do przenoszenia danych i przechowywania informacji w CPU. Co więc mówi im, żeby się poruszać?
Zegar jest pierwszym komponentem rdzenia procesora i będzie wyłączany i włączany w ustalonym przedziale czasu, mierzonym w hercach lub cyklach na sekundę. Jest to prędkość, którą widzisz reklamowana wraz z procesorami; układ 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 aktywacji i ustawiony zegar. Zegar bazowy będzie włączony przez pół cyklu, a wyłączony dla drugiej połowy. Zegar włączający służy do włączania rejestrów i musi być włączony przez dłuższy czas, aby upewnić się, że dane są włączone. Ustawiony zegar zawsze musi być włączony w tym samym czasie, co zegar włączania, lub można zapisać nieprawidłowe dane.
Zegar jest podłączony do steppera, który liczy od jednego do maksymalnego kroku, a po zakończeniu resetuje się do jednego. Zegar jest również podłączony do bramek AND dla każdego rejestru, do którego CPU może zapisywać:
Te bramki AND są również połączone z wyjściem innego komponentu, dekodera instrukcji. Dekoder instrukcji przyjmuje instrukcje typu "SET R2 TO R1" i dekoduje go w coś, co procesor może zrozumieć. Ma własny rejestr wewnętrzny, zwany "rejestrem instrukcji", w którym przechowywana jest bieżąca operacja. Jak dokładnie to działa, sprowadza się do systemu, z którego korzystasz, ale gdy zostanie zdekodowany, włącza poprawny zestaw i włącza bity dla właściwych rejestrów, które będą uruchamiane zgodnie z zegarem.
Instrukcje programu są przechowywane w pamięci RAM (lub pamięci podręcznej L1 na nowoczesnych systemach, bliżej procesora). Ponieważ dane programowe są przechowywane w rejestrach, tak jak każda inna zmienna, można manipulować nimi w locie, aby przeskoczyć wokół programu. W ten sposób programy uzyskują swoją strukturę, z pętlami i instrukcjami if. Instrukcja skoku ustawia bieżącą lokalizację w pamięci, którą dekoder instrukcji odczytuje z innej lokalizacji.
Jak to wszystko razem
Teraz nasze ogólne 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 wieloma innymi operacjami, są pakowane do jednostki arytmetyczno-logicznej lub do jednostki ALU. Ta ALU będzie miała połączenia z magistralą, a także będzie posiadała własne rejestry do przechowywania drugiego numeru, na którym działa.
Aby wykonać obliczenie, dane programu są ładowane z pamięci RAM systemu do sekcji sterowania. Sekcja kontrolna odczytuje dwie liczby z pamięci RAM, ładuje pierwszą do rejestru instrukcji ALU, a następnie ładuje drugą do magistrali. Tymczasem wysyła do ALU kod instruktażowy informujący, co należy zrobić. ALU następnie wykonuje wszystkie obliczenia i przechowuje wynik w innym rejestrze, z którego procesor może odczytać, a następnie kontynuować proces.
Źródło grafiki: Rost9 / Shutterstock