Sei sulla pagina 1di 109

Dados Internacionais de Catalogao-na-Publicao (CIP)

Diviso Biblioteca Central do ITA/CTA


Nicodemos, Fernando Garcia
Anlise de Desempenho de Processadores Embarcados para Controladores Lgicos Programveis / Fernando
Garcia Nicodemos.
So Jos dos Campos, 2007.
108f.
Tese de mestrado Curso de Engenharia Eletrnica e Computao. rea de Dispositivos e Sistemas
Eletrnicos Instituto Tecnolgico de Aeronutica, 2007. Orientador: Prof. Dr. Osamu Saotome.
1. Processadores Embarcados. 2. Anlise de Desempenho. 3. Controladores Lgicos Programveis. I. Centro
Tcnico Aeroespacial. Instituto Tecnolgico de Aeronutica. Diviso de Engenharia Eletrnica e Computao.
II.Ttulo.

REFERNCIA BIBLIOGRFICA
NICODEMOS, Fernando Garcia. Anlise de Desempenho de Processadores Embarcados
para Controladores Lgicos Programveis. 2007. 108f. Tese de mestrado Instituto
Tecnolgico de Aeronutica, So Jos dos Campos.

CESSO DE DIREITOS
NOME DO AUTOR: Fernando Garcia Nicodemos
TTULO DO TRABALHO: Anlise de Desempenho de Processadores Embarcados para

Controladores Lgicos Programveis


TIPO DO TRABALHO/ANO: Tese / 2007

concedida ao Instituto Tecnolgico de Aeronutica permisso para reproduzir cpias desta


tese e para emprestar ou vender cpias somente para propsitos acadmicos e cientficos. O
autor reserva outros direitos de publicao e nenhuma parte desta tese pode ser reproduzida
sem a sua autorizao (do autor).

___________________________
Fernando Garcia Nicodemos
Rua Coronel Agostinho da Fonseca, 270 Serra da Cantareira
02340-050 So Paulo SP

iii

Anlise de Desempenho de Processadores Embarcados para


Controladores Lgicos Programveis

Fernando Garcia Nicodemos

Composio da Banca Examinadora:


Prof. Dr.
Prof. Dr.
Prof. Dra.
Prof. Dr.
Prof. Dr.
Prof. Dr.

Roberto dAmore
Osamu Saotome
Emlia Villani
Duarte Lopes de Oliveira
Paulo Eigi Miyagi
Renato C. Giacomini

Presidente - ITA
Orientador - ITA
Membro Interno - ITA
Membro Interno - ITA
Membro Externo - USP
Membro Externo - FEI (Suplente)

ITA

iv

Agradecimentos

Agradeo e dedico esta tese, acima de tudo, aos meus pais e irmo que sempre me
deram apoio e incentivo aos estudos, principalmente na escolha pela rea acadmica e de
pesquisa aplicada ao desenvolvimento de projetos. Sem eles nada teria sentido.
Agradeo o apoio prestado pelas empresas Atos, Alphatech, Daruma e Nishicom no
estudo e aplicao das tecnologias utilizadas nesta avaliao.
Reconheo o esforo do meu orientador Prof. Dr. Osamu Saotome, agradecendo a
ele meu desenvolvimento profissional alm da sua dedicao e apoio para que esta tese
pudesse ser realizada da melhor maneira possvel.
Agradeo com muito orgulho aos meus amigos Prof. Aguinaldo Prandini Ricieri e
Prof. Dr. Renato Giacomini pelo incentivo e apoio para o incio dos estudos no curso de
ps-graduao do ITA.
Agradeo a Fundao Casimiro Montenegro Filho e seus funcionrios pelo espao e
equipamentos cedidos para a realizao dos testes prticos desta tese.
Finalizando, este prazeroso trabalho dedicado aos demais professores e amigos que
trabalharam e estudaram comigo e que inmeras vezes contriburam para a soluo das
dificuldades encontradas.

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 criao do Universo perfeitssima,
e sendo trabalho do mais sbio criador,
absolutamente nada acontece sem que aparea uma relao de Mximo e Mnimo;
conseqentemente, no existe nenhuma dvida
de que todo efeito no universo possa ser explicado satisfatoriamente...
com a ajuda do Mtodo dos Mximos e Mnimos.

Leonhard Euler Methodus Inveniendi (Mtodo de Descobrir 1744)

vi

Resumo

Atualmente, existem disponveis processadores embarcados de diferentes procedncias


e tecnologias, incorporando em suas arquiteturas, memria cache e pipeline, alm de
otimizaes por compilador. As alternativas incluem desde microcontroladores de 8 bits at
processadores de 16 e 32 bits que custam entre uma faixa de preo de at US$10 dlares.
Nesse contexto, a grande variedade de solues em nvel de arquitetura torna relevante a
identificao de mtodos apropriados para medir o desempenho de um processador, tomando
por base de comparao a CPU (Central Processing Unit) de um CLP (Controlador Lgico
Programvel). Este trabalho procura preencher essa lacuna e tem como objetivo principal a
avaliao de processadores embarcados que possam ser utilizados em novos projetos de
sistemas no campo da automao de processos industriais. Nesta tese, ser introduzido o
princpio de funcionamento do CLP, seguido de conceitos e mtodos relativos avaliao de
desempenho em sistemas microprocessados. Ser discutida a mtrica apresentada pelos
fabricantes de CLP para fornecer o desempenho das suas CPUs. A partir do estudo estatstico
em programas ladder com aplicaes reais, definida uma carga de trabalho padro
consistindo de um programa em linguagem ladder utilizado como fundamento na criao de
um benchmark sinttico para a avaliao do desempenho dos processadores em estudo.
Finalmente, so apresentados os resultados para trs sistemas utilizando processadores com
arquiteturas diferenciadas e as razes que propiciaram o aumento de desempenho com relao
ao processador utilizado na CPU tomada como referncia comparativa.

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 microprocessed systems. The metric presented by the PLC manufacturers to provide the
performance of its CPUs 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.

viii

Lista de Ilustraes

Figura 2.1: Controle Analgico [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 genrico [3]. ...............................................................................26
Figura 2.5: Mapa genrico do sistema de memria 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 unitria correspondente a um VAX 11/780 e
crescimento na taxa do desempenho relativo baseado em avanos na tecnologia dos
semicondutores[1]........................................................................................................................................33
Figura 5.1: Figura ilustrativa dos tempos de execuo de 3 fabricantes distintos..........................................61
Figura 5.2: Linha do programa ladder definido como carga de trabalho padro. .........................................62
Figura 5.3: Fluxograma da execuo do benchmark sinttico. .........................................................................65
Figura 5.4: Medio do tempo de execuo com o auxlio do osciloscpio......................................................66
Figura 6.1: Diagrama em blocos do microcontrolador XA-G30 [7].................................................................68
Figura 6.2: Diagrama em blocos do ncleo do microcontrolador XA-G30 [7]. ..............................................69
Figura 6.3: Tempo de execuo do programa ladder no sistema de referncia. .............................................70
Figura 6.4: Diagrama em blocos do microprocessador eZ80190 [8]................................................................73
Figura 6.5: Diagrama simplificado do ncleo do microprocessador eZ80190 [8]. .........................................74
Figura 6.6: Tempo de execuo do microprocessador eZ80190 benchmark sinttico desenvolvido em
linguagem C e compilao 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 ncleo e perifricos do ADSP-2181 [9]...................................................82
Figura 6.9: Tempo de execuo do processador digital de sinais ADSP-2181 benchmark sinttico
desenvolvido em linguagem C e compilao no modo debug. .................................................................84
Figura 6.10: Diagrama em blocos do processador ADSP-BF533 [10]. ............................................................88
Figura 6.11: Diagrama em blocos do ncleo do processador ADSP-BF533 [10]. ...........................................89
Figura 6.12: Tempo de execuo do processador embarcado ADSP-BF533 benchmark sinttico
desenvolvido em linguagem C e compilao no modo debug. .................................................................93
Figura 7.1: Desempenhos relativos ao microcontrolador XA-G30 para o cdigo gerado pelo compilador e
para o cdigo gerado manualmente (modo debug de compilao). ......................................................100
Figura 7.2: Desempenhos relativos ao microcontrolador XA-G30 para o cdigo gerado pelo compilador e
para o cdigo gerado manualmente (modo release de compilao)......................................................101

ix

Lista de Tabelas

Tabela 3.1: Modelo de relatrio para o fornecimento de resultados................................................................44


Tabela 4.1: Conjunto de instrues ladder. ........................................................................................................47
Tabela 4.2: Conjunto de instrues ladder (continuao). ................................................................................48
Tabela 4.3: Contagem de instrues ladder no grupo de programas pequenos. .............................................49
Tabela 4.4: Contagem de instrues ladder no grupo de programas pequenos (continuao)......................50
Tabela 4.5: Contagem de instrues ladder no grupo de programas pequenos (continuao)......................51
Tabela 4.6: Contagem de instrues ladder no grupo de programas mdios. .................................................52
Tabela 4.7: Contagem de instrues ladder no grupo de programas mdios (continuao)..........................53
Tabela 4.8: Contagem de instrues ladder no grupo de programas grandes.................................................54
Tabela 4.9: Contagem de instrues ladder no grupo de programas grandes (continuao). .......................55
Tabela 4.10: Resultado total da contagem final. ................................................................................................56
Tabela 4.11: Contagem final das instrues ladder............................................................................................56
Tabela 4.12: Contagem final das instrues ladder (continuao). ..................................................................57
Tabela 4.13: Contagem final das instrues ladder (continuao). ..................................................................58
Tabela 6.1: Relatrio para o sistema de referncia. ..........................................................................................71
Tabela 6.2: Resumo de configuraes do sistema para anlise do eZ80190....................................................75
Tabela 6.3: Tempos de execuo segundo configuraes do sistema para o eZ80190....................................77
Tabela 6.4: Relatrio de desempenho do sistema para o microprocessador eZ80190. ..................................78
Tabela 6.5: Relatrio de desempenho do sistema para o microprocessador eZ80190 (continuao). ..........79
Tabela 6.6: Resumo da configurao do sistema para anlise do ADSP-2181................................................83
Tabela 6.7: Tempos de execuo segundo configurao do sistema para o ADSP-2181................................84
Tabela 6.8: Relatrio de desempenho do sistema para o DSP ADSP-2181. ....................................................85
Tabela 6.9: Resumo de configuraes do sistema para anlise do ADSP-BF533. ..........................................91
Tabela 6.10: Tempos de execuo segundo configuraes do sistema para o ADSP-BF533. ........................94
Tabela 6.11: Relatrio de desempenho do sistema para o ADSP-BF533.........................................................95
Tabela 6.12: Relatrio de desempenho do sistema para o ADSP-BF533 (continuao). ...............................96

Sumrio

Introduo ............................................................................................................. 12

Controlador Lgico Programvel ....................................................................... 18


2.1

Tipos de processos industriais.............................................................................................................18

2.2

Evoluo histrica do controle digital ................................................................................................20

2.3

Principais definies ...........................................................................................................................22

2.4

Princpio 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 memria ..............................................................................................................27
2.5.2
Interfaces de entrada e sada ...........................................................................................................28
2.5.2.1
Entradas e sadas analgicas..................................................................................................29
2.5.2.2
Entradas e sadas digitais.......................................................................................................29
2.6

Linguagens de programao ...............................................................................................................29

Fundamentos da anlise de desempenho de sistemas embarcados .................. 32


3.1

Evoluo do desempenho dos processadores......................................................................................32

3.2
Evoluo da informtica......................................................................................................................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
Mtodos de anlise 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 criao de benchmarks ........................................................................................42

3.6

Relatrio de apresentao do desempenho .........................................................................................44

Anlise estatstica em programas ladder reais ................................................... 45


4.1
Programas reais em linguagem ladder ...............................................................................................45
4.1.1
Nomenclatura adotada para a anlise..............................................................................................45
4.1.2
Critrio de contagem.......................................................................................................................46
4.2

Conjunto de instrues ladder.............................................................................................................46

4.3
Classificao dos programas ..............................................................................................................49
4.3.1
Programas ladder pequenos ............................................................................................................49
4.3.2
Programas ladder mdios ...............................................................................................................51
4.3.3
Programas ladder grandes...............................................................................................................53
4.4

Resultado estatstico total....................................................................................................................56

Parmetros de desempenho nos CLPs ................................................................ 60


5.1

Apresentao de medidas nos CLPs....................................................................................................60

5.2

Carga de trabalho padro ...................................................................................................................61

xi

5.2.1
5.2.2
5.2.3
5.2.4
5.3

Instruo ladder de entrada (LD)....................................................................................................62


Instruo ladder de sada (OUT) ....................................................................................................62
Regies de memria para o programa ladder e para o benchmark sinttico ..................................63
Princpio de operao do benchmark sinttico ...............................................................................64
Medida fsica do tempo de execuo ...................................................................................................65

Arquitetura dos processadores estudados e resultados obtidos ....................... 67


6.1
Microcontrolador XA-G30 ..................................................................................................................67
6.1.1
Arquitetura do ncleo do microcontrolador XA-G30.....................................................................68
6.1.2
Metodologia para aquisio do tempo de execuo do sistema de referncia................................69
6.1.3
Resultado do sistema de referncia.................................................................................................70
6.1.4
Relatrio do sistema de referncia ..................................................................................................71
6.2
Microprocessador eZ80190.................................................................................................................72
6.2.1
Arquitetura do ncleo do microprocessador eZ80190....................................................................73
6.2.2
Metodologia de medio do tempo de execuo do eZ80190 no sistema ......................................74
6.2.3
Resultados da avaliao do sistema para o eZ80190 ......................................................................76
6.2.4
Relatrio 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 ncleo do processador digital de sinais ADSP-2181..............................................81
6.3.2
Metodologia de medio do tempo de execuo do ADSP-2181 no sistema.................................82
6.3.3
Resultados da avaliao do sistema para o ADSP-2181.................................................................83
6.3.4
Relatrio 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 ncleo do processador embarcado ADSP-BF533 ..................................................88
6.4.2
Metodologia de medio do tempo de execuo do ADSP-BF533 no sistema..............................90
6.4.3
Resultados da avaliao do sistema para o ADSP-BF533..............................................................92
6.4.4
Relatrio de desempenho do sistema para o ADSP-BF533............................................................94
6.4.5
Desempenho relativo do processador embarcado ADSP-BF533 ...................................................96

Concluso .............................................................................................................. 98
7.1

Trabalhos futuros...............................................................................................................................107

Referncias .................................................................................................................. 108

12

1 Introduo

Produtos mais competitivos e de maior qualidade figuram entre os maiores objetivos


da indstria moderna. Grande parte delas tem buscado mquinas de alto nvel tecnolgico,
sendo que em muitos desses casos, a implementao de processos mais complexos se torna
uma soluo inevitvel. Para a automatizao desses processos, cada vez mais so utilizados
sistemas de controle digital conhecidos como Controladores Lgicos Programveis (CLP ou
em ingls Programmable Logic Controller PLC).
Atualmente, existem disponveis processadores embarcados de diferentes procedncias
e tecnologias a custos acessveis que ganharam destaque ao incorporar em suas arquiteturas as
tecnologias de memria cache e pipeline. Estes incluem desde microcontroladores de 8 bits
para aplicaes simples que podem custar menos de US$1,00 dlar at processadores de 16 e
32 bits capazes de executar 100 milhes de instrues por segundo, utilizados em aplicaes
mais complexas e que custam menos de US$10,00 dlares. Neste trabalho so considerados
apenas os processadores na faixa de preo mencionada e aplicveis aos CLPs.
A multiplicidade de opes e a necessidade de avaliar solues baseadas em diferentes
arquiteturas, muitas vezes de difcil comparao, torna essencial o trabalho de investigar uma
forma de medida de desempenho adequada capacidade de processamento dos processadores
embarcveis em uma CPU (Central Processing Unit) de um CLP. Inicialmente, foi realizada
uma pesquisa referencial aprofundada para identificar mtodos apropriados para a avaliao
do desempenho de processadores. Para aplicaes embarcadas que podem ser bem
caracterizadas pelo desempenho de um kernel, a avaliao pode contar com um conjunto
padro de benchmarks conhecido como EEMBC (EDN Embedded Microprocessor
Benchmark Consortium). O conjunto subdividido em 6 classes: automotiva/industrial,
consumidor, telecomunicaes, entretenimento digital, redes de comunicao e automao em

13

escritrios. Pelo fato de usarem kernels e pelas opes restritas de fornecimento dos
resultados, os benchmarks EEMBC no possuem a reputao de serem bons medidores de
desempenho relativo entre diferentes sistemas. O programa sinttico Dhrystone, na qual o
EEMBC tenta substituir, ainda utilizado para fornecer resultados de desempenho em
algumas aplicaes embarcadas [2]. Neste contexto, a utilizao dos benchmarks EEMBC no
totalmente adequada a este trabalho principalmente pelo fato de no operar com nfase
funcional e estruturada na linguagem ladder, a mais usada para desenvolver programas
aplicativos em CLPs no mercado brasileiro, alm do fato de ser uma medida de desempenho
fechada e de alto custo.
Como alternativa, esto disponveis programas benchmarks conceituados em cinco
diferentes nveis listados em ordem de preciso e exatido de predio de desempenho. So
apresentados como: aplicaes reais, aplicaes modificadas (ou scripts), kernels, toy
benchmarks e benchmarks sintticos [1]. Estes so adequados para a avaliao de
desempenho deste trabalho, pois alm da possibilidade de serem estruturados e moldados com
base na linguagem ladder, so programas que podem ser utilizados de acordo com seu tipo e
sua definio ao objetivo desta proposta.
O presente trabalho procura preencher essa lacuna utilizando-se da disponibilidade
desses programas e tem como objetivo principal a avaliao criteriosa do desempenho de
processadores embarcados a serem utilizados em novos projetos de sistemas que atendam
crescente demanda no campo da automao de processos industriais. Essa avaliao
proposta como um meio de atender ao requisito de aumento de desempenho baseado em uma
soluo em nvel de arquitetura proposta para o projeto de uma nova CPU para um fabricante
de CLP.
So abordadas as definies e princpio de funcionamento do CLP, tendo como foco
principal, o controle de processos com variveis do tipo digital. As principais linguagens de

14

programao do CLP so apresentadas com nfase na linguagem ladder pelo fato de ter
surgido a partir de diagramas de controle a rels utilizados nos controles de processo
predecessores, alm de ser comumente utilizada e no ser dependente de um nico fabricante.
Para uma avaliao fundamentada, fornecida a relao de desempenho relativo entre
dois sistemas passveis de comparao. So comentados os pacotes integrados de benchmarks
e definido o nvel de programa utilizado como mtodo de medio do desempenho dos
processadores embarcados. O programa tem por base de escolha o conceito do benchmark
sinttico dentre cinco nveis disponveis. Um modelo de relatrio para a apresentao dos
resultados obtidos na avaliao tambm fornecido.
A escolha de um programa para avaliao do desempenho dos processadores em
anlise, torna relevante o estudo aprofundado de programas aplicativos utilizados em controle
de processo para a criao de uma carga de trabalho adequada anlise de um processador da
CPU de um CLP. Desta forma, so tomados para estudo 31 programas ladder com distintas
aplicaes reais. realizada uma classificao em trs grupos de programas de acordo com o
nmero de linhas de programa ladder presentes neste conjunto abordado. Como resultado
apresentada uma anlise estatstica das instrues ladder nos programas estudados, resultando
em uma contagem com nmeros parciais nos trs grupos de programas e em nmeros do
resultado total.
So apresentados os resultados de uma ampla pesquisa de medidas e unidades
fornecidas pelos fabricantes de CLP. Com base na anlise estatstica praticada e nas
referncias obtidas com a pesquisa mtrica criado um programa ladder definido como carga
de trabalho padro. Este utilizado para medir o tempo de execuo co-relacionado com o
processador embarcado em uma CPU de um CLP definido como uma referncia de
comparao para os demais processadores este trabalho. Baseado no princpio de operao do
programa ladder, aplicado o conceito do mtodo definido e criado um benchmark sinttico

15

com verses em linguagem C e Assembly para a avaliao de cada arquitetura escolhida como
possvel componente de um novo projeto.
Finalmente, feita a aquisio dos tempos de execuo do benchmark sinttico
implementado nos processadores em estudo e so apresentados os resultados do desempenho
relativo de trs processadores com arquiteturas diferenciadas, alm das razes que
propiciaram o aumento de desempenho em relao ao processador adotado como referencial
comparativo.
Alm do captulo 1 introdutrio, esta tese composta de 6 captulos: o texto,
apresentado nos captulos de 2 a 6 e o captulo 7 de concluso e proposta para a seqncia
deste trabalho.
No captulo 2 definido o processo com variveis contnuas e a aplicao do controle
contnuo e o processo com variveis digitais e a aplicao do controle digital. abordada uma
breve descrio da evoluo histrica do controle por lgica de rels at o Controlador Lgico
Programvel dos dias de hoje. A literatura citada trata estes assuntos com maior profundidade
e no h pretenso, neste texto, de substitu-la. So abordadas as principais definies para o
entendimento de um CLP bem como o seu princpio de funcionamento e os seus elementos de
hardware. Neste captulo, so abordadas tambm, as principais linguagens de programao
dos CLPs disponveis atualmente, com apresentao enftica na linguagem ladder.
No captulo 3 busca-se fornecer uma viso apenas sobre os aspectos relevantes dos
fundamentos da anlise de desempenho de sistemas embarcados microprocessados. Na
primeira seo feita uma breve descrio da evoluo histrica dos processadores. A partir
dessa evoluo, so apresentados os rumos da computao e comentada a diviso deste
mercado em trs nichos de atuao: servidores, desktops e sistemas embarcados. Na segunda
seo so fornecidos os conceitos para a avaliao atravs do desempenho relativo entre dois
sistemas. So comentados os pacotes de benchmarks existentes e os motivos pela no adoo

16

destes na avaliao de desempenho deste trabalho. Como alternativa, so discutidos cinco


nveis de programas utilizados na medio de desempenho listados em ordem de exatido e
preciso. definido o benchmark sinttico como mtodo de medio dos processadores
embarcados em estudo e as razes pela sua escolha. Finalmente proposto um modelo de
relatrio de desempenho para apresentar os parmetros de ajuste da avaliao e fornecer os
resultados dos processadores em estudo.
No captulo 4 so apresentados 31 programas ladder com aplicaes reais em controle
de processos e as nomenclaturas adotadas. definido o conjunto de instrues ladder
utilizado para o desenvolvimento dos programas estudados. fornecido o mtodo de
contagem das instrues ladder e feita uma classificao em 3 grupos de programas de
acordo com a quantidade de linhas de programa ladder utilizadas. Como resultado,
fornecida uma anlise estatstica onde so demonstrados os nmeros parciais referentes ao
agrupamento adotado e os nmeros relativos ao total de instrues aferidas ao conjunto de
programas avaliados.
No captulo 5 realizada uma ampla pesquisa dentre os fabricantes de CLP com a
finalidade de obter as formas de apresentao do desempenho relacionado com o processador
de suas CPUs. Com base no resultado estatstico obtido com o estudo dos programas reais e
nos resultados da pesquisa, criado um programa ladder utilizado como carga de trabalho
padro adequada ao estudo do processador de uma CPU definida como referncia
comparativa. apresentado o princpio de operao da carga de trabalho de acordo com o
programa ladder desenvolvido. Baseado na operao desse programa, utilizado o mtodo
definido possibilitando a criao de um benchmark sinttico nas linguagens C e Assembly
para a avaliao dos processadores embarcados deste trabalho.
No captulo 6 o primeiro processador apresentado faz parte da CPU definida como
referncia comparativa para o estudo dos demais processadores embarcados escolhidos. Neste

17

captulo so apresentados, tambm, as arquiteturas de trs processadores estudados, os


resultados obtidos experimentalmente atravs da implementao do benchmark sinttico
criado, o relatrio de desempenho e o desempenho relativo de cada processador em relao ao
sistema de referncia adotado.
No captulo 7 conclusivo so apresentadas as razes que contriburam para o aumento
de desempenho em relao ao sistema de referncia adotado e os comentrios sobre cada
arquitetura estudada. So sugeridas etapas adicionais de desenvolvimento e aplicao para a
continuao deste trabalho.

18

2 Controlador Lgico Programvel

2.1 Tipos de processos industriais

Atualmente, cada vez mais comum a utilizao de processos automatizados na


fabricao de produtos industrializados mais competitivos. Estes podem ser agrupados em
dois tipos principais de processo industrial segundo a manipulao das variveis a serem
controladas: processo do tipo analgico e processo do tipo digital [3].
O processo do tipo analgico caracterizado quando h, em sua grande maioria,
variveis do tipo analgicas ou contnuas no tempo. Um processo deste tipo caracterizado
quando o produto final obtido continuamente na sada enquanto a matria-prima
introduzida na entrada. As indstrias que possuem processos de manipulao de lquidos,
como o caso das petroqumicas, utilizam com freqncia este tipo de processo. Neste caso,
so usados sistemas de controle contnuo ou do tipo analgico [3].
No controle analgico utiliza-se diretamente dos sinais de entrada dos sensores e agese sobre dispositivos de sada associados (atuadores) ao controle do processo. Os atuadores
podem tambm envolver sinais contnuos ou simplesmente sinais de on/off. O processamento
do sinal realizado pelo sistema de controle envolve tipicamente a amplificao do sinal e uma
funo matemtica, alm de integrao e soma com o intuito de obter a mudana desejada no
dispositivo de sada [4]. A figura 2.1 mostra o exemplo de um esquema bsico de controle do
tipo analgico.

19

Figura 2.1: Controle Analgico [4].


O processo do tipo digital caracterizado quando as variveis so do tipo discretas ou
digitais [3]. Tambm h possibilidade de algumas variveis analgicas serem utilizadas, o que
implicaria o uso de conversor analgico-digital para a manipulao dos dados. Tipicamente,
neste tipo de processo o produto passa por vrias operaes ou montagens antes de tomar a
sua forma final [4]. As indstrias manufatureiras, como por exemplo a indstria
automobilstica, utilizam com freqncia este tipo de processo.
O controle digital o mais utilizado atualmente pelas indstrias. Diferentemente do
controle analgico, as mquinas e processos so controlados atravs de dispositivos (sensores
e atuadores) de acordo com o processamento de operaes lgicas ou de uma seqncia de
eventos definidos [4]. A figura 2.2 mostra o exemplo de um esquema bsico de controle do
tipo digital.

Figura 2.2: Controle Digital [4].

20

O sistema microprocessado de controle digital destinado a processos caracterizados


com variveis do tipo digital o objeto de referncia para a anlise dos processadores
embarcados deste trabalho. O captulo 6 trata a tecnologia e a arquitetura dos processadores
adotados com maior nvel de detalhamento.

2.2 Evoluo histrica do controle digital

O controle digital de processos teve seu incio marcado pela utilizao de dispositivos
eletromecnicos conhecidos como rels. Durante a dcada de 50 e at o incio da dcada de
60, estes eram os recursos mais utilizados e praticamente a nica opo para efetuar controles
lgicos nas linhas de produo e em mquinas isoladas. Para efetuar o controle, os contatores,
temporizadores e dispositivos de proteo constituam a base de projetos de intertravamentos
elaborados em diagramas a rels (eram os chamados painis de controle a rels em ingls
relay panel). As chaves e os contatos estabeleciam os nveis lgicos baseados na lgica
binria. Tais sistemas de controle, apesar de funcionais, apresentavam problemas de ordem
prtica bastante relevantes. Como as instalaes possuam uma grande quantidade de
elementos, a ocorrncia de uma falha qualquer significava o comprometimento de vrias
horas ou mesmo dias de trabalho e pesquisa para a correo do elemento faltoso. Os rels
apresentavam dimenses fsicas elevadas, fazendo com que os painis ocupassem um grande
espao, alm de exigir um projeto com alto grau de proteo associado (umidade,
temperatura, gases inflamveis, oxidaes, poeira, etc.) [3].
Outro fator ainda mais comprometedor na utilizao dos painis a rels era o fato de
que, como a programao lgica do processo controlado era realizada por interconexes
eltricas fixas (hardwired), eventuais alteraes exigiam interrupes no processo produtivo.

21

Como conseqncia, tornava-se obrigatria a atualizao das listas de fiao para garantir a
documentao do sistema [3].
Com o intuito de substituir as vlvulas a vcuo, o avano da tecnologia permitiu o uso
de alguns dispositivos transistorizados no final da dcada de 50 e incio dos anos 60. Tais
dispositivos conseguiram uma grande reduo de muitos problemas existentes nos rels.
Porm foi com o surgimento de componentes eletrnicos 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 automao indutrial [3].
A primeira conceituao dos Controladores Lgicos Programveis (CLP ou em ingls,
Programmable Logic Contoller PLC) e a primeira experincia de um controle de lgica que
permitisse a programao por recursos de software foi realizada em 1968 na diviso de
hidramticos da General Motors Corporation. Este deveria ter as seguintes caractersticas [4]:

Fcil programao e reprogramao, preferencialmente na planta da indstria;

Fcil manuteno e reparo, preferencialmente pela utilizao de mdulos


interconectveis;

Mais confivel no ambiente de trabalho e de menor tamanho que o seu


equivalente a rels;

Competitivo no custo em relao aos painis a rels 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 painis de controle a rels.
Deste ponto em diante, com o aparecimento das demandas, as capacidades e facilidades do
CLP foram facilmente implementadas com o avano da tecnologia [4].

22

A primeira gerao 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, alm dos CLPs contarem com diversas
tecnologias embarcadas, contam tambm com diversas linguagens de programao e padres
internacionais para o desenvolvimento de programas destinados ao controle do processo
produtivo.

2.3 Principais definies

Devido ampla gama de equipamentos e sistemas disponveis, aliada crescente


capacidade de recursos que o CLP vem agregando, existe a possibilidade deste ser confundido
com outros equipamentos do mercado. Assim, uma identificao de um equipamento como
sendo um Controlador Lgico Programvel dada por 3 caractersticas bsicas [3]:

O equipamento deve executar uma rotina cclica de operao enquanto em


funcionamento;

A forma bsica de programao deve ser realizada a partir de uma linguagem


oriunda dos diagramas eltricos de rels;

O produto deve ser projetado para operao em ambiente industrial e deve ser
preparado para diversas condies ambientais.

23

A utilizao de siglas tambm um fator de grande confuso no meio da automao


industrial. As mais utilizadas so [3]:

PLC: a abreviatura de origem americana do termo em ingls Programmable Logic


Controller. Outra sigla de mesmo propsito porm pouco utilizada a PBS Programmable
Binary System de origem sueca [4].

CLP: traduo para o portugus da sigla PLC, Controlador Lgico Programvel, a


qual adotada neste e nos demais captulos quando se fizer meno a tal equipamento.

CP: traduo para o portugus do termo Programmable Controller (PC) de origem


inglesa, a qual se refere a um equipamento misto com capacidade de efetuar funes de
controle alm das funes lgicas.

2.4 Princpio de funcionamento

O princpio de funcionamento de um CLP consiste na execuo de um programa


executivo que realiza ciclicamente as aes de leitura das entradas, execuo do programa de
controle do usurio e atualizao das sadas. So relacionados com os respectivos conceitos
bsicos [3]:

Variveis de entrada: so sinais externos recebidos pelo CLP oriundos de fontes


pertencentes ao processo controlado ou comandos gerados pelo operador. So gerados por
dispositivos como sensores, chaves ou botoeiras, dentre outros.

24

Variveis de sada: so sinais controlados por cada dispositivo de sada do CLP. Tais
pontos servem para interveno direta no processo controlado por dispositivo de acionamento
prprio, ou tambm para sinalizao de estado. So exemplos de dispositivos de sada os
contatores, vlvulas, lmpadas, displays, dentre outros.

Programa de controle do usurio: programa desenvolvido pelo usurio,


caracterizado por uma aplicao especfica baseada em linguagens padronizadas dos CLPs, a
partir de um conjunto de instrues oferecido pelo fabricante com intuito de efetuar as aes
de controle lgico desejadas. Um programa de controle do usurio pode ativar ou no as
memrias internas e os sinais de sada a partir da monitorao do estado das mesmas
memrias internas e dos sinais de entrada do CLP.

O tempo total para a leitura das entradas, execuo do programa de controle do


usurio e a atualizao das sadas definido como tempo de varredura (scan time) ou ciclo de
varredura e depende, dentre outros fatores, do desempenho e das caractersticas arquiteturais
do processador utilizado, da tecnologia empregada no software do programa executivo e da
forma do desenvolvimento do programa de controle do usurio, alm da quantidade e tipo de
sinais de entrada e sada.
Em algumas situaes crticas de controle, em que o processo no pode esperar todo o
ciclo 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
execuo do ciclo de varredura para, prioritariamente, atender a situao chamada [3].
A figura 2.3 mostra o ciclo de varredura executado pelo programa executivo
correspondente ao princpio de funcionamento do CLP.

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 portugus Unidade Central de Processamento) e os mdulos de I/O
para as interfaces com as variveis de entrada e sada. A figura 2.4 mostra o diagrama em
blocos de um CLP genrico [3].

26

Figura 2.4: Diagrama em blocos de um CLP genrico [3].

2.5.1 A CPU

A CPU o elemento principal de um CLP pois responsvel pelo processamento


lgico e controle de todas as aes definidas pelo programa de controle do usurio.
Em alguns CLPs, o processador, a memria e os mdulos de I/O compem uma
unidade fsica nica. J em CLPs de grande porte, o processador e as memrias compem
uma unidade fsica e os mdulos de I/O so utilizados em unidades fsicas separadas. A CPU
composta de duas partes: processador e o sistema de memria [5].

2.5.1.1 Processador

As capacidades e as caractersticas dos CLPs esto intimamente relacionadas com a


qualidade do processador utilizado, que pode ser denominado microprocessador ou
microcontrolador, conforme o caso. Com o avano da tecnologia, os termos Digital Signal
Processor (DSP em portugus Processador de Sinais Digitais) e processador embarcado
ganharam grande relevncia, pois alm de apresentarem algumas das caractersticas
arquiteturais avanadas presentes em grandes processadores, possuem uma boa relao preodesempenho e tambm atendem aos requisitos de um CLP.

27

Os processadores podem ser classificados, a priri, pelo tamanho da informao que


podem manipular. Processadores de 8 bits, 16 bits e 32 bits so os mais encontrados. Outro
fator relevante em um processador de uma CPU a sua capacidade de processamento, cuja
freqncia de operao, atualmente alcana centenas de megahertz [5]. Entretanto, a
caracterizao de um processador somente pela freqncia de operao no determina
totalmente o seu desempenho, h outras caractersticas arquiteturais que fazem com que o
conjunto merea uma avaliao para definir o quanto de eficincia est agregado tecnologia
que se deseja utilizar.
de grande importncia, tambm, que o conjunto de instrues do processador seja
relativamente flexvel bem como o tamanho da memria interna e externa que pode ser
endereada alm da quantidade de I/Os disponveis a aplicao [3].

2.5.1.2 Sistema de memria

O termo programvel do CLP implica que o programa executivo, o programa de


controle do usurio e dados a serem manipulados devem estar ou ser armazenados em algum
local. Tal regio denominada sistema de memria, que deve ser devidamente organizada [3].
Na organizao do sistema de memria dos CLPs so utilizadas memrias volteis e
no volteis. Atualmente, os tipos de memria mais utilizados so as FLASH para
armazenamento do programa executivo e programa de controle do usurio, SRAM e SDRAM
para armazenar as instrues 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 propsito de manter os dados que esto armazenados nas memrias
volteis.

28

Deste modo, a forma como organizado o mapa de memria em um CLP varia de


fabricante para fabricante e ainda entre diferentes modelos de um mesmo fabricante. Porm,
como as necessidades inerentes operao de um CLP so semelhantes, possvel
generalizar que um mapa de memria seja composto por cinco regies distintas, como ilustra
a figura 2.5 [3].

Figura 2.5: Mapa genrico do sistema de memria de um CLP [3].

2.5.2 Interfaces de entrada e sada

O sistema de entradas e sadas (I/O) realiza a conexo fsica entre a CPU e o mundo
externo por meio de vrios tipos de circuito de interfaceamento. Este sistema subdividido
em: interface de natureza digital e interface de natureza analgica.

29

2.5.2.1 Entradas e sadas analgicas

Com as potencialidades de processamento aritmtico dos processadores que passaram


a integrar os atuais CLPs, foram adicionadas aos sistemas novas caractersticas de controle.
Nesta modalidade, a recepo ou envio de sinais realizada principalmente por pontos
de entrada e sada analgicos, o que implicaria na utilizao de um conversor analgicodigital ou digital-analgico para a manipulao das informaes caso fossem utilizadas em
controles digitais [3].

2.5.2.2 Entradas e sadas digitais

So os tipos de sinal mais comumente encontrados em sistemas automatizados com


CLPs. Nesses tipos de interface, a informao consiste em um nico bit cujo estado pode
apresentar as situaes de ligado e desligado [3].
Neste caso, as condies de entrada do CLP so lidas por pontos de entrada digitais e
armazenadas na memria, a partir de onde so executadas as instrues lgicas programadas
de acordo com o status lido. A partir do programa executado, valores de sada so gerados
para os pontos de sada, permitindo assim que o sistema de controle atue no processo [4].

2.6 Linguagens de programao

Com a criao dos CLPs para substituir os painis de controle a rels, surgiu tambm a
necessidade de uma linguagem de programao que fosse familiar experincia de pessoas
envolvidos com a lgica de rels [3]. Este fato implica na necessidade de uma linguagem de
alto nvel para fornecer comandos prximos s funes utilizadas por um profissional de

30

controle, mas sem a complexidade e o tempo de aprendizado associado com as linguagens de


alto nvel dos computadores [4]. Desta forma, para a programao de um CLP foram criadas
linguagens simblicas que descrevem as funes dos painis e realizam programas de
controle do usurio similares lgica de rels utilizadas nos painis predecessores.
A norma internacional IEC 61131-3 define 2 linguagens grficas (diagrama ladder e
blocos funcionais) e 2 linguagens textuais (mnemnicos booleanos e parmetros idiomticos)
como as principais formas de programao dos CLPs [6]. A figura 2.6 mostra o exemplo de
um trecho bsico de programa de controle do usurio descrito nas quatro linguagens.

Figura 2.6: Trecho de programa nas quatro principais linguagens [3].

A norma tambm define uma quinta forma de programao, o diagrama SFC


Sequential Function Chart. O SFC uma representao grfica do modelamento atravs de
redes de petri em conjunto com funes booleanas. Tem a funo de realizar funes de
controle seqencial e tem grande importncia para a representao de decises complexas [3]
[6]. Atualmente, alguns fabricantes fornecem a opo de programar o CLP diretamente
atravs da linguagem C sem se basear em qualquer outra linguagem de maior nvel.

31

Dentre as linguagens apresentadas, o diagrama ladder tem sido o mtodo mais comum
e a forma mais clara de descrever a lgica dos circuitos a rels no mercado brasileiro. Sua
utilizao na programao dos CLPs tornou-se natural com a necessidade de substituir os
antigos painis, criando assim o ambiente familiar desejado para o usurio ou para o projetista
das lgicas de controle [4].
Um diagrama ladder consiste de linhas horizontais e verticais que representam as
conexes eltricas e de smbolos padres para representar os elementos dos circuitos e as
funes encontradas em um sistema de controle. No exemplo da figura 2.6 foram
apresentados smbolos comumente utilizados: instruo de entrada ou contato normalmente
aberto (I0 e I1), contato normalmente fechado (I2) e instruo de sada (O1). De acordo com
padres internacionais atuais, a simbologia da linguagem ladder pode ser utilizada para
realizar qualquer lgica de controle e os diagramas produzidos podem ser to complexos
quanto forem as necessidades das aplicaes de controle [4]. Por ser considerada uma
linguagem de mais alto nvel, um compilador tem o papel de traduzir estes smbolos nas
linguagens utilizadas pelos processadores mais recentes, usualmente em C ou Assembly.
Pelo fato de no depender de um nico fabricante, o diagrama ladder a forma de
programao do CLP utilizada neste trabalho para a definio de uma carga de trabalho
padro adequada anlise de um processador embarcado em uma CPU. O programa ladder
definido como carga de trabalho padro ser utilizado na criao de um benchmark sinttico
para avaliar o desempenho das diferentes arquiteturas dos processadores escolhidos face ao
referencial adotado para o estudo. O programa ladder ser apresentado no captulo 5.

32

3 Fundamentos da anlise de desempenho de sistemas embarcados

3.1 Evoluo do desempenho dos processadores

A tecnologia dos computadores sofreu um grande progresso desde que foi criado o
primeiro computador eletrnico de propsito geral h 55 anos. Durante os seus primeiros 25
anos, tanto avanos na tecnologia quanto inovaes no projeto da arquitetura contriburam
para a alta taxa de evoluo. Neste perodo o desempenho apresentava uma taxa de
crescimento de 25% a 30% ao ano para os mainframes e os minicomputers que
predominavam na indstria da poca [1].
Entretanto, no comeo da dcada 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 produo em massa, resultou em um aumento na utilizao de equipamentos
comerciais baseados em sistemas microprocessados [1]. Em particular, foi no fim desta
dcada que as indstrias iniciaram a utilizao de CLPs baseados em microprocessadores para
o controle de processos, como mencionado no captulo anterior.
No incio da dcada de 80, foi possvel o desenvolvimento de um novo conjunto de
arquiteturas, chamadas arquiteturas RISC (Reduced Instruction Set Computer). As arquiteturas
baseadas em RISC concentraram a ateno dos projetistas em duas tcnicas para aumentar o
desempenho dos processadores, a explorao do paralelismo em nvel de instrues
(inicialmente atravs do pipeline e mais tarde atravs do multiple instruction issue) e o uso de
memria cache (inicialmente de forma simples e mais tarde usando formas de organizao e

33

tcnicas de otimizao mais sofisticadas). A combinao de avanos 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 evoluo descrita anteriormente e sintetiza o efeito da diferena
nas taxas de crescimento do desempenho relativo baseados nos avanos de arquitetura e em
avanos 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 unitria
correspondente a um VAX 11/780 e crescimento na taxa do desempenho relativo
baseado em avanos na tecnologia dos semicondutores[1].

A literatura trata os conceitos relativos arquitetura RISC (utilizados como tcnicas de


aumento de desempenho nas arquiteturas dos processadores estudados) com maior
profundidade e riqueza de detalhes, portanto no sero abordados neste trabalho.

34

3.2 Evoluo da informtica

Na dcada de 60, a forma dominante de computao se limitava aos mainframes que


eram mquinas que custavam milhes de US dlares e ocupavam um grande espao, alm de
utilizar vrios operadores para o suporte. As aplicaes tpicas incluam o processamento de
dados comerciais e a computao cientfica em grande escala. O surgimento dos
minicomputers e dos CLPs microprocessados marcaram os anos 70. Estes eram mquinas de
dimenses bem menores, dedicadas inicialmente s aplicaes em laboratrios cientficos, e
que no caso dos minicomputers, logo ampliou seus limites medida que a tecnologia do
compartilhamento do tempo se disseminou. Este consistia de diversos usurios
compartilhando um computador interativamente pela utilizao de terminais independentes.
Na dcada de 80 surgiram os desktops baseados em microprocessadores, na forma de
computadores pessoais e de estaes de trabalho. Os desktops de um nico usurio
substituram o compartilhamento de tempo levando ao surgimento de servidores. Na dcada
de 90, surgiram a internet e a World Wide Web, os primeiros computadores de mo
(handhelds) e outros aparelhos digitais de alto desempenho [1].
Essas mudanas definiram o cenrio de uma transformao drstica na maneira de
encarar os mercados da informtica e as aplicaes da computao e dos computadores. Esses
fatos levaram a trs mercados de computao, cada qual caracterizado por diferentes
aplicaes, requisitos e tecnologias. O mercado dividiu-se nos seguintes nichos de atuao:
desktops, servidores e sistemas embarcados [1].
Os setores da computao de desktop e servidores sero resumidamente apresentados,
pois o foco deste trabalho o mercado de sistemas embarcados, em particular para a
automatizao de processos.

35

3.2.1 Desktops

O mercado de desktops ainda o primeiro e o maior em termos financeiros. Este se


estende desde sistemas de nvel simples que so vendidos por preos abaixo de US$1.000,00
dlares, at estaes de trabalho de alta tecnologia que podem custar mais de US$10.000,00
dlares. A combinao de desempenho (medido principalmente em termos de desempenho de
clculo e desempenhos grficos) e preo do sistema so os fatores mais importantes para os
projetistas dessa classe de computadores [1].
Em conseqncia disto, neste ramo que aparecem os processadores de maior
desempenho e as tendncias e avanos da tecnologia que influenciam os outros mercados. O
mercado de desktops tambm tende a ser caracterizado em termos de aplicaes e benchmarks
embora o uso crescente de aplicaes na Web induza novos desafios na avaliao 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 servios mais confiveis e em maior escala. A World Wide
Web acelerou essa tendncia devido ao crescimento na demanda por servidores Web e o
aumento da sofisticao dos servios baseados nela. Os servidores tm um papel importante
na computao empresarial em grande escala e so usados para substituir o mainframe
tradicional [1].
No caso dos servidores, diferentes caractersticas so importantes. Primeiro, a
disponibilidade crtica, ou seja, o sistema tem que fornecer um servio de forma confivel e
eficiente ininterruptamente. Parte desses sistemas inevitavelmente pode falhar e assim, em

36

geral utilizada redundncia para manter a disponibilidade do sistema. Uma segunda


caracterstica de sistemas servidores a escalabilidade. A habilidade de aumentar a escala da
capacidade de processamento, memria, armazenamento, e de largura de banda de I/O
crucial. Por fim, os servidores so projetados para um throughput eficiente. A eficincia
global e a relao custo-benefcio, determinada pela quantidade de solicitaes que podem ser
tratadas em um determinado perodo de tempo, so as mtricas fundamentais para a maioria
dos servidores [1].

3.2.3 Sistemas embarcados

Os sistemas embarcados compem o setor que apresenta atualmente o maior e mais


rpido crescimento do mercado da informtica. Estes so caracterizados por computadores de
bordo hospedados em outros dispositivos ou sistemas cuja presena no bvia. A classe
embarcada tem disponvel a mais ampla faixa de capacidade de processamento e custo,
incluindo desde microcontroladores de 8 e 16 bits para aplicaes simples que podem custar
menos de US$1,00 dlar, at processadores de 32 bits utilizados em aplicaes mais
complexas capazes de executar 100 milhes de instrues por segundo e que custam menos
de US$10,00 dlares [1].
Em muitos casos, o requisito de desempenho em uma aplicao embarcada um
requisito de tempo real. Requisito de tempo real aquele em que uma parte da aplicao tem
um tempo de execuo mximo absoluto permitido e tende a ser bastante dependente da
aplicao. Em geral, um requisito de tempo real medido atravs do uso de kernels, seja a
partir de uma aplicao real ou de um benchmark padronizado para embarcados (benchmarks
EEMBC) [1]. Existem outras duas caractersticas importantes nas aplicaes embarcadas: a
necessidade de minimizar a memria utilizada e o consumo de energia. O ideal que a

37

aplicao necessite apenas das memrias internas do componente, porm na grande maioria
das vezes necessria a utilizao de memrias externas. Assim sendo, memrias adicionais
podem representar uma poro 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 rpido do que um outro quando uma
carga de trabalho executada em menor tempo. Desta forma, existe interesse por parte do
usurio em reduzir o tempo de resposta (tempo entre o incio e o trmino do evento), tambm
conhecido como tempo de execuo.
Na comparao de dois casos alternativos, so apresentados o desempenho de dois
sistemas diferentes, ditos sistema X e sistema Y. A frase X mais rpido que Y usada
quando o tempo de execuo em X menor do que em Y para o processamento de uma
mesma carga de trabalho. De forma genrica, dizer que X n vezes mais rpido que Y
significa obter a seguinte relao de desempenho relativo [1]:

D rel. =

tempo de execuo y
tempo de execuo x

=n

Uma vez que o tempo de execuo o inverso do desempenho, temos a seguinte


relao entre os sistemas X e Y:

1
tempo de execuo y Desempenho y Desempenho x
D rel. =
=
=
=n
1
tempo de execuo x
Desempenho y
Desempenho x

38

Assim, aumentar o desempenho de um sistema significa diminuir o seu tempo de


execuo.

3.4 Mtodos de anlise de desempenho

Inicialmente, foi realizada uma pesquisa referencial para identificar benchmarks


apropriados para a avaliao do desempenho de processadores. Foram identificados 3
principais mtodos: pacotes integrados de benchmarks, benchmarks para embarcados e
programas especficos utilizados como benchmarks.
Os pacotes integrados de benchmarks so muito utilizados para avaliar o desempenho
de desktops e servidores e no se aplicam neste trabalho. Para as aplicaes embarcadas que
podem ser caracterizadas pelo desempenho de um kernel, a avaliao pode contar com um
conjunto padro de benchmarks conhecido como EEMBC (EDN Embedded Microprocessor
Benchmark Consortium) [1]. Este trabalho ter foco nos programas especficos utilizados
como benchmarks e suas possveis utilizaes como um mtodo 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 descrio para
ambos.

3.4.1 Pacote integrado de benchmarks

Recentemente, tem se tornado comum juntar colees de benchmarks para medir o


desempenho de processadores em vrias aplicaes. Uma das tentativas de se criar aplicaes
de pacotes integrados de benchmarks padronizados tem sido da SPEC (Standard Performance

39

Evaluation Corporation), cujas razes se fortificaram no final da dcada 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 gerao, o SPEC CPU2006. resumido em um conjunto de benchmarks para
inteiros (CINT2006) e um conjunto de benchmarks para ponto flutuante (CFP2006). Os
benchmarks SPEC so programas reais, modificados para terem portabilidade e para reduzir o
papel dos I/Os 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 no se aplicam a este trabalho por que so
preparados a partir de aplicaes reais para os sistemas de desktop e servidores, ambientes
com requisitos e aplicaes 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 de
aplicaes embarcadas, o uso de um nico conjunto de benchmarks no considerado
adequado. Na prtica, muitos projetistas de sistemas embarcados desenvolvem benchmarks
que refletem as suas aplicaes, tanto kernels como programas em verses nicas de uma
aplicao inteira [2]. Este conjunto subdividido em 6 classes: automotiva/industrial,
consumidor, telecomunicaes, entretenimento digital, redes de comunicao e automao em
escritrios [2][11].

40

Embora muitas aplicaes embarcadas sejam sensveis ao desempenho de pequenos


kernels, importante destacar que o desempenho da aplicao inteira (que pode ser de
milhares de linhas) tambm crtico. Deste modo, para muitos sistemas embarcados, os
benchmarks EEMBC podem ser somente usados para estimar parcialmente o desempenho [2].
Os benchmarks EEMBC no so totalmente adequados a este trabalho porque neste
caso no utilizado kernel e possuem opes restritas para o fornecimento dos resultados.
Estes no trabalham com base estruturada na linguagem ladder, alm do fato de ser uma
medida de desempenho fechada e de alto custo.

3.4.3 Programas benchmarks

Um usurio familiarizado com programas de usurio de CLPs seria o candidato mais


indicado para avaliar um novo sistema embarcado. Para a avaliao, este poderia
simplesmente comparar com o sistema antigo, o tempo de execuo da sua carga de trabalho
no novo sistema. Porm, existem outros mtodos que podem ser utilizados para medir e
predizer o desempenho de um sistema. H cinco nveis de programas usados como
benchmark, listados em ordem decrescente de exatido de predio [1]:

Aplicaes reais: apesar do usurio de um novo sistema no saber qual a frao de


tempo que ir ser gasta nos seus programas, este sabe que so usados programas que refletem
problemas reais. Aplicaes reais tm entrada, sada e opes de seleo enquanto o programa
est sendo executado. A nica desvantagem de se usar aplicaes reais como benchmark
que elas apresentam problemas de portabilidade provenientes do modo de operao ou do
compilador utilizado. Como exemplo, em aplicaes reais nos CLPs, possvel escolher o

41

programa de controle do usurio utilizado em um determinado tipo de processo e analisar o


tempo de execuo gasto com esta carga de trabalho.

Aplicaes modificadas: em muitos casos, aplicaes reais so usadas como blocos


de construo para um benchmark, o que inclui modificaes ou scripts que atuam de
estmulo para a aplicao. Aplicaes so modificadas ou utilizam um script por duas razes
principais: para aumentar a portabilidade ou para focar o desempenho do sistema em um
aspecto particular. Como exemplo, possvel criar um script que execute somente a parte do
programa de controle do usurio correspondente a uma nica etapa do processo controlado
por um CLP. Assim, possvel analisar o tempo de execuo gasto na aplicao modificada.

Kernels: foram feitas vrias tentativas de extrao de pequenos fragmentos-chave de


programas reais e us-los para avaliar o desempenho. Livermore Loops e Linpack so os
exemplos mais conhecidos. O kernel melhor utilizado como benchmark quando usado para
isolar a anlise de desempenho de caractersticas individuais de um sistema. Em CLPs que
utilizam um sistema operacional de tempo real, por exemplo, possvel medir o desempenho
onde se deseja avaliar parte da aplicao que possua requisitos de tempo real entre a leitura de
um sensor e o acionamento de um atuador.

Toy benchmarks: os toy benchmarks so programas conhecidos e pr-definidos que


tm entre 10 e 100 linhas de cdigo e que produzem um resultado que o usurio j conhece
antes de executar o programa. O exemplo mais comum o programa do tipo Puzzle. Estes so
populares porque so relativamente pequenos e fceis de digitar.

Benchmarks sintticos: semelhantes em filosofia aos kernels, os benchmarks


sintticos tentam verificar a ocorrncia mdia das operaes e operandos de um grande

42

conjunto de programas. Whetstone e Dhrystone so os benchmarks sintticos mais populares.


Os benchmarks sintticos esto um pouco mais distantes da realidade que os kernels, pois de
um kernel so extrados programas reais enquanto que um cdigo sinttico criado
artificialmente para corresponder a um perfil de execuo. Benchmarks sintticos no so nem
partes de programas reais, entretanto os kernels podem ser. Por exemplo, em um CLP
possvel criar um programa de controle do usurio com intuito de medir a capacidade de
processamento de seu processador.

Pelo exposto, definido o benchmark sinttico como mtodo de anlise de


desempenho dos processadores em estudo neste trabalho. Apesar do fato de o benchmark
sinttico ser o de menor preciso, sua escolha fundamentada na possibilidade de criar cdigo
artificialmente com intuito de estruturar seu programa de acordo com uma dada carga de
trabalho padro a ser definida por um programa ladder. Seu objetivo focar a anlise no
desempenho da arquitetura dos processadores embarcados deste trabalho aplicveis aos CLPs.

3.5 Abordagens para a criao de benchmarks

Um aspecto importante o impacto que a otimizao de um compilador pode criar.


Este pode ser grande quando modificaes de cdigo fonte so permitidas ou quando um
benchmark suscetvel a otimizaes. Por estas razes, importante descrever exatamente o
software do sistema e se quaisquer modificaes que no sejam padronizadas foram feitas.
Alm da questo de otimizao, outro ponto importante saber se as modificaes do cdigo
fonte ou cdigo gerado a mo so permitidas. Deste modo, h quatro maneiras diferentes para
se tratar esta questo [1]:

43

Nenhuma modificao no cdigo fonte permitida;

Modificaes no cdigo fonte so permitidas, mas so essencialmente difceis


ou impossveis de serem realizadas;

Modificaes no cdigo fonte so permitidas. Por exemplo, muitos pacotes de


benchmarks SPEC permitem modificaes no cdigo fonte;

Cdigo gerado manualmente permitido. Por exemplo, o pacote EEMBC


permite a gerao de cdigo manualmente em linguagem Assembly a partir dos
seus benchmarks.

Assim, a principal preocupao que o criador de um benchmark deve ter, decidir se


as modificaes do cdigo fonte ou a gerao do cdigo manualmente iro refletir o
desempenho na prtica ou iro reduzir a exatido com relao 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 preo possvel. Os
processadores em anlise so configurados para trabalhar nas suas freqncias mximas de
operao atentando somente para limitaes do sistema e, como descrito anteriormente,
utilizam o benchmark sinttico como mtodo de anlise de desempenho. A partir de uma
carga de trabalho padro, o benchmark escrito nas linguagens C e Assembly, permitindo a
comparao de cdigo Assembly gerado por um compilador e cdigo Assembly gerado
manualmente. So utilizados os mtodos de compilao debug e release e suas tcnicas
bsicas para a gerao de cdigo pelo compilador. Outras tcnicas mais apuradas de
otimizao a nvel do compilador no sero abordadas pelo fato de no fazerem parte do
escopo proposto por este trabalho. O programa ladder da carga de trabalho padro e a sua
aplicao atravs do benchmark sinttico so abordados com maior nvel de detalhamento no
captulo 5.

44

3.6 Relatrio de apresentao do desempenho

A principal premissa de se fornecer medidas de desempenho deve ser a capacidade de


reproduo dos testes por outros usurios, ou seja, registrar tudo que outro experimentador
precisaria para reproduzir os resultados. importante, tambm, que a anlise de desempenho
siga um padro de apresentao. Para isto, criado um relatrio modelo onde so fornecidos
os parmetros de ajuste de hardware e software. O relatrio consiste no fornecimento de todas
as identificaes do processador e do sistema utilizado, bem como os programas utilizados na
anlise do desempenho.
A tabela 3.1 mostra o modelo exemplo de um relatrio utilizado para o fornecimento
dos resultados obtidos em uma anlise de desempenho.

Tabela 3.1: Modelo de relatrio para o fornecimento de resultados.


RELATRIO DE DESEMPENHO PROCESSADOR:
PARMETROS DE AJUSTE HARDWARE
Nmero do modelo/srie:
Nmero de ncleos:
Capacidade de manipulao:
Freqncia de operao:
Cache primria (L1):
Cache secundria (L2):
Outra cache:
Memria:
Disco:
Outro hardware:
PARMETROS DE AJUSTE SOFTWARE
Sistema operacional e verso:
Compilador e verso:
Outro software:
Tipo de arquivos do sistema:
Estado do sistema:
RESULTADOS
Tempo de execuo:
Outras consideraes:

45

4 Anlise estatstica em programas ladder reais

4.1 Programas reais em linguagem ladder

De posse de diferentes tecnologias utilizadas atualmente nos processadores


embarcados, faz-se necessria a criao de uma carga de trabalho padro para prover uma
avaliao com mtodos e critrios bem definidos. Como justificado no captulo anterior, ser
utilizado o benchmark sinttico para a avaliao dos processadores embarcados em estudo. O
princpio de operao do benchmark sinttico segue os padres do princpio de
funcionamento do CLP e baseado em uma carga de trabalho padro definida por um
programa ladder desenvolvido.
Nesse contexto, antes de se obter uma definio da carga de trabalho adequada, foram
coletados 31 programas descritos em linguagem ladder com aplicaes reais em controle de
processos cedidos por uma empresa fabricante de CLPs para uma anlise aprofundada.

4.1.1 Nomenclatura adotada para a anlise

Inicialmente, os programas coletados foram organizados em ordem alfabtica e


numrica de acordo com seus nomes reais, seguindo desta forma, uma seqncia de anlise de
programa a programa. Uma vez obtida a seqncia de anlise, cada programa foi definido
com a nomenclatura P e numerao de 1 a 31 para manter o status confidencial original,
configurando assim uma nomeao de P1 a P31.

46

4.1.2 Critrio de contagem

A anlise foi realizada a partir de uma contagem manual de cada instruo ladder para
cada programa tomando o conjunto de instrues disponibilizado em um manual por um
fabricante de CLP. Desta forma, foram coletados a quantidade de instrues ladder de cada
tipo e o nmero de linhas para cada programa seguindo a seqncia e a nomenclatura
definida.

4.2 Conjunto de instrues ladder

O conjunto de instrues ladder adotado neste trabalho formado por um total de 93


instrues e pseudo-instrues definidas por mnemnicos atribudos aos smbolos utilizados
nos diagramas ladder.
No conjunto, cada instruo ladder nomeada com um mnemnico e envolve uma
definio lgica para a utilizao no controle de processos reais. H diversas literaturas
especializadas e a normatizao internacional (IEC 61131-3) que relacionam os mnemnicos
e suas definies simbologia padronizada da linguagem ladder, portanto no h pretenso
neste trabalho de substitu-las. Somente sero atribudos smbolos para as instrues ladder
utilizadas na criao da carga de trabalho padro (apresentados inicialmente no exemplo da
figura 2.6 e reforados no captulo 5) e no ser atribudo nenhum outro smbolo aos
mnemnicos do conjunto utilizado neste trabalho.
As tabelas 4.1 e 4.2 mostram o conjunto de instrues ladder utilizado na anlise com
seus mnemnicos e suas definies.

47

Tabela 4.1: Conjunto de instrues ladder.


MNEMNICO
ADSUB
ADSUD
AJUST
AND
ANDN
ASCB
BCDAP
BCDAS
BITW
BMOVX
CALL
CMP
CNT
CNT2
CONV
CONVL
CCS
CTCPU
DINT1
DIV
DIVB
DIVBL
DVBLL
FATOR
FCMP
FCONV
FDIV
FILT
FMUL
FSUB
FSUM
FTAB
JMP
LD
LDATA
LDI
LDN
LDX
LTIME
MED
MONOA
MONOD
MOV
MOVK
MOVX
MULT
MULTB

DEFINIO
Soma/subtrai uma constante de contedo de registro (Hex)
Soma/subtrai uma constante de contedo de registro (Dec)
Calcula o fator de ajuste e aplica
Operao lgica "E" entre estados internos
Operao lgica "E" entre estados internos invertidos
Conversor ASCII p/ BCD
Converso de dados Decimais p/ ASCII com ponto decimal
Converso de dados Decimais p/ ASCII
Transfere 16 estados p/um registro de 16 bits
Movimentao de bloco de dados indexados na origem e no destino
Chamada de sub-rotina
Compara contedo de registros
Contador
Contador 2
Conversor Dec/Hex ou Hex/Dec
Conversor Dec/Hex ou Hex/Dec de 32 bits
Calcula CHECK SUM (XOR) dos Bytes
Contador Rpido
Desabilita interrupo 1
Diviso Decimal
Diviso Hexadecimal
Diviso binria longa (Hexadecimal)
Diviso binria de 32 bits (Hexadecimal)
Ajusta o zero e o fundo de escala de uma E.A.
Comparao em ponto flutuante
Converso em ponto flutuante
Diviso em ponto flutuante
Filtro
Multiplicao em ponto flutuante
Subtrao em ponto flutuante
Soma em ponto flutuante
Carregamento de um bloco de dados em ponto flutuante
Salto para endereo de desvio
Entrada (Comeo de operao em uma linha Normalmente Aberto)
Leitura de dia/ms/ano
Entrada imediata
Comea a operao em uma linha ou bloco com chave (Normalmente Fechado)
Comea linha com chave (Normalmente Aberto) indexada
Leitura de hora/min/seg
Executa a mdia aritmtica de 3 a 125 amostras
Monoestvel de uma varredura no acionamento
Monoestvel de uma varredura no desacionamento
Copia contedo de um registro para outro
Carregar valor (constante) em registro
MOV indexado no destino
Multiplicao Decimal
Multiplicao Hexadecimal

48

Tabela 4.2: Conjunto de instrues ladder (continuao).


MULBL
OR
ORN
OUT
OUTI
OUTIN
OUTN
OUTR
OUTX
PID
PID_I
PRINT
SCL
SCL2G
SCRLL
SDATA
SETR
SFR
SHIFB
SHIFN
SHIFL
STIME
SUB
SUBB
SUBBL
SUM
SUMB
SUMBL
TAB
TMR
TXPR
UPDB
UPDBC
UPDD
UPDDC
WAND
WBIT
WBITX
WLDX
WNOT
WOR
WXOR
CAV
GAV
SYNC
TMRX

Multiplicao Hexadecimal de 32 bits


Operao lgica "OU" entre estados internos
Operao lgica "OU" entre estados internos invertidos
Sada (Fim de Linha)
Sada no em fim de linha
Sada invertida no em fim de linha
Sada invertida
Sada imediata
Sada indexada
Bloco PID
Algoritmo PID padro ISA
Transferncia de dados p/interface serial
Gera uma reta tipo mx+b dados dois pares x, y
Gera uma parbola
Scroll de dados
Acerto de dia/ms/ano
Set/Reset (estado interno)
Deslocamento de estados internos
Deslocamento de bit
Deslocamento de nibble (4 bits)
Deslocamento de n bits
Acerto de hora/min/seg
Subtrao Decimal
Subtrao Hexadecimal
Subtrao Hexadecimal de 32 bits
Soma Decimal
Soma Hexadecimal
Soma Hexadecimal de 32 bits
Carregamento de um bloco de dados
Temporizador
Carrega bloco de mensagens a serem impressas
Contador Up/Down Hexadecimal
Incrementa e compara (Hex)
Contador Up/Down decimal
Incrementa e compara (Dec)
AND (bit a bit) do contedo de dois registros de 16 bits
Transfere os 16 bits de um registro para 16 estados internos
WBIT indexado e com auto incremento/decremento
MOV indexado na origem
Complemento de registro de 16 bits
OR (bit a bit) do contedo de dois registros de 16 bits
XOR (bit a bit) do contedo de dois registros de 16 bits
Contador de Alta Velocidade (CPU)
Armazenagem e recuperao de conjunto de dados
Sincronismo
Temporizadores de 1ms

49

4.3 Classificao dos programas

Aps efetuada a contagem os 31 programas ladder reais analisados foram


classificados em 3 grupos, de acordo com o seu tamanho, definidos pela quantidade de linhas
de programa ladder existentes em cada um: programas pequenos, mdios e grandes, como
detalhados a seguir.

4.3.1 Programas ladder pequenos

Foram classificados como pequenos, os programas que possuem de 1 a 349 linhas de


programa ladder. Foram obtidos 12 programas de pequeno porte inseridos nesta classificao.
As tabelas 4.3, 4.4 e 4.5 mostram a contagem do nmero de instrues ladder
referentes a este grupo de programas. As 4 instrues ladder em destaque compem 82,71%
da freqncia de uso neste grupo.

Tabela 4.3: Contagem de instrues ladder no grupo de programas pequenos.


Programas Pequenos
P1 P3 P8 P10 P11 P12 P14 P15 P20 P27 P28 P31 TOTAL
ADSUB
ADSUD
AJUST
AND
ANDN
ASCB

% TOTAL

2
8
0
0
0
0

0,02%
0,09%
0,00%
0,00%
0,00%
0,00%

BCDAP

0,00%

BCDAS
BITW
BMOVX
CALL
CMP
CNT
CNT2

0
3
14
88
163
4
97

0,00%
0,03%
0,16%
1,02%
1,89%
0,05%
1,12%

8
13
0
2
0

0,09%
0,15%
0,00%
0,02%
0,00%

CONV
CONVL
CCS
CTCPU
DINT1

2
8

2
1
8

8
11

1
2
9
21

1
14
2
3

7
14
46
1

2
4
5

7
11

6
10
34

1
7

2
12
30

35

3
6
2

4
1

7
18
16

50

Tabela 4.4: Contagem de instrues ladder no grupo de programas pequenos


(continuao).
Programas Pequenos
P1 P3 P8 P10 P11 P12 P14 P15 P20 P27 P28 P31 TOTAL
DIV
DIVB
DIVBL
DVBLL
FATOR
FCMP
FCONV
FDIV
FILT
FMUL
FSUB
FSUM
FTAB
JMP
LD

2
1
1

4
1
3
14 496 585 686 625 148 282 405 696 257 147 329

LDATA
LDI
LDN
LDX
LTIME
MED
MONOA
MONOD
MOV
MOVK
MOVX
MULT

2
8

41
13
30

49
2
18
16

38

25

11
23

9
22
1
1

2
131 158 295 306
3
2
2

MULTB
MULBL
OR
ORN
OUT
OUTI

69

89
53

16

14
1

132 123
21

20

3
5
3

10

0,12%

77
1

0
0
0
679
92

0,00%
0,00%
0,00%
7,87%
1,07%

20
1
11
17

13

37
1
31
18

12
3

26
2

82

69

18

22

13

8
5

18
35

16

16
6

20
9

17

14

1
4

26

12

10

1
1

0,02%
17,37%
0,03%
0,10%
0,00%
3,36%
0,06%
1,53%
1,96%
0,01%
0,05%

23

1
12

0,13%

188 119 136

4
8

11

50

PRINT
SCL
SCL2G
SCRLL
SDATA
SETR
SFR
SHIFB
SHIFN
SHIFL
STIME
SUB
SUBB
SUBBL

0,02%
0,00%
0,01%
0,02%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,09%
54,11%

2
1499
3
9
0
290
5
132
169
1
4

OUTIN
OUTN
OUTR
OUTX
PID
PID_I

% TOTAL

2
0
1
2
0
0
0
0
0
0
0
0
0
8
4670

1
6
1
7
3
1
3
1

1
10

1
7
1
7
5
1
1
1

23

10

17

0,00%

20
5
7
8
3

0,23%
0,06%
0,08%
0,09%
0,03%

0,00%

23
3
0
5
118
2
0
62
8
5
7
1
1

0,27%
0,03%
0,00%
0,06%
1,37%
0,02%
0,00%
0,72%
0,09%
0,06%
0,08%
0,01%
0,01%

51

Tabela 4.5: Contagem de instrues ladder no grupo de programas pequenos


(continuao).
Programas Pequenos
P1 P3
SUM
SUMB
SUMBL
TAB
TMR
TXPR
UPDB
UPDBC
UPDD
UPDDC
WAND
WBIT
WBITX
WLDX
WNOT
WOR
WXOR
CAV
GAV
SYNC
TMRX

P8 P10 P11 P12 P14 P15 P20 P27 P28 P31 TOTAL

3
5

3
5

4
5
3

1
11

11
26

2
29

20
20

3
1
1

1
24
2

22

4
8

2
6
4

4
6

39
1

1
1

1
3

2
11

25
1

10
2

2
5

44 887 1095 1289 1291 232 490 796 1145 508 244 609
TOTAL
N LINHAS 39 260 297 308 336 68 156 203 329 115 68 202

35
19
2
121
114
0
1
9
1
40
9
3
0
2
5
0
0
0
0
0
0

% TOTAL
0,41%
0,22%
0,02%
1,40%
1,32%
0,00%
0,01%
0,10%
0,01%
0,46%
0,10%
0,03%
0,00%
0,02%
0,06%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%

8630
100,00%
2381
LD+LDN+OUT+MONOA
82,71%
LD+OUT
61,98%

4.3.2 Programas ladder mdios

Foram classificados como mdios, os programas que possuem de 350 a 649 linhas de
programa ladder. Foram obtidos 13 programas de mdio porte inseridos nesta classificao.
As tabelas 4.6 e 4.7 mostram a contagem do nmero de instrues ladder referentes a
este grupo de programas. As 4 instrues ladder em destaque compem 83,57% da freqncia
de uso neste grupo.

52

Tabela 4.6: Contagem de instrues ladder no grupo de programas mdios.

P2
ADSUB
ADSUD
AJUST
AND
ANDN
ASCB
BCDAP
BCDAS
BITW
BMOVX
CALL
CMP
CNT
CNT2
CONV
CONVL
CCS
CTCPU
DINT1
DIV
DIVB
DIVBL
DVBLL
FATOR
FCMP
FCONV
FDIV
FILT
FMUL
FSUB
FSUM
FTAB
JMP
LD
LDATA
LDI
LDN
LDX
LTIME
MED
MONOA
MONOD
MOV
MOVK
MOVX
MULT
MULTB
MULBL
OR
ORN
OUT
OUTI
OUTIN
OUTN
OUTR
OUTX

P4

7
5

P5

P6

Programas Mdios
P7 P13 P16 P18 P24 P25 P26 P29 P30 TOTAL

4
6
2

3
4
20
53
7

14
35
5

13
15
42
2

3
13
49
2

1
4
13
64
1

10

16

10
54

1
5
46
2

10
70

8
39
8

6
24
4

24
48

5
1

4
4
12
27
40
1

8
42
27

1
5
47
2
20
2

1
5
47
2
21
2

2
3
2

2
48

4
2
1
2
6
1
1
1230 906 1296 612 1062 1012 1056 912 1262 821 1367 1149 1151
2
2
4
1
1
1
2
2
2
1
1
337 163 434 110 202
1
3
2
2
4

177

285

211

399

158

455

371

371

108
31
28
68

33
1
28
39

54
1
9
16

45
50
40

82
4
3
13

2
5
58
2
66
57

101
4
4
20

56
1
9
18

56
1
9
18

70
7

208
1

232
40

234
40

35
32
32

45
1
50
29
5
11
4

29
27
17

49
4
27
46

150 141 118 115 164


6
1
2

2
2

1
2

54

202
39

135
35

202
1

14
11
6
0
0
0
0
0
11
28
138
615
23
116
76
73
0
6
0
3
0
9
48
0
0
0
0
4
0
0
0
0
17
13836
19
0
3673
4
21
5
751
100
332
373
5
16
6
0
0
0
2025
170
0
35
0
9

% TOTAL
0,06%
0,05%
0,02%
0,00%
0,00%
0,00%
0,00%
0,00%
0,05%
0,12%
0,57%
2,53%
0,09%
0,48%
0,31%
0,30%
0,00%
0,02%
0,00%
0,01%
0,00%
0,04%
0,20%
0,00%
0,00%
0,00%
0,00%
0,02%
0,00%
0,00%
0,00%
0,00%
0,07%
57,00%
0,08%
0,00%
15,13%
0,02%
0,09%
0,02%
3,09%
0,41%
1,37%
1,54%
0,02%
0,07%
0,02%
0,00%
0,00%
0,00%
8,34%
0,70%
0,00%
0,14%
0,00%
0,04%

53

Tabela 4.7: Contagem de instrues ladder no grupo de programas mdios


(continuao).

P2
PID
PID_I
PRINT
SCL
SCL2G
SCRLL
SDATA
SETR
SFR
SHIFB
SHIFN
SHIFL
STIME
SUB
SUBB
SUBBL
SUM
SUMB
SUMBL
TAB
TMR
TXPR
UPDB
UPDBC
UPDD
UPDDC
WAND
WBIT
WBITX
WLDX
WNOT
WOR
WXOR
CAV
GAV
SYNC
TMRX

P4

P5

P6

Programas Mdios
P7 P13 P16 P18 P24 P25 P26 P29 P30 TOTAL

11
1

25

10

1
10

1
54

12

2
2

24

2
10

3
49

1
25

1
29

1
28
2

1
39
2

17

11

38

3
8

1
9

1
16

5
2

1
23

1
3
5

31
1

8
8

8
15

33
25

39
11

16
13

13
24

48
75
25

1
1
2

3
5
65
2

1
1
19
5

1
46
2

1
29

1
29

11

11

46
4
1

1
9

1
9

27
1

21

5
2

5
2

6
30

15
3

7
32

22
11
1

7
26

9
30

9
30

1
2
5
4

2
2
5
5

1
2
5
4

1
2
5
4

8
13
18

1
2

1
4
2
1

1
1

2
1

6
4

1
1

0
2
2
85
0
1
13
373
12
0
167
6
13
85
5
8
126
31
56
264
278
1
2
13
18
96
22
2
0
8
5
0
0
0
0
0
0

TOTAL 2148 1547 2311 1093 1791 1742 1835 1683 2126 1498 2343 2076 2079 24272
N LINHAS 581 471 578 370 527 553 455 525 464 511 520 515 517 6587

% TOTAL
0,00%
0,01%
0,01%
0,35%
0,00%
0,00%
0,05%
1,54%
0,05%
0,00%
0,69%
0,02%
0,05%
0,35%
0,02%
0,03%
0,52%
0,13%
0,23%
1,09%
1,15%
0,00%
0,01%
0,05%
0,07%
0,40%
0,09%
0,01%
0,00%
0,03%
0,02%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%

100,00%

LD+LDN+OUT+MONOA
83,57%
LD+OUT
65,35%

4.3.3 Programas ladder grandes

Foram classificados como grandes, os programas que possuem 650 linhas de programa
ladder ou mais. Foram obtidos 6 programas de grande porte inseridos nesta classificao.

54

As tabelas 4.8 e 4.9 mostram a contagem do nmero de instrues ladder referentes a


este grupo de programas. As 4 instrues ladder em destaque compem 81,14% da freqncia
de uso neste grupo.

Tabela 4.8: Contagem de instrues ladder no grupo de programas grandes.


Programas Grandes
P9 P17 P19 P21 P22 P23 TOTAL
ADSUB
ADSUD
AJUST
AND
ANDN
ASCB
BCDAP
BCDAS
BITW
BMOVX
CALL
CMP
CNT
CNT2
CONV
CONVL
CCS
CTCPU
DINT1
DIV
DIVB
DIVBL
DVBLL
FATOR
FCMP
FCONV
FDIV
FILT
FMUL
FSUB
FSUM

34
2

16
21
56
52
190
3
256
12

3
4

2
5

3
1

21
97
2

20
92
2

3
10
18
58
2

8
13

8
13

9
3

7
9

12
7
6
25
127

5
24
65

51
6

21
4

2
2
2
5

FTAB
JMP
LD
LDATA
LDI
LDN
LDX
LTIME
MED
MONOA
MONOD
MOV
MOVK
MOVX
MULT
MULTB

24
3
3
2
2
4860 1368 1392 1235 2384 1078
2
1
1
5
5
1330 299
22
2
1

328

322

745

75
6
68
56
1
11
2

117
2
26
92

119
81

2
1

55
213

15

71
7
68
55
13
2

896

8
86

353
2
5
101
27
86
93

49
24
0
0
0
0
0
28
31
77
160
629
9
328
47
29
0
2
0
2
0
2
10
0
0
0
0
0
0
0
0

% TOTAL
0,21%
0,11%
0,00%
0,00%
0,00%
0,00%
0,00%
0,12%
0,14%
0,34%
0,70%
2,76%
0,04%
1,44%
0,21%
0,13%
0,00%
0,01%
0,00%
0,01%
0,00%
0,01%
0,04%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%

0,00%

34
12317
14
0
3528
24
12
8
1195
42
422
590
14
13
23

0,15%
54,01%
0,06%
0,00%
15,47%
0,11%
0,05%
0,04%
5,24%
0,18%
1,85%
2,59%
0,06%
0,06%
0,10%

55

Tabela 4.9: Contagem de instrues ladder no grupo de programas grandes


(continuao).
Programas Grandes
P9 P17 P19 P21 P22 P23 TOTAL
MULBL
OR
ORN
OUT
OUTI
OUTIN
OUTN
OUTR
OUTX
PID
PID_I
PRINT
SCL
SCL2G
SCRLL
SDATA
SETR
SFR
SHIFB
SHIFN
SHIFL
STIME
SUB
SUBB
SUBBL
SUM
SUMB
SUMBL
TAB
TMR
TXPR
UPDB
UPDBC
UPDD
UPDDC
WAND
WBIT
WBITX
WLDX
WNOT
WOR
WXOR
CAV
GAV
SYNC
TMRX

TOTAL
N LINHAS

621 132 130 150


54
6
6
2
3

331
9

99
1

20

3
1

20

12
4

10
4

3
283
9

1
37

1
38

2
39

16

7
11
1
22

9
10
1
22

19

63
10

1
18
1
2
38
11

1
17
1
2
39
17

2
117

3
3

3
3

3
95

35
26

47
5

2
10

7
1
3
22
27

18
3

46

6
6
3
19

16
3
17

15
6

4
3

32
34

40
6
1
3

1
2
11
1

8
5
4

8
0
0
1463
78
0
38
0
17
0
1
0
68
11
6
10
462
9
0
67
21
10
166
0
2
96
38
7
234
105
0
3
123
2
25
59
9
0
4
0
0
0
0
0
0
0

% TOTAL
0,04%
0,00%
0,00%
6,42%
0,34%
0,00%
0,17%
0,00%
0,07%
0,00%
0,00%
0,00%
0,30%
0,05%
0,03%
0,04%
2,03%
0,04%
0,00%
0,29%
0,09%
0,04%
0,73%
0,00%
0,01%
0,42%
0,17%
0,03%
1,03%
0,46%
0,00%
0,01%
0,54%
0,01%
0,11%
0,26%
0,04%
0,00%
0,02%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%

22805
100,00%
3065 695 693 666 1032 709
6860
LD+LDN+OUT+MONOA
9330 2367 2419 2225 4321 2143

81,14%
LD+OUT
60,43%

56

4.4 Resultado estatstico total

Como resultado total, foi obtida uma contagem estatstica de instrues ladder em 31
programas com aplicaes reais em controle de processos.
A tabela 4.10 em conjunto com as tabelas 4.11, 4.12 e 4.13 mostram o resumo da
contagem estatstica total realizada nos programas de P1 a P31. As 4 instrues ladder em
destaque compem 82,44% da freqncia de uso nos programas ladder estudados.

Tabela 4.10: Resultado total da contagem final.


Instrues ladder

Resultado total

LD

55,33%

LDN

15,62%

OUT

7,48%

MONOA

4,01%

Total
(LD+LDN+OUT+MONOA)

82,44%

Outras

17,46%

TOTAL

100%

Tabela 4.11: Contagem final das instrues ladder.

ADSUB
ADSUD
AJUST
AND
ANDN
ASCB
BCDAP
BCDAS
BITW
BMOVX
CALL
CMP
CNT
CNT2
CONV
CONVL
CCS
CTCPU
DINT1

TOTAL

% TOTAL

65
43
6
0
0
0
0
28
45
119
386
1407
36
541
131
115
0
10
0

0,12%
0,08%
0,01%
0,00%
0,00%
0,00%
0,00%
0,05%
0,08%
0,21%
0,69%
2,53%
0,06%
0,97%
0,24%
0,21%
0,00%
0,02%
0,00%

57

Tabela 4.12: Contagem final das instrues ladder (continuao).


TOTAL

% TOTAL

7
0
12
60
0
0
0
0
4
0
0
0
0
59
30823
44
2
8700
31
42
13
2236
147
886
1132
20
33
39
8
0
0
4167
340
0
93
5
33
8
6

0,01%
0,00%
0,02%
0,11%
0,00%
0,00%
0,00%
0,00%
0,01%
0,00%
0,00%
0,00%
0,00%
0,11%
55,33%
0,08%
0,00%
15,62%
0,06%
0,08%
0,02%
4,01%
0,26%
1,59%
2,03%
0,04%
0,06%
0,07%
0,01%
0,00%
0,00%
7,48%
0,61%
0,00%
0,17%
0,01%
0,06%
0,01%
0,01%

PRINT

0,00%

SCL
SCL2G
SCRLL
SDATA
SETR

176
14
7
28
953

0,32%
0,03%
0,01%
0,05%
1,71%

SFR

23

0,04%

SHIFB
SHIFN
SHIFL
STIME
SUB
SUBB
SUBBL
SUM
SUMB
SUMBL
TAB

0
296
35
28
258
6
11
257
88
65
619

0,00%
0,53%
0,06%
0,05%
0,46%
0,01%
0,02%
0,46%
0,16%
0,12%
1,11%

DIV
DIVB
DIVBL
DVBLL
FATOR
FCMP
FCONV
FDIV
FILT
FMUL
FSUB
FSUM
FTAB
JMP
LD
LDATA
LDI
LDN
LDX
LTIME
MED
MONOA
MONOD
MOV
MOVK
MOVX
MULT
MULTB
MULBL
OR
ORN
OUT
OUTI
OUTIN
OUTN
OUTR
OUTX
PID
PID_I

58

Tabela 4.13: Contagem final das instrues ladder (continuao).


TOTAL

% TOTAL

TMR
TXPR
UPDB
UPDBC
UPDD
UPDDC
WAND
WBIT
WBITX
WLDX
WNOT
WOR
WXOR
CAV
GAV
SYNC
TMRX

497
1
6
145
21
161
90
14
0
14
10
0
0
0
0
0
0

0,89%
0,00%
0,01%
0,26%
0,04%
0,29%
0,16%
0,03%
0,00%
0,03%
0,02%
0,00%
0,00%
0,00%
0,00%
0,00%
0,00%

TOTAL
N LINHAS

55707
15828

100,00%

LD+LDN+OUT+MONOA

LD+OUT

82,44%

62,81%

59

Com base nos resultados obtidos foi realizada uma avaliao de alternativas com o
grupo das 4 instrues com carga mais significativa para o processador de acordo com a sua
freqncia de uso. Dentre as alternativas, optou-se por utilizar um programa bsico de
entradas e sadas para definir o programa ladder da carga de trabalho padro deste trabalho. O
programa utiliza 2 instrues ladder deste grupo: instruo de entrada (ou comeo de linha
contato normalmente aberto LD) e instruo de sada (ou fim de linha OUT). Juntas
formam 62,81% da freqncia de uso nos programas ladder reais estudados.
A opo pela utilizao das 2 instrues ladder tambm est associada melhor
escolha para reproduzir a anlise de desempenho das arquiteturas definidas para avaliao
atravs do benchmark sinttico. Foram atribudos pesos iguais para as 2 instrues ladder
utilizadas.

60

5 Parmetros de desempenho nos CLPs

5.1 Apresentao de medidas nos CLPs

Inicialmente, foi realizada uma ampla pesquisa com a finalidade de obter as formas de
apresentao de desempenho adotada pelos fabricantes de CLP. Dentre os fabricantes
pesquisados, foi constatado que o desempenho medido atravs do tempo de execuo de um
programa e em sua grande maioria a unidade utilizada milissegundos por 1024 instrues
ladder executadas.
O tempo de execuo fornecido nos manuais equivalente ao tempo de um ciclo de
varredura (tempo de varredura ou scan time). Assim, de forma genrica, o tempo de execuo
de uma determinada carga realizada pela CPU de um CLP dado por:

Tempo de execuo =

X segundos
X segundos
X segundos
=
=
1024 instruesladder
K contatosladder
K instruesladder

A figura 5.1 ilustra os tempos de execuo fornecidos nos manuais de 3 fabricantes


distintos. Nota-se que apesar de ser utilizada uma unidade comum para a apresentao, as
medidas so bastante divergentes. A variao ocorre pelo fato de o tempo de execuo
depender do critrio adotado no programa ladder de anlise e depende particularmente das
instrues ladder utilizadas.

61

Figura 5.1: Figura ilustrativa dos tempos de execuo de 3 fabricantes distintos.

Neste exemplo, os fabricantes A e C fornecem os tempos de execuo da sua CPU de


acordo com o tempo de varredura (scan time), ou seja, o tempo obtido para um ciclo de
varredura do programa ladder utilizado na medio. O fabricante B fornece o tempo de
execuo da sua CPU de acordo com uma instruo ladder especfica.

5.2 Carga de trabalho padro

Baseado no resultado obtido no captulo 4 com a anlise estatstica em programas


ladder reais, a carga de trabalho padro foi definida por um programa ladder bsico de
entradas e sadas. No programa so utilizadas 2 instrues ladder com freqncia de uso
significativa: instruo de entrada (LD), tambm chamada de comeo de linha ou contato
normalmente aberto e instruo de sada (OUT), tambm chamada de fim de linha.
A carga de trabalho tem como foco principal parametrizar a avaliao do desempenho
por meio de um tempo de execuo padro. O programa ladder da carga de trabalho foi
implementado com apoio de uma CPU de um fabricante de CLP para obter o tempo de
execuo de referncia para a anlise de desempenho dos processadores abordados neste
trabalho.

62

Para o desenvolvimento do programa ladder foram tomados como base a medida e a


unidade comumente apresentadas entre os fabricantes de CLP. O programa composto por
512 linhas horizontais, onde cada linha composta por uma entrada representada pela
instruo ladder de entrada (LD) e uma sada representada pela instruo ladder de sada
(OUT). Portanto, em um ciclo de varredura, possvel fornecer o tempo de execuo para
1024 instrues ladder executadas.
A figura 5.2 mostra uma linha do programa ladder com os smbolos referenciados s
instrues de entrada e de sada utilizados na aquisio do tempo de execuo do processador
de uma CPU tomada como referncia comparativa.

Figura 5.2: Linha do programa ladder definido como carga de trabalho padro.

5.2.1 Instruo ladder de entrada (LD)


O princpio de operao da instruo de entrada (LD) consiste na leitura de um dado
armazenado por um dispositivo de entrada (sensor, chave, etc.) em uma posio da memria
do CLP. Aps a leitura, o dado armazenado em uma memria intermediria. Geralmente, a
memria intermediria utiliza um espao reservado na memria do CLP, como por exemplo a
pilha do CLP.

5.2.2 Instruo ladder de sada (OUT)


O princpio de operao da instruo de sada (OUT) consiste na leitura de um dado
em uma posio da memria intermediria e ento decidir se o dispositivo de sada ser ou

63

no atualizado dependendo do status contido no dado lido. No programa ladder, o status


contido no dado lido pela instruo de sada de sempre atualizar a sada. Assim, o dado lido
na memria intermediria armazenado na memria do CLP permitindo a atuao em um
dispositivo de sada.

5.2.3 Regies de memria para o programa ladder e para o benchmark sinttico

So definidas 3 regies de armazenamento segundo o mapa genrico de um sistema de


memria apresentado no captulo 2:

rea para o programa de controle do usurio: a rea de memria utilizada para


armazenar programa, ou seja, o cdigo das instrues em linguagem Assembly do
processador.
rea para a tabela de instrues ladder: a rea de memria utilizada para
armazenar dados referentes identificao e endereo relativo s instrues simblicas
ladder. Esse dado definido como opcode da instruo ladder. No programa ladder o opcode
definido por 2 bytes, 1 byte para identificao e 1 byte para endereo relativo (Ex.: 0x0064,
0x00 - instruo ladder LD e 0x64 - endereo relativo instruo ladder LD). No benchmark
sinttico o opcode definido por 4 bytes, 2 bytes para identificao e 2 bytes para endereo
relativo (Ex.: 0x00000064, 0x0000 - instruo ladder LD e 0x0064 - endereo relativo
instruo ladder LD).
rea de dados para o programa de controle do usurio: uma rea de memria
definida por endereos relativos a cada instruo ladder onde so armazenados/lidos os status
e os dados processados pelas instrues ladder do programa.

64

5.2.4 Princpio de operao do benchmark sinttico

Partindo do programa ladder tomado como carga de trabalho padro, criou-se um


benchmark sinttico baseado no princpio de operao das instrues ladder utilizadas. O
benchmark utilizado para obter o tempo de execuo nos processadores escolhidos como
candidatos a CPU de um CLP.
Como mencionado na subseo 5.2.3, o benchmark possui as 3 configuraes de
regies de memria similarmente ao programa ladder padro e escrito na linguagem C e na
linguagem Assembly para que se possa avaliar o desempenho de um cdigo gerado
manualmente versus um cdigo gerado por um compilador. O nico ponto que difere o
benchmark sinttico do programa ladder utilizado no sistema de referncia que no
benchmark sinttico os opcodes das instrues ladder de entrada (LD) e de sada (OUT) so
implementados com 4 bytes. Tal implementao foi orientada pela utilizao de memrias de
16 bits nos kits de desenvolvimento em contrapartida com as memria de 8 bits do sistema de
referncia, resultando somente em uma quantidade de memria maior a ser utilizada pela rea
da tabela de instrues ladder. Essa caracterstica transparente durante a decodificao das
instrues e endereos relativos para as instrues ladder de entrada e sada pelo programa
benchmark.
Nesse contexto, possvel medir o desempenho de diferentes processadores tomando
por base o tempo de execuo padro a partir de uma carga de trabalho comum sem depender
de um ambiente de desenvolvimento de um fabricante de CLP especfico.
A figura 5.3 mostra o fluxograma da execuo do benchmark criado em ambas as
linguagens para a obteno do desempenho relativo dos processadores embarcados em
avaliao neste trabalho.

65

Figura 5.3: Fluxograma da execuo do benchmark sinttico.

No fluxograma, tem-se caracterizado o acesso s 3 regies de memria definidas na


subseo anterior. Ao buscar um opcode ladder, feito o acesso rea para a tabela de
instrues ladder. Ao executar o cdigo relativo instruo ladder LD e similarmente
instruo ladder OUT so acessadas as reas de memria para o programa de controle de
usurio e dados para o programa de controle do usurio.

5.3 Medida fsica do tempo de execuo

Uma vez que o benchmark foi realizado nas linguagens C e Assembly, necessrio
obter os respectivos tempos de execuo. Para isto, o tempo medido a partir de uma forma

66

de onda peridica gerada em um Port ou em um Flag do processador. Nos experimentos


prticos, os tempos de execuo foram coletados utilizando um osciloscpio HP Infinium com
amostragem digital de 1Gamostras/s. O tempo de execuo do sistema de referncia foi
obtido utilizando o mesmo critrio de medio, ou seja, foi utilizado um Port de I/O da CPU
do CLP e um osciloscpio como instrumento de medio.
A figura 5.4 mostra o exemplo da forma de onda peridica gerada para a aquisio do
tempo de execuo, com o auxlio do instrumento citado.

Figura 5.4: Medio do tempo de execuo com o auxlio do osciloscpio.

No ciclo de varredura caracterizado pelo tempo de execuo da figura 5.3, a


desabilitao do Port ou Flag marca o incio da medio ativando a sada para zero lgico
permanecendo nesse estado at que ao completar a execuo de 1024 instrues ladder
realizadas tanto para o benchmark em linguagen C como Assembly, o trmino marcado com
a habilitao do Port ou Flag, ou seja, com o nvel um lgico no mesmo pino, conforme se
mostra na figura 5.4.
Deste modo, a partir do programa ladder padro e seguindo os critrios de anlise
citados, pode-se evitar que a aquisio dos tempos de execuo e os mtodos de anlise sejam
diferentes para cada processador embarcado, tornando possvel a comparao de dois sistemas
atravs de suas caractersticas arquiteturais.

67

6 Arquitetura dos processadores estudados e resultados obtidos

6.1 Microcontrolador XA-G30

Para o estudo dos processadores embarcados, foi adotada uma CPU de um CLP como
sistema embarcado de referncia comparativa. Nesta CPU utilizado o microcontrolador XAG30 da Philips. Trata-se de uma arquitetura estendida (XA eXtended Architecture) com
compatibilidade para os antigos usurios do 80C51. Suas principais caractersticas so [7]:

Freqncia mxima de operao de 30MHz;

Tenso de operao de 2,7V at 5,5V;

Memria RAM de dados interna de 512Bytes;

Trs counters/timers;

Um watchdog timer;

Duas UARTs melhoradas;

Quatro ports de I/O de 8 bits.

A figura 6.1 mostra o diagrama em blocos do processador XA-G30.

68

Figura 6.1: Diagrama em blocos do microcontrolador XA-G30 [7].

6.1.1 Arquitetura do ncleo do microcontrolador XA-G30

O XA-G30 um microcontrolador de propsito geral de 16 bits com capacidade de


operar em uma freqncia mxima de 30MHz. Possui pipeline parcial onde realiza algumas
funes do ncleo em paralelo. Por exemplo, as etapas de instruction fetch e decode, e em
alguns casos a de write-back de dados so feitas em paralelo com a etapa de execuo das
instrues (execute). O ncleo composto pelos seguintes blocos funcionais: instruction fetch
e decode, unidade de execuo, ALU, controlador de excees, controlador de interrupes,
arquivo de registradores e registradores do ncleo, interface para memria de dados, interface
para memria de programa, interface para barramento SFR (Special Function Register) e
interface para barramento externo, oscilador, I/O ports e perifricos on-chip. Por ser um
dispositivo com arquitetura Harvard possui espao para dados e para programa separados. O
espao enderevel para a memria de dados formado de 256 segmentos de 64Kbytes,
totalizando 16Mbytes endereveis. Possui espao linear de endereamento de 16Mbytes para
instrues. Tais configuraes de arquitetura oferecem suporte a multi-tasking operating

69

systems e a linguagens de alto nvel, como por exemplo C [7]. Em sua arquitetura no est
prevista a tecnologia de memria cache de dados e/ou de instrues.
A figura 6.2 mostra a arquitetura do ncleo do microcontrolador XA-G30.

Figura 6.2: Diagrama em blocos do ncleo do microcontrolador XA-G30 [7].

6.1.2 Metodologia para aquisio do tempo de execuo do sistema de referncia

O tempo de execuo do microcontrolador XA-G30 obtido atravs da execuo do


programa ladder definido como carga de trabalho padro de anlise. Como mencionado nos
captulos 4 e 5, a carga de trabalho utiliza as instrues ladder de entrada (LD) e sada (OUT).
O programa ladder traduzido para a linguagem Assembly do microcontrolador e o tempo de
execuo medido atravs de um port de I/O do CLP com o auxlio de um osciloscpio. Foi
utilizada a CPU de um CLP como o hardware do sistema de referncia para teste e um
ambiente proprietrio para a gerao de cdigo Assembly a partir das instrues ladder da
carga de trabalho.

70

A configurao do sistema de referncia utiliza os seguintes recursos: duas memrias


externas FLASH, uma memria externa SRAM e um cristal de 22,118MHz. O XA-G30 opera
na freqncia do cristal mencionado, menor que a mxima permitida, devido a uma limitao
no projeto do hardware do CLP para a comunicao dos perifricos.
Configurao 1: o cdigo gerado em linguagem Assembly a partir do programa da
carga de trabalho em linguagem ladder armazenado em uma memria externa FLASH 1. Os
opcodes das instrues ladder referentes s instrues de entrada e sada so
armazenados/lidos em uma memria externa FLASH 2. Os dados utilizados por estas
instrues so armazenados/lidos em uma memria externa SRAM.

6.1.3 Resultado do sistema de referncia

O sistema de referncia tem como resultado o tempo de execuo para um ciclo


varredura da carga de trabalho. A figura 6.3 mostra a forma de onda obtida a partir da
execuo do programa ladder utilizado no sistema de referncia.

Figura 6.3: Tempo de execuo do programa ladder no sistema de referncia.

O tempo de execuo do sistema de referncia :

71

Tempo de execuo (XA-G30 - Assembly ) = 7,06

ms
1024 instruesladder

Este tempo de execuo ser considerado como referncia comparativa para obter o
desempenho relativo dos processadores embarcados estudados.

6.1.4 Relatrio do sistema de referncia

A tabela 6.1 mostra os parmetros de ajuste de hardware e software para o


microcontrolador XA-G30 na arquitetura do sistema de referncia.

Tabela 6.1: Relatrio para o sistema de referncia.


RELATRIO DE DESEMPENHO PROCESSADOR: XA-G30
PARMETROS DE AJUSTE HARDWARE
Nmero do modelo/srie: Philips P51XAG30KBA CB0917 Tt0238 A
Nmero de ncleos: 1
Capacidade de manipulao: 16 bits
Freqncia de operao: foper.= 22,1184MHz
Cache primria (L1):
Cache secundria (L2):
Outra cache:
Memria: Externa: 1 FLASH 1 de 64Kbytes, SST27SF512 90-3C-PG
1 FLASH 2 de 128Kbytes, SST29EE010 70-4C-NH
1 SRAM de 128Kbytes, HY628100B LLG-55
Interna: RAM de dados de 512Bytes
Disco:
Outro hardware:
PARMETROS DE AJUSTE SOFTWARE
Sistema operacional e verso:
Compilador e verso: Programa proprietrio para traduo das instrues ladder
Outro software: Carga de trabalho padro baseada no programa ladder com as
instrues de entrada (LD) e sada (OUT)
Tipo de arquivos do sistema:
Estado do sistema: (Default Padro)
RESULTADOS
Configurao 1: Memria externa FLASH 1, FLASH 2 e SRAM
Tempo de execuo: Linguagem Assembly 7,06 ms/1024 instruesladder
Outras consideraes:

72

6.2 Microprocessador eZ80190

O eZ80190 um microprocessador de 8 bits de alta velocidade. Possui as seguintes


caractersticas [8]:

Freqncia mxima de operao de 50MHz;

Dois modos de endereamento: modo Z80 e modo ADL;

Tenso de operao de 3,0V at 3,6V com tolerncia de entradas a 5V;

Memria SRAM interna de propsito geral de 8Kbytes;

Seis counters/timers;

Um watchdog timer;

Dois canais DMA Direct Memory Access;

Duas UZIs (Universal ZILOG Interface), cada uma composta por: I2C, SPI e
UART;

Quatro ports de I/O de 8 bits.

A figura 6.4 mostra o diagrama em blocos da arquitetura do processador eZ80.

73

Figura 6.4: Diagrama em blocos do microprocessador eZ80190 [8].

6.2.1 Arquitetura do ncleo do microprocessador eZ80190

Apesar de se tratar de um microprocessador de 8 bits, pode ser equiparado a


processadores de 16 bits. Tem capacidade de operar em uma freqncia mxima de 50 MHz.
Possui pipeline de trs nveis: fetch, decode e execute. Seus principais blocos funcionais so:
bloco de controle e bloco de dados. O espao enderevel de memria externa unificado e
pode ser configurado de duas maneiras, modo Z80 e ADL. O modo Z80 possui espao
enderevel de memria externa formado de 256 segmentos de 64Kbytes, totalizando
16Mbytes endereveis. Neste modo, o arquivo de registradores assume uma configurao de
manipulao de dados de 16 bits. O modo ADL possui endereamento linear de 16Mbytes.
Neste modo, o arquivo de registradores assume uma configurao de manipulao de dados
de 24 bits. Em sua arquitetura no est prevista a tecnologia de memria cache de dados e/ou
de instrues.
A figura 6.5 mostra o diagrama em blocos simplificado do ncleo do eZ80 [8].

74

Figura 6.5: Diagrama simplificado do ncleo do microprocessador eZ80190 [8].

6.2.2 Metodologia de medio do tempo de execuo do eZ80190 no sistema

O tempo de execuo obtido em duas anlises, uma para o benchmark sinttico


desenvolvido na linguagem C e outra para o benchmark sinttico desenvolvido na linguagem
Assembly do microprocessador, e medido atravs do port de I/O PB_DR0 utilizando o
osciloscpio HP Infinium como instrumento de medio. Foi utilizado o kit de
desenvolvimento da Zilog eZ80 Webserver como hardware de teste e o ambiente de
desenvolvimento Zilog Developer Studio II 4.8. A ferramenta inclui compilador C e
Assembly.
Foram realizadas 3 configuraes distintas da arquitetura do sistema utilizando os
recursos disponveis no kit de desenvolvimento. A tabela 6.2 mostra o resumo das 3
configuraes utilizadas para a avaliao do desempenho do microprocessador eZ80190
juntamente com as descries a seguir.

75

Tabela 6.2: Resumo de configuraes do sistema para anlise do eZ80190.


Configurao 1
(Linguagem
C/Assembly)
SRAM interna de
propsito geral

Configurao 2
(Linguagem
C/Assembly)

Configurao 3
(Linguagem
C/Assembly)

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder ;
- Dados das instrues.

SRAM externa, 0
Wait-States

SRAM externa, 2
Wait-States

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder ;
- Dados das instrues.
- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder ;
- Dados das instrues.

Configurao 1: o cdigo gerado para o benchmark sinttico desenvolvido tanto na


linguagem C como em Assembly armazenado em uma rea da memria interna SRAM de
propsito geral. Os opcodes das instrues ladder referentes s instrues de entrada e sada e
os dados utilizados por estas instrues so armazenados/lidos em uma rea da mesma
memria interna SRAM de propsito geral.
Configurao 2: o cdigo gerado para o benchmark sinttico desenvolvido tanto na
linguagem C como em Assembly armazenado em uma rea da memria externa SRAM. Os
opcodes das instrues ladder referentes s instrues de entrada e sada e os dados utilizados
por estas instrues so armazenados/lidos em uma rea da mesma memria externa SRAM.
Configurao 3: o cdigo gerado para o benchmark sinttico desenvolvido tanto na
linguagem C como em Assembly armazenado em uma rea da memria externa SRAM. Os
opcodes das instrues ladder referentes s instrues de entrada e sada e os dados utilizados
por estas instrues so armazenados/lidos em uma rea da mesma memria externa SRAM.
Nesta configurao o microprocessador foi configurado para operar utilizando 2 wait-states
para verificao do impacto ao acessar a memria externa SRAM com uma maior latncia.

76

6.2.3 Resultados da avaliao do sistema para o eZ80190

Os resultados da avaliao do desempenho do microprocessador eZ80190 foram


obtidos nos modos de compilao debug e release para as 3 configuraes, conforme a
metodologia de medio descrita na subseo 6.2.2. Estes incluem tcnicas bsicas de
otimizao utilizadas pelo ambiente de desenvolvimento Zilog Development Studio II 4.8.
A figura 6.6 exemplifica a aquisio da forma de onda com o auxlio do instrumento
citado no tpico 5.3. obtida para a configurao 1 com a execuo do benchmark sinttico
desenvolvido em linguagem C utilizando a opo de compilao no modo debug. Nota-se que
a informao do tempo de execuo pode ser encontrada no smbolo , na barra de leitura do
osciloscpio.

Figura 6.6: Tempo de execuo do microprocessador eZ80190 benchmark sinttico


desenvolvido em linguagem C e compilao no modo debug.

77

Neste modo, o tempo de execuo obtido no eZ80190 para um ciclo de varredura do


benchmark sinttico descrito em linguagem C :

Tempo de execuo (eZ80190 - C) = 12,638

ms
1024 instruesladder

A tabela 6.3 sumariza os tempos de execuo obtidos de forma similar ao exemplo da


figura 6.6 nas 3 configuraes mencionadas.

Tabela 6.3: Tempos de execuo segundo configuraes do sistema para o eZ80190.


Configurao 1 Configurao 2 Configurao 3
- Benchmark sinttico
(linguagem C);
- Modo debug.
- Benchmark sinttico
(linguagem C);
- Modo release.
- Benchmark sinttico
(linguagem Assembly);
- Modo debug.
- Benchmark sinttico
(linguagem Assembly);
- Modo release.

12,638 ms/1024
instruesladder

13,519 ms/1024
instruesladder

26,199 ms/1024
instruesladder

7,8193 ms/1024
instruesladder

8,639 ms/1024
instruesladder

17,158 ms/1024
instruesladder

1,3997 ms/1024
instruesladder

1,3998 ms/1024
instruesladder

2,7299 ms/1024
instruesladder

1,3996 ms/1024
instruesladder

1,3998 ms/1024
instruesladder

2,7297 ms/1024
instruesladder

6.2.4 Relatrio de desempenho do sistema para o eZ80190

As tabelas 6.4 e 6.5 mostram o relatrio de desempenho e os parmetros de ajuste de


hardware e software para o microprocessador eZ80190.

78

Tabela 6.4: Relatrio de desempenho do sistema para o microprocessador eZ80190.


RELATRIO DE DESEMPENHO PROCESSADOR: eZ80190
PARMETROS DE AJUSTE HARDWARE
Nmero do modelo/srie: Zilog eZ80 190AZ050SC Webserver 0136 TF
Nmero de ncleos: 1
Capacidade de manipulao: 8 bits
Freqncia de operao: foper.= 50MHz
Cache primria (L1):
Cache secundria (L2):
Outra cache:
Memria: Externa: 2 SRAM de 512KBytes, K6R4008V1C-JC12
1 FLASH de 1MByte, MT28F008B3VG-10BD
Interna: SRAM de 8KBytes de propsito geral
Disco:
Outro hardware:
PARMETROS DE AJUSTE SOFTWARE
Sistema operacional e verso:
Compilador e verso: Ambiente de desenvolvimento Zilog Developer Studio II
ZDS 4.8 Inclui compilador C e Assembly
Outro software: Benchmark sinttico baseado na carga de trabalho com instrues
ladder de entrada (LD) e sada (OUT)
Tipo de arquivos do sistema:
Estado do sistema: (Default Padro)
RESULTADOS
Configurao 1 modo debug
Tempo de execuo: Linguagem C 12,638 ms/1024 instruesladder
Linguagem Assembly 1,3997 ms/1024 instruesladder
Configurao 1 modo release
Tempo de execuo: Linguagem C 7,8193 ms/1024 instruesladder
Linguagem Assembly 1,3996 ms/1024 instruesladder
Configurao 2 modo debug
Tempo de execuo: Linguagem C 13,519 ms/1024 instruesladder
Linguagem Assembly 1,3998 ms/1024 instruesladder
Configurao 2 modo release
Tempo de execuo: Linguagem C 8,639 ms/1024 instruesladder
Linguagem Assembly 1,3998 ms/1024 instruesladder
Configurao 3 modo debug
Tempo de execuo: Linguagem C 26,199 ms/1024 instruesladder
Linguagem Assembly 2,7299 ms/1024 instruesladder
Configurao 3 modo release
Tempo de execuo: Linguagem C 17,158 ms/1024 instruesladder
Linguagem Assembly 2,7297 ms/1024 instruesladder

79

Tabela 6.5: Relatrio de desempenho do sistema para o microprocessador eZ80190


(continuao).
Outras consideraes:
- O microprocessador configurado para trabalhar no modo de endereamento
ADL;
- Ferramenta de desenvolvimento para Windows;
- Tempos de execuo obtidos nas seguintes configuraes de memria:

SRAM interna
de propsito
geral

Configurao 1
(Linguagem C/Assembly)
- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.

Configurao 2
(Linguagem C/Assembly)

Configurao 3
(Linguagem C/Assembly)

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.

SRAM externa,
0 WS

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.

SRAM externa,
2WS

6.2.5 Desempenho relativo do microprocessador eZ80190

O melhor desempenho foi obtido com a configurao 1 no modo release: benchmark


sinttico em linguagem Assembly, opcodes das instrues ladder e manipulao de dados a
partir da memria interna SRAM de propsito geral. Assim, segue o desempenho relativo:

D rel. =

7,06 ms/1024 instruesladder


5, 04
1,3996 ms/1024 instruesladder

Portanto, na condio mencionada, o microprocessador eZ80190 5,04 vezes mais


rpido que o microcontrolador XA-G30.

80

6.3 Processador de Sinais Digitais ADSP-2181

O ADSP-2181 um processador digital de sinais (DSP Digital Signal Processor) de


16 bits. Possui as seguintes caractersticas [9]:

Freqncia mxima de operao de 40MHz;

Tenso de operao de 5V;

Memria de dados SRAM interna de 16Kwords;

Memria de programa SRAM interna de 16KWords;

Um timer;

Um DMA (Direct Memory Access) port de 16 bits para acesso de alta


velocidade s memrias internas;

Um controlador DMA de 8 bits para transferncias com a memria de dados e


de programa;

Duas SPORTs;

Oito flags programveis de propsito geral PF[0-7];

I/Os mapeados em memria.

A figura 6.7 mostra o diagrama em blocos da arquitetura do processador digital de


sinais ADSP-2181.

81

Figura 6.7: Diagrama em blocos do processador digital de sinais ADSP-2181 [9].

6.3.1 Arquitetura do ncleo do processador digital de sinais ADSP-2181

O ADSP-2181 possui uma PLL (Phase-Locked Loop) que multiplica o clock de


entrada por 2, ou seja, a partir de um cristal de 20MHz opera em uma freqncia mxima de
40MHz. Os blocos funcionais so: 3 unidades computacionais (1 ALU, 1 MAC e 1 Barrel
Shifter), 2 DAGs (Data Address Generators), seqenciador de programa, DMA port de 16
bits, controlador DMA de 8 bits, timer, 8 flags programveis de propsito geral e 2 SPORTs.
Possui espaos separados para endereamento das memrias internas de dados e de programa.
No possui uma interface fsica de acesso a memrias externas. Memrias externas de dados
podem ser endereadas como um segmento de memria de overlay de 8Kwords. Memrias
externas para programa podem ser endereadas como um ou dois segmentos de memria de
overlay de 8Kwords. Para isso, utiliza um registrador como selecionador de pgina de
memria. Em sua arquitetura tambm no est prevista a tecnologia de memria cache de
dados e/ou de instrues.
A figura 6.8 mostra a arquitetura do ncleo do ADSP-2181 [9].

82

Figura 6.8: Diagrama em blocos do ncleo e perifricos do ADSP-2181 [9].

6.3.2 Metodologia de medio do tempo de execuo do ADSP-2181 no sistema

O tempo de execuo obtido em duas anlises, uma para o benchmark sinttico


desenvolvido na linguagem C e outra para o benchmark sinttico desenvolvido na linguagem
Assembly do processador digital de sinais, e medido atravs do flag programvel PF0
utilizando o osciloscpio HP Infinium como instrumento de medio. Foi utilizado o kit de
desenvolvimento da Analog Devices ADSP-2181 EZ-KIT Lite como hardware de teste, o
emulador 218x EZ-ICE como ferramenta de debug e o ambiente de desenvolvimento Visual
DSP++ 3.5. O ambiente inclui compilador C/C++ e Assembly.
A configurao de sistema foi realizada utilizando os recursos disponveis no kit de
desenvolvimento. A tabela 6.6 mostra o resumo da configurao 1 utilizada para a avaliao
do desempenho do processador digital de sinais ADSP-2181 juntamente com a sua descrio
a seguir.

83

Tabela 6.6: Resumo da configurao do sistema para anlise do ADSP-2181.


Configurao 1
(Linguagem
C/Assembly)
SRAM interna de
dados

- Opcodes das instrues


ladder ;
- Dados das instrues.

SRAM interna de
programa

- Cdigo do benchmark
sinttico;

Configurao 1: o cdigo para o benchmark sinttico desenvolvido tanto na


linguagem C como em Assembly armazenado na memria interna SRAM de programa. Os
opcodes das instrues ladder referentes s instrues de entrada e sada so
armazenados/lidos em uma rea da memria interna SRAM de dados. Os dados utilizados por
estas instrues so armazenados/lidos em uma rea da memria interna SRAM de dados.

6.3.3 Resultados da avaliao do sistema para o ADSP-2181

Os resultados da avaliao do desempenho do processador digital de sinais ADSP2181 foram obtidos nos modos de compilao debug e release para a configurao conforme
a metodologia de medio descrita na subseo 6.3.2. Estes incluem tcnicas bsicas de
otimizao utilizadas pelo ambiente de desenvolvimento Visual DSP++ 3.5.
A figura 6.9 exemplifica a aquisio da forma de onda com o auxlio do instrumento
citado no tpico 5.3. obtida para a configurao 1 com a execuo do benchmark sinttico
desenvolvido em linguagem C utilizando a opo de compilao no modo debug. Nota-se que
a informao do tempo de execuo pode ser encontrada no smbolo , na barra de leitura do
osciloscpio.

84

Figura 6.9: Tempo de execuo do processador digital de sinais ADSP-2181 benchmark


sinttico desenvolvido em linguagem C e compilao no modo debug.

Neste modo, o tempo de execuo obtido no ADSP-2181 para um ciclo de varredura


do benchmark sinttico descrito em linguagem C :

Tempo de execuo (ADSP-2181 - C) = 2,7495

ms
1024 instruesladder

A tabela 6.7 sumariza os tempos de execuo obtidos de forma similar ao exemplo da


figura 6.9 para a configurao mencionada.

Tabela 6.7: Tempos de execuo segundo configurao do sistema para o ADSP-2181.


Configurao 1
- Benchmark sinttico
(linguagem C);
- Modo debug.
- Benchmark sinttico
(linguagem C);
- Modo release.
- Benchmark sinttico
(linguagem Assembly);
- Modo debug.
- Benchmark sinttico
(linguagem Assembly);
- Modo release.

2,7495 ms/1024
instruesladder
1,8798 ms/1024
instruesladder
0,67992 ms/1024
instruesladder
0,67989 ms/1024
instruesladder

85

6.3.4 Relatrio de desempenho do sistema para o ADSP-2181

A tabela 6.8 mostra o relatrio de desempenho e os parmetros de ajuste de hardware


e software para o processador digital de sinais ADSP-2181.

Tabela 6.8: Relatrio de desempenho do sistema para o DSP ADSP-2181.


RELATRIO DE DESEMPENHO PROCESSADOR: ADSP-2181
PARMETROS DE AJUSTE HARDWARE
Nmero do modelo/srie: ADSP-2181/KS-133-ED/B49508.1-1.3
Nmero de ncleos: 1
Capacidade de manipulao: 16 bits
Freqncia de operao: foper.= 40MHz (a partir de um cristal de 20MHz)
Cache primria (L1):
Cache secundria (L2):
Outra cache:
Memria: Interna: Memria SRAM de dados de 32Kbytes

Memria SRAM de programa de 32Kbytes


Disco:
Outro hardware:
PARMETROS DE AJUSTE SOFTWARE
Sistema operacional e verso:
Compilador e verso: Ambiente de desenvolvimento Visual DSP++ 3.5 Inclui
compilador C/C++ e Assembly / Emulador EZ-ICE 218x
Outro software: Benchmark sinttico baseado na carga de trabalho com instrues
ladder de entrada (LD) e sada (OUT)
Tipo de arquivos do sistema:
Estado do sistema: (Default Padro)
RESULTADOS
Configurao 1 modo debug
Tempo de execuo: Linguagem C 2,7495 ms/1024 instruesladder
Linguagem Assembly 0,67992 ms/1024 instruesladder
Configurao 1 modo release
Tempo de execuo: Linguagem C 1,8798 ms/1024 instruesladder
Linguagem Assembly 0,67989 ms/1024 instruesladder
Outras consideraes:
- No h recursos de memria adicionais disponveis no kit de desenvolvimento;
- Ferramenta de desenvolvimento para Windows;
- Tempos de execuo obtidos na seguinte configurao de memria:

SRAM interna de dados


SRAM interna de programa

Configurao 1
(Linguagem C/Assembly)
- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.

86

6.3.5 Desempenho relativo do processador digital de sinais ADSP-2181

O melhor desempenho foi obtido com a configurao 1 no modo release: benchmark


sinttico em linguagem Assembly, opcodes das instrues ladder e manipulao de dados a
partir das memrias internas SRAM de dados e de programa. Assim, segue o desempenho
relativo:

D rel. =

7,06 ms/1024 instruesladder


10,38
0,67989 ms/1024 instruesladder

Portanto, na condio mencionada, o processador digital de sinais ADSP-2181 10,38


vezes mais rpido que o microcontrolador XA-G30.

87

6.4 Processador embarcado ADSP-BF533

O ADSP-BF533 um processador convergente, combinando a mquina de


processamento digital de sinais com as caractersticas de microprocessadores baseados na
arquitetura RISC. Possui as seguintes caractersticas [10]:

Freqncia mxima de operao de 600MHz no ncleo e de 133MHz para o


clock do sistema;

Tenso de operao de 2,5V ou 3,3V com tolerncia de entradas a 2,5V;

Memria de dados SRAM interna (L1) de 64Kbytes, sendo 32Kbytes


configurvel tanto como SRAM ou memria cache de dados;

Memria de programa SRAM interna (L1) de 80Kbytes, sendo 16Kbytes


configurvel tanto como SRAM ou memria cache de instrues;

Memria de dados SRAM interna para rascunho (scratchpad) de 4Kbytes;

Trs timers;

Um core timer;

Um watchdog timer;

Real time clock;

Controlador de DMA de 12 canais;

Uma interface SPI (Serial Port Interface);

Uma interface PPI (Parallel Peripheral Interface);

Duas SPORTs;

Uma UART com suporte a IrDA (Infrared Data Association);

Dezesseis flags programveis de propsito geral PF[0-15];

I/Os mapeados em memria.

88

A figura 6.10 mostra o diagrama em blocos da arquitetura do processador embarcado


ADSP-BF533.

Figura 6.10: Diagrama em blocos do processador ADSP-BF533 [10].

6.4.1 Arquitetura do ncleo do processador embarcado ADSP-BF533

O ADSP-BF533 um processador embarcado de 16 bits. Possui uma PLL interna com


fatores de multiplicao de 1 at 63 vezes possibilitando a operao na freqncia mxima de
600MHz no ncleo (Core Clock CCLK) e fatores de diviso de 1 at 15 possibilitando gerar
o clock do sistema (System Clock SCLK). Neste caso, a freqncia do system clock
limitada pela freqncia de operao mxima da memria externa SDRAM, com valor de
133MHz.
Possui pipeline de dez nveis: instruction fetch 1, instruction fetch 2, instruction fetch
3, instruction decode, address calculation, data fetch 1, data fetch 2, execute 1, execute 2 e
write back. Os blocos funcionais so: 6 unidades computacionais (2 ALUs, 2 MACs, 1 Barrel

89

Shifter e 1 conjunto de 4 ALUs de 8 bits destinadas ao processamento de vdeo), 2 DAGs


(Data Address Generators), unidade de controle, arquivo de registradores para dados (8
registradores R[0-7] de 32 bits, tambm utilizveis como 16 registradores de 16 bits e 2
acumuladores A[0-1] de 40 bits, tambm acessados como parte baixa e parte alta de 16 bits
e extenso de 8 bits) e arquivo para registradores para as DAGs (6 registradores de ponteiro
P[0-5], 4 registradores de ndice I[0-3], 4 registradores de modificador M[0-3], 4
registradores de endereo base B[0-3] e 4 registradores de comprimento L[0-3], 1
registrador stack pointer SP e 1 registrador frame pointer FP). A figura 6.11 mostra a
arquitetura do ncleo do ADSP-BF533 [10].

Figura 6.11: Diagrama em blocos do ncleo do processador ADSP-BF533 [10].

Possui endereamento linear unificado de 4Gbytes para acesso a recursos on-chip, offchip e I/Os mapeados em memria. Sua interface fsica EBIU (External Bus Interface Unit)
possibilita acesso a memrias externas assncronas e sncronas sem a utilizao de

90

componentes adicionais, tais como SRAM, ROM, FLASH, FIFOs, dispositivos ASIC/FPGA e
SDRAM compatvel com os padres PC100 e PC133 [10].
Em sua arquitetura est prevista a tecnologia de memria cache para dados e para
instrues. A cache de instrues uma memria 4-Way set associative e a memria cache de
dados utiliza a configurao 2-Way set associative e pode ser configurada em 3 modos [10]:

Write-through com alocao da cache line somente nas leituras;

Write-through com alocao da cache line tanto nas leituras como nas escritas;

Write-back com alocao da cache line tanto nas leituras como nas escritas;

6.4.2 Metodologia de medio do tempo de execuo do ADSP-BF533 no sistema

O tempo de execuo obtido em duas anlises, uma para o benchmark sinttico


desenvolvido na linguagem C e outra para o benchmark sinttico desenvolvido na linguagem
Assembly do processador, e medido atravs do flag programvel PF11 utilizando o
osciloscpio HP Infinium como instrumento de medio. Foi utilizado o kit de
desenvolvimento da Analog Devices ADSP-BF533 EZ-KIT Lite como hardware de teste e o
ambiente de desenvolvimento Visual DSP++ 3.5. O ambiente inclui compilador C/C++ e
Assembly.
A avaliao foi orientada a dois objetivos principais: obter o mximo desempenho da
arquitetura do processador e obter o mximo desempenho do sistema como um todo.
O mximo desempenho do processador obtido quando este configurado para
trabalhar com a freqncia mxima no ncleo de 600MHz. Ao operar com freqncia mxima
no ncleo os fatores de multiplicao e diviso da sua PLL conseguem gerar um clock do

91

sistema mximo de 120MHz para acesso a perifricos e dispositivos externos, dentro do


mximo de 133MHz.
Com foco no desempenho do sistema o processador configurado para trabalhar com
a freqncia no ncleo de 400MHz, menor que a mxima. Nesta freqncia os fatores de
multiplicao e diviso da sua PLL conseguem gerar o clock do sistema mximo de 133MHz
para acesso a perifricos e dispositivos externos.
Para ambas avaliaes, esta arquitetura contou com 3 configuraes distintas de
sistema utilizando os recursos disponveis no kit de desenvolvimento. A tabela 6.9 mostra o
resumo das 3 configuraes utilizadas para as avaliaes do desempenho do processador
embarcado ADSP-BF533 juntamente com as descries a seguir.

Tabela 6.9: Resumo de configuraes do sistema para anlise do ADSP-BF533.


Configurao 1
(Linguagem
C/Assembly)

Configurao 2
(Linguagem
C/Assembly)

Configurao 3
(Linguagem
C/Assembly)

SRAM interna de
dados

- Opcodes das instrues


ladder ;
- Dados das instrues.

SRAM interna de
programa

- Cdigo do benchmark
sinttico;

SDRAM externa
Memria cache de
dados
Memria cache de
instrues

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder ;
- Dados das instrues.

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder ;
- Dados das instrues.

Desabilitada

Habilitada

Desabilitada

Desabilitada

Habilitada

Desabilitada

Configurao 1: o cdigo gerado para o benchmark sinttico desenvolvido tanto na


linguagem C como em Assembly armazenado em uma rea da memria externa SDRAM. Os
opcodes das instrues ladder referentes s instrues de entrada e sada e os dados utilizados

92

por estas instrues so armazenados/lidos em uma rea da mesma memria externa SDRAM.
As memrias cache de dados e de instrues esto desabilitadas.
Configurao 2: o cdigo gerado para o benchmark sinttico desenvolvido tanto na
linguagem C como em Assembly armazenado em uma rea da memria externa SDRAM. Os
opcodes das instrues ladder referentes s instrues de entrada e sada e os dados utilizados
por estas instrues so armazenados/lidos em uma rea da mesma memria externa SDRAM.
Nesta configurao a memria cache de dados e de instrues so habilitadas.
Configurao 3: o cdigo gerado para o benchmark sinttico desenvolvido tanto na
linguagem C como em Assembly armazenado na memria interna SRAM de programa. Os
opcodes das instrues ladder referentes s instrues de entrada e sada e os dados utilizados
por estas instrues so armazenados/lidos na memria interna SRAM de dados.

6.4.3 Resultados da avaliao do sistema para o ADSP-BF533

Os resultados da avaliao do desempenho do processador ADSP-BF533 foram


obtidos nos modos de compilao debug e release para as 3 configuraes, conforme a
metodologia de medio descrita na subseo 6.4.2. Estes incluem tcnicas bsicas de
otimizao utilizadas pelo ambiente de desenvolvimento Visual DSP++ 3.5.
A figura 6.12 exemplifica a aquisio das formas de onda com o auxlio do
instrumento citado no tpico 5.3. So obtidas para a configurao 1 com a execuo do
benchmark sinttico desenvolvido em linguagem C utilizando a opo de compilao no
modo debug. Em (a) o processador configurado para trabalhar na freqncia de 600MHz no
ncleo e com uma freqncia de 120MHz para o sistema. Em (b) o processador configurado
para trabalhar na freqncia de 400MHz no ncleo e com uma freqncia de 133MHz para o

93

sistema. Nota-se que a informao dos tempos de execuo pode ser encontrada nos
respectivos smbolos , na barra de leitura do osciloscpio.

Figura 6.12: Tempo de execuo do processador embarcado ADSP-BF533 benchmark


sinttico desenvolvido em linguagem C e compilao no modo debug.

Neste modo, os tempos de execuo obtidos no ADSP-BF533 para um ciclo de


varredura do benchmark sinttico descrito em linguagem C so:

(a) Tempo de execuo(ADSP-BF533 - C) = 2,2304

ms
1024 instruesladder

94

(b) Tempo de execuo(ADSP-BF533 - C) = 2,1096

ms
1024 instruesladder

A tabela 6.10 sumariza os tempos de execuo obtidos de forma similar ao exemplo da


figura 6.12 nas 3 configuraes mencionadas.

Tabela 6.10: Tempos de execuo segundo configuraes do sistema para o ADSPBF533.

- Benchmark sinttico
(linguagem C);
- Modo debug.
- Benchmark sinttico
(linguagem C);
- Modo release.
- Benchmark sinttico
(linguagem Assembly);
- Modo debug.
- Benchmark sinttico
(linguagem Assembly);
- Modo release.

Configurao 1

Configurao 2

Configurao 3

(a) 2,2304 ms/1024


instruesladder

(a) 0,19398 ms/1024


instruesladder

(a) 0,22008 ms/1024


instruesladder

(b) 2,1096 ms/1024


instruesladder
(a) 1,6780 ms/1024
instruesladder

(b) 0,28995 ms/1024


instruesladder
(a) 0,11115 ms/1024
instruesladder

(b) 0,29696 ms/1024


instruesladder
(a) 0,11402 ms/1024
instruesladder

(b) 1,6087 ms/1024


instruesladder

(b) 0,16691 ms/1024


instruesladder

(a) 0,95968 ms/1024


instruesladder

(b) 0,16890 ms/1024


instruesladder
(a)
0,052969 ms/1024
(a) 0,05354 ms/1024
instrues
ladder
instruesladder

(b) 0,89784 ms/1024 (b) 0,080778 ms/1024 (b) 0,080598 ms/1024


instruesladder
instruesladder
instruesladder
(a) 0,95992 ms/1024 (a) 0,05377 ms/1024 (a) 0,052763 ms/1024
instruesladder
instruesladder
instruesladder
(b) 0,89779 ms/1024 (b) 0,080589 ms/1024 (b) 0,080588 ms/1024
instruesladder
instruesladder
instruesladder

6.4.4 Relatrio de desempenho do sistema para o ADSP-BF533

As tabelas 6.11 e 6.12 mostram o relatrio de desempenho e os parmetros de ajuste


de hardware e software para o processador embarcado ADSP-BF533.

95

Tabela 6.11: Relatrio de desempenho do sistema para o ADSP-BF533.


RELATRIO DE DESEMPENHO PROCESSADOR: ADSP-BF533
PARMETROS DE AJUSTE HARDWARE
Nmero do modelo/srie: ADSP-BF533SKBC600 531368.1 0.3
Nmero de ncleos: 1
Capacidade de manipulao: 16 bits
Freqncia de operao: foper.ncleo= 400MHz; foper.sistema= 133MHz
Cache primria (L1): Cache de dados: 32Kbytes
Cache de instrues: 16Kbytes
Cache secundria (L2):
Outra cache:
Memria: Externa: 1 SDRAM de 32Mbytes, 48LC16M16A2-75C
2 FLASH de 1Mbyte, PSD4256G6V-10UI
Interna: Memria de dados de 64Kbytes (32Kbytes cache)
Memria de programa de 80Kbytes (16Kbytes cache)
Disco:
Outro hardware:
PARMETROS DE AJUSTE SOFTWARE
Sistema operacional e verso:
Compilador e verso: Ambiente de desenvolvimento Visual DSP++ 3.5 Inclui
compilador C/C++ e Assembly
Outro software: Benchmark sinttico baseado na carga de trabalho com instrues ladder
de entrada (LD) e sada (OUT)
Tipo de arquivos do sistema:
Estado do sistema: (Default Padro)
RESULTADOS
Configurao 1 modo debug
Tempo de execuo: (a): Linguagem C 2,2304 ms/1024 instruesladder
Linguagem Assembly 0,95968 ms/1024 instruesladder
(b): Linguagem C 2,1096 ms/1024 instruesladder
Linguagem Assembly 0,89784 ms/1024 instruesladder
Configurao 1 modo release
Tempo de execuo: (a): Linguagem C 1,6780 ms/1024 instruesladder
Linguagem Assembly 0,95992 ms/1024 instruesladder
(b): Linguagem C 1,6087 ms/1024 instruesladder
Linguagem Assembly 0,89779 ms/1024 instruesladder
Configurao 2 modo debug
Tempo de execuo: (a): Linguagem C 0,19398 ms/1024 instruesladder
Linguagem Assembly 0,05354 ms/1024 instruesladder
(b): Linguagem C 0,28995 ms/1024 instruesladder
Linguagem Assembly 0,080778 ms/1024 instruesladder
Configurao 2 modo release
Tempo de execuo: (a): Linguagem C 0,11115 ms/1024 instruesladder

Linguagem Assembly 0,05377 ms/1024 instruesladder

(b): Linguagem C 0,16691 ms/1024 instruesladder

Linguagem Assembly 0,080589 ms/1024 instruesladder

96

Tabela 6.12: Relatrio de desempenho do sistema para o ADSP-BF533 (continuao).


Configurao 3 modo debug
Tempo de execuo: (a): Linguagem C 0,22008 ms/1024 instruesladder
Linguagem Assembly 0,052969 ms/1024 instruesladder
(b): Linguagem C 0,29696 ms/1024 instruesladder
Linguagem Assembly 0,080598 ms/1024 instruesladder
Configurao 3 modo release
Tempo de execuo: (a): Linguagem C 0,11402 ms/1024 instruesladder

Linguagem Assembly 0,052763 ms/1024 instruesladder

(b): Linguagem C 0,16890 ms/1024 instruesladder


Linguagem Assembly 0,080588 ms/1024 instruesladder
Outras consideraes:
- Avaliao (a) realizada com freqncia do ncleo em 600MHz e freqncia do sistema
120MHz; Avaliao (b) realizada com freqncia do ncleo em 400MHz e freqncia do
sistema 133MHz.
- A cache de dados uma memria 2-Way Set Associative e configurada para usar writeback. A cache de instrues uma memria 4-Way Set Associative;
- Ferramenta de desenvolvimento para Windows;
- Tempos de execuo obtidos nas seguintes configuraes de memria:
Configurao 1
(Linguagem C/Assembly)

Configurao 2
(Linguagem C/Assembly)

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.
Desabilitada

- Cdigo do benchmark
sinttico;
- Opcodes das instrues
ladder;
- Dados das instrues.
Habilitada

Desabilitada

Desabilitada

Habilitada

Desabilitada

SRAM interna de dados


SRAM interna de
programa

SDRAM externa

Memria cache de dados


Memria cache de
instrues

Configurao 3
(Linguagem C/Assembly)
- Opcodes das instrues
ladder;
- Dados das instrues.
- Cdigo do benchmark
sinttico;

6.4.5 Desempenho relativo do processador embarcado ADSP-BF533

Na avaliao (a), o melhor desempenho foi obtido com a configurao 3 no modo


release: benchmark sinttico em linguagem Assembly a partir da memria interna SRAM de
programa, opcodes das instrues ladder e manipulao de dados a partir da memria interna
SRAM de dados. Assim, segue o desempenho relativo:

D rel. =

7,06 ms/1024 instruesladder


133,81
0,052763 ms/1024 instruesladder

97

Portanto, na condio mencionada, o processador embarcado ADSP-BF533 133,81


vezes mais rpido que o processador XA-G30.

Na avaliao (b), o melhor desempenho foi obtido com a configurao 3 no modo


release: benchmark sinttico em linguagem Assembly a partir da memria interna SRAM de
programa, opcodes das instrues ladder e manipulao de dados a partir da memria interna
SRAM de dados. Assim, segue o desempenho relativo:

D rel. =

7,06 ms/1024 instruesladder


87, 61
0,080588 ms/1024 instruesladder

Portanto, na condio mencionada, o processador embarcado ADSP-BF533 87,61


vezes mais rpido que o processador XA-G30.

98

7 Concluso

Nesta tese buscou-se avaliar o desempenho de sistemas com processadores


embarcados de diferentes arquiteturas e tecnologias disponveis no mercado na faixa de preo
de at US$10,00 dlares. Todas as necessidades de projeto e caractersticas de um CLP so
supridas com uma boa relao preo-desempenho para os principais processadores
apresentados.
Alm de conceitos e mtodos para uma avaliao de desempenho criteriosa, foram
discutidas a medida e unidade fornecida pelos fabricantes de CLP para fornecer o resultado de
desempenho das suas CPUs. Foi constatado que a unidade obtida de milissegundos por
1024 instrues ladder executadas. O benchmark sinttico o mtodo escolhido para a
anlise de desempenho dos processadores deste trabalho.
Foram estudados 31 programas ladder com aplicaes reais em controle de processos.
Como resultado foi obtida uma contagem estatstica tomando como referncia um conjunto de
instrues ladder disponvel ao desenvolvimento das aplicaes. O estudo foi dividido em
funo da quantidade de linhas de programa ladder para cada programa, e procurou-se
analisar a correspondncia do nmero de instrues ladder em 3 grupos de programa
(pequenos, mdios e grandes) com o resultado total da contagem. No total foi obtida uma
freqncia de uso de 82,44% distribuda em 4 instrues ladder mais significativas: LD
(instruo de entrada ou comeo de linha normalmente aberto) , LDN (instruo de entrada
ou comeo de linha normalmente fechado) , OUT (instruo de sada) e MONOA
(monoestvel de uma varredura no acionamento).
O ponto de partida da avaliao foi o desenvolvimento de um programa ladder para
definir uma carga de trabalho padro de anlise. Com base no resultado obtido e em uma
avaliao de alternativas para reproduzir da melhor maneira a avaliao do desempenho dos

99

processadores escolhidos atravs do benchmark sinttico, optou-se por utilizar as instrues


LD (instruo de entrada) e OUT (instruo de sada) para a criao do programa ladder da
carga de trabalho padro. Neste caso, do total do conjunto ladder essas 2 instrues
representaram 62,81% da freqncia de uso nos programas reais. Em seguida, a CPU de um
fabricante de CLPs, baseada no microcontrolador XA-G30, foi utilizada para obter o tempo de
execuo para um ciclo de varredura do programa desenvolvido como carga de trabalho
padro. O benchmark sinttico foi desenvolvido com base nesse programa ladder nas
linguagens C e Assembly para cada processador. Sua implementao toma por base os
recursos de sistema disponveis, tais como os kits e ambientes de desenvolvimento dos
fabricantes de cada processador. O resultado final medido atravs do desempenho relativo
comparando o tempo de execuo referencial tomado com os tempos de execuo obtidos nos
processadores em estudo.
Neste trabalho no foram abordadas e nem investigadas tcnicas apuradas de
otimizao de cdigo por parte dos compiladores. Entretanto, a anlise foi realizada para dois
modos bsicos e comuns de compilao: modo debug, com nfase na depurao do cdigo e
modo release, com nfase na otimizao de cdigo para mxima velocidade.
Na figura 7.1 so apresentados os desempenhos dos 3 processadores embarcados
avaliados no modo debug de compilao em relao ao microcontrolador XA-G30 para o
benchmark sinttico desenvolvido em linguagem C e Assembly.

13
1,8

13
3,2

140

100

130
120
110

90

0
87
,6

0
87
,4

Desempenho relativo

100

80
70
60

,40

50

23
,7

24
,3

30

32

,08

36

40

Benchmark sinttico (em ling. C)

7,3
5
7,8
6

10
,38

4
5,0

2,5
9

4
5,0

3,1

2,5
7

0,2
7

0,5
2

0,5
6

10

7
3,3
5

20

Benchmark sinttico (em ling. Assembly)

eZ80190 50MHz, SRAM interna, modo debug


eZ80190 50MHz, 0 ws, SRAM externa, modo debug
eZ80190 50MHz, 2 ws, SRAM externa, modo debug
ADSP-2181 40 MHz, SRAM internas, modo debug
ADSP-BF533 600MHz, SDRAM externa 120MHz, modo debug
ADSP-BF533 400MHz, SDRAM externa 133MHz, modo debug
ADSP-BF533 600MHz, SDRAM externa 120MHz, cache inst. e dad. habilitadas, modo debug
ADSP-BF533 400MHz, SDRAM externa 133MHz, cache inst. e dad. habilitadas, modo debug
ADSP-BF533 600Mhz, SRAM internas, modo debug
ADSP-BF533 400Mhz, SRAM internas, modo debug

Figura 7.1: Desempenhos relativos ao microcontrolador XA-G30 para o cdigo gerado


pelo compilador e para o cdigo gerado manualmente (modo debug de compilao).

Na figura 7.2 so apresentados os desempenhos dos 3 processadores embarcados


avaliados no modo release de compilao em relao ao microcontrolador XA-G30 para o
benchmark sinttico desenvolvido em linguagem C e Assembly.

13
1,3
0

140
130

13
3,8
1

101

120
110

87
,61

87
,61

90
80

61
,92

,52

70

63
60

42
,30

50

41
,80

Desempenho relativo

100

40
30

Benchmark sinttico (em ling. C)

7,8
6

7,3
5

10
,38
2,5
9

5,0
4

5,0
4

9
4 ,3

0,8
2
0,4
1
3,7

0,9
0

10

6
4,2
1

20

Benchmark sinttico (em ling. Assembly)

eZ80190 50MHz, SRAM interna, modo release


eZ80190 50MHz, 0 ws, SRAM externa, modo release
eZ80190 50MHz, 2 ws, SRAM externa, modo release
ADSP-2181 40 MHz, SRAM internas, modo release
ADSP-BF533 600MHz, SDRAM externa 120MHz, modo release
ADSP-BF533 400MHz, SDRAM externa 133MHz, modo release
ADSP-BF533 600MHz, SDRAM externa 120MHz, cache inst. e dad. habilitadas, modo release
ADSP-BF533 400MHz, SDRAM externa 133MHz, cache inst. e dad. habilitadas, modo release
ADSP-BF533 600Mhz, SRAM internas, modo release
ADSP-BF533 400Mhz, SRAM internas, modo release

Figura 7.2: Desempenhos relativos ao microcontrolador XA-G30 para o cdigo gerado


pelo compilador e para o cdigo gerado manualmente (modo release de compilao).

O primeiro ponto notvel em ambos os grficos de desempenho, o impacto dos


compiladores sobre o cdigo gerado para os 3 processadores a partir do benchmark sinttico
descrito em linguagem C nos dois modos de compilao. O compilador utilizado no ambiente

102

de desenvolvimento para microprocessador eZ80190 leva em mdia a uma reduo de


desempenho de 1,55 vezes, levando em considerao a otimizao gerada pelo modo release
em relao ao modo debug. No caso do compilador utilizado pelo processador digital de
sinais ADSP-2181 a reduo de desempenho chega a 1,46 vezes, tambm para o modo
release em relao ao modo debug. Foram constatadas duas redues de desempenho distintas
para o processador embarcado ADSP-BF533, similarmente para o modo release em relao
ao modo debug. Para os 2 testes utilizando a memria externa SDRAM com as memrias
cache de dados e instrues desabilitadas a reduo atinge em mdia 1,32 vezes. Para os
demais 4 testes houve uma reduo em mdia de 1,79 vezes.
As redues de desempenho ocorrem pelo fato de no modo debug o compilador
preparar o cdigo para que seja possvel visualizar informaes chaves inerentes ao programa
e este possa ser depurado, resultando em um cdigo mais denso. Pelo fato do cdigo
compilado vir a ser utilizado em uma aplicao final e ter foco na otimizao em velocidade,
no modo release no h a necessidade do compilador preparar informaes para que o sistema
seja depurado, resultando em um cdigo mais enxuto. Foi constatado que os cdigos gerados
pelo compilador no modo debug e no modo release so totalmente diferentes.
Para o benchmark sinttico desenvolvido manualmente em linguagem Assembly, notase que no houve qualquer mudana ou reduo de desempenho, uma vez que o cdigo
compilado no modo debug e no modo release o mesmo e j o cdigo final preparado.
Segundo o fabricante do microprocessador eZ80190, a sua arquitetura de 8 bits
permite que o seu desempenho possa ser equiparado ao desempenho de processadores de 16
bits. Este apresentou uma discrepncia quando o tempo de execuo do cdigo compilado em
linguagem C foi comparado com o tempo de execuo do cdigo gerado manualmente em
linguagem Assembly. A diferena ocasionada pelo fato do eZ80190 estar configurado para
operar no modo de endereamento ADL. Nesta configurao, os registradores do arquivo de

103

registradores assumem a configurao de manipulao de dados de 24 bits. Ao assumir essa


configurao, foi constatado que o compilador anexa automaticamente cdigo extra em
linguagem C no programa benchmark sinttico para realizar a converso dos dados referentes
aos opcodes das instrues ladder de 16 para 24 bits. Por se tratar de uma arquitetura de 8 bits
e operar 1024 converses, o cdigo Assembly gerado pelo compilador a partir do benchmark
descrito em linguagem C apresentou um desempenho bastante insatisfatrio tanto no modo
debug quanto no modo release. Entretanto, o resultado obtido no mesmo modo de
endereamento para os dois modos de compilao, a partir do cdigo gerado manualmente em
linguagem Assembly, permite concluir que o microprocessador realmente apresenta um bom
desempenho baseado no resultado de 5,04 vezes em relao ao microcontrolador XA-G30. O
pipeline de 3 nveis, a operao em uma freqncia de 50MHz e o acesso memria externa e
sua memria interna sem adicionar wait-states so as caractersticas principais que levaram a
tal desempenho. Tambm foram realizados testes com 2 wait-states para verificar o impacto
no desempenho utilizando dispositivos externos com maior latncia. Neste teste foi obtida
uma reduo de desempenho de aproximadamente 2 vezes, proporcional latncia inserida ao
acesso.
O melhor desempenho do microprocessador eZ80190 obtido para o benchmark
sinttico em linguagem Assembly e compilao no modo release, com resultado de 5,04
vezes.
O processador digital de sinais ADSP-2181 se mostra mais eficiente para a execuo
do cdigo gerado manualmente a partir da descrio do benchmark sinttico em Assembly
quando comparado com o microcontrolador do sistema de referncia. O desempenho deste
processador deixou um pouco a desejar para a execuo do cdigo gerado pelo compilador a
partir da descrio do benchmark em C, atingindo 2,57 vezes para o modo debug e 3,76 vezes
para o modo release. Tomando o cdigo descrito manualmente em linguagem Assembly,

104

tambm nos modos de compilao debug e release, e comparando com os resultados


mencionados para o cdigo compilado a partir da linguagem C, possvel notar uma reduo
de mais de 4 vezes no desempenho relativo do processador, ou seja, no pior caso de 10,38
vezes para 2,57 vezes no modo debug. O ponto chave para esta reduo do desempenho que
o nmero de registradores do processador digital de sinais limitado, fazendo com que o
compilador gere um cdigo muito mais denso. Esse fato indica, tambm, uma forte
ineficincia do compilador para este processador. Apesar de operar em uma freqncia menor
que a do microprocessador eZ80190, foi obtido um melhor desempenho para o melhor caso.
Seu bom desempenho pde ser comprovado pelo fato utilizar as suas memrias internas de
dados e de programa, uma caracterstica fundamental de um DSP.
O melhor desempenho do processador digital de sinais ADSP-2181 obtido para o
benchmark sinttico em linguagem Assembly e compilao no modo release, com resultado
de 10,38 vezes.
O desempenho do processador embarcado ADSP-BF533 foi realizado com dois
objetivos: medir o desempenho da arquitetura do processador e o desempenho do sistema
como um todo. Foram realizados dois testes. No teste (a) o processador foi configurado para
operar com uma freqncia de 600MHz no ncleo e de 120MHz para o sistema. No teste (b) o
processador foi configurado para operar com uma freqncia de 400MHz no ncleo e de
133MHz para o sistema.
Em uma primeira avaliao, o desempenho do ADSP-BF533 foi analisado atravs da
utilizao da configurao de memria externa SDRAM com a memria cache de dados e de
instrues desabilitadas. Para o teste (a) foi constatado um desempenho relativo de 4,21 para a
execuo do cdigo gerado por compilador a partir da linguagem C e de 7,35 para a execuo
do cdigo gerado manualmente em Assembly, ambos compilados no modo release. No teste
(b) o desempenho relativo obtido chegou a 7,86 para a execuo do cdigo gerado por

105

compilador a partir da linguagem C e de 4,39 para a execuo do cdigo gerado manualmente


em Assembly, ambos tambm compilados no modo release. No totalmente bvio que o
processador ao operar em uma freqncia de 600MHz tenha um desempenho inferior ao
desempenho relativo de quando opera em uma freqncia de 400MHz no ncleo. A diferena
ocasionada pelo fato de (a) possuir configurao de acesso memria externa SDRAM com
uma freqncia menor que em (b). Outro fator determinante para a reduo do desempenho
o fato do pipeline ser intertravado, ou seja, fica a cargo do compilador gerar instrues
escalonadas para que sejam inseridos o menor nmero de stalls (paradas) durante o fluxo de
execuo do pipeline. A combinao desses dois fatores gerou um desempenho menor em (a)
do que em (b). Ainda comparando estes resultados com o desempenho do processador digital
de sinais para o benchmark sinttico desenvolvido em linguagem Assembly, pode-se notar
que, independentemente da condio de teste de operao (a ou b) e do modo de compilao,
nesta configurao seu desempenho inferior ao desempenho obtido de 10,38 vezes no
ADSP-2181.
O escalonamento de instrues uma das tcnicas para se evitar stalls em um pipeline,
como no foram abordadas tcnicas de otimizao, o cdigo gerado manualmente em
linguagem Assembly foi submetido a uma seqncia de escrita natural segundo a necessidade
do uso de instrues. Neste caso, ficaria a cargo do desenvolvedor se preocupar com o
cdigo escalonado para evitar os stalls, prtica no adotada neste trabalho quando da
utilizao da linguagem Assembly nos processadores em estudo.
Comparando os mesmos testes para o benchmark sinttico desenvolvido em
linguagem C tanto no modo debug como no modo release, foi obtido um resultado de
desempenho ligeiramente superior no ADSP-BF533 em relao ao ADSP-2181, pois neste
caso o compilador toma o papel de escalonar automaticamente as instrues para evitar os

106

stalls. De um modo geral, o desempenho do ADSP-BF533 no se mostrou muito satisfatrio,


pois o acesso memria externa se mostrou um gargalo para esta configurao.
Em um segundo estudo, o desempenho do processador embarcado ADSP-BF533 foi
avaliado a partir da mesma memria externa SDRAM, porm com a memria cache de dados
e de instrues habilitadas. Foram realizados os mesmos testes (a) e (b) da primeira
configurao. Para o teste (a), o melhor desempenho do processador embarcado ADSP-533
obtido para o benchmark sinttico em linguagem Assembly e compilao no modo debug,
com resultado de 131,86 vezes. Para o teste (b), o melhor desempenho do processador
embarcado ADSP-533 obtido para o benchmark sinttico em linguagem Assembly e
compilao no modo release, com resultado de 87,61 vezes.
Como era de se esperar, o processador apresentou desempenhos relativos similares
quando foi configurado em um terceiro estudo para operar a partir das suas memrias
internas. Foram realizados os mesmos testes (a) e (b) das configuraes anteriores. Isso ocorre
porque a concepo da memria cache buscar blocos de dados em memria de menor nvel
e armazen-los na memria interna de alta velocidade prxima ao ncleo. Como os blocos so
pequenos, no ocorrem cache misses e o processador no necessita acessar a memria externa
novamente para trazer um novo bloco de dados. Para o teste (a), o melhor desempenho do
processador embarcado ADSP-533 obtido para o benchmark sinttico em linguagem
Assembly e compilao no modo release, com resultado de 133,81 vezes. Para o teste (b), o
melhor desempenho do processador embarcado ADSP-533 obtido para o benchmark
sinttico em linguagem Assembly e compilao no modo release, com resultado de 87,61
vezes.
Concluindo, os resultados mostram que no possvel tirar concluses tomando por
base somente a medida de MHz de um processador. necessria uma avaliao consistente
da arquitetura e do contexto do sistema em que o processador embarcado em anlise ser

107

inserido. De uma forma geral nota-se que acessos a memrias externas de maior nvel so
gargalos para o sistema como um todo. Entretanto, de extrema eficincia a utilizao de uma
memria externa de grande capacidade de armazenamento e de alta velocidade em conjunto
com memrias de menor nvel, ou seja, tecnologias de memria cache de dados e de
instrues. Os resultados tambm confirmam a tendncia de se extrair o mximo de
paralelismo atravs do pipeline para otimizao na operao do processador, ocasionando na
diminuio do tempo de execuo.

7.1 Trabalhos futuros

Como mencionado anteriormente, no foram abordadas tcnicas apuradas de


otimizao, tanto por parte dos compiladores como tcnicas para evitar os chamados hazards
em um pipeline quando um cdigo desenvolvido manualmente em linguagem Assembly.
Haveria a necessidade de averiguar o impacto que tais otimizaes ocasionariam no
desempenho relativo final destes processadores.
Outra linha de pesquisa seria o estudo e desenvolvimento de cargas de trabalho em
linguagem ladder baseadas em instrues ponderadas de acordo com a sua freqncia de uso
em programas ladder reais. Nesta tese foram atribudos pesos iguais para as instrues ladder
utilizadas no desenvolvimento da carga de trabalho padro. Haveria a necessidade de mais
testes para identificar o impacto que o peso das instrues teria no resultado final do
desempenho.

108

Referncias

[1] HENNESSY, John L.; PATTERSON, David A. Computer Architecture: A


Quantitative Approach. 3.ed. Editora: Morgan Kaufmann. USA. 2003.
[2] HENNESSY, John L.; PATTERSON, David A. Computer Architecture: A
Quantitative Approach. 4.ed. Editora: Morgan Kaufmann. USA. 2006.
[3] SILVEIRA, Paulo Rogrio da; SANTOS, Winderson E. Automao e Controle Discreto.
6.ed. Editora: rica. Brasil. 2002.
[4] WARNOCK, Ian G. Programmable Controllers: Operation and Application. Editora:
Prentice Hall. UK. 1988.
[5] WEBB, John W.; REIS, Ronald A. Programmable Logic Controllers: Principles and
Applications. 3.ed. Editora: Prentice Hall. USA. 1995.
[6] Final Draft IEC 61131-3. Programmable Controllers Programming Languages.
2.ed. 2001.
[7] Philips. XA User Guide. USA. 1998.
[8] Zilog. eZ80 CPU User Manual. USA. 2001.
[9] Analog Devices. ADSP-218x DSP Hardware Reference. USA. 2003.
[10] Analog Devices. ADSP-BF533 Blackfin Processor Hardware Reference. USA. 2003.
[11] The Embedded Microprocessor Benchmark Consortium. Disponvel em:
<http://www.eembc.org>. Acesso em: 23 mar. 2005.

FOLHA DE REGISTRO DO DOCUMENTO


1.

CLASSIFICAO/TIPO

2.

TM
5.

DATA

14 de junho de 2007

3.

DOCUMENTO N

4.

N DE PGINAS

CTA/ITA-IEE/TM-008/2007

108

TTULO E SUBTTULO:

Anlise de Desempenho de Processadores Embarcados para Controladores Lgicos Programveis.


6.

AUTOR:

Fernando Garcia Nicodemos


7.

INSTITUIO(ES)/RGO(S) INTERNO(S)/DIVISO(ES):

Instituto Tecnolgico de Aeronutica. Diviso de Engenharia Eletrnica ITA/IEE


8.

PALAVRAS-CHAVE SUGERIDAS PELO AUTOR:

1- Processadores Embarcados; 2- Anlise de Desempenho; 3- Controladores Lgicos Programveis.


9.

PALAVRAS-CHAVE RESULTANTES DE INDEXAO:

Sistemas de Computadores Embarcados; Avaliao de Desempenho; Dispositivos Lgicos Programveis;


Microprocessadores; Arquitetura (computadores); Engenharia Eletrnica; Computao.
10.

X Nacional

APRESENTAO:

Internacional

ITA, So Jos dos Campos, 2007, 138 pginas.


11.

RESUMO:

Atualmente, existem disponveis processadores embarcados de diferentes procedncias e


tecnologias, incorporando em suas arquiteturas, memria cache e pipeline, alm de otimizaes por
compilador. As alternativas incluem desde microcontroladores de 8 bits at processadores de 16 e 32
bits que custam entre uma faixa de preo de at 10 dlares. Nesse contexto, a grande variedade de
solues em nvel de arquitetura torna relevante a identificao de mtodos apropriados para medir o
desempenho de um processador, tomando por base de comparao a CPU (Central Processing Unit) de
um CLP (Controlador Lgico Programvel). Este trabalho procura preencher essa lacuna e tem como
objetivo principal a avaliao de processadores embarcados que possam ser utilizados em novos
projetos de sistemas no campo da automao de processos industriais. Nesta tese, ser introduzido o
princpio de funcionamento do CLP, seguido de conceitos e mtodos relativos avaliao de
desempenho em sistemas microprocessados. Ser discutida a mtrica apresentada pelos fabricantes de
CLP para fornecer o desempenho das suas CPUs. A partir do estudo estatstico em programas ladder
com aplicaes reais, definida uma workload padro consistindo de um programa em linguagem
ladder utilizado como fundamento na criao de um benchmark sinttico para a avaliao do
desempenho dos processadores em estudo. Finalmente, so apresentados os resultados para trs
processadores com arquiteturas diferenciadas e as razes que propiciaram o aumento de desempenho
com relao ao processador utilizado na CPU do sistema tomado como referncia comparativa.
12.

GRAU DE SIGILO:

(X ) OSTENSIVO

( ) RESERVADO

( ) CONFIDENCIAL

( ) SECRETO