Você está na página 1de 64

Sistemas Processadores e Perifricos

Aula 1 - Reviso
Prof. Frank Sill Torres
DELT Escola de Engenharia
UFMG

Adaptado a partir dos Slides de Organizao de Computadores 2006/02 do professor


Leandro Galvo DCC/UFAM - galvao@dcc.ufam.edu.br pelo Prof. Ricardo de Oliveira Duarte

for (i=0; i<10; i++){


m=m+j+c;
j=j-i;
}

Compilador
C MIPS
Assembly
MIPS

...
add $17, $18, $19
add $16, $16, $17
sub $20, $20, $21
....

Montador
MIPS
Linguagem de
Mquina
MIPS
...
00000010010100111000100000100000
00000010000100011000000000100000
00000010100101011010000000100010
....

Processador
MIPS R3000

Compilador
C SPARC
Assembly
SPARC

...
add %g4, %g1, %g2
add %g3, %g3, %g4
sub %g5, %g5, %g7
....

Montador
SPARC
Linguagem de
Mquina
SPARC
...
10000100000000010000000000000001
10001000000000001100000000000011
10001110001000010100000000000101
....

Processador
SPARC v8

HLL
(Linguagem de
alto nvel)

Compilador
C IA32
Assembly
IA32

...
add eax, ebx, ecx
sub ax, bx, cx
....

Montador
IA32
Linguagem de
Mquina
IA32
...
10000100000000010000000000000001
10001000000000001100000000000011
....

Processador
Pentium

Reviso - Organizao de um Computador


COMPUTADOR
S
REE TO
CEI R
TAS

RE
CE
IT
AS

16

32

20

36

24

40

12

28

44

48

64

80

5
2
5
6
60

68

84

72

88

76

92

CONTROLE
S
TEE TO
MPE R
ROS

VIA DE DADOS
0
1
2
3
4

SE
TO
BO L
R
OS
96
10
0
10
4
10
8

PROCESSADOR

ENTRADA

SE
CARTO R
NES
11
2
11
6
12
0
12
4

12
8
13
2
13
6
14
0

SADA

MEMRIA
3

Reviso - Caractersticas de Microprocessadores

Outros perifricos necessrios para funcionamento (como


memria RAM/ROM, Temporizadores, ... )

conectados pelo barramento


ROM

CPU

RAM

Barramento

Portas de
E/S

Temporizador

Reviso - Arquitetura de um Microcontrolador


Microcontrolador
Barramento

CPU

Memria
(ROM/RAM/Flash/...)

Mais
componentes
(opcional)

Temporizador
(opcional)

(cristal
exterior)

Conversores
A/D D/A
(opcional)

Oscilador

Portas de E/S

Reviso - CPU vs. MCU


Microprocessadores (CPU)
Outros perifricos
necessrios para funcionar
(RAM, ROM, E/S, ...)
Poderosa
Expansivo
Versatilidade
Consumo / preo alto
(normalmente)
Uso geral

Microcontroladores (MCU)
Tem CPU, RAM, ROM, E/S,
no mesmo chip
CPU menos poderosa
Tratamento de poucos
formatos de dados
(tipicamente 8 ou 16 bits)
Consumo / preo baixo
(normalmente)
Uso especfico
6

Reviso - CISC - Microprogramao


Instruo CISC

Nano-Processador

Decodificador

Microcdigo

Cada instruo CISC separado em: instruo de mquina,


tipo de endereamento e endereos, registradores
Seguinte: Envio de instrues pequenas (microcdigo)
para Nano-processador (processador no processador)
Execuo de uma instruo CISC demora vrios ciclos de
clock
7

Reviso - RISC vs. CISC

Desempenho (D)

CISC:

Reduo do nmero de instrues por programa


Aumento do nmero de ciclos por instruo

RISC:

Reduo do nmero de ciclos por instruo


Aumento de nmero de instrues por programa
8

Sistemas Processadores e Perifricos


Conjunto de Instrues MIPS
Prof. Frank Sill Torres
DELT Escola de Engenharia
UFMG

Adaptado a partir dos Slides de Organizao de Computadores 2006/02 do professor


Leandro Galvo DCC/UFAM - galvao@dcc.ufam.edu.br pelo Prof. Ricardo de Oliveira Duarte

Arquitetura MIPS

Arquitetura MIPS

MIPS (Microprocessor without Interlocking


Pipeline Stages)

Arquitetura tipo RISC

Verses de 32 e 64 bit (ns usamos: 32 bit)

Quase 100 milhes de processadores MIPS


fabricados em 2009

Usada pela NEC, Nintendo, Cisco, Silicon


Graphics, Sony (p.e. PS2, PSP), impressoras HP e
Fuji, etc.
11

Arquitetura MIPS

Componentes bsicos:
Unidade
Banco

de controle

de registradores

Unidade

lgica e aritmtica (ALU)

Contador

de programa (PC)

Memria
Registrador

de instrues (IR)

12

Arquitetura MIPS
:: Diagrama simplificado

MUX

MUX

MUX
MUX
13

Arquitetura MIPS
:: Unidade de controle

Implementado no nvel de hardware para buscar uma


sequncia de sinais de controle na memria
(programa) e execut-las

Envia sinais de controle para orientar os MUX sobre


qual barramento de entrada deve ser selecionado para
sada

As trilhas de controle no esto mostradas no


diagrama simplificado (folha 13)
14

Arquitetura MIPS
:: Banco de registradores

A arquitetura MIPS possui um banco de 32


registradores

Cada um deles comportam valores de 32 bits

O nome de todos os registradores comea com o


smbolo do cifro: $

15

Arquitetura MIPS
:: Banco de registradores

Adota-se uma conveno que especifica quais


deles devem ser utilizados em certas
circunstncias

Os registradores PC (contador de programas) e


IR (registrador de instruo) no fazem parte do
banco de registradores

16

17

Conveno de uso dos registradores


Registrador

Nmero Uso

$zero

Valor constante igual a zero

$v0-$v1

2-3

Retorno de funes

$a0-$a3

4-7

Argumentos de funcoes

$t0-$t7

8-15

Temporrios, no precisam ser salvos

$s0-$s7

16-23

Salvos por uma funo chamada

$t8-$t9

24-25

Mais temporrios

$gp

28

Apontador global

$sp

29

Apontador de pilha

$fp

30

Apontador de quadro

$ra

31

Endereo de retorno

18

Arquitetura MIPS
:: Unidade lgica e aritmtica (ALU)

Responsvel pela execuo (em binrio) das


seguintes operaes:
Aritmticas
Lgicas

(AND, OR, NOT, XOR)

A operao a ser realizada depende do cdigo de


operao buscado na memria principal

19

Arquitetura MIPS
:: Contador de programa (PC)

um registrador que inicializado pelo sistema


operacional com o endereo da primeira instruo do
programa armazenado na memria

Todas as instrues tm 32 bits de tamanho

Aps uma instruo ser buscada na memria e


armazenada no IR, o PC incrementado em quatro
Bytes, de forma que o CPU ter o endereo da
prxima instruo a ser executada
20

Arquitetura MIPS
:: Registrador de instruo (IR)

um registrador de 32 bits que possui uma cpia


da mais recente instruo buscada na memria

A depender do cdigo contido no IR, a unidade


de controle determinar qual a operao a ser
realizada

21

Arquitetura MIPS
:: Memria

Pode ser vista como um grande arranjo de clulas:

onde informaes so armazenadas (store)


de onde informaes so buscadas (load)

Tais operaes so realizadas sobre uma palavra por


vez

A arquitetura MIPS define palavras de 4 Bytes de


tamanho

A menor unidade de endereamento um Byte


22

Conceito de Programa Armazenado

John Von Neumann em 1942 (tambm: Arquitetura-von-Neumann)

Instrues so codificadas em bits


add $17, $18, $19

00000010010100111000100000100000

Programas so armazenados na memria

Instrues so lidas e escritas da memria assim como os dados


que sero transformados (processados)

Ciclo de busca e execuo da instruo (simplificado)


1.

Instrues so lidas da memria e carregadas no registrador RI

2.

Os bits da instruo guardada no registrador RI so decodificados e controlam as


aes subsequentes

3.

A instruo executada e o endereo para a leitura da prxima instruo calculado


23

Conceito de Programa Armazenado

Arquitetura Harvard

Instrues e dados em memrias separadas

Acesso de instrues independente do acesso de dados acesso


concorrente (ao mesmo tempo)

Harvard
Memria de
instrues
8
CPU
16
Memria de
dados

vs.

Programa armazenado
Memria de
dados e
instrues
8
CPU
24

Instrues Bsicas

25

Linguagem de Montagem (Assembly)

Todas as instrues aritmticas e lgicas tm


trs operandos
A ordem dos operandos fixa (destino primeiro)
[label:] Op-Code [operando], [operando], [operando] [#comentrio]

Sintaxe de instrues assembly:


1.

Label: opcional, identifica bloco do programa

2.

Cdigo de operao: indicado por um Mnemnico

3.

Operandos: Registradores ou memria


Comentrios: opcional, tudo que vem depois do #

4.

26

Linguagem de Montagem (Assembly)


:: Exemplo

Some b com c e coloque o resultado em a


Instruo

de linguagem de montagem:

add $s0, $s1, $s2

Equivalente

ao comando em linguagem C:

a = b + c

27

Linguagem de Montagem (Assembly)

Em assembly, estamos manipulando


registradores do MIPS

Em cdigo C (sem compilao), estamos


manipulando posies da memria

A associao entre posies da memria e


registradores realizada pelo compilador C
28

1o. Princpio de projeto MIPS

Simplicidade favorece regularidade


Mais

que trs operandos por instruo exigiria um


projeto de hardware mais complicado

Cdigo C:

Cdigo MIPS:

A = B + C + D;
E = F - A

add $t0, $s1, $s2


add $t0, $t0, $s3
sub $s0, $s4, $t0

#t0 = s1 + s2
#t0 = t0 + s3
#s0 = s4 t0
29

2o. Princpio de projeto MIPS

Menor significa mais rpido


Uma

quantidade maior que 32 registradores exigiria:

Um

ciclo de clock maior

Formato

de instrues maior, para comportar mais


bits de endereamento

30

Instrues MIPS
:: Armazenamento na memria

Operaes lgicas e aritmticas s ocorrem entre


registradores

Portanto, instrues para transferir dados entre a


memria e os registradores so necessrias, antes da
execuo de tais operaes

Arquitetura MIPS enderea Bytes individuais

Assim, endereos de palavras consecutivas diferem


em 4 bits
31

Instrues MIPS
:: Armazenamento na memria

O espao de endereamento de memria do


MIPS de 232 Bytes (de 32 bits):
0
1
2
3
1001

32

Instrues MIPS
:: Armazenamento na memria

MIPS exige que todas as palavras comecem em


endereos que so mltiplos de 4 Bytes

Alinhamento: objetos devem estar em um endereo


que um mltiplo do seu tamanho
Bytes na palavra
0 1 2 3
Alinhado
No
Alinhado

Localizao da
palavra
33

Instrues MIPS
:: Armazenamento na memria

Dois sistemas para organizao dos Bytes dentro uma palavra

Big Endian Bytes organizados decrescente do seu "peso


numrico" em endereos sucessivos da memria

Little Endian Bytes organizados crescentemente do seu "peso


numrico" em endereos sucessivos da memria

Exemplo: palavra = 6151CE94h, endereo = 0F40h


1) Big Endian:
0F40

61

51

CE

94

0F44

00

00

00

00

2) Little Endian:
0F40

94

CE

51

61

0F44

00

00

00

00

34

Instrues MIPS
:: Armazenamento na memria

Big Endian:
IBM

Little Endian:
Intel

360/370, Motorola 68k, MIPS, Sparc, HP PA


80x86, DEC Vax, DEC Alpha (Windows NT)

Nomeao baseado em um artigo publicado em 1981:


citao do problema e relacionando-o a um episdio
mencionado no livro As Viagens de Gulliver
povo que foi guerra para decidir qual a melhor
maneira de quebrar ovos, se pelo maior (big)
lado ou se pelo menor (little) lado
35

Instrues MIPS
:: Armazenamento na memria
Big-Endian

vs.

Little-Endian

mais fcil de determinar o sinal adio e multiplicao dos nmeros


do nmero
de multi-preciso mais fcil
mais fcil de comparar dois
nmeros
mais fcil de fazer a diviso
mais fcil de imprimir
36

Instrues MIPS

Transferncia de Dados

Lgicas

Controle

Suporte a procedimentos

37

Instrues MIPS
:: Instrues de transferncia de dados
dados

endereo

dados

0 90166000
1 ff666e30
2
...
3

00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch

90166000
ff666e30
00000000
00000000
00000000
00000000
00000000
00000000

...

...

n. registrador

31 0000000b

fffffffch 0000000b

Banco de
Registradores

Memria
38

Instrues MIPS
:: Instrues de transferncia de dados
Copiar dados de para

Instruo

Memria Registrador

load word (lw)

Registrador Memria

store word (sw)

Formato:

lw $t0,8($s3)
instruo
registrador de
destino

registrador base,
que armazena o
endereo base
offset (em Bytes)

39

Instrues MIPS
:: Instrues de transferncia de dados

Load word (lw)

Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3

30 0000 012f
31 0000 000b

Memria

lw $30,4($2)

endereo

dados

00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch

9016
ff66
0000
0000
0000
0000
0000
0000

...

6000
6e30
0000
0000
012f
0000
0000
0000

...

fffffffch 0000 000b


40

Instrues MIPS
:: Instrues de transferncia de dados

Load word (lw)

Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3

30 0000 012f
31 0000 000b

Memria

lw $30,4($2)

endereo

dados

00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch

9016
ff66
0000
0000
0000
0000
0000
0000

...

6000
6e30
0000
0000
012f
0000
0000
0000

...

fffffffch 0000 000b


41

Instrues MIPS
:: Instrues de transferncia de dados

Store word (sw)

Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3

30 0000 012f
31 0000 000b

Memria

sw $30,8($2)

endereo

dados

00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch

9016
ff66
0000
0000
0000
0000
0000
0000

...

6000
6e30
0000
0000
012f
012f
0000
0000

...

fffffffch 0000 000b


42

Instrues MIPS
:: Instrues de transferncia de dados

Exemplo 1
Suponha

que o valor da varivel h esteja armazenado


em $s2 e que o endereo base da matriz A esteja
armazenado em $s3.

Qual

o cdigo assembly para: A[12] = h + A[8]?

?
lw $t0, 32($s3)
add $t0, $s2, $t0
sw $t0, 48($s3)

#
$t0 A[8]
#
$t0 $s2 + A[8]
# A[12] h + A[8]
43

Instrues MIPS
:: Instrues de transferncia de dados

Exemplo 2
Suponha

que o endereo base da matriz B esteja


armazenado em $s4.

Qual

o cdigo assembly para trocar os valores do B[10]


e do B[11]?
lw
lw
sw
sw

$t0,
$t1,
$t0,
$t1,

40($s4)
44($s4)
44($s4)
40($s4)

#
$t0
#
$t1
# B[11]
# B[10]

B[10]
B[11]
B[10] ($t0)
B[11] ($t1)
44

Instrues MIPS
:: Instrues de transferncia de dados

Load upper immediate (lui)

Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3

lui $30, 1025


1025

dec

0000 0100 0000 0001bin


0401

hex

0401 0000
30 0000
31 0000 000b

45

Representando instrues no
computador

Instrues do programa assembly devem ser


traduzidas em nmeros binrios para que a mquina
as execute

Dessa forma, cada instruo e cada registrador devem


ser mapeados segundo um cdigo e dispostos
segundo um dos seguintes formatos:

Formato registrador (R)

Formato imediato (I)

Formato de jump (J)


46

Representando instrues no
computador

Formato registrador (R)

Op-code: sempre zero para o formato R

Rs: registrador do primeiro operando de origem

Rt: registrador do segundo operando de origem

Rd: registrador que recebe o resultado da operao (destino)

Shamt: quantidade de deslocamento (shift amount). Ser


abordado mais tarde.

Function code: especifica qual a operao a ser executada


Shamt

47

Representando instrues no
computador

Formato imediato (I)

Op-code: especifica qual operao a ser executada

Rs: registrador do operando de origem

Rt: registrador que recebe o resultado da operao (destino)

Immediate: endereo de memria ou constante numrica

48

Representando instrues no
computador

Formato jump (J)

Op-code: especifica qual operao a ser executada

Target: local da memria a saltar, onde esto as prximas


instrues a serem executadas.

49

Representando instrues no
computador

Exemplos
add $t0, $s1, $s2
op
6 bits

Instruo
(decimal):

Instruo
(binrio):

rs

rt

rd

shamt

funct

5 bits 5 bits 5 bits 5 bits

6 bits

add

$s1

$s2

$t0

--

add

0
add

17
$s1

18
$s2

8
$t0

0
--

(20)h
add

000000 10001 10010 01000 00000

100000
50

Representando instrues no
computador

Exemplos
lw $t0, 32($s2)
op
6 bits

Instruo
(decimal):

Instruo
(binrio):

rs

rt

5 bits 5 bits

lw

$s2

$t0

(23)h

18

lw

$s2

$t0

100011 10010 01000

immediate
16 bits

offset
32
offset
0000000000100000
51

Representando instrues no
computador

Exemplos
sw $t0, 32($s2)

Instruo
(decimal):

Instruo
(binrio):

op

rs

rt

6 bits

5 bits

sw

$s2

$t0

(2B)h

18

sw

$s2

$t0

5 bits

101011 10010 01000

immediate
16 bits

offset
32
offset
0000000000100000
52

Representando instrues no
computador

Exemplos
lui $t0, 1023

Instruo
(decimal):

Instruo
(binrio):

op

rs

rt

6 bits

5 bits

lui

--

$t0

(F)h

lui

--

$t0

5 bits

001111 00000 01000

immediate
16 bits

immediate
1023
immediate
000001111111111
53

Constantes :: Instrues Imediatas

Constantes so utilizadas com frequncia em


operaes

Nesses caso, incluir constantes em uma instruo


agiliza as operaes, em vez de carregar as
constantes a partir da memria

Tais instrues so conhecidas como instrues


imediatas
54

Constantes :: Instrues Imediatas

Exemplo: Adio imediata (addi)


addi

Instruo
(decimal):

Instruo
(binrio):

# $s3 $s2 + 4

$s3, $s2, 4

op
8

rs
18

rt
19

addi

$s2

$s3

001000 10010 10011


addi

$s2

$s3

immediate
4
constante
0000000000000100
constante
55

3o. Princpio de projeto MIPS

Agilize os casos mais comuns


As

instrues imediatas ilustram este princpio,


consequente direto da Lei de Amdahl

56

Lei de Amdahl
O maior aumento de desempenho possvel introduzindo
melhorias numa determinada caracterstica limitado pela
percentagem em que essa caracterstica utilizada
Tempo de execuo (Tex) aps melhoria =

Tex afetado pela melhoria


Quantidade da melhoria

+ Tex no-afetado

F Tvelho
F

1
=
Tnovo
+ (1 F ) T=
T
+

F
(
)
velho
velho

S
S
Melhoria=
global

1
Tvelho
=
Tnovo F + 1 F
(
)
S
57

Lei de Amdahl

Exemplo 1: Considere um programa com Tex = 100 seg, sendo 20%


adies. Qual o ganho se a adio for 4 vezes mais rpida?

Tex _ novo1

20
=
+ 80 = 85s
4

ganho
=

100
= 1,18
85

E se for o resto 2 vezes mais rpida?

Tex _ novo 2

80
= 20 +
= 60s
2

100
ganho
= = 1,67
60

58

Lei de Amdahl

Exemplo 2: Considere que a instruo lw precisa de 9 ciclos de clock, a


instruo add precisa de 1 ciclo e a instruo addi precisa de 2 ciclos. De
qual fator a instruo lw precisa ser melhor para que uma adio de uma
constante usando add seja mais rpida do que com addi?
lw $t0, 10($s4)
add $s1, $s1, $t0

addi

$s1, $s1, 4

Tlw,add ,velho = 9 + 1 = 10, Taddi = 2


Tlw,add ,velho
=
Tlw,add ,novo 9

10 + 1 9
10
S

Tlw,add ,velho
>
= 5
Taddi

S >9

A instruo lw precisa ser 9 vezes mais rpida


59

Constantes grandes

Como carregar constantes de 32 bits em um


registrador?

Duas instrues so necessrias:


Instruo

lui (load upper immediate) para carregar bits


mais significativos

Instruo

ori (or immediate) para carregar bits menos


significativos

60

Constantes grandes

Exemplo: deseja-se carregar o registrador $t0


com o endereo de memria 0x004b003c
lui $t0, 0x004b

0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0

ori $t0,$t0, 0x003c


0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0
0

c
61

O que vocs aprenderam hoje?

Arquitetura MIPS
Via

de dados

Banco

de Registradores

....

Instrues Bsicas

Princpios de projeto de MIPS

Armazenamento na memria

Representao de instrues
62

Questes
Converta o cdigo em C seguinte para o cdigo assembly usando o
conjunto de instrues MIPS.
// Suponha que os valores das variveis x, y e z estejam armazenados em $s2, $s3
// e $s4 e que o endereo base da matriz B esteja armazenada em $s6
main() {
int x, y, z;
int B[20];
B[0] = x;

sw $s2, 0($s6)
lw $t0, 8($s6)
lw $t1, 12($s6)
add $s3,$t0,$t1

// B[0] = x
// t0 = B[2]
// t1 = B[3]
// y = t0+t1

y = B[2] + B[3];
}

63

Questes
Converta o cdigo assembly para o cdigo de mquina usando estas tabelas
Nome

$zero

$v0$v1

$a0$a3

$t0$t7

$s0$s7

$t8$t9

Nmero

2-3

4-7

8 - 15

16 - 23

24 - 25

Nome

Sintaxe

Funo

Adio
add $s1, $2, $3
Carrega
lw $t,C($s)
word
Armazena
sw $t,C($s)
word

$1 = $2 + $3 (signed)

Formato / Opcode /
funct
R
0
20hex

$t = Memria[$s + C]

23hex

Memria[$s + C] = $t

2Bhex

sw $s2, 0($s6)

101011 10110 10010 0000000000000000

lw $t0, 8($s6)

100011 10110 01000 0000000000001000

lw $t1, 12($s6)

100011 10110 01001 0000000000001100

add $s2,$t0,$t1

000000 01000 01001 10010 00000 100000

64