Plan wykładu. Architektura systemów komputerowych. Cezary Bolek. Składowe architektury komputera

Podobne dokumenty
Lista Rozkazów: Język komputera

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Architektura typu Single-Cycle

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Programowanie w asemblerze MIPSa

Architektura komputerów

Struktura i działanie jednostki centralnej

1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

1 Zarys architektury MIPS

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Projektowanie. Projektowanie mikroprocesorów

List s a R ozkazó z w: w Ję J z ę y z k y k k o k mp o u mp t u er e a a ( cd c. d )

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Magistrala systemowa (System Bus)

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura typu multi cycle

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH. Babbage i jego komputer mechaniczny. Ada programuje maszynę Babbage a. architektura. c Dr inż.

Architektura komputerów

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Architektura komputerów. Asembler procesorów rodziny x86

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Rozszerzalne kody operacji (przykład)

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Systemy wbudowane. Przykłady kodu Assembler

Mikrokontroler ATmega32. Język symboliczny

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Język programowania: Lista instrukcji (IL Instruction List)

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Architektura komputerów

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Kodowanie informacji. Kody liczbowe

Programowanie niskopoziomowe

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

ARCHITEKTURA PROCESORA,

Procesory rodziny x86. Dariusz Chaberski

Technika mikroprocesorowa I Wykład 2

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Procesor i jego architektura (CISC, RISC, 32/64 bity). Systemy wieloprocesorowe. wer Wojciech Myszka 16 pa«zdziernika 2008

Programowalne układy logiczne

Architektura systemów komputerowych. Lista instrukcji procesora

architektura komputerów w 1 1

Podstawy Techniki Mikroprocesorowej

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie Niskopoziomowe

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Przetwarzanie potokowe pipelining

Programowanie w elektronice: Podstawy C

Technologie Informacyjne Wykład 3

Jednostka centralna. dr hab. inż. Krzysztof Patan, prof. PWSZ

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Przykładowe pytania DSP 1

Kurs Zaawansowany S7. Spis treści. Dzień 1

Pracownia Komputerowa wykład IV

Logiczny model komputera i działanie procesora. Część 1.

Programowanie Niskopoziomowe

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Podstawy programowania w BASCOM BASIC AVR

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Architektura Systemów Komputerowych

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Pracownia Komputerowa wyk ad IV

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Zmienne, stałe i operatory

Kod U2 Opracował: Andrzej Nowak

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

2. Architektura mikrokontrolerów PIC16F8x... 13

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

1. Operacje logiczne A B A OR B

Podstawy programowania skrót z wykładów:

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

organizacja procesora 8086

Architektura Systemów Komputerowych

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Mikroprocesory z architekturą RISC

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Architektura systemów komputerowych

Pracownia Komputerowa wykład VI

Zasady wykonywania programu drabinkowego w sterowniku

Shellcody a architektura MIPS na systemach IRIX. Adam Zabrocki.

Wprowadzenie do informatyki ćwiczenia

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Podstawy programowania w języku C i C++

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Sprzęt i architektura komputerów

Transkrypt:

Architektura systemów komputerowych Konwencjonalny poziom maszynowy Cezary Bolek Katedra Informatyki Plan wykładu Składowe architektury komputera Architektura poziomu maszynowego Organizacja jednostki centralnej Konwencjonalny poziom maszynowy Architektura poziomu maszynowego procesora MIPS32 Struktura logiczna Rejestry Instrukcje R-Type Instrukcje I-Type Instrukcje J-Type Tryby adresowania Architektura systemów komputerowych Cezary Bolek 2

Architektura komputera Na architekturę komputera składają się głównie: Model programowy Realizacja sprzętowa Poziom 5 Poziom 4 Poziom języka problemowego Poziom języka asemblera Model programowy operuje na konwencjonalnym poziomie maszynowym Realizacja sprzętowa na poziomach mikroarchitektury i układów logicznych Poziom 3 Poziom 2 Poziom 1 Poziom Poziom systemu operacyjnego Konwencjonalny poziom maszynowy Interpretacja (mikroprogram) lub wykonanie bezpośrednie Poziom mikroarchitektury Sprzęt Poziom układów logicznych Architektura systemów komputerowych Cezary Bolek 3 Architektura poziomu maszynowego Instruction Set Architecture - Poziom architektury listy rozkazów Konwencjonalny poziom maszynowy Model programowy jednostki centralnej (procesora) Z reguły od niego rozpoczyna się projektowanie nowego procesora Na model składa się: Zestaw rejestrów Lista instrukcji Typy danych Dostępne tryby adresowania Zasady obsługi wyjątków i przerwań Procesory oparte na tym samym modelu programowym są ze sobą kompatybilne. Architektura systemów komputerowych Cezary Bolek 4

Organizacja jednostki centralnej Realizacja sprzętowa modelu programowego poziom mikroarchitektury Implementacja komponentów: Rejestry ALU FPU Pamięć podręczna... Połączenia między nimi Przepływ danych ścieŝka danych Architektura systemów komputerowych Cezary Bolek 5 Instruction Set Architecture (ISA) Poziom maszynowy jest odzwierciedleniem punktu widzenia programisty uŝywającego języka maszynowego, bądź twórcy kompilatora generującego kod maszynowy, który musi znać: model pamięci, dostępne rejestry, typy danych, rozkazy stanowią one definicję poziomu maszynowego. Do poziomu ISA nie naleŝą kwestie takie jak: (nie)stosowanie mikroprogramowania, superskalarność, potokowość nie są widoczne bezpośrednio dla twórcy kompilatora są co najwyŝej odczuwalne (wydajność) Architektura systemów komputerowych Cezary Bolek 6

Architektura MIPS32 Architektura systemów komputerowych Cezary Bolek 7 Struktura logiczna procesora MIPS 4 bajty na słowo... Pamięć Do 2 32 bajtów = 2 3 słów... 32 rejestry ogólnego przeznacz. Jednostka arytmetyczno - logiczna EIU ALU MnoŜarka/układ dzielący dla liczb całkowitych $ $1 $2 $31 Gł. jedn. wykonaw. (Main proc) Integer mul/div Hi Lo FPU FP Arith TMU $F $F1 $F2 $F31 BadVaddr Status Cause EPC Jedn. zmiennop. (Coproc 1) Jednostka zarz. pam. i przerw. (Coproc ) 32 rejestry zmiennoprzecinkowe Jednostka arytmetyki zmiennoprzecinkowej Architektura systemów komputerowych Cezary Bolek 8

Rejestry procesora MIPS 32 rejestry ogólnego przeznaczenia General Purpose Registers (GPR) Rejestr zawiera zawsze wartość zero Operacje zapisu do R są ignorowane Rejestry specjalne LO i HI Zawierają wyniki operacji mnoŝenia i dzielenia Rejestr licznika programu PC 32 rejestry zmiennoprzecinkowe Floating Point Registers (FPR) GPRs $ $31 LO HI PC FPRs $F $F31 Mogą być 32- lub 64-bitowe Para rejestrów uŝywana do operacji typu double-precision Architektura systemów komputerowych Cezary Bolek 9 Rejestry GPR 32 Rejestry W asemblerze MIPS korzysta się ze znaku $ przed numerem rejestru $ - rejestr, $1 - rejestr 1,, $31 - rejestr 31 Wszystkie rejestry są 32-bitowe (architektura MIPS32) Rejestr $ zawiera zawsze zero Wartość zapisana do $ jest ignorowana Konwencja programowa Na poziomie asemblera wprowadzono nazwy literowe rejestrów W celu standaryzacji i przenośności programów w asemblerze $8 - $15 określone są jako $t - $t7 Stosowane do wartości tymczasowych $16 - $23 określone są jako $s - $s7 $ = $zero $16 = $s $1 = $at $17 = $s1 $2 = $v $18 = $s2 $3 = $v1 $19 = $s3 $4 = $a $2 = $s4 $5 = $a1 $21 = $s5 $6 = $a2 $22 = $s6 $7 = $a3 $23 = $s7 $8 = $t $24 = $t8 $9 = $t1 $25 = $t9 $1 = $t2 $26 = $k $11 = $t3 $27 = $k1 $12 = $t4 $28 = $gp $13 = $t5 $29 = $sp $14 = $t6 $3 = $fp $15 = $t7 $31 = $ra Architektura systemów komputerowych Cezary Bolek 1

Konwencje stosowania i nazewnictwa rejestrów Asembler odwołuje się do rejestrów za pomocą numeru lub nazwy $sp $fp $ra Łatwiej jest zapamiętać nazwę Asembler przekształca nazwę na numer Nazwa $zero $at $v $v1 $a $a3 $t $t7 $s $s7 $t8 $t9 $k $k1 $gp Rejestr $ $1 $2 $3 $4 $7 $8 $15 $16 $23 $24 $25 $26 $27 $28 $29 $3 $31 Zastosowanie Zawsze (wymuszone sprzętowo) Stosowany przez asembler do rozwijania metainstruk. Rejestry wartości funkcji Argumenty funkcji Rejestry tymczasowe (nie zachowywane) Rejestry dla zmiennych lokalnych (zachowywane) Rejestry tymczasowe (nie zachowywane) Do uŝytku systemu operacyjnego Global pointer (wskaźnik danych statycznych) Stack pointer Frame pointer Return address (wskaźnik stosu) (wskaźnik ramki stosu) (ślad powrotu dla instr. jal) Architektura systemów komputerowych Cezary Bolek 11 Formaty instrukcji Wszystkie instrukcje zajmują dokładnie 32 bity. Trzy rodzaje: Instrukcje rejestrowe - Register (R-Type) Operacje rejestr-rejestr Op: kod operacji specyfikujący format instrukcji Op 6 Rs 5 Rt 5 Rd 5 sa 5 funct 6 Instrukcje z adres. natychmiastowym - Immediate (I-Type) Natychmiastowa stała 16-bitowa jest częścią instrukcji Op 6 Rs 5 Rt 5 immediate 16 Instrukcje skoku - Jump (J-Type) Wykorzystywane przez instrukcje skoków Op 6 immediate 26 Architektura systemów komputerowych Cezary Bolek 12

Kategorie instrukcji Arytmetyka całkowita Instrukcje arytmetyczne, logiczne, przesunięć binarnych Transfer danych Instrukcje zapisu i odczuty pamięci Instrukcje przesłań i konwersji Skoki warunkowe i bezwarunkowe Arytmetyka zmiennoprzecinkowa Instrukcje operujące na rejestrach zmiennoprzecinkowych Pozostałe Instrukcje obsługi sytuacji wyjątkowych Instrukcje zarządzania pamięcią Architektura systemów komputerowych Cezary Bolek 13 Instrukcje R-Type Op 6 Rs 5 Rt 5 Rd 5 sa 5 funct 6 Op: kod operacji (opcode) Określa operację jaka ma być wykonana przez instrukcję Ponadto określa format instrukcji funct: kod funkcji rozszerza opcode Do 2 6 = 64 funkcji moŝe być zdefiniowana dla kaŝdego kodu operac. Opcode ( b ) określa instrukcje R-type Trzy operandy rejestrowe (wspólne dla wszystkich instrukcji) Rs, Rt: pierwszy i drugi operand źródłowy (rejestry) Rd: operand przeznaczenia (rejestr) sa: wielkość przesunięcia dla operacji przesunięć binarnych Architektura systemów komputerowych Cezary Bolek 14

Instrukcje dodawania i odejmowania całkowitego Instrukcja add $s1, $s2, $s3 addu $s1, $s2, $s3 sub $s1, $s2, $s3 subu $s1, $s2, $s3 Działanie $s1 = $s2 + $s3 $s1 = $s2 + $s3 $s1 = $s2 $s3 $s1 = $s2 $s3 op = op = op = op = Format instrukcji R-Type rs = $s2 rs = $s2 rs = $s2 rs = $s2 rt = $s3 rt = $s3 rt = $s3 rt = $s3 rd = $s1 rd = $s1 rd = $s1 rd = $s1 sa = sa = sa = sa = f = x2 f = x21 f = x22 f = x23 add i sub: przepełnienie wywołuje wyjątek arytmetyczny W przypadku przepełnienia, wynik nie jest zapisywany w rejestrze addu i subu: takie samo działanie jak add i sub Ale nie jest zgłaszany wyjątek arytmetyczny Przepełnienie jest ignorowane Przykład: addu $t,$s1,$s2 op $17=$s1 $18=$s2 $8=$t 11 11 1 sa func 11 Architektura systemów komputerowych Cezary Bolek 15 Instrukcje dodawania i odejmowania - przykład NaleŜy wykonać operację (w języku wysokiego poziomu): f = (g+h) (i+j) Kompilator przypisuje zmienne do rejestrów Zakładamy, Ŝe f, g, h, i oraz j znajdują się w rejestrach $s, $s1, $s2, $s3 i $s4 Rejestry saved : $s = $16, $s1 = $17,, $s7 = $23 Realizacja: addu $t, $s1, $s2 # $t = g + h addu $t1, $s3, $s4 # $t1 = i + j subu $s, $t, $t1 # f = (g+h) (i+j) Tymczasowe wyniki pośrednie przechowywane w $t = $8 oraz $t1 = $9 Architektura systemów komputerowych Cezary Bolek 16

Instrukcje operacji binarnych Instrukcja and $s1, $s2, $s3 or $s1, $s2, $s3 xor $s1, $s2, $s3 nor $s1, $s2, $s3 Przykład: Działanie $s1 = $s2 & $s3 $s1 = $s2 $s3 $s1 = $s2 ^ $s3 $s1 = ~($s2 $s3) op = op = op = op = Format instrukcji R-Type rs = $s2 rs = $s2 rs = $s2 rs = $s2 rt = $s3 rt = $s3 rt = $s3 rt = $s3 rd = $s1 rd = $s1 rd = $s1 rd = $s1 sa = sa = sa = sa = f = x24 f = x25 f = x26 f = x27 zakładając: $s1 = xabcd1234 oraz $s2 = xffff and $s,$s1,$s2 or $s,$s1,$s2 xor $s,$s1,$s2 nor $s,$s1,$s2 # $s = xabcd # $s = xffff1234 # $s = x54321234 # $s = xedcb Architektura systemów komputerowych Cezary Bolek 17 Operacje przesunięć binarnych Przesunięcie oznacza przemieszczenie wszystkich bitów rejestru w lewo lub prawo o określoną liczbę pozycji Przesunięcie o stałą liczbę pozycji: sll, srl, sra sll (shift left logically), srl (shift right logically) binarne przesunięcie logiczne sra (shift right arithmetically) - binarne przesunięcie arytmetyczne zachowywany jest znak liczby Wykorzystywane jest 5-bitowe pole sa (shift amount) kodu instrukcji sll srl sra 32-bitowy rejestr......... Architektura systemów komputerowych Cezary Bolek 18

Instrukcje przesunięć binarnych Instrukcja sll $s1,$s2,1 srl $s1,$s2,1 sra $s1, $s2, 1 sllv $s1,$s2,$s3 srlv $s1,$s2,$s3 srav $s1,$s2,$s3 Działanie $s1 = $s2 << 1 $s1 = $s2>>>1 $s1 = $s2 >> 1 $s1 = $s2 << $s3 $s1 = $s2>>>$s3 $s1 = $s2 >> $s3 Format instrukcji R-Type op = rs = rt = $s2 rd = $s1 sa = 1 op = rs = rt = $s2 rd = $s1 sa = 1 op = rs = rt = $s2 rd = $s1 sa = 1 op = rs = $s3 rt = $s2 rd = $s1 sa = op = rs = $s3 rt = $s2 rd = $s1 sa = op = rs = $s3 rt = $s2 rd = $s1 sa = f = f = 2 f = 3 f = 4 f = 6 f = 7 Przesunięcie o zmienną liczbę pozycji: sllv, srlv, srav Analogicznie jak sll, srl, sra, lecz rozmiar przes. w rejestrze Przykład: zakładając $s2 = xabcd1234, $s3 = 16 sll $s1,$s2,8 $s1 = xcd1234 sra $s1,$s2,4 $s1 = $s2>>4 $s1 = xfabcd123 srlv $s1,$s2,$s3 $s1 = $s2<<8 $s1 = $s2>>>$s3 $s1 = xabcd op= rs=$s3=111 rt=$s2=11 rd=$s1=11 sa= f=11 Architektura systemów komputerowych Cezary Bolek 19 MnoŜenie za pomocą operacji przesunięć Instrukcje przesunięcia w lewo (sll) moŝe być traktowana jak mnoŝenie Gdzie mnoŝnik jest potęgą 2 KaŜdą liczbę moŝna przedstawić jako sumę potęg 2 Przykład: pomnoŝyć $s1 przez 36 Rozkład 36 na (4 + 32) i zastosowanie rozdzielności dodawania $s2 = $s1*36 = $s1*(4 + 32) = $s1*4 + $s1*32 sll $t, $s1, 2 ; $t = $s1 * 4 sll $t1, $s1, 5 ; $t1 = $s1 * 32 addu $s2, $t, $t1 ; $s2 = $s1 * 36 Architektura systemów komputerowych Cezary Bolek 2

Operacje mnoŝenia i dzielenia całkowitego Operacje: MnoŜenie ze znakiem: mult $s1,$s2 MnoŜenie bez znaku : multu $s1,$s2 Dzielenie ze znakiem: div $s1,$s2 Dzielenie bez znaku: divu $s1,$s2 MnoŜenie daje wynik 64-bitowy: Rejestr LO = młodsze 32 bity wyniku, HI = starsze 32 bity wyniku Dzielenie LO = 32-bitowy iloraz, HI = 32-bitowa reszta Odczyt wyniku przez przesłania MnoŜenie Dzielenie mflo rd (przesłanie z LO do rd), mfhi rd (przesłanie z HI do rd) mtlo rs (przesłanie do LO z rs), mthi rs (przesłanie do HI z rs) HI $ $1. $31 LO Architektura systemów komputerowych Cezary Bolek 21 Instrukcje mnoŝenia i dzielenia całkowitego Instrukcja mult rs, rt multu rs, rt div rs, rt divu rs, rt mfhi rd mflo rd mthi rs mtlo rs Działanie hi, lo = rs rt hi, lo = rs rt hi, lo = rs / rt hi, lo = rs / rt rd = hi rd = lo hi = rs lo = rs Format instrukcji R-Type op 6 = rs 5 rt 5 x18 op 6 = rs 5 rt 5 x19 op 6 = rs 5 rt 5 x1a op 6 = rs 5 rt 5 x1b op 6 = rd 5 x1 op 6 = rd 5 x12 op 6 = rs 5 x11 op 6 = rs 5 x13 Arytmetyka ze znakiem: mult, div (rs i rt w NKB) LO = młodsze 32 bity wyniku, HI = starsze 32 bity wyniku mnoŝenia LO = 32-bitowy iloraz, HI = 32-bitowa reszta z dzielenia Arytmetyka bez znaku: multu, divu (rs i rt w kodzie U2) Nie występuje przepełnienie arytmetyczne Architektura systemów komputerowych Cezary Bolek 22

Instrukcje I-Type Instrukcje umoŝliwiające uŝycie stałych Operandy rejestrowe i natychmiastowe (immediate) Op 6 Rs 5 Rt 5 immediate 16 Operand natychmiastowy umieszczony bezpośrednio w instrukcji Rs rejestr źródłowy Rt rejestr przeznaczenia (dla R-Type Rd) Przykłady instrukcji ALU I-Type: suma arytm.: addi $s1, $s2, 5 # $s1 = $s2 + 5 suma binarna: ori $s1, $s2, 5 # $s1 = $s2 5 Architektura systemów komputerowych Cezary Bolek 23 Instrukcje ALU I-Type Instrukcja addi $s1, $s2, 1 addiu $s1, $s2, 1 andi $s1, $s2, 1 ori $s1, $s2, 1 xori $s1, $s2, 1 lui $s1, 1 Działanie $s1 = $s2 + 1 $s1 = $s2 + 1 $s1 = $s2 & 1 $s1 = $s2 1 $s1 = $s2 ^ 1 $s1 = 1 << 16 op = x8 op = x9 op = xc op = xd op = xe op = xf Format instrukcji I-Type rs = $s2 rt = $s1 imm 16 = 1 rs = $s2 rt = $s1 imm 16 = 1 rs = $s2 rt = $s1 imm 16 = 1 rs = $s2 rt = $s1 imm 16 = 1 rs = $s2 rt = $s1 imm 16 = 1 rt = $s1 imm 16 = 1 addi: przepełnienie powoduje wyjątek arytmetyczny W przypadku przepełnienia, wynik nie jest zapisywany w rejestrze addiu: jak addi ale prze przepełnienie jest ignorowane Stała natychmiastowa dla addi i addiu traktowana jest jako liczba ze znakiem Nie ma potrzeby wprowadzanie instrukcji subi or subiu Stałe dla andi, ori, xori traktowane jako bez znaku Architektura systemów komputerowych Cezary Bolek 24

Instrukcje ALU I-Type przykłady ZałoŜenie: A, B, C znajdują się w $s, $s1, $s2 A = B+5; C = B 1; addiu $s,$s1,5 addiu $s2,$s1,-1 op=11 rs=$s1=11 rt=$s2=11 imm = -1 = 1111111111111111 A = B&xf; C = B xf; C = 5; A = B; andi ori ori ori $s,$s1,xf $s2,$s1,xf $s2,$zero,5 $s,$s1, Nie ma potrzeby wprowadzania subi, gdyŝ argument natychmiastowy dla addi jest liczbą ze znakiem Rejestr ($zero) ma zawsze wartość zero dlatego moŝna go uŝyć do załadowania wartości 16-bitowej do rejestru Architektura systemów komputerowych Cezary Bolek 25 Instrukcje I-Type stałe 32-bitowe Instrukcje I-Type operują stałymi 16-bitowymi Op 6 Rs 5 Rt 5 immediate 16 Nie ma moŝliwości bezpośredniego uŝycia stałej 32-bitowej dla I-Type Rozmiar instrukcji ustalony na 32 bity Rozwiązanie: zastosowanie dwóch instrukcji do załadowania stałej Aby wykonać operację: $s1=xac5165d9 (32-bitowa stała) lui: load upper immediate lui $s1,xac51 $s1=$17 załadowanie starszych 16 bitów xac51 wyzerowanie młodszych 16 bitów x ori $s1,$s1,x65d9 $s1=$17 xac51 x65d9 Architektura systemów komputerowych Cezary Bolek 26

Instrukcje J-Type Op 6 immediate 26 Format J-type uŝywany jest do reprezentacji instrukcji skoku bezwarunkowego: j label # jump to label... label: 26-bitowa wartość natychmiastowa jest częścią instrukcji Określa adres docelowy skoku Licznik programu (PC) ustawianą jest następująco: Nast. PC = PC 4 immediate 26 Cztery najstarsze bity PC nie pozostawiane bez zmian 2 najmniej znaczące bity równe Architektura systemów komputerowych Cezary Bolek 27 Instrukcje rozgałęzień warunkowych Instrukcje porównania i skoku: beq Rs,Rt,label skok do label jeŝeli (Rs == Rt) bne Rs,Rt,label skok do label jeŝeli (Rs!= Rt) Instrukcje porównania do zera i skoku: Instrukcje często stosowane. bltz Rs,label skok do label jeŝeli (Rs < ) bgtz Rs,label skok do label jeŝeli (Rs > ) blez Rs,label skok do label jeŝeli (Rs <= ) bgez Rs,label skok do label jeŝeli (Rs >= ) Nie ma potrzeby wprowadzania instrukcji beqz oraz bnez Architektura systemów komputerowych Cezary Bolek 28

Instrukcje Set On Less Than (STL) Ustawianie rejestru gdy jeden argument jest mniejszy od drugiego. Wykorzystywane przy realizacji skoków warunkowych slt rd,rs,rt if (rs < rt) rd = 1 else rd = sltu rd,rs,rt jak wyŝej, bez znaku slti rt,rs,im 16 if (rs < im 16 ) rt = 1 else rt = sltiu rt,rs,im 16 jak wyŝej, bez znaku Porównania liczb ze znakiem i bez znaku Mogą dawać róŝne wyniki Zakładając $s = 1 i $s1 = -1 = xffffffff slt $t,$s,$s1 daje w wyniku $t = stlu $t,$s,$s1 daje w wyniku $t = 1 Architektura systemów komputerowych Cezary Bolek 29 Instrukcje skoków i rozgałęzień Instrukcja Działanie Format instrukcji j label skocz do label op 6 = 2 Imm 26 jr rs skocz do adr. w rs op 6 = 8 rs 5 x8 beq rs, rt, label skocz gdy (rs == rt) op 6 = 4 Rs 5 rt 5 imm 16 bne rs, rt, label skocz gdy (rs!= rt) op 6 = 5 rs 5 rt 5 imm 16 blez rs, label skocz gdy (rs<=) op 6 = 6 rs 5 imm 16 bgtz rs, label skocz gdy (rs > ) op 6 = 7 rs 5 imm 16 bltz rs, label skocz gdy (rs < ) op 6 = 1 rs 5 imm 16 bgez rs, label skocz gdy (rs>=) op 6 = 1 rs 5 1 imm 16 Instrukcja Działanie Format instrukcji slt rd, rs, rt rd=(rs<rt?1:) op 6 = rs 5 rt 5 rd 5 x2a sltu rd, rs, rt rd=(rs<rt?1:) op 6 = rs 5 rt 5 rd 5 x2b slti rt, rs, imm 16 rt=(rs<imm?1:) op 6 =1 rs 5 rt 5 imm 16 sltiu rt, rs, imm 16 rt=(rs<imm?1:) op 6 =11 rs 5 rt 5 imm 16 Architektura systemów komputerowych Cezary Bolek 3

Rozgałęzienia ograniczenia MIPS sprzętowo nie realizuje instrukcji relacji: blt, bltu skocz gdy mniejsze (znak/bez znaku) ble, bleu skocz gdy mniejsze równe (znak/bez znaku) bgt, bgtu skocz gdy większe (znak/bez znaku) bge, bgeu skocz gdy większe równe (znak/bez znaku) MoŜna je zrealizować za pomocą dwóch instrukcji: Czynność: Realizacja: Czynność: Realizacja: blt $s,$s1,label slt $at,$s,$s1 bne $at,$zero,label ble $s2,$s3,label slt $at,$s3,$s2 beq $at,$zero,label Architektura systemów komputerowych Cezary Bolek 31 Pseudoinstrukcje Realizowane przez asembler jakby były instrukcjami. W rzeczywistości zastępowane innymi lub rozwijane na ciąg instrukcji kodu maszynowego (makro) Cel: ułatwienie programowania w asemblerze Pseudoinstrukcje move $s1, $s2 not $s1, $s2 li $s1, xabcd li $s1, xabcd1234 sgt $s1, $s2, $s3 blt $s1, $s2, label Konwersja na rzeczywiste instrukcje addu Ss1, $s2, $zero nor $s1, $s2, $s2 ori $s1, $zero, xabcd lui ori $s1, xabcd $s1, $s1, x1234 slt $s1, $s3, $s2 slt $at, $s1, $s2 bne $at, $zero, label Asembler rezerwuje rejestr $at = $1 na własne potrzeby Nazwa $at pochodzi od assembler temporary Architektura systemów komputerowych Cezary Bolek 32

Instrukcje odczytu/zapisu z pamięci Instrukcje przesyłające dane między rejestrami i pamięcią Instrukcje odczytu - Load: Odczyt danych z pamięci i zapis w rejestrze Instrukcje zapisu - Store: Rejestry load store Pamięć Zapis w pamięci danych zawartych w rejestrze W procesorze MIPS do pamięci moŝna się odwoływać tylko za pomocą prostych instrukcji odczyt, zapis (z/do rejestru). Cecha charakterystyczna procesorów RISC. Architektura systemów komputerowych Cezary Bolek 33 Zapis/odczyt słowa (word) Załadowanie Słowa (Word = 4 bajty dla MIPS) lw Rt, imm 16 (Rs) # Rt = MEMORY[Rs+imm 16 ] Zapis słowa sw Rt, imm 16 (Rs) # MEMORY[Rs+imm 16 ] = Rt Stosowane adresowanie: bazowe z przesunięciem Adres pamięci = Rs (baza) + Immediate 16 (przesunięcie) Operand natychmiastowy Immediate 16 jest liczbą ze znakiem (przesunięcie w przód lub tył) Op 6 Rs 5 Rt 5 immediate 16 + Memory Word Base address Architektura systemów komputerowych Cezary Bolek 34

Zapis/odczyt słowa przykład Operacja A[1] = A[2] + 5 (A jest tablicą słów) Zakładamy, Ŝe adres tablicy A znajduje się w rejstrze $s lw $s1, 8($s) # $s1 = A[2] addiu $s2, $s1, 5 # $s2 = A[2] + 5 sw $s2, 4($s) # A[1] = $s2 Indeksy a[2] and a[1] muszą być pomnoŝone przez 4. Rejestry Pamięć...... $s = $16 $s1 = $17 adres tabl. A wartość A[2] lw A[3] A[2] A+12 A+8 $s2 = $18 A[2] + 5... sw A[1] A[] A+4 A... Architektura systemów komputerowych Cezary Bolek 35 Zapis/odczyt Bajtów i półsłów (Halfword) Procesor MIPS operuje następującymi wielkościami danych Byte = 8 bitów, Halfword = 16 bitów, Word = 32 bitów Instrukcje zapisu i odczytu bajtów i półsłów lb = load byte, lbu = load byte unsigned, sb = store byte lh = load half, lhu = load half unsigned, sh = store halfword Ładowanie rozszerza dane pamięci i umieszcza w rejestrze Zapis obcina dane 32-bitowego rejestru by zmieścić w pam. 32-bitowy rejestr s rozszerzenie znakowe s s rozszerzenie zerami s rozszerzenie znakowe s s h rozszerzenie zerami hu b bu Architektura systemów komputerowych Cezary Bolek 36

Instrukcja zapisu i odczytu z pamięci Instrukcja lb rt, imm 16 (rs) lh rt, imm 16 (rs) lw rt, imm 16 (rs) lbu rt, imm 16 (rs) lhu rt, imm 16 (rs) sb rt, imm 16 (rs) sh rt, imm 16 (rs) sw rt, imm 16 (rs) Działanie rt = MEM[rs+imm 16 ] rt = MEM[rs+imm 16 ] rt = MEM[rs+imm 16 ] rt = MEM[rs+imm 16 ] rt = MEM[rs+imm 16 ] MEM[rs+imm 16 ] = rt MEM[rs+imm 16 ] = rt MEM[rs+imm 16 ] = rt Format instrukcji I-Type x2 rs 5 rt 5 imm 16 x21 rs 5 rt 5 imm 16 x23 rs 5 rt 5 imm 16 x24 rs 5 rt 5 imm 16 x25 rs 5 rt 5 imm 16 x28 rs 5 rt 5 imm 16 x29 rs 5 rt 5 imm 16 x2b rs 5 rt 5 imm 16 Stosowane jest adresowanie bazowe z przesunięciem Adres pamięci = Rs (baza) + Immediate 16 (przesunięcie) Dwa przypadki adresowania bazowe z przesunięciem Gdy Rs = $zero = to Adres = Immediate 16 (adres. bezpośrednie) Gdy Immediate 16 = to Adres = Rs (adres. pośrednie rejestrowe) Architektura systemów komputerowych Cezary Bolek 37 Tryby adresowania Tryb adresowania jest to sposób określenia lokalizacji operandu instrukcji Adresowanie natychmiastowe Op 6 Rs 5 Rt 5 immediate 16 Operand jest stałą Adresowanie rejestrowe bezpośrednie Op 6 Rs 5 Rt 5 Rd 5 sa 5 funct 6 Operand znajduje się w rejestrze Register Bazowe z przesunięciem Operand znajduje się w pamięci (load/store) Op 6 Rs 5 Rt 5 immediate 16 Register = Base address Bezpośrednie i pośrednie rejestrowe + Byte Halfword Word Architektura systemów komputerowych Cezary Bolek 38

Tryby adresowania dla instrukcji skoków Adresowanie względem licznika PC Op 6 Rs 5 Rt 5 immediate 16 PC 3 +1 UŜywane przez instr. rozgałęzień (beq, bne, ) Word = Target Instruction Adres instrukcji docelowej PC = PC + 4 (1 + immediate 16 ) PC 3 + immediate 16 + 1 Adresowanie pseudobezpośrednie UŜywane przez instrukcję skoku Op 6 PC 4 immediate 26 : PC 26 Word = Target Instruction Adres instrukcji docelowej PC 4 immediate 26 Architektura systemów komputerowych Cezary Bolek 39 Koniec Architektura systemów komputerowych Cezary Bolek 4