Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A3.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
755 Кб
Скачать
☆

Najprostszy system połączeń

Istnieje kilka struktur typu magistrali, każda z nich łączy oddzielne grupy urządzeń. Narysunku zaznaczone są magistrale sterowania i kontroli, adresowa,danych. Magistrala łącząca CPU z pamięcią nazywa się magistralą systemową.

Magistrala jest zbiorem stosunkowo niewielu ścieżek łączących jedną grupę urządzeń, np. rejestry między sobą (internalbus), albo rejestry z pamięcią RAM (system magistrali przeznaczony dla przepływu adresów).Przepływy informacji do i z urządzeń wejścia/wyjścia dokonują się przez jeszcze inny system magistrali.Aby niewielka liczba ścieżek obsługiwała liczny zbiór urządzeń magistrala musi współpracować z dekoderami, multiplekserami(lub innymi układami elektronicznymi łączącymi i rozdzielającymi sygnały) i z urządzeniami kontrolnymi. Magistrale mogą być dwojakiego rodzaju równoległe(przenoszące w tej samej chwili wiele bitów),szeregowe (przenoszą bity po kolei) lub mieszane. System łączności współczesnych komputerów jest bliższy sieci pozwalającej na równoczesną łączność wielu urządzeniom, niż pierwotnej koncepcja magistrali.

Jednostka sterująca

Wykonaniem zadanego programu steruje, zawarty w CPU, zintegrowany układ elektroniczny o angielskiej nazwie Control Unit. Jednostka sterująca używa sygnałów elektrycznych do zarządzania całym systemem komputerowym, w szczególności ruchem instrukcji i operandów. Nie wykonuje instrukcji sama, lecz poleca ich wykonanie innym składnikom CPU. Dysponuje sprawną i szybką łącznością z jednostką arytmetyczno logiczną i z pamięcią.

W uproszczonym schemacie sterowania, w wykonaniu jednej instrukcji udział biorą rejestry: rejestr adresów w pamięci (Address Register), rejestr danych (Data Register), licznik programów (Program Counter) i rejestr instrukcji (Instruction Register). Wykonanie instrukcji rozpoczyna się od pobrania (fetch) informacji z pamięci, Jeżeli to możliwe to instrukcja zostanie wykonana w rejestrach:

- podczas wykonywania poprzedniej instrukcji do nowa instrukcja została wprowadzona IR,

- AR wysyła sygnał do otwarcia bramki do komórki o posiadanym adresie,

- DR otrzymuje dane z otwartej komórki,

- IR zawiera instrukcję, którą trzeba wykonać,

- IR (inne rejestry niż ten, który zawiera instrukcję) otrzymują dane i wykonują instrukcję jeżeli potrafią,

jeżeli nie to jednostka kontrolna zleca wykonanie instrukcji jednostce ALU,

- PC otrzymuje adres następnej instrukcji do wykonania.

Pojedyncze kroki powyższych czynności noszą nazwę mikrooperacji. Ogólnie, mikrooperacjami nazywa się wszystkie czynności wykonywane na danych zawartych w jednym lub kilku rejestrach. Wykonanie jednej mikrooperacji trwa ok. 50 pikosekund (1ps =10-12s). Są cztery grupy mikrooperacji:

- operacjetransferu między rejestrami, przenoszenie binarnej informacji z jednego rejestru do drugiego,

- operacje arytmetyczne, wykonywanie działań arytmetycznych na danych liczbowych,

- logiczne, wykonywanie działań logicznych na danych nie będących liczbami,

- przesunięcia bitów danych znajdujących się w rejestrach.

Po zakończeniu jednego cyklu jednostka kontrolna sprawdza wykonanie wszystkich czynności. Wśród sprawdzanych czynności znajdują się:

- przekazanie adresu z PC do rejestru danych,

- zapisanie adresu w AR i równocześnie zapisanie adresu kolejnej instrukcji w PC,

- przesłanie wyniku wykonania instrukcji do pamięci.

Jeżeli jedna z czynności nie została poprawnie wykonana jednostka kontrolna generuje sygnał przerwania.

We współczesnym komputerze sprawdzanych jest stan kilkudziesięciu miejsc. Sygnały z kontrolowanych miejsc mają wpływ na wykonywanie dwóch najważniejszych zadań wewnątrz procesora czyli sekwencjonowania (dzielenie na części) instrukcji na ciąg mikrooperacji oraz sterowania wykonaniem każdej z mikrooperacji.

Model jednostki kontrolnej

Jednostka kontrolna reaguje na sygnały z:

- zegara, w jednym cyklu zegara wykonuje jedną lub kilka mikrooperacji,

- rejestru instrukcji, który decyduje jakie mikrooperacje są wykonywane i zawiera opkod aktualnie

wykonywanej instrukcji,

- flag, parametrów modyfikujących instrukcję,

- magistrali kontrolnej, sygnały o poprawności wykonania wybranych czynności.

Elementy ścieżki danych (data path) i kontrolowane miejsca (Ci)

Na podstawie tych sygnałów jednostka kontrolna wysyła sygnały sterujące do

- urządzeń wewnątrz CPU, powodujące transfer danych z jednego rejestru do drugiego, wykonanie przez

ALU operacji wymaganych przez instrukcję,

- magistrali kontrolnej, skierowanych do pamięci lub urządzeń I/O.

Wszystkie czynności jednostki kontrolnej są synchronizowane periodycznymi impulsami wysyłanymi przez zegar do wszystkich urządzeń. W szczególności instrukcje są w razie potrzeby dzielone na mikrooperacje języka maszynowego, a te są wykonywane w kilku krokach, po jednym na każdy cykl zegara????

Architektura zbioru instrukcji (Instruction Set Architecture)

Język, którym porozumiewają się różne składniki komputera jest prosty gdyż czynności przez nie wykonywane są nieskomplikowane. Konkretna postać tego języka (czyli ISA) ma na celu maksymalizować wydajność maszyny i równocześnie minimalizować koszty jej wykonania i pracy. Poznamy jedną z wersji tego języka oraz odpowiedniość między nim i jednym z języków wyższego poziomu, będzie nim język C.

W użyciu jest wiele realizacji zbiorów instrukcji lub ich wersji. Prawie każda z nich determinuje następujące cechy zbioru ISA:

- instrukcje i ich format,

- typy danych, ich kodowanie i reprezentacja,

- zbiór rejestrów i pamięci

- sposoby adresowania czyli odwoływania się do instrukcji i danych,

- reagowania na wyjątkowe sytuacja (np. dzielenie przez zero)

Tutaj omówimy 32 bitową wersję jednego z nich o nazwie MIPS (Microprocessor without Interlocked PipelineStages). MIPS jest przykładem zredukowanego zbioru instrukcji (Reduced Instruction Set Computer). Pierwotnie był pomyślany jako pomoc dydaktyczna na kierunkach informatycznych, ale potem był i nadal jest stosowany w niektórych urządzeniach komercyjnych. Alternatywne do ISA typu RISC są ISA należące do grupy o nazwie architektura złożonego zbioru instrukcji ComplexInstruction Set Computer.

- Operacje arytmetyczne

Poleceniu języka C: c = a +b odpowiada instrukcja addc,a,b oznaczająca dodanie dwóch liczb przypisanych zmiennym a , b i przypisanie wyniku zmiennej c. Oczywiście w komputerze nie ma liter a,b, c, liczby reprezentowane przez te zmienne znajdują się w rejestrach, bardziej precyzyjny zapis ma postać addt0,t1,t2. Symbole zmiennych zostały zastąpione nazwami rejestrów zawierających wartości tych zmiennych. Taki sposób zapisywania operacji może być uciążliwy, wtedy odstąpimy od tej precyzji zapisu. Po drugie w komputerze nie znajdziemy ani ciągu symboli 'addc,a,b', ani też 'addt0,t1,t2'. Jest to ludzki, łatwy do zrozumienia sposób zapisywania procesów zachodzących w rejestrach i łączących je ścieżkach. Ten sposób nazywa się językiem asemblera lub krótko asemblerem. Proces przekształcania polecenia w języku C do postaci asemblera MIPS nazywa się kompilacją, a program komputerowy wykonujący to przekształcenie - kompilatorem.

Przykład

Zapisać w asemblerze polecenie f = (g + h) – (i + j) języka C. Wartości zmiennych f, g, h, i, j znajdują się odpowiednio w rejestrach $s0, $s1,$s2,$s3,$s4. Symbol # oznacza początek komentarza wyjaśniającego czytelnikowi znaczenie symboli, końcem jest koniec wiersza. Tekst od znaku # do końca wiersza jest ignorowany przez komputer. W jednym wierszu może się znajdować nie więcej niż jedna instrukcja. Instrukcja sub oznacza odejmowanie.

add $t0,$s1,$s2# rejestr $t0 zawiera sumę g + h

add $t1,$s3,$s4# rejestr $t1 zawiera sumę i + j

sub $s0,$t0,$t1# rejestr $s0 zawiera f

MIPS w wersji 32 bity obsługuje 32 rejestry, każdy rejestr zawiera 32 bity. Dla ułatwienia orientacji w odróżnianiu przeznaczenia rejestrów, przez $s0,$s1, ... będziemy oznaczać rejestry przechowujące zmienne a przez $t0,$t1, ... rejestry tymczasowo przechowujące np. pośrednie wyniki.

- Korzystanie z pamięci RAM

Duże struktury danych jak szeregi liczb lub symboli, które nie mieszczą się w rejestrach, muszą być przechowywane w pamięci RAM. Niezbędne są instrukcje ściągające dane (operandy) z pamięci (data transfer instruction) do rejestru. W MIPS taka instrukcja nazywa się lw (load word). Jej format to nazwa instrukcji, rejestr, adres. Adres w uproszczeniu jest złożeniem pewnej stałej i nazwy rejestru przechowującego adres struktury w pamięci RAM.

Przykład

Zapisać w kodzie asemblera polecenie a = b +A(2), liczba b znajduje się w rejestrze $s2, A oznacza szereg liczbowy, którego adres znajduje się w rejestrze s3, A(2) jest 2-gim wyrazem (liczbą) szeregu. Przyjmiemy, że początkowy adres (baza, pierwszy wyraz) szeregu znajduje się w rejestrze $s3 (rejestr bazy). Numer elementu szeregu nazywa się offset, w przykładzie jest to 2.

W języku C obliczenie liczby a jest jedną operacją. W asemblerze jest to bardziej skomplikowane. Wpierw trzeba ściągnąć z pamięci drugi operand czyli A(2) i umieścić go w jednym z rejestrów. Adres A(2) zapisuje się jako sumę adresu bazy plus numer elementu szeregu, czyli 2($s3).Wobec tego pierwsza instrukcja to

lw $t0,2($s3)# tymczasowy rejestr $t0 zawiera A(2),

a druga to zwykłe dodawanie

add $s1,$s2,$t0# rejestr $s1 zawiera b +A(2).

To w zasadzie kończy przykład.

W rzeczywistości sprawa jest trochę bardziej skomplikowana. Kompilator oprócz opisanych czynności przydziela złożonym strukturom danych miejsce w pamięci RAM, a następnie przekazuje instrukcji transferu danych adres początkowy struktury, czyli bazę. Ponieważ 8-mio bitowe słowa mają długość jednego bajta, to są często używane w wielu programach. Większość architektur używa adresów o długości jednego bajta lub jego wielokrotności. Dlatego adres słowa (32 bitów rejestru) pokrywa się w naszym wypadku z adresem jednego z czterech bajtów słowa (słowo ma 4 bajty, gdyż 32/8 = 4). Stąd wynika, że adresy kolejnych słów ośmiobitowych różnią się o 4. A zatem w MIPS słowa muszą się zaczynać w adresach, które są wielokrotnością 4, jest to reguła porządkująca (alignment restriction), stosują się do niej różne architektury gdyż taka reguła przyspiesza transfer danych z pamięci do rejestrów.

Uwaga:

Komputery dzielą się na takie, w których najbardziej znaczący bajt (Most Significant Byte) w słowie jest pierwszym od lewej - ('BigEndian') i takie, w których pierwszym od lewej jest najmniej znaczący bajt (Least Significant Byte) w słowie ('Little Endian').

Zbiór instrukcji MIPS należy do grupy 'Big Endian'.

Sposób adresowanie bajtów ma wpływ na numerowanie wyrazów szeregu. Aby adres bajtu w powyższym kodzie był poprawny do rejestru zawierającego bazę $s3 należy dodać 4 lub 8 lub 12 lub inną wielokrotność 4.

i

A(i)

adres

1

1

0

2

5

4

3

11

8

4

30

12

5

10

16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]