Structura și Organizarea - cs.ucv.roluci/SOC/SOC_05.pdf · 3/26/2019 SOC_05 2017-2018 4...

35
Structura și Organizarea Calculatoarelor Titular: BĂRBULESCU Lucian-Florentin

Transcript of Structura și Organizarea - cs.ucv.roluci/SOC/SOC_05.pdf · 3/26/2019 SOC_05 2017-2018 4...

Structura și Organizarea Calculatoarelor

Titular:

BĂRBULESCU Lucian-Florentin

Capitolul 5

Arhitectura și Organizarea

Procesoarelor MIPS

3/26/2019 SOC_05 2017-2018 3

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 4

INFORMAȚII GENERALE

Procesoarele MIPS (inițial un acronim pentru Microprocessor without Interlocked Pipeline Stages) sunt un exemplu tipic de procesoare RISC cu un set de instrucțiuni simple pe 32 sau 64 biți, dezvoltat de firma MIPS Computer Systems (actual MIPS Technologies)

Primele procesoare MIPS foloseau o arhitectură pe 32 de biți în timp ce versiunile următoare folosesc 64 de biți.

Există mai multe revizii ale setului de instrucțiuni MIPS, cum ar fi MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32, și MIPS64.

Reviziile curente sunt MIPS32 (pentru arhitecturi pe 32 de biți) și MIPS64 (pentru arhitecturi pe 64 de biți).

3/26/2019 SOC_05 2017-2018 5

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 6

Registrele Procesorului MIPS

r16

r17

r18

r19

r20

r21

r22

r23

r24

r25

r26

r27

r28

r29

r30

r31

r0

r1

r2

r3

r4

r5

r6

r7

r8

r9

r10

r11

r12

r13

r14

r15

HI

LO

PC

General Purpose Registers Special Purpose Registers

31 0

3/26/2019 SOC_05 2017-2018 7

Registrele Procesorului MIPS

3/26/2019 SOC_05 2017-2018 8

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 9

Registrele FPU ale Procesorului MIPS

f16

f17

f18

f19

f20

f21

f22

f23

f24

r25

f26

f27

f28

f29

f30

f31

f0

f1

f2

f3

f4

f5

f6

f7

f8

f9

f10

f11

f12

f13

f14

f15

FEXR

FENR

FCSR

General Purpose Registers Special Purpose Registers

FIR

FCCR

31 0

31 0

3/26/2019 SOC_05 2017-2018 10

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 11

Formate de instrucțiuni MIPS

Instrucțiunile MIPS sunt împărțite în trei grupe, în funcție de formatul lor:

Tip I (Immediate) – Acest grup conține instrucțiuni cu un operand imediat, instrucțiuni de ramificare și instrucțiuni de încărcare și salvare. În arhitectura MIPS toate accesele la memorie sunt gestionate de către procesorul principal, deci operațiile de încărcare și salvare ale coprocesorului se găsesc în acest grup.

Toate OPCODE-urile, mai puțin 000000, 00001x și0100xx sunt folosite pentru instrucțiuni de tip I.

opcode immediatertrs

31 26 202125 10111516 56 0

6 1655

3/26/2019 SOC_05 2017-2018 12

Formate de instrucțiuni MIPS

Tip J (Jump) – Acest grup conține cele două instrucțiuni de salt direct (j și jal).

Instrucțiunile de tip J folosesc OPCODE-ul 00001x.

opcode instr_index

31 26 25 0

6 26

3/26/2019 SOC_05 2017-2018 13

Formate de instrucțiuni MIPS

Tip R (Register) – Acest grup conține toate instrucțiunile care nu necesită o valoare imediată sau adresă de memorie pentru a specifica un operand. Include operații aritmetice și logice cu toți operanzii aflați în registre, instrucțiuni de deplasare și instrucțiuni de salt pe registru (jalr and jr).

Toate instrucțiunile de tip R folosesc OPCODE-ul 000000.

Operația efectuată se codifică în câmpul function

opcode sardrtrs function

31 26 202125 10111516 56 0

6 65555

3/26/2019 CSO_05 2016-2017 14

Formate de instrucțiuni MIPS

Instrucțiuni Coprocessor – Procesoarele MIPS folosesc două coprocesoare standard, CP0 și CP1. CP0 (system control coprocessor) oferă instrucțiuni specifice pentru un sistem de operare. CP1 este folosit pentru calcule în virgulă mobilă. Arhitectura MIPS permite adăugare a două noi coprocesoare CP2 și CP3.

Toate instrucțiunile coprocesor folosesc OPCODE-uri cu formatul 0100xx.

opcode fdfsftformat function

31 26 202125 10111516 56 0

6 65555

3/26/2019 SOC_05 2017-2018 15

Formate de instrucțiuni MIPS

Câmp Descriere

opcode Cod operație – 6 biți

rd Adresă registru destinație – 5 biți

rs Adresă registru sursă – 5 biți

rt Adresă registru sursă sau destinație (depinde de instrucțiune) sau cod funcție pentru instrucțiunile cu OPCODE 000001 (REGIMM)

immediate Valoare imediată pe 16 biți (număr întreg cu semn) folosită ca operand sau offset

instr_index Combinație binară pe 26 biți interpretată ca un număr îmtreg fără semn care prin deplasarea spre stânga cu doi biți este utilizată pentru a înlocui cei mai puțini semnificativi 28 biți dintr-o adresă de salt.

sa numărul de biți cu care se realizează deplasarea stânga/ dreapta

function câmpul funcției asociate operației primare SPECIAL (OPCAODE 000000)

3/26/2019 SOC_05 2017-2018 16

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 17

Instrucțiunii de lucru cu memoria

Load Word - Un cuvânt este citit într-un registru de la adresa de memorie specificată

rtMEM[[base]+offset]

LW rt, offset(base)

Store Word – Conținutul registrului cu adresa rt este salvat la adresa de memorie specificată.MEM[[base]+offset][rt]

SW rt, offset(base)

LW

100011offsetrtbase

31 26 202125 1516 0

6 1655

SW

101011offsetrtbase

31 26 202125 1516 0

6 1655

3/26/2019 SOC_05 2017-2018 18

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 19

Instrucțiunii aritmetice

Add Word – Adună conținutul a două registre si salvează rezultatul in al treilea registru.

rd[rs]+[rt]

ADD rd, rs, rt

Add Immediate Word – Adună conținutul unui registru cu o valoare imediată (cu semn) și salvează într-un registru. rt[rs]+immediate

ADDI rt, rs, immediate

SPECIAL

000000

0

00000rdrtrs

ADD

100000

31 26 202125 10111516 56 0

6 65555

ADDI

001000immediatertrs

31 26 202125 10111516 56 0

6 1655

3/26/2019 SOC_05 2017-2018 20

Instrucțiunii aritmetice

Subtract Word – Scade două registre și salvează rezultatul in al treilea registru. rd[rs]-[rt]

SUB rd, rs, rt

SPECIAL

000000

0

00000rdrtrs

SUB

100010

31 26 202125 10111516 56 0

6 65555

3/26/2019 SOC_05 2017-2018 21

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 22

Instrucțiuni logice

And Word - Și logic între două registre și salvează rezultatul în al treilea registru. rd[rs] & [rt]

AND rd, rs, rt

And Immediate Word - Și logic între un registru și o valoare imediată și salvează rezultatul într-un registru. rt[rs] & immediate

ANDI rt, rs, immediate

SPECIAL

000000

0

00000rdrtrs

AND

100100

31 26 202125 10111516 56 0

6 65555

ANDI

001100immediatertrs

31 26 202125 10111516 56 0

6 1655

3/26/2019 SOC_05 2017-2018 23

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 24

Instrucțiuni de ramificare

Branch on Equal – Salt dacă două registre sunt egale. if [rs] == [rt] PC PC+4+(offset << 2);

else PC PC+4

BEQ rs, rt, offset

Branch on Not Equal Salt dacă două registre sunt diferite. if [rs] != [rt] PC PC+4+(offset << 2);

else PC PC+4

BNE rs, rt, offset

BEQ

000100offsetrtrs

31 26 202125 1516 0

6 1655

BNE

000101offsetrtrs

31 26 202125 1516 0

6 1655

3/26/2019 SOC_05 2017-2018 25

BRANCH INSTRUCTIONS

Unconditional Branch – Salt necondiționat.PC PC+4+(offset << 2)

B offset

Branch on Greater than or Equal to Zero and Link – Salt dacă un registru este mai mare sau egal cu zero și salvează adresa de retur in r31.

if [rs] >= 0 r31 PC + 8; PC PC+4+(offset << 2);

else PC PC+4

BGEZAL rs, offset

BEQ

000100offset

0

00000

0

00000

31 26 202125 1516 0

6 1655

REGIMM

000001offset

BGEZAL

10001rs

31 26 202125 1516 0

6 1655

3/26/2019 SOC_05 2017-2018 26

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 27

Instrucțiuni de salt

Jump – Salt la adresa calculată.

PC (PC & 0xf0000000) | (target << 2);

J target

Jump and Link – Salt la adresa calculată și salvează adresa de retur în r31.

r31 PC + 8; PC (PC & 0xf0000000) | (target << 2);

JAL target

J

000010instr_index

31 26 25 0

6 26

JAL

000011instr_index

31 26 25 0

6 26

3/26/2019 SOC_05 2017-2018 28

JUMP INSTRUCTIONS

Jump and Link Register – Salt la adresa conținută in registrul rs (trebuie sa conțină ultimii doi biți egali cu 0) și salvează adresa de retur în rd.

rd PC + 8; PC [rs]

JALR rd,rs

Jump Register - Salt la adresa conținută in registrul rs (trebuie sa conțină ultimii doi biți egali cu 0)

PC [rs]

JR rs

SPECIAL

000000hintrd

0

00000rs

JALR

001001

31 26 202125 10111516 56 0

6 65555

SPECIAL

000000hint

0

00 0000 0000rs

JR

001000

31 26 202125 1011 56 0

6 65555

3/26/2019 SOC_05 2017-2018 29

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 30

Instrucțiuni de deplasare

Shift Word Left Logical – Deplasează un registru la stânga cu “sa” biți și salvează rezultatul în alt registru.

rd [rt ] << sa

SLL rd, rt, sa

Shift Word Right Logical - Deplasează un registru la dreapta (fără semn) cu “sa” biți și salvează rezultatul în alt registru.

rd [rt ] >> sa

SRL rd, rt, sa

SPECIAL

000000sardrt

0

00000

SLL

000000

31 26 202125 10111516 56 0

6 65555

SPECIAL

000000sardrt

0

00000

SRL

100100

31 26 202125 10111516 56 0

6 65555

3/26/2019 SOC_05 2017-2018 31

SHIFTING INSTRUCTIONS

Shift Word Right Arithmetic - Deplasează un registru la dreapta (fără semn) cu “sa” biți și salvează rezultatul în alt registru.

rd [rt ] >> sa

SRA rd, rt, sa

Shift Word Right Arithmetic Variable - Deplasează un registru la dreapta (fără semn) cu “[rs]” biți și salvează rezultatul în alt registru.

rd [rt ] >> [rs]

SRAV rd, rt, rs

SPECIAL

000000sardrt

0

00000

SRA

000011

31 26 202125 10111516 56 0

6 65555

SPECIAL

000000

0

00000rdrtrs

SRL

000111

31 26 202125 10111516 56 0

6 65555

3/26/2019 SOC_05 2017-2018 32

CONȚINUT

Informații Generale

Registrele Procesorului MIPS

Registrele FPU ale Procesorului MIPS

Formate de instrucțiuni MIPS

Instrucțiunii de lucru cu memoria

Instrucțiunii aritmetice

Instrucțiuni logice

Instrucțiuni de ramificare

Instrucțiuni de salt

Instrucțiuni de deplasare

3/26/2019 SOC_05 2017-2018 33

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 34

Setul de instrucțiuni MIPS

3/26/2019 SOC_05 2017-2018 35

ÎNTREBĂRI?