Engenharia de Sistemas Embarcados

Slides:



Advertisements
Apresentações semelhantes
Presenter’s Notes Some Background on the Barber Paradox
Advertisements

Chapter Five The Processor: Datapath and Control (Parte B: multiciclo)
1998 Morgan Kaufmann Publishers Mario Côrtes - MO401 - IC/Unicamp- 2004s2 Ch5A-1 Chapter Five The Processor: Datapath and Control.
Conjunto de Instruções MIPS
MC542 Organização de Computadores Teoria e Prática
MC Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.
1998 Morgan Kaufmann Publishers Mario Côrtes - MO401 - IC/Unicamp- 2002s1 Ch6-1 Chapter Six Pipelining.
MC Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.
MC542 Organização de Computadores Teoria e Prática
Xtensa LX Processador Configurável Tensilica
Microcontroladores e Sistemas Embarcados
Silberschatz and Galvin Operating System Concepts Unidade 1: Introdução O que é um sistema operacional? Systemas simples em lote (batch) Sistemas.
Fundamentos de Eletrônica Digital
Eletrônica Básica Aula 5
Definição do MoC Subjacente a Aplicação Prof. Dr. César Augusto Missio Marcon Parcialmente extraído de trabalhos de Axel Jantch, Edward Lee e Alberto Sangiovanni-Vincentelli.
MARCELO ARAUJO LIMA JILSEPH LOPES
Avalon Bus, NIOS II, SOPC Builder
0 Stefan Pölt, FRA IN/P Great Truths about Revenue Management Systems brought to us by various cartoonists.
10/ Daily Goal Sheet & Daily Checklist for Teachers Folha do Objetivo Diário & Checklist diário para os Professores By Por David Batty PSNC #7.
Fundamentos da teoria dos semicondutores
Dispositivos Programáveis
Projetos Grandes MO801/MC912. Roteiro Componentes Configurações Instanciação múltipla Instanciação condicional Atenção: Os exemplos são cumulativos.
#Portfolio Technology & Information Applied. Extraction of Budgetary Data, Financial, Accounting & Construction Dashboards for Analysis, Data Management.
IEEE PES General Meeting, Tampa FL June 24-28, 2007 Conferência Brasileira de Qualidade de Energia Santos, São Paulo, Agosto 5-8, 2007 Chapter 9 Case Studies.
Plataforma Java 2 - Micro Edition (J2ME) Prof. Afonso Ferreira Miguel, MSc.
Microprocesadores x Microcontroladores
fábrica de software conceitos, idéias e ilusões
Arquitetura de Sistemas Embarcados
Instituto de Engenharia de Sistemas e Computadores Investigação e Desenvolvimento em Lisboa technology from seed Segurança em Redes Móveis /35 Mersenne.
IEEE PES General Meeting, Tampa FL June 24-28, 2007 Conferência Brasileira de Qualidade de Energia Santos, São Paulo, Agosto 5-8, Chapter 6: Real-Time.
I could start dreamin, but it never ends Eu poderia começar a sonhar mas isso nunca terminaria As long as you're gone we may as well pretend Enquanto.
IEEE PES General Meeting, Tampa FL June 24-28, 2007 Conferência Brasileira de Qualidade de Energia Santos, São Paulo, Agosto 5-8, Chapter 1: An.
CIGRÉ/BRASIL – COMITÊ NACIONAL BRASILEIRO CE-B5 – PROTEÇÃO E AUTOMAÇÃO SEMINÁRIO INTERNO DE 2005.
Video Capítulo 8: Impasses. Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Modelo de Sistemas n Carcterização de.
Cigré/Brasil CE B5 – Proteção e Automação Seminário Interno de Preparação para o Colóquio de Madri 2007 Rio de Janeiro, outubro/07 221_Dlellys.
10 o Simpósio Brasileiro de Computação Musical3 a 6 de Outubro de A User-Friendly Graphical System for Room Acoustics Measurement and Analysis Leo.
Engenharia de Sistemas Embarcados Aula 7: Analisador Lógico.
Pontifícia Universidade Católica do Rio Grande do Sul Departamento de Engenharia Elétrica Fernando Soares dos Reis Didactic Platform for Power Electronics.
Computação Móvel J2ME. Java 2 Platform (1) Java 2 Standard Edition (J2SE) – Desktop applications Java 2 Enterprise Edition (J2EE) – Server applications.
Arquitetura de Sistemas Embarcados
MAC Engenharia de Software Marco A. GerosaIME / USP Mais sobre análise e Outros Diagramas UML MAC0332 Engenharia de Software Marco Aurélio Gerosa.
PSI2653: Meios Eletrônicos Interativos I Escola Politécnica da USP Engenharia de Sistemas Eletrônicos I – Informação Digital - Gráfico Meios Eletrônicos.
Arquitetura de Sistemas Embarcados
Broadcasting in Brazil Octavio Penna Pieranti Director/Secretariat of Electronic Communications Ministry of Communications WIPO Meeting on South-South.
Fábrica de software princípios, conceitos, e ilusões
Computação na Nuvem e BPOS
Sistemas Microcontrolados e Programação em C Aula 12 – IO + I2C PICmicro Prof Afonso Ferreira Miguel.
Limit Equlibrium Method. Limit Equilibrium Method Failure mechanisms are often complex and cannot be modelled by single wedges with plane surfaces. Analysis.
Verilog HDL. Introduzida em 1985 pela Gateway Design System Corporation Após 1990, passou a ser de domínio público, e em 1995 passou a ser padrão IEEE.
Aula Prática 5. Fluxes (Problem 1.07) Consider the flow in a rectangular duct, formed by two paralell plates (width b=1m and height 2h= 30cm) where air.
© 2007 IBM Corporation Academic Initiative 07/05/07 Aula 2 – Parte 1: Java Basics Autores: Argemiro José de Juliano Marcos
Universidade de Brasília Laboratório de Processamento de Sinais em Arranjos 1 Adaptive & Array Signal Processing AASP Prof. Dr.-Ing. João Paulo C. Lustosa.
Universidade de Brasília Laboratório de Processamento de Sinais em Arranjos 1 Adaptive & Array Signal Processing AASP Prof. Dr.-Ing. João Paulo C. Lustosa.
About Us iVenture Inc is a technology as well as comprehensive media company that facilitates businesses, institutes and individuals by providing simplified.
Adriano Melo IDE Eclipse + Subclipse Link para download: \\cin01\scratch_astm$\eclipse.zip
Mecânica de Fluidos Ambiental 2015/2016
SISTEMA DE TRANSITIVIDADE: PARTICIPANTES PROCESSOS CIRCUNSTÂNCIAS.
Clique para editar o título Arduino seu primeiro microcontrolador PMR
Chapter 7 DC Machines Copyright © 2014 The McGraw-Hill Companies, Inc. Permission required for presentation or display 6/1/2016DC Machines1.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Abril 2016 Gabriel Mormilho Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Departamento de Administração EAD5853 Análise.
Pesquisa Operacional aplicada à Gestão de Produção e Logística Prof. Eng. Junior Buzatto Case 4.
1 Co-simulation Slides from: - Tony Givargis, Irvine, IC253 - Rabi Mahapatra, Texas A&M University - Sharif University.
Phases of Hackers. Module 1: Today’s Threat Landscape Module 2: Key Principles of Security Module 3: Understanding your enemy! Module 4: Phases of Hackers.
Digital Integrated Circuits A Design Perspective
TQS - Teste e Qualidade de Software (Software Testing and Quality) Geração Automática de Casos de Teste com a Ferramenta.
Wondershare software On the [View] menu, point to [Master], and then click [Slide Master] or [Notes Master].
Chapter Six Pipelining Harzard
Pesquisadores envolvidos Recomenda-se Arial 20 ou Times New Roman 21.
Transcrição da apresentação:

Engenharia de Sistemas Embarcados 2006.2 Projeto de Sistemas Embarcados

Engenharia de Sistemas Embarcados Introdução Processador Circuito digital que realiza tarefas computacionais Controlador e caminho de dados Propósito geral: variedade tarefas computacionais Uso específico: realiza uma tarefa em particular Customizado: tarefa não padrão Um processaodr de propósito específico customizado pode ser: Rápido, pequeno e de baixo consumo Mas, alto custo NRE, time-to-market longo, pouco flexível Microcontroller CCD preprocessor Pixel coprocessor A2D D2A JPEG codec DMA controller Memory controller ISA bus interface UART LCD ctrl Display ctrl Multiplier/Accum Digital camera chip lens CCD 2006.2 Engenharia de Sistemas Embarcados

CMOS transistor on silicon The basic electrical component in digital systems Acts as an on/off switch Voltage at “gate” controls whether current flows from source to drain Don’t confuse this “gate” with a logic gate gate source drain Conducts if gate=1 source drain oxide gate IC package IC channel Silicon substrate 1 2006.2 Engenharia de Sistemas Embarcados

Componentes combinacionais With enable input e  all O’s are 0 if e=0 With carry-in input Ci sum = A + B + Ci May have status outputs carry, zero, etc. O = I0 if S=0..00 I1 if S=0..01 … I(m-1) if S=1..11 O0 =1 if I=0..00 O1 =1 if I=0..01 O(n-1) =1 if I=1..11 sum = A+B (first n bits) carry = (n+1)’th bit of A+B less = 1 if A<B equal =1 if A=B greater=1 if A>B O = A op B op determined by S. n-bit, m x 1 Multiplexor O S0 S(log m) n I(m-1) I1 I0 log n x n Decoder O1 O0 O(n-1) I(log n -1) n-bit Adder A B sum carry Comparator less equal greater n bit, m function ALU 2006.2 Engenharia de Sistemas Embarcados

Componentes Sequenciais clear n-bit Register n load I Q shift I Q n-bit Shift register n-bit Counter n Q Q = 0 if clear=1, I if load=1 and clock=1, Q(previous) otherwise. Q = lsb - Content shifted - I stored in msb Q = 0 if clear=1, Q(prev)+1 if count=1 and clock=1. 2006.2 Engenharia de Sistemas Embarcados

Modelo Básico de Processador Customizado de Propósito Específico … a view inside the controller and datapath controller datapath state register next-state and control logic registers functional units controller and datapath controller datapath … external control inputs control outputs data outputs 2006.2 Engenharia de Sistemas Embarcados

Exemplo: Máximo divisor comum y = y -x 7: x = x - y 8: 6-J: x!=y 5: !(x!=y) x<y !(x<y) 6: 5-J: 1: 1 !1 x = x_i 3: y = y_i 4: 2: 2-J: !go_i !(!go_i) d_o = x 1-J: 9: Primeiro crie o algorítmo Converta o algorítmo para uma máquina de estados “complexa” FSMD: máquina de estados finito com datapath Templates podem ser utilizados para a conversão GCD (a) black-box view x_i y_i d_o go_i (c) state diagram (b) desired functionality 0: int x, y; 1: while (1) { 2: while (!go_i); 3: x = x_i; 4: y = y_i; 5: while (x != y) { 6: if (x < y) 7: y = y - x; else 8: x = x - y; } 9: d_o = x; 2006.2 Engenharia de Sistemas Embarcados

Criando o fluxo de dados Crie um registrador para cada variável declarada Crie uma unidade funcional para cada operação aritmética Conecte as portas, registradores e unidades funcionais Baseado em leituras e escritas Uso de multiplexadores para múltiplas fontes Crie um identificador único Para cada entrada e saída de controle dos componentes do datapath y = y -x 7: x = x - y 8: 6-J: x!=y 5: !(x!=y) x<y !(x<y) 6: 5-J: 1: 1 !1 x = x_i 3: y = y_i 4: 2: 2-J: !go_i !(!go_i) d_o = x 1-J: 9: subtractor 7: y-x 8: x-y 5: x!=y 6: x<y x_i y_i d_o 0: x 0: y 9: d n-bit 2x1 x_sel y_sel x_ld y_ld x_neq_y x_lt_y d_ld < != Datapath 2006.2 Engenharia de Sistemas Embarcados

Criando o controlador da FSM y = y -x 7: x = x - y 8: 6-J: x!=y 5: !(x!=y) x<y !(x<y) 6: 5-J: 1: 1 !1 x = x_i 3: y = y_i 4: 2: 2-J: !go_i !(!go_i) d_o = x 1-J: 9: y_sel = 1 y_ld = 1 7: x_sel = 1 x_ld = 1 8: 6-J: x_neq_y 5: !x_neq_y x_lt_y !x_lt_y 6: 5-J: d_ld = 1 1-J: 9: x_sel = 0 3: y_sel = 0 4: 1: 1 !1 2: 2-J: !go_i !(!go_i) go_i 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 Controller Mesma estrutura da FSMD Substitua ações/condições complexas por configurações do datapath subtractor 7: y-x 8: x-y 5: x!=y 6: x<y x_i y_i d_o 0: x 0: y 9: d n-bit 2x1 x_sel y_sel x_ld y_ld x_neq_y x_lt_y d_ld < != Datapath 2006.2 Engenharia de Sistemas Embarcados

Quebrando em um controlador e datapath go_i Controller implementation model y_sel x_sel Combinational logic Q3 Q0 State register go_i x_neq_y x_lt_y x_ld y_ld d_ld Q2 Q1 I3 I0 I2 I1 Controller !1 0000 1: subtractor 7: y-x 8: x-y 5: x!=y 6: x<y x_i y_i d_o 0: x 0: y 9: d n-bit 2x1 x_sel y_sel x_ld y_ld x_neq_y x_lt_y d_ld < != (b) Datapath 1 !(!go_i) 0001 2: !go_i 0010 2-J: x_sel = 0 x_ld = 1 0011 3: y_sel = 0 y_ld = 1 0100 4: x_neq_y=0 0101 5: x_neq_y=1 0110 6: x_lt_y=1 x_lt_y=0 7: y_sel = 1 y_ld = 1 8: x_sel = 1 x_ld = 1 0111 1000 1001 6-J: 1010 5-J: 1011 9: d_ld = 1 1100 1-J: 2006.2 Engenharia de Sistemas Embarcados

Processador de Propósito Geral Processador projetado para uma grande variedade de tarefas computacionais Baixo custo unitário, em parte porque o fabricante divide o custo NRE pelo grande número de unidades Motorola vendeu meio bilhão de microcontroladores 68HC05 no ano de 1996 Projetado com bastante cuidado uma vez que o alto custo NRE é aceitável Pode atingir um bom desempenho, tamanho e consumo de potência Baixo custo NRE do sistema, time-to-market/protótipo rápido, alta flexibilidade Usuário escreve apenas software; não é feito o projeto do processador 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Arquitetura Básica Unidade de Controle de Caminho de dados Similar a processador de propósito específico Principais diferenças Caminho de dados genérico Unidade de controle não armazena o algorítimo – o algorítmo é “programado” na memória Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Operações do Datapath Load Lê da memória e carrega em registrador Processor Control unit Datapath ALU Operação da ALU Lê registradores para a entrada da ALU e armazena o resultado de volta em registradores Controller +1 Control /Status Registers Store Escreve conteúdo do registrador em posição de memória 10 11 PC IR I/O ... Memory 10 11 ... 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Unidade de Controle Unidade de Controle: configura as operações do datapath “programa” – sequencia de operações desejadas (“instruções”) armazenadas na memória Ciclo de Instrução – quebrado em várias sub-operações, cada uma ocorrendo em um ciclo de relógio: Busca: buscar próxima instrução em IR Decodificação: determinar o significado da instrução Busca de operandos: mover dados da memória para registrador do datapath Execução: mover dados através da ALU Escrita de restultados: escreve dados dos registradores para a memória Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 2006.2 Engenharia de Sistemas Embarcados

Sub-operações da unidade de controle Busca Busca próxima instrução para IR PC: contador de programa, sempre aponta para a próxima instrução IR: contém a instrução buscada Processor Control unit Datapath ALU Controller Control /Status Registers PC 100 IR R0 R1 load R0, M[500] I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 2006.2 Engenharia de Sistemas Embarcados

Sub-operações da unidade de controle Decodificação Determina o significado da instrução Processor Control unit Datapath ALU Controller Control /Status Registers PC 100 IR R0 R1 load R0, M[500] I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 2006.2 Engenharia de Sistemas Embarcados

Sub-operações da unidade de controle Busca de operandos Move dados da memória para registrador do datapath Processor Control unit Datapath ALU Controller Control /Status Registers 10 PC 100 IR R0 R1 load R0, M[500] I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 2006.2 Engenharia de Sistemas Embarcados

Sub-operações da unidade de controle Execução Move dados através da ALU Esta instrução em particular não faz nada durante esta sub-operação Processor Control unit Datapath ALU Controller Control /Status Registers 10 PC 100 IR R0 R1 load R0, M[500] I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 2006.2 Engenharia de Sistemas Embarcados

Sub-operaçoes da unidade de controle Armazenagem de resultados Escreve dados do registrador para memória Esta instrução em particular não faz nada durante esta sub-operação Processor Control unit Datapath ALU Controller Control /Status Registers 10 PC 100 IR R0 R1 load R0, M[500] I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Ciclos de Instrução PC=100 Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 10 Busca ops Armz. Result. Busca load R0, M[500] Decod. Exec. clk 100 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Ciclos de Instrução PC=100 Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 Busca ops Armz results Busca Decod. Exec. clk +1 11 Exec. PC=101 Busca ops Armz results inc R1, R0 Busca Decod. clk 10 101 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Ciclos de Instrução PC=100 Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 Busca ops Armz results Busca Decod Exec. clk PC=101 Busca ops Armz results Busca Decod Exec. Decod clk 10 11 11 Armz results 102 store M[501], R1 Busca PC=102 Busca ops Exec. clk 2006.2 Engenharia de Sistemas Embarcados

Considerações de Arquitetura Processdor N-bit N-bit ALU, registradores, barramento, interface de dados da memória Embarcado: comuns 8-bit, 16-bit, 32-bit Desktop/servidores: 32-bit, 64-bit PC tamanho determina o espaço de endereçamento Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 2006.2 Engenharia de Sistemas Embarcados

Considerações de Arquitetura Frequencia de Clock Inverso do período de clock Deve ser mais longo que o atraso máximo entre registradores de todo o processador Acesso de memória é com freqüência o mais longo Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 2006.2 Engenharia de Sistemas Embarcados

Pipelining: Aumentando o Throughput de Instrução Lavagem 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Sem pipeline Com pipeline Dia 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Sem pipeline Tempo Com pipeline Tempo Busca-instr. 1 2 3 4 5 6 7 8 Decodificação 1 2 3 4 5 6 7 8 Busca ops. 1 2 3 4 5 6 7 8 Com pipeline Execução 1 2 3 4 5 6 7 8 Instruction 1 Armazenagem res. 1 2 3 4 5 6 7 8 Time Execução de instrução com pipeline 2006.2 Engenharia de Sistemas Embarcados

Arquiteturas Superscalar e VLIW Desempenho pode ser melhorado por: Clock mais rápido (mas tem um limite) Pipeline: distribuir instrução em estágios, fazer overlap dos estágios Múltiplas ALUs para suportar mais de um fluxo de instrução Superescalar Scalar: operações não vetorizadas Busca de instruções em blocos, executando tantas quanto possível Pode requerir hardware dedicado para detectar instruções independentes VLIW: cada palavra de memória contém múltiplas instruções independentes Depende do compilador para detectar e escalonar as instruções Crescendo em popularidade 2006.2 Engenharia de Sistemas Embarcados

Arquiteturas com Duas Memórias Processor Program memory Data memory Memory (program and data) Harvard Princeton Princeton Poucas conexões de memórias Harvard Acesso simultâneo a dados e programas 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Memória Cache Acesso a memória pode ser lento Cache é uma memória pequena mas é rápida e próxima ao processador Contém cópia de parte da memória Hits e misses Processor Memory Cache Tecnologia cara e rápida, usualmente no mesmo CHIP Tecnologia lenta e mais barata, usualmente em um chip diferente 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Visão do Programador Programador não precisa de entendimento detalhado da arquitetura Ao invés disso, precisa saber que instruções podem ser executadas Dois níveis de instrução Nível assembly Linguagens estruturadas (C, C++, Java, etc.) Grande parte do desenvolvimento é feito usando linguagens estruturadas Mas, algum nível de programação assembly ainda pode ser necessário Drivers: parte do programa que se comunica com e/ou controla outro dispositivo Com freqüência contém considerações detalhadas de temporização, manipulação em larga escala de bits Nível assembly pode ser melhor neste caso 2006.2 Engenharia de Sistemas Embarcados

Instruções de Nível Assembly opcode operand1 operand2 ... Instrução 1 Instrução 2 Instrução 3 Instrução 4 Conjunto de Instruções Define o conjunto válido de instruções para o processador Transferência de dados: memória/registrador, registrador/registrador, E/S, etc. Lógica/aritmética: mover registrador através da ALU e de volta para o registrador Desvios: determina o próximo valor do PC quando este não é apenas PC + 1 2006.2 Engenharia de Sistemas Embarcados

Um Conjunto Simples de Instruções Assembly instruct. Primeiro byte segundo byte Operação MOV Rn, direto 0000 Rn direto Rn = M(direto) MOV direto, Rn 0001 Rn direto M(direto) = Rn MOV @Rn, Rm 0010 Rn Rm M(Rn) = Rm MOV Rn, #immed. 0011 Rn imediato Rn = imediato ADD Rn, Rm 0100 Rn Rm Rn = Rn + Rm SUB Rn, Rm 0101 Rn Rm Rn = Rn - Rm JZ Rn, relativo 0110 Rn relativo PC = PC+ relativo (somente se Rn é 0) opcode operandos 2006.2 Engenharia de Sistemas Embarcados

Modos de Enderaçamento Dado Imediato Registrador-direto Registrador indireto Direto Indireto Campo do operando Enderço do registrador Endereço do registrador Endereço de memória Modo de Endereçamento Conteúdo do arquitvo de registradores Conteúdo da Memória 2006.2 Engenharia de Sistemas Embarcados

Programas Exemplos Tente alguns outros 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 equivalente em assembly MOV R3, #0; // constant 0 1 2 3 5 6 7 Tente alguns outros Handshake: Wait until the value of M[254] is not 0, set M[255] to 1, wait until M[254] is 0, set M[255] to 0 (assume those locations are ports). (Harder) Count the occurrences of zero in an array stored in memory locations 100 through 199. 2006.2 Engenharia de Sistemas Embarcados

Considerações do Programador Espaço de memória de dados e programa Com freqüência é limitado em processadores embarcados Ex: 64 Kbytes p/ programa, 256 bytes dados Registradores: quantos são? Preocupação direta para programadores assembly E/S Como se comunicar com sinais externos? Interrupções 2006.2 Engenharia de Sistemas Embarcados

Exemplo: Driver da Porta Paralela LPT Pino de conexão Direção de E/S Endereço do Registrador 1 saída 0th bit of register #2 2-9 14,16,17 1,2,3th bit of register #2 10,11,12,13,15 entrada 6,7,5,4,3th bit of register #1 Utilizando programação em linguagem assembly podemos configurar uma porta paralela do PC para realizar E/S digital Exemplo: a porta paralela pode ser utilizada para monitorar a entrada da chave e ligar ou desligar o LED de acordo com a entrada 2006.2 Engenharia de Sistemas Embarcados

Exemplo de Programa para a 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 proc push ax ; save the content push dx ; save the content mov dx, 3BCh + 1 ; base + 1 for register #1 in al, dx ; read register #1 and al, 10h ; mask out all but bit # 4 cmp 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 #0 in al, dx ; read the current state of the port and al, f7h ; clear first bit (masking) out dx, al ; write it out to the port jmp Done ; we are done SwitchOn: or al, 01h ; set first bit (masking) Done: pop dx ; restore the content pop ax ; restore the content CheckPort endp extern “C” CheckPort(void); // defined in // assembly void main(void) { while( 1 ) { CheckPort(); } LPT Pino de conexão Direção de E/S Endereço de Registrador 1 saída 0th bit of register #2 2-9 Saída 14,16,17 1,2,3th bit of register #2 10,11,12,13,15 entrada 6,7,5,4,3th bit of register #1 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Sistema Operacional Camada de software opcional que provê serviços de baixo nível para o programa (aplicação) Gerenciamento de arquivos, acesso a disco Interface com teclado e display Escalonamento de múltiplos programas para execução Ou até múltiplo threads em um programa Programa realiza chamadas de sistema para o SO 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 file JMP L2 -- bypass error cond. L1: . . . handle the error L2: 2006.2 Engenharia de Sistemas Embarcados

Ambiente de Desenvolvimento Processador de desenvolvimento Processador no qual escrevemos e depuramos nossos programas Usualmente um PC Processador alvo Processador no qual o programa será executado em nosso sistema embarcado Com freqüência diferente do processador de desenvolvimento Processador de desenvolvimento Processador alvo 2006.2 Engenharia de Sistemas Embarcados

Processo de Desenvolvimento de Software Compiladores Cross compiler Roda em um processador mas gera código para outro Assemblers Linkers Debuggers Profilers Compiler Linker C File Asm. File Binary File Exec. File Assembler Library Implementation Phase Debugger Profiler Verification Phase 2006.2 Engenharia de Sistemas Embarcados

Executando um programa Se o processador de desenvolvimento é diferente do processador alvo, como podemos executar o código compilado? Carregar (download) para o processador alvo simular Simulação Método 1: Hardware description language lento, nem sempre disponível Método 2: Instruction set simulator (ISS) Roda no processador de desenvolvimento, mas executa instruções do processador alvo. 2006.2 Engenharia de Sistemas Embarcados

Instruction Set Simulator de um processador simples #include <stdio.h> typedef struct { unsigned char first_byte, second_byte; } instruction; instruction program[1024]; //instruction memory unsigned 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); 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Testando e Depurando ISS Gives us control over time – set breakpoints, look at register values, set values, step-by-step execution, ... But, doesn’t interact with real environment Download to board Use device programmer Runs in real environment, but not controllable Compromise: emulator Runs in real environment, at speed or near Supports some controllability from the PC Implementation Phase Verification Phase Verification Phase Emulator Debugger/ ISS Programmer Development processor (a) (b) External tools 2006.2 Engenharia de Sistemas Embarcados

Application-Specific Instruction-Set Processors (ASIPs) Processadores de Propósito Geral Sometimes too general to be effective in demanding application e.g., video processing – requires huge video buffers and operations on large arrays of data, inefficient on a GPP But single-purpose processor has high NRE, not programmable ASIPs – targeted to a particular domain Contain architectural features specific to that domain e.g., embedded control, digital signal processing, video processing, network processing, telecommunications, etc. Still programmable 2006.2 Engenharia de Sistemas Embarcados

A Common ASIP: Microcontroller For embedded control applications Reading sensors, setting actuators Mostly dealing with events (bits): data is present, but not in huge amounts e.g., VCR, disk drive, digital camera (assuming SPP for image compression), washing machine, microwave oven Microcontroller features On-chip peripherals Timers, analog-digital converters, serial communication, etc. Tightly integrated for programmer, typically part of register space On-chip program and data memory Direct programmer access to many of the chip’s pins Specialized instructions for bit-manipulation and other low-level operations 2006.2 Engenharia de Sistemas Embarcados

Another Common ASIP: Digital Signal Processors (DSP) For signal processing applications Large amounts of digitized data, often streaming Data transformations must be applied fast e.g., cell-phone voice filter, digital TV, music synthesizer DSP features Several instruction execution units Multiple-accumulate single-cycle instruction, other instrs. Efficient vector operations – e.g., add two arrays Vector ALUs, loop buffers, etc. 2006.2 Engenharia de Sistemas Embarcados

Trend: Even More Customized ASIPs In the past, microprocessors were acquired as chips Today, we increasingly acquire a processor as Intellectual Property (IP) e.g., synthesizable VHDL model Opportunity to add a custom datapath hardware and a few custom instructions, or delete a few instructions Can have significant performance, power and size impacts Problem: need compiler/debugger for customized ASIP Remember, most development uses structured languages One solution: automatic compiler/debugger generation e.g., www.tensillica.com Another solution: retargettable compilers e.g., www.improvsys.com (customized VLIW architectures) 2006.2 Engenharia de Sistemas Embarcados

Selecting a Microprocessor Issues Technical: speed, power, size, cost Other: development environment, prior expertise, licensing, etc. Speed: how evaluate a processor’s speed? Clock speed – but instructions per cycle may differ Instructions per second – but work per instr. may differ Dhrystone: Synthetic benchmark, developed in 1984. Dhrystones/sec. MIPS: 1 MIPS = 1757 Dhrystones per second (based on Digital’s VAX 11/780). A.k.a. Dhrystone MIPS. Commonly used today. So, 750 MIPS = 750*1757 = 1,317,750 Dhrystones per second SPEC: set of more realistic benchmarks, but oriented to desktops EEMBC – EDN Embedded Benchmark Consortium, www.eembc.org Suites of benchmarks: automotive, consumer electronics, networking, office automation, telecommunications 2006.2 Engenharia de Sistemas Embarcados

General Purpose Processors Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998 2006.2 Engenharia de Sistemas Embarcados

Designing a General Purpose Processor Reset Fetch Decode IR=M[PC]; PC=PC+1 Mov1 RF[rn] = M[dir] Mov2 Mov3 Mov4 Add Sub Jz 0110 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 PC=0; from states below FSMD Not something an embedded system designer normally would do But instructive to see how simply we can build one top down Remember that real processors aren’t usually built this way Much more optimized, much more bottom-up design 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] 2006.2 Engenharia de Sistemas Embarcados

Architecture of a Simple Microprocessor Storage devices for each declared variable register file holds each of the variables Functional units to carry out the FSMD operations One ALU carries out every required operation Connections added among the components’ ports corresponding to the operations required by the FSM Unique identifiers created for every control signal Datapath IR PC Controller (Next-state and control logic; state register) Memory RF (16) RFwa RFwe RFr1a RFr1e RFr2a RFr2e RFr1 RFr2 RFw ALU ALUs 2x1 mux ALUz RFs PCld PCinc PCclr 3x1 mux Ms Mwe Mre To all input control signals From all output control signals Control unit 16 Irld 2 1 A D 2006.2 Engenharia de Sistemas Embarcados

A Simple Microprocessor Reset PC=0; PCclr=1; Datapath IR PC Controller (Next-state and control logic; state register) Memory RF (16) RFwa RFwe RFr1a RFr1e RFr2a RFr2e RFr1 RFr2 RFw ALU ALUs 2x1 mux ALUz RFs PCld PCinc PCclr 3x1 mux Ms Mwe Mre To all input control signals From all output control signals Control unit 16 Irld 2 1 A D Fetch IR=M[PC]; PC=PC+1 MS=10; Irld=1; Mre=1; PCinc=1; Decode from states below Mov1 RF[rn] = M[dir] RFwa=rn; RFwe=1; RFs=01; Ms=01; Mre=1; op = 0000 to Fetch Mov2 M[dir] = RF[rn] RFr1a=rn; RFr1e=1; Ms=01; Mwe=1; 0001 to Fetch Mov3 M[rn] = RF[rm] RFr1a=rn; RFr1e=1; Ms=10; Mwe=1; 0010 to Fetch Mov4 RF[rn]= imm RFwa=rn; RFwe=1; RFs=10; 0011 to Fetch Add RF[rn] =RF[rn]+RF[rm] RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=00 0100 to Fetch Sub RF[rn] = RF[rn]-RF[rm] RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=01 0101 to Fetch Jz PC=(RF[rn]=0) ?rel :PC PCld= ALUz; RFrla=rn; RFrle=1; 0110 to Fetch FSM operations that replace the FSMD operations after a datapath is created FSMD You just built a simple microprocessor! 2006.2 Engenharia de Sistemas Embarcados

Engenharia de Sistemas Embarcados Chapter Summary General-purpose processors Good performance, low NRE, flexible Controller, datapath, and memory Structured languages prevail But some assembly level programming still necessary Many tools available Including instruction-set simulators, and in-circuit emulators ASIPs Microcontrollers, DSPs, network processors, more customized ASIPs Choosing among processors is an important step Designing a general-purpose processor is conceptually the same as designing a single-purpose processor 2006.2 Engenharia de Sistemas Embarcados