Embedded Systems Design: A Unified Hardware/Software...

45
1 Embedded Systems Design: A Unified Hardware/Software Introduction Capítulo 3 Processadores de Propósito Geral: Software

Transcript of Embedded Systems Design: A Unified Hardware/Software...

1

Embedded Systems Design: A Unified Hardware/Software Introduction

Capítulo 3 Processadores de Propósito Geral: Software

2Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Introdução

• Processador de Propósito Geral– Processador projetado para uma grande variedade de tarefas

computacionais– Baixo custo unitário, em parte devido à diluição do custo NRE sobre

grande quantidade de unidades produzidas• A Motorola vendeu, somente em 1996, meio bilhão de unidades do

microcontrolador 68HC05– Cuidadosamente desenvolvido em virtude de um alto custo NRE ser

aceitável• Pode oferecer bom desempenho, tamanho e consumo de energia

– Baixo custo NRE (diluído na grande quantidade de unidades vendidas), curto time-to-market/prototipagem, alta flexibilidade

• O usuário (final) simplesmente escreve softwares; não há necessidade de desenvolvimento do processador (parte física).

– a.k.a. “microprocessor” – o termo “micro” começou a ser utilizado quando os processadores passaram a ser implementados em um ou mais chips e não mais em salas inteiras

3Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Arquitetura Básica

• Unidade de controle e datapath– Note a semelhança com

o processador dedicado

• Diferenças chaves– Datapath é genérico

– A unidade de controle não armazena o algoritmo – o algoritmo é programado na memória (compartilhada)

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

4Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Operações no Datapath

• Load– Transfere o conteúdo de

uma posição de memória para um registrador

• ALU operation– Operando e o resultado

de uma operação lógico-aritmética estão armazenados em registradores

• Armazenamento– Transfere o conteúdo

de um registrador para uma posição de memória

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

10

+1

11

11

5Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Unidade de Controle

• Unidade de controle: determina as operações realizadas no datapath

– A seqüência das operações desejadas (“instruções”) são armazenadas na memória – “programa”

• Ciclo de instrução – quebra das operações em diversas sub-operações, uma para cada ciclo de relógio, e.g.:

– Aquisição de Instrução (Fetch): lê instrução da memória e armazena no registrador de instruções

– Decodificação: determina o significado da instrução

– Aquisição dos operandos (Fetch operands): move dados da memória para o registrador do datapath

– Execução: move dados através da ULA

– Armazena os resultados: escreve dados do registrador na memória

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1

6Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sub-Operações da Unidade de Controle

• Aquisição de Instrução (Fetch)– Lê próxima

instrução dentro do IR

– PC (program counter): sempre aponta para a próxima instrução

– IR: armazena a instrução a ser executada

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1100 load R0, M[500]

7Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sub-Operações da Unidade de Controle

• Decodificação– Determina o

significado de cada instrução

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1100 load R0, M[500]

8Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sub-Operações da Unidade de Controle

• Aquisição de operandos (Fetch operands)– Transfere dados da

memória para o registrador do datapath

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1100 load R0, M[500]

10

9Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sub-Operações da Unidade de Controle

• Execução– ULA executa a

operação requerida– A instrução load

mostrada neste exemplo não requer uma operação lógica aritmética

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1100 load R0, M[500]

10

10Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sub-Operações da Unidade de Controle

• Armazenamento dos resultados– Escrita de resultados

armazenados em registradores

– A instrução load mostrada neste exemplo não requer uma operação lógica aritmética

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1100 load R0, M[500]

10

11Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Ciclos de Instrução

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1

PC=100

10

Fetch ops

Exec. Store results

clk

Fetch

load R0, M[500]

Decode

100

12Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Ciclos de Instrução

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1

10

PC=100Fetch Decode Fetch

opsExec. Store

resultsclk

PC=101

inc R1, R0

Fetch Fetch ops

+1

11

Exec. Store results

clk

101

Decode

13Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Ciclos de Instrução

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

10...

...

load R0, M[500] 500

501

100

inc R1, R0101

store M[501], R1102

R0 R1

1110

PC=100Fetch Decode Fetch

opsExec. Store

resultsclk

PC=101Fetch Decode Fetch

opsExec. Store

resultsclk

PC=102

store M[501], R1

Fetch Fetch ops

Exec.

11

Store results

clk

Decode

102

14Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Considerações sobre a Arquitetura

• Processador de N-bit – ULA de N-bit,

registradores, barramentos, memória, interface de dados

– Processador Embarcado: comumente 8-bit, 16-bit, 32-bit

– Desktop/servidores: 32-bit, 64-bits

• O tamanho do contador de programa (PC) determina o espaço de endereçamento

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

15Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Considerações sobre a Arquitetura

• Período do sinal de relógio– Inverso da freqüência

do sinal de relógio– Deve ser maior que o

maior atraso entre registradores no processador.

– Acesso à memória é sempre mais lento.

Processor

Control unit Datapath

ALU

Registers

IRPC

Controller

Memory

I/O

Control/Status

16Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Pipelining: Aumentando a produtividade – Throughput (instrução/tempo)

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

Fetch-instr.

Decode

Fetch ops.

Execute

Store res.

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

Wash

Dry

Time

Non-pipelined Pipelined

Time

Time

Pipelined

pipelined instruction execution

non-pipelined dish cleaning pipelined dish cleaning

Instruction 1

17Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Arquiteturas Superescalar e VLIW

• Desempenho pode ser melhorado por meio de:– Relógios mais rápidos (contudo existe um limite)

– Pipelining: divisão da execução das instruções em estágios e sobreposição de estágios

– Múltiplas ULAs para suportar mais de uma seqüência de instruções• Superescalar

– Escalar: operações não-vetorizadas– Aquisição de instruções (fetches) em lotes; execução de quantas forem possíveis

• Pode necessitar de hardware para detectar instruções independentes– VLIW: cada palavra na memória possui múltiplas instruções independentes

• Conta com o compilador para detectar e escalonar as instruções

18Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Duas arquiteturas de memória

Processor

Program memory

Data memory

Processor

Memory(program and data)

Harvard Princeton

• Princeton– Menor quantidade

de conexões à memória

• Harvard– Acesso simultâneo

a dados e programa nas memórias

19Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Memória Cache

• Acesso à memória pode ser lento

• A memória Cache é pequena porém rápida e localizada perto do processador– Armazena cópias de partes da

memória– Pode conter (hit) ou não (miss)

os dados necessários ao processamento corrente.

Processor

Memory

Cache

Fast/expensive technology, usually on the same chip

Slower/cheaper technology, usually on a different chip

20Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Visão do Programador

• O programador não necessita entender detalhes da arquitetura– Em vez disso, necessita saber quais instruções podem ser executadas

• Dois níveis de instruções:– Nível Assembly – Linguagens estruturadas (C, C++, Java, etc.)

• A maior parte do desenvolvimento hoje é realizado utilizando linguagens estruturadas– Porém, programação em linguagem assembly pode ser necessária– Drivers: partes do programa que comunicam com e/ou controlam

(acionam) outros dispositivos• Frequentemente têm considerações temporais detalhadas e grande

manipulação de bits• Assembly pode ser melhor opção nestes casos

21Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Instruções em Assembly

opcode operand1 operand2

opcode operand1 operand2

opcode operand1 operand2

opcode operand1 operand2

...

Instruction 1

Instruction 2

Instruction 3

Instruction 4

• Conjunto de Instruções– Define as instruções legais (válidas) para o processador

• Transferência de dados: memória/registrador, registrador/registrador, I/O, etc.• Aritimética/lógica: usa registradores como entradas para ULA e armazena resultados

em registradores• Branches: determina o valor do Program Counter (PC) quando deseja-se realizar um

desvio para outro ponto do código ao invés de seguir para a instrução subseqüente (PC+1)

22Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Exemplo de conjunto simples de instruções

opcode operands

MOV Rn, direct

MOV @Rn, Rm

ADD Rn, Rm

0000 Rn direct

0010 Rn

0100 RmRn

Rn = M(direct)

Rn = Rn + Rm

SUB Rn, Rm 0101 Rm Rn = Rn - Rm

MOV Rn, #immed. 0011 Rn immediate Rn = immediate

Assembly instruct. First byte Second byte Operation

JZ Rn, relative 0110 Rn relative PC = PC+ relative (only if Rn is 0)

Rn

MOV direct, Rn 0001 Rn direct M(direct) = Rn

Rm M(Rn) = Rm

23Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Modos de Endereçamento

Dados

Imediato

Registrador Direto

Registrador Indireto

Direto

Indireto

Dados

Campo do operando

Registrador de endereços

Registrador de endereços

Endereço de memória

Endereço de memória

Endereço de Memória Dados

Dados

Endereço de memória

Dados

Modo de Endereçamento

Conteúdo dos registradores Conteúdo de Memória

24Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Exemplos de Programas

int total = 0;for (int i=10; i!=0; i--) total += i;// next instructions...

Programa em C

MOV R0, #0; // total = 0

MOV R1, #10; // i = 10

JZ R1, Next; // Done if i=0

ADD R0, R1; // total += i

MOV R2, #1; // constant 1

JZ R3, Loop; // Jump always

Loop:

Next: // next instructions...

SUB R1, R2; // i--

Programa em Assembly Equivalente

MOV R3, #0; // constant 0

0

1

2

3

5

6

7

• Exercícios– Handshake: espere até que o valor de M[254] seja diferente de 0, coloque

M[255] em 1, espere novamente até que M[254] retorne a 0, então coloque M[255] em 0 (assuma que essas localizações sejam portas).

– Conte as ocorrências de zero em um vetor armazenado em posições de memória entre 100 e 199.

25Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Considerações do Programador

• Espaços para programas e dados na memória– Processadores embarcados frequentemente são muito

limitados• e.g., 64 K bytes de programa, 256 bytes de RAM (expansível)

• Registradores: Quantos existem?– Somente é preocupação para programadores em assembly

• I/O– Como é realizada a comunicação com os sinais externos?

• Interrupções

26Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Visão Geral da Arquitetura do Microprocessador

• Se você está utilizando um microprocessador em particular, agora é um bom momento para revisar a sua arquitetura

27Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Exemplo: driver de porta paralela

• Utilizando programação em linguagem assembly, é possível configurar a porta paralela do PC para realizar comunicação digital com dispositivos de E/S.– No próximo exemplo, a leitura e escrita em três registradores especiais.

Conferir a tabela acima.

– Exemplo: porta paralela monitora a chave de entrada e acende ou apaga o LED de acordo com a posição da chave.

PC Parallel port

Pin 13

Pin 2

Switch

LED

LPT Connection Pin I/O Direction Register Address

1 Output 0th bit of register #2

2-9 Output 0th bit of register #2

14,16,17 Output 1,2,3th bit of register #2

10,11,12,13,15 Input 6,7,5,4,3th bit of register #1

28Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Exemplo de porta paralela

; This program consists of a sub-routine that reads; the state of the input pin, determining the on/off state; of our switch and asserts the output pin, turning the LED; on/off accordingly

.386

CheckPort procpush ax ; save the content

push dx ; save the contentmov dx, 3BCh + 1 ; base + 1 for register #1in al, dx ; read register #1and al, 10h ; mask out all but bit # 4cmp al, 0 ; is it 0?jne SwitchOn ; if not, we need to turn the LED on

SwitchOff:mov dx, 3BCh + 0 ; base + 0 for register #0in al, dx ; read the current state of the portand al, f7h ; clear first bit (masking)out dx, al ; write it out to the portjmp Done ; we are done

SwitchOn:mov dx, 3BCh + 0 ; base + 0 for register #0in al, dx ; read the current state of the portor al, 01h ; set first bit (masking)out dx, al ; write it out to the port

Done: pop dx ; restore the contentpop ax ; restore the content

CheckPort endp

extern “C” CheckPort(void); // defined in // assembly

void main(void) {while( 1 ) {

CheckPort();}

}

LPT Connection Pin I/O Direction Register Address

1 Output 0th bit of register #2

2-9 Output 0th bit of register #2

14,16,17 Output 1,2,3th bit of register #2

10,11,12,13,15 Input 6,7,5,4,3th bit of register #1

PC Parallel port

Pin 13

Pin 2

Switch

LED

29Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Sistema Operacional

• Camadas opcionais do software fornecem serviços de baixo-nível para o programa (aplicação).– Administração de arquivos, acesso aos

discos

– Interface com teclado/display

– Escalonamento de múltiplos programas para execução

• Ou mesmo somente para a execução de múltiplas threads de um programa

– Programa faz “chamadas de sistema” ao Sistema Operacional (OS) para ter acesso aos serviços disponíveis.

DB file_name “out.txt” -- store file name

MOV R0, 1324 -- system call “open” id

MOV R1, file_name -- address of file-name

INT 34 -- cause a system call

JZ R0, L1 -- if zero-> error

. . . read the fileJMP L2 -- bypass

error cond.L1: . . . handle the errorL2:

30Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Ambiente de Desenvolvimento

• Processador de Desenvolvimento– Processador no qual escrevemos e depuramos os programas

• Usualmente um PC

• Processador Alvo– Processador no qual o programa irá funcionar (no sistema

embarcado)• Frequentemente é diferente do processador de desenvolvimento

Processador de Desenvolvimento Processador Alvo

31Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Processo de Desenvolvimento do Software

Compiler

Linker

C File C File Asm. File

Binary File

Binary File

Binary File

Exec. File

Assembler

Library

Implementation Phase

Debugger

Profiler

Verification Phase

• Compiladores– Crosscompilers

• Funciona em um processador mas gera o código para a execução em outro

• Montadores (assemblers)

• Ligadores (linkers)• Depuradores• Profilers

32Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Executando um Programa

• Se o processador de desenvolvimento é diferente do processador alvo, como é possível executar o código compilado? Existem duas opções:– executar em um sistema com o processador alvo

– simular o processador alvo no sistema de desenvolvimento

• Simulação– Primeiro método: Linguagem de Descrição de Hardware (HDL)

• lenta e nem sempre disponível

– Segundo método: Instruction set simulator (ISS)• executa no processador de desenvolvimento as instruções do processador

alvo por meio de uma tradução de um conjunto de instruções para outro

33Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Simulador de um conjunto de instruções para um processador simples

#include <stdio.h>typedef struct { unsigned char first_byte, second_byte;} instruction;

instruction program[1024]; //instruction memoryunsigned char memory[256]; //data memory

void run_program(int num_bytes) {

int pc = -1; unsigned char reg[16], fb, sb; while( ++pc < (num_bytes / 2) ) { fb = program[pc].first_byte; sb = program[pc].second_byte; switch( fb >> 4 ) { case 0: reg[fb & 0x0f] = memory[sb]; break; case 1: memory[sb] = reg[fb & 0x0f]; break; case 2: memory[reg[fb & 0x0f]] = reg[sb >> 4]; break; case 3: reg[fb & 0x0f] = sb; break; case 4: reg[fb & 0x0f] += reg[sb >> 4]; break; case 5: reg[fb & 0x0f] -= reg[sb >> 4]; break; case 6: pc += sb; break; default: return –1;

} } return 0;}

int main(int argc, char *argv[]) {

FILE* ifs;

If( argc != 2 || (ifs = fopen(argv[1], “rb”) == NULL ) { return –1; } if (run_program(fread(program, sizeof(program) == 0) {

print_memory_contents();return(0);

} else return(-1);}

34Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Testando e Depurando

Fase de Implementação

Fase de Implementação

Fase de Verificação

Fase de Verificação

Emulator

Debugger/ ISS

Programador

Processador de Desenvolvimento

(a) (b)

Ferramentas Externas

• ISS – Controle da execução no tempo –

define breakpoints, examina valores de registradores, define valores, executa código passo-a-passo, ...

– Mas não interage com o ambiente real

• Download para a placa teste– Usa dispositivo programador– Executado em ambiente real

porém sem controle

• Emulador: solução de compromisso

– Execução em ambiente real, em velocidade real ou próximo dela.

– Permite algum controle a partir do PC

35Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Processadores para Área de Aplicação Específicas (ASIPs)

• Processadores de Propósito Geral (GPP)– Em alguma ocasiões é muito genérico para ser efetivo em aplicações

exigentes• e.g., processamento de vídeo – exige buffers gigantescos e opera com

arranjos de dados extremamente longos; ineficiente em um GPP

– Mas, processadores dedicados possuem alto custo NRE e não são programáveis

• ASIPs – voltado para um campo particular de aplicação– Contém características de arquitetura específicas para aquele campo

• e.g., controle embarcado, processamento digital de sinais, processamento de vídeos, processamento de redes, telecomunicações etc

– Mais específico, porém ainda programável

36Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Exemplo comum de ASIP: Microcontrolador

Para aplicações de controle embarcadas– Leitura de sensores, ajustando atuadores– Na maioria das vezes lida com eventos (bits): o dado está presente, mas não em

grandes quantidades– e.g., VCR, acionador de discos, câmera digital (assumindo SPP para compressão

de imagem), máquina de lavar, forno de microondas• Características do microcontrolador

– Periféricos no chip• Temporizadores, conversores analógico-digital, comunicação serial, etc.• Fortemente integrados para o programador• São tipicamente uma parte do espaço de registradores

– Memória de programa e de dados no chip– Programas tem acesso direto aos pinos do chip– Instruções especializadas para a manipulação de bits e outras operações em

baixo nível

37Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Outro Exemplo de ASIP: Processador Digital de Sinais (DSP)

• Para aplicações de processamento de sinais– Grande quantidade de dados digitalizados, normalmente em

fluxos

– Transformação de dados deve ser realizada rapidamente

– e.g., filtro de voz para telefone celulares, TV digital, sintetizador de música

• Características do DSP– Várias unidades de execução de instruções

– Operações “multiplica-e-acumula” em uma única instrução

– Operações vetoriais eficientes – e.g., soma de dois arranjos• ULAs vetoriais, buffer para loops, etc.

38Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Tendência: ASIPs ainda mais customizados

• No passado, microprocessadores eram adquiridos como chips• Hoje, processadores estão sendo adquiridos como Propriedade

Intelectual (IP)– e.g., modelo VHDL

• Oportunidade de adicionar hardware de datapath customizado e umas poucas instruções, ou apagar algumas instruções– Pode ter impactos significativos no desempenho, tamanho e potência

consumida– Problema: necessidade de compilador/depurador para o ASIP

customizado• Lembre-se: a maioria dos desenvolvedores utiliza linguagem estrutural• Uma solução: geração automática de compiladores/depuradores

– e.g., www.tensillica.com• Outra solução: retargettable compilers

– e.g., www.improvsys.com (arquiteturas VLIW customizadas)

39Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Selecionando um Microprocessador

• Critérios– Técnicos: velocidade, potência consumida, tamanho, custo– Outros: ambiente de desenvolvimento, familiaridade, licenciamento etc

• Velocidade: como avaliar a velocidade do processador?– Velocidade do sinal de relógio – mas o número de instruções por ciclo

pode variar– Instruções por segundo – mas o trabalho realizado por instrução pode

variar– Continua ...

40Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Selecionando um Microprocessador (cont.)

• Velocidade: como avaliar a velocidade do processador? (continuação...)– Dhrystone: Synthetic Benchmark – Programas Sintéticos de Avaliação,

desenvolvido em 1984.

• Unidade de medida: Dhrystones/segundo.• MIPS: 1 MIPS = 1757 Dhrystones/segundo (baseado no VAX 11/780

de Digital). A.k.a. Dhrystone MIPS. Usado comumente hoje em dia.– Ex: 750 MIPS = 750*1757 = 1,317,750 Dhrystones/segundo

– SPEC: conjunto de programas mais realistas para a avaliação de processadores para desktops

– EEMBC – EDN Embedded Benchmark Consortium, www.eembc.org• Pacotes de benchmarks: setor automotivo, eletrônica de consumo,

áreas de redes, automação de escritórios e telecomunicações

41Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Processadores de Propósito Geral

Processor Clock speed Periph. Bus Width MIPS Power Trans. PriceGeneral Purpose Processors

Intel PIII 1GHz 2x16 KL1, 256KL2, MMX

32 ~900 97W ~7M $900

IBMPowerPC750X

550 MHz 2x32 KL1, 256KL2

32/64 ~1300 5W ~7M $900

MIPSR5000

250 MHz 2x32 K2 way set assoc.

32/64 NA NA 3.6M NA

StrongARMSA-110

233 MHz None 32 268 1W 2.1M NA

MicrocontrollerIntel8051

12 MHz 4K ROM, 128 RAM,32 I/O, Timer, UART

8 ~1 ~0.2W ~10K $7

Motorola68HC811

3 MHz 4K ROM, 192 RAM,32 I/O, Timer, WDT,SPI

8 ~.5 ~0.1W ~10K $5

Digital Signal ProcessorsTI C5416 160 MHz 128K, SRAM, 3 T1

Ports, DMA, 13ADC, 9 DAC

16/32 ~600 NA NA $34

LucentDSP32C

80 MHz 16K Inst., 2K Data,Serial Ports, DMA

32 40 NA NA $75

Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998

42Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Projetando um Processador de Propósito Geral

• Não é um projeto que um projetista de sistemas embarcados faria– Entretanto, é interessante

observar como um processador genérico pode ser projetado de forma top-down

– Na prática, os processadores não são construídos desta maneira

• projetos muito mais otimizados

• desenvolvimento muito mais bottom-up

Declarations: bit PC[16], IR[16]; bit M[64k][16], RF[16][16];

Aliases: op IR[15..12] rn IR[11..8] rm IR[7..4]

dir IR[7..0] imm IR[7..0] rel IR[7..0]

Reset

Fetch

Decode

IR=M[PC];PC=PC+1

Mov1 RF[rn] = M[dir]

Mov2

Mov3

Mov4

Add

Sub

Jz01100101

01000011

00100001

op =

0000

M[dir] = RF[rn]

M[rn] = RF[rm]

RF[rn]= imm

RF[rn] =RF[rn]+RF[rm]

RF[rn] = RF[rn]-RF[rm]

PC=(RF[rn]=0) ?rel :PC

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

PC=0;

from states below

FSMD

43Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Arquitetura de um Microprocessador Simples

Dispositivos de armazenamento para cada variável declarada

– Conjunto de registradores armazena cada uma das variáveis

• Unidades funcionais para executar as operações FSMD

– Uma só ULA para todas as operações

• Conexões são adicionadas entre as portas dos componentes de acordo com as operações da FSM

• Criação de identificadores únicos para cada sinal de controle

Datapath

IRPC

Controller(Next-state and

controllogic; state register)

Memory

RF (16)

RFwa

RFwe

RFr1a

RFr1e

RFr2a

RFr2eRFr1 RFr2

RFw

ALUALUs

2x1 mux

ALUz

RFs

PCld

PCinc

PCclr

3x1 muxMsMweMre

To all input control signals

From all output control signals

Control unit

16Irld

2

1

0

A D

1

0

44Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Um Microprocessador Simples

FSM operations that replace the FSMD operations after a datapath is created

RFwa=rn; RFwe=1; RFs=01;Ms=01; Mre=1;

RFr1a=rn; RFr1e=1; Ms=01; Mwe=1;

RFr1a=rn; RFr1e=1; Ms=10; Mwe=1;

RFwa=rn; RFwe=1; RFs=10;

RFwa=rn; RFwe=1; RFs=00;RFr1a=rn; RFr1e=1;RFr2a=rm; RFr2e=1; ALUs=00RFwa=rn; RFwe=1; RFs=00;RFr1a=rn; RFr1e=1;RFr2a=rm; RFr2e=1; ALUs=01PCld= ALUz;RFrla=rn;RFrle=1;

MS=10;Irld=1;Mre=1;PCinc=1;

PCclr=1;Reset

Fetch

Decode

IR=M[PC];PC=PC+1

Mov1 RF[rn] = M[dir]

Mov2

Mov3

Mov4

Add

Sub

Jz0110

0101

0100

0011

0010

0001

op =

0000

M[dir] = RF[rn]

M[rn] = RF[rm]

RF[rn]= imm

RF[rn] =RF[rn]+RF[rm]

RF[rn] = RF[rn]-RF[rm]

PC=(RF[rn]=0) ?rel :PC

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

to Fetch

PC=0;

from states below

FSMD

Datapath

IRPC

Controller(Next-state and

controllogic; state

register)

Memory

RF (16)

RFwa

RFwe

RFr1a

RFr1e

RFr2a

RFr2eRFr1 RFr2

RFw

ALUALUs

2x1 mux

ALUz

RFs

PCld

PCinc

PCclr

3x1 muxMsMweMre

To all input control signals

From all output control signals

Control unit

16Irld

2

1

0

A D

1

0

Você acabou de construir um processador!!

45Embedded Systems Design: A Unified

Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A. A. Henriques

Resumo do Capítulo

• Processadores de Propósito Geral– Bom desempenho, baixo NRE, flexíveis (várias aplicações)

• Controladores, datapaths e memórias• Prevalecem linguagem estruturadas

– Mas programação em linguagem assembly ainda pode ser necessária• Grande disponibilidade de ferramentas

– Incluindo simuladores de conjuntos de instruções e emuladores de circuitos

• ASIPs– Microcontroladores, DSP, processadores de rede, ASIPs customizados

• A escolha entre os vários tipos de processadores disponíveis é um passo importante dentro do projeto

• O desenvolvimento de um processador de propósito geral é conceitualmente o mesmo que desenvolver um processador customizado de propósito único