Você está na página 1de 113

MEEC – Mestrado em Engenharia

Electrotécnica e de Computadores
1º Ano – 1º Semestre – Ano Letivo 2013/2014

Sistemas Embebidos
Tempo-Real
Prof. Nuno Peixoto
(npeixoto@ipca.pt)

Revisões
S. E. Tempo-Real
Sumário

Introdução
Blocos Digitais Fundamentais
 Blocos Digitais Combinatórios
 Blocos Digitais Sequenciais
Arquitetura de Computadores
 Linguagem Assembly
 Linguagem Máquina
 Compilação de código C
 Processador de ciclo único
 Processador multiciclo
 Processador com pipeline

MEEC Prof. Nuno Peixoto 2


S. E. Tempo-Real
Introdução
Multisim
Xilinxs ISE
Microsoft Word
MySQL
Skype

Compiladores
Sistemas operativos
Assemblers
Multiplexers
Memórias
Somadores
Multiplicadores
Comparadores
ALUs
MEEC Prof. Nuno Peixoto 3
S. E. Tempo-Real
Introdução

Qual o interface entre o hardware e o software?


 Sistema operativo
• Gere o acesso das aplicações ao hardware
• Reserva memória para as aplicações
• Gere as operações básicas de input e output
 Compilador
• Traduz as instruções de uma linguagem de alto
nível (por exemplo C), em linguagem assembly
 Assembler
• Traduz as instruções em assembly para
linguagem máquina
MEEC Prof. Nuno Peixoto 4
S. E. Tempo-Real
Introdução
Linguagem de alto nível (C) Linguagem assembly (MIPS)
swap(int v[], int k) swap:
{ muli $2, $5, 4
int temp; Compilador add $2, $4, $2
temp = v[k]; lw $15, 0($2)
v[k] = v[k+1]; lw $16, 4($2)
v[k+1] = temp; sw $16, 0($2)
} sw $15, 4($2)
jr $31

Linguagem máquina (MIPS)

Assembler

MEEC Prof. Nuno Peixoto 5


S. E. Tempo-Real
Blocos Digitais Fundamentais

Blocos digitais combinatórios


 Multiplexadores
 Somadores
 Comparadores
 ALU (Aritmetic and Logic Unit)
 Shifters e Rotators
 Multiplicadores
 Divisores

MEEC Prof. Nuno Peixoto 6


S. E. Tempo-Real
Blocos Digitais Fundamentais

Blocos digitais sequenciais


 Contadores
 Registos de deslocamento
 Máquinas de estados
Memórias
 ROM
 RAM
• SRAM
• DRAM
 Registos

MEEC Prof. Nuno Peixoto 7


S. E. Tempo-Real
Blocos Digitais Combinatórios

Multiplexador

MEEC Prof. Nuno Peixoto 8


S. E. Tempo-Real
Blocos Digitais Combinatórios

Somador completo (Full adder)

MEEC Prof. Nuno Peixoto 9


S. E. Tempo-Real
Blocos Digitais Combinatórios

Somador (32 bits)

MEEC Prof. Nuno Peixoto 10


S. E. Tempo-Real
Blocos Digitais Combinatórios

Comparador (igualdade)

MEEC Prof. Nuno Peixoto 11


S. E. Tempo-Real
Blocos Digitais Combinatórios

Comparador (magnitude)
Compara cada bit, desde
o mais significativo até
ao menos significativo

𝐴 > 𝐵 = 𝐴𝑁−1 ∙ 𝐵𝑁−1 +


(𝐴𝑁−1 ⊕ 𝐵𝑁−1 ) ∙ 𝐴𝑁−2 ∙ 𝐵𝑁−2 +
(𝐴𝑁−1 ⊕ 𝐵𝑁−1 ) ∙ 𝐴𝑁−2 ⊕ 𝐵𝑁−2 ∙ 𝐴𝑁−3 ∙ 𝐵𝑁−3 + ⋯ +
(𝐴𝑁−1 ⊕ 𝐵𝑁−1 ) ∙ (𝐴𝑁−2 ⊕ 𝐵𝑁−2 ) ∙ ⋯ ∙ (𝐴1 ⊕ 𝐵1 ) ∙ 𝐴0 ∙ 𝐵0

A subtracção é o A comparação bit a bit, em cascata,


método mais usual é outra abordagem possível

MEEC Prof. Nuno Peixoto 12


S. E. Tempo-Real
Blocos Digitais Combinatórios

ALU – Unidade de Aritmética e Lógica


𝐹2 é o carry in para somar 1
a 𝐵 e obter o complemento
para dois de modo a subtrair

Se A < B, Y = 1 SLT – Set if Less Then


MEEC Prof. Nuno Peixoto 13
S. E. Tempo-Real
Blocos Digitais Combinatórios

Shifter (Lógico)
 LSL – Logic Shift Left (esquerda)
• Um deslocamento de 𝑁 bits para a esquerda é um
caso especial, uma vez que corresponde ao
mesmo que multiplicar o número por 2𝑁
– 0011102 = 1410 ≪ 2 = 1110002 = 5610 , 14 × 22 = 56
 LSR – Logic Shift Right (direita)
 Os bits vazios são preenchidos com 0’s (zeros)
 Exemplo:
• 101110 LSL2 ou 101110 << 2 = 111000
• 101110 LSR2 ou 101110 >> 2 = 001011
MEEC Prof. Nuno Peixoto 14
S. E. Tempo-Real
Blocos Digitais Combinatórios

Shifter (Lógico)

N Multiplexadores de N:1

LSR LSL
MEEC Prof. Nuno Peixoto 15
S. E. Tempo-Real
Blocos Digitais Combinatórios

Shifter (Aritmético)
 ASL – Aritmetic Shift Left (esquerda)
 ASR – Aritmetic Shift Right (direita)
 No deslocamento para a direita os bits vazios
são preenchidos com o MSbit mais antigo (antes
do deslocamento)
 O deslocamento aritmético para a esquerda é
igual ao deslocamento lógico
 O deslocamento aritmético para a direita é
fundamental nas operações de multiplicação e
divisão de números com sinal
MEEC Prof. Nuno Peixoto 16
S. E. Tempo-Real
Blocos Digitais Combinatórios

Shifter (Aritmético)
 Exemplo:
• 101110 ASR2 = 111011
• 011110 >>> 2 = 000111
• 101011 >>> 3 = 111101

MEEC Prof. Nuno Peixoto 17


S. E. Tempo-Real
Blocos Digitais Combinatórios

Rotator
 Implementa um deslocamento circular, ou seja,
os lugares vazios são preenchidos com os bits
que abandonariam o número binário, devido ao
deslocamento
 ROR – Rotação para a direita
• Exemplo:
– 101110 ROR2 = 101011
 ROL – Rotação para a esquerda
• Exemplo:
– 101110 ROL2 = 111010

MEEC Prof. Nuno Peixoto 18


S. E. Tempo-Real
Blocos Digitais Combinatórios

Multiplicação
 A multiplicação de números binários sem sinal é
semelhante à multiplicação decimal

MEEC Prof. Nuno Peixoto 19


S. E. Tempo-Real
Blocos Digitais Combinatórios

Multiplicação (4-bits)

MEEC Prof. Nuno Peixoto 20


S. E. Tempo-Real
Blocos Digitais Combinatórios

Multiplicador Combinatório (4-bits)

MEEC Prof. Nuno Peixoto 21


S. E. Tempo-Real
Blocos Digitais Combinatórios

Divisor (4-bits)

MEEC Prof. Nuno Peixoto 22


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Contador de 𝑁-bits

MEEC Prof. Nuno Peixoto 23


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Contador com flip-flops em série (4-bits)

MEEC Prof. Nuno Peixoto 24


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Registo de Deslocamento (Shift Register)


 Entrada série
 Saída paralela

MEEC Prof. Nuno Peixoto 25


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Registo de deslocamento
 Entrada paralela, Saída série

MEEC Prof. Nuno Peixoto 26


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Registo de Deslocamento (Shift Register)


 É um circuito digital fundamental no que
concerne às comunicações série

MEEC Prof. Nuno Peixoto 27


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Máquina de estados

MEEC Prof. Nuno Peixoto 28


S. E. Tempo-Real
Circuitos Digitais Sequenciais

Máquina de estados

MEEC Prof. Nuno Peixoto 29


S. E. Tempo-Real
Memórias

Arrays de memória

MEEC Prof. Nuno Peixoto 30


S. E. Tempo-Real
Memórias

Tipos de memória ROM


 Mask ROM
• MROM (ou simplesmente ROM)
 Programmable ROM
• PROM
 Erasable Programmable ROM
• EPROM
 Electrically Erasable Programmable ROM
• EEPROM
 Flash

MEEC Prof. Nuno Peixoto 31


S. E. Tempo-Real
Memórias

Mask ROM

MEEC Prof. Nuno Peixoto 32


S. E. Tempo-Real
Memórias

SRAM

MEEC Prof. Nuno Peixoto 33


S. E. Tempo-Real
Memórias

DRAM
 Cada célula de memória (1-bit) é constituída por
um transístor e um condensador

MEEC Prof. Nuno Peixoto 34


S. E. Tempo-Real
Memórias

Registos (Register File)


 São pequenos arrays de memória SRAM, muito
rápidos, cuja finalidade consiste em armazenar
variáveis temporárias

MEEC Prof. Nuno Peixoto 35


S. E. Tempo-Real
Arquitectura de Computadores

Linguagem assembly (MIPS)


 Instruções
 Operandos
Linguagem máquina (MIPS)
 Instruções
 Operandos
Compilação de código C
 Tradução de C para assembly (MIPS)

MEEC Prof. Nuno Peixoto 36


S. E. Tempo-Real
Arquitectura de Computadores

A arquitectura corresponde à estrutura do


computador do ponto de vista do programador
A arquitectura de um computador é definida por
 Um conjunto de instruções (Instruction Set), que
corresponde à linguagem do computador
 Localizações dos operandos (memória, registos)
A arquitectura de um computador não define o
seu hardware, mas antes, as operações
suportadas pelo mesmo
Podem existir várias implementações de
hardware para a mesma arquitectura
MEEC Prof. Nuno Peixoto 37
S. E. Tempo-Real
Arquitectura de Computadores

Tipos de Arquitecturas
 RISC (Reduced Instruction Set Computer)
• Têm um conjunto de instruções mais reduzido
• A implementação de hardware é mais simples
• No entanto, são necessárias mais instruções para
operações mais complexas
 CISC (Complex Instruction Set Computer)
• Têm um conjunto amplo de instruções
• O hardware é muito mais complexo
• Permite executar operações mais complexas com
apenas uma instrução
MEEC Prof. Nuno Peixoto 38
S. E. Tempo-Real
Arquitectura de Computadores

Existem vários tipos de arquitecturas


 x86 (ex. computadores pessoais)
• IA-32
• IA-64
 MIPS
 ARM (ex. Beagleboard)
 PowerPC (ex. Playstation 3)
 SPARC
 Motorola 68k
 8051

MEEC Prof. Nuno Peixoto 39


S. E. Tempo-Real
Arquitectura de Computadores

Todas as aplicações que executam num


computador utilizam o mesmo conjunto de
instruções (o mesmo vocabulário)
As instruções indicam ao computador qual a
operação a efectuar e quais os operandos que
serão utilizados na operação
 Os operandos estão armazenados na memória
ou em registos
No entanto, o hardware digital que constitui o
computador, apenas aceita 0’s e 1’

MEEC Prof. Nuno Peixoto 40


S. E. Tempo-Real
Arquitectura de Computadores

As instruções são codificadas recorrendo a 0’s e


1’s, tal como as letras do alfabeto codificam a
linguagem humana
As instruções codificadas em 0’s e 1’s
correspondem ao que se denomina por
Linguagem Máquina
Mas a interpretação da linguagem máquina
torna-se muito custosa para um ser humano
 Exemplo:
• Qual é o número 1110011 em decimal?

MEEC Prof. Nuno Peixoto 41


S. E. Tempo-Real
Linguagem Assembly

A Linguagem Assembly permite representar as


instruções e os operandos de uma forma
simbólica, capaz de ser facilmente interpretada
por um ser humano
Uma instrução assembly é constituída pela
mnemónica (a operação) e os operandos
 Exemplo da instrução soma (Arquitectura MIPS)
• a=b+c

add a, b, c

mnemónica operado destino operados fonte


MEEC Prof. Nuno Peixoto 42
S. E. Tempo-Real
Linguagem Assembly

A arquitectura MIPS é do tipo RISC


Código de alto nível Código Assembly do MIPS

a = b + c – d sub t, c, d # t = c – d
add a, b, t # a = b + t

As instruções operam com operandos


Os operandos têm de estar armazenados numa
localização física
Os operandos podem ser armazenados nos
registos, na memória, ou podem ser codificados
na própria instrução
MEEC Prof. Nuno Peixoto 43
S. E. Tempo-Real
Linguagem Assembly

Localização dos operandos


 Registos
• São muito rápidos pois são arrays de memória
SRAM de reduzido tamanho
• Na arquitectura MIPS existem 32 registos de 32
bits (Register File)
 Memória
• Mais lenta do que os registos, no entanto, contem
mais operandos do que um (Register File)
 Constantes
• O seu valor vai definido na própria instrução

MEEC Prof. Nuno Peixoto 44


S. E. Tempo-Real
Linguagem Assembly

Nome Número Utilização


$0 0 O valor constante 0 (zero)
$at 1 Assembler temporary
$v0 - $v1 2–3 Valores de retorno das funções
$a0 - $a3 4–7 Argumentos das funções
$t0 - $t7 8 – 15 Variáveis temporárias
$s0 - $s7 16 – 23 Variáveis guardadas
$t8 - $t9 24 – 25 Variáveis temporárias
$k0 - $k1 26 – 27 Variáveis temporárias do sistema operativo (OS)
$gp 28 Apontador global
$sp 29 Apontador de pilha
$fp 30 Apontador da frame de memória
$ra 31 Endereço de retorno das funções
MEEC Prof. Nuno Peixoto 45
S. E. Tempo-Real
Linguagem Assembly

Exemplo de operações com registos


Código de alto nível Código Assembly do MIPS
# $s0=a, $s1=b, $s2=c, $s3=f
a = b – c # $s4=g, $s5=h, $s6=i, $s7=j
f = (g + h) – (i + j) sub $s0, $s1, $s2 # a = b - c
add $t0, $s4, $s5 # $t0 = g + h
add $t1, $s6, $s7 # $t1 = i + j
sub $s3, $t0, $t1 # f=(g+h)–(i+j)

Exemplo de operações com valores imediatos


Código de alto nível Código Assembly do MIPS
# $s0=a
a = a + 4 addi $s0, $s0, 4 # a = a + 4

MEEC Prof. Nuno Peixoto 46


S. E. Tempo-Real
Linguagem Assembly

Memória endereçável ao byte

MEEC Prof. Nuno Peixoto 47


S. E. Tempo-Real
Linguagem Assembly

Exemplo de operações com valores


armazenados na memória endereçável ao byte
 lw – Carregar da memória (load)
 sw – Armazenar na memória (store)
Offset
Endereço base
Código Assembly do MIPS

lw $s0, 0($0) # lê o valor (0xABCDEF78)


lw $s1, 8($0) # lê o valor (0x01EE2842)
lw $s2, 0xC($0) # lê o valor (0x40F30788)
sw $s3, 4($0) # escreve o valor de #s3 na word 1
sw $s4, 0x20($0) # escreve o valor de $s4 na word 8
sw $s5, 400($0) # escreve o valor de $s5 na word 100

MEEC Prof. Nuno Peixoto 48


S. E. Tempo-Real
Linguagem Assembly

As memórias endereçáveis ao byte podem estar


organizadas no formato big-endian ou little-
endian

MEEC Prof. Nuno Peixoto 49


S. E. Tempo-Real
Linguagem Máquina

A linguagem assembly é conveniente para ser


lida por humanos, no entanto, como o hardware
digital apenas utiliza 0’s e 1’s, as mnemónicas e
os operandos têm que ser traduzidos para
linguagem máquina (apenas 0’s e 1’s)
Na arquitectura MIPS todas as instruções têm
32 bits
 Nem todas as instruções necessitam dos 32 bits,
contudo, instruções de comprimento variável
aumentariam muito a complexidade do hardware

MEEC Prof. Nuno Peixoto 50


S. E. Tempo-Real
Linguagem Máquina

Numa memória de 32 bits cada instrução MIPS vai


ocupar uma única linha
Na arquitectura MIPS existem 3 formatos de
instruções
 R-type
• Operam com 3 registos
 I-type
• Operam com 2 registos e um valor imediato de 16 bits
 J-type
• Operam com um valor imediato de 26 bits

MEEC Prof. Nuno Peixoto 51


S. E. Tempo-Real
Linguagem Máquina

Instruções R-type (Register-type)


 2 operandos fonte
 1 operando destino
 A instrução tem 6 campos

opcode – tem o valor 0 operandos operando Utilizado apenas em


funct – operação fonte destino operações de deslocamento
(shift). Tem o valor 0
MEEC Prof. Nuno Peixoto 52
S. E. Tempo-Real
Linguagem Máquina

Instruções R-type (Register-type)

MEEC Prof. Nuno Peixoto 53


S. E. Tempo-Real
Linguagem Máquina

Instruções I-Type (Immediate-type)


 1 operando fonte
 1 operando destino
 1 valor imediato de 16 bits

operando operando operando


fonte destino ou fonte imediato
fonte
MEEC Prof. Nuno Peixoto 54
S. E. Tempo-Real
Linguagem Máquina
O imediato tem 16 bits, mas a operação é de 32 bits!
Instruções I-Type (Immediate-type)

MEEC Prof. Nuno Peixoto 55


S. E. Tempo-Real
Linguagem Máquina

Operações lógicas com imediatos


Nas operações lógicas
adicionam-se sempre zeros ao
imediato de 16 bits para o
transformar num valor de 32 bits

MEEC Prof. Nuno Peixoto 56


S. E. Tempo-Real
Linguagem Máquina

Instruções J-Type (Jump-type)


 Instruções de salto
 Endereço de 26 bits

MEEC Prof. Nuno Peixoto 57


S. E. Tempo-Real
Linguagem Máquina

O poder do programa armazenado!

MEEC Prof. Nuno Peixoto 58


S. E. Tempo-Real
Linguagem Máquina

Um programa escrito em linguagem máquina


consiste num conjunto de números binários de
32 bits que representam as instruções
Para efectuar diferentes tarefas não é
necessário modificar o hardware, basta
modificar o programa!
 Esta é a razão pela qual os computadores são
tão poderosos
 Os computadores podem, desta forma, executar
uma infinidade de tarefas, desde um simples
cálculo à descompressão de vídeo
MEEC Prof. Nuno Peixoto 59
S. E. Tempo-Real
Linguagem Máquina

As instruções de um determinado programa,


armazenadas na memória, são carregadas
(fetched) para o processador e executadas
Todos os programas se resumem a um conjunto
de instruções organizadas na memória de forma
sequencial
O apontador de programa (PC) (Program
Counter) aponta para o endereço de memória
da instrução que está a executar

MEEC Prof. Nuno Peixoto 60


S. E. Tempo-Real
Compilação de Código C

As linguagens de alto nível, como o C/C++ ou


Java são assim designadas pois são escritas com
um nível de abstracção superior à linguagem
assembly
 Não é necessário especificar o conjunto de
instruções que têm de ser executadas para efectuar
o procedimento
 É apenas necessário descrever o que é que o
procedimento deve fazer e não como vai
especificamente fazer
 O compilador irá encarregar-se dessa tradução
MEEC Prof. Nuno Peixoto 61
S. E. Tempo-Real
Compilação de Código C

MEEC Prof. Nuno Peixoto 62


S. E. Tempo-Real
Compilação de Código C

MEEC Prof. Nuno Peixoto 63


S. E. Tempo-Real
Compilação de Código C

Declaração de constantes em C e tradução para


assembly (MIPS)
 Constante de 16 bits
Código C Código Assembly do MIPS
# $s0 = a
int a = 0x4F3C; addi $s0, $0, 0x4F3C # a = 0x4F3C

 Constante de 32 bits
Código C Código Assembly do MIPS
# $s0 = a
int a = 0x6D5E4F3C; lui $s0, $0, 0x6D5E # a=0x6D5E0000
ori $s0, $s0, 0x4F3C # a=0x6D5E4F3C

MEEC Prof. Nuno Peixoto 64


S. E. Tempo-Real
Compilação de Código C

Salto condicional em assembly (MIPS)


 Mediante uma condição executa o código
imediatamente a seguir ou salta para outra zona
Código Assembly do MIPS

addi $s0, $0, 4 # $s0 = 0 + 4 = 4


addi $s1, $0, 1 # $s1 = 0 + 1 = 1
sll $s1, $s1, 2 # $s1 = 1 << 2 = 4
beq $s0, $s1, label # Se $s0 == $s1 vai para label
addi $s1, $s1, 1 # não executado
sub $s1, $s1, $s0 # não executado

label:
add $s1, $s1, $s0 # $s1 = $s1 + $s0 = 4 + 4 = 8
MEEC Prof. Nuno Peixoto 65
S. E. Tempo-Real
Compilação de Código C

Salto incondicional em assembly (MIPS)


 Salta para outra zona de código sem satisfazer
qualquer condição. Salta sempre!

Código Assembly do MIPS

addi $s0, $0, 4 # $s0 = 4


addi $s1, $0, 1 # $s1 = 1
j label # salta para label
addi $s1, $s1, 1 # não executado
sub $s1, $s1, $s0 # não executado

label:
add $s1, $s1, $s0 # $s1 1 + 4 = 5

MEEC Prof. Nuno Peixoto 66


S. E. Tempo-Real
Compilação de Código C

Declaração condicional (if/else)


Código C

if(i == j)
f = g + h;
else
f = f – i;

Código Assembly do MIPS

# $s0 = f, $s1 = g, $s2 = h, $s3 = i, $s4 = j


bne $s3, $s4, senao # se i != j salta para senao
add $s0, $s1, $s2 # if block: f = g + h
j L2 # salta o bloco do senão
senao:
sub $s0, $s0, $s3 # executa o senão: f = f - i
L2:
MEEC Prof. Nuno Peixoto 67
S. E. Tempo-Real
Compilação de Código C

Declaração condicional (case)


Código C Código Assembly (MIPS)
# $s0 = quantidade, $s1 = var
case20:
switch (quantidade) { addi $t0, $0, 20
case 20: var = 2; break; bne $s0, $t0, case50
case 50: var = 3; break; addi $s1, $0, 2
j terminar
case 100: var = 5; break;
case50:
default: var = 0; addi $t0, $0, 50
} bne $s0, $t0, case100
// função equivalente com addi $s1, $0, 3
// estrutura if/else j terminar
if (quantidade == 20) case100:
var = 2; addi $t0, $0, 100
bne $s0, $t0, default
else if (quantidade == 50)
addi $s1, $0, 5
var = 3; j terminar
else if (quantidade == 100) default:
var = 5; add $s1, $0, $0
else var = 0; terminar:

MEEC Prof. Nuno Peixoto 68


S. E. Tempo-Real
Compilação de Código C

Ciclos (For/While)

Código C Código Assembly (MIPS)

int soma = 0; # $s0 = i, $s1 = soma


for (i = 0; i != 10; i++) { add $s1, $0, $0 # soma = 0
soma = soma + i; addi $s0, $0, 0 # i = 0
} addi $t0, $0, 10 # $t0 = 10
// equivalente ao ciclo while
int soma = 0; for:
int i = 0; beq $s0, $t0, terminar # se i= 10
while (i != 10) { add $s1, $s1, $s0 # soma = soma+i
soma = soma + i; addi $s0, $s0, 1 # incrementa i
i = i + 1; j for
} terminar:

MEEC Prof. Nuno Peixoto 69


S. E. Tempo-Real
Compilação de Código C

Arrays
 Um array de 5 inteiros (4 bytes) está
armazenado na memória a partir do endereço
0x10007000

MEEC Prof. Nuno Peixoto 70


S. E. Tempo-Real
Compilação de Código C

Arrays

Código C Código Assembly (MIPS)

int array [5]; # $s0 = Endereço base do array


lui $s0, 0x1000 # $s0=0x10000000
ori $s0, $s0, 0x7000 # $s0=0x10007000

array[0] = array[0] * 8; lw $t1, 0($s0) # $t1 = array[0]


sll $t1, $t1, 3 # $t1 = $t1<<3 = $t1*8
sw $t1, 0($s0) # array[0] = $t1

array[1] = array[1] * 8; lw $t1, 4($s0) # $t1 = array[1]


sll $t1, $t1, 3 # $t1 = $t1<<3 = $t1*8
sw $t1, 4($s0) # array[1] = $t1

MEEC Prof. Nuno Peixoto 71


S. E. Tempo-Real
Micro Arquitectura

MEEC Prof. Nuno Peixoto 72


S. E. Tempo-Real
Micro Arquitectura

Arquitectura Harvard
 A memória de código (programa) e de dados
estão separadas
 Tipicamente utilizada em microcontroladores

MEEC Prof. Nuno Peixoto 73


S. E. Tempo-Real
Micro Arquitectura

Arquitectura Von Neumann


 Uma única memória guarda simultaneamente o
código (programa/instruções) e os dados

MEEC Prof. Nuno Peixoto 74


S. E. Tempo-Real
Processador de Ciclo Único

Processador
 Unidade de controlo
• Tem como função controlar o datapath, ou seja,
definir o tipo de operação a efectuar de acordo
com a instrução lida da memória de código
• Determina os valores nas linhas de controlo do
datapath
 Datapath
• Contém toda a lógica capaz de efectuar
operações lógicas e aritméticas

MEEC Prof. Nuno Peixoto 75


S. E. Tempo-Real
Processador de Ciclo Único

Elementos necessários para o fetch da


instrução
 Carregar a instrução da memória

Memória de código Program Counter Somador

MEEC Prof. Nuno Peixoto 76


S. E. Tempo-Real
Processador de Ciclo Único

Parte do datapath responsável pelo fetch das


instruções e incremento do Program Counter

MEEC Prof. Nuno Peixoto 77


S. E. Tempo-Real
Processador de Ciclo Único

Elementos necessários para executar


instruções R-Type

Registos ALU

MEEC Prof. Nuno Peixoto 78


S. E. Tempo-Real
Processador de Ciclo Único

Elementos necessários para executar


instruções I-Type de load e store
 Os registos e a ALU também são necessários

Memória de dados Unidade de extensão do barramento


MEEC Prof. Nuno Peixoto 79
S. E. Tempo-Real
Processador de Ciclo Único

Porção do Datapath para saltos condicionais

MEEC Prof. Nuno Peixoto 80


S. E. Tempo-Real
Processador de Ciclo Único

Porção do Datapath para instruções R-Type e I-


Type (load e store)

MEEC Prof. Nuno Peixoto 81


S. E. Tempo-Real
Processador de Ciclo Único

Datapath com linhas de controlo

MEEC Prof. Nuno Peixoto 82


S. E. Tempo-Real
Processador de Ciclo Único

Linhas de controlo da ALU

Unidade de controlo da ALU


 Tem como entradas
• ALUOp (2 bits)
• Campo funct da instrução (6 bits)
MEEC Prof. Nuno Peixoto 83
S. E. Tempo-Real
Processador de Ciclo Único

Tabela de verdade da unidade de controlo da


ALU

MEEC Prof. Nuno Peixoto 84


S. E. Tempo-Real
Processador de Ciclo Único

Tabela de verdade da unidade de controlo da


ALU

MEEC Prof. Nuno Peixoto 85


S. E. Tempo-Real
Processador de Ciclo Único

Datapath com unidade de controlo da ALU

MEEC Prof. Nuno Peixoto 86


S. E. Tempo-Real
Processador de Ciclo Único

Formato das instruções

MEEC Prof. Nuno Peixoto 87


S. E. Tempo-Real
Processador de Ciclo Único

Cálculo do endereço da próxima instrução, que


normalmente é igual a PC + 4

MEEC Prof. Nuno Peixoto 88


S. E. Tempo-Real
Processador de Ciclo Único

Cálculo do endereço de memória para


instruções load (lw) e store (sw)
lw $t1, valor_imediato($t2)

MEEC Prof. Nuno Peixoto 89


S. E. Tempo-Real
Processador de Ciclo Único

Load dos dados da memória para o registo


lw $t1, valor_imediato($t2)

MEEC Prof. Nuno Peixoto 90


S. E. Tempo-Real
Processador de Ciclo Único

Store dos dados do registo para a memória


sw $t1, valor_imediato($t2)

MEEC Prof. Nuno Peixoto 91


S. E. Tempo-Real
Processador de Ciclo Único

Datapath melhorado para poder executar


instruções com formato R-Type add $t1, $t2, $t3

MEEC Prof. Nuno Peixoto 92


S. E. Tempo-Real
Processador de Ciclo Único

Datapath preparado para a instrução beq que


permite efectuar saltos condicionais
beq $t1, $t2, 2

Porquê?

MEEC Prof. Nuno Peixoto 93


S. E. Tempo-Real
Processador de Ciclo Único

Unidade de Controlo

Unidade de controlo dividida


num descodificador principal
e num descodificador da ALU

Baseado no Opcode da instrução

Baseado no campo Funct


(instruções R-Type) e ALUOp

MEEC Prof. Nuno Peixoto 94


S. E. Tempo-Real
Processador de Ciclo Único

MEEC Prof. Nuno Peixoto 95


S. E. Tempo-Real
Processador de Ciclo Único

Tabela de verdade da Unidade de Controlo

MEEC Prof. Nuno Peixoto 96


S. E. Tempo-Real
Processador de Ciclo Único

MEEC Prof. Nuno Peixoto 97


S. E. Tempo-Real
Processador de Ciclo Único

MEEC Prof. Nuno Peixoto 98


S. E. Tempo-Real
Processador de Ciclo Único

O processador de ciclo único é ineficiente


 Os tempos de propagação para a execução de
cada instrução são diferentes
• Vão depender das unidades funcionais utilizadas
 A largura do pulso do sinal de relógio tem que
ser superior ao tempo máximo de propagação,
isto é, o caminho mais longo do datapath

MEEC Prof. Nuno Peixoto 99


S. E. Tempo-Real
Processador Multiciclo

Datapath de alto nível (abstrato)


 Adicionam-se registos entre as unidades
funcionais

MEEC Prof. Nuno Peixoto 100


S. E. Tempo-Real
Processador Multiciclo

MEEC Prof. Nuno Peixoto 101


S. E. Tempo-Real
Processador Multiciclo

 Unidade de controlo
 Máquina de estados

MEEC Prof. Nuno Peixoto 102


S. E. Tempo-Real
Processador com Pipeline

Conceito de pipeline

MEEC Prof. Nuno Peixoto 103


S. E. Tempo-Real
Processador com Pipeline

Conceito de pipeline

MEEC Prof. Nuno Peixoto 104


S. E. Tempo-Real
Processador com Pipeline

Conceito de pipeline

MEEC Prof. Nuno Peixoto 105


S. E. Tempo-Real
Processador com Pipeline

MEEC Prof. Nuno Peixoto 106


S. E. Tempo-Real
Processador com Pipeline

MEEC Prof. Nuno Peixoto 107


S. E. Tempo-Real
Processador com Pipeline

Fetch da instrução

MEEC Prof. Nuno Peixoto 108


S. E. Tempo-Real
Processador com Pipeline

Descodificação da instrução

MEEC Prof. Nuno Peixoto 109


S. E. Tempo-Real
Processador com Pipeline

Execução da instrução

MEEC Prof. Nuno Peixoto 110


S. E. Tempo-Real
Processador com Pipeline

Acesso à memória

MEEC Prof. Nuno Peixoto 111


S. E. Tempo-Real
Processador com Pipeline

Escrita no registo (Write back)

MEEC Prof. Nuno Peixoto 112


S. E. Tempo-Real
Processador com Pipeline

MEEC Prof. Nuno Peixoto 113

Você também pode gostar