520 likes | 649 Views
Engenharia de Sistemas Embarcados 2006.2. Projeto de Sistemas Embarcados. Digital camera chip. CCD. CCD preprocessor. Pixel coprocessor. D2A. A2D. lens. JPEG codec. Microcontroller. Multiplier/Accum. DMA controller. Display ctrl. Memory controller. ISA bus interface. UART.
E N D
Engenharia de Sistemas Embarcados 2006.2 Projeto de Sistemas Embarcados
Digital camera chip CCD CCD preprocessor Pixel coprocessor D2A A2D lens JPEG codec Microcontroller Multiplier/Accum DMA controller Display ctrl Memory controller ISA bus interface UART LCD ctrl 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 Engenharia de Sistemas Embarcados
source gate Conducts if gate=1 drain 1 gate oxide IC package IC source channel drain Silicon substrate CMOS transistor on silicon • Transistor • 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 Engenharia de Sistemas Embarcados
A B I1 I0 I(m-1) n n n … n bit, m function ALU S0 n-bit, m x 1 Multiplexor S0 … … S(log m) n S(log m) n O O O = I0 if S=0..00 I1 if S=0..01 … I(m-1) if S=1..11 less = 1 if A<B equal =1 if A=B greater=1 if A>B O = A op B op determined by S. 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 A B I0 A I(log n -1) B n n … n log n x n Decoder n-bit Adder n-bit Comparator 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. … n O(n-1) O1 O0 carry sum less equal greater Componentes combinacionais Engenharia de Sistemas Embarcados
I n load shift n-bit Register n-bit Shift register n-bit Counter clear I Q n n Q Q Componentes Sequenciais Q = lsb - Content shifted - I stored in msb Q = 0 if clear=1, I if load=1 and clock=1, Q(previous) otherwise. Q = 0 if clear=1, Q(prev)+1 if count=1 and clock=1. Engenharia de Sistemas Embarcados
… … external control inputs external data inputs controller datapath … … registers datapath control inputs next-state and control logic controller datapath datapath control outputs functional units state register … … external control outputs external data outputs … … a view inside the controller and datapath controller and datapath Modelo Básico de Processador Customizado de Propósito Específico Engenharia de Sistemas Embarcados
!1 1: (a) black-box view 1 !(!go_i) 2: !go_i x_i GCD go_i y_i 2-J: 3: x = x_i d_o 4: y = y_i !(x!=y) 5: x!=y 6: x<y !(x<y) y = y -x x = x - y 7: 8: 6-J: 5-J: d_o = x 9: 1-J: Exemplo: Máximo divisor comum • 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 (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; } Engenharia de Sistemas Embarcados
!1 1: 1 !(!go_i) 2: x_i y_i !go_i Datapath 2-J: x_sel n-bit 2x1 n-bit 2x1 3: x = x_i y_sel x_ld 0: x 0: y 4: y = y_i y_ld !(x!=y) 5: != < subtractor subtractor x!=y 5: x!=y 5: x!=y 6: x<y 8: x-y 7: y-x 6: x_neq_y x<y !(x<y) x_lt_y 9: d y = y -x x = x - y 7: 8: d_ld d_o 6-J: 5-J: d_o = x 9: 1-J: 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 Engenharia de Sistemas Embarcados
!1 go_i 1: Controller !1 1 !(!go_i) 1: 0000 2: 1 !(!go_i) 0001 2: x_i y_i !go_i !go_i Datapath 2-J: 0010 2-J: x_sel n-bit 2x1 n-bit 2x1 3: x = x_i x_sel = 0 x_ld = 1 0011 3: y_sel x_ld 0: x 0: y 4: y = y_i y_sel = 0 y_ld = 1 y_ld 0100 4: !(x!=y) 5: !x_neq_y 0101 5: != < subtractor subtractor x!=y x_neq_y 5: x!=y 5: x!=y 6: x<y 8: x-y 7: y-x 6: 0110 6: x_neq_y x<y !(x<y) x_lt_y !x_lt_y x_lt_y 9: d y = y -x x = x - y y_sel = 1 y_ld = 1 x_sel = 1 x_ld = 1 7: 8: 7: 8: d_ld 0111 1000 d_o 6-J: 1001 6-J: 5-J: 1010 5-J: d_o = x 9: d_ld = 1 1011 9: 1-J: 1100 1-J: Criando o controlador da FSM • Mesma estrutura da FSMD • Substitua ações/condições complexas por configurações do datapath Engenharia de Sistemas Embarcados
x_i y_i (b) Datapath x_sel n-bit 2x1 n-bit 2x1 y_sel x_ld 0: x 0: y y_ld != < subtractor subtractor Controller implementation model 5: x!=y 5: x!=y 6: x<y 8: x-y 7: y-x go_i x_neq_y x_sel Combinational logic y_sel x_lt_y 9: d x_ld d_ld y_ld d_o x_neq_y x_lt_y d_ld Q3 Q2 Q1 Q0 State register I3 I2 I1 I0 Quebrando em um controlador e datapath go_i Controller !1 1: 0000 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 y_sel = 1 y_ld = 1 x_sel = 1 x_ld = 1 7: 8: 0111 1000 1001 6-J: 1010 5-J: d_ld = 1 1011 9: 1100 1-J: Engenharia de Sistemas Embarcados
Processador de Propósito Geral • 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 Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller Control /Status Registers PC IR I/O Memory 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 Engenharia de Sistemas Embarcados
+1 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 Control /Status Registers • Store • Escreve conteúdo do registrador em posição de memória 10 11 PC IR I/O ... Memory 10 11 ... Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller Control /Status Registers PC IR R0 R1 I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 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 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 IR 100 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 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 IR 100 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 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 IR 100 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 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 IR 100 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 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 IR 100 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 Engenharia de Sistemas Embarcados
Processor Busca ops Armz. Result. Control unit Datapath Busca Decod. Exec. ALU Controller Control /Status Registers 10 PC 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 Ciclos de Instrução PC=100 clk 100 Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller +1 Control /Status Registers Busca ops Armz results Busca Decod. Exec. 11 PC IR R0 R1 inc R1, R0 I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 ... 102 store M[501], R1 Ciclos de Instrução PC=100 Busca ops Armz results Busca Decod. Exec. clk PC=101 clk 10 101 Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller Control /Status Registers PC IR R0 R1 store M[501], R1 Busca ops Armz results Busca Decod Exec. I/O ... Memory 100 load R0, M[500] 500 10 101 inc R1, R0 501 11 ... 102 store M[501], R1 Ciclos de Instrução PC=100 Busca ops Armz results Busca Decod Exec. clk PC=101 Busca ops Armz results Busca Decod Exec. clk 10 11 102 PC=102 clk Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller Control /Status Registers PC IR I/O Memory 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 Engenharia de Sistemas Embarcados
Processor Control unit Datapath ALU Controller Control /Status Registers PC IR I/O Memory 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 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 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 Engenharia de Sistemas Embarcados
Processor Processor Program memory Data memory Memory (program and data) Harvard Princeton Arquiteturas com Duas Memórias • Princeton • Poucas conexões de memórias • Harvard • Acesso simultâneo a dados e programas Engenharia de Sistemas Embarcados
Tecnologia cara e rápida, usualmente no mesmo CHIP Processor Cache Memory Tecnologia lenta e mais barata, usualmente em um chip diferente 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 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 Engenharia de Sistemas Embarcados
Instrução 1 opcode operand1 operand2 Instrução 2 opcode operand1 operand2 Instrução 3 opcode operand1 operand2 Instrução 4 opcode operand1 operand2 ... Instruções de Nível Assembly • 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 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 Rm MOV @Rn, Rm 0010 Rn 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 Engenharia de Sistemas Embarcados
Modo de Endereçamento Conteúdo do arquitvo de registradores Conteúdo da Memória Campo do operando Imediato Dado Registrador-direto Enderço do registrador Dado Registrador indireto Endereço do registrador Endereço de memória Dado Direto Endereço de memória Dado Indireto Endereço de memória Endereço de memória Dado Modos de Enderaçamento Engenharia de Sistemas Embarcados
Programa em C Programa equivalente em assembly 0 MOV R0, #0; // total = 0 1 MOV R1, #10; // i = 10 2 MOV R2, #1; // constant 1 int total = 0; for (int i=10; i!=0; i--) total += i; // next instructions... 3 MOV R3, #0; // constant 0 Loop: JZ R1, Next; // Done if i=0 5 ADD R0, R1; // total += i 6 SUB R1, R2; // i-- 7 JZ R3, Loop; // Jump always Next: // next instructions... Programas Exemplos • 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. 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 Engenharia de Sistemas Embarcados
LPT Pino de conexão Direção de E/S Endereço do Registrador 1 saída 0th bit of register #2 2-9 saída 0th bit of register #2 10,11,12,13,15 entrada 6,7,5,4,3th bit of register #1 14,16,17 saída 1,2,3th bit of register #2 Exemplo: Driver da Porta Paralela • 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 Engenharia de Sistemas Embarcados
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 0th bit of register #2 10,11,12,13,15 entrada 6,7,5,4,3th bit of register #1 14,16,17 saída 1,2,3th bit of register #2 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: mov dx, 3BCh + 0 ; base + 0 for register #0 in al, dx ; read the current state of the port or al, 01h ; set first bit (masking) out dx, al ; write it out to the port 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(); } } 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: 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 Engenharia de Sistemas Embarcados
Asm. File C File C File Compiler Assembler Binary File Binary File Binary File Linker Debugger Exec. File Profiler Verification Phase Implementation Phase Library Processo de Desenvolvimento de Software • Compiladores • Cross compiler • Roda em um processador mas gera código para outro • Assemblers • Linkers • Debuggers • Profilers 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. 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); } Engenharia de Sistemas Embarcados
(a) (b) Implementation Phase Implementation Phase Verification Phase Development processor Debugger/ ISS External tools Programmer Verification Phase Emulator 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 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 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 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. 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) 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 Engenharia de Sistemas Embarcados
General Purpose Processors Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998 Engenharia de Sistemas Embarcados
FSMD Reset PC=0; IR=M[PC]; PC=PC+1 Fetch Decode from states below 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] Mov1 RF[rn] = M[dir] to Fetch op = 0000 Mov2 M[dir] = RF[rn] 0001 to Fetch Mov3 M[rn] = RF[rm] 0010 to Fetch Mov4 RF[rn]= imm 0011 to Fetch Add RF[rn] =RF[rn]+RF[rm] 0100 to Fetch Sub RF[rn] = RF[rn]-RF[rm] 0101 to Fetch Jz PC=(RF[rn]=0) ?rel :PC 0110 to Fetch Designing a General Purpose Processor • 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]; Engenharia de Sistemas Embarcados
Datapath 1 Control unit 0 To all input control signals RFs 2x1 mux RFwa Controller (Next-state and control logic; state register) RF (16) RFw RFwe From all output control signals RFr1a RFr1e 16 RFr2a Irld PCld PC IR RFr1 RFr2 PCinc RFr2e ALUs PCclr ALU ALUz 2 1 0 Ms 3x1 mux Mre Mwe Memory D A 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 Engenharia de Sistemas Embarcados