Post on 23-Nov-2018
Capítulo 1 - Introdução
Prof. Romis Attux
EA075 – 2015
Obs: Os slides se baseiam, em parte, nos dos autores do livro-texto.
Sistemas Embarcados
O acesso aos computadores pessoais vem
crescendo de maneira vertiginosa nos últimos
anos, e esse crescimento tem sido reforçado
pela maior acessibilidade à internet.
Os sistemas embarcados, que formam a base de
nosso curso, não são o que classicamente
chamamos de computadores pessoais
(desktops, laptops, notebooks etc.), mas sim,
computadores que estão embutidos em outros
dispositivos.
Sistemas Embarcados
Atualmente, o número de sistemas embarcados é muito
maior que o número de “computadores clássicos”.
Esses sistemas se encontram em aplicações como
celulares, modems, câmeras, veículos, televisões etc.
Em contraste com os computadores pessoais, que são
usados para realizar múltiplas funções, os sistemas
embarcados, em geral, realizam uma função única e
bem definida.
Sistemas Embarcados
O caráter acessório desses sistemas gera uma série de restrições peculiares de projeto, como: tamanho, consumo, desempenho etc.
Também é comum que sistemas embarcados possuam restrições rígidas de resposta em tempo real, como no contexto de controle e segurança.
Internet das Coisas
Atualmente está em voga o conceito de internet das coisas, ou seja, de que haja uma ampla conectividade entre os aparelhos eletrônicos de uso comum.
Isso certamente trará muitos desafios
do ponto de vista de projeto de sistemas embarcados eficientes.
Métricas de Projeto
Uma métrica de projeto é uma característica mensurável da implementação de um sistema embarcado. Discutiremos a seguir uma série de métricas importantes.
Métricas de Projeto
NRE Cost: Nonrecurring engineering cost – custo fixo
(em dinheiro) necessário para projetar um sistema, ou
seja, um custo invariante à quantidade de unidades
produzidas.
Custo por unidade: custo de manufatura de uma
unidade (descontado o NRE).
Tamanho: medido em bytes (software) ou portas /
transistores (hardware).
Desempenho: tempo de execução do sistema.
Potência: métrica que afeta o consumo da bateria e
também influi nas necessidades de resfriamento.
Métricas de Projeto
Flexibilidade: capacidade de alterar funcionalidades do
sistema sem incorrer em NRE expressivo.
Time-to-Prototype (TTP): Tempo necessário para se
projetar uma versão funcional do sistema, que pode ser
maior que o tempo de construção na linha final, mas
que serve para testar a adequação da idéia realizada.
Time-to-Market (TTM): Tempo necessário até que se
possa fazer o produto chegar aos consumidores.
Envolve o tempo de projeto, manufatura e teste.
Métricas de Projeto
Capacidade de manutenção: possibilidade de modificar o sistema após o lançamento, especialmente por quem não o projetou.
Correção: confiança de que o sistema realizará aquilo que é a sua meta.
Segurança: a probabilidade de que o sistema não causará danos.
Conflitos
Essas métricas são tipicamente conflitantes, o que quer dizer que o projeto de um sistema embarcado é uma tarefa multiobjetivo.
É preciso analisar cada situação e
buscar um projeto eficiente, que priorize o que é mais relevante e que não seja dominado por um design ainda mais apropriado.
TTM
O tempo até o lançamento de um produto no mercado (TTM) é uma métrica que pode ser crucial para o êxito ou o fracasso do projeto como um todo.
Há janelas de oportunidade muito
bem definidas, e a perda da ocasião propícia pode levar a severos prejuízos.
Exemplo Simples – Entrada
com Atraso no Mercado
On-time Delayed
entry entry
Peak revenue
Peak revenue from
delayed entry
Market rise Market fall
W 2W
Time
D
On-time
Delayed Reve
nu
es (
$)
Exemplo Simples – Entrada
com Atraso no Mercado Vamos supor que a subida se dê a 45 graus e que a
área dos triângulos forneça o ganho financeiro
associado.
Para o triângulo que representa uma entrada no
mercado no “tempo certo”, a área é W2.
O outro triângulo, que representa uma entrada com
atraso D, tem área igual a 0,5*(2W – D)*(W – D).
Fazendo uma diferença e normalizando pelo retorno do
primeiro caso, obtemos uma perda percentual igual a:
(D(3W – D)/2W2)*100%
Exemplo Simples – Entrada
com Atraso no Mercado Se o tempo de vida for de 52
semanas, teremos W = 26. Se houver um atraso de 4 semanas, a perda será de 22% e, se for de 10 semanas, a perda será de 50%.
Isso ilustra bem o quanto o “fator
tempo” pode ser determinante no projeto de um sistema embarcado.
NRE e Custo por Unidade
Vamos analisar um pouco o efeito do NRE e do custo por unidade (U).
Suponhamos três casos: NRE = 2000 e U = 100, NRE = 30000 e U = 30, NRE = 100000 e U = 2.
O custo total é NRE + U*(no. de unidades).
A opção mais vantajosa depende, portanto, do número de unidades vendidas. As curvas a seguir ilustram isso.
NRE e Custo por Unidade
$0
$40,000
$80,000
$120,000
$160,000
$200,000
0 800 1600 2400
A
B
C
$0
$40
$80
$120
$160
$200
0 800 1600 2400
Number of units (volume)
A
B
C
Number of units (volume)
tota
l c
ost
(x1
00
0)
pe
r p
rod
uc
t c
ost
Métricas de Desempenho
Construído o produto, é possível avaliá-lo de diferentes perspectivas de desempenho.
Um ponto essencial é saber quanto tempo o sistema leva para desempenhar a operação para a qual foi projetado.
Podemos imaginar que isso é dado diretamente por grandezas como a taxa de clock ou o número de instruções executadas por segundo, mas isso não é verdade, pois há aspectos de arquitetura que devem ser levados em conta (veremos isso no curso).
Métricas de Desempenho
Latência ou tempo de resposta: o tempo entre o
início da execução da tarefa e sua conclusão. Por
exemplo, processar uma imagem pode levar
0,1 s.
Vazão: Número de tarefas por unidade de tempo. É
afetada pelo grau de paralelismo do sistema.
Speedup: Para comparar dois sistemas, podemos
analisar o fator de speedup, que é a razão entre seus
desempenhos.
Tecnologias
Discutiremos aqui três aspectos tecnológicos principais: ◦ Tecnologia dos processadores
◦ Tecnologia dos circuitos integrados
◦ Tecnologia de projeto
Tecnologia de Processadores
Falaremos de processadores de propósito geral, processadores de propósito único e processadores específicos de uma aplicação.
total = 0
for i = 1 to N loop
total += M[i]
end loop
Processadores de Propósito
Geral Processadores de propósito geral
embutem a idéia de programa armazenado, e são capazes de realizar uma ampla gama de tarefas dependendo do software neles executado.
Para tanto, o caminho de dados (datapath) deve ser bastante geral, sendo capaz de executar diversas instruções.
Processadores de Propósito
Geral O projeto de um sistema embarcado num sistema desse tipo
muitas vezes se resume à confecção do software apropriado.
Isso leva a um baixo NRE, a uma alta flexibilidade, a um
custo por unidade relativamente baixo em pequenas
quantidades e a uma performance expressiva se
processadores adequados forem usados.
No entanto, o custo por unidade pode ser alto para
quantidades maiores e a performance pode não ser boa se
não houver um bom casamento com as funcionalidades do
processador. O tamanho e o consumo também podem ser
elevados.
Processadores de Propósito
Geral
IR PC
Register
file
General
ALU
Datapath Controller
Program
memory
Assembly
code for:
total = 0
for i =1 to …
Control
logic and
State
register
Data
memory
Processadores Específicos de
uma Aplicação (ASIPs) ASIPs são variações dos processadores
gerais que vimos que os tornam mais adequados à realização de determinadas tarefas.
Essas tarefas podem se ligar a contextos como processamento de sinais e controle, por exemplo.
No primeiro caso, podemos citar os DSPs, altamente otimizados para realizar operações ligadas a processos como filtragem ou cálculo de transformadas de Fourier.
ASIPs
Por outro lado, temos os chamados microcontroladores, que possuem diversas facilidades para gerar sinais de controle, temporizar e atuar.
Possíveis vantagens: flexibilidade com bom tamanho, consumo e desempenho. Porém, podem ter custo NRE alto e custo alto associado à geração de compiladores eficientes.
Na figura a seguir, temos um esquema que mostra as peculiaridades de um ASIP.
Processadores de Propósito
Único São basicamente circuitos lógicos
projetados para realizar uma única função.
As principais vantagens seriam alta performance, baixo consumo, baixo custo por unidade para altas quantidades. Por outro lado, pode haver alto custo NRE, a flexibilidade deve ser baixa, o custo pode ser alto para poucas unidades e o desempenho pode não ser equivalente ao de um processador de propósito geral em alguns casos.
Processadores de Propósito
Único Note que não há uma memória
propriamente – a unidade de controle é fixa, como numa máquina de Turing específica.
A unidade de controle é, de certa forma, uma máquina de estados que vai pulsando e gerando os sinais de controle necessários.
Circuitos Integrados
Circuitos integrados (também chamados de chips) são dispositivos semicondutores que contêm uma enorme quantidade de transistores e outros elementos conectados.
Existem vários processos para construir CIs, mas, atualmente, a tecnologia CMOS é dominante.
Camadas
CIs são criados por camadas. A camada mais baixa é formada pelos transistores.
As camadas do meio formas os componentes lógicos.
As camadas superiores interligam os componentes lógicos.
A criação dessas camadas envolve processos de deposição química controlados por máscaras cuidadosamente projetadas (formando um layout).
Customização Plena (Full
Custom) Nesse caso, otimizam-se todas as camadas do circuito
integrado que vai realizar o papel de sistema
embarcado.
Otimizações: posição dos transistores para minimizar o
comprimento das conexões, direcionamento de fios etc.
Feitas as otimizações, fazem-se as máscaras e elas
são enviadas a um fabricante.
VLSI – alto custo NRE, alto tempo de construção,
possivelmente uma excelente performance e um
consumo pequeno. Usado só em casos em que
métricas de performance e alto volume são cruciais.
Customização Parcial (ASIC)
Quando se lida com um application-specific IC (ASIC), as camadas inferiores já estão total ou parcialmente construídas e se deve apenas concluir o projeto das conexões das portas.
ASICs são a tecnologia mais popular, pois permitem bom desempenho e tamanho sem um custo NRE tão alto.
Mas ainda exigem um tempo relativamente alto até o mercado.
PLD
Num programmable logic device (PLD), todas as camadas já
existem.
Elas formam um circuito programável, ou seja, as conexões
entre elementos podem ser criadas a posteriori pelo usuário.
Um exemplo disso são os FPGAs (Field Programmable Gate
Arrays), que podem ser programados eletronicamente via
software.
PLDs tem custo NRE baixo e disponibilidade temporal
excelente. Por outro lado, podem ser grandes, ter um alto
custo por unidade, consumir mais potência e ser mais lentos.
São muito usados para prototipagem.
Tendências
Uma tendência que vem se verificando (até certo ponto) é que o número de transistores nos chips vem dobrando, grosso modo, a cada 18 meses.
Essa é a chamada lei de Moore, batizada em homenagem a Gordon Moore, da Intel, que a cunhou.
Tecnologia de Projeto
Tipicamente, pensa-se num esquema top-down de projeto, com várias camadas de abstração:
◦ Especificação do sistema
◦ Especificação comportamental
◦ Especificação no nível de transferência de registradores (assembly ou máquina de estados + registradores)
◦ Especificação lógica – nível booleano
Tecnologia de Projeto
Compilação / Síntese: permite ao projetista especificar
a funcionalidade em alto nível e gera os detalhes de
nível mais baixo automaticamente.
Bibliotecas: permitem o reuso de soluções pré-
existentes. Podem ser muito útil se o reuso se encaixar
bem no projeto.
Teste e verificação: envolve garantir que a
funcionalidade está correta – evita tarefas de debug em
níveis mais baixos e a necessidade de refazer níveis
mais altos. Um exemplo são simuladores que geram
formas de onda para determinado design.
Compromissos (Trade-offs)
Projeto de sistemas embarcados: encontrar um compromisso entre métricas conflitantes.
O bom projetista deve ser erudito em sua área.
Atualmente, o projetista de hardware, por exemplo, pode ter de trabalhar com software em diferentes níveis (na programação de um sistema FPGA ou escrevendo código para um processador de propósito geral).
Co-Design Hardware / Software
Isso nos leva a perceber que, no fundo, encontrar o compromisso entre métricas relevantes leva a um balanço entre a escolha de hardware ou software numa etapa de projeto.
O “melhor dos mundos” é ter um design conjunto em ambos os campos, já que a otimização multiobjetivo a realizar é complexa.
Esse é o conceito de co-design hardware / software.
Escada do Co-Design
Implementation
Assembly instructions
Machine instructions
Register transfers
Compilers
(1960's,1970's)
Assemblers, linkers
(1950's, 1960's)
Behavioral synthesis
(1990's)
RT synthesis
(1980's, 1990's)
Logic synthesis
(1970's, 1980's)
Microprocessor plus program
bits: “software” VLSI, ASIC, or PLD
implementation: “hardware”
Logic gates
Logic equations / FSM's
Sequential program code (e.g., C, VHDL)
Escolhas...
General-
purpose
processor
ASIP Single-
purpose
processor
Semi-custom PLD Full-custom
General,
providing improved:
Customized,
providing improved:
Power efficiency
Performance
Size
Cost (high volume)
Flexibility
Maintainability
NRE cost
Time- to-prototype
Time-to-market
Cost (low volume)
Gap Design / Produtividade
Apesar de a produtividade dos projetistas ter
aumentado muito, ela não acompanha o
desenvolvimento dos chips.
Em 1981, um chip de primeira linha exigia 100
projetistas-mês para ser projetado, considerando-se
100 transistores / projetista – mês.
Em 2002, um chip de ponta exigiria 30000 projetistas-
mês, supondo 5000 transistores / projetista-mês.
Supondo que o custo por projetista-mês seja de US$
10000,00, isso significa que houve um salto da ordem
de um milhão para trezentos milhões de dólares!
Gap Design / Produtividade
10,000
1,000
100
10
1
0.1
0.01
0.001
Logic transistors
per chip
(in millions)
100,000
10,000
1000
100
10
1
0.1
0.01
Productivity
(K) Trans./Staff-Mo. IC capacity
productivity
Gap
Mito do Projetista-Mês
A situação é ainda mais complicada, pois estamos supondo que o aumento do tamanho da equipe não afete a produtividade, o que não é real.
Há dificuldades de organização, comunicação etc.
Mito do Projetista-Mês
Suponhamos um projeto de 1000000 de transistores. Um projetista o completaria em 1000000/5000 = 200 meses.
No entanto, 10 projetistas poderiam levar 1000000/41000 = 24,3 meses se supuséssemos que um projetista a mais reduz em 100 transistores a produtividade individual.
Com 25 projetistas, teríamos 15,3 meses, mas, com 26, teríamos 15,4 meses!