Sérgio Queiroz de Medeiros Utilizando Programação Orientada a Aspectos no Projeto de Sistemas Hardware Desenvolvidos com SystemC Natal-RN 2006 Sérgio Queiroz de Medeiros Utilizando Programação Orientada a Aspectos no Projeto de Sistemas Hardware Desenvolvidos com SystemC Orientador: David Boris Paul Déharbe UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE CIÊNCIAS EXATAS E DA TERRA DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA PROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO Natal-RN 2006 Dissertação de Mestrado sob o título Utilizando Programação Orientada a Aspectos no Projeto de Sistemas Hardware Desenvolvidos com SystemC defendida por Sérgio Queiroz de Medeiros e aprovada em 03 de março de 2006 em Natal, Rio Grande do Norte, pela banca examinadoraconstituídapelosprofessores: Prof. Dr. DavidBorisPaulDéharbe UniversidadeFederaldoRioGrandedoNorte Orientador Prof. Dr. IvanSaraivaSilva UniversidadeFederaldoRioGrandedoNorte Profa. Dra. EdnaNatividadedaSilvaBarros UniversidadeFederaldePernambuco MembroExterno "Eunãotinhaesterostodehoje, assimcalmo,assimtriste,assimmagro, nemestesolhostãovazios, nemolábioamargo. Eunãotinhaestasmãossemforça, tãoparadasefriasemortas; eunãotinhaestecoração quenemsemostra. Eunãodeiporestamudança, tãosimples,tãocerta,tãofácil: -Emqueespelhoficouperdida aminhaface?" CecíliaMeireles Agradecimentos Aopovoládecasa,oqueincluimeupai,Dudu,quenãoconsegueentenderessepovoquetem o terceiro grau, minha mãe, Doninha, minhas duas irmãs, Anna e Regina, e até mesmo a gata Bolotta. AJanaína,queesteveaomeuladoduranteestetempo. AgradeçoaDeus,apesardapoucafé,aqualeuaindabusco. Atodososmeusamigosqueconseguemmeaguentar,emespecialaDidi,quemeensinouaser maisalegre,eaoilustreCCCC. Agradeço ao meu orientador David, com quem aprendi muito, que me ensinou a converter númerosbináriosedecimais,equeteveapaciênciademeorientaraolongode5anos. Atodos os demais professores do DIMAp, em especial ao professor Ivan, que me ajudou a participar domeuprimeirocongresso,eatodososprofessoresquetiveaolongodavidadesdeoInstituto Alvorada. Resumo Novos paradigmas de linguagens de programação vêem sendo comumente testados e ge- ralmente são incorporados depois por linguagens de descrição de hardware. Recentemente, a programação orientada a aspectos (POA) provou ser útil na tentativa de melhorar a modula- ridade de linguagens estruturadas e orientadas a objeto tais como Java, C++ e C. Diante de tal fato, podemos esperar que o uso de POA pode melhorar o entendimento de sistemas hard- ware que estão sendo projetados, bem como tornar seus componentes mais reusáveis e fáceis demanter. Iremos abordar então o uso de POA em aplicações desenvolvidas utilizando a biblioteca SystemC. Serão apresentados vários exemplos que ilustram o uso de POA juntamente com SystemC,mostrandoalternativasediscutindoosseusbenefícios. Abstract New programming language paradigms have commonly been tested and eventually incor- porated into hardware description languages. Recently, aspect-oriented programming (AOP) has shown successful in improving the modularity of object-oriented and structured languages such Java, C++ and C. Thus, one can expect that, using AOP, one can improve the understan- ding of the hardware systems under design, as well as make its components more reusable and easiertomaintain. WeapplyAOPinapplicationsdevelopedusingtheSystemClibrary. Severalexampleswill be presented illustrating how to combine AOP and SystemC. During the presentation of these examples,thebenefitsofthisnewapproachwillalsobediscussed. Sumário ListadeFiguras ListadeTabelas 1 Introdução 14 2 ProgramaçãoOrientadaaAspectos 18 2.1 Componente×Aspecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 CrosscuttingConcerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 CriandoAspectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4 CódigodeComportamentoTransversal . . . . . . . . . . . . . . . . . . . . . 21 2.5 PontosdeJunção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.6 CombinaçãodeAspectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7 AspectC++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.7.1 ConjuntodeJunção . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.7.1.1 ExpressõesdeCasamento . . . . . . . . . . . . . . . . . . . 26 2.7.2 OponteirothisJoinPoint . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.7.3 CriandoumAspecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.7.4 CódigodeComportamentoTransversal . . . . . . . . . . . . . . . . . 29 2.7.5 Introduções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.7.6 OrdenaçãodeComportamentosTransversais . . . . . . . . . . . . . . 33 2.8 OpapeldaPOAnaPOO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3 SystemC 35 3.1 ElementosBásicosdeSystemC . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2 ExemplodeUmaAplicaçãoSystemC . . . . . . . . . . . . . . . . . . . . . . 38 3.3 InterfaceseCanais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4 ExemplosdaUtilizaçãodeAspectosnoProjetodeSistemasUtilizandoSystemC 43 4.1 ModelagemdeHardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.1.1 ModelandoaComunicaçãocomoumAspecto . . . . . . . . . . . . . 45 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.2 PolíticadeTrocadeLinhasdaCache . . . . . . . . . . . . . . . . . . 49 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1.3 SeparaçãodoControleedoFluxodeDados . . . . . . . . . . . . . . . 51 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2 Projeto/Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2.1 UtilizandoAspectosparaRealizaraColetadeMétricas . . . . . . . . . 54 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.2.2 UtilizandoProjetoporContratocomPOA . . . . . . . . . . . . . . . . 57 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2.3 ABibliotecadeVerificaçãoPadrãodoSystemCePOA . . . . . . . . . 60 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Implementação/Conclusão . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2.4 UsandoPOAcomArchC . . . . . . . . . . . . . . . . . . . . . . . . . 63 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Implementação/Conclusão . . . . . . . . . . . . . . . . . . . . . . . . 64 4.3 AnálisedeDesempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5 Conclusões 68 Referências 71 ApêndiceA--OProtocoloOCP 75 A.1 CaracterísticasOCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 A.2 SinaiseCodificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A.2.1 SinaisBásicosdoFluxodeDados . . . . . . . . . . . . . . . . . . . . 77 ApêndiceB--ImplementaçãodaComunicaçãoUtilizandoOCPeAspectos 80
Description: