1 Zarys architektury MIPS

Podobne dokumenty
1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

Lista Rozkazów: Język komputera

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

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

Architektura typu Single-Cycle

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

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 )

Programowanie w asemblerze MIPSa

Architektury systemów komputerowych

Struktura i działanie jednostki centralnej

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

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

Architektura komputerów

Algorytmy zwiazane z gramatykami bezkontekstowymi

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Liczby zmiennoprzecinkowe

Jerzy Nawrocki, Wprowadzenie do informatyki

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Lab. 02: Algorytm Schrage

Architektura komputerów

Podstawy programowania sterowników GeFanuc

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

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

Przetwarzanie sygnaªów

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

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Lekcja 9 Liczby losowe, zmienne, staªe

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

Programowanie i struktury danych

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

1 Bª dy i arytmetyka zmiennopozycyjna

Projektowanie. Projektowanie mikroprocesorów

Organizacja typowego mikroprocesora

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

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

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

Architektura typu multi cycle

Programowanie niskopoziomowe

Architektura potokowa RISC

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Metodydowodzenia twierdzeń

Prosty procesor dla framgentu listy rozkazów MIPSa

Model obiektu w JavaScript

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Programowanie w elektronice: Podstawy C

Wska¹niki, tablice dynamiczne wielowymiarowe

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

002 Opcode Strony projektu:

organizacja procesora 8086

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

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

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

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

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Rozszerzalne kody operacji (przykład)

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

Technika mikroprocesorowa I Wykład 2

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

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

Języki formalne i techniki translacji

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

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

Technologie Informacyjne Wykład 3

Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski

Liczby zmiennopozycyjne. Kody Hamminga.

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Wykład 2. Budowa komputera. W teorii i w praktyce

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Marie wprowadzenie do budowy prostego komputera

Podstawy Techniki Mikroprocesorowej

Architektura Systemów Komputerowych

Przetwarzanie potokowe pipelining

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

O pewnym zadaniu olimpijskim

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

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. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

x y x y x y x + y x y

architektura komputerów w 1 1

Sterowanie pracą programu

2 Liczby rzeczywiste - cz. 2

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

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Witold Komorowski: RISC. Witold Komorowski, dr inż.

Systemy wbudowane Mikrokontrolery

J zyk C dla sterowników programowalnych GeFanuc

Programowanie i struktury danych 1 / 44

Arytmetyka zmiennopozycyjna

Listy i operacje pytania

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

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Sprzęt i architektura komputerów

Transkrypt:

1 Zarys architektury MIPS Procesory rmy MIPS Technologies u»ywane s w komputerach (Silicon Graphics), skomputeryzowanych zabawkach (Nintendo, Sony) oraz w systemach wbudowanych (w jakie wyposa»one s np. telefony komórkowe). Dwie podsawowe architektury: 32-bitowa (MIPS32) i 64-bitowa (MIPS64). My zajmiemy si 32-bitow wersj MIPSa wszystkie rejestry s 32-bitowe, wszystkie rozkazy maj dªugo± 32 bitów, przestrze«adresowa jest adresowana adresami 32-bitowymi, co pozwala zaadresowa 4 GB. Mimo,»e procesory MIPS s typowymi architekturami RISC-owymi ( reduced instruction set computers - komputery o zredukowanej liczbie rozkazów) ich lista rozkazów jest w miar bogata (RISC to mo»e nie tyle maªo rozkazów co raczejproste i regularne rozkazy). Zawiera rozkazy arytmetyczne, logiczne, porównuj ce, instrukcje przesyªu danych, rozgaª zienia, skoki. Jest architektur typu ªaduj-zapisz, co znaczy,»e wszystkie instrukcje (poza wczytywaniem danych i zapisywaniem) dziaªaj na rejestrach (a nie na komórkach pami ci gªónej). MIPS32 ma 168 32-bitowych rozkazów, ale wiele z nich jest do siebie podobnych (jest np. 6 ró»nych rozkazów dodawania). Posiada m.in. instrukcje NOP (nic nie rób, zajmuje tylko czas procesora, co czasem mo»e by sensowne). Mamy 32 rejstry ogólnego przeznaczenia: oznaczane od $0 do $31. Rejestr $0 ma na staªe wpisan warto± 0, a rejestr $31 ($ra) jest domy±lny dla wielu rozkazów. Rejestr $1 ($at) jest zarezerwowany, rejestry $27 ($k1)i $26 ($k0) u»ywane s przez j dro systemu operacyjnego. Rejestry $28, $29, $30 ($gp, $sp, $fp) s rejestrami wska¹nikowymi. Numeracja pozostaªych rejestrów podana jest na rysunku 1. Ich znaczenie zebrane jest tak»e poni»ej: $at, $k0, $k1 - zarezerwowane dla asemblera i systemu operacyjnego (programista nie powinien ich uzywac) $a0-$a3 - przekazywanie argumentow do funkcji $v0, $v1 - zwracanie wynikow przez funkcje $t0-$t9 - rejestry pomocniecze $s0-$s7 - rejestry danych $gp - global pointer $sp - stack pointer $fp - frame pointer $ra - return address ($31) $0 - staªa zero Warto podkre±li,»e podane zastosowania rejestrów s tylko konwencj i nic nie stoi na przeszkodzie, aby wykorzystywa je inaczej. Dodatkowo mamy dwa rejestry specjalne HI i LO przechowuj ce wyniki pewnych operacji na liczbach caªkowitych. Oczywi±cie jest te» licznik rozkazów PC. Inny zestaw 32 rejestrów to rejestry do operacji na liczbach zmiennoprzecikowych. W trybie podwójnej precyzji warto±ci s przechowywane w parach rejestrów o kolejnych numerach. Jednostka zmiennoprzecikowa dysponuje te» 4 rejestrami specjalnego przeznaczenia. Ze strony http://www.cs.wisc.edu/ larus/spim.html mo»na ±ci gn emulator MIPS32, w wersjach dla ró»nych systemów operacyjnych. Znajduje si tam równie» sporo ciekawych linków. 1

Rysunek 1: Konwencja nazewnictwa rejestrów MIPS32 2 Programowanie MIPSa Jak wspomnieli±my wszystkie rozkazy (z wyj tkiem rozkazów przesyªania danych) operuj tylko na rejestrach. Konwencja: rejestry $s0-$s7 przechowuj dane (odpowiadaj zmiennym programu wysokiego poziomu). Przykªad rozkazu: add $s0, $s1, $s2 # $s0=$s1+$s2 Grupa rejestrów $t0-$t7 przechowuje zgodnie z konwencj warto±ci tymczasowe. Np. licz c wyra»enie: s0 = (s1 + s2) (s3 + s4) napiszemy: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1. Rozró»nienie mi dzy rejestrami $si i $ti jest umowne i nikt nie zabrania u»ywa ich inaczej. Operacja przesyªania z pami ci do rejestru to load word: lw $s0,40($s1) W powy»szym przykªadzie zawarto± pami ci o adresie $s1+40 ªadowana jest do rejestru $s0. Zauwa»my,»e mamy tu do czynienia z adresowaniem bazowym. Jako bazy mo»emy u»y dowolnego rejestru ogólnego przeznaczenia. Przesuni cie jest podane jako argumnet natychmiastowy staªa (nie wolno w tym miejscu u»y rejestru). W druga stron mamy analogicznie dziaªaj c operacj store word: sw $s0, 40($s1) Uwaga o adresowaniu: pami jest adresowana bajtowo, ale sªowo ma dªugo± 4 bajtów, a wi c adres z jakiego pobieramy lub do jakiego zapisujemy powinien by wielokrotno±ci 4. Staªa w rozkazach lw, sw jest pami tana na 16 bitach. 2.1 Przykªad 1. Operacje na tablicy liczb caªkowitych Adres pocz tku tablicy (czyli elementu A[0]) liczb 32-bitowych przechowujemy w rejestrze $s0. Zaªadowanie elementu A[12] do rejestru $s1 wygl da tak (pami tamy o tym,»e adresujemy bajtami): lw $s1, 48($s0) 2

W jaki sposób odwoªa si do elementu tablicy, którego indeks jest przechowywany w rejestrze $s2 (typowa sytuacja w programowaniu!)? Problem polega na tym,»e nie mamy adresowania po±redniego... Przykªadowe rozwi zanie: add $t0, $s2, $s2 add $t0, $t0, $t0 # t0 = 4*i add $t0, $t0, $s0 lw $s1, 0($t0) # ªadujemy A[i] do s1 2.2 Formaty rozkazów MIPSa Poznali±my ju» troch rozkazów MIPS-a. Wszystkie rozkazy mo»na podzieli na trzy rodzaje: typu I (immediate), typu R (register) oraz typu J (jump) (rozkazów z tej ostatniej grupy jeszcze nie widzieli±y). Jak te rozkazy wygl daj w j zyku maszynowym? Rozkazy typu R. Pierwszych 6 bitów to kod operacji (op). Nast pnie mamy trzy razy po 5 bitów wskazuj cych rejestry (rs, rt, rd), 5 bitów przesuni cia (shift ammount, shamt) oraz 6 bitów funkcji (okre±laj dodatkowe szczegóªy operacji). Np. add i sub maj te same bity kodu operacji, rozrózniaj je dopiero bity funkcji. W przypadku rozkazu add $t0, $s1, $s2 kolejne pola przyjmuj warto±ci (dziesi tkowo): 0, 17, 18, 8, 0, 32. Zauwa»,»e rejestr przeznaczenia $t0 jest w kodzie maszynowym zapisany jako trzeci, a nie jako pierwszy. Rozkazy typu I. Np. lw $s0, 8($t1). Kod operacji zajmuje 6 bitów. Potem dwa razy po 5 bitów na numery rejestrów i 16 bitów na adres (zapisany w kodzie dopeªnie«do 2). Nasz rozkaz przykªadowy zostanie zakodowany jako 35, 9, 16, 8. Inny przykªad rozkazu natychmiastowego: addi $s0, $s1, 3, czyli add immediate dodaj staª (argument natychmiastowy). Uwaga: nie ma subi. Rozkazy typu J. Np.: j addr. Kod operacji: 6 bitów. Adres: 26 bitów. Adres jest numerem sªowa a nie bajtu i jest adresem wzgl dnym. Rzeczywisty adres do jakiego si odwoªujemy: 4 najbardziej znacz ce bity s takie same jak w adresie rozkazu, nast pnie 26 bitów zakodowanych w adresie i na ko«cu 2 zera. 2.3 Kodowanie podstawowych konstrukcji z j zyków wysokiego poziomu Konstrukcj : if (i==j) s1=s2+s3 ; if (i!=j) s1=s2-s3; tªumaczymy na (przy zaªo»eniu,»e i jest w $s4, a j w $s5): bne $s4 $s5 E1 E1: beq $s4, $s5, E2 sub $s1, $s2, $s3 E2: 3

Uwaga: rozkazy skoku warunkowego: bne (branch if not equal ), beq (branch if equal) s typu I. Zatem adres ma w takim rozkazie ma tylko 16 bitów i mówi o ile trzeba skoczy w stosunku do aktualnego miejsca w pami ci. Konstrukcja if (i==j) s1=s2+s3 else s1=s2+s3 tªumaczy si na: bne $s4, $s5 Else j EXIT Else: sub $s1, $s2, $s3 Exit: Nie ma rozkazu branch on less then. Do naturalnego przetªumaczenia konstrukcji if (i<j) s1=s2+s3 mo»na za to u»y rozkazu set on less then: slt $t0, $s1, $s2 #set less than s1<s2 -> t0=1 else t0=0 beq $t0, $zero, DALEJ DALEJ: Innym rozwi zaniem jest u»ycie rozkazu bgtz $i E (branch on greater than zero) lub bgez $i E (branch on greater or equal zero). P tla while: while (s4 < s5) s1=s2+s3 mo»e wygl da tak: Loop: slt $t0, $s4, $s5 beq $zero, $t0, EXIT j LOOP EXIT: 2.4 Tryby adresowania MIPS podsumowanie W architekturze MIPS spotykamy w zasadzie 5 trybów adresowania: 1. Rejestrowe (np. add) 2. Bazowe (np. lw) 4

3. Natychmiastowe (np. addi) 4. Wzgl dem licznika rozkazów (np. bne) 5. Pseudobezp±rednie (np. j) (pseudo, bo pierwsze czetery bity s jednak brane z licznika rozkazów) Rysunek 2: Tryby adresowania MIPS 5