fernando nicodemos ita
TRANSCRIPT
-
8/18/2019 Fernando Nicodemos ITA
1/109
-
8/18/2019 Fernando Nicodemos ITA
2/109
Dados Internacionais de Catalogação-na-Publicação (CIP) Divisão Biblioteca Central do ITA/CTA
Nicodemos, Fernando GarciaAnálise de Desempenho de Processadores Embarcados para Controladores Lógicos Programáveis / Fernando
Garcia Nicodemos.
São José dos Campos, 2007.108f.
Tese de mestrado – Curso de Engenharia Eletrônica e Computação. Área de Dispositivos e SistemasEletrônicos – Instituto Tecnológico de Aeronáutica, 2007. Orientador: Prof. Dr. Osamu Saotome.
1. Processadores Embarcados. 2. Análise de Desempenho. 3. Controladores Lógicos Programáveis. I. CentroTécnico Aeroespacial. Instituto Tecnológico de Aeronáutica. Divisão de Engenharia Eletrônica e Computação.II.Título.
REFERÊNCIA BIBLIOGRÁFICA
NICODEMOS, Fernando Garcia. Análise de Desempenho de Processadores Embarcadospara Controladores Lógicos Programáveis. 2007. 108f. Tese de mestrado – InstitutoTecnológico de Aeronáutica, São José dos Campos.
CESSÃO DE DIREITOS
NOME DO AUTOR : Fernando Garcia NicodemosTÍTULO DO TRABALHO: Análise de Desempenho de Processadores Embarcados paraControladores Lógicos ProgramáveisTIPO DO TRABALHO/ANO: Tese / 2007
É concedida ao Instituto Tecnológico de Aeronáutica permissão para reproduzir cópias destatese e para emprestar ou vender cópias somente para propósitos acadêmicos e científicos. Oautor reserva outros direitos de publicação e nenhuma parte desta tese pode ser reproduzidasem a sua autorização (do autor).
___________________________Fernando Garcia NicodemosRua Coronel Agostinho da Fonseca, 270 – Serra da Cantareira02340-050 – São Paulo – SP
-
8/18/2019 Fernando Nicodemos ITA
3/109
iii
Análise de Desempenho de Processadores Embarcados para
Controladores Lógicos Programáveis
Fernando Garcia Nicodemos
Composição da Banca Examinadora:
Prof. Dr. Roberto d’Amore Presidente - ITA
Prof. Dr. Osamu Saotome Orientador - ITA
Prof. Dra. Emília Villani Membro Interno - ITA
Prof. Dr. Duarte Lopes de Oliveira Membro Interno - ITA
Prof. Dr. Paulo Eigi Miyagi Membro Externo - USP
Prof. Dr. Renato C. Giacomini Membro Externo - FEI (Suplente)
ITA
-
8/18/2019 Fernando Nicodemos ITA
4/109
iv
Agradecimentos
Agradeço e dedico esta tese, acima de tudo, aos meus pais e irmão que sempre me
deram apoio e incentivo aos estudos, principalmente na escolha pela área acadêmica e de
pesquisa aplicada ao desenvolvimento de projetos. Sem eles nada teria sentido.
Agradeço o apoio prestado pelas empresas Atos, Alphatech, Daruma e Nishicom no
estudo e aplicação das tecnologias utilizadas nesta avaliação.
Reconheço o esforço do meu orientador Prof. Dr. Osamu Saotome, agradecendo a
ele meu desenvolvimento profissional além da sua dedicação e apoio para que esta tese
pudesse ser realizada da melhor maneira possível.
Agradeço com muito orgulho aos meus amigos Prof. Aguinaldo Prandini Ricieri e
Prof. Dr. Renato Giacomini pelo incentivo e apoio para o início dos estudos no curso de
pós-graduação do ITA.
Agradeço a Fundação Casimiro Montenegro Filho e seus funcionários pelo espaço e
equipamentos cedidos para a realização dos testes práticos desta tese.
Finalizando, este prazeroso trabalho é dedicado aos demais professores e amigos que
trabalharam e estudaram comigo e que inúmeras vezes contribuíram para a solução das
dificuldades encontradas.
-
8/18/2019 Fernando Nicodemos ITA
5/109
v
“Quum enim Mundi Universi fabrica sit perfectissima,
atque a Creatore sapientissimo absoluta,
nihil omnimo in Mundo contingit in quo non Maximi Minimive ratio quaepiam eluceat;quamobrem dubium prorsus est nullum quim omnes Mundi...
Methodi Maximorum et Minimorum.”
“Por ser a criação do Universo perfeitíssima,
e sendo trabalho do mais sábio criador,
absolutamente nada acontece sem que apareça uma relação de Máximo e Mínimo;
conseqüentemente, não existe nenhuma dúvida
de que todo efeito no universo possa ser explicado satisfatoriamente...
com a ajuda do Método dos Máximos e Mínimos.”
Leonhard Euler – Methodus Inveniendi (Método de Descobrir 1744)
-
8/18/2019 Fernando Nicodemos ITA
6/109
vi
Resumo
Atualmente, existem disponíveis processadores embarcados de diferentes procedências
e tecnologias, incorporando em suas arquiteturas, memória cache e pipeline, além de
otimizações por compilador. As alternativas incluem desde microcontroladores de 8 bits até
processadores de 16 e 32 bits que custam entre uma faixa de preço de até US$10 dólares.
Nesse contexto, a grande variedade de soluções em nível de arquitetura torna relevante a
identificação de métodos apropriados para medir o desempenho de um processador, tomando
por base de comparação a CPU (Central Processing Unit ) de um CLP (Controlador Lógico
Programável). Este trabalho procura preencher essa lacuna e tem como objetivo principal a
avaliação de processadores embarcados que possam ser utilizados em novos projetos de
sistemas no campo da automação de processos industriais. Nesta tese, será introduzido o
princípio de funcionamento do CLP, seguido de conceitos e métodos relativos à avaliação de
desempenho em sistemas microprocessados. Será discutida a métrica apresentada pelos
fabricantes de CLP para fornecer o desempenho das suas CPUs. A partir do estudo estatístico
em programas ladder com aplicações reais, é definida uma carga de trabalho padrão
consistindo de um programa em linguagem ladder utilizado como fundamento na criação de
um benchmark sintético para a avaliação do desempenho dos processadores em estudo.
Finalmente, são apresentados os resultados para três sistemas utilizando processadores com
arquiteturas diferenciadas e as razões que propiciaram o aumento de desempenho com relação
ao processador utilizado na CPU tomada como referência comparativa.
-
8/18/2019 Fernando Nicodemos ITA
7/109
vii
Abstract
Currently, embedded processors are available from different origins and technologies,
including in its architectures, cache memory and pipeline, beyond compiler optimizations.
The choices include from 8-bit micro-controllers to 16 and 32-bit processors that fit in a price
range of ten US dollars. In this context, the broad range of solutions at architecture level
makes important the identification of proper methods to measure the performance of a
processor, taking as a comparative base the CPU (Central Processing Unit) of a PLC
(Programmable Logic Controller). This work attempts to fill this gap and its main goal is the
evaluation of embedded processors that can be used in new system designs in the field of the
industry processes automation. In this thesis, it will be introduced the principles of the PLC
operation, followed by concepts and methods related to the performance evaluation in micro-
processed systems. The metric presented by the PLC manufacturers to provide the
performance of its CPU’s will be discussed. From the statistical study in ladder programs with
real aplications, it is defined a default workload consisting of a program described in the
ladder language used as the foundation to create a synthetic benchmark to evaluate the
performance of the processors under study. Finally, are reported the performance results for
three systems using processors with different architectures and the reasons that they reach a
performance improvement based on the processor used in the CPU taken as a comparative
reference.
-
8/18/2019 Fernando Nicodemos ITA
8/109
viii
Lista de Ilustrações
Figura 2.1: Controle Analógico [4]......................................................................................................................19 Figura 2.2: Controle Digital [4]. ..........................................................................................................................19
Figura 2.3: Ciclo de varredura executado pelo programa executivo [3]. ........................................................25
Figura 2.4: Diagrama em blocos de um CLP genérico [3]. ...............................................................................26
Figura 2.5: Mapa genérico do sistema de memória de um CLP [3].................................................................28
Figura 2.6: Trecho de programa nas quatro principais linguagens [3]...........................................................30
Figura 3.1: Crescimento na taxa do desempenho relativo dos microprocessadores medido pelos conjuntos
de benchmarks para inteiros SPECint, com base unitária correspondente a um VAX 11/780 e
crescimento na taxa do desempenho relativo baseado em avanços na tecnologia dos
semicondutores[1]........................................................................................................................................33
Figura 5.1: Figura ilustrativa dos tempos de execução de 3 fabricantes distintos..........................................61
Figura 5.2: Linha do programa ladder definido como carga de trabalho padrão. .........................................62
Figura 5.3: Fluxograma da execução do benchmark sintético. .........................................................................65
Figura 5.4: Medição do tempo de execução com o auxílio do osciloscópio......................................................66
Figura 6.1: Diagrama em blocos do microcontrolador XA-G30 [7].................................................................68
Figura 6.2: Diagrama em blocos do núcleo do microcontrolador XA-G30 [7]. ..............................................69
Figura 6.3: Tempo de execução do programa ladder no sistema de referência. .............................................70
Figura 6.4: Diagrama em blocos do microprocessador eZ80190 [8]................................................................73 Figura 6.5: Diagrama simplificado do núcleo do microprocessador eZ80190 [8]. .........................................74
Figura 6.6: Tempo de execução do microprocessador eZ80190 – benchmark sintético desenvolvido em
linguagem C e compilação no modo debug. ..............................................................................................76
Figura 6.7: Diagrama em blocos do processador digital de sinais ADSP-2181 [9].........................................81
Figura 6.8: Diagrama em blocos do núcleo e periféricos do ADSP-2181 [9]...................................................82
Figura 6.9: Tempo de execução do processador digital de sinais ADSP-2181 – benchmark sintético
desenvolvido em linguagem C e compilação no modo debug. .................................................................84
Figura 6.10: Diagrama em blocos do processador ADSP-BF533 [10]. ............................................................88
Figura 6.11: Diagrama em blocos do núcleo do processador ADSP-BF533 [10]............................................89 Figura 6.12: Tempo de execução do processador embarcado ADSP-BF533 – benchmark sintético
desenvolvido em linguagem C e compilação no modo debug. .................................................................93
Figura 7.1: Desempenhos relativos ao microcontrolador XA-G30 para o código gerado pelo compilador e
para o código gerado manualmente (modo debug de compilação). ......................................................100
Figura 7.2: Desempenhos relativos ao microcontrolador XA-G30 para o código gerado pelo compilador e
para o código gerado manualmente (modo release de compilação)......................................................101
-
8/18/2019 Fernando Nicodemos ITA
9/109
ix
Lista de Tabelas
Tabela 3.1: Modelo de relatório para o fornecimento de resultados................................................................44 Tabela 4.1: Conjunto de instruções ladder. ........................................................................................................47
Tabela 4.2: Conjunto de instruções ladder (continuação). ................................................................................48
Tabela 4.3: Contagem de instruções ladder no grupo de programas pequenos..............................................49
Tabela 4.4: Contagem de instruções ladder no grupo de programas pequenos (continuação)......................50
Tabela 4.5: Contagem de instruções ladder no grupo de programas pequenos (continuação)......................51
Tabela 4.6: Contagem de instruções ladder no grupo de programas médios..................................................52
Tabela 4.7: Contagem de instruções ladder no grupo de programas médios (continuação)..........................53
Tabela 4.8: Contagem de instruções ladder no grupo de programas grandes.................................................54
Tabela 4.9: Contagem de instruções ladder no grupo de programas grandes (continuação). .......................55
Tabela 4.10: Resultado total da contagem final. ................................................................................................56
Tabela 4.11: Contagem final das instruções ladder............................................................................................56
Tabela 4.12: Contagem final das instruções ladder (continuação). ..................................................................57
Tabela 4.13: Contagem final das instruções ladder (continuação). ..................................................................58
Tabela 6.1: Relatório para o sistema de referência. ..........................................................................................71
Tabela 6.2: Resumo de configurações do sistema para análise do eZ80190....................................................75
Tabela 6.3: Tempos de execução segundo configurações do sistema para o eZ80190....................................77
Tabela 6.4: Relatório de desempenho do sistema para o microprocessador eZ80190. ..................................78 Tabela 6.5: Relatório de desempenho do sistema para o microprocessador eZ80190 (continuação)...........79
Tabela 6.6: Resumo da configuração do sistema para análise do ADSP-2181................................................83
Tabela 6.7: Tempos de execução segundo configuração do sistema para o ADSP-2181................................84
Tabela 6.8: Relatório de desempenho do sistema para o DSP ADSP-2181. ....................................................85
Tabela 6.9: Resumo de configurações do sistema para análise do ADSP-BF533. ..........................................91
Tabela 6.10: Tempos de execução segundo configurações do sistema para o ADSP-BF533. ........................94
Tabela 6.11: Relatório de desempenho do sistema para o ADSP-BF533.........................................................95
Tabela 6.12: Relatório de desempenho do sistema para o ADSP-BF533 (continuação). ...............................96
-
8/18/2019 Fernando Nicodemos ITA
10/109
x
Sumário
1 Introdução ............................................................................................................. 12
2 Controlador Lógico Programável .......................................................................18
2.1 Tipos de processos industriais.............................................................................................................18
2.2 Evolução histórica do controle digital ................................................................................................20
2.3 Principais definições ...........................................................................................................................22
2.4 Princípio de funcionamento.................................................................................................................23
2.5 Elementos do hardware .......................................................................................................................25 2.5.1 A CPU.............................................................................................................................................26
2.5.1.1 Processador............................................................................................................................26 2.5.1.2 Sistema de memória ..............................................................................................................27
2.5.2 Interfaces de entrada e saída ...........................................................................................................28 2.5.2.1 Entradas e saídas analógicas..................................................................................................29 2.5.2.2 Entradas e saídas digitais.......................................................................................................29
2.6 Linguagens de programação...............................................................................................................29
3 Fundamentos da análise de desempenho de sistemas embarcados ..................32
3.1 Evolução do desempenho dos processadores......................................................................................32
3.2 Evolução da informática......................................................................................................................34 3.2.1 Desktops..........................................................................................................................................35 3.2.2 Servidores .......................................................................................................................................35 3.2.3 Sistemas embarcados ......................................................................................................................36
3.3 Medida de desempenho para sistemas embarcados............................................................................37
3.4 Métodos de análise de desempenho.....................................................................................................38 3.4.1 Pacote integrado de benchmarks.....................................................................................................38 3.4.2 Benchmarks para sistemas embarcados ..........................................................................................39 3.4.3 Programas benchmarks ...................................................................................................................40
3.5 Abordagens para a criação de benchmarks ........................................................................................42
3.6 Relatório de apresentação do desempenho .........................................................................................44
4 Análise estatística em programas ladder reais ...................................................45 4.1 Programas reais em linguagem ladder ...............................................................................................45
4.1.1 Nomenclatura adotada para a análise..............................................................................................45 4.1.2 Critério de contagem.......................................................................................................................46
4.2 Conjunto de instruções ladder.............................................................................................................46
4.3 Classificação dos programas ..............................................................................................................49 4.3.1 Programas ladder pequenos............................................................................................................49 4.3.2 Programas ladder médios ...............................................................................................................51 4.3.3 Programas ladder grandes...............................................................................................................53
4.4 Resultado estatístico total....................................................................................................................56
5 Parâmetros de desempenho nos CLPs................................................................ 60 5.1 Apresentação de medidas nos CLPs....................................................................................................60
5.2 Carga de trabalho padrão...................................................................................................................61
-
8/18/2019 Fernando Nicodemos ITA
11/109
xi
5.2.1 Instrução ladder de entrada (LD)....................................................................................................62 5.2.2 Instrução ladder de saída (OUT) ....................................................................................................62 5.2.3 Regiões de memória para o programa ladder e para o benchmark sintético ..................................63 5.2.4 Princípio de operação do benchmark sintético ...............................................................................64
5.3
Medida física do tempo de execução...................................................................................................65
6 Arquitetura dos processadores estudados e resultados obtidos ....................... 67
6.1 Microcontrolador XA-G30 ..................................................................................................................67 6.1.1 Arquitetura do núcleo do microcontrolador XA-G30.....................................................................68 6.1.2 Metodologia para aquisição do tempo de execução do sistema de referência................................69 6.1.3 Resultado do sistema de referência.................................................................................................70 6.1.4 Relatório do sistema de referência..................................................................................................71
6.2 Microprocessador eZ80190.................................................................................................................72 6.2.1 Arquitetura do núcleo do microprocessador eZ80190....................................................................73 6.2.2 Metodologia de medição do tempo de execução do eZ80190 no sistema......................................74 6.2.3 Resultados da avaliação do sistema para o eZ80190......................................................................76
6.2.4 Relatório de desempenho do sistema para o eZ80190....................................................................77 6.2.5 Desempenho relativo do microprocessador eZ80190.....................................................................79
6.3 Processador de Sinais Digitais ADSP-2181........................................................................................80 6.3.1 Arquitetura do núcleo do processador digital de sinais ADSP-2181..............................................81 6.3.2 Metodologia de medição do tempo de execução do ADSP-2181 no sistema.................................82 6.3.3 Resultados da avaliação do sistema para o ADSP-2181.................................................................83 6.3.4 Relatório de desempenho do sistema para o ADSP-2181...............................................................85 6.3.5 Desempenho relativo do processador digital de sinais ADSP-2181...............................................86
6.4 Processador embarcado ADSP-BF533 ...............................................................................................87 6.4.1 Arquitetura do núcleo do processador embarcado ADSP-BF533 ..................................................88 6.4.2 Metodologia de medição do tempo de execução do ADSP-BF533 no sistema..............................90 6.4.3 Resultados da avaliação do sistema para o ADSP-BF533..............................................................92
6.4.4 Relatório de desempenho do sistema para o ADSP-BF533............................................................94 6.4.5 Desempenho relativo do processador embarcado ADSP-BF533 ...................................................96
7 Conclusão .............................................................................................................. 98
7.1 Trabalhos futuros...............................................................................................................................107
Referências .................................................................................................................. 108
-
8/18/2019 Fernando Nicodemos ITA
12/109
12
1 Introdução
Produtos mais competitivos e de maior qualidade figuram entre os maiores objetivos
da indústria moderna. Grande parte delas tem buscado máquinas de alto nível tecnológico,
sendo que em muitos desses casos, a implementação de processos mais complexos se torna
uma solução inevitável. Para a automatização desses processos, cada vez mais são utilizados
sistemas de controle digital conhecidos como Controladores Lógicos Programáveis (CLP ou
em inglês – Programmable Logic Controller – PLC ).
Atualmente, existem disponíveis processadores embarcados de diferentes procedências
e tecnologias a custos acessíveis que ganharam destaque ao incorporar em suas arquiteturas as
tecnologias de memória cache e pipeline. Estes incluem desde microcontroladores de 8 bits
para aplicações simples que podem custar menos de US$1,00 dólar até processadores de 16 e
32 bits capazes de executar 100 milhões de instruções por segundo, utilizados em aplicações
mais complexas e que custam menos de US$10,00 dólares. Neste trabalho são considerados
apenas os processadores na faixa de preço mencionada e aplicáveis aos CLPs.
A multiplicidade de opções e a necessidade de avaliar soluções baseadas em diferentes
arquiteturas, muitas vezes de difícil comparação, torna essencial o trabalho de investigar uma
forma de medida de desempenho adequada à capacidade de processamento dos processadores
embarcáveis em uma CPU (Central Processing Unit ) de um CLP. Inicialmente, foi realizada
uma pesquisa referencial aprofundada para identificar métodos apropriados para a avaliação
do desempenho de processadores. Para aplicações embarcadas que podem ser bem
caracterizadas pelo desempenho de um kernel, a avaliação pode contar com um conjunto
padrão de benchmarks conhecido como EEMBC ( EDN Embedded Microprocessor
Benchmark Consortium). O conjunto é subdividido em 6 classes: automotiva/industrial,
consumidor, telecomunicações, entretenimento digital, redes de comunicação e automação em
-
8/18/2019 Fernando Nicodemos ITA
13/109
13
escritórios. Pelo fato de usarem kernels e pelas opções restritas de fornecimento dos
resultados, os benchmarks EEMBC não possuem a reputação de serem bons medidores de
desempenho relativo entre diferentes sistemas. O programa sintético Dhrystone, na qual o
EEMBC tenta substituir, ainda é utilizado para fornecer resultados de desempenho em
algumas aplicações embarcadas [2]. Neste contexto, a utilização dos benchmarks EEMBC não
é totalmente adequada a este trabalho principalmente pelo fato de não operar com ênfase
funcional e estruturada na linguagem ladder , a mais usada para desenvolver programas
aplicativos em CLPs no mercado brasileiro, além do fato de ser uma medida de desempenho
fechada e de alto custo.
Como alternativa, estão disponíveis programas benchmarks conceituados em cinco
diferentes níveis listados em ordem de precisão e exatidão de predição de desempenho. São
apresentados como: aplicações reais, aplicações modificadas (ou scripts), kernels, toy
benchmarks e benchmarks sintéticos [1]. Estes são adequados para a avaliação de
desempenho deste trabalho, pois além da possibilidade de serem estruturados e moldados com
base na linguagem ladder , são programas que podem ser utilizados de acordo com seu tipo e
sua definição ao objetivo desta proposta.
O presente trabalho procura preencher essa lacuna utilizando-se da disponibilidade
desses programas e tem como objetivo principal a avaliação criteriosa do desempenho de
processadores embarcados a serem utilizados em novos projetos de sistemas que atendam àcrescente demanda no campo da automação de processos industriais. Essa avaliação é
proposta como um meio de atender ao requisito de aumento de desempenho baseado em uma
solução em nível de arquitetura proposta para o projeto de uma nova CPU para um fabricante
de CLP.
São abordadas as definições e princípio de funcionamento do CLP, tendo como foco
principal, o controle de processos com variáveis do tipo digital. As principais linguagens de
-
8/18/2019 Fernando Nicodemos ITA
14/109
14
programação do CLP são apresentadas com ênfase na linguagem ladder pelo fato de ter
surgido a partir de diagramas de controle a relés utilizados nos controles de processo
predecessores, além de ser comumente utilizada e não ser dependente de um único fabricante.
Para uma avaliação fundamentada, é fornecida a relação de desempenho relativo entre
dois sistemas passíveis de comparação. São comentados os pacotes integrados de benchmarks
e é definido o nível de programa utilizado como método de medição do desempenho dos
processadores embarcados. O programa tem por base de escolha o conceito do benchmark
sintético dentre cinco níveis disponíveis. Um modelo de relatório para a apresentação dos
resultados obtidos na avaliação também é fornecido.
A escolha de um programa para avaliação do desempenho dos processadores em
análise, torna relevante o estudo aprofundado de programas aplicativos utilizados em controle
de processo para a criação de uma carga de trabalho adequada à análise de um processador da
CPU de um CLP. Desta forma, são tomados para estudo 31 programas ladder com distintas
aplicações reais. É realizada uma classificação em três grupos de programas de acordo com o
número de linhas de programa ladder presentes neste conjunto abordado. Como resultado é
apresentada uma análise estatística das instruções ladder nos programas estudados, resultando
em uma contagem com números parciais nos três grupos de programas e em números do
resultado total.
São apresentados os resultados de uma ampla pesquisa de medidas e unidadesfornecidas pelos fabricantes de CLP. Com base na análise estatística praticada e nas
referências obtidas com a pesquisa métrica é criado um programa ladder definido como carga
de trabalho padrão. Este é utilizado para medir o tempo de execução co-relacionado com o
processador embarcado em uma CPU de um CLP definido como uma referência de
comparação para os demais processadores este trabalho. Baseado no princípio de operação do
programa ladder , é aplicado o conceito do método definido e criado um benchmark sintético
-
8/18/2019 Fernando Nicodemos ITA
15/109
15
com versões em linguagem C e Assembly para a avaliação de cada arquitetura escolhida como
possível componente de um novo projeto.
Finalmente, é feita a aquisição dos tempos de execução do benchmark sintético
implementado nos processadores em estudo e são apresentados os resultados do desempenho
relativo de três processadores com arquiteturas diferenciadas, além das razões que
propiciaram o aumento de desempenho em relação ao processador adotado como referencial
comparativo.
Além do capítulo 1 introdutório, esta tese é composta de 6 capítulos: o texto,
apresentado nos capítulos de 2 a 6 e o capítulo 7 de conclusão e proposta para a seqüência
deste trabalho.
No capítulo 2 é definido o processo com variáveis contínuas e a aplicação do controle
contínuo e o processo com variáveis digitais e a aplicação do controle digital. É abordada uma
breve descrição da evolução histórica do controle por lógica de relés até o Controlador Lógico
Programável dos dias de hoje. A literatura citada trata estes assuntos com maior profundidade
e não há pretensão, neste texto, de substituí-la. São abordadas as principais definições para o
entendimento de um CLP bem como o seu princípio de funcionamento e os seus elementos de
hardware. Neste capítulo, são abordadas também, as principais linguagens de programação
dos CLPs disponíveis atualmente, com apresentação enfática na linguagem ladder .
No capítulo 3 busca-se fornecer uma visão apenas sobre os aspectos relevantes dosfundamentos da análise de desempenho de sistemas embarcados microprocessados. Na
primeira seção é feita uma breve descrição da evolução histórica dos processadores. A partir
dessa evolução, são apresentados os rumos da computação e é comentada a divisão deste
mercado em três nichos de atuação: servidores, desktops e sistemas embarcados. Na segunda
seção são fornecidos os conceitos para a avaliação através do desempenho relativo entre dois
sistemas. São comentados os pacotes de benchmarks existentes e os motivos pela não adoção
-
8/18/2019 Fernando Nicodemos ITA
16/109
16
destes na avaliação de desempenho deste trabalho. Como alternativa, são discutidos cinco
níveis de programas utilizados na medição de desempenho listados em ordem de exatidão e
precisão. É definido o benchmark sintético como método de medição dos processadores
embarcados em estudo e as razões pela sua escolha. Finalmente é proposto um modelo de
relatório de desempenho para apresentar os parâmetros de ajuste da avaliação e fornecer os
resultados dos processadores em estudo.
No capítulo 4 são apresentados 31 programas ladder com aplicações reais em controle
de processos e as nomenclaturas adotadas. É definido o conjunto de instruções ladder
utilizado para o desenvolvimento dos programas estudados. É fornecido o método de
contagem das instruções ladder e é feita uma classificação em 3 grupos de programas de
acordo com a quantidade de linhas de programa ladder utilizadas. Como resultado, é
fornecida uma análise estatística onde são demonstrados os números parciais referentes ao
agrupamento adotado e os números relativos ao total de instruções aferidas ao conjunto de
programas avaliados.
No capítulo 5 é realizada uma ampla pesquisa dentre os fabricantes de CLP com a
finalidade de obter as formas de apresentação do desempenho relacionado com o processador
de suas CPU’s. Com base no resultado estatístico obtido com o estudo dos programas reais e
nos resultados da pesquisa, é criado um programa ladder utilizado como carga de trabalho
padrão adequada ao estudo do processador de uma CPU definida como referênciacomparativa. É apresentado o princípio de operação da carga de trabalho de acordo com o
programa ladder desenvolvido. Baseado na operação desse programa, é utilizado o método
definido possibilitando a criação de um benchmark sintético nas linguagens C e Assembly
para a avaliação dos processadores embarcados deste trabalho.
No capítulo 6 o primeiro processador apresentado faz parte da CPU definida como
referência comparativa para o estudo dos demais processadores embarcados escolhidos. Neste
-
8/18/2019 Fernando Nicodemos ITA
17/109
17
capítulo são apresentados, também, as arquiteturas de três processadores estudados, os
resultados obtidos experimentalmente através da implementação do benchmark sintético
criado, o relatório de desempenho e o desempenho relativo de cada processador em relação ao
sistema de referência adotado.
No capítulo 7 conclusivo são apresentadas as razões que contribuíram para o aumento
de desempenho em relação ao sistema de referência adotado e os comentários sobre cada
arquitetura estudada. São sugeridas etapas adicionais de desenvolvimento e aplicação para a
continuação deste trabalho.
-
8/18/2019 Fernando Nicodemos ITA
18/109
18
2 Controlador Lógico Programável
2.1 Tipos de processos industriais
Atualmente, é cada vez mais comum a utilização de processos automatizados na
fabricação de produtos industrializados mais competitivos. Estes podem ser agrupados em
dois tipos principais de processo industrial segundo a manipulação das variáveis a serem
controladas: processo do tipo analógico e processo do tipo digital [3].
O processo do tipo analógico é caracterizado quando há, em sua grande maioria,
variáveis do tipo analógicas ou contínuas no tempo. Um processo deste tipo é caracterizado
quando o produto final é obtido continuamente na saída enquanto a matéria-prima é
introduzida na entrada. As indústrias que possuem processos de manipulação de líquidos,
como é o caso das petroquímicas, utilizam com freqüência este tipo de processo. Neste caso,
são usados sistemas de controle contínuo ou do tipo analógico [3].
No controle analógico utiliza-se diretamente dos sinais de entrada dos sensores e age-
se sobre dispositivos de saída associados (atuadores) ao controle do processo. Os atuadores
podem também envolver sinais contínuos ou simplesmente sinais de on/off . O processamento
do sinal realizado pelo sistema de controle envolve tipicamente a amplificação do sinal e uma
função matemática, além de integração e soma com o intuito de obter a mudança desejada no
dispositivo de saída [4]. A figura 2.1 mostra o exemplo de um esquema básico de controle do
tipo analógico.
-
8/18/2019 Fernando Nicodemos ITA
19/109
19
Figura 2.1: Controle Analógico [4].
O processo do tipo digital é caracterizado quando as variáveis são do tipo discretas ou
digitais [3]. Também há possibilidade de algumas variáveis analógicas serem utilizadas, o que
implicaria o uso de conversor analógico-digital para a manipulação dos dados. Tipicamente,
neste tipo de processo o produto passa por várias operações ou montagens antes de tomar a
sua forma final [4]. As indústrias manufatureiras, como por exemplo a indústria
automobilística, utilizam com freqüência este tipo de processo.
O controle digital é o mais utilizado atualmente pelas indústrias. Diferentemente do
controle analógico, as máquinas e processos são controlados através de dispositivos (sensores
e atuadores) de acordo com o processamento de operações lógicas ou de uma seqüência de
eventos definidos [4]. A figura 2.2 mostra o exemplo de um esquema básico de controle do
tipo digital.
Figura 2.2: Controle Digital [4].
-
8/18/2019 Fernando Nicodemos ITA
20/109
20
O sistema microprocessado de controle digital destinado a processos caracterizados
com variáveis do tipo digital é o objeto de referência para a análise dos processadores
embarcados deste trabalho. O capítulo 6 trata a tecnologia e a arquitetura dos processadores
adotados com maior nível de detalhamento.
2.2 Evolução histórica do controle digital
O controle digital de processos teve seu início marcado pela utilização de dispositivos
eletromecânicos conhecidos como relés. Durante a década de 50 e até o início da década de
60, estes eram os recursos mais utilizados e praticamente a única opção para efetuar controles
lógicos nas linhas de produção e em máquinas isoladas. Para efetuar o controle, os contatores,
temporizadores e dispositivos de proteção constituíam a base de projetos de intertravamentos
elaborados em diagramas a relés (eram os chamados painéis de controle a relés – em inglês
relay panel). As chaves e os contatos estabeleciam os níveis lógicos baseados na lógica
binária. Tais sistemas de controle, apesar de funcionais, apresentavam problemas de ordem
prática bastante relevantes. Como as instalações possuíam uma grande quantidade de
elementos, a ocorrência de uma falha qualquer significava o comprometimento de várias
horas ou mesmo dias de trabalho e pesquisa para a correção do elemento faltoso. Os relés
apresentavam dimensões físicas elevadas, fazendo com que os painéis ocupassem um grandeespaço, além de exigir um projeto com alto grau de proteção associado (umidade,
temperatura, gases inflamáveis, oxidações, poeira, etc.) [3].
Outro fator ainda mais comprometedor na utilização dos painéis a relés era o fato de
que, como a programação lógica do processo controlado era realizada por interconexões
elétricas fixas (hardwired ), eventuais alterações exigiam interrupções no processo produtivo.
-
8/18/2019 Fernando Nicodemos ITA
21/109
21
Como conseqüência, tornava-se obrigatória a atualização das listas de fiação para garantir a
documentação do sistema [3].
Com o intuito de substituir as válvulas a vácuo, o avanço da tecnologia permitiu o uso
de alguns dispositivos transistorizados no final da década de 50 e início dos anos 60. Tais
dispositivos conseguiram uma grande redução de muitos problemas existentes nos relés.
Porém foi com o surgimento de componentes eletrônicos integrados em larga escala ( LSI –
Large Scale Integration), que novas fronteiras se abririam ao mundo dos computadores
digitais e, em especial, às tecnologias para a automação indutrial [3].
A primeira conceituação dos Controladores Lógicos Programáveis (CLP ou em inglês,
Programmable Logic Contoller – PLC ) e a primeira experiência de um controle de lógica que
permitisse a programação por recursos de software foi realizada em 1968 na divisão de
hidramáticos da General Motors Corporation. Este deveria ter as seguintes características [4]:
• Fácil programação e reprogramação, preferencialmente na planta da indústria;
• Fácil manutenção e reparo, preferencialmente pela utilização de módulos
interconectáveis;
• Mais confiável no ambiente de trabalho e de menor tamanho que o seu
equivalente a relés;
• Competitivo no custo em relação aos painéis a relés consolidados em uso.
Pelo exposto, iniciava-se um interesse especial por parte dos engenheiros em como os
CLPs poderiam ser usados no controle industrial para substituir os painéis de controle a relés.
Deste ponto em diante, com o aparecimento das demandas, as capacidades e facilidades do
CLP foram facilmente implementadas com o avanço da tecnologia [4].
-
8/18/2019 Fernando Nicodemos ITA
22/109
22
A primeira geração de CLPs recebeu uma grande melhoria com o advento dos
microprocessadores ocorrido durante os anos 70 (os primeiros microprocessadores foram
produzidos pela American Intel Corporation e a Texas Instruments em 1971 [3] e o CLP
microprocessado foi introduzido em 1977 pela Allen-Bradley Corporation. Era baseado no
microprocessador 8080 [4]). Assim, este importante marco consolidou o uso do CLP como
uma unidade isolada de processamento. Atualmente, além dos CLPs contarem com diversas
tecnologias embarcadas, contam também com diversas linguagens de programação e padrões
internacionais para o desenvolvimento de programas destinados ao controle do processo
produtivo.
2.3 Principais definições
Devido à ampla gama de equipamentos e sistemas disponíveis, aliada à crescente
capacidade de recursos que o CLP vem agregando, existe a possibilidade deste ser confundido
com outros equipamentos do mercado. Assim, uma identificação de um equipamento como
sendo um Controlador Lógico Programável é dada por 3 características básicas [3]:
• O equipamento deve executar uma rotina cíclica de operação enquanto em
funcionamento;
• A forma básica de programação deve ser realizada a partir de uma linguagem
oriunda dos diagramas elétricos de relés;
• O produto deve ser projetado para operação em ambiente industrial e deve ser
preparado para diversas condições ambientais.
-
8/18/2019 Fernando Nicodemos ITA
23/109
23
A utilização de siglas também é um fator de grande confusão no meio da automação
industrial. As mais utilizadas são [3]:
PLC : é a abreviatura de origem americana do termo em inglês Programmable Logic
Controller . Outra sigla de mesmo propósito porém pouco utilizada é a PBS – Programmable
Binary System de origem sueca [4].
CLP: tradução para o português da sigla PLC , Controlador Lógico Programável, a
qual é adotada neste e nos demais capítulos quando se fizer menção a tal equipamento.
CP: tradução para o português do termo Programmable Controller (PC ) de origem
inglesa, a qual se refere a um equipamento misto com capacidade de efetuar funções de
controle além das funções lógicas.
2.4 Princípio de funcionamento
O princípio de funcionamento de um CLP consiste na execução de um programa
executivo que realiza ciclicamente as ações de leitura das entradas, execução do programa de
controle do usuário e atualização das saídas. São relacionados com os respectivos conceitos básicos [3]:
Variáveis de entrada: são sinais externos recebidos pelo CLP oriundos de fontes
pertencentes ao processo controlado ou comandos gerados pelo operador. São gerados por
dispositivos como sensores, chaves ou botoeiras, dentre outros.
-
8/18/2019 Fernando Nicodemos ITA
24/109
24
Variáveis de saída: são sinais controlados por cada dispositivo de saída do CLP. Tais
pontos servem para intervenção direta no processo controlado por dispositivo de acionamento
próprio, ou também para sinalização de estado. São exemplos de dispositivos de saída os
contatores, válvulas, lâmpadas, displays, dentre outros.
Programa de controle do usuário: programa desenvolvido pelo usuário,
caracterizado por uma aplicação específica baseada em linguagens padronizadas dos CLPs, a
partir de um conjunto de instruções oferecido pelo fabricante com intuito de efetuar as ações
de controle lógico desejadas. Um programa de controle do usuário pode ativar ou não as
memórias internas e os sinais de saída a partir da monitoração do estado das mesmas
memórias internas e dos sinais de entrada do CLP.
O tempo total para a leitura das entradas, execução do programa de controle do
usuário e a atualização das saídas é definido como tempo de varredura (scan time) ou ciclo de
varredura e depende, dentre outros fatores, do desempenho e das características arquiteturais
do processador utilizado, da tecnologia empregada no software do programa executivo e da
forma do desenvolvimento do programa de controle do usuário, além da quantidade e tipo de
sinais de entrada e saída.
Em algumas situações críticas de controle, em que o processo não pode esperar todo ociclo de varredura, pois deve executar uma rotina imediatamente, ou ainda quando o sinal de
entrada varia por um tempo inferior ao ciclo, o CLP deveria ter a capacidade de interromper a
execução do ciclo de varredura para, prioritariamente, atender a situação chamada [3].
A figura 2.3 mostra o ciclo de varredura executado pelo programa executivo
correspondente ao princípio de funcionamento do CLP.
-
8/18/2019 Fernando Nicodemos ITA
25/109
25
Figura 2.3: Ciclo de varredura executado pelo programa executivo [3].
2.5 Elementos do hardware
O CLP é composto basicamente por dois elementos principais: a CPU (Central
Processing Unit ou em português – Unidade Central de Processamento) e os módulos de I/O
para as interfaces com as variáveis de entrada e saída. A figura 2.4 mostra o diagrama em
blocos de um CLP genérico [3].
-
8/18/2019 Fernando Nicodemos ITA
26/109
26
Figura 2.4: Diagrama em blocos de um CLP genérico [3].
2.5.1 A CPU
A CPU é o elemento principal de um CLP pois é responsável pelo processamento
lógico e controle de todas as ações definidas pelo programa de controle do usuário.
Em alguns CLPs, o processador, a memória e os módulos de I/O compõem uma
unidade física única. Já em CLPs de grande porte, o processador e as memórias compõem
uma unidade física e os módulos de I/O são utilizados em unidades físicas separadas. A CPU
é composta de duas partes: processador e o sistema de memória [5].
2.5.1.1 Processador
As capacidades e as características dos CLPs estão intimamente relacionadas com a
qualidade do processador utilizado, que pode ser denominado microprocessador ou
microcontrolador, conforme o caso. Com o avanço da tecnologia, os termos Digital Signal
Processor (DSP – em português Processador de Sinais Digitais) e processador embarcado
ganharam grande relevância, pois além de apresentarem algumas das características
arquiteturais avançadas presentes em grandes processadores, possuem uma boa relação preço-desempenho e também atendem aos requisitos de um CLP.
-
8/18/2019 Fernando Nicodemos ITA
27/109
27
Os processadores podem ser classificados, a prióri, pelo tamanho da informação que
podem manipular. Processadores de 8 bits, 16 bits e 32 bits são os mais encontrados. Outro
fator relevante em um processador de uma CPU é a sua capacidade de processamento, cuja
freqüência de operação, atualmente alcança centenas de megahertz [5]. Entretanto, a
caracterização de um processador somente pela freqüência de operação não determina
totalmente o seu desempenho, há outras características arquiteturais que fazem com que o
conjunto mereça uma avaliação para definir o quanto de eficiência está agregado à tecnologia
que se deseja utilizar.
É de grande importância, também, que o conjunto de instruções do processador seja
relativamente flexível bem como o tamanho da memória interna e externa que pode ser
endereçada além da quantidade de I/O’s disponíveis a aplicação [3].
2.5.1.2 Sistema de memória
O termo programável do CLP implica que o programa executivo, o programa de
controle do usuário e dados a serem manipulados devem estar ou ser armazenados em algum
local. Tal região é denominada sistema de memória, que deve ser devidamente organizada [3].
Na organização do sistema de memória dos CLPs são utilizadas memórias voláteis e
não voláteis. Atualmente, os tipos de memória mais utilizados são as FLASH paraarmazenamento do programa executivo e programa de controle do usuário, SRAM e SDRAM
para armazenar as instruções a serem executadas e os dados a serem armazenados ou lidos.
Em alguns equipamentos, é utilizado um sistema de fornecimento de energia via baterias ou
acumulador com o propósito de manter os dados que estão armazenados nas memórias
voláteis.
-
8/18/2019 Fernando Nicodemos ITA
28/109
28
Deste modo, a forma como é organizado o mapa de memória em um CLP varia de
fabricante para fabricante e ainda entre diferentes modelos de um mesmo fabricante. Porém,
como as necessidades inerentes à operação de um CLP são semelhantes, é possível
generalizar que um mapa de memória seja composto por cinco regiões distintas, como ilustra
a figura 2.5 [3].
Figura 2.5: Mapa genérico do sistema de memória de um CLP [3].
2.5.2 Interfaces de entrada e saída
O sistema de entradas e saídas ( I/O) realiza a conexão física entre a CPU e o mundo
externo por meio de vários tipos de circuito de interfaceamento. Este sistema é subdividido
em: interface de natureza digital e interface de natureza analógica.
-
8/18/2019 Fernando Nicodemos ITA
29/109
29
2.5.2.1 Entradas e saídas analógicas
Com as potencialidades de processamento aritmético dos processadores que passaram
a integrar os atuais CLPs, foram adicionadas aos sistemas novas características de controle.
Nesta modalidade, a recepção ou envio de sinais é realizada principalmente por pontos
de entrada e saída analógicos, o que implicaria na utilização de um conversor analógico-
digital ou digital-analógico para a manipulação das informações caso fossem utilizadas em
controles digitais [3].
2.5.2.2 Entradas e saídas digitais
São os tipos de sinal mais comumente encontrados em sistemas automatizados com
CLPs. Nesses tipos de interface, a informação consiste em um único bit cujo estado pode
apresentar as situações de ligado e desligado [3].
Neste caso, as condições de entrada do CLP são lidas por pontos de entrada digitais e
armazenadas na memória, a partir de onde são executadas as instruções lógicas programadas
de acordo com o status lido. A partir do programa executado, valores de saída são gerados
para os pontos de saída, permitindo assim que o sistema de controle atue no processo [4].
2.6 Linguagens de programação
Com a criação dos CLPs para substituir os painéis de controle a relés, surgiu também a
necessidade de uma linguagem de programação que fosse familiar à experiência de pessoas
envolvidos com a lógica de relés [3]. Este fato implica na necessidade de uma linguagem de
alto nível para fornecer comandos próximos às funções utilizadas por um profissional de
-
8/18/2019 Fernando Nicodemos ITA
30/109
30
controle, mas sem a complexidade e o tempo de aprendizado associado com as linguagens de
alto nível dos computadores [4]. Desta forma, para a programação de um CLP foram criadas
linguagens simbólicas que descrevem as funções dos painéis e realizam programas de
controle do usuário similares à lógica de relés utilizadas nos painéis predecessores.
A norma internacional IEC 61131-3 define 2 linguagens gráficas (diagrama ladder e
blocos funcionais) e 2 linguagens textuais (mnemônicos booleanos e parâmetros idiomáticos)
como as principais formas de programação dos CLPs [6]. A figura 2.6 mostra o exemplo de
um trecho básico de programa de controle do usuário descrito nas quatro linguagens.
Figura 2.6: Trecho de programa nas quatro principais linguagens [3].
A norma também define uma quinta forma de programação, o diagrama SFC –
Sequential Function Chart . O SFC é uma representação gráfica do modelamento através de
redes de petri em conjunto com funções booleanas. Tem a função de realizar funções de
controle seqüencial e tem grande importância para a representação de decisões complexas [3]
[6]. Atualmente, alguns fabricantes fornecem a opção de programar o CLP diretamente
através da linguagem C sem se basear em qualquer outra linguagem de maior nível.
-
8/18/2019 Fernando Nicodemos ITA
31/109
31
Dentre as linguagens apresentadas, o diagrama ladder tem sido o método mais comum
e a forma mais clara de descrever a lógica dos circuitos a relés no mercado brasileiro. Sua
utilização na programação dos CLPs tornou-se natural com a necessidade de substituir os
antigos painéis, criando assim o ambiente familiar desejado para o usuário ou para o projetista
das lógicas de controle [4].
Um diagrama ladder consiste de linhas horizontais e verticais que representam as
conexões elétricas e de símbolos padrões para representar os elementos dos circuitos e as
funções encontradas em um sistema de controle. No exemplo da figura 2.6 foram
apresentados símbolos comumente utilizados: instrução de entrada ou contato normalmente
aberto (I0 e I1), contato normalmente fechado (I2) e instrução de saída (O1). De acordo com
padrões internacionais atuais, a simbologia da linguagem ladder pode ser utilizada para
realizar qualquer lógica de controle e os diagramas produzidos podem ser tão complexos
quanto forem as necessidades das aplicações de controle [4]. Por ser considerada uma
linguagem de mais alto nível, um compilador tem o papel de traduzir estes símbolos nas
linguagens utilizadas pelos processadores mais recentes, usualmente em C ou Assembly.
Pelo fato de não depender de um único fabricante, o diagrama ladder é a forma de
programação do CLP utilizada neste trabalho para a definição de uma carga de trabalho
padrão adequada à análise de um processador embarcado em uma CPU . O programa ladder
definido como carga de trabalho padrão será utilizado na criação de um benchmark sintético para avaliar o desempenho das diferentes arquiteturas dos processadores escolhidos face ao
referencial adotado para o estudo. O programa ladder será apresentado no capítulo 5.
-
8/18/2019 Fernando Nicodemos ITA
32/109
32
3 Fundamentos da análise de desempenho de sistemas embarcados
3.1 Evolução do desempenho dos processadores
A tecnologia dos computadores sofreu um grande progresso desde que foi criado o
primeiro computador eletrônico de propósito geral há 55 anos. Durante os seus primeiros 25
anos, tanto avanços na tecnologia quanto inovações no projeto da arquitetura contribuíram
para a alta taxa de evolução. Neste período o desempenho apresentava uma taxa de
crescimento de 25% a 30% ao ano para os mainframes e os minicomputers que
predominavam na indústria da época [1].
Entretanto, no começo da década de 70, os projetistas se tornaram dependentes da
tecnologia dos circuitos integrados com o surgimento dos microprocessadores. A
possibilidade de melhoramentos na tecnologia dos semicondutores, em contrapartida com os
mainframes e minicomputers pouco integrados, conduziram os computadores a uma taxa de
crescimento maior, aproximadamente 35% ao ano. Essa taxa, combinada com as vantagens
do custo de uma produção em massa, resultou em um aumento na utilização de equipamentos
comerciais baseados em sistemas microprocessados [1]. Em particular, foi no fim desta
década que as indústrias iniciaram a utilização de CLPs baseados em microprocessadores para
o controle de processos, como mencionado no capítulo anterior.
No início da década de 80, foi possível o desenvolvimento de um novo conjunto de
arquiteturas, chamadas arquiteturas RISC ( Reduced Instruction Set Computer ). As arquiteturas
baseadas em RISC concentraram a atenção dos projetistas em duas técnicas para aumentar o
desempenho dos processadores, a exploração do paralelismo em nível de instruções
(inicialmente através do pipeline e mais tarde através do multiple instruction issue) e o uso de
memória cache (inicialmente de forma simples e mais tarde usando formas de organização e
-
8/18/2019 Fernando Nicodemos ITA
33/109
33
técnicas de otimização mais sofisticadas). A combinação de avanços arquiteturais e
organizacionais levou a 25 anos de crescimento constante em uma taxa de mais de 50% ao
ano.
A figura 3.1 mostra a evolução descrita anteriormente e sintetiza o efeito da diferença
nas taxas de crescimento do desempenho relativo baseados nos avanços de arquitetura e em
avanços na tecnologia dos semicondutores [1].
Figura 3.1: Crescimento na taxa do desempenho relativo dos microprocessadores
medido pelos conjuntos de benchmarks para inteiros SPECint, com base unitária
correspondente a um VAX 11/780 e crescimento na taxa do desempenho relativo
baseado em avanços na tecnologia dos semicondutores[1].
A literatura trata os conceitos relativos à arquitetura RISC (utilizados como técnicas de
aumento de desempenho nas arquiteturas dos processadores estudados) com maior
profundidade e riqueza de detalhes, portanto não serão abordados neste trabalho.
-
8/18/2019 Fernando Nicodemos ITA
34/109
34
3.2 Evolução da informática
Na década de 60, a forma dominante de computação se limitava aos mainframes que
eram máquinas que custavam milhões de US dólares e ocupavam um grande espaço, além de
utilizar vários operadores para o suporte. As aplicações típicas incluíam o processamento de
dados comerciais e a computação científica em grande escala. O surgimento dos
minicomputers e dos CLPs microprocessados marcaram os anos 70. Estes eram máquinas de
dimensões bem menores, dedicadas inicialmente às aplicações em laboratórios científicos, e
que no caso dos minicomputers, logo ampliou seus limites à medida que a tecnologia do
compartilhamento do tempo se disseminou. Este consistia de diversos usuários
compartilhando um computador interativamente pela utilização de terminais independentes.
Na década de 80 surgiram os desktops baseados em microprocessadores, na forma de
computadores pessoais e de estações de trabalho. Os desktops de um único usuário
substituíram o compartilhamento de tempo levando ao surgimento de servidores. Na década
de 90, surgiram a internet e a World Wide Web, os primeiros computadores de mão
(handhelds) e outros aparelhos digitais de alto desempenho [1].
Essas mudanças definiram o cenário de uma transformação drástica na maneira de
encarar os mercados da informática e as aplicações da computação e dos computadores. Esses
fatos levaram a três mercados de computação, cada qual caracterizado por diferentesaplicações, requisitos e tecnologias. O mercado dividiu-se nos seguintes nichos de atuação:
desktops, servidores e sistemas embarcados [1].
Os setores da computação de desktop e servidores serão resumidamente apresentados,
pois o foco deste trabalho é o mercado de sistemas embarcados, em particular para a
automatização de processos.
-
8/18/2019 Fernando Nicodemos ITA
35/109
35
3.2.1 Desktops
O mercado de desktops ainda é o primeiro e o maior em termos financeiros. Este se
estende desde sistemas de nível simples que são vendidos por preços abaixo de US$1.000,00
dólares, até estações de trabalho de alta tecnologia que podem custar mais de US$10.000,00
dólares. A combinação de desempenho (medido principalmente em termos de desempenho de
cálculo e desempenhos gráficos) e preço do sistema são os fatores mais importantes para os
projetistas dessa classe de computadores [1].
Em conseqüência disto, é neste ramo que aparecem os processadores de maior
desempenho e as tendências e avanços da tecnologia que influenciam os outros mercados. O
mercado de desktops também tende a ser caracterizado em termos de aplicações e benchmarks
embora o uso crescente de aplicações na Web induza novos desafios na avaliação do
desempenho [1].
3.2.2 Servidores
À medida que ocorreu o aumento da demanda para os desktops, cresceu o papel dos
servidores no fornecimento de serviços mais confiáveis e em maior escala. A World Wide
Web acelerou essa tendência devido ao crescimento na demanda por servidores Web e oaumento da sofisticação dos serviços baseados nela. Os servidores têm um papel importante
na computação empresarial em grande escala e são usados para substituir o mainframe
tradicional [1].
No caso dos servidores, diferentes características são importantes. Primeiro, a
disponibilidade é crítica, ou seja, o sistema tem que fornecer um serviço de forma confiável e
eficiente ininterruptamente. Parte desses sistemas inevitavelmente pode falhar e assim, em
-
8/18/2019 Fernando Nicodemos ITA
36/109
36
geral é utilizada redundância para manter a disponibilidade do sistema. Uma segunda
característica de sistemas servidores é a escalabilidade. A habilidade de aumentar a escala da
capacidade de processamento, memória, armazenamento, e de largura de banda de I/O é
crucial. Por fim, os servidores são projetados para um throughput eficiente. A eficiência
global e a relação custo-benefício, determinada pela quantidade de solicitações que podem ser
tratadas em um determinado período de tempo, são as métricas fundamentais para a maioria
dos servidores [1].
3.2.3 Sistemas embarcados
Os sistemas embarcados compõem o setor que apresenta atualmente o maior e mais
rápido crescimento do mercado da informática. Estes são caracterizados por computadores de
bordo hospedados em outros dispositivos ou sistemas cuja presença não é óbvia. A classe
embarcada tem disponível a mais ampla faixa de capacidade de processamento e custo,
incluindo desde microcontroladores de 8 e 16 bits para aplicações simples que podem custar
menos de US$1,00 dólar, até processadores de 32 bits utilizados em aplicações mais
complexas capazes de executar 100 milhões de instruções por segundo e que custam menos
de US$10,00 dólares [1].
Em muitos casos, o requisito de desempenho em uma aplicação embarcada é umrequisito de tempo real. Requisito de tempo real é aquele em que uma parte da aplicação tem
um tempo de execução máximo absoluto permitido e tende a ser bastante dependente da
aplicação. Em geral, um requisito de tempo real é medido através do uso de kernels, seja a
partir de uma aplicação real ou de um benchmark padronizado para embarcados (benchmarks
EEMBC ) [1]. Existem outras duas características importantes nas aplicações embarcadas: a
necessidade de minimizar a memória utilizada e o consumo de energia. O ideal é que a
-
8/18/2019 Fernando Nicodemos ITA
37/109
37
aplicação necessite apenas das memórias internas do componente, porém na grande maioria
das vezes é necessária a utilização de memórias externas. Assim sendo, memórias adicionais
podem representar uma porção substancial do custo do sistema e aumentar significativamente
o consumo de energia do conjunto [1].
3.3 Medida de desempenho para sistemas embarcados
Pode-se dizer que um sistema embarcado é mais rápido do que um outro quando uma
carga de trabalho é executada em menor tempo. Desta forma, existe interesse por parte do
usuário em reduzir o tempo de resposta (tempo entre o início e o término do evento), também
conhecido como tempo de execução.
Na comparação de dois casos alternativos, são apresentados o desempenho de dois
sistemas diferentes, ditos sistema X e sistema Y. A frase “X é mais rápido que Y” é usada
quando o tempo de execução em X é menor do que em Y para o processamento de uma
mesma carga de trabalho. De forma genérica, dizer que “X é n vezes mais rápido que Y”
significa obter a seguinte relação de desempenho relativo [1]:
yrel.
x
tempo de execuçãoD = =
tempo de execução n
Uma vez que o tempo de execução é o inverso do desempenho, temos a seguinte
relação entre os sistemas X e Y:
y y x
rel. x y
x
1
tempo de execução Desempenho DesempenhoD =
1tempo de execução DesempenhoDesempenho
n= = =
-
8/18/2019 Fernando Nicodemos ITA
38/109
38
Assim, aumentar o desempenho de um sistema significa diminuir o seu tempo de
execução.
3.4 Métodos de análise de desempenho
Inicialmente, foi realizada uma pesquisa referencial para identificar benchmarks
apropriados para a avaliação do desempenho de processadores. Foram identificados 3
principais métodos: pacotes integrados de benchmarks, benchmarks para embarcados e
programas específicos utilizados como benchmarks.
Os pacotes integrados de benchmarks são muito utilizados para avaliar o desempenho
de desktops e servidores e não se aplicam neste trabalho. Para as aplicações embarcadas que
podem ser caracterizadas pelo desempenho de um kernel, a avaliação pode contar com um
conjunto padrão de benchmarks conhecido como EEMBC ( EDN Embedded Microprocessor
Benchmark Consortium) [1]. Este trabalho terá foco nos programas específicos utilizados
como benchmarks e suas possíveis utilizações como um método de avaliar o desempenho dos
processadores embarcados em estudo. Apesar dos pacotes integrados de benchmarks e os
benchmarks para embarcados estarem descartados, é apresentada uma breve descrição para
ambos.
3.4.1 Pacote integrado de benchmarks
Recentemente, tem se tornado comum juntar coleções de benchmarks para medir o
desempenho de processadores em várias aplicações. Uma das tentativas de se criar aplicações
de pacotes integrados de benchmarks padronizados tem sido da SPEC (Standard Performance
-
8/18/2019 Fernando Nicodemos ITA
39/109
39
Evaluation Corporation), cujas raízes se fortificaram no final da década de 80 a partir de
melhorias nos benchmarks para as workstations [2].
Para os desktops, há duas classes de benchmark : processor-intensive benchmarks e
graphics-intensive benchmarks. A SPEC originalmente criou um conjunto de benchmarks
com foco no desempenho do processador, inicialmente chamado de SPEC89, na qual atingiu
sua quinta geração, o SPEC CPU2006 . É resumido em um conjunto de benchmarks para
inteiros (CINT2006 ) e um conjunto de benchmarks para ponto flutuante (CFP2006 ). Os
benchmarks SPEC são programas reais, modificados para terem portabilidade e para reduzir o
papel dos I/O’s no desempenho do sistema [2].
Para os servidores, um pacote bastante utilizado para gerar uma medida de taxa de
processamento de um multiprocessador é o SPEC CPU2000, chamada de SPECrate [2].
Os pacotes integrados de benchmarks não se aplicam a este trabalho por que são
preparados a partir de aplicações reais para os sistemas de desktop e servidores, ambientes
com requisitos e aplicações diferentes dos sistemas embarcados dos CLPs.
3.4.2 Benchmarks para sistemas embarcados
Os benchmarks de sistemas embarcados se encontram em um estado mais inicial do
que os benchmarks para os desktops ou servidores. Como existe uma grande variedade deaplicações embarcadas, o uso de um único conjunto de benchmarks não é considerado
adequado. Na prática, muitos projetistas de sistemas embarcados desenvolvem benchmarks
que refletem as suas aplicações, tanto kernels como programas em versões únicas de uma
aplicação inteira [2]. Este conjunto é subdividido em 6 classes: automotiva/industrial,
consumidor, telecomunicações, entretenimento digital, redes de comunicação e automação em
escritórios [2][11].
-
8/18/2019 Fernando Nicodemos ITA
40/109
40
Embora muitas aplicações embarcadas sejam sensíveis ao desempenho de pequenos
kernels, é importante destacar que o desempenho da aplicação inteira (que pode ser de
milhares de linhas) também é crítico. Deste modo, para muitos sistemas embarcados, os
benchmarks EEMBC podem ser somente usados para estimar parcialmente o desempenho [2].
Os benchmarks EEMBC não são totalmente adequados a este trabalho porque neste
caso não é utilizado kernel e possuem opções restritas para o fornecimento dos resultados.
Estes não trabalham com base estruturada na linguagem ladder , além do fato de ser uma
medida de desempenho fechada e de alto custo.
3.4.3 Programas benchmarks
Um usuário familiarizado com programas de usuário de CLPs seria o candidato mais
indicado para avaliar um novo sistema embarcado. Para a avaliação, este poderia
simplesmente comparar com o sistema antigo, o tempo de execução da sua carga de trabalho
no novo sistema. Porém, existem outros métodos que podem ser utilizados para medir e
predizer o desempenho de um sistema. Há cinco níveis de programas usados como
benchmark , listados em ordem decrescente de exatidão de predição [1]:
Aplicações reais: apesar do usuário de um novo sistema não saber qual a fração detempo que irá ser gasta nos seus programas, este sabe que são usados programas que refletem
problemas reais. Aplicações reais têm entrada, saída e opções de seleção enquanto o programa
está sendo executado. A única desvantagem de se usar aplicações reais como benchmark é
que elas apresentam problemas de portabilidade provenientes do modo de operação ou do
compilador utilizado. Como exemplo, em aplicações reais nos CLPs, é possível escolher o
-
8/18/2019 Fernando Nicodemos ITA
41/109
41
programa de controle do usuário utilizado em um determinado tipo de processo e analisar o
tempo de execução gasto com esta carga de trabalho.
Aplicações modificadas: em muitos casos, aplicações reais são usadas como blocos
de construção para um benchmark , o que inclui modificações ou scripts que atuam de
estímulo para a aplicação. Aplicações são modificadas ou utilizam um script por duas razões
principais: para aumentar a portabilidade ou para focar o desempenho do sistema em um
aspecto particular. Como exemplo, é possível criar um script que execute somente a parte do
programa de controle do usuário correspondente a uma única etapa do processo controlado
por um CLP. Assim, é possível analisar o tempo de execução gasto na aplicação modificada.
Kernels: foram feitas várias tentativas de extração de pequenos fragmentos-chave de
programas reais e usá-los para avaliar o desempenho. “ Livermore Loops” e “ Linpack ” são os
exemplos mais conhecidos. O kernel é melhor utilizado como benchmark quando usado para
isolar a análise de desempenho de características individuais de um sistema. Em CLPs que
utilizam um sistema operacional de tempo real, por exemplo, é possível medir o desempenho
onde se deseja avaliar parte da aplicação que possua requisitos de tempo real entre a leitura de
um sensor e o acionamento de um atuador.
Toy benchmarks: os toy benchmarks são programas conhecidos e pré-definidos que
têm entre 10 e 100 linhas de código e que produzem um resultado que o usuário já conhece
antes de executar o programa. O exemplo mais comum é o programa do tipo Puzzle. Estes são
populares porque são relativamente pequenos e fáceis de digitar.
Benchmarks sintéticos: semelhantes em filosofia aos kernels, os benchmarks
sintéticos tentam verificar a ocorrência média das operações e operandos de um grande
-
8/18/2019 Fernando Nicodemos ITA
42/109
42
conjunto de programas. Whetstone e Dhrystone são os benchmarks sintéticos mais populares.
Os benchmarks sintéticos estão um pouco mais distantes da realidade que os kernels, pois de
um kernel são extraídos programas reais enquanto que um código sintético é criado
artificialmente para corresponder a um perfil de execução. Benchmarks sintéticos não são nem
partes de programas reais, entretanto os kernels podem ser. Por exemplo, em um CLP é
possível criar um programa de controle do usuário com intuito de medir a capacidade de
processamento de seu processador.
Pelo exposto, é definido o benchmark sintético como método de análise de
desempenho dos processadores em estudo neste trabalho. Apesar do fato de o benchmark
sintético ser o de menor precisão, sua escolha é fundamentada na possibilidade de criar código
artificialmente com intuito de estruturar seu programa de acordo com uma dada carga de
trabalho padrão a ser definida por um programa ladder . Seu objetivo é focar a análise no
desempenho da arquitetura dos processadores embarcados deste trabalho aplicáveis aos CLPs.
3.5 Abordagens para a criação de benchmarks
Um aspecto importante é o impacto que a otimização de um compilador pode criar.
Este pode ser grande quando modificações de código fonte são permitidas ou quando umbenchmark é suscetível a otimizações. Por estas razões, é importante descrever exatamente o
software do sistema e se quaisquer modificações que não sejam padronizadas foram feitas.
Além da questão de otimização, outro ponto importante é saber se as modificações do código
fonte ou código gerado a mão são permitidas. Deste modo, há quatro maneiras diferentes para
se tratar esta questão [1]:
-
8/18/2019 Fernando Nicodemos ITA
43/109
43
• Nenhuma modificação no código fonte é permitida;
• Modificações no código fonte são permitidas, mas são essencialmente difíceis
ou impossíveis de serem realizadas;
• Modificações no código fonte são permitidas. Por exemplo, muitos pacotes de
benchmarks SPEC permitem modificações no código fonte;
• Código gerado manualmente é permitido. Por exemplo, o pacote EEMBC
permite a geração de código manualmente em linguagem Assembly a partir dos
seus benchmarks.
Assim, a principal preocupação que o criador de um benchmark deve ter, é decidir se
as modificações do código fonte ou a geração do código manualmente irão refletir o
desempenho na prática ou irão reduzir a exatidão com relação ao desempenho real [1].
Nesse contexto, a principal meta de um fabricante de CLP é escolher um processador
que atenda ao seu projeto atingindo o maior desempenho com o menor preço possível. Os
processadores em análise são configurados para trabalhar nas suas freqüências máximas de
operação atentando somente para limitações do sistema e, como descrito anteriormente,
utilizam o benchmark sintético como método de análise de desempenho. A partir de uma
carga de trabalho padrão, o benchmark é escrito nas linguagens C e Assembly, permitindo a
comparação de código Assembly gerado por um compilador e código Assembly gerado
manualmente. São utilizados os métodos de compilação debug e release e suas técnicas
básicas para a geração de código pelo compilador. Outras técnicas mais apuradas de
otimização a nível do compilador não serão abordadas pelo fato de não fazerem parte do
escopo proposto por este trabalho. O programa ladder da carga de trabalho padrão e a sua
aplicação através do benchmark sintético são abordados com maior nível de detalhamento no
capítulo 5.
-
8/18/2019 Fernando Nicodemos ITA
44/109
44
3.6 Relatório de apresentação do desempenho
A principal premissa de se fornecer medidas de desempenho deve ser a capacidade de
reprodução dos testes por outros usuários, ou seja, registrar tudo que outro experimentador
precisaria para reproduzir os resultados. É importante, também, que a análise de desempenho
siga um padrão de apresentação. Para isto, é criado um relatório modelo onde são fornecidos
os parâmetros de ajuste de hardware e software. O relatório consiste no fornecimento de todas
as identificações do processador e do sistema utilizado, bem como os programas utilizados na
análise do desempenho.
A tabela 3.1 mostra o modelo exemplo de um relatório utilizado para o fornecimento
dos resultados obtidos em uma análise de desempenho.
Tabela 3.1: Modelo de relatório para o fornecimento de resultados.
RELATÓRIO DE DESEMPENHO – PROCESSADOR:
PARÂMETROS DE AJUSTE – HARDWARE Número do modelo/série:Número de núcleos:Capacidade de manipulação:Freqüência de operação:Cache primária (L1):Cache secundária (L2):Outra cache:Memória:
Disco:Outro hardware:
PARÂMETROS DE AJUSTE – SOFTWARE Sistema operacional e versão:Compilador e versão:Outro software:Tipo de arquivos do sistema:Estado do sistema:
RESULTADOS
Tempo de execução:Outras considerações:
-
8/18/2019 Fernando Nicodemos ITA
45/109
45
4 Análise estatística em programas ladder reais
4.1 Programas reais em linguagem ladder
De posse de diferentes tecnologias utilizadas atualmente nos processadores
embarcados, faz-se necessária a criação de uma carga de trabalho padrão para prover uma
avaliação com métodos e critérios bem definidos. Como justificado no capítulo anterior, será
utilizado o benchmark sintético para a avaliação dos processadores embarcados em estudo. O
princípio de operação do benchmark sintético segue os padrões do princípio de
funcionamento do CLP e é baseado em uma carga de trabalho padrão definida por um
programa ladder desenvolvido.
Nesse contexto, antes de se obter uma definição da carga de trabalho adequada, foram
coletados 31 programas descritos em linguagem ladder com aplicações reais em controle de
processos cedidos por uma empresa fabricante de CLPs para uma análise aprofundada.
4.1.1 Nomenclatura adotada para a análise
Inicialmente, os programas coletados foram organizados em ordem alfabética e
numérica de acordo com seus nomes reais, seguindo desta forma, uma seqüência de análise de
programa a programa. Uma vez obtida a seqüência de análise, cada programa foi definido
com a nomenclatura “P” e numeração de 1 a 31 para manter o status confidencial original,
configurando assim uma nomeação de “P1” a “P31”.
-
8/18/2019 Fernando Nicodemos ITA
46/109
46
4.1.2 Critério de contagem
A análise foi realizada a partir de uma contagem manual de cada instrução ladder para
cada programa tomando o conjunto de instruções disponibilizado em um manual por um
fabricante de CLP. Desta forma, foram coletados a quantidade de instruções ladder de cada
tipo e o número de linhas para cada programa seguindo a seqüência e a nomenclatura
definida.
4.2 Conjunto de instruções ladder
O conjunto de instruções ladder adotado neste trabalho é formado por um total de 93
instruções e pseudo-instruções definidas por mnemônicos atribuídos aos símbolos utilizados
nos diagramas ladder .
No conjunto, cada instrução ladder é nomeada com um mnemônico e envolve uma
definição lógica para a utilização no controle de processos reais. Há diversas literaturas
especializadas e a normatização internacional (IEC 61131-3) que relacionam os mnemônicos
e suas definições à simbologia padronizada da linguagem ladder , portanto não há pretensão
neste trabalho de substituí-las. Somente serão atribuídos símbolos para as instruções ladder
utilizadas na criação da carga de trabalho padrão (apresentados inicialmente no exemplo dafigura 2.6 e reforçados no capítulo 5) e não será atribuído nenhum outro símbolo aos
mnemônicos do conjunto utilizado neste trabalho.
As tabelas 4.1 e 4.2 mostram o conjunto de instruções ladder utilizado na análise com
seus mnemônicos e suas definições.
-
8/18/2019 Fernando Nicodemos ITA
47/109
47
Tabela 4.1: Conjunto de instruções ladder.
MNEMÔNICO DEFINIÇÃO ADSUB Soma/subtrai uma constante de conteúdo de registro (Hex)
ADSUD Soma/subtrai uma constante de conteúdo de registro (Dec) AJUST Calcula o fator de ajuste e aplica AND Operação lógica "E" entre estados internos ANDN Operação lógica "E" entre estados internos invertidos ASCB Conversor ASCII p/ BCDBCDAP Conversão de dados Decimais p/ ASCII com ponto decimalBCDAS Conversão de dados Decimais p/ ASCIIBITW Transfere 16 estados p/um registro de 16 bitsBMOVX Movimentação de bloco de dados indexados na origem e no destinoCALL Chamada de sub-rotinaCMP Compara conteúdo de registros
CNT ContadorCNT2 Contador 2CONV Conversor Dec/Hex ou Hex/DecCONVL Conversor Dec/Hex ou