- Architektury procesorów
- Architektura zestawu instrukcji RISC i CISC
- Złożony zestaw instrukcji (CISC)
- Przetwarzanie zredukowanego zestawu rozkazów (RISC)
System wbudowany jest sercem i rdzeniem większości produktów elektronicznych dostępnych na rynku. To implementacja inżynierii, w której sprzęt łączy się z oprogramowaniem. Otacza nas świat systemów wbudowanych, z mini-komputerami w biometrycznych zamkach do drzwi, samolotach, samochodach, rozrusznikach serca itp. Te ograniczone zasoby, małe, inteligentne i wydajne systemy pomagają nam w codziennych zadaniach.
Zastanawiałeś się kiedyś, jak funkcjonuje nasze ciało, układ nerwowy, mózg i zdolność do wykonywania wielu zadań jednocześnie. Jeśli połączysz wszystkie te funkcje, otrzymasz zgrubny obraz biologicznego systemu osadzonego. Nasz mózg ukrywa złożone szczegóły swojego funkcjonowania, które ma miejsce w jego wnętrzu, ale jednocześnie pozwala nam kontrolować go do maksymalnego potencjału. Ta sama złożoność dotyczy procesora lub kontrolera używanego w systemach wbudowanych. Ukrywają złożone szczegóły i zapewniają nam interfejs wysokiego poziomu do pracy. Na poziomie abstrakcji można odnieść się do tego, jak kod dodawania dwóch liczb w języku programowania wysokiego poziomu powoduje, że rejestry w chipach obsługują bity i zwracają dane wyjściowe użytkownikowi.
Architektury procesorów
Jednostka centralna, odnosząc się zarówno do mikroprocesora, jak i mikrokontrolera, wykonuje określone zadania za pomocą jednostki sterującej (CU) i jednostki arytmetyczno-logicznej (ALU). Ponieważ instrukcje są dostarczane z pamięci RAM, procesor działa z pomocą swoich dwóch jednostek pomocniczych, tworząc zmienne i przypisując im wartości i pamięć. Naprawdę ważne jest, aby wiedzieć, jak procesor wykonuje wszystkie te czynności za pomocą swojej architektury. Jeśli chcesz dowiedzieć się więcej o działaniu mikrokontrolera, możesz przeczytać ten artykuł dotyczący podstaw mikrokontrolera.
Każdy procesor ma przypisaną pamięć do przechowywania programu i danych. Program i dane współpracują z procesorem, aby uzyskać dane wyjściowe. Program dostarcza instrukcji, podczas gdy dane dostarczają informacji, nad którymi należy pracować. Aby uzyskać dostęp do programu i danych, procesor wykorzystuje szyny, te szyny są przewodami, a dokładniej są to ślady przewodów, jakie mogłeś zobaczyć na płytkach drukowanych. Przez te lata mikrokontrolery i mikroprocesory ewoluowały dostosowując różne architektury, w oparciu o wymagania aplikacyjne lub konstrukcyjne, na wybór mikrokontrolera ma wpływ rodzaj zastosowanej w nim architektury. Rzućmy okiem na popularne architektury.
Architektura Von-Neumann / Princeton
Sposób, w jaki procesor uzyskuje dostęp do programu i danych, mówi o architekturze procesora. Wcześniej do uzyskania dostępu do programu i danych wykorzystywano jedną magistralę. Ten typ architektury jest znany jako architektura von Neumanna lub po prostu architektura Princeton. Pojedyncza magistrala do pobierania kodu i danych oznacza, że wchodzą sobie w drogę i spowalniają prędkość przetwarzania procesora, ponieważ każdy z nich musiał czekać, aż drugi zakończy pobieranie. To ograniczenie jest również znane jako stan wąskiego gardła Von-Neumanna.
Architektura Harvardu
Aby przyspieszyć ten proces, zaproponowano architekturę Harvard. W tej architekturze istnieją oddzielne magistrale danych dla danych i programu. Oznacza to, że ta architektura proponowała użycie czterech szyn
- Zestaw magistrali danych przenoszących dane do i z procesora.
- Zestaw szyn adresowych do dostępu do danych.
- Zestaw magistrali danych do przenoszenia kodu do CPU.
- Magistrala adresowa umożliwiająca dostęp do kodu.
Użycie oddzielnej magistrali adresowej i magistrali danych oznaczało krótki czas wykonania dla procesora, ale odbywa się to kosztem złożoności w projektowaniu architektury. Architektura Von Neumanna może brzmieć nieco leniwie, ale ma tę zaletę, że jest prosta w konstrukcji.
Architektura Harvardu jest bardzo łatwa do wdrożenia, gdy procesor i jednostki pamięci dzielą tę samą przestrzeń lub pamięć RAM i ROM są wbudowane (na chipie) z jednostką przetwarzającą, na przykład w mikrokontrolerze, w którym odległości są w mikronach i milimetrach. Jednak ta sama architektura jest trudna do zaimplementowania, gdy pamięć przechowująca kod jest zewnętrzna w stosunku do jednostki przetwarzającej, na przykład w komputerach IBM PC x86. Zestaw oddzielnych ścieżek przewodów dla danych i adresu na płycie głównej sprawiłby, że płyta byłaby złożona i kosztowna. Rozumiemy to na przykładzie procesora.
Procesor z 64-bitową magistralą danych i 32-bitową magistralą adresową potrzebowałby około 100 magistrali (96 dla magistrali danych i adresów oraz kilka innych dla sygnałów sterujących) do implementacji architektury Von-Neumanna. Ta sama struktura zaimplementowana w architekturze Harvard kosztowałaby około 200 ścieżek podwójnego drutu z dużą liczbą pinów wychodzących z procesora. Z tego samego powodu nie widzimy czystej architektury Harvardu zaimplementowanej dla komputerów PC i stacji roboczych. Zamiast tego używana jest zmodyfikowana architektura Harvardu, w której hierarchia pamięci z pamięcią podręczną procesora jest używana do oddzielania programu od danych. Hierarchia pamięci oddziela magazyn na podstawie hierarchii czasu odpowiedzi procesów.
Architektura zestawu instrukcji
Ponieważ program (kod) jest ładowany do pamięci systemu (RAM), jest pobierany przez CPU (odnosząc się zarówno do mikroprocesora, jak i mikrokontrolera), aby działać na danych, jest to bardzo podobne do tego, że wydajemy instrukcje, kiedy trenujemy psa określone czynności i polecenia. Gdy te instrukcje są wykonywane na pewnych tranzystorach, przechodzą z jednego poziomu logicznego na inny, aby to się stało. Czyli w zasadzie za pomocą instrukcji programista komunikuje się z procesorem. Każdy procesor ma swój własny zestaw instrukcji, zbiór instrukcji opartych na jego architekturze i możliwościach.
Procesor rozumie te instrukcje jako kombinację 0 i 1, które są również znane jako kod operacji. Dla człowieka-programisty naprawdę trudno jest zapamiętać kombinację zer i jedynek dla każdej instrukcji związanej z procesorem. Aby ułatwić pracę człowieka-programisty, otrzymaliśmy wysokopoziomowe interfejsy tych instrukcji, a kompilator konwertuje je w postaci zer i jedynek w celu ich przetworzenia. Również w zestawie instrukcji każdego procesora ma ograniczoną liczbę instrukcji, które może zrozumieć.
Wydajność procesora
Być może słyszałeś termin częstotliwość zegara procesora związany z wydajnością procesora. Procesory generalnie mają częstotliwość taktowania w MHz (Mega-Hertz) lub GHz (Giga-Hertz), jak częstotliwość taktowania 25 GHz. Liczba związana z częstotliwością zegara mówi, ile razy zegar wewnątrz procesora tyka w cyklach na sekundę. Praktyczność częstotliwości zegara można zrozumieć dzięki temu, że instrukcje są wykonywane w oparciu o cykle zegara procesora, które są proporcjonalne do liczby programów, które procesor może uruchomić w danym momencie.
Wydajność procesora zależy od liczby instrukcji, które są zapisane w programie, więcej instrukcji, więcej czasu poświęconego przez CPU, aby je wykonać. Zależy to również od liczby cykli zegara, w których wykonywana jest każda instrukcja, niektóre instrukcje wymagają więcej cykli zegara do wykonania niż inne, więc opóźniają działanie procesora. Instrukcje w programie i cykle wymagane do wykonania każdej instrukcji są do siebie odwrotnie proporcjonalne. Zmiana jednego wpłynie na drugą. To jest punkt, w którym branża procesorów jest podzielona.
Architektura zestawu instrukcji RISC i CISC
Jak wspomniano powyżej, wykonanie programu i wydajność procesora zależą od liczby instrukcji w programie, przy czym instrukcje są proponowane temu konkretnemu procesorowi jako część zestawu instrukcji, a drugim czynnikiem jest liczba cykli zegara w które są wykonywane. W oparciu o te dwa czynniki dostępne są obecnie dwa zestawy instrukcji. Najwcześniejszym z nich jest Complex Instruction Set Computing (CISC), a drugim jest Reduced Instruction Set Computing (RISC). Omówmy szczegółowo każdą z tych architektur, aby zrozumieć różnicę między architekturą RIC i CISC.
Złożony zestaw instrukcji (CISC)
CISC to skrót od Complex Instruction Set Computing. Głównym motywem CISC jest zmniejszenie liczby instrukcji wykonywanych przez program, odbywa się to poprzez połączenie wielu prostych instrukcji, takich jak tryb adresowania, ładowanie itp., I utworzenie jednej złożonej instrukcji. Instrukcji CISC zawiera szereg prostych instrukcji, jak również kilka specjalnych instrukcji, które trwa więcej niż jeden cykl zegara do wykonania. Instrukcje CISC mogą pracować bezpośrednio na pamięci bez interwencji rejestrów, co oznacza, że eliminuje to potrzebę niektórych podstawowych instrukcji, takich jak ładowanie wartości i zapotrzebowanie na pamięć (RAM). Instrukcje CISC kładą większy nacisk na sprzęt niż oprogramowanie, co oznacza, że zamiast obciążać kompilatory,CISC wykorzystuje tranzystory jako sprzęt do dekodowania i implementacji instrukcji. Ponieważ jednak instrukcja jest złożona i składa się z wielu kroków, są one wykonywane w większej liczbie cykli zegara.
Prosta analogia odnosić jest, kiedy powiedziano, aby otworzyć książkę i przeczytać 3 rd Kapituły 2 giej strony. W tej serii działań, zrobić kilka kroków, jak znaleźć książkę z torby niż tasowanie stronę w rozdziale 3, a następnie przechodząc do 2 nd stronie rozdziału, a następnie rozpocząć czytanie. Seria krok w połączeniu w jednym okiem czyta strony 44 (który jest 2 nd numer strony z 3 -cim rozdziale), otrzymujemy instrukcje CISC.
Przetwarzanie zredukowanego zestawu rozkazów (RISC)
Pierwszy zintegrowany układ został zaprojektowany przez Jacka Kilby w 1958 roku i był oscylatorem, aw latach 70-tych pierwszy komercyjny mikroprocesor wyszedł od Intela. Chociaż na początku procesorów nie było CISC. Jednak wraz z wysokimi wymaganiami obliczeniowymi architektura CISC stawała się coraz bardziej złożona i trudna w obsłudze. Całkowite przeprojektowanie architektury CISC znanej jako RISC wyszło od IBM przez Johna Coke'a. W związku z tym, aby rozróżnić te dwie architektury, wprowadzono terminy RISC i CISC.
RISC oznacza obliczanie zredukowanego zestawu instrukcji. Głównym motywem RISC było wprowadzenie ujednolicenia wielkości i wykonywania instrukcji. Dokonano tego poprzez wprowadzenie prostego zestawu instrukcji, który mógłby być wykonywany jako jedna instrukcja na cykl, odbywa się to poprzez łamanie złożonych instrukcji, takich jak ładowanie i przechowywanie w różnych instrukcjach, gdzie każda instrukcja wykonuje w przybliżeniu jeden cykl zegara. Architektura RISC zawiera proste instrukcje dotyczące tej samej wielkości, które mogą być wykonane w jednym cyklu zegara. Maszyny oparte na RISC potrzebują więcej pamięci RAM niż CISC do przechowywania wartości, ponieważ ładują każdą instrukcję do rejestrów. Wykonanie pojedynczej instrukcji na cykl daje maszynom opartym na RISC przewagę nad obróbką potokową(potokowanie to proces, w którym następna instrukcja jest ładowana przed wykonaniem pierwszej instrukcji, co zwiększa efektywność wykonania). Architektura RISC podkreśla