„BRAMKI LOGICZNE I PODSTAWY DZIAŁANIA PROCESORA”
WSTĘP
Główne części składowe komputera stanowią: procesor (obecnie w postaci układu scalonego, czyli mikroprocesor), pamięć operacyjna oraz urządzenia peryferyjne (zewnętrzne). Zadaniem procesora, zwanego też czasem jednostką centralną, jest wykonywanie rozkazów i sterowanie pracą pozostałych bloków funkcjonalnych komputera. Urządzenia peryferyjne, dołączone do komputera najczęściej za pośrednictwem układów wejścia - wyjścia, służą do komunikacji komputera ze światem zewnętrznym (z użytkownikiem), np. klawiatura, monitor ekranowy, drukarka, mysz, joystick, pióro świetlne, skaner, ploter; do urządzeń peryferyjnych zalicza się też pamięci zewnętrzne, np. dyski magnetyczne i optyczne. Urządzenia peryferyjne w obecnie używanych komputerach pracują z reguły jako autonomiczne jednostki współbieżnie z procesorem.
Mikroprocesor to procesor wykonany w technologii LSI (mikroprocesor 8-bitowe), VLSI (mikroprocesor 16-bitowe i 32-bitowe) lub ULSI (mikroprocesor 64-bitowe).
TRANZYSTORY I BRAMKI LOGICZNE
|
Pierwszym urządzeniem pozwalającym na sterowanie przepływem prądu była lampa elektronowa. |
Tranzystory
Podstawowym elementem każdego procesora jest tranzystor. Ogólna zasada działania tranzystora jest dość prosta. Każdy z tych układów ma trzy wyjścia. Są to: baza, kolektor i emiter. Można więc je podłączyć do dwóch obwodów elektrycznych. Pierwszy z nich to obwód baza-emiter drugi zaś to kolektor-emiter. Pierwszy to tzw. obwód sterujący, a drugi roboczy.
Zasada działania tranzystora, nie wnikając w jego budowę, polega na tym, iż włączając obwód sterujący powoduje się przepływ prądu w obwodzie roboczym. Różne rodzaje tranzystorów działają podobnie, a w układach MOS (metal oxide semiconductor) bramka musi być cały czas pod napięciem, nie pobierając przy tym prądu. Potencjał elektryczny zgromadzony na bramce powoduje zmniejszenie oporu elektrycznego w półprzewodniku i tym samym możliwy jest przepływ prądu pomiędzy kolektorem a emiterem. Można więc powiedzieć, iż utrzymywanie bramki pod napięciem pozwala na przepływ prądu przez obwód roboczy. Ten typ tranzystorów MOS jest stosowany w układach gdzie potrzeba szybkiego włączenia i wyłączenia.
|
Obwody, w jakich pracują tranzystory MOS (metal oxide semiconductor) |
Przepływ prądu może oznaczać logiczną jedynkę, a wyłączenie zero. Właśnie na tym prostym założeniu bazuje cała technika cyfrowa. Przypomina to zwykły wyłącznik światła w pokoju, dla którego także możliwe są dwa stany pracy: włączenie - 1 i wyłącznie - 0. Różnica polega jedynie na tym, że w prostym wyłączniku nie ma obwodu sterującego, a przepływem prądu sterujemy my sami.
Procentowy rozpływ prądów w tranzystorze |
Zastosowanie jednego prostego tranzystora nie oznacza jeszcze skonstruowania komputera. Elementy elektroniczne to analogowe układy, które pozwalają na pracę cyfrowego mikroprocesora. Do podstawowych jego możliwości należy wykonywanie operacji logicznych. Są one realizowane za pomocą specjalnych bramek, złożonych z kilku elementów półprzewodnikowych.
Bramki
|
|
|
Podstawowe układy logiczne i możliwe sposoby pracy |
Dodawanie wykonuje się za pomocą bramki OR, mnożenie AND, a negację dzięki bramce NOT, ponadto występują układy łączone, takie jak NOR (NOT OR) i NAND (NOT AND). W praktyce stosuje się właśnie te dwa ostatnie, ponieważ za ich pomocą można zastąpić wyżej opisane. Bramka NAND, czyli (X*Y)' oraz bramka NOR, czyli (X+Y)', to zaprzeczenia iloczynu i zaprzeczenia sumy. Wykonanie pojedynczej bramki logicznej możliwe jest za pomocą kilku tranzystorów i ewentualnie diody półprzewodnikowej.
Technik realizacji jest kilka. Jedna z nich to DTL, czyli technika diodowo tranzystorowa, która na przykład realizuje bramkę AND na 3 diodach i jednym rezystorze. Inna technika to DCTL, czyli układy ze sprzężeniem bezpośrednim, realizujące bramki NAND na 3 tranzystorach i jednym rezystorze. Jeszcze inna to RTL, czyli rezystorowo-tranzystorowa realizująca układ NOR na tylko jednym tranzystorze i 4 rezystorach. Jedną z bardziej skomplikowanych jest ECL, czyli układ ze sprzężeniem emiterowym, który umożliwia budowę bramki NOR aż na 5 tranzystorach, dwóch diodach i siedmiu rezystorach. Niezależnie od wybranej techniki efekt zawsze będzie ten sam. Różnice występują w szybkości działania, cenie oraz możliwościach masowej produkcji.
Bramka OR ma np. dwa wejścia i jedno wyjście, a jej zadanie to dodawanie. Jak wiec to działa? Jeżeli na jednym wejściu - nazwijmy go X - pojawi się impuls prądu, czyli logiczna 1, i na drugim wejściu - Y - w tym samym czasie pojawi się także impuls 1, to dodając X+Y na wyjściu pojawi się impuls prądu, czyli 1. Pamiętać należy, że nie można tutaj zwyczajnie dodać 1 do 1 tak, aby wyszło 2, bo takiej liczby nie ma w "procesorowym słowniku". Inne możliwe stany wejść to na jednym 1, a na drugim 0, co w sumie daje 1 na wyjściu, jednak gdy na X oraz Y będzie 0 to wynik na wyjściu tej bramki także będzie wynosić 0.
Za pomocą kilkudziesięciu bramek można zbudować prosty kalkulator, który będzie dodawał i odejmował na liczbach binarnych. Zbudowanie takiego urządzenia jest bardzo proste - mając gotowe układy logiczne zajmuje to nie więcej niż 30 min. Taki prosty kalkulator będzie dość duży, a plątanina kabli dość znaczna. Właśnie dlatego miniaturyzacja jest tak ważna dla dzisiejszych skomplikowanych procesorów, inaczej zajmowałyby one ogromne powierzchnie i pobierały znaczne ilości prądu.
16, 32, 64 bity...
Przekazywanie liczb i operacje na nich odbywają się w systemie binarnym. Istnieje możliwość, za pomocą odpowiedniej sekwencji zero jeden, zaprezentowania każdej liczby znanej w systemie dziesiętnym. Jednak system binarny zajmuje dużo więcej miejsca niż zapis dziesiętny. Przykładowo liczba 255 w systemie dwójkowym oznaczana jest jako 11111111, czyli aż 8 jedynek.
Przekazanie tej (w sumie małej) liczby za pomocą jednego połączenia zajęłoby procesorowi dość dużo czasu - musiałby 8 razy wysłać "jedynkę". Jak więc spowodować aby to trwało krótko? Rozwiązanie jest następujące: przekazać wszystkie stany logiczne na raz, co wymaga aż 8 oddzielnych połączeń przewodowych. Wszystkie one jednocześnie mogą przesłać "jedynkę" lub "zero".
Cechą za pomocą, której można dokonać podziału procesorów jest długość słowa, na którym wykonywane są operacje obliczeniowe. Rozróżniamy więc procesory:
4-bitowe 6-bitowe
8-bitowe 12-bitowe
16-bitowe 24-bitowe
32-bitowe
64-bitowe
128-bitowe
Dzisiejsze procesory do komputerów domowych są 32-bitowe, a to oznacza, iż do komunikacji z pamięcią używają 32 przewodowych połączeń. Przejście z 32 na 64 bity to olbrzymie przyspieszenie pracy. 64-bitowa magistrala jest dwa razy bardziej przepustowa od 32-bitowowej. Liczba, jaką jest w stanie przesłać w czasie jednego taktu procesor 64-bitowy, jest o wiele rzędów wielkości większa od tej przesyłanej przez układ 32-bitowy. Oznacza to, iż w czasie skomplikowanych obliczeń, wymagających przesyłu dużych ilości danych, komputer poważne przyspiesza pracę.
BUDOWA PROCESORA
Na procesor składają się głównie:
układ sterowania i synchronizacji, który kontroluje pracę procesora i wytwarza sygnały potrzebne do sterowania niektórymi elementami komputera (dekoder ,zegar)
arytmometr, czyli układ, który wykonuje operacje arytmetyczne i logiczne , wpółpracuje z rejestrami (niektóre procesory mają kilka arytmometrów)
rejestry, tj. układy pamięci
wewnętrzne szyny łączące elementy procesora
Podstawowymi rejestrami, które znajdują się w każdym mikroprocesorze, są:
Licznik rozkazów - zawiera on adres następnego rozkazu do wykonania
Rejestr rozkazów - zawiera kod aktualnie wykonywanego rozkazu , (w tym rejestrze dekodowana jest każda kolejna instrukcja pobrana z pamięci operacyjnej )
Akumulator, jest używany w czasie wykonywania rozkazów arytmetycznych, logicznych, I/O i in.do przechowywania argumentów i wyników operacji ( niektóre procesory mają kilka takich rejestrów )
Rejestr stanu - zawiera informacje o stanie komputera po wykonaniu kolejnego rozkazu.
Rejestr operanda- jest wykorzystywany do obliczania operanda
Rejestr żądań-, w tym rejestrze zapisywana jest informacja, która może być wykorzystywana przez program do podejmowania odpowiednich decyzji
Rejestr stanu -zawiera informacje o stanie komputera po wykonaniu kolejnego rozkazu.
Oprócz tego procesor ma kilka (kilkanaście) rejestrów używanych w czasie wykonywania niektórych rozkazów, np. wskaźnik stosu służący do adresowania pamięci.
Rys2.Budowa przykładowego mikroprocesora dydaktycznego wraz z pamięcią operacyjną
Strzałki na rysunku wskazują dopuszczalny kierunek przepływu informacji.
BUDOWA SZCZEGÓŁOWA I PODSTAWY DZIAŁANIA NA PRZYKŁADZIE
16-BITOWEGO 8086
Budowa modułowa i praca CPU
Dziś już archaiczny układ 80286 - AT. Pierwszy procesor z prawdziwego zdarzenia, wyposażony w układ adresowy. Potężniejszy niż jego protoplasta 8086 - XT. |
Pracę procesora najlepiej opisać na przykładzie pierwszego 16 bitowego układu 8086 przeznaczonego dla komputerów PC. Właśnie ten chip jest umieszczony niejako we wnętrzu każdego dzisiejszego procesora, który ma być zgodny z rodziną AT/XT. Oznacza to, iż każdy następny posiada możliwości 8086 oraz jest wyposażony w dodatkowe funkcje.
Działanie mikroprocesora zamyka się w kilku podstawowych trybach pracy. Pierwszy z nich to pobranie rozkazu z pamięci, drugi to zdekodowanie, a trzeci wykonanie. Jak to się odbywa? Wyobraźmy sobie, że z pamięci procesor ma pobrać prosty ciąg instrukcji. Musi więc najpierw dostać informację, że należy pobrać dane. Komendą, która informuje układ o takim poleceniu jest następujący po sobie określony ciąg: 011011011010. Po tej komendzie musi trafić do jednostki wykonawczej informacja skąd dane mają zostać pobrane i co należy z nimi zrobić. W ten sposób układ stopniowo dekoduje i wykonuje kolejno każdą instrukcję zapisaną w programie.
Najbardziej prymitywny 8-bitowy procesor Intela. |
Działanie centralnej jednostki obliczeniowej (CPU) jest zorganizowane w wyspecjalizowane części, które wykonują tylko jeden rodzaj zadań, a następnie przekazują go dalej. W procesorze 8086 firma Intel zastosowała kilka oddzielnych jednostek: układ magistrali BU, układ instrukcji IU, układ wykonawczy EU oraz układ adresowy AU. Ten ostatni posiadały dopiero konstrukcje późniejsze (od 80286).
Szczegółowy opis każdego z nich:
BU - (układ magistrali) jest pasmem transmisyjnym, którego zadanie polega na pobieraniu instrukcji z pamięci i przesyłanie ich do procesora. Działa także w drugą stronę, co pozwala nazwać ten układ pośredniczącym w wymianie danych ze światem zewnętrznym.
IU -( układ instrukcji) pobiera instrukcje z kolejki kodów układu magistrali systemu, dekoduje je oraz umieszcza w swojej kolejce instrukcji zwanej potokiem. Może znajdować się w niej do trzech zdekodowanych instrukcji.
EU - (układ wykonawczy) wykonuje instrukcje zgodnie z mikroprogramem zawartym w ROMie układu wykonawczego. Podczas wykonywania kolejnych instrukcji ROM informuje układ, że ma obowiązek pobrać następną.
AU- (układ adresowy) układ ten zajmuje się zarządzaniem pamięcią, pełni także funkcję ochronną przy przekształceniu adresów wirtualnych na fizyczne.
Do tych podstawowych układów należy także IP, czyli wskaźnik instrukcji programu. Informuje on o kolejności wykonywania programu i pobierania go z pamięci, gdyż normalnie EU pobierałby po kolei wszystkie instrukcje .
ZASADA DZIAŁANIA PROCESORA
Procesor wykonuje kolejne cykle rozkazowe, pobierając rozkazy i dane bezpośrednio z pamięci operacyjnej.
Pamięć operacyjna składa się z komórek ponumerowanych kolejnymi liczbami naturalnymi (0, 1, 2,...). Komórka jest ciągiem bitów, które można sobie wyobrazić jako miejsca, gdzie można wpisać 0 lub 1. Do komórek pamięci można więc wpisywać informacje w postaci zer i jedynek. Można również pobierać informacje tam zapisane. W czasie zapisywania poprzednia zawartość komórki ulega zniszczeniu. Przy odczytywaniu nie zmienia się. Numery komórek nazywane są adresami.
Zawartość pamięci może być odczytywana jedynie za pośrednictwem dwóch związanych z nią rejestrów: rejestru adresowego pamięci oraz rejestru buforowego pamięci .To samo dotyczy operacji zapisywania do pamięci. Przy odczytywaniu z pamięci do rejestru buforowego pobierana jest zawartość tej komórki pamięci, której adres znajduje się w rejestrze adresowym. Przy zapisie zawartość rejestru buforowego jest wpisywana do komórki o adresie z rejestru buforowego.
Programy są ciągami rozkazów, które komputer ma wykonać. Dane są informacjami, które w wyniku wykonania programu są przekształcane w inne informacje.
Arytmometr wykonuje rozkazy na danych umieszczonych w rejestrach z nim związanych. Mogą to być na przykład rozkazy dodawania liczb lub też rozkazy logiczne, takie jak iloczyn lub suma logiczna ciągów zer i jedynek. Wynik działania arytmometru pozostaje w jednym z jego rejestrów.
Poza wymienionymi wyżej rejestrami związanymi z pamięcią oraz arytmometrem w procesorze istnieją także takie, które sterują przebiegiem jego pracy. Kluczową rolę pełnia tu: rejestr rozkazów oraz rejestr zwany licznikiem rozkazów. W pierwszym pamiętany jest rozkaz aktualnie wykonywany przez komputer, w drugim - adres komórki pamięci, w której znajduje się następny rozkaz do wykonania.
TYPOWA KOMUNIKACJA PROCESORA Z PAMIĘCIĄ OPERACYJNĄ
A.ODCZYT B.ZAPIS
Komputer działa według ustalonego schematu. Schemat ten, nazywany cyklem pracy komputera, wygląda następująco:
1.Pierwszą fazą jest pobranie z pamięci rozkazu.
Odczytanie z pamięci operacyjnej rozkazu wskazanego przez licznik rozkazów i umieszczenie go w rejestrze rozkazów
Zmiana zawartości licznika rozkazów tak , by wskazywał następny rozkaz do wykonania,
Dekodowanie rozkazu (określenie typu , liczby i adresów argumentów),
2. Druga faza to wykonanie rozkazu:
Wyznaczenie adresów i pobranie argumentów
Wykonanie czynności wskazanych rozkazem
Zapamiętanie wyniku
Przejście do pobrania następnego rozkazu
Opisana procedura ulega zmianie, gdy nastąpi tzw. przerwanie (ang. interrupt). Powoduje je sygnał podany z urządzenia zewnętrznego do procesora. Przerywa on wtedy wykonywanie programu. zapamiętana zostaje zawartość licznika rozkazów i rozpoczyna się wykonywanie programu obsługi przerwań. Adres tego programu jest niekiedy ustalony, w innych przypadkach jest przesyłany przez specjalny układ przerwań. Takie przerwania są wykorzystywane do współpracy z urządzeniami I/O. Przerwanie możę być także spowodowane wykonaniem specjalnego rozkazu maszynowego (przerwanie programowe). Adres programu obsługi przerwania jest w takim przypadku ustalony. Przerwania programowe służą zwykle do wywoływania programów systemu operacyjnego. Po zakończeniu obsługi przerwania wznawiane jest wykonywanie przerwanego programu.
RYS 3 .SCHEMAT FUNKCJONALNY PROCESORA
Przyczyny przerwań:
Zewnętrzne
świadome wywołanie np. z klawiatury
wywołane z systemu we/wy
wywołane błędem transmisji danych
Programowe
próba dzielenia przez zero
skok do nieistniejącej komórki
próba wykonania nielegalnego rozkazu
Przy obsłudze przerwań dla zapamiętania stanu procesora i adresu kolejnego rozkazu do wykonania wykorzystywany jest STOS . Jest to fragment pamięci w postaci jednowymiarowej tablicy ze specyficznym sposobem umieszczania i zdejmowania danych .Element ostatnio położony na stosie jest wierzchołkiem stosu - tylko on może być pobrany ze stosu. Wskaźnik stosu - rejestr zawierający aktualny adres wierzchołka stosu.
Wszystkie operacje wykonywane przez procesor synchronizowane są impulsami przychodzącymi z zegara. Jedna instrukcja jest wykonywana w czasie kilku taktów zegara. Dlatego, gdy jego częstotliwość jest większa, procesor pracuje szybciej.
Rozkazy wykonywane przez mikroprocesory można podzielić na następujące grupy:
Przesyłające informacje (bez zmiany jej treści)
przesłania bajtu lub kilku bajtów z pamięci do rejestrów, z rejestrów do pamięci lub między rejestrami
przesłania bajtu lub ciągu bajtów między rejestrami i układami I/O
arytmetyczne (dodawanie, odejmowanie, niekiedy mnożenie i dzielenie - dotyczy tylko liczb całkowitych o ograniczonej długości, np. 16 bitów)
przetwarzanie ciągu bajtów (tylko proste operacje, np. przepisywanie lub porównywanie)
sterujące programem (tzn. zmieniające zawartość licznika rozkazów, np. skoki, wywołanie podprogramów, przerwania programowe)
sterujące pracą systemu komputerowego, np. zatrzymanie procesora.
We/wy - do wprowadzania i wyprowadzania informacji z procesora
Zakres działania niektórych rozkazów jest ograniczony. W szczególności argumentem rozkazów arytmetyczno-logicznych może być zawartość rejestrów procesora. Dotyczy to szczególnie starszych procesorów. Obecnie dąży się do tego, by procesor mógł wykonywać wszystkie operacje na danych wszystkich typów (tzn. na adresach, bajtach, dwubajtowych słowach itd.), odczytywanych z pamięci lub rejestrów przy zastosowaniu dowolnego trybu adresowania.
STRUKTURA ROZKAZU:
Długośc rozkazu -słowo lub kilka słów
Kod rozkazu - liczba binarna charakterystyczna dla rodzaju operacji (funkcji rozkazu)
Pole rozkazu - pole kodu operacji + pole argumentów
Lista rozkazów mikroprocesora składa się zwykle z rozkazów arytmetycznych, logicznych, przesłań, rozkazów skoku, zatrzymania, wejścia / wyjścia oraz wywołania podprogramu. Każdy z tych rozkazów ma zero, jeden lub dwa argumenty. Argumenty mogą być umieszczone bezpośrednio w kodzie rozkazu, w rejestrze lub w pamięci. W związku z różnymi sposobami adresowania argumentów istotne jest podanie sposobu ich odnalezienia, który zależy od zastosowanego sposobu adresacji.
Sposoby adresowania operandów
Sposób uzyskiwania argumentów nazywa się trybem adresowania
Istnieje wiele sposobów adresowania. Sposoby te związane są z konkretnym typem mikroprocesora. Najprostsze jest adresowanie natychmiastowe, gdy w formacie rozkazu po kodzie operacji następuje bezpośrednio argument, czyli nie ma potrzeby pobierać go ani z pamięci, ani z żadnego rejestru procesora.
Drugim popularnym trybem adresowania jest adresowanie rejestrowe. Żądany rejestr roboczy zazwyczaj jest wybierany przez wydzielone pole w kodzie operacji.
Jeśli w rejestrze roboczym jest umieszczony nie argument, lecz jego adres zwany wskaźnikiem argumentu, to otrzymuje się adresowanie wskaźnikowe, określane również jako rejestrowe pośrednie .
W adresowaniu bezpośrednim adres argumentu jest umieszczony wprost w części adresowej rozkazu.
Nazwa adresowanie indeksowe pochodzi od typowego zastosowania, związanego z operacjami na tablicach. Wówczas adres początku tablicy umieszcza się w części adresowej rozkazu, a pozycję (indeks) elementu tablicy określa zawartość rejestru indeksowego, którą można łatwo modyfikować (np. cyklicznie zwiększać lub zmniejszać o 1).
1
REJESTR ADRESOWY
00 00 00 00
00 00 00 00 : 00 00 00 0A
00 00 00 04 : 00 00 00 0B
00 00 00 08 : 00 00 00 00
00 00 00 0C : 02 08 00 00
00 00 00 10 : 10 08 00 04
00 00 00 14 : 08 00 00 08
00 00 00 18 : 01 00 00 00
00 00 00 00
REJESTR BUFOROWY
PAMIĘĆ OPERACYJNA
00 00 00 01
00 00 00 0C
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
REJESTR ŻĄDAŃ
REJESTR STANU
LICZNIK ROZKAZÓW
Akum.
REJESTR INSTRUKCJI
Akum.
ALU
REJESTR OPERANDA
REJESTR ADRESOWY
00 00 00 00
00 00 00 00 : 00 00 00 0A
00 00 00 04 : 00 00 00 0B
00 00 00 08 : 00 00 00 00
00 00 00 0C : 02 08 00 00
00 00 00 10 : 10 08 00 04
00 00 00 14 : 08 00 00 08
00 00 00 18 : 01 00 00 00
00 00 00 00
REJESTR BUFOROWY
PAMIĘĆ OPERACYJNA
Rysunek 1.Schemat pamięci operacyjnej i rejestru adresowego i buforowego pamięci
magistrala
1.wysłanie adresu komórki adresowa
----------------------------------------------
magistrala
2.wysłanie rozkazu czytania sterująca
----------------------------------------------
3.przesłanie zawartości komórki magistrala
do procesora danych
magistrala
1.wysłanie adresu komórki adresowa
----------------------------------------------
magistrala
2.zawartość do zapełnienia kom. sterująca
----------------------------------------------
3.rozkaz uaktualnienia zawartości magistrala
komórki danych
ARYTMOMETR
CZĘŚĆ ARYTMETYCZNO-LOGICZNA
CZĘŚĆ STERUJĄCA
PROCESORA
REJESTR
ARGUMENTÓW
REJESTRY
UNIWERSALNE
REJESTR
ARGUMENTÓW
REJESTR
WYNIKU
ZEGAR
AUTOMAT
DEKODER
LICZNIK ROZKAZÓW
REJESTR ROZKAZÓW
M. sterująca
M. adresowa MAGISTRALA PAMIĘCI
M. danych
UKŁAD
STERUJĄCY