If-Koubou

HTG wyjaśnia: Jak działa procesor?

HTG wyjaśnia: Jak działa procesor? (Jak)

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ę wie?" 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: nowoczesne 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 tego, jak to wszystko pasuje, pozostają takie same, a zrozumienie podstaw da lepsze zrozumienie nowoczesnych systemów.

Począwszy od małej

Komputery działają w trybie 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 przez bramę jest prąd. 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ższym poziomie wystarczy garść, aby utworzyć najbardziej podstawowe elementy, znane jako bramki.

Bramki logiczne

Ułóż odpowiednio kilka tranzystorów, a masz to, co jest znane jako brama logiczna. Bramki logiczne pobierają dwa wejścia binarne, wykonują na nich operację i zwracają wyjście. Na przykład bramka OR zwraca prawdę, 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.

Robienie matematyki z bramkami

Za pomocą tylko dwóch bramek możesz zrobić podstawowy dodatek binarny. Powyższy diagram pokazuje pół addera, stworzonego przy użyciu Logicly, darmowego placu zabaw online dla bramek logicznych. Bramka XOR zostanie włączona, jeśli tylko jedno z wejść jest włączone, ale nie oba. 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 pół dodania, 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 ostateczna 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 się 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. Podczas gdy wszystkie współczesne komputery mają sprzętowe rozwiązania, 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 bramek NAND, a 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 przechowa wejścia 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 powinien 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 każe im 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że być zapisane nieprawidłowe dane.

Zegar jest podłączony do steppera, który liczy od jednego do maksymalnego kroku i resetuje się z powrotem do jednego, gdy jest gotowy. Zegar jest również połączony z bramkami 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 kiedy 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 programu są przechowywane w rejestrach, tak jak każda inna zmienna, można nimi manipulować w locie, aby przeskakiwać wokół programu. W ten sposób programy otrzymują 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 kompletne. 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ć obliczenia, 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. W międzyczasie wysyła do ALU kod instruktażowy informujący, co należy zrobić. Następnie ALU 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