Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Podobné dokumenty
Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Procesor. Procesor FPU ALU. Řadič mikrokód

Semestrální práce z předmětu ÚPA MIPS

Provádění instrukcí. procesorem. Základní model

Struktura a architektura počítačů (BI-SAP) 7

ZADÁNÍ Č. 6 ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA APLIKOVANÝCH VĚD KATEDRA INFORMATIKY A VÝPOČETNÍ TECHNIKY

Princip funkce počítače

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Pohled do nitra mikroprocesoru Josef Horálek

Architektury počítačů a procesorů

Architektury CISC a RISC, uplatnění v personálních počítačích

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Jazyk symbolických adres

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

PROCESOR. Typy procesorů

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška I / 21

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

RISC a CISC architektura

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

8. Laboratoř: Aritmetika a řídicí struktury programu

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Proudové zpracování instrukcí I. Celočíselná pipeline RISC

CISC A RISC PROCESORY Jak pracují procesory CISC:

Adresní mody procesoru

Architektury CISC a RISC, uplatnění v personálních počítačích - pokračování

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Architektury VLIW M. Skrbek a I. Šimeček

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

Řetězené zpracování. INP 2008 FIT VUT v Brně

Registry 8*32bit ERn (=16*16bit En+Rn, 8*16bit+16*8bit En+RnH+RnL)

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Principy počítačů a operačních systémů

a operačních systémů

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Strojový kód. Instrukce počítače

Architektura procesorů PC shrnutí pojmů

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Architektura procesoru ARM

Pohled do nitra mikroprocesoru

Architektura Pentia úvod

Struktura a architektura počítačů

Procesor z pohledu programátora

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Proudové zpracování instrukcí II. Hazardy v proudovém zpracování Proudové zpracování FP instrukcí

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 10

Úvod do architektur personálních počítačů

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

x86 assembler and inline assembler in GCC

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Struktura a architektura počítačů (BI-SAP) 9

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

CHARAKTERISTIKA PROCESORU PENTIUM První verze:

Simulátory aplikačně specifických instrukčních procesorů Jazyk LISA. Masařík Karel

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Představení a vývoj architektur vektorových procesorů

Principy počítačů a operačních systémů

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Úvod do architektur procesorů

Úvod. Programovací paradigmata

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Technické prostředky počítačové techniky

2 Hardware a operační systémy

Přednáška 2 A4B38NVS - Návrh vestavěných systémů 2014, kat. měření, ČVUT - FEL, Praha J. Fischer A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL 1

4. Procesory CISC a RISC: Základní rysy a podněty pro vznik, zřetězení, predikce skoku, základní zástupci.

Vývoj architektur PC 1

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Architektura Pentia 1

Architektura počítačů

Architektura počítačů Zvyšování výkonnosti

Systém adresace paměti

Architektura počítačů Implementace procesoru

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Ústav radioelektroniky. 18. prosince 2007

Principy počítačů I - Procesory

POKROČILÉ ARCHITEKTURY POČITAČŮ KAREL TRČÁLEK, TRC045

Principy počítačů. Optimalizace. Martin Urza

Struktura a architektura počítačů (BI-SAP) 11

Řízení IO přenosů DMA řadičem

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

ISU Cvičení 3. Marta Čudová

Architektura počítačů Zvyšování výkonnosti

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

MSP 430F1611. Jiří Kašpar. Charakteristika

Architektura počítače

Principy komunikace s adaptéry periferních zařízení (PZ)

PB002 Základy informačních technologií

ISU Cvičení 7. Marta Čudová

Cache paměť - mezipaměť

Transkript:

Assembler RISC T.Mainzer, kiv.zcu.cz RISC RISC, neboli Reduced Instruction Set Computer - koncepce procesorů s redukovaným souborem instrukcí (vs. CISC, neboli Complex Instruction Set Computer, "bohatý" instrukčním soubor) Redukování instrukční sady na minimum, což umožní rychlé provádění instrukcí. RISC Málo jednodušších instrukcí, typicky jednotaktové, snadnější pipelining Rychlý, velký kód (mnoho instrukcí) Instrukce stejně dlouhé, omezené množství formátů Pracuje se s registry, LOAD/STORE samostatné spec. instrukce Plocha čipu je využita pro registry Kompilátor řeší závislosti instrukcí CISC Mnoho instrukcí, často komplexních a vícetaktových Pomalejší, kratší kód Mnoho instrukčních a adresních formátů Složité adresní režimy v mnoha instrukcích Plocha čipu je využita pro komplexní instrukce Jednodušší kompilátor MIPS MIPS je procesor typu RISC (MIPS =microprocessor without Interlocked Pipeline Stages, tj. procesor bez automaticky organizované (blokované) pipeline) - instrukce mají délku 32b, registry jsou 32b, je jich 32 - využívá se pipeline - LOAD/STORE architektura - koprocesor pro pohybl.řádovou čárku Formáty instrukcí: - I (immediate) přímý operand (číslo) - J (jump) - skok - R (register) práce s registry Formát I Obsahuje přímý operand konstantu, adresní offset, např. LW $1, -0x0200($2) # $1 [$2-0x200]..do reg.1 obsah adresy reg.2-konstanta 0x200 ADDIU $1,$2,0x1234 #$1 $2 + 0x1234.. do reg.1 soucet reg.2+konstanta 0x1234

Formát J Formát pro skokové instrukce, 26bit offset pro adresu (posouvá se o 2 bity doleva (zarovnání na 4B), tj. Rozsah skoku je 2^28=256MB) Příklad: J lab_1 #skoci na navesti lab_1 (relativni adresa) Pro absolutni skok (32bitu) se používá instr. JR a registr, např. JR $1 Formát R Obsahuje pole pro určení tří registrů (source, target, destination), pole pro délku posuvu a rozšířený operační kód např. ADD $1,$2,$3 #$1 $2+$3 Pseudoinstrukce Zpřehlednují zápis kódu (z hlediska programátora rozšiřují instrukční soubor). Překladač je nahrazuje jednou či více instrukcemi. pseudoinstrukce Instrukce MOVE $1,$2 #$2 $1 ADDU $2,$0,$1 # $2 $1 + $0 (pozn. $0=zero register, vraci hodnotu 0) LW $10, var_1 # $1 [0x10018] (pozn. LW = loadword = načte 32 bitů z paměti) Pipeline (proudové/řetezové zpracování) MIPS ma 5 úrovňovou pipeline IF intruction fetch načtení instrukce z paměti ID instruction decode - dekodovani instrukce a čtení registru EX execute provedeni operace / spočtení adresy MM memory - přístup k operandu do paměti WB write back zpětný zápis výsledku do registru Důsledky zpoždění skokových instrukcí LUI $1,0x1001 #$1 0x1001 LW $10,8($1) #$10 [$1+8] (pozn. Do reg.$10 zapisuje hodnotu z paměti. Adresace je slozena jako bazova adresa (0x10010) + offset (8)) Zamýšlený program Důsledek pipeline Možná úprava Možná úprava J label #skok label: instrukcea Jelikož skok (na návěší label) se provede až ve fázi EX) bude za instrukcí skoku provedena ještě jedna instrukce J label label: instrukcea J label instrukcea label:

zpoždění uložení výsledku / načítání z paměti atp. Zamýšlený program Důsledek pipeline Možná úprava LW $10, var ADDI $11,$10,$9 uložení var do registru $10 se provede ve fázi WB instr.lw a načtení z registru ve fazi ID instr.addi tj. pokud ma instr.addi použít zamýšenou hodnotu je třeba vložit instrukce (ideálně jiné než NOPy) LW $10, var NOP NOP ADDI $11,$10,$9 Assembler MIPS Registry - 32x 32bitů, kromě čísla registrů (např. $29) je mo6n0 používat alias názvy (např. $sp) První program #datový segment var1:.word 0x11223344 #operand1, 32b var2:.word 0xaabbcc00 #operand2, 32b var3:.word 0x00 #operand3 (vysledek), 32b.globl main #main = vstupni bod programu, musi byt global lw $t0, var1 #nacteni operandu1 lw $t1, var2 #nacteni operandu2 # kvuli pipeline addi $t2,$t1,$t0 #$t2 $t1 + $t0 sw $t2,var3 #ulozeni vysledku do var3 j $ra #navratovy skok do systemu # za skokem kvuli pipeline Direktivy překladače (výběr).align n.space n.ascii str.asciiz str Zarovnání v paměti na hranici 2^n Rezervovani místa n byte Řetězec ascii nezakončen/zakončen nulovým znakem

.byte b1,b2,bn.half h1,h2,hn.word w1,w2,wn.text.ktext.kdata Celé číslo 1B,2B,4B Označenbí segmentů kód, data, kód jádra, data jádra Systémové služby V simulátoru SPIM lze použít simulované volání systémových služeb vhodné pro uživatelský vstup/výstup. #datový segment str1:.asciiz Ahoj\n li $v0,4 #cislo sluzby do $v0 la $a0,str1 #adresa textu do $a0 (obecne parametry sluzby do $a0-$a2) syscall #volani systemove sluzby Manipulace se stringy/řetezci Spočítání počtu znaků v řetezci str1:.asciiz Ahoj\n la $t0,str1 #adresa textu do $t0 (zacatek pole znaku) li $t1,0 #citac poctu znaku na 0 loop: lb $t2,0($t0) #nacteni znaku(1byte) z adresy $t0+0 beqz $t2,end #je li t2 nulove (=konec retezce) skoc na navesti end add $t0,#t0,1 #inkrementuj adresu ($t0 $t0+1) add $t1,#t1,1 #inkrementuj pocitadlo znaku j loop end: #opakuj hledani Převod na malá pismena str1:.asciiz HalLo world eol:.asciiz \n.globl main main: la $t0,str1 #adresa textu do $t0 (zacatek pole znaku) loop: lb $t2,0($t0) #nacteni znaku(1byte) z adresy $t0+0 do $t2 beqz $t2,end #je li t2 nulove (=konec retezce) skoc na navesti end li #t1,'a' #constant 'A' bge $t2,$1,upa #skok na upa kdyz $t2 vetsi nebo rovno 'A'($t1) j next #else continue upa: li $t1,'z' #constant 'Z' ble $t2,$t1,upz #skok kdyz mensi nebo rovno

upz: next: end: j next add $t2,#t2,32 #inkrementuj znak o 32 = preved velke na male sb $t2,($t0) #uloz zmeneny znak zpet add $t0,1 j loop li $v0,4 la $a0,str1 syscall li $v0,4 la $a0,eol syscall j $ra #inkrementuj ukazatel #opakuj #vypis vysledek #odradkuj #navratovy skok do systemu Simulátor SPIM Simulátor SPIM ve verzi pro Windows s názvem QTspim lze najít na adrese http://sourceforge.net/projects/spimsimulator/files/. V případě zájmu lze najít i dal ší verze pro jiné operační systémy. Na stejné adrese je ke staž ení i přehledný manuál k simulátoru SPIM, včetně instrukčního souboru procesoru MIPS V nastavení Simulator-Settings lze vypnout/zapnout volby souvisejici s pipeline (povolovani/zakazovani zpozdeni):