fernando nicodemos ita

Upload: antoniolamadeu

Post on 07-Jul-2018

217 views

Category:

Documents


0 download

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